[RESOLU] Boucle Tableau

Eléphant du PHP | 178 Messages

01 avr. 2019, 22:39

Bonsoir,

Je cherche a réaliser un tableau de ce type :

Image

Une ligne avec des données que je peux ajouter a volonté, ce qui créera automatique une colonne.
et
Une colonne avec des données que je peux ajouter aussi à volonté...
Dans le tableau, dans chaque cellule, une case à cocher....

J'ai fait plein de test différents, mais je n'arrive pas a trouver de solution.

Merci de m'aider.
Cordialement.

Mammouth du PHP | 1967 Messages

02 avr. 2019, 07:57

montre nous ton code le plus prométteur nous t'aiguillerons.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphant du PHP | 178 Messages

02 avr. 2019, 13:42

Bonjour Spols :
Le voici : (En lien avec un tuto fourni sur le site !)
$req=$connexion->query("SELECT * FROM repas ORDER BY repas_id ASC"); 
$req->setFetchMode(PDO::FETCH_OBJ);
$totalrepas = $req->rowCount();

      
            
$nbCols = $totalrepas; 
$cpt = 0;
?>

<table border="1"> 
  <tr>
    <?php
    while ($rep=$req->fetch())
    {  
    ?>
    <th style="width:<?php echo round(100/$nbCols);?>%;"><?php echo $rep->repas_intitule; ?></th>
    <?php
    }
    ?>
  </tr>
<?php
    

    
    
$resultats=$connexion->query("SELECT * FROM invites ORDER BY inv_id ASC"); 
$resultats->setFetchMode(PDO::FETCH_OBJ);
$total = $resultats->rowCount();

               


while ($row=$resultats->fetch()) { // parcours des résultats 

    // début d'une ligne 
    if ($cpt%$nbCols==0) // on divise le nb d'élément par le nb de colonnes. Si le reste est de 0 ... 
        echo '<tr>'; // ..., alors on est sur le premier élément d'une ligne 


    // On place chaque élément dans une cellule du tableau 
    echo '<td>';
    if($cpt%$nbCols == 0)
    {
        $aff = 'Nom';
    }
    else
    {
        $aff =   $cpt;
    }
    echo $aff; // affichage de tout ce qu'on veut dans la cellule 
    echo '</td>'; 


    // fin d'une ligne
    if ($cpt%$nbCols==($nbCols-1)) // on divise le nb d'élément par le nb de colonnes. Si le reste est de ($nbCols-1) ... 
        echo '</tr>'; // ..., on est sur le dernier élément d'une ligne

    $cpt++; // on incrémente le compteur pour savoir où on en est
} 

// Au cas où ...
if ($cpt!=0 && $cpt%$nbCols!=0) { // S'il n'y a pas eu assez de cellules dans la boucle pour finir la ligne ...
    echo '<td colspan="'.($nbCols - ($cpt%$nbCols) ).'">&nbsp;</td>'; // ... on complète avec une cellule vide de la bonne taille...
    echo '</tr>'; // ... et on ferme la ligne
}

Voilà, merci de ton aide !

Eléphant du PHP | 178 Messages

02 avr. 2019, 14:24

J'ai trouvé la solution !

$req=$connexion->query("SELECT * FROM repas ORDER BY repas_id ASC"); 
$req->setFetchMode(PDO::FETCH_OBJ);
$totalrepas = $req->rowCount()+1;

        
$nbCols = $totalrepas; 

?>

<table border="1"> 
  <tr>
    <th style="width:<?php echo round(100/$nbCols);?>%;">Tableau</th>
    <?php
    while ($rep=$req->fetch())
    {  
    ?>
    <th style="width:<?php echo round(100/$nbCols);?>%;"><?php echo $rep->repas_intitule; ?></th>
    <?php
    }
    ?>
  </tr>
<?php
    

    
    
$resultats=$connexion->query("SELECT * FROM invites ORDER BY inv_id ASC"); 
$resultats->setFetchMode(PDO::FETCH_OBJ);
$total = $resultats->rowCount();

               
$cases = $totalrepas*$total;
   

while ($row=$resultats->fetch()) { // parcours des résultats 

    // début d'une ligne 
    if ($cases%$nbCols==0) // on divise le nb d'élément par le nb de colonnes. Si le reste est de 0 ... 
        echo '<tr>'; // ..., alors on est sur le premier élément d'une ligne 


    // On place chaque élément dans une cellule du tableau 
    for ($x=0;$x<$nbCols;$x++)
    {
    echo '<td>';
        
        if ($x%$nbCols == 0)
        {
            echo $x.'-'.$row->inv_nom;
        }
        else
        {
            echo   $row->inv_id.'|'.$x;
        }
        // $aff; // affichage de tout ce qu'on veut dans la cellule 
    echo '</td>'; 
    }

    // fin d'une ligne
    if ($cases%$nbCols==($nbCols-1)) // on divise le nb d'élément par le nb de colonnes. Si le reste est de ($nbCols-1) ... 
        echo '</tr>'; // ..., on est sur le dernier élément d'une ligne

   // on incrémente le compteur pour savoir où on en est
} 

// Au cas où ...
if ($cases!=0 && $cases%$nbCols!=0) { // S'il n'y a pas eu assez de cellules dans la boucle pour finir la ligne ...
    echo '<td colspan="'.($nbCols - ($cases%$nbCols) ).'">Test&nbsp;</td>'; // ... on complète avec une cellule vide de la bonne taille...
    echo '</tr>'; // ... et on ferme la ligne
    
}
Merci !
Bonne continuation !