[Résolu] Tableau dynamique

Tableau dynamique [Résolu] - PHP - Programmation

Marsh Posté le 08-10-2007 à 12:38:13    

Bonjour,  
j'ai petit soucis avec la construction d'un tableau dynamique.
Jusque là j'arrive à créer mon tab avec une boucle while, mais ce que je veux faire c'est:
 -fusionner la première cellule de la lignes, bon j'ai du mal à expliquer mon prob:
 
[Ligne1][Ligne 1.1][][][][]
[Ligne1][Ligne 1.2][][][][]
--------------------------------------
[Ligne2][Ligne 2.1][][][][]
[Ligne2][Ligne 2.2][][][][]
 
donc fusionner la première cellule.


Message édité par sabbahh le 28-04-2008 à 12:10:20
Reply

Marsh Posté le 08-10-2007 à 12:38:13   

Reply

Marsh Posté le 08-10-2007 à 12:43:24    

tu as un tableau qui a plusieurs fois le meme index ?  
 
genre $tab['ligne1'] est sensé aparaitre deux fois, une fois avec [Ligne 1.1][][][][]   et une fois avec [Ligne 1.2][][][][] ?
 
parce que la , je crois quil y a un pb

Reply

Marsh Posté le 08-10-2007 à 12:47:22    

oui le même index, exemple:
[produit1][arrivage le lundi][quantité1]..
[produit1][arrivage le mardi][quantité2].. <-- il s'agit du même produit
[produit2][arrivage le lundi][quantité1]..
[produit2][arrivage le mardi][quantité2]..

Reply

Marsh Posté le 08-10-2007 à 12:48:16    

ce que je veux faire:
[produit1 [arrivage le lundi][quantité1]..
           ] [arrivage le mardi][quantité2]..
 
et j'ai du mal avec les <tr> <td>.. alors que en statique c faisable


Message édité par sabbahh le 08-10-2007 à 12:49:13
Reply

Marsh Posté le 08-10-2007 à 13:50:51    

Suffit d'inbriquer des foreach non?

Reply

Marsh Posté le 08-10-2007 à 14:00:57    

En fait, j'ai utilisé 2 while (la 1ére pour chaque produit, et la 2éme pour l'arrivage, quatité..)
Mais ce qui arrive :
[produit1] [arrivage le lundi][quantité1]..  
[arrivage le mardi][quantité2].. <- ça me décale ma ligne d'une cellule
[produit2] [arrivage le lundi][quantité2]..  
[arrivage le mardi][quantité2]..  

Reply

Marsh Posté le 08-10-2007 à 15:04:41    

Sert toi de ca :  

Code :
  1. <?php
  2. $array_produits = array('produit1'=>array( 'arrivage lundi '=> 'quantite lundi',
  3.           'arrivage mardi '=> 'quantite mardi'),
  4.      'produit2'=>array( 'arrivage2 lundi '=> 'quantite2 lundi',
  5.           'arrivage2 mardi '=> 'quantite2 mardi'
  6.            )
  7.    );
  8. echo "Avant affichage :<br>" ;
  9. echo "<pre>";print_r($array_produits);echo "</pre>";
  10. echo "Après affichage :<br>" ;
  11. echo '<table cellpadding="0" cellspacing="10">';
  12. foreach ($array_produits as $num_produit => $produit)
  13. {
  14. foreach ($produit as $arivage => $quantite)
  15. {
  16.  echo '<tr><td>'.$num_produit.'</td><td>'.$arivage.'</td><td>'.$quantite.'</td><td></tr>';
  17. }
  18. }
  19. echo "</table>";
  20. ?>


 


Avant affichage :
 
Array
(
    [produit1] => Array
        (
            [arrivage lundi ] => quantite lundi
            [arrivage mardi ] => quantite mardi
        )
 
    [produit2] => Array
        (
            [arrivage2 lundi ] => quantite2 lundi
            [arrivage2 mardi ] => quantite2 mardi
        )
 
)
Ca donne :  
 
Après affichage :
produit1 arrivage lundi  quantite lundi  
produit1 arrivage mardi  quantite mardi  
produit2 arrivage2 lundi  quantite2 lundi  
produit2 arrivage2 mardi  quantite2 mardi


C'est fait à la va vite, très bourrin , je mélange jamais le php et l'html comme ça mais bon... tu comprendras surement d'ou vient ton erreur


Message édité par Alisteroid le 08-10-2007 à 15:05:48
Reply

Marsh Posté le 08-10-2007 à 15:10:11    

Bref ton probleme vient surement du fait qu'au lieu de faire  
 
 

Code :
  1. foreach ($array_produits as $num_produit => $produit)
  2. {
  3.     foreach ($produit as $arivage => $quantite)
  4.     {
  5.         echo '<tr><td>'.$num_produit.'</td><td>'.$arivage.'</td><td>'.$quantite.'</td></tr>';
  6.     }
  7. }


Tu faisais

Code :
  1. foreach ($array_produits as $num_produit => $produit)
  2. {
  3.  echo '<tr><td rowspan="'.count($produit).'">'.$num_produit.'</td>';
  4. foreach ($produit as $arivage => $quantite)
  5.      {
  6.          echo '<td>'.$arivage.'</td><td>'.$quantite.'</td></tr>';
  7.      }
  8. echo '</tr>';
  9. }


Message édité par Alisteroid le 08-10-2007 à 15:17:34
Reply

Marsh Posté le 08-10-2007 à 15:10:35    

ça j'arrive à le faire. ce que je veux c'est de ne pas réecrire "produit1".
            arrivage lundi  quantite lundi  
produit1 arrivage lundi  quantite lundi  
            arrivage mardi  quantite mardi  
---------------------------------------
            arrivage2 lundi  quantite2 lundi  
produit2 arrivage2 mardi  quantite2 mardi
            arrivage2 lundi  quantite2 lundi  
 
Fusionner la première cellule avec les 3 lignes:(


Message édité par sabbahh le 08-10-2007 à 15:11:55
Reply

Marsh Posté le 08-10-2007 à 15:11:21    

Tu veux l'écrire qu'une fois?Si c'est la cas, le deuxieme bloc de code ci dessus, n'écris qu'une fois le produit!suffit de mettre un rowspan=<?=count($produit)?> sur ta premier colonne ou tu auras écris produit dessus

Message cité 1 fois
Message édité par Alisteroid le 08-10-2007 à 15:13:44
Reply

Marsh Posté le 08-10-2007 à 15:11:21   

Reply

Marsh Posté le 08-10-2007 à 15:13:47    

Comme ça:
-------------------------------------------
           | arrivage lundi | quantite lundi  
           |----------------------------------  
produit1| arrivage lundi | quantite lundi    
           |----------------------------------
           | arrivage mardi| quantite mardi  
--------------------------------------------

Reply

Marsh Posté le 08-10-2007 à 15:17:50    

Code :
  1. foreach ($array_produits as $num_produit => $produit)
  2. {
  3.  echo '<tr><td rowspan="'.count($produit).'">'.$num_produit.'</td>';
  4. foreach ($produit as $arivage => $quantite)
  5.      {
  6.          echo '<td>'.$arivage.'</td><td>'.$quantite.'</td></tr>';
  7.      }
  8. echo '</tr>';
  9. }

Reply

Marsh Posté le 08-10-2007 à 15:20:22    

Alisteroid a écrit :

Tu veux l'écrire qu'une fois?Si c'est la cas, le deuxieme bloc de code ci dessus, n'écris qu'une fois le produit!suffit de mettre un rowspan=<?=count($produit)?> sur ta premier colonne ou tu auras écris produit dessus


Genre çà?
 
row     "c'est pour les noms produit"
rowlog "c'est pour les 'carractéristiques' produit"

Code :
  1. while(($rowlog = mysql_fetch_array($rez))) { ?>
  2. <th rowspan=<?=count($rowlog[3])?> ><?php echo utf8_encode($row[0]);echo'<br>';echo utf8_encode($row[1]); ?></th>

Reply

Marsh Posté le 08-10-2007 à 15:26:41    

Un truc quand tu programmes:

 

Tu fais tes requetes, tu récupères tes résultats sous tableaux et varaibles php, tu fais tes calculs & vérfication & co et tout à la fin dans un autre fichier  tu gères uniquement l'affichage(tu fais un include en prenant le même nom de fichier mais en le terminant par '.inc' , que tu place dans un dossier "include" c'est mieux, tu sauras que tout ton affichage de tout ton site est dans ce dossier).

 

Donc la quand tu fais ton while, remplit d'abord convenablement un tableau php et affiche le au fur et à mesure si tu as du mal (echo "<pre>";print_r($mon_tableau);echo "</pre>";), tu peux ainsi commencer par afficher $rowlog et voir comment il est foutu! , vas y petit à petit. Mais vouloir faire de l'affichage directement à partir du résultat de ta requete c'est vraiment mal, c'est moche, dur à modifier, peu lisible!

 


Message cité 2 fois
Message édité par Alisteroid le 08-10-2007 à 15:28:51
Reply

Marsh Posté le 08-10-2007 à 15:27:09    

Bon je te remercie, j'ai fais un petit test avec rowspan="3" et ça marche, donc il faut juste que je récupère le nombre exacte.
Merci bcp

Reply

Marsh Posté le 08-10-2007 à 15:29:07    

Alisteroid a écrit :

Un truc quand tu programmes:
 
Tu fais tes requetes, tu récupères tes résultats sous tableaux et varaibles php, tu fais tes calculs & vérfication & co et tout à la fin dans un autre fichier  tu gères uniquement l'affichage(tu fais un include en prenant le même nom de fichier mais en le terminant par '.inc' , que tu place dans un dossier "include" c'est mieux, tu sauras que tout ton affichage de tout ton site est dans ce dossier).
 
Donc la quand tu fais ton while, remplit d'abord convenablement un tableau php et affiche le au fur et à mesure si tu as du mal , vas y petit à petit. Mais vouloir faire de l'affichage directement à partir du résultat de ta requete c'est vraiment mal, c'est moche, dur à modifier, peu lisible!


 
Merci pour le conseil, j'avoue que c'est pas facile à modifier et peu lisible. j'essayerai!

Reply

Marsh Posté le 08-10-2007 à 15:29:37    

Prends ma remarque si dessus en considération et tu te simplifieras la vie ;)
 

Reply

Marsh Posté le 08-10-2007 à 15:32:59    

Alisteroid a écrit :

Prends ma remarque si dessus en considération et tu te simplifieras la vie ;)
 


 
Promis, mais ça serait pas pour toute suite, je n'ai vraiment pas le temps. mais je veux bien m'améliorer et faire les choses proprement donc ça serait la première chose à faire!

Reply

Marsh Posté le 08-10-2007 à 15:46:29    

Alisteroid a écrit :

Un truc quand tu programmes:
 
Tu fais tes requetes, tu récupères tes résultats sous tableaux et varaibles php, tu fais tes calculs & vérfication & co et tout à la fin dans un autre fichier  tu gères uniquement l'affichage(tu fais un include en prenant le même nom de fichier mais en le terminant par '.inc' , que tu place dans un dossier "include" c'est mieux, tu sauras que tout ton affichage de tout ton site est dans ce dossier).


Un gros bémol : il ne faut jamais donner .inc .res ... comme extension à des fichiers contenant du code à moins que t'es envie que des inconnus n'aient accès au code de tes fichiers (ils sont envoyés comme de simples fichiers texte si on les ouvre directement depuis un navigateur) Si tu veux utiliser ce genre d'extension alors il faut toujours rajouter l'extension .php (ou .jsp ou ... en fonction du langage) ce qui donne .inc.php .
Ca n'est pas une règle qui permet de bien faire fonctionner le site mais une règle de sécurité pour éviter de donner des éléments aux visiteurs qui leurs permettraient de passer outre les protections du site.

Reply

Marsh Posté le 08-10-2007 à 16:57:34    

C'était sous entendu hein, j'ai bien dis nom du fichier + .inc (donc + extension) -> nom_fichier.inc.php  :D
Bref , jamais j'aurais une idée pareille ^^
Mais tu fais bien de le faire remarquer car sabbahh à surement du comprendre la même chose que toi ;)


Message édité par Alisteroid le 08-10-2007 à 16:59:22
Reply

Marsh Posté le 11-10-2007 à 14:45:18    

c'est noté. merci

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed