passer le resultat d une requete en array

Invité
Invité n'ayant pas de compte PHPfrance

05 juin 2007, 14:32

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 juin 2007, 14:54

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
} 
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

05 juin 2007, 14:56

merci pour ta reponse :) :D

Mammouth du PHP | 693 Messages

05 juin 2007, 14:57

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 juin 2007, 15:07

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'];
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 693 Messages

05 juin 2007, 16:49

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)