requete en fonction d'une autre

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : requete en fonction d'une autre

par Hywan » 19 nov. 2008, 19:10

Tu n'as pas fait des requêtes en boucle j'espère ?

par jajax » 19 nov. 2008, 11:23

Bonjour,

Ok ça a bien marché merçi bien pour votre instruction c'est génial

:D

par Hywan » 18 nov. 2008, 20:29

Hey :),

Je t'arrête (vous arrête) tout de suite =; ! Il est hors de question de faire des requêtes SQL dans une boucle, sinon je mors (et c'est pas des blagues …).

Essaye de réaliser la même chose avec une seule requête SQL. Cela ne me semble pas bien compliqué et tu gagneras énormément en performance, crois moi. Ce qui est présenté en ce moment est à proscrire absolument.

Édition : au passage :
$idS= substr($idS,0,strlen($idS)-1);
peut se simplifier en :
$idS = substr($idS, 0, -1);
:)

par yaug » 18 nov. 2008, 15:29

Ou alors, histoire d'etre plus propre
Il stock les ids dans un tableau qu'il implode ensuite comme ceci :
$req="select id from table where nom like '%".$nom."%' "; 
if($res=mysql_query($req)) 
{ 
$IdsList = array();
while($row=mysql_fetch_array($res)) 
{ 
$IdsList[] = $row['id']; 
}
//attention il faudra enlever le dernier caractere , de $idS
$req="select nom from table1 where id_matri IN (".implode(",", $idS).") "; 
$res=mysql_query($req); 
$nb=mysql_num_rows($res); 
$row=mysql_fetch_array($res); 
return $row["id"];  
}

par dogmongo » 18 nov. 2008, 15:17

exacte et pour virer la petite virgule en trop :wink:
$idS= substr($idS,0,strlen($idS)-1);

par guilt92 » 18 nov. 2008, 14:50

Bonjour,

Ce qu'il faut faire c'est concaténer les valeurs au moyen d'un .=
$req="select id from table where nom like '%".$nom."%' "; 
if($res=mysql_query($req)) 
{ 
while($row=mysql_fetch_array($res)) 
{ 
$idS.=$row['id'].","; 
}
//attention il faudra enlever le dernier caractere , de $idS
$req="select nom from table1 where id_matri IN ($idS) "; 
$res=mysql_query($req); 
$nb=mysql_num_rows($res); 
$row=mysql_fetch_array($res); 
return $row["id"];  
}

requete en fonction d'une autre

par jajax » 18 nov. 2008, 13:54

Bonjour,

je suis un peu bloqué sur cette requete :
$req="select id from table where nom like '%".$nom."%' ";
if($res=mysql_query($req))
{
while($row=mysql_fetch_array($res))
{
$idS=$row['id'].",";
$req="select nom from table1 where id_matri IN ($idS) ";
$res=mysql_query($req);
$nb=mysql_num_rows($res);
$row=mysql_fetch_array($res);
return $row["id"];

}
}
La seconde requete me retourne le code suivant :
select nom from table1 where id_matri IN(66,)
alors que $idS contient des valeurs comme si après : 66,10,133,1236,12,

Ce que je veux faire c'est de récupérer les noms dans la table1 dont les id sont dans $idS

MERCI