while et foreach (avec le resultat d'un requette SQL)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : while et foreach (avec le resultat d'un requette SQL)

[RESOLU]

par dhjapan » 08 juin 2005, 11:03

Super!
Merci c'est exactement ce que j'avais pas compris.

par zeus » 08 juin 2005, 09:58

la fonction mysql_fetch_array($result) retourne un tableau indexé par entiers et par nom de colonne !!! C'est a dire que tu peux utiliser le tableau $a_tab[1] ou $a_tab["nomCol"] !!!

Pour parvenir à ce résultat, il enregistre donc le résultat du champ 1 dans 2 cases : [1] et ["nomChamp1"] !!!

C'est pour ça que tu as tout en double !!!

SI tu veux éviter ce pb, tu peut ecrire

mysql_fetch_array($result, MYSQL_NUM)

pour tout indexer sur des entiers
ou encore

mysql_fetch_array($result, MYSQL_ASSOC)

pour tout indexer sur les noms de colonnes

plus d'infos ==> ICI<==

Prend surtout gare au paragraphe suivant :
L'option result_type de mysql_fetch_array() est une constante qui peut prendre les valeurs suivantes : MYSQL_ASSOC, MYSQL_NUM et MYSQL_BOTH.Cette fonctionnalité a été ajoutée en PHP 3.0.7. MYSQL_BOTH est la valeur par défaut de cet argument.

En utilisant MYSQL_BOTH, vos obtiendrez un tableau qui sera à la fois associatif et indexé numériquement. En utilisant MYSQL_ASSOC, vous obtiendrez un tableau associatif (tout comme le fait mysql_fetch_assoc()), et en utilisant MYSQL_NUM, vous obtiendrez un tableau indexé nuériquement (comme le fait mysql_fetch_row()).

while et foreach (avec le resultat d'un requette SQL)

par Dhjapan » 08 juin 2005, 09:50

Bonjour,
voilà dans le but de générer un XML à partir d'une base SQL je voudrais utiliser foreach pour parcourir tout mes rsultats, je vous montre :
$sql="SELECT * FROM dhjapan_links LIMIT 0,1;";
		$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
		while($data = mysql_fetch_array($req)){
			foreach ($data as $key => $value)
			{
				echo $key." : ".$value."<br>";
			}
		}
mais tout ceci me renvois chaque valeur en double :

Code : Tout sélectionner

0 : 1 id : 1 1 : http://styleboost.com adresse : http://styleboost.com 2 : 2004-10-18 day : 2004-10-18 ...
je pourrai verifier si la longueur de la chaine $key est superieur à 1, ca reglerai mon probleme, mais j'aimerai comprendre.

Merci