Requete SELECT + boucle pour alimenter un tableau

Eléphant du PHP | 331 Messages

18 févr. 2009, 21:47

Bonjour,

Je n'arrive pas à alimenter correctement un tableau, dont les valeurs sont issues d'une requete SELECT placée elle-même dans une boucle :
//on récupére les amis utilisant l'appli
$aFriends = $oFacebook->api_client->friends_getAppUsers();   
// on récupère leurs identifiants Facebook
foreach ($aFriends as $iKey => $sFriend) 
{
	$query_RecupIdVoteurAmis = "SELECT IdVoteur FROM Inscrits_RDP WHERE IdFacebook = '$sFriend'";
	$RecupIdVoteurAmis = mysql_query($query_RecupIdVoteurAmis, $connexion_bdd_mysql) or die(mysql_error());
	while ($ligne_RecupIdVoteurAmis=mysql_fetch_array($RecupIdVoteurAmis))
	{ extract($ligne_RecupIdVoteurAmis);
	$IdVoteurAmis = Array($IdVoteur);
	}
}
print_r($IdVoteurAmis);   
En l'état, mon print_r() n'affiche rien de valable, ce qui ne m'étonne qu'à moitié :?

Pouvez-vous m'aider ?

Merci !

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

18 févr. 2009, 22:22

A chaque itération de ta boucle while, tu vas écraser ta variable $IdVoteurAmis :
$IdVoteurAmis = Array($IdVoteur); 
Résultat, quand tu sors de ta boucle, ta variable ne contient que la dernière valeur que tu y as stocké...

tu peux ajouter des crochets si tu veux que les données soient dans un tableau ou utiliser des fonctions du genre array_push() :
$IdVoteurAmis[] = Array($IdVoteur);
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 331 Messages

19 févr. 2009, 00:17

quand je rajoute les crochets, le print_r me renvoie ceci cette fois-ci :

Code : Tout sélectionner

Array ( [0] => Array ( [0] => 3 ) [1] => Array ( [0] => 18 ) [2] => Array ( [0] => 443 ) [3] => Array ( [0] => 444 ) [4] => Array ( [0] => 65 ) )
C'est bizarre, pas du tout ce que j'attends ...

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

19 févr. 2009, 12:38

Et qu'est ce que tu attends (nan parce que ce sera peut être plus simple de commencer par là ;))

L'instruction "$IdVoteurAmis[] = Array($IdVoteur);" va avoir pour effet d'ajouter dans le tableau $IdVoteurAmis un nouvel élément qui sera un tableau (Array()) contenant un seul élément : la valeur de $IdVoteur.

Code : Tout sélectionner

Array ( [0] => Array ( [0] => 3 ) [1] => Array ( [0] => 18 ) [2] => Array ( [0] => 443 ) [3] => Array ( [0] => 444 ) [4] => Array ( [0] => 65 ) )
Si c'est un tableau d'id que tu veux obtenir, alors vire l'instruction Array() qui créer à chaque fois un nouveau tableau : "$IdVoteurAmis[] = $IdVoteur;" et tu obtiendras ce résultat :

Code : Tout sélectionner

Array ( [0] => 3 [1] => 18 [2] => 443 [3] => 444 [4] => 65 )
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 331 Messages

19 févr. 2009, 12:51

Effectivement, j'aurais du être plus explicite ... :?

Mais merci en tout cas, c'est bien ta deuxième proposition que j'attendais, et le résultat obtenu est parfait ! :D