8796 sujets

Développement web côté serveur, CMS

je voudrait afficher la liste de mes membres, j'ai utilisé une boucle while


<?php
$sql = ('select membre_mail from membres');
$req = mysql_query($sql);
?>
<p>Les membres inscrit a la newsletter jeremapero :<br/><br/>
<?php
while ($row = mysql_fetch_assoc($req)) {
   echo $row .'<br/><br/>';
}
?>


malheureusement sa ne marche pas Smiley bawling
c'est pourtant simple non ? ^^
Modifié par volcomboy62 (25 Feb 2011 - 10:01)
Ouais. Mais faire un echo d'un array, ça marche moyennement. Voire pas, en fait.

Soit dit en passant:
- parenthèses autour de la query inutiles
- premier mysql_fetch et free_result complètement inutiles voire foireux (vu que tu dépiles un résultat)
- API mysql_ à éviter, lui préférer PDO
- fetch_array à éviter, lui préférer fetch_assoc (ou d'autres, c'est selon, mais fetch_array est le plus gourmand pour rien)
si je fait comme sa :


<?php
<?php 
$sql = ('select membre_mail from membres'); 
$req = mysql_query($sql); 
?> 
<p>Les membres inscrit a la newsletter jeremapero :<br/><br/> 
<?php 
while ($row = mysql_fetch_assoc($req)) { 
   echo $row .'<br/><br/>'; 
} 
?>


il m'affiche array au lieu de m'afficher les emails de mes membres
Modifié par volcomboy62 (18 Feb 2011 - 16:49)
Comme ceci :


<?php  
$sql = ('select membre_mail from membres');  
$req = mysql_query($sql);  
?>  
<p>Les membres inscrit a la newsletter jeremapero :<br/><br/>  
<?php  
while ($row = mysql_fetch_assoc($req)) {  
   echo $row['membre_mail'] .'<br/><br/>';  
}  
?> 

Modifié par xirt (18 Feb 2011 - 18:19)
pourquoi mentionner : $row['membre_mail'] ?

ma requête sélectionne déjà les emails de mes membres, peut m'expliquer pourquoi c'est nécessaire ?

merci
parce que ta variable $row contient un tableau et il faut indiquer après ton echo quelle donnée afficher.

fais un print_r($row), tu verras ce que je veux dire.
Quand tu utilises fetch_assoc tu récupères un tableau associatif dont les index sont les noms des champs de ta table.

Si tu avais utilisé PDO au lieu des fonctions mysql_* tu aurais pu utiliser la méthode fetch avec le paramètre FETCH_COLUMN pour récupérer directement la valeur d'un seul champ.
Modifié par jb_gfx (23 Feb 2011 - 01:02)