8768 sujets

Développement web côté serveur, CMS

Bonjour à tous,
J'ai un petit problème de "cosmétique".
Je fais une sélection dans Sqlite3.

$sql="SELECT * FROM documents WHERE cle BETWEEN '$liminf' AND '$limsup' ORDER BY date";

Ca marche très bien ... Mais il peut arriver, dans mon application, qu'il n'y ait aucune ligne obéissant à la sélection dans la table 'documents'..
Comment en avertir le lecteur ?
J'ai essayé avec 'exists', mais je ne sais pas trop m'y prendre !
Merci si quelqu'uun a une idée.
Cordaielement
H.
Bonjour,
J'ai regardé attentivement dans le lien rowount(), et j'ai trouvé ça :

<?php
$sql = "SELECT COUNT(*) FROM fruit WHERE calories > 100";
$res = $conn->query($sql);
$count = $res->fetchColumn();

print "Il y a " .  $count . " ligne(s) correspondante(s).";
?>

Ca semblait me convenir, et j'ai fait un petit copier/coller modifié pour avoir ça :

	$sql="SELECT COUNT(*) FROM documents WHERE cle BETWEEN '$liminf' AND '$limsup' ORDER BY cle, date";
	$res=$conn->query($sql);
	$count=$res->fetchColumn();
	print "Il y a " .  $count . " ligne(s) correspondante(s).";


Et là, problème (de variable conn ??)

Notice: Undefined variable: conn in C:\WorkSite\EasyPHP-12.1\www\Safe\pagen.php on line 53

Fatal error: Call to a member function query() on a non-object in C:\WorkSite\EasyPHP-12.1\www\Safe\pagen.php on line 53

Je suis un peu perdu ... Merci de votre aide à tous.
H.
il faut initialisé ta variable $conn, qui apparemment n'existe pas et qui correspond surement à ta connexion bdd Smiley smile mais comme on voit pas le début de ton fichier on peut pas répondre
Modifié par JENCAL (05 Jul 2021 - 13:01)
Ben ouais, suis-je donc bêête !
J'ai changé le nom de $conn contre $dbh, voir ci desous !

	   $datasetname='sqlite:labase/labase.db';
           $dbh=new PDO($datasetname);
	  $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    catch(PDOException $e){
      printf("Échec de la connexion : %s\n", $e->getMessage());
      exit;
    }
	$sql="SELECT COUNT(*) FROM documents WHERE cle BETWEEN '$liminf' AND '$limsup' ORDER BY cle, date";
	$res=$dbh->query($sql);
	$count=$res->fetchColumn();
        print "Il y a " .  $count . " ligne(s) correspondante(s).";
	$sql="SELECT * FROM documents WHERE cle BETWEEN '$liminf' AND '$limsup' ORDER BY cle, date";
	if(!$dbh->query($sql)) echo "Problèmes d'accès aux documents";
	else
	{ etc... etc...

Et ça marche tout seul !
J'ai aussi essayé d'afficher le message seulement si il n'y a rien dans la sélection, mais là, ça ne marche plus ! Quid ?

if $count = 0 print "Il n'y a pas de documents pour cette sélection.";

Je ne suis pas très à l'aise avec les différentes variable !
Mais je cherche et j'apprends !
Merci encore.
H.
Pas de panique, j'avais oublié les parenthèses !!!
Donc avec :

if ($count < 1) print "Il n'y a pas de documents pour cette sélection.";

ça marche !
Merci à tous
H.
donc
if (!$count) print "Il n'y a pas de documents pour cette sélection.";
Meilleure solution