Prob de tableau dynamique
Bonjour,
Voilà je veux recuperer une liste de pages dans ma base de données et ensuite les afficher dans un tableau avec une ligne de 3 enresigtrements :
ligne 1 : page 1 page 2 page 3
ligne 2 : page 4 page 5 page 6
ligne 3 : page 7 page 8 page 9
....
Je ne vois pas comment faire, je récupere les infos via un mysql_fetch_array().
Vous pouvez me guider ?
Merci d'avance
zebdinou pour les intimes / Blog : http://www.zebden.fr
oki merci du lien,
if($i%$nbcol==($nbcol-1))
echo '</tr>';
le % revient à diviser ? ne pas mettre de {} pour le if c'est syntaxiquement correct ?
le 16/06/2004 à 13:36
Layer
% = modulo
il te donne le reste de la division la division
il vaut mieux mettre les acolades
Error 500 : internal brain error
pour juste une action les accolades ne sont pas obligatoires au dela oui il faut les mettre
zebdinou pour les intimes / Blog : http://www.zebden.fr
Oui mais l'action doit se situer a droite du if non pas en dessous ?
C'est pareil :)
Me revoilà, j'avais un peu oublié ce prob, mais en fait je me suis servi de ton bout de code la glob, mais y a un moment ou ca bloque voici mon code :
<?
// Recuperation de toutes les pages disponibles
$sql = "SELECT * FROM ".$table_pages."";
$query = mysql_query($sql) or die("Erreur sur $sql :<br><br>".mysql_error());
while($data = mysql_fetch_array($query)){
$tab[] = $data;
}
$nbcol = 3;
for($i=0;$i<count($tab);$i++){
$id=$tab[$i]['id'];
$nom_page=$tab[$i]['nom_page'];
if($i%$nbcol==0) { echo "<tr>"; }
echo "<td class=\"listelt\"><input type=\"checkbox\" name\"check[$i]\" value=\"".$id."\"> ".$nom_page."</td>";
if($i%$nbcol==($nbcol-1)) { echo "</tr>"; }
}
?>
En fait ca m'affiche bien sur trois colonnes mais au niveau de la derniere ligne malheureusement les cellues non remplies ne sont pas de la meme couleur. Je ne sais pas comment faire pour que ces cellules soient de la meme couleur.
Il faudrait en fait soit :
- les créer avec rien dedans
- faire un colspan mais pour récupérer le nbre de cellules non remplies c'est toujours galere :(
Aidez moi
Slt,
Une idée toute bête :
Quand tu sort du for ton tableau n'est pas fermé (pa de /tr) quand tu $i!= d'un multiple de 3.
Si tu rajouteune variable metton $a dans le
if($i%$nbcol==0) { echo "<tr>"; $a=0 }
sous le echo '<td> ....'; tu rajoute $a++;
Apres le for tu ajoute :
if ($a!=2){
for ($z=0;$z<(3-$a);$z++) echo '</td>';
echo '</tr>' ;}
Je m'explique : quand tu créer une nouvelle ligne tu met $a=0 et a chaque colone tu l'incremente donc quand tu sort du for tu a le nb de colone utilisée sur la dernière ligne ($a). J'utilise $a parce que je ne sais pas si le $i 'existe' encore sortie du for :)
=>
<?
// Recuperation de toutes les pages disponibles
$sql = "SELECT * FROM ".$table_pages."";
$query = mysql_query($sql) or die("Erreur sur $sql :<br><br>".mysql_error());
while($data = mysql_fetch_array($query)){
$tab[] = $data;
}
$nbcol = 3;
for($i=0;$i<count($tab);$i++){
$id=$tab[$i]['id'];
$nom_page=$tab[$i]['nom_page'];
if($i%$nbcol==0) { echo "<tr>"; $a=0; }
echo "<td class=\"listelt\"><input type=\"checkbox\" name\"check[$i]\" value=\"".$id."\"> ".$nom_page."</td>";
if($i%$nbcol==($nbcol-1)) { echo "</tr>"; }
}
if ($a!=2){
for ($z=0;$z<(3-$a);$z++) echo '</td>';
echo '</tr>' ;
?>
Voila c'est bien bourrin mais je pense que sa marche
@+
Il en faut peu pour être heureux !!!!!
L'idée était là, merci, j'y suis arrivé en reprenant un peu ton code, il te manquait le $a++ et je comprends pas pourquoi tu as mis le if($a!=2) ?
<?
// Recuperation de toutes les pages disponibles
$sql = "SELECT * FROM ".$table_pages."";
$query = mysql_query($sql) or die("Erreur sur $sql :<br><br>".mysql_error());
while($data = mysql_fetch_array($query)){
$tab[] = $data;
}
$nbcol = 3;
for($i=0;$i<count($tab);$i++){
$id=$tab[$i]['id'];
$nom_page=$tab[$i]['nom_page'];
if($i%$nbcol==0) { echo "<tr>"; $a=0; }
echo "<td class=\"listelt\"><input type=\"checkbox\" name\"check[$i]\" value=\"".$id."\"> ".$nom_page."</td>";
$a++;
if($i%$nbcol==($nbcol-1)) { echo "</tr>"; }
}
for ($z=0;$z<(3-$a);$z++) echo "<td class=\"listelt\"></td>";
echo "</tr>" ;
?>