[php-mysql] mysql_fetch_array vide

Résolu/Fermé
rwen Messages postés 7 Date d'inscription vendredi 16 février 2007 Statut Membre Dernière intervention 15 mai 2008 - 15 mai 2008 à 11:48
rwen Messages postés 7 Date d'inscription vendredi 16 février 2007 Statut Membre Dernière intervention 15 mai 2008 - 15 mai 2008 à 18:29
Bonjour à tous et à toutes,j'espère que vous pourrez m'aider.

Je suis en train de faire un livre d'or pour le site que je crée et j'ai un problème au niveau de l'affichage.

J'ai une BDD MySQL avec une table livredor. Dans cette table , j'ai 4 champs:id , pseudo, message et validation (NULL par défaut, 1 lorsque le message a été validé par l'administrateur du site, 0si il a été refusé).

Mon problème est le suivant: j'arrive à enregistrer des messages, à les valider dans la partie administrateur mais quand je fais le code suivant, ça plante:

<?php

$requete='SELECT COUNT(id) FROM livredor WHERE validation=1';
$result=mysql_query($requete, $connect) or die(mysql_error());
$line=mysql_fetch_row($result);
$nombre=$line[0];

//calcul du nombre de pages de livre d'or en mettant 15 messages par page
$nbpages=ceil($nombre/15);

//liens vers les autres pages de livre d'or
echo "<p>page: ";
for($i=1;$i<=$nbpages;$i++)
echo "  <a href=\"index.php?idI=143&page=".$i."\">".$i."</a>";
echo "</p>";

//on récupère le numéro de page s'il existe, sinon on affiche la première page.
$numpage=@$_GET['page']?$_GET['page']:1;

//calcul du numéro du premier message en fonction du numéro de page
$min=0+($numpage-1)*15;

$requete='SELECT * FROM `livredor` WHERE `validation`=1 ORDER BY id DESC LIMIT '.$min.',15';
$result=mysql_query($requete, $connect) or die(mysql_error());
while($line=mysql_fetch_array($result)!=null)
echo "<p class=\"livre\"> <strong> ".$line['pseudo']." </strong><br/> ".$line['message']." </p>";

?>


Lors de l'affichage, la page ne renvoie pas d'erreur et si je fais un echo $nbpages." ".$nombre, ça m'affiche bien le bon nombre de page et de messages validés. Le while fonctionne correctement puisque le bon nombre de paragraphes(avec une bordure pour les voir) sont bien affichés mais il n'y a strictement rien dedans:

code HTML généré:

<p>page:   <a href="index.php?idI=143&page=1">1</a></p>
<p class="livre"> <strong> </strong><br/> </p><p class="livre"> <strong> </strong><br/> </p>


Merci d'avance de votre aide
A voir également:

1 réponse

bbar Messages postés 436 Date d'inscription mercredi 27 septembre 2006 Statut Membre Dernière intervention 31 octobre 2008 140
15 mai 2008 à 18:08
salut,

je pense que ton problème vient de la manière dont tu extrais les infos de ta réponse :
while($line=mysql_fetch_array($result)!=null) 

essaye simplement avec :
while($line=mysql_fetch_array($result)) 

Tu n'as pas besoin du '!= null' à la fin, il est là de manière implicite.

et pour ma part, j'écrirais la requete comme suit :
$requete="SELECT * FROM livredor WHERE validation='1' ORDER BY id DESC LIMIT $min,15"; 
1
rwen Messages postés 7 Date d'inscription vendredi 16 février 2007 Statut Membre Dernière intervention 15 mai 2008
15 mai 2008 à 18:29
Super ça a marché!

Du coup je pense c'était plus au niveau de la requête que du !=null dans le while vu que, de toute façon, il est sous-entendu.

En tout cas, merci infiniment pour ton aide bbar!
-1