Problème de récupération de données par while

Résolu
Cugel Messages postés 42 Date d'inscription samedi 8 mars 2003 Statut Membre Dernière intervention 27 septembre 2010 - 8 févr. 2007 à 14:06
Cugel Messages postés 42 Date d'inscription samedi 8 mars 2003 Statut Membre Dernière intervention 27 septembre 2010 - 9 févr. 2007 à 18:06
Bonjour,

Je débute en php et je me retrouve face à un problème dans la récupération de mes données :

Voici le code qui me pose probleme :

<?php require_once ('Connections/dbConnect.php');

mysql_select_db($dbName,$dbIdentifiant);

$query_qry_news="SELECT n.id,n.titre,n.contenu,n.timestamp_proposition FROM news n WHERE valide=1 ORDER BY n.timestamp_proposition DESC LIMIT 0,5";

$qry_news=mysql_query($query_qry_news,$dbIdentifiant) or die(mysql_error());

while ($donnees_news=mysql_fetch_assoc($qry_news))
{
             $dateSQL=$donnees_news['timestamp_proposition'];
             list($annees,$mois,$jourHeure)=explode("-",$dateSQL);
             list($jour,$heure)=explode(" ",$jourHeure);
             $dateFR=$jour.'/'.$mois.'/'.$annee;
             
             echo ''.$donnees_news['titre'].'
';
             echo $donnees_news['contenu'].'
';
             echo 'Posté le '.$dateFR.' à '.$heure.'
';
}

mysql_close();

?>

Petite explication :
Ce code effectue une requête sur une table news qui contient 5 enregistrements.  Le problème que je rencontre est que, normalement, je devrait récupérer tous les enregistrements de la table (5 enregistrements dans la table et LIMIT 0,5 dans la requête).  Oui mais voilà, je ne récupère que quatre enregistrements, le dernier étant tout bonnement 'oublié' par mon code ...

Ce que je n'arrive pas à comprendre, c'est que si je fait un mysql_num_rows($qry_news), php me retourne bien 5...

J'ai également essayé de faire un print_r mais j'ai toujours le problème.  J'ai également essayé de remplacer le while par une simple boucle for, mais le problème est toujours présent.

Je suis donc au point mort après trois jours de recherche et je dois dire qu'un coup de main me serait d'une grande utilité, parce que je commence à craquer ...

Merci pour vos conseils

2 réponses

Cugel Messages postés 42 Date d'inscription samedi 8 mars 2003 Statut Membre Dernière intervention 27 septembre 2010
9 févr. 2007 à 18:06
Ben j'avais déjà testé avec çà et çà fonctinne pas du tout.

Par contre j'ai trouvé la solution par hasard :


 


Au lieu de faire :


while ($donnees_news= mysql_fetch_assoc($qry_news))
{
             $dateSQL=$donnees_news['timestamp_proposition'];
             list($annees,$mois,$jourHeure)=explode("-",$dateSQL);
             list($jour,$heure)=explode(" ",$jourHeure);
             $dateFR=$jour.'/'.$mois.'/'.$annee;
             
             echo ' '.$donnees_news['titre'].'
';
             echo $donnees_news['contenu'].'
';
             echo 'Posté le '.$dateFR.' à '.$heure.'
';
}

J'ai fait un

Do {
   ....
}
while ($donnees_news =mysql_fetch_assoc($qry_news))

Et là çà marche ...

Le seul problème, c'est qu'il faut d'abord vérifier que la requête renvoie au moins un enregistrement, parce que dans le cas contraire, c'est le foutoir dans la page ...
3
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
8 févr. 2007 à 14:49
salut
teste avec limit 0,6
ou bien avec  mysql_fetch_array() au lieu de  fetch  assoc();
0
Rejoignez-nous