Les Allergies
Alimentaires
Posez votre question Signaler

Reqête sql qui selectionne pas toute les .... [Résolu]

max1395 - Dernière réponse le 4 oct. 2009 à 19:31
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
Lire la suite 

Reqête sql qui selectionne pas toute les »

11 réponses
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
up !!
Ajouter un commentaire
Réponse
+0
moins plus
up up !! j'ai vraiment besoin d'aide
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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';
Ajouter un commentaire
Réponse
+0
moins plus
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 ??
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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 !
Ajouter un commentaire
Réponse
+0
moins plus
gabriel@anstore.com :: Msn
Ajouter un commentaire
Réponse
+0
moins plus
up on pourrait m'aider ?
Ajouter un commentaire
Ce document intitulé « Reqête sql qui selectionne pas toute les .... » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?