Page 1 sur 1

while and while :)

Posté : 29 mars 2006, 10:42
par skyangel
Bonjour,

Voila j'ai un petit souci que je n'arrive pas à visualiser.

je voudrais que tant que a<k il affecte a id une valeur.

et en meme temps il doit executer des instrucitons pour chaque element de tableau

je vous mets le code pour etreplus clair.
while ($k<mysql_num_fields($result))
				{
			    while (list($key, $val) = each($tableau)  ) 
                    { 
						$id=mysql_field_name($result,$k); 
                        echo "<TD align='center'>"; 
                        echo "<a id='".$id."' href='visubdd.php?valeur=".$val."&id=".$id."&table=".$table."' class=\"Menu\">".$val.'</a>'; 
                        echo "</TD>";
						$k++; 
						echo "<br>".$id;						 		
                     } 
              		 echo "</TR>"; 
					}	

le code ci dessus est faux. mais je n'arrive pas à le coder

Si vos lanternes pouvaient m'éclairer :) Merci d'avance

Posté : 29 mars 2006, 10:45
par Invité
bon j'ai trouve tout seul un petit for avant le while merci

Posté : 29 mars 2006, 10:46
par ouckileou
Salut,

c'est pas très clair

"tant que a<k"
je vois bien k mais pas a

Pense au balises
 plutôt que [code]

Posté : 29 mars 2006, 10:47
par ouckileou
Premier message à 10h42, deuxième à 10h45... tu n'avais pas dû chercher beaucoup avant de poster :roll:

Posté : 29 mars 2006, 11:21
par skyangel
Bonjour ,

si j'ai cherché mais bon cette partie la m'avait échappé. mais ma olution ne marche pas donc je relance le sujet .

Si quelqu'un pouvait voir pourquoi mes deux boucles ne se font pas parrallèlement.

meric

Posté : 29 mars 2006, 11:24
par skyangel
voici le code que j'ai modifie mais qui ne veut pas m'afficher le resultat estompé

c'est à dire que k ne s'incremente jamais.
for($k=0;$k<mysql_num_fields($result);$k++)
				{
			    while (list($key, $val) = each($tableau)  ) 
                    { 
						$id=mysql_field_name($result,$k); 
                        echo "<TD align='center'>"; 
                        echo "<a id='".$id."' href='visubdd.php?valeur=".$val."&id=".$id."&table=".$table."' class=\"Menu\">".$val.'</a>'; 
                        echo "</TD>";
						//echo $k++; 
						echo "<br>".$id;						 		
                     } 
              		 echo "</TR>"; 
					}				
               } 

Posté : 29 mars 2006, 11:24
par ouckileou
Elles sont l'une dans l'autre, donc à chaque tour de l'une, tu exécutes complètement l'autre, c'est logique

Peux-tu expliquer un peu mieux ce que tu souhaites faire ?

J'avais aussi posé une question dans mon premier message

Posté : 29 mars 2006, 11:33
par skyangel
oui c'est sur elles sont l'une dans l'autre mais je n'arrive pas à les éxecuter ensemble.

je souhaite que mon lien prenne comme valeur id , le nom du field dont dépend la valeur. tout cas dans le but d'afficher une table.

pour ca, il faut que je visione chaque field :
for($k=0;$k<mysql_num_fields($result);$k++)
ensuite que je construise les liens automatiquement avec comme id le nom du champ à l'indice k .
mysql_field_name($result,$k);

dans mon premier post a faisait réference à une valeur incrementé et k une limite (notamment par mysql_num_fields($result))

Merci de votre aide .

Posté : 29 mars 2006, 11:37
par ouckileou
Si tu veux simplement parcourir le résultat d'une requête, afficher les données, pas besoin de 2 boucles : http://phpdebutant.org/article66.php

si ce n'est pas ça que tu veux faire désolé mais je n'ai tjrs pas compris, tout cela me semble très tordu

Posté : 29 mars 2006, 11:42
par skyangel
oui c ca afficher une table.
sauf que ne connais pas le nom des champs et je ne connais que le nom de la table.
je ne sais pas combien il y a de colonne et de lignes.

Totu ca dans le but d'automatiser le tout au cas ou je rajoute des colonnes sans devoir modifier le code

Posté : 29 mars 2006, 11:51
par Hermès
Si ça peut t'aider :
while ($row = mysql_fetch_array($result)) {
   echo "<tr>";
   foreach($row as $col_name => $col_value) {
      echo "<td>Colonne : ".$col_name."<br/>Valeur : ".$col_value."</td>";
   }
   echo "</tr>";
}

Posté : 29 mars 2006, 11:54
par ouckileou
OK, en expliquant ton problème avec le but final et en français (pas encode) c'est tout de suite plus clair ;)

Alors pas besoin de connaître le nombre de colonnes, fais une boucle foreach
// boucle sur chaque ligne de résultat 
// on pourrait utiliser MYSQL_ASSOC et connaître directement le nom de la colonne (récupéré dans $cle du foreach)
while ($resultat = mysql_fetch_array($dataset, MYSQL_NUM)) {
	// boucle sur chaque colonne de la ligne courante
	foreach	($resultat as $cle => $valeur) {
		echo 'Numéro : '.$cle;
		echo '<br />Nom : '.mysql_field_name($resultat, $cle);
		echo '<br />Contenu : '.$valeur;
	}
	echo '<br />';
}
Je pense que ceci devrait fonctionner, teste, je ne peux pas moi.
A remettre en forme ensuite. Mais bon c'est le principe, tu boucles sur chaque ligne, et sur chaque ligne tu boucles sur chaque colonnes. Sans te soucier du nombre puisque le foreach s'en occupe tout seul.

Tu pourrais aussi regarder du côté de classe d'accès aux bases de données (il y en a toute une ribambelle dans le forum "Vos contributions")
Regarde ADODB par exemple, elle offre peut-être des fonctionnalités que tu cherches.

Tu peux aussi te poser la question : est-ce que ça vaut le coup ?
généralement, on ne modifie pas une structure de table chaque semaine, et quand on le fait, on modifie le code en conséquence
Ceci semble un peu compliqué et peut-être un peu plus lent donc, pour finalement peu de confort en plus

Posté : 29 mars 2006, 11:58
par skyangel
merci je teste de suite.

Le but de ce confort c'est que mon patron ou qq1 d'autres peut modifier toute la base sans aucune difficulté le jour ou je serais plus la .


Merci en tout cas.