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

[Résolu]
Signaler
Messages postés
42
Date d'inscription
samedi 8 mars 2003
Statut
Membre
Dernière intervention
27 septembre 2010
-
Messages postés
42
Date d'inscription
samedi 8 mars 2003
Statut
Membre
Dernière intervention
27 septembre 2010
-
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

Messages postés
42
Date d'inscription
samedi 8 mars 2003
Statut
Membre
Dernière intervention
27 septembre 2010

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 ...
Messages postés
385
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
21 août 2015
5
salut
teste avec limit 0,6
ou bien avec  mysql_fetch_array() au lieu de  fetch  assoc();