Prob de tableau dynamique

Répondre
allserv
le 16/06/2004 à 13:23
allserv
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
allserv
le 16/06/2004 à 13:31
allserv
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 ?
Layer
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
zebden
le 16/06/2004 à 18:30
zebden
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
allserv
le 17/06/2004 à 09:29
allserv
Oui mais l'action doit se situer a droite du if non pas en dessous ?
allserv
le 26/06/2004 à 12:36
allserv
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
moogli
le 26/06/2004 à 13:03
moogli
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 smiley @+
Il en faut peu pour être heureux !!!!!
allserv
le 26/06/2004 à 13:45
allserv
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>" ;
?>
Répondre
LoadingChargement en cours