champ dans une boucle

nasdrovia70
Invité n'ayant pas de compte PHPfrance

16 avr. 2009, 09:57

Bonjour, j'aimerai rendre fixe les champ d un tableau dans une boucle.

Eléphant du PHP | 353 Messages

16 avr. 2009, 10:08

Bonjour.

Je pense qu'il va falloir sérieusement revoir ta manière de demander de l'aide :shock:

- Merci de préciser exactement ce que tu veux, de manière détaillée et si possible avec ton code actuel et un exemple de ce que tu veux obtenir au final.

Aucun problème pour aider les gens, mais un minimum d'effort est demandé tout de même aux personnes souhaitant de l'aide.

Donc merci de détailler :wink:

Eléphanteau du PHP | 30 Messages

16 avr. 2009, 10:08

Je crois qu'il va falloir être plus précis car je ne comprends pas ce que tu veux faire.

nasdrovia70
Invité n'ayant pas de compte PHPfrance

16 avr. 2009, 10:23

les champs étant ex:nom prénom adresse etc ...
la boucle affiche toute les information d'une base de données les un a la suite des autres mais le problème est que si je mais les champs il y aura pour chaque ligne nom prénom adresse etc... suivi des information de la base de données correspondant.
j'aimerai qu'il n'y est qu'une seul fois au dessus nom prénom adresse etc... puis toute les information de la base de donnée.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

16 avr. 2009, 10:31

Dis-moi si j'ai bien compris.

Tu souhaites afficher sous forme de tableau le contenu de ta base
(apparemment un annuaire, carnet d'adresses ou équivalent)
en n'affichant qu'une fois les entêtes de colonnes ("nom", "prénom", "adresse",...)
au-dessus des résultats qui s'afficheront ligne après ligne.

En gros, à l'identique de l'affichage de la table dans PHPMyAdmin. ;)

C'est bien ça ?

Si oui, montre-nous le code que tu as écrit pour cela, nous t'aiderons à le corriger.

Eléphant du PHP | 353 Messages

16 avr. 2009, 10:41

*Inspire un grand coup*

Bon..
On va reprendre.
Déjà, cela n'a rien à faire dans la section PHP Avancé mais trouveras sa place dans la section débutant.
Ensuite, merci pour ce début d'effort de présentation du problème, mais j'aurais préféré ceci :

==============================================================
Démonstration de comment demander de l'aide pour les nuls (Aux éditions Eyrolles)

Bonjour, je chercher à obtenir un affichage comme ceci:
----------- CHAMP1 ----- CHAMP2 ----- CHAMP3
tuple1 ------ val1-----------val2-----------val3---
tuple2 ------ val4-----------val5-----------val6---
tuple3 ------ val7-----------val8-----------val9---
Comment obtenir un tel affichage en exploitant plusieurs résultats de ma base de donnée ?
==============================================================


Ce à quoi je pourrais répondre :

Bonjour.
Merci pour ces explications clair de ton problème.
Voici ce que je te propose :
$html = "<table>";
$field_listed = false;
$fields = array();
//On fait la requête
$result = mysql_query("ta requete");

//On boucle sur les résutats
while($row = mysql_fetch_assoc($result))
{
	//Si on a pas encore construit la liste des champs, on le fait
	if(!$field_listed)
	{
		//On liste tous les champs retournés
		$fields = array_keys($row);
		
		//On affiche la liste des champs
		$html .= '<tr>';
		foreach($fields as $k => $field)
			$html .= '<th>'.$field.'</th>';
		$html .= '</tr>';
		
		//On flag a true pour ne plus rentrer dans cette condition lors de la prochaine boucle
		$field_listed = true;
	}
	
	// On affiche le contenu du tuple courant
	$html .= '<tr>';
	foreach($fields as $k => $field)
	{
		$html .= '<td>'.$row[$field].'</td>';
	}
	$html .= '</tr>';
}
$html .= "</table>";

Ta variable $html contient donc un tableau (au sens html du terme) dont la première ligne est composée des champs et toutes les lignes suivantes des valeurs associées à ces champs.

En affichant $html tu obtiendras quelque chose du genre

Code : Tout sélectionner

<table> <tr> <th>Champ1</th> <th>Champ2</th> <th>Champ3</th> </tr> <tr> <td>val1</td> <td>val2</td> <td>val3</td> </tr> <tr> <td>val4</td> <td>val5</td> <td>val6</td> </tr> <tr> <td>val7</td> <td>val8</td> <td>val9</td> </tr> </table>

Invité
Invité n'ayant pas de compte PHPfrance

16 avr. 2009, 10:43

Voici mon tableau, ça marche très bien les champs a l'extérieur de la boucle
echo "<table align='center' border='1' bordercolor='yellow' width='2160'>
				<tr>
<td width='40'  align='center'><font color='white'size='5'><b>id</b></font></td>
<td width='80'  align='center'><font color='white'size='5'><b>jour</b></font></td>
<td width='200' align='center'><font color='white'size='5'><b>commande</b></font></td>
<td width='150' align='center'><font color='white'size='5'><b>produit</b></font></td>
<td width='80'  align='center'><font color='white'size='5'><b>marque</b></font></td>
<td width='200' align='center'><font color='white'size='5'><b>designation</b></font></td>
<td width='100' align='center'><font color='white'size='5'><b>sequence</b></font></td>
<td width='100' align='center'><font color='white'size='5'><b>etat</b></font></td>
<td width='250' align='center'><font color='white'size='5'><b>commentaire</b></font></td>
<td width='200' align='center'><font color='white'size='5'><b>serie</b></font></td>
<td width='80'  align='center'><font color='white'size='5'><b>date</b></font></td>
<td width='400' align='center'><font color='white'size='5'><b>affectation</b></font></td>
<td width='200' align='center'><font color='white'size='5'><b>nom</b></font></td>
				</tr>
		</table>";
					
$reponse = mysql_query("SELECT * FROM Pcs");
	while ($donnees = mysql_fetch_array($reponse) )

	{
	$id = $donnees['id'];
	$jour = $donnees['jour'];
	$commande = $donnees['commande'];
	$produit = $donnees['produit'];
	$marque = $donnees['marque'];
	$designation = $donnees['designation'];
	$sequence = $donnees['sequence'];
	$etat = $donnees['etat'];
	$commentaire = $donnees['commentaire'];
	$serie = $donnees['serie'];
	$date = $donnees['date'];
	$affectation = $donnees['affectation'];
	$nom = $donnees['nom'];

	echo "<table align='center' border='1' bordercolor='yellow' width='2160'>
					<tr>
						
<td width='40'>  <font color='white'>$id&nbsp;</font></td>
<td width='80'>  <font color='white'>$jour&nbsp;</font></td>
<td width='200'> <font color='white'>$commande&nbsp;</font></td>                                          <td width='150'> <font color='white'>$produit&nbsp;</font></td>
<td width='80'>  <font color='white'>$marque&nbsp;</font></td>
<td width='200'> <font color='white'>$designation&nbsp;</font></td>
<td width='100'> <font color='white'>$sequence&nbsp;</font></td>
<td width='100'> <font color='white'>$etat&nbsp;</font></td>
<td width='250'> <font color='white'>$commentaire&nbsp;</font></td>
<td width='200'> <font color='white'>$serie&nbsp;</font></td>
<td width='80'>  <font color='white'>$date&nbsp;</font></td>
<td width='400'> <font color='white'>$affectation&nbsp;</font></td>
<td width='200'> <font color='white'>$nom&nbsp;</font></td>
					</tr>
			</table>";
	}

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

16 avr. 2009, 10:59

Pour commencer, on va simplifier un peu :
- sortie des styles du code
- sortie du code d'affichage HTML des scripts PHP
- utilisation de <th> pour les entêtes
- utilisation de mysql_fetch_assoc()
// ...
<style type="text/css">
table { align:center ; border:1px #FFFF00 ; }
th    { align:center ; font-size:10px ; font-weight:bold ; color:#FFFFFF ; }
td    { align:center ; font-size:10px ; }
</style>
</head>

<body>
<table width='2160'>
<tr>
<td width='40' >id</td>
<td width='80' >jour</td>
<td width='200'>commande</td>
<td width='150'>produit</td>
<td width='80' >marque</td>
<td width='200'>designation</td>
<td width='100'>sequence</td>
<td width='100'>etat</td>
<td width='250'>commentaire</td>
<td width='200'>serie</td>
<td width='80' >date</td>
<td width='400'>affectation</td>
<td width='200'>nom</td>
</tr>
					
<?php
$reponse = mysql_query("SELECT * FROM Pcs");
while ($donnees = mysql_fetch_assoc($reponse) )
      { extract($donnees);
?>	  
<tr>
<td><?php echo $id; ?></td>
<td><?php echo $jour; ?></td>
<td><?php echo $commande; ?></td>
<td><?php echo $produit; ?></td>
<td><?php echo $marque; ?></td>
<td><?php echo $designation; ?></td>
<td><?php echo $sequence; ?></td>
<td><?php echo $etat; ?></td>
<td><?php echo $commentaire; ?></td>
<td><?php echo $serie; ?></td>
<td><?php echo $date; ?></td>
<td><?php echo $affectation; ?></td>
<td><?php echo $nom; ?></td>
</tr>
<?php
      }
?>
</table>

Eléphant du PHP | 353 Messages

16 avr. 2009, 10:59

Heu..
Au vu de ce que tu propose...
La solution me parait pourtant simple


EDIT.
Bon ALBAT.
Si tu me pique mon boulot, je t'envoie ma moitié et son fouet.
foutue coccinelle.
aucun respect ces jeunes :lol:

nasdrovia70
Invité n'ayant pas de compte PHPfrance

16 avr. 2009, 11:27

je sais pas si c'est moi mais ton code marche pas

Eléphant du PHP | 353 Messages

16 avr. 2009, 11:32

Rah.
Mais dites moi que je rèves...

Bon on reprend.

Merci de préciser :
- ce qui ne fonctionne pas (on ne peut pas deviner), y a til un message d'erreur ? si oui merci de le mettre

Tu as copié collé tel quel ?
Ou tu as essayé de comprendre ?

Bref, merci de faire un petit effort pour détailler ce qui ne fonctionne pas et ce que tu as fait.

nasdrovia70
Invité n'ayant pas de compte PHPfrance

16 avr. 2009, 11:41

j'ai copier collé taper moi même desmodification adapté a ce code mais sois rien ne s'affiche sois 1 colonne de champ une colonne de donnée, une colonne de champs une colonne de données.

Eléphant du PHP | 353 Messages

16 avr. 2009, 11:44

Pour la énième fois.. merci d'apporter un peu plus de précisions.

Peux tu du coup nous donner ce qui est désormais utilisé comme code ?
Peux tu nous donner le html généré ?

Merci. :evil:

nasdrovia70
Invité n'ayant pas de compte PHPfrance

16 avr. 2009, 11:52

Excuse moi je suis débutant mais est tu sur que l'on peut séparé une boucle entre plusieurs balise php ne faut il pas la gardé entière dans une seul balise
<?php 
$reponse = mysql_query("SELECT * FROM Pcs"); 
while ($donnees = mysql_fetch_assoc($reponse) ) 
      { extract($donnees); 
?>       
<tr> 
<td><?php echo $id; ?></td> 
<td><?php echo $jour; ?></td> 
<td><?php echo $commande; ?></td> 
<td><?php echo $produit; ?></td> 
<td><?php echo $marque; ?></td> 
<td><?php echo $designation; ?></td> 
<td><?php echo $sequence; ?></td> 
<td><?php echo $etat; ?></td> 
<td><?php echo $commentaire; ?></td> 
<td><?php echo $serie; ?></td> 
<td><?php echo $date; ?></td> 
<td><?php echo $affectation; ?></td> 
<td><?php echo $nom; ?></td> 
</tr> 
<?php 
      } 
?> 

Eléphant du PHP | 353 Messages

16 avr. 2009, 11:54

Ce que tu m'a copié m'a l'air bon.
Qu'est ce qui cloche au juste?

Qu'est ce que cela t'affiche sur ta page ?

Et sinon, on est dans une même boucle ici puisque le bloc est bien délimité par "{" et "}"