Mysql_fetch_array en tableau

amine_marc Messages postés 286 Statut Membre -  
coeus Messages postés 3296 Statut Membre -
Bonjour,
je veux comparer deux entités (tableaux) dans une bdd mysql, et exactement je cherche si un élément précis (code_elv) du premier tableau s'il existe dans le deuxième tableau sachant que les tailles des deux tableaux sont différentes;
j'ai un script (ci-dessous) qui ne se fonctionne pas comme il faut:

<?php
$rq101=mysql_query("SELECT code_elv FROM absenter WHERE code_seance='$code_seance'");
$rq110=mysql_query("SELECT code_elv FROM eleve WHERE nom_annee='$annee_scl'");
while($donnees110=mysql_fetch_array($rq110))
{
while($donnees101=mysql_fetch_array($rq101)){
if($donnees101['code_elv']!=$donnees110['code_elv'])
$ab="present<br>";
else
$ab="<i>Absent</i><br>";
echo $ab;
}
}
?>

veuillez me dire où est le pb exactement?! et merci d'avance.
A voir également:

2 réponses

coeus Messages postés 3296 Statut Membre 119
 
Salut !

Pour commencer, je te conseille fortement de mettre des acolades à tes if :
if($donnees101['code_elv'] != $donnees110['code_elv']) {
   $ab="present<br>";
} else {
   $ab="<i>Absent</i><br>";
}
echo $ab; 


As-tu essayé tes requêtes SQL séparément dans MySQL ? Peut-être que ce sont elles qui ne cherchent pas les bonnes choses...

Aussi, pour éclairer ton code, je te conseille "d'isoler" tes variables du string de tes requêtes :
$rq101 = mysql_query("SELECT code_elv FROM absenter WHERE code_seance = '" . $code_seance . "';");
et
$rq110 = mysql_query("SELECT code_elv FROM eleve WHERE nom_annee = '" . $annee_scl . "';"); 


Essaie aussi de mettre une variable de référence de connexion active à la BDD comme deuxième argument dans tes mysql_query(). Peut-être qu'au moment où tu appelles la query, la connexion est déjà éteinte pour une raison quelconque...

Dis-moi si ça t'aide !
0
amine_marc Messages postés 286 Statut Membre 2
 
merci pour tous ces informations, mais j'ai pas pu résoudre le pb
0
coeus Messages postés 3296 Statut Membre 119
 
Peux-tu me dire ce qu'il fait exactement ?
Et quand tu testes uniquement une requête SQL avec des valeurs dummies dans MySQL, ça fait quoi exactement ?
0
amine_marc Messages postés 286 Statut Membre 2
 
rien n'est affiché (page vide) sachant que le 1ier tableau 'eleve' contient 3 valeurs et le 2ieme tableau contient une seule valeur!
0
maka54 Messages postés 721 Statut Membre 80
 
je t'ai donné une solution a ton premier post

et coeus, il n'y a pas de point de virgule dans les requete
0
coeus Messages postés 3296 Statut Membre 119
 
@maka54 : faux, ce n'est pas obligatoire, mais recommandé d'en mettre. Une des méthodes les plus faciles d'injecter du code dans une requête SQL est de tirer profit de l'absence d'un point-virgule pour clore la requête.
0
maka54 Messages postés 721 Statut Membre 80
 
c'est complètement faux ce que tu fais.

en une requete :
SELECT absenter.code_elv 
FROM absenter INNER JOIN eleve ON absenter.code_elv = eleve.code_elv 
WHERE absenter.code_seance='$code_seance' AND eleve.nom_annee='$annee_scl'


çà te sort la liste des code elv présent dans tes deux tables directement, donc seulement les absents
0