Problème php / mysql

Résolu/Fermé
tlr Messages postés 7 Date d'inscription mardi 8 juillet 2008 Statut Membre Dernière intervention 25 septembre 2008 - 11 août 2008 à 11:53
tlr Messages postés 7 Date d'inscription mardi 8 juillet 2008 Statut Membre Dernière intervention 25 septembre 2008 - 14 août 2008 à 10:22
Bonjour,

J'ai un souci concernant une requete avec la fonction mysql_fetch_row. Je souhaite utiliser sa fonction "nul" mais celle ci m'ignore une ligne à chaque fois. Je vous donne le code se sera plus simple pour visualiser :


$link = mysql_connect($serveur, $usersql, $passsql);
if (!$link) {
die('Connexion impossible : ' . mysql_error());
}
echo 'Connection serveur Ok !<br /><br />';

$db_selected = mysql_select_db('ca-commut', $link);
if (!$db_selected) {
die ('Impossible de sélectionner la base de données : ' . mysql_error());
}
else{
echo "Connexion base de donnée Ok !<br /><br />";
}

$sql="SELECT * FROM bk_css LIMIT 0,30";
$requete=mysql_query($sql);

if(mysql_fetch_row($requete)){
while($ligne = mysql_fetch_row($requete)){
echo $ligne[0]."<br />";
}
echo "<br />";
}
else{
echo "Aucune période critique enregistrée dans la base de données.";
}

if(mysql_close($link)){
echo "Deconnexion serveur Ok !<br /><br />";
}

Comme on peut voir, je cherche à savoir d'abord si j'ai des résultats retournés. Si oui il les traite une par une, sinon il affiche "Aucune période critique enregistrée dans la base de données".
Le problème c'est qu'en cherchant à savoir s'il y a des résultats retournés, la première ligne que la bdd me retourne est ignorée purement et simplement.

J'ai chercher sur plein de site j'ai pas reussi à trouver une réponse sérieuse (autre que passer par deux requetes).

Je vous remercie
A voir également:

6 réponses

Salut,

Je comprend pas tres bien ton pb.
Je ne sais pas si ça varépondre à ton pb mais moi, pour voir s'il y a des résultats dans ma Bdd, je fais un
SELECT count(*) ...
Si celui-ci me revois zéro : il n'y a rien.

Autre façon de faire : tu prend un ou plusieurs champs par exemple ID, et tu regardes s'il est vide :
while($ligne = mysql_fetch_row($requete))
{ 
    if(empty($ligne[ID]))
   {
      //traitement
   }
   else
   {
      //traitement
   }
}
0
tu n'aurais pas oublier le "!" dans le test pour voir si la boucle est nul ?
0
Ah oui, ok j'ai compris. Ben c'est bizarre car ton code paraît bon...
J'avoue qu'en PHP je ne suis pas un craque, je calle !

Bon courage !

A+
0
tlr Messages postés 7 Date d'inscription mardi 8 juillet 2008 Statut Membre Dernière intervention 25 septembre 2008
11 août 2008 à 12:45
Le problème avec le "count", c'est que sa m'oblige a faire deux requete. La prmeiere pour savoir s'il y a des valeur et la deuxième pour le traitement.

J'ai ici un lien permettant pour détecter un résultat nul : https://www.commentcamarche.net/contents/784-php-bases-de-donnees (voir tout en bas).

J'ai fais exactement le même exemple, rien a faire, j'ai toujours la première ligne de la requete qui est ignorer. Elle ne s'affiche pas.

Merci
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tlr Messages postés 7 Date d'inscription mardi 8 juillet 2008 Statut Membre Dernière intervention 25 septembre 2008
11 août 2008 à 13:36
non non, j'ai fais l'inverse par rapport à l'exemple.
C'est a dire que je test si mysql_fetch_row contient des information (n'est pas NUL). Alors que dans l'exemple, au contraire il test en premier savoir s'il est nul.
D'ou le ! dans le if dans l'exemple et pas moi.

D'ailleurs l'exemple fonctionne chez moi, rien à dire. Comme je l'ai dis, c'est juste que j'ai la première ligne de ma requete ignorer.

Par exemple, si ma requete doit me retourné une série de chiffe : 1, 2, 3, 4, ...
Moi j'aurai 2, 3, 4, ... quelque doit le ORDER ou le GROUP BY, la première ligne ne s'affiche pas
-1
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
11 août 2008 à 18:42
Salut,

utilises mysql num_rows() qui te donnes le nombre d'enr trouvés, comme çà:

...
if(mysql_num_rows($requete)>0){
while($ligne = mysql_fetch_row($requete)){
....
0
tlr Messages postés 7 Date d'inscription mardi 8 juillet 2008 Statut Membre Dernière intervention 25 septembre 2008
14 août 2008 à 10:22
Un grand merci Alain_42 ! Ta solution fonctionne a merveille :) !!

Encore merci
-1