creer un tableau suivant une variable

Répondre
mouna
le 29/04/2005 à 14:07
mouna
Bonjour,

Je fais une boucle pour un tableau, je vois avoir 3 colonnes dans ce tableau, quand j'insere une donnee, il s'affiche dans une colonne, et quand j'atteinds une 4eme donnee, je dois avoir une 2eme ligne en premiere colonne.
j ai fait ca:

<?
// settings
include ("config.php");

$connection = mysql_connect("$host", "$user", "$pass") or die(mysql_error());
$db = mysql_select_db($db_name, $connection) or die(mysql_error());
$sql = mysql_query ("select * from $table_name_gbook order by id DESC") or die ("erreur req ".mysql_error());
//le <select> et </select> doit être créé hors de la boucle while, sinon tu en crées un par option.
?>
<table border="1" width="75%"><tr><td>
<?
$i = 0;
while( $sortie = mysql_fetch_array($sql))
{
$Cat = $sortie['Cat'];
if ($i = 3){
?>
<tr><td>
<? echo "$Cat"; ?>
</td></tr>
<?
$i++;
}//fin de boucle
}
?>
</table>
<?
//after verifying everything, must be inserted then redirected :)
mysql_close ();
?>
moogli
le 29/04/2005 à 14:20
moogli
Salut,

et c'est quoi le problème ?

essai comme sa
<table border="1" width="75%"><tr>
<?php
$i = 0;
while( $sortie = mysql_fetch_array($sql))
{
if ( ($i%3 )==0 && $i!=0){
?>
</tr><tr>
<?php
}
echo '<td>',$sortie['Cat'],'</td>';
$i++;
}//fin de boucle
?>
</table>


smiley
Il en faut peu pour être heureux !!!!!
mouna
le 29/04/2005 à 14:27
mouna
j etais un peu prete :D
<table border="1" width="75%"><tr><td>
<?
$i = 0;
while( $sortie = mysql_fetch_array($sql))
{
$Cat = $sortie['Cat'];
if ($i%3 == 0){
?>
<? echo "$Cat"; ?></td></tr>
<tr><td>
<?
$i++;
}//fin de boucle
}
?>
</td></tr></table>
<?
//after verifying everything, must be inserted then redirected :)
mysql_close ();
?>
mouna
le 29/04/2005 à 14:32
mouna
ce que j arrive pas a comprendre c'est ce modulo:

if ( ($i%3 )==0 && $i!=0){

%%%%%
zebden
le 29/04/2005 à 14:42
zebden
modulo c'est le reste d'une division, donc forcement

exemple simple.
3 / 3 = 1 et Le reste = 0 , 9 / 3 = 2 et Le reste = 0

4 / 3 = 1 et Le reste = 1 , 17 / 3 = 5 et Le reste = 2

Si modulo n'est pas egale a 0, alors le resultat sera forcement un nombre à virgule , une fois l'entier trouvée tu rajoute un 0 au modulo et continue à diviser, pour trouver le resultat juste (cours de 6eme) ^^

4/3 = 1,333333333 et 17/3 = 5,66666666 ... bon voila.

Tu vois le principe ?
zebdinou pour les intimes / Blog : http://www.zebden.fr
mouna
le 29/04/2005 à 14:52
mouna
if ( ($i%3 )==0 && $i!=0){
si j ai bien compris:

on divise le i par 3 mais ce ==0 j ai pas saisi et le i!=0 doit etre different de 0 pour k on puisse diviser
zebden
le 29/04/2005 à 15:10
zebden
parce 0%3 donnera 0 .

Commence ton compteur par 1 plutot que 0 ($i = 1)

ce qui donne grossierement :

1 . 2 . 3 (3%0 == 0 donc on va a la ligne)
4 . 5 . 6
7 . 8
zebdinou pour les intimes / Blog : http://www.zebden.fr
mouna
le 29/04/2005 à 15:15
mouna
$i = 1
1.2
3.4.5
6.8.9
....

ce que j arrive pas a comprendre c'est:
==0
== veut dire egal
$x==$y => faux
$x==$x => vrai
zebden
le 29/04/2005 à 15:19
zebden
<table border="1" width="75%"><tr><td>
<?
$i = 0;
while( $sortie = mysql_fetch_array($sql))
{
$Cat = $sortie['Cat'];
if ($i%3 == 0) { echo '<tr>'; }
?>
<td><? echo "$Cat"; ?></td>
<?
if($i%3 == 2) { echo '</tr>'; }
$i++;
}//fin de boucle

?>
</table>
<?
//after verifying everything, must be inserted then redirected :)
mysql_close ();
?>


Voila deja pour un code qui marche.

Ensuite l'operateur double egale est donc pour comparer deux valeur pas forcement du meme type (la voir le triple egale) , un seul egale c'est pour attribuer une valeur et non pour comparer.
zebdinou pour les intimes / Blog : http://www.zebden.fr
Répondre
LoadingChargement en cours