array php mysql

Répondre
hartek
le 07/04/2010 à 14:29
hartek
Bonjour à tous

J'aimerais afficher le résultat de ma requête dans un array et ensuite séparer les données par une virgule.

Merci à toute âme charitable qui m'indiquera le chemin

<?php 

$sql = mysql_query("SELECT (pseudo) FROM membres");
while($user = mysql_fetch_array($sql)){

echo $user['pseudo'].'<br />';

}
?>
Belkira
le 07/04/2010 à 17:40
Belkira
Hello,

Si j'ai bien compris :
Pour insérer tes valeurs dans l'array
<?php
$array = array();
$sql = mysql_query("SELECT (pseudo) FROM membres");
while($user = mysql_fetch_array($sql)){
array_push($array,$user['pseudo'])
}
?>


Et pour l'affichage :
<?php
$value = "";
foreach($array as $foo){
$value.= $foo.',';
}
$value = substr($value,0,-1);


echo $value;
?>


En espérant avoir pu t'aider :)
hartek
le 07/04/2010 à 18:18
hartek
Merci, c'est ça, seulement j'ai modifié ton code comme ceci:

<?php 
$array = array();
$sql = mysql_query("SELECT (pseudo) FROM membres");
while($user = mysql_fetch_array($sql)){
array_push($array,$user['pseudo']);
}

$userOnLine = implode(", ", $array);
echo $userOnLine;

?>


Ce qui évite d'avoir une virgule après le dernier membre smiley mais sinon c'est ce que je souhaitais faire
hartek
le 07/04/2010 à 18:41
hartek
Re et en ajoutant cette fonction

<?php 
function format_liste($tableau) {
$tableau_tmp = $tableau;
$dernier_element = array_pop($tableau_tmp);
if ($dernier_element === null) {
return '';
} elseif (!count($tableau_tmp)) {
return $dernier_element;
} else {
return implode(', ', $tableau_tmp) . ' et ' . $dernier_element;
}
}

echo format_liste($array);
?>


La dernière virgule est remplacé par 'et'.

La fonction vient de ce site :http://www.phpsources.org/scripts510-PHP.htm
LA GLOBULE
le 07/04/2010 à 19:22
LA GLOBULE
Quel est l'interet de pusher dans un tableau pour ensuite l'implode ?

Utilise directement une concaténation en construisant ta string à chaque tour de boucle.
hartek
le 07/04/2010 à 19:30
hartek
Désolé mais je ne comprends pas ce que tu veux dire. Je ne suis pas fort en php
LupusMic
le 07/04/2010 à 23:30
LupusMic
(La Globule) J'utilise cette technique pour éviter les erreurs de syntaxes. Surtout pour la construction d'une chaîne ayant des séparateurs. Ça évite aussi un test dans la boucle.

Et je n'aime pas l'opérateur de concaténation de chaînes, pour des raisons de lisibilité et de performances.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LA GLOBULE
le 08/04/2010 à 00:11
LA GLOBULE
Personnellement, je ne teste rien dans ma boucle, je substr mon séparateur inséré en trop après la boucle.

Question perf, j'avoue ne jamais avoir testé.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours