Page 1 sur 1

passer le resultat d une requete en array

Posté : 05 juin 2007, 14:32
par Invité
bonjour a tous

voila mon probleme
apres une requete , je recupere des id,

je dois les passer en array pour les utiliser dans une autre requete:not in ('ici les id recuperes')

mon probleme est de passer les id en array

$Req = "SELECT * FROM membres  WHERE IdMembre=$_SESSION[IdMemb] ";
	$Cur = mysql_query($Req);
	$Nb = mysql_numrows($Cur);
	
if($Nb>0) 
{
while ($row = mysql_fetch_array($Cur)) 
{
   $Id= implode(",", $row[Id]);
}
}
merci pour votre aide !!!! :D

Posté : 05 juin 2007, 14:54
par Ryle
La fonction implode rassemble les éléments d'un tableau en une chaîne, hors là tu vas récupérer tous tes éléments un par un dans ta boucle...

Tu peux donc soit les mettre dans un tableau sur lequel tu feras un implode :
$monTableau = array(); // déclare le tableau
while ($row = mysql_fetch_assoc(...))  
{ 
   $monTableau[] = $row['...']; // ajoute l'élément au tableau
} 
Tu pourras alors faire un implode() du tableau pour générer ta chaine d'ids.

Sinon, tu peux directement concaténer tes variables dans une chaine :
$maChaine = ''; // déclare la chaine
while ($row = mysql_fetch_assoc(...))  
{ 
  if ($maChaine!='') // ajoute une virgule entre les éléments
    $maChaine .= ',';

  $maChaine .= $row['...']; // ajoute l'élément dans la chaine
} 

Posté : 05 juin 2007, 14:56
par Invité
merci pour ta reponse :) :D

Posté : 05 juin 2007, 14:57
par orgerix
Il suffit de remplacer
$Id= implode(",", $row[Id]); 
par
$Id[]= $row[Id]; 
et tu aura un tableau d'id

EDIT :Grillé par le grand maitre Ryle :D

Posté : 05 juin 2007, 15:07
par Ryle
Mouhahahahahaaaa !! :) (pour une fois que ce n'est pas moi qui me fait griller, j'en profite ;))

Tiens pis j'en profite aussi pour quelques remarques qui te serviront par la suite :

- si le seul champ que tu utilises dans ta requête est 'id', évite le " SELECT * " qui te rammene inutilement toutes les autres informations dont tu n'as que faire
- Pense également à mettre des guillemets ou des apostrophes quand tu utilises des index, ce sont des chaines de caractères qu'il faut donc délimiter. PHP tolère leur absence et converti une chaine qu'il ne connait pas en sa valeur String, mais c'est lui donner du travail supplémentaire pour rien ;)
- Pis enfin, pense à sortir les variables des chaines de caractères, c'est plus lisible (surtout avec la coloration syntaxique) et cela évite les soucis le jour où tu délimites avec des apostrophes :)
$Req = 'SELECT id FROM membres  WHERE IdMembre=' . $_SESSION['IdMemb'];

Posté : 05 juin 2007, 16:49
par orgerix
Et en plus ca permet d'échapper les valeur, dans le cas de valeurs recu par POst ou via l'URL.

A propos, est ce possible de contrefaire une variable de session ? Non pas que je veuille le faire, mais c'est pour savoir si c'est une méthode fiable (ou plutot relativmeent fiable pour les données d'importances moyennes)