Page 1 sur 1

Besoin d'aide pour requete mysql

Posté : 22 mai 2010, 22:31
par alsab
Bonjour,

J'aurais besoin d'un peu d'aide.
J'ai crée ce code:
 if($_GET['field_distance']==1) {
$whereId = implode( " , ", $sIDs );
$query = "SELECT (itemid) FROM `#__arti2_fields_data` " .
			 	 	 "WHERE ( itemid IN ({$whereId}) AND `fieldid` = 44 AND `data_txt`    > 30) ";
			$database->setQuery( $query );
$sIDs = $database->loadResultArray();
}
Donc ce code me permet de récupérer tous les itemid qui sont compris dans $whereId, avec fielid = 44 et data_txt supérieur à 30
par exemple $whereId = 1 , 2 , 3 , 4

Maintenant voilà mon problème
Je voudrais remplacer le chiffre 30 de ma requête par le résultat de cette fonction:

rs_showDistance( Id )

où Id doit être remplacer par la valeur de l'itemid, soit 1 ou 2 ou 3 ou 4, et à chaque fois le résultat est différent

La nouvelle requête devrait me permettre de récupérer tous les itemid qui sont compris dans $whereId, avec fielid = 44 et data_txt supérieur au résultat de la fonction rs_showDistance( Id )

J'espère que j'ai été assez clair dans mon explication. Si quelqu'un sait comment faire, merci d'avance.

Re: Besoin d'aide pour requete mysql

Posté : 23 mai 2010, 11:37
par Ryle
En gros il te faut les enregistrements pour lesquels :
WHERE `fieldid` = 44 AND ( 
    itemid  = 1  AND `data_txt`  >   rs_showDistance( 1 ) 
  OR
    itemid  = 2  AND `data_txt`  >   rs_showDistance( 2 ) 
  OR
    itemid  = 3  AND `data_txt`  >   rs_showDistance( 3 ) 
  ...
)
Pourquoi ne pas boucler sur ton tableau $sIDs pour générer chacune des lignes itemid/data_txt et construire une requête sql en concaténant les moreaux ?

Re: Besoin d'aide pour requete mysql

Posté : 23 mai 2010, 12:01
par alsab
Merci ryle, tu as tous compris.

En faîtes il s'agit d'un code de composant joomla que je modifie, et je ne peut pas faire une boucle directement sur le tableau $sIDs.

Il faudrait que je le fasse dans mon if{ }.

Si t'as quelques conseil à me donner, parceque je débute et là je t'avoue que je suis un peu perdu.

Merci

Re: Besoin d'aide pour requete mysql

Posté : 23 mai 2010, 12:32
par Ryle
Ben là où tu as ton if(), tu peux construire ta requête comme ceci :
// on commence par écrire le début du select
$query = "SELECT (itemid) 
  FROM `#__arti2_fields_data`
  WHERE `fieldid` = 44";

// on créer ensuite un tableau de condition 
$condition = array();
// pour chaque id, on écrit la portion de chaine sql correspondante et on l'ajoute dans le tableau
foreach ($sIDs as $id) {
  $condition[] = "itemid  = ". $id ."  AND `data_txt`  > " . rs_showDistance( $id ); 
}

if (count($condition) > 0) // s'il y a des condition on les ajoute à la suite de la requête
  $query .= " AND ( ". implode(' OR ', $condition) ." )";
A vérifier avec un echo $query, mais normalement, ça devrait te générer la requête ci-dessus :)

Re: Besoin d'aide pour requete mysql

Posté : 23 mai 2010, 13:19
par alsab
Merci Ryle.
Super boulot. Ca marche impeccable. =D>