Page 1 sur 1

manque 1 enregistrement

Posté : 11 oct. 2006, 13:56
par toujoursenretard
bonjour,
avec cette requete il me manque un enregistrement, je sais que c'est du au $totalrows_recordset, parce que ca decale le pointeur de 1 je crois.
Mais je ne sais pas comment faire pour quand meme recuperer la valeur qui manque ...
Voici mon code :

$query_Recordset = "SELECT annuaire.ID, annuaire.nom, annuaire.lien_lang, annuaire.classement,annuaire.rubrique, rubrique.ID FROM annuaire, rubrique where annuaire.rubrique='Art Culture & Patrimoine' and rubrique.rubrique=annuaire.rubrique and validation='v'";
$Recordset = mysql_query($query_Recordset, $livre_dor) or die(mysql_error());
$row_Recordset = mysql_fetch_assoc($Recordset);
$totalRows_Recordset = mysql_num_rows($Recordset);
Merci d'avance

Posté : 13 oct. 2006, 13:55
par falgan
je ne comprends pas trop ton code, tu veux recuperer tous les enregistrement mais tu ne fais qu'un mysl_fetch_assoc donc tu ne peux recupérer qu'un enregistrement

avec un truc dans ce genre ca devrait mieux marcher:
<?php 
$query_Recordset = "SELECT annuaire.ID, annuaire.nom, annuaire.lien_lang, annuaire.classement,annuaire.rubrique, rubrique.ID 
FROM annuaire, rubrique 
WHERE annuaire.rubrique='Art Culture & Patrimoine' 
AND rubrique.rubrique=annuaire.rubrique and validation='v'";

$Recordset = mysql_query($query_Recordset, $livre_dor) or die(mysql_error());
//tu verifie la présence d'enregistrement dans le resultat
if(mysql_num_rows($Recordset)!=0){
   //tu parcours les enregistrements retournés
   while($row_Recordset = mysql_fetch_assoc($Recordset){
     //et la tu fait ton traitement en utilisant $row_Recordset
   }
}
?>

re

Posté : 19 oct. 2006, 11:19
par toujoursenretard
ma boucle existe et est comme la tienne . Le probleme est que ca me zappe le premier enregistrement qui doit etre afficher par la requete ( il m'enleve l'enregistrement 0 )
j'avais lu qu'il y avait un pb quand on utilisait mysql-numrows ... et je n'arrive pas a remettre la main dessus ...

Posté : 19 oct. 2006, 11:25
par Vikchill
Peux-tu montrer le code qui pose problème?

Re: manque 1 enregistrement

Posté : 19 oct. 2006, 11:39
par sadeq
bonjour,
avec cette requete il me manque un enregistrement, je sais que c'est du au $totalrows_recordset, parce que ca decale le pointeur de 1 je crois.
Mais je ne sais pas comment faire pour quand meme recuperer la valeur qui manque ...
Voici mon code :

$query_Recordset = "SELECT annuaire.ID, annuaire.nom, annuaire.lien_lang, annuaire.classement,annuaire.rubrique, rubrique.ID FROM annuaire, rubrique where annuaire.rubrique='Art Culture & Patrimoine' and rubrique.rubrique=annuaire.rubrique and validation='v'";
$Recordset = mysql_query($query_Recordset, $livre_dor) or die(mysql_error());
$row_Recordset = mysql_fetch_assoc($Recordset);
$totalRows_Recordset = mysql_num_rows($Recordset);
Merci d'avance

Tu peux remarquer que tu fais déjà un mysql_fetch_assoc() qui lit le premier, c'est pourquoi si tu enchaines avec une boucle while qui fait aussi un fetch elle commencera à partir du second.

Correction : efface le mysql_fetch_assoc() qui se trouve avant mysql_num_rows().

re

Posté : 19 oct. 2006, 12:19
par toujoursenretard
ok mais je fais comment ensuite pour recuperer mes enregistrements sans mon fetch ...

Posté : 19 oct. 2006, 12:54
par Ryle
Ben l'idée, c'est de ne faire le fetch qu'au moment où tu as besoin de lire tes enregistrements, c'est à dire dans ta boucle. Tu devrais donc normalement pouvoir te passer de celui-ci :
$query_Recordset = "SELECT annuaire.ID, annuaire.nom, annuaire.lien_lang, annuaire.classement,annuaire.rubrique, rubrique.ID 
FROM annuaire, rubrique where annuaire.rubrique='Art Culture & Patrimoine' and rubrique.rubrique=annuaire.rubrique and validation='v'"; 
$Recordset = mysql_query($query_Recordset, $livre_dor) or die(mysql_error()); 
// cette ligne ci lit le premier enregistrement (qui te manque ensuite) et n'a pas l'air d'être utilisée. 
// $row_Recordset = mysql_fetch_assoc($Recordset); 
$totalRows_Recordset = mysql_num_rows($Recordset);  
Si cela génère des erreurs ou ne ramène pas l'enregistrement manquant, c'est que tu as un problème dans le reste du code... montre nous dans ce cas la boucle dans laquelle tu récupères les données :)

re

Posté : 19 oct. 2006, 13:01
par toujoursenretard
je posterai ca ce soir l'ai pas avec moi et je ferai un ou deux tests avant histoire de verifier tout ce que tu me dis ...
Merci encore

Posté : 19 oct. 2006, 16:43
par falgan
le code que je te proposait correspondait a TOUT ce qui etait necessaire donc comme on te le propose par la suite, ne pas faire un fetch puis ensuite la boucle,
il te suffisait de faire un copier/coller à l'adaptation près.
En fait le principe est simple:
1. ecrire la requete
2. l'executer
3. verifier que le resultat comporte des lignes
4. parcourir les ligne en faisant le traitement necessaire