Reqête sql qui selectionne pas toute les ....

Résolu
max1395 -  
 max1395 -
Bonjour,
j'ai un code qui sert a séléctionner tous les membres qui n'ont pas de parrain . mais voila dans ma table j'ai 2 membre sans parrain et pourtant il n'y en a que 1 (le dernier) qui est affichée .

voila le code :

<?php
mysql_connect('localhost','***','*****');
mysql_select_db('max1395');
 
//On récupère la valeur de nos variables passées par URL
$action = htmlspecialchars($_GET['action']);
?>
<?php
//On regarde la valeur de la variable $action
switch($action)
{
//Si c'est "consulter"
case "1" :
?>

Affichage des membres sans parrain
<?php
$pseudo = $_SESSION['pseudo'] ;
mysql_connect("localhost", "****", "****");
mysql_select_db("max1395");
$requete2 = mysql_query('SELECT * FROM parrain WHERE parrain = "" ') or die(mysql_error());
while ($donnees = mysql_fetch_array($requete2))
{
$filleul = $donnees['filleul']  ;
}
$requete2 = mysql_query('SELECT * FROM membre WHERE id = "'.$filleul.'"') or die(mysql_error());
while ($donnees = mysql_fetch_array($requete2))
{ 
$id = $donnees['id']  ;
}
$requete2 = mysql_query('SELECT * FROM membre WHERE id = "'.$id.'" ') or die(mysql_error());
while ($donnees = mysql_fetch_array($requete2))
{ 
echo $donnees['pseudo']  ;
echo '<br><br><br>'  ;
}
mysql_close(); // Déconnexion de MySQL 
?>

merci

11 réponses

Gaby
 
Bonjour,

Premièrement ton code est un peut indigeste. je pense que tu peux le simplifier mille fois.

Par exemple, se connecter plusieurs fois à la base de donnée.

Tu peux aussi eviter d'utiliser l'ouverture et la fermeture des balises :

<?php
?>
<?php
?>

Bon en ce qui concerne ton problème, il vient du fait que tu utilise plusieur fois le meme nom de variable pour des requêtes différentes :

$requete2 = mysql_query('SELECT * FROM parrain WHERE parrain = "" ') or die(mysql_error());
$requete2 = mysql_query('SELECT * FROM membre WHERE id = "'.$filleul.'"') or die(mysql_error());
$requete2 = mysql_query('SELECT * FROM membre WHERE id = "'.$id.'" ') or die(mysql_error());


Penses à utiliser des variables différentes et surtout qu'elle ont un nom plus compréhensible:

au lieu de l'appeler $requete2 utilise $MembresSansParrain ou $sansparrain à toi de voir.

Allez courrge Mais n'oubli pas qu'en programmation quand tu ouvre 1 portes et que tu pense àvoir découvert quelque chose il y a 5 nouvelles portes qu'y s'ouvres.

Un bon conseil: avant d'avancer Approfondie ce que tu vient de découvrir.

++
Gabriel
0
max1395
 
bon j'ai refais , ça donne sa :
$requete2 = mysql_query('SELECT * FROM parrain WHERE parrain = "" ') or die(mysql_error());
while ($donnees = mysql_fetch_array($requete2))
{
$filleul = $donnees['filleul']  ;
}
$requete3 = mysql_query('SELECT * FROM membre WHERE id = "'.$filleul.'"') or die(mysql_error());
while ($donnees = mysql_fetch_array($requete3))
{ 
$id = $donnees['id']  ;
}
$requete4 = mysql_query('SELECT * FROM membre WHERE id = "'.$id.'" ') or die(mysql_error());
while ($donnees = mysql_fetch_array($requete4))
{ 
echo $donnees['pseudo']  ;
echo '<br><br><br>'  ;
}
mysql_close(); // Déconnexion de MySQL 

mais ça marche pas
0
max1395
 
up !!
0
max1395
 
up up !! j'ai vraiment besoin d'aide
0

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

Posez votre question
Gaby
 
Salut !

Bon je vois que tu n'as toujours pas résolu ton probleme !

tu peux me contacter par msn à gabriel@anastore.com je suis dispo toute la matiniée.

++
Gaby
0
P@t@ch0n Messages postés 565 Date d'inscription   Statut Membre Dernière intervention   85
 
Jointures.

$sql = 'SELECT membre.id, membre.pseudo FROM membre
JOIN parrain ON membre.id = parrain.filleul
WHERE parrain.parrain = \'\'';

$requete = mysql_query($sql) or exit(mysql_error());

while( $donnees = mysql_fetch_assoc($requete) )
{
    echo 'id : ' . $donnees['id'] . '; pseudo : ' . $donnees['pseudo'] . "\n";
}


J'ai par contre un doute sur cette requête, car logiquement un membre n'ayant pas de filleul ou n'étant pas parrain ne devrait pas être présent dans la table parrain.

Auquel cas, ta requête devrait ressembler à :

$sql = 'SELECT membre.id, membre.pseudo FROM membre
LEFT JOIN parrain ON membre.id = parrain.filleul
WHERE parrain.parrain IS NULL';
0
max1395
 
Je fais ça car j'en ai besoin mais la requête ne marche pas . je prefers mon code même si il est plus long je m'y retrouve ..... ou est le problème ??
0
persol Messages postés 53 Date d'inscription   Statut Membre Dernière intervention   9
 
WHERE parrin IS NULL cest peux etre la la solution. mais je t'avou que les jointure sont un bon comromis.

Toi tu t'y retrouve mais un programmeur pro à du mal a comprendre ta logique. peux etre tu peux nous donner un plan de tes tables. ou un export (dump sql) et de mon coté j'essai de te trouver les filleul sans parrain.

++
Gaby
0
max1395
 
Je rapelle que mon probleme c'est que quand ça affiche le resultat donc de membre sans parrain , sa ne selectionne que 1 membre au lieu de tous !
0
persol Messages postés 53 Date d'inscription   Statut Membre Dernière intervention   9
 
gabriel@anstore.com :: Msn
0
max1395
 
up on pourrait m'aider ?
0