Bonjour à tous,
J'ai créé une page dynamique grâce à PHP pour voir rapidement ce que j'ai prêté, et ce que l'on m'a prêté, mais là n'est pas le plus important.
Ce que je voudrais avoir, c'est l'affichage d'un tableau qui liste les prêts en cours, et, s'il n'y a rien, affiche une phrase du type "Aucun prêt en cours".
Mais (parce qu'il y a un mais, sinon ça serait pas drôle Smiley cligne ) ça ne fonctionne que pour une des tables (comme le montre l'extrait ci-joint), les autre affichent seulement que les titres du tableau (pas normal car il n'y a aucun prêt en cours). Le pire, c'est que les requêtes SQL utilisées soit via PHP et via phpMyAdmin sont identiques, mais elle ne fournissent pas le même résultat. Pareil en exportant les tables, les supprimer, puis les re-créer et les remplir à nouveau. Smiley biggol
Cordialement, Marc. upload/32174-Probleme.png
Modifié par Marc_ou_Net (31 Aug 2010 - 14:29)
Oups, j'ai oublié de le mettre Smiley confused
Voici le code qui "marche" :
- $requete = mysql_query("SELECT * FROM `Jeux` WHERE `Pret` IS NOT NULL ORDER BY `Support`, `Pret`, `Titre`, `Titre secondaire` ASC");

Voici les codes qui ne "marchent" pas (du moins avec PHP) :
- $requete = mysql_query("SELECT * FROM `Magazines` WHERE `Pret` IS NOT NULL ORDER BY `Titre`, `Numero`, `Pret` ASC");
- $requete = mysql_query("SELECT * FROM `Ouvrages` WHERE `Pret` IS NOT NULL ORDER BY `Type`,`Pret`,`Titre` ASC");
- $requete = mysql_query("SELECT * FROM `Films` WHERE `Pret` IS NOT NULL ORDER BY `Format`, `Pret`, `Titre`, `Titre secondaire` ASC");
- $requete = mysql_query("SELECT * FROM `Consoles` WHERE `Pret` IS NOT NULL ORDER BY `Type`, `Pret`, `Machine` ASC");


Voilà, l'erreur est réparée. Enfin réparée... Bref je me comprend. Et vous ?
Ben... Les lignes commençant par $requete sont lignes de requête via PHP. Si vous voulez le contenu de la page je n'y vois pas de problème, mais comment je vous livre le code PHP de la page car le contenu est un peu long. Smiley confus
Ce qui serait surtout intéressant c'est de voir la partie qui doit ressembler à :
$requete = mysql_query("SELECT * FROM `Magazines` WHERE `Pret` IS NOT NULL ORDER BY `Titre`, `Numero`, `Pret` ASC");
if( mysql_num_rows($requete) > 0 ) {
	...
}
Et sinon il faudra aussi vérifier que dans tes tables les champs en question ne sont pas définis en "not null".
Les requetes (seules) n'apportent aucune information utile vis-à-vis de ton problème.

Le code, tu peux le copier-coller ici (en utilisant l'option de colorisation syntaxique). Bien sûr si tu pouvais isoler la portion de code qui gère l'affichage des tableaux ça serait sympa.
Alors, voici un extrait du fichier PHP, il y a plusieurs rubriques, mais elles sont quasi identiques (à quelques détails mineurs) :

    echo "<h2>Magazines</h2>\r\n";
    $requete = mysql_query("SELECT * FROM `Magazines` WHERE `Pret` IS NOT NULL ORDER BY `Titre`, `Numero`, `Pret` ASC");
    if ($requete)
    {
      echo "<table cellpadding=\"2\" cellspacing=\"2\">\r\n";
      echo "<tbody>\r\n";
      echo "<th width=\"40%\">Titre</th>\r\n";
      echo "<th width=\"30%\">Numéro</th>\r\n";
      echo "<th width=\"17%\">À qui ?</th>\r\n";
      echo "<th width=\"18%\"><br \></th>\r\n";
      while ($ligne = mysql_fetch_array($requete))
      {
        $IdPret = stripSlashes($ligne["Index"]);
        echo "<tr>\r\n";
        echo "<td class=\"BarreLaterale\">" . stripSlashes($ligne["Titre"]) . "</td>\r\n";
        echo "<td>" . stripSlashes($ligne["Numero"]) . "</td>\r\n";
        echo "<td>" . stripSlashes($ligne["Pret"]) . "</td>\r\n";
        echo "<td style=\"text-align: center; \"><button type=\"button\" onclick=\"Pret_OnMaRendu($IdPret,\"M\")\">On me l'a rendu</button></td>\r\n";
        echo "</tr>\r\n";
      }
      echo "</tbody></table>\r\n";
    }
    else
      echo "<p style=\"font-style: italic; \">Je n'ai pas prêté de magazine... Pour le moment.</p>\r\n";

Modifié par Marc_ou_Net (31 Aug 2010 - 13:29)
Il ne faut pas faire if ($requete) (qui sera toujours vérifié) mais if( mysql_num_rows($requete) > 0 )
Heyoan a écrit :
Ce qui serait surtout intéressant c'est de voir la partie qui doit ressembler à :
$requete = mysql_query("SELECT * FROM `Magazines` WHERE `Pret` IS NOT NULL ORDER BY `Titre`, `Numero`, `Pret` ASC");
if( mysql_num_rows($requete) > 0 ) {
	...
}
Et sinon il faudra aussi vérifier que dans tes tables les champs en question ne sont pas définis en "not null".


Je vais tester cette fonction que je ne connaissais pas... Mais pas tout de suite (travail, travail & travail Smiley sweatdrop ). Sinon, j'ai bien vérifié grâce à phpMyAdmin : je n'ai pas de champs "not null", sauf ceux qui doivent l'être. Je ne sais pas si je suis clair.
Pendant une pause improvisée, j'ai testé la solution émise par Heyoan. Ça marche sans problème, merci.