[PHP] Tableau dynamique paramétrable

Résolu
GreggBazin Messages postés 7 Statut Membre -  
 Alain42 -
Bonjour à tous,

je débute dans le PHP et j'ai un problème qui pour vous ne doit pas être bien hallucinant donc après avoir fait plusieurs recherches je me lance :-)

Je voudrais pouvoir créer dynamiquement un tableau où l'administrateur décide du nombre de colonne et de lignes, puis entre lui même les titres des colonnes et des lignes, puis ensuite le contenu des cases.
Par exemple, imaginez un tableau de prix avec les dates en titre de colonnes, les options en titre de lignes et les prix dnas chaque case...

Ma solution serait de faire 3 pages.
1. on demande le nombre de colonnes et de lignes;
2. on crée un tableau avec les paramètres demandés, grâce à une boucle for() contenant dans chaque case une case de texte à remplir, puis un bouton 'Envoyer' pour valider le contenu et la forme du tableau;
3. on traite les infos données par le formulaire du 2. et on génère le tableau demandée toujours grâce à for().

Or je bloque à l'étape 2 avec la boucle for() et l'imbriquage des TR et TD...

J'ai un peu honte car je pensais plus en galérer vers l'étape 3 ;-)

Merci d'avance pour votre aide.

Gregg

PS : J'ai biensur essayer d'éplucher au max les "Discussions Similaires" ;-)

5 réponses

  1. PhP Messages postés 1774 Statut Membre 606
     
    Bjr

    Voici un exemple de code PHP qui génère un tableau de taille paramètrable :

    <html>
    <body>
    <?php
    
    function generer_tableau($col,$lig)
    {
    	$cr = "\n";
    	// Initialise un nouveau tableau avec le code HTML requis : balise <table>
    	$tableau = '<table border="1">'.$cr;
    	for ($l = 0; $l < $lig ; $l++)
    	{
    		// Initialise une nouvelle ligne avec le code HTML requis : balise <tr>
    		$ligne = '<tr>';
    		for ($c = 0; $c < $col ; $c++)
    		{
    			// Ajoute la colonne dans la ligne avec le code HTML requis : balise <td> .... </td>
    			$ligne .= '<td>Lig '.$l.'-Col '.$c.'</td>';
    		}
    		// Ferme la ligne avec le code HTML requis : balise </tr>
    		$ligne .= '</tr>'.$cr;
    
    		// Ajoute la ligne au tableau
    		$tableau .= $ligne;		
    	}
    	// Ferme le tableau avec le code HTML requis : balise </table>
    	$tableau .= '</table>'.$cr;
    	
    	return $tableau;	
    }
    
    // Récuperer le code HTML du tableau dans une variable
    $tableau = generer_tableau(10,20);
    
    // Afficher ce tableau ce qui l'ajoute à la page
    echo $tableau;
    
    ?>
    </body>
    </html>

    Je pense avoir mis suffisamment d'explications.

    Le fonction generer_tableau() attend en paramètres le nombre de colonnes et le nombre de lignes
    Elle retourne une chaîne contenant le code HTML nécessaire au tableau.

    Nota :

    Ecrire
    
      $ligne .= '</tr>'.$cr;   (attention au point devant le signe égal )
    
    
    Revient au même que 
    
      $ligne = $ligne.'</tr>'.$cr;     (plus de point devant = !!!) 


    $cr : permet d'ajouter des sauts de lignes dans le code pour le rendre plus propre lorsque tu visualises le code source de la page : il ne sert pas au code HTML proprement dit.

    4
  2. GreggBazin Messages postés 7 Statut Membre 1
     
    Excellent !!!!!!!!!!! Merci à toi, j'hallucine comme ça paraît simple quand on a le code sous les yeux ;-))

    Et promis je persévère pour pouvoir coder très prochainement tout seul ;-)

    Bonne continuation et merci encore !
    0
  3. Gregg
     
    Re-bonjour, I'm back ;-)

    Voilà en fait concernant ce tableau je voudrais savoir comment passer un paramètre PHP dans la ligne suivante :
    $ligne .= '<td>Lig '.$l.'-Col '.$c.'</td>';

    Car dans ma table j'ai les infos Lig1-Col1, Lig1-Col2, Lig2-Col1, etc... et donc je voudrais pouvoir faire un truc de ce genre :
    <?php
    // Affichage des articles
    $retour = mysql_query('SELECT * FROM bali_hotels1 ORDER BY id');
    while ($donnees = mysql_fetch_array($retour))
    {
    ?>
    ...
    <?php
    ...
    $ligne .= '<td>$donnees['Lig '.$l.'-Col '.$c.'']</td>';
    ...
    ?>

    Mais ça n'a pas trop l'air de marcher.... Message : Parse Error

    Merci pour votre aide !
    0
  4. estebanino Messages postés 1 Statut Membre
     
    bonjour tout le monde!!

    jai un soucis et je suis en speed dans mon stage j'ai besoin de vous
    ca fait 2 jours entiers que j'apprend vba et je m'heurte a un peti soucis....

    il faut créer un tableau dynamique qui puisse s'actualiser en fonction des sources que j'ai dans mon classeur
    en fait jai créer une saisie pour lutilisateur qui choisit alors les fichiers a étudiés

    et jaimerais que mon tableau s'actualise si je change les sources et il me lache dès que j'essaye....

    merci d'avance car je sais ke pour vous c un jeu denfant.....

    merci a tous
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Alain42
     
    dans ma table j'ai les infos Lig1-Col1, Lig1-Col2, Lig2-Col1, etc...

    Cela veut dire que Lig1-Col1 etc sont les noms des champs de ta table ou les infos contenues dans ta table.

    Si nom des champs, essaye

    $champ={"Lig".$l."Col".$c};

    $ligne .= '<td>$donnees[$champ]</td>';

    Mais comment incrémentes tu tes varaibles $l et $c ?
    0