Page 1 sur 1

Tableau dans une boucle

Posté : 14 juin 2006, 21:08
par mazflo007
Bonjour je voudrais mettre un tableau dans une boucle.
Je veut a chaque nouvelle donnée = une colonne mais le probleme c'est qu'au bout de 6 collones j'aimerais qu'il est une nouvelle ligne
Comment faire
Merci

Posté : 14 juin 2006, 23:03
par jpaul
Tien ce petit bout de code peut probablement t'aider (ca utilise modulo)
indice +1 (car on part de 0) donc
si (indice+1) % 6 est égal à 0 on fait une nouvelle ligne...
$tabl=array("truc","machin","chose","bidule","schmoldu","zinzin","bignou","bazard",1,2,3,4,5,6,7,8,9);
echo "<pre>";
print_r($tabl);
echo "</pre>";
echo "<TABLE BORDER=1>";
echo "<TR>";
for ($i=0; $i<count($tabl); $i++) {
	echo "<TD>".$tabl[$i]."</TD>";
	if (($i+1) % 6 == 0) {
		// nouvelle ligne
		echo "</TR><TR>";
	}
}
while (($i) % 6 != 0) {
	// on termine le tableau
	echo "<TD>-</TD>";
	$i++;
}
echo "</TR>";
echo "</TABLE>";

Posté : 15 juin 2006, 07:50
par mazflo007
qu 'est ce que je dois remplacer par mes valeurs :?:

Re: Tableau dans une boucle

Posté : 15 juin 2006, 09:31
par jpaul
Bonjour je voudrais mettre un tableau dans une boucle.
Je veut a chaque nouvelle donnée = une colonne mais le probleme c'est qu'au bout de 6 collones j'aimerais qu'il est une nouvelle ligne
Comment faire
Merci
J'ai compris que tu voulais afficher un tableau php dans un tableau html mais ce n'est peut être pas le cas...
D'où viennent les données ?

Posté : 15 juin 2006, 09:50
par mazflo007
Voici ma requete que j'avais commencer
<?php
function displayNextPreviousButtons($limite,$total,$nb,$page) {
$limiteSuivante = $limite + $nb;
$limitePrecedente = $limite - $nb;
echo  '<table align="center"><tr align="center">'."\n";
if($limite != 0) {
        echo  '<td valign="top" >'."\n";
        echo  '<form action="'.$page.'" method="post">'."\n";
        echo  '<input type="submit" value="Précédents">'."\n";
        echo  '<input type="hidden" value="'.$limitePrecedente.'" name="limite">'."\n";
        echo  '</form>'."\n";
        echo  '</td>'."\n";
}
if($limiteSuivante < $total) {
        echo  '<td valign="top">'."\n";
        echo  '<form action="'.$page.'" method="post">'."\n";
        echo  '<input type="submit" value="Suivants">'."\n";
        echo  '<input type="hidden" value="'.$limiteSuivante.'" name="limite">'."\n";
        echo  '</form>'."\n";
        echo  '</td>'."\n";
            
}
echo  '</tr></table>'."\n";
}
function affichePages($nb,$page,$total) {
        $nbpages=ceil($total/$nb);
        $numeroPages = 1;
        $compteurPages = 1;
        $limite  = 0;
        echo '<table border = "0" align="center"><tr>'."\n";
        while($numeroPages <= $nbpages) {
        echo '<td align="center"><a href = "'.$page.'?limite='.$limite.'">'.$numeroPages.'</a></td>'."\n";
        $limite = $limite + $nb;
        $numeroPages = $numeroPages + 1;
        $compteurPages = $compteurPages + 1;
            if($compteurPages == 10) {
            $compteurPages = 1;
            echo '<br>'."\n";
            }
        }
        echo '</tr></table>'."\n";
}
?>
<? $nombre = 5;  

// si limite n'existe pas on l'initialise à zéro

if (!$limite) $limite = 0; 

// on cherche le nom de la page.    

$path_parts = pathinfo($_SERVER['PHP_SELF']);

$page = $path_parts["basename"];



//=========================================    

// connection à la DB

//=========================================

$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );

mysql_select_db($db) or die ('Erreur :'.mysql_error());



//=========================================    

// requête SQL qui compte le nombre total 

// d'enregistrements dans la table.

//=========================================

$select = 'SELECT count(id) FROM jeux WHERE categorie="action" ';

$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );

$row = mysql_fetch_row($result);

$total = $row[0];

    

//=========================================

// vérifier la validité de notre variable 

// $limite;

//=========================================

$verifLimite= verifLimite($limite,$total,$nombre);

// si la limite passée n'est pas valide on la remet à zéro

if(!$verifLimite)  {

    $limite = 0;

}

//=========================================

// requête SQL qui ne prend que le nombre 

// d'enregistrement necessaire à l'affichage.

//=========================================

$select = 'SELECT * FROM jeux  WHERE categorie="action" ORDER BY id ASC limit '.$limite.','.$nombre;

$result = mysql_query($select,$link)  or die(mysql_error());

    

//=========================================    

// si on a récupéré un resultat on l'affiche.
                                
//=========================================

if($total) {

    echo '<div style="text-align: center"><table  width=100% class="tableaujeux"><tr>'."\n";
    for($row = 0; $row == mysql_fetch_array($result); $row++) 
    { 
        if ($row > 0 && $row% 6 == 0)
                 echo "</tr>\n<tr>\n";
        echo "\t".'<td><a href="http://karement.be/jeux/page.php?id='. $row['id'].'&categorie='. $row['categorie'].'&noter=non>'. $row['nom'].'</a>'.
            '<a href="http://karement.be/jeux/page.php?id='. $row['id'].'&categorie='. $row['categorie'].'&noter=non">'.
            '<img src=http://karement.be/jeux/'. $row['categorie'].'/images/'. $row['id'].'.gif widht="100" height="100"></td>'."\n";
    }
    echo '</tr></table></div>'."\n";
}

else echo 'Pas d\'enregistrements dans cette table...';

mysql_free_result($result); 




//=========================================    

// si le nombre d'enregistrement à afficher .

// est plus grand que $nombre 

//=========================================

if($total > $nombre) {

    // affichage des liens vers les pages

    affichePages($nombre,$page,$total);

    // affichage des boutons

    displayNextPreviousButtons($limite,$total,$nombre,$page);

}

//récupération de $limite

    if(isset($_GET['limite'])) 

        $limite=$_GET['limite'];
    else   $limite=0;


function verifLimite($limite,$total,$nombre) {

    // je verifie si limite est un nombre.

    if(is_numeric($limite)) {

        
// si $limite est entre 0 et $total, $limite est ok

        // sinon $limite n'est pas valide.

        if(($limite >=0) && ($limite <= $total) && (($limite%$nombre)==0)) {

            // j'assigne 1 à $valide si $limite est entre 0 et $max

            $valide = 1;

        }    

        else {

            // sinon j'assigne 0 à $valide

            $valide = 0;

        }

    }

    else {

            // si $limite n'est pas numérique j'assigne 0 à $valide

            $valide = 0;

    }

// je renvois $valide

return $valide;

}?>
Mais cette requete affiche juste le numero des pages

Posté : 15 juin 2006, 11:27
par jpaul
Ben tu es sur la bonne voie, ton code que fait-il ?
Qu'est ce qui ne va pas ?

Tu as codé :
if ($row > 0 && $row% 6 == 0) 
Moi j'ai fait :
if (($i+1) % 6 == 0) 
essaye :
if (($row+1) % 6 == 0)

Posté : 15 juin 2006, 13:10
par mazflo007
Merci c'est bon j'ai reussi