Affichage horizontal du resultat d'une boucle

Eléphanteau du PHP | 31 Messages

14 mars 2012, 19:49

Bonjour,

Je cherche le moyen d'afficher le resultat d'une boucle do while a l'horizontal avec un maximum de 3 colonne.

Voici mon code:
<?php
$client = 000 ; 
$row_code_client['date'] = date("dmy"); 

 do { ?>
<table width="300" border="1">
  <tr>
    <td align="center" valign="middle">

<?php

$filename= ($str_client = str_pad($client, 3, "0", STR_PAD_LEFT) .".png");
QRcode::png(($row_code_client['prefix'] . $row_code_client['photographe'] . $row_code_client['date'] . $row_code_client['carte'] . ($str_client = str_pad($client, 3, "0", STR_PAD_LEFT) ) . $row_code_client['magazin'] . $row_code_client['sufix']), $filename,'S',3,1);



echo '<img src="'.$filename.'" /><br>';	

 echo $row_code_client['photographe']; ?><?php echo $row_code_client['date']; ?><?php echo $row_code_client['carte']; ?><?php $str_client = str_pad($client, 3, "0", STR_PAD_LEFT);
	
print "$str_client"; ?><?php echo $row_code_client['magazin'] . '<br />'; 
$client++ ; ?>

</td>
  </tr>
</table>
<?php } while($client<$row_code_client['nb_client']); ?>
Actuelement ca s'affiche en continue a la vertical
Merci de votre aide

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 mars 2012, 08:10

Salut,

Tu affiches une table par élément c'est donc normal.
Sort les <table> </table> de la boucle.

Ensuite il faut organiser une césure.
Pour cela il te faut conserver le nombre d'interation de la boucle, qui au final correspond à $client.
Le changement de ligne ce détermine à l'aide de l'opérateur modulo (%), qui correspond au reste d'une division euclidienne.
Lorsque lorsque le modulo de client par le nombre d'élément sur une ligne es égale à série on change de ligne.
Dans ton cas :
- avant le do echo '<table><thead></thead><tbody><tr>';
- Au début de la boucle
If($client!=0 && (($client%3)==0)){
echo '</tr><tr>';
// ton traitement
// l'affichage de l'info devient simplement
echo '<td>',$truc,'</td>';

Après le while il faut penser à fermer correctement les balises (donc une boucle pour ajouter les td qui manquent) ensuite une fermeture de ligne de corps de table et de table correcte.

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 31 Messages

21 mars 2012, 01:00

Bonjour,

tout d'abord merci pour la reponse que j'ai essayer de la mettre en ouvre sans y arriver.

Eléphanteau du PHP | 31 Messages

22 mars 2012, 01:05

'';
Fatal error: Maximum execution time of 30 seconds exceeded in /public_html/code_resultat4a.php on line 80

Ca fait 3 jours que je suis sur le truc et j'arrive pas a piger , je bloque.
<?php
$client = 000 ;
$row_code_client['date'] = date("dmy"); ?>
'<table><thead><tbody><tr>';

<?php

do
{
If($client!=0 && (($client%3)==0)){
$filename= ($str_client = str_pad($client, 3, "0", STR_PAD_LEFT) .".png");
QRcode::png(($row_code_client['prefix'] . $row_code_client['photographe'] . $row_code_client['date'] . $row_code_client['carte'] . ($str_client = str_pad($client, 3, "0", STR_PAD_LEFT) ) . $row_code_client['magazin'] . $row_code_client['sufix']), $filename,'S',3,1);



echo '<tr><img src="'.$filename.'" /><br></tr>';

echo $row_code_client['photographe']; ?><?php echo $row_code_client['date']; ?><?php echo $row_code_client['carte']; ?><?php $str_client = str_pad($client, 3, "0", STR_PAD_LEFT);

print "$str_client"; ?><?php echo $row_code_client['magazin'] . '<br /><p><br><br>';

$client++ ;
}
}

while($client<$row_code_client['nb_client']);
?>
</tr></tbody></table>
</html>
<?php
mysql_free_result($code_client);
?>

Eléphanteau du PHP | 31 Messages

23 mars 2012, 01:44

Bon 5 jours que je suis la dessu et j'y comprend rien.

j'arrive a avoir un affichage horizontal mais pas sur 3 colonne comme voulu.

http://www.triphoto.fr/code_resultat4a.php

code:
<?php
$client = 000 ; 
$row_code_client['date'] = date("dmy"); ?>

'<table><thead></thead><tbody><tr>';

<?php
 do { 

$filename= ($str_client = str_pad($client, 3, "0", STR_PAD_LEFT) .".png");
QRcode::png(($row_code_client['prefix'] . $row_code_client['photographe'] . $row_code_client['date'] . $row_code_client['carte'] . ($str_client = str_pad($client, 3, "0", STR_PAD_LEFT) ) . $row_code_client['magazin'] . $row_code_client['sufix']), $filename,'S',3,1);



echo '<td><img src="'.$filename.'" /><br>';	

 echo $row_code_client['photographe']; ?><?php echo $row_code_client['date']; ?><?php echo $row_code_client['carte']; ?><?php $str_client = str_pad($client, 3, "0", STR_PAD_LEFT);
	
print "$str_client"; ?><?php echo $row_code_client['magazin'] . '<br /></td>'; 

$client++ ; ?>
<?php
If($client!=0 && (($client%3)==0)){
}
?>
<?php }


while($client<$row_code_client['nb_client']); 



?></h6>
</table></tbody></tr>

</body>
</html>
<?php
mysql_free_result($code_client);
?>
Franchement je m'en sort pas , vraiment besion d'aide SVP

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

24 mars 2012, 14:59

1/ ton code n'est pas valide coté html cela ne peux peux donc pas fonctionner
2/ vire les <?php ?> en masse qui ne servent à rien
3/ tu ne doit pas avoir de </table> dans la boucle
4/ le code fournit ne peux pas générer l'exemple indiquer O_o
5/ tu ne ferme jamais les lignes

le code devrait ressembler à cela
<table>
	<thead></thead>
	<tbody>
		<tr>
			
		<?php
		$client = 0 ;
		$row_code_client['date'] = date("dmy");

		while($client < $row_code_client['nb_client']) {
			if($client!=0 && (($client%3)==0)){
				echo '</tr><tr>';
			}
			$filename= ($str_client = str_pad($client, 3, "0", STR_PAD_LEFT) .".png");
			QRcode::png(($row_code_client['prefix'] . $row_code_client['photographe'] . $row_code_client['date'] .
			 $row_code_client['carte'] . ($str_client = str_pad($client, 3, "0", STR_PAD_LEFT) ) . 
			$row_code_client['magazin'] . $row_code_client['sufix']), $filename,'S',3,1);
			
			echo '<td><img src="'.$filename.'" /><br>';

			echo $row_code_client['photographe'];
			echo $row_code_client['date'];
			echo $row_code_client['carte'];
			$str_client = str_pad($client, 3, "0", STR_PAD_LEFT);

			print $str_client;
			echo $row_code_client['magazin'] . '<br /></td>';

			$client++ ;
		}
		?>
		</tr>
	</tbody>
</table>
</body>
</html>

<?php
mysql_free_result($code_client);
?>
@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 31 Messages

24 mars 2012, 16:26

Bonjour,


Merci ca fonctionne , c'est une bonne occasion pour moi de voir ou je fait des erreurs.

je vais étudier ca pour que ce ne soit pas simplement un truc qui marche , mais aussi comprend comment ca marche.

Merci beaucoup de votre aide.