requete imbriquée insoluble !!!
12 messages
• Page 1 sur 1
- DoubleClic
- Nouveau WRInaute

- Messages: 12
- Inscription: 14 Jan 2007
requete imbriquée insoluble !!!
Bonsoir à tous,
J'ai problème insoluble pour mon petit niveau.
Je m'explique, j'ai une table avec un champ qui contient des id séparés par un caractère et une deuxième table avec des enregistrements qui ont un id qui peut être identique à ceux du résultat de la première requète.
Ma recherche c'est de lister les résultats uniques
première requete
$req1=mysql_db_query($db,"SELECT liste FROM table1 WHERE id1='$_GET[id1]'");
$res1=mysql_fetch_assoc($req1);
$resultat1=explode('|', $res1['liste']);
J'obtiens bien la liste des id dans un tableau.
Ensuite je souhaite dans une autre table trouver les id différent du premier résultat.
$req2=mysql_db_query($db,"SELECT id2,nom FROM table2 WHERE NOT IN $resultat1");
while($res2=mysql_fetch_assoc($req2))
{echo $id";}
La deuxieme requete n'est pas bonne mais c'est pour vous montrer ou je veux en venir.
J'espère avoir été assez clair pour que vous compreniez.
Merci d'avance à ceux qui répondront.
Patrick
J'ai problème insoluble pour mon petit niveau.
Je m'explique, j'ai une table avec un champ qui contient des id séparés par un caractère et une deuxième table avec des enregistrements qui ont un id qui peut être identique à ceux du résultat de la première requète.
Ma recherche c'est de lister les résultats uniques
première requete
$req1=mysql_db_query($db,"SELECT liste FROM table1 WHERE id1='$_GET[id1]'");
$res1=mysql_fetch_assoc($req1);
$resultat1=explode('|', $res1['liste']);
J'obtiens bien la liste des id dans un tableau.
Ensuite je souhaite dans une autre table trouver les id différent du premier résultat.
$req2=mysql_db_query($db,"SELECT id2,nom FROM table2 WHERE NOT IN $resultat1");
while($res2=mysql_fetch_assoc($req2))
{echo $id";}
La deuxieme requete n'est pas bonne mais c'est pour vous montrer ou je veux en venir.
J'espère avoir été assez clair pour que vous compreniez.
Merci d'avance à ceux qui répondront.
Patrick
- DoubleClic
- Nouveau WRInaute

- Messages: 12
- Inscription: 14 Jan 2007
Non ça peut pas marcher car $resultat1 est un tableau avec plusieurs id
$resultat1[0]=1;
$resultat1[1]=3;
$resultat1[2]=7;
$resultat1[3]=24;
etc...
$resultat1[0]=1;
$resultat1[1]=3;
$resultat1[2]=7;
$resultat1[3]=24;
etc...
-

chava2b - WRInaute occasionnel

- Messages: 263
- Inscription: 5 Déc 2003
et sinon peut etre ca :
- Code: Tout sélectionner
$req1=mysql_db_query($db,"SELECT liste FROM table1 WHERE id1='$_GET[id1]'");
$res1=mysql_fetch_assoc($req1);
$resultat1=str_replace("|", ",", $res1['liste']);
$req2=mysql_db_query($db,"SELECT id2,nom FROM table2 WHERE id2 NOT IN ('$resultat1')");
while($res2=mysql_fetch_assoc($req2))
{echo $id";}
- DoubleClic
- Nouveau WRInaute

- Messages: 12
- Inscription: 14 Jan 2007
Super ça marche
Voici le code corrigé
$req1=mysql_db_query($db,"SELECT liste FROM table1 WHERE id1='$_GET[id1]'");
$res1=mysql_fetch_assoc($req1);
$resultat1=str_replace("|", ",", $res1['liste']);
$req2=mysql_db_query($db,"SELECT id2,nom FROM table2 WHERE id2 NOT IN ($resultat1)");
while($res2=mysql_fetch_assoc($req2))
{echo $res2[nom];}
Merci pour ton aide et viva corsica
Voici le code corrigé
$req1=mysql_db_query($db,"SELECT liste FROM table1 WHERE id1='$_GET[id1]'");
$res1=mysql_fetch_assoc($req1);
$resultat1=str_replace("|", ",", $res1['liste']);
$req2=mysql_db_query($db,"SELECT id2,nom FROM table2 WHERE id2 NOT IN ($resultat1)");
while($res2=mysql_fetch_assoc($req2))
{echo $res2[nom];}
Merci pour ton aide et viva corsica
- DoubleClic
- Nouveau WRInaute

- Messages: 12
- Inscription: 14 Jan 2007
Moi je ne suis pas au top, mais si tu le dis, je veux bien une explication.
Merci
Merci
- bigjet
- WRInaute discret

- Messages: 211
- Inscription: 21 Nov 2004
DoubleClic a écrit:Moi je ne suis pas au top, mais si tu le dis, je veux bien une explication.
Merci
Prenons ta requête:
- Code: Tout sélectionner
"SELECT liste FROM table1 WHERE id1='$_GET[id1]'"
Imaginons qu'un utilisateur tape ?1' OR '1'='1 à la fin de l'url de ton script
la variable $_GET[id1] va contenir
- Code: Tout sélectionner
1' OR '1'='1
Ta requête va devenir
- Code: Tout sélectionner
"SELECT liste FROM table1 WHERE id1='1' OR '1'='1'"
Et ça va te retourner toutes les lignes de ta table...
Probablement qu'il n'y aura aucune conséquences et probablement que le magic_quotes sera activé sur ton serveur ce qui va empêcher de réaliser une telle requête, mais même avec ça, tu peux pas prendre une variable brute et la mettre dans ta requête.
La règle de sécurité #1 en PHP: ne JAMAIS faire confiance à du contenu externe.
- DoubleClic
- Nouveau WRInaute

- Messages: 12
- Inscription: 14 Jan 2007
OK, j'ai compris mais vaut-il mieux utiliser des variables POST ou des variables enregistrée en session ?
- DoubleClic
- Nouveau WRInaute

- Messages: 12
- Inscription: 14 Jan 2007
OK, j'ai compris mais vaut-il mieux utiliser des variables POST ou des variables enregistrée en session ?
- Popop56
- WRInaute discret

- Messages: 186
- Inscription: 5 Jan 2007
tu peux utiliser GET mais il faut que tu traite ta variable avant de l'utiliser dans une requête mysql.
Par exemple tu peux verifier que id est bien numeric (is_numeric), qu'il n'est pas vide (empty).
Pour finir un coup de mysql_real_espace_string sur ta variable et tu es tranquille!
Par exemple tu peux verifier que id est bien numeric (is_numeric), qu'il n'est pas vide (empty).
Pour finir un coup de mysql_real_espace_string sur ta variable et tu es tranquille!
- DoubleClic
- Nouveau WRInaute

- Messages: 12
- Inscription: 14 Jan 2007
merci pour votre aide si précieuse.
12 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Google API : guide de développement de l'API Google - 20-09-2002
- Nombre moyen de mots par requête : statistiques AOL Août 2006 - 10-08-2006
- Nombre de clics dans les pages de résultats : statistiques AOL Août 2006 - 11-08-2006
- Informations sur l'infrastructure technique de Google - 01-11-2004
- Google indexe le Flash - 28-04-2004
- + de résultats pour un même site sur Google - 23-08-2010
- Yagoort : Yet Another Google Rank Test - 24-03-2005
- La tension monte entre Google et les sites d'avis d'internautes - 01-02-2011
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité



