Problème php / mysql

Résolu
tlr Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
tlr Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -
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

DAG
 
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
DAG
 
tu n'aurais pas oublier le "!" dans le test pour voir si la boucle est nul ?
0
DAG
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention  
 
Un grand merci Alain_42 ! Ta solution fonctionne a merveille :) !!

Encore merci
-1