while and while :)

skyangel
Invité n'ayant pas de compte PHPfrance

29 mars 2006, 10:42

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

Invité
Invité n'ayant pas de compte PHPfrance

29 mars 2006, 10:45

bon j'ai trouve tout seul un petit for avant le while merci

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

29 mars 2006, 10:46

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]

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

29 mars 2006, 10:47

Premier message à 10h42, deuxième à 10h45... tu n'avais pas dû chercher beaucoup avant de poster :roll:

skyangel
Invité n'ayant pas de compte PHPfrance

29 mars 2006, 11:21

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

skyangel
Invité n'ayant pas de compte PHPfrance

29 mars 2006, 11:24

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>"; 
					}				
               } 

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

29 mars 2006, 11:24

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

skyangel
Invité n'ayant pas de compte PHPfrance

29 mars 2006, 11:33

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 .

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

29 mars 2006, 11:37

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

skyangel
Invité n'ayant pas de compte PHPfrance

29 mars 2006, 11:42

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

Eléphant du PHP | 312 Messages

29 mars 2006, 11:51

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>";
}

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

29 mars 2006, 11:54

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

skyangel
Invité n'ayant pas de compte PHPfrance

29 mars 2006, 11:58

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.