Convertir <TABLE> HTML en Array PHP

Messages postés
35
Date d'inscription
vendredi 4 avril 2003
Statut
Membre
Dernière intervention
22 mai 2013
- - Dernière réponse : cs_GRenard
Messages postés
1663
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
- 27 juin 2004 à 17:49
Bonjour,

je sais convertir une variable PHP simple tableau ou multi-dimention en autant de code HTML <TABLE> <TR> <TD>
... imbriqué que nécessaire.

Cependant le contraire me semble bien plus compliqué.

Je n'arrive pas à mettre dans une variable array chaque élément d'un tableau à deux dimentions de taille variable !

En poussant un peu plus, je voudrais ajouter une clée pour chaque niveau qui aurait le format du niveau (table, tr, td).

Si quelqu'un veut bien m'indiquer un source, et que je l'adapte pour gérer les colspan et rowspan, ansi que les <TABLE> imbriqués, je diffuserai ici mes "améliorations"

Je n'ai pas su dans quelle rubrique mettre ma requête.

par exemple, je sais afficher
array(
array('00','01','02','03','04','05'),
array('10','11','12','13','14','15'),
array('20','21','22','23','24','25'),
array( ...),
...)
en :
<TABLE>
<TR>
<TD>00</TD>
<TD>01</TD>
<TD>02</TD>
<TD>03</TD>
<TD>04</TD>
<TD>05</TD>
</TR>
<TR>
<TD>10</TD>
<TD>11</TD>
<TD>12</TD>
<TD>13</TD>
<TD>14</TD>
<TD>15</TD>
</TR>
<TR>
<TD>20</TD>
<TD>21</TD>
<TD>22</TD>
<TD>23</TD>
<TD>24</TD>
<TD>25</TD>
</TR>
<TR>
....
</TR>
....
<TABLE>
mais pas le contraire ! Comment faire ??
J'ai essayé avec des strpos et strsub, c'est OK sur un tableau spécifique, défini et statique que je connais à l'avance.
C'est pour mettre des boucles (et raccourcir le code) sur les <TD> et les <TR> que je patauge ...

Par avance Merci

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Quand je ne dit rien, c'est que je ne sais pas.
Quand je demande c'est que je n'ai pas trouvé.
Quand je renseigne, c'est que le pense savoir.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Afficher la suite 

5 réponses

Messages postés
1663
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
0
Merci
dans un sens tu faire un

for($i=0;$i<count($array1);$i++)
for($j=0;$j<count($array1[$i]);$j++)
echo "...";

à toi de faire ici tes tr td à la bonne place...
pour passer à l'inverse, c'est COMPLÈTEMENT inutile... mais vraiment si tu veux le faire tu te fais une fonction qui recherche <td> et </td> ...
Commenter la réponse de cs_GRenard
Messages postés
35
Date d'inscription
vendredi 4 avril 2003
Statut
Membre
Dernière intervention
22 mai 2013
0
Merci
Le sens que je sais faire, c'est une fonction récursive.
En bref de mémoire (sans mise en forme HTML) :

<?PHP
// début de la fonction

function Array2Table($array){
$echo ="\n\";
foreach ($array as $TR) {
$echo .=\"\n\t----
\";
if (is_array($TR)) {
foreach ($TR as $TD) {
$echo .=\"\n\t\t";
if (is_array($TD)) {
$echo .= Array2Table($TD);
}
else {
$echo .= $TD;
}
$echo .=", \";
}
}
else {
$echo .= \"\n\t\t".$TR.", \";
}
$echo .=\"\n\t\";
}
$echo .="\n
\n";
return $echo;
}
// fin de la fonction
// début du programme
echo '<html><head></head>';
$tablo =array(array('00','01','02','03','04','05'),array('10','11',array('120','121','122',array('1230','1231','1232','1233','1234','1235'),'124','125'),'13','14','15'),array('20','21','22','23','24',array('250','251','252','253','254','255')));
//$tablo =array('00','01','02','03','04','05');
echo Array2Table($tablo);
echo '</html>';
// fin du programme
?>
ce qui donne :

<html><head></head>
00,
01,
02,
03,
04,
05,

----

10,
11,
<TABLE width=100% border=2>
----, 120</TD>

----

121,

----

122,

----

1230,
1231,
1232,
1233,
1234,
1235,

----

124,

----

125

</TD>
<TD>13</TD>
<TD>14</TD>
<TD>15</TD>
</TR>
<TR>
<TD>20</TD>
<TD>21</TD>
<TD>22</TD>
<TD>23</TD>
<TD>24</TD>
<TD>
250,

----

251,

----

252,

----

253,

----

254,

----

255

</TD>
</TR>
</TABLE>
</html>

Maintenant je n'arrive pas à partir de ce résultat HTML à contruire $tablo/purple.

Qui veut bien m'aider ??

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Quand je ne dit rien, c'est que je ne sais pas.
Quand je demande c'est que je n'ai pas trouvé.
Quand je renseigne, c'est que le pense savoir
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Commenter la réponse de AFPA2003
Messages postés
1663
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
0
Merci
Jviens justement de te dire que je ne vois pas l'utilité, de plus, si tu pastes toute ton code de la sorte personne ne va t'aider...
Commenter la réponse de cs_GRenard
Messages postés
35
Date d'inscription
vendredi 4 avril 2003
Statut
Membre
Dernière intervention
22 mai 2013
0
Merci
Pour un Renard t'es pas très fûté !
J'ai pris la peine de lire quelques unes de tes 94 interventions, elles sont pour la plupart nullissime.
La personne qui demande de l'aide, se moque éperdument de ton point de vue et de tes fadaises.
Elle attend du forum un renseignement constructif.
Soit plus précis et positif dans tes réponses et donne des liens vers des tutoriaux ou pour des sujets déjà traités, que d'écrire 'on a déjà répondu'.
Tout le monde n'a pas forcement la culture et le savoir informatique de tes 18ans.
ne fonctionne pas, est-ce normal ??

Comment bien poser une question de programmation si ce n'est avec du code ?
Je n'ai pas collé mon code, je l'ai écrit et simplifié spécialement pour ce forum !
Tu remarqueras au passage que ma fonction récursive est un peu plus propre que ton histoire de boucles imbriquées qui de plus ne pourras jamais fonctionner dans l'état !
Pour finir, ta réponse est déjà contenu dans ma question, car je sais recherché les <TD> </TD>, puisque j'en parle dans mon dernier § avec les strpos.
Il suffisait de lire calmement la totalité du post, en survolant éventuellement le code.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Quand je ne dit rien, c'est que je ne sais pas.
Quand je demande c'est que je n'ai pas trouvé.
Quand je renseigne, c'est que le pense savoir
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Commenter la réponse de AFPA2003
Messages postés
1663
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
0
Merci
Pourquoi je répond de la sorte.. ?
Tu es tombé malheureusement en regardant quelqu'uns de mes messages sur des posts ou le monde se foute de ceux qui aident...
Regarde celui la par exemple
http://www.phpcs.com/forum.v2.aspx?ID=249138

Il ne faut pas abuser, j'aide le monde mais il ne faut pas abuser, lorsqu'on répond à la question et que celui ci ne comprend pas, ca devient plutot agacant... surtout ceux qui paste leur code de 100 lignes... ceux qui aident devienne complètement fou...

Pour le genre de fonction que tu as faites, je comprends que tu es obligé de prendre une fonction récursive, mais une fonction récursive demande normalement plus de mémoire que de simples boucles.

Mon site, il fonctionne, mais je pense que tu ne vois pas qu'il est fermé pour le moment.

Si tu veux plus d'aide tu n'as qu'à venir sur le chat, tu vas voir comment j'aide... j'aide plus que tu penses tu sauras... Dès que quelqu'un écrit le mot php, je quitte mon travail pour aller aider du mieux que je peux... si ca c'est pas de l'aide...

Pour transformer table en array php, tu utilises la fonction strpos, ereg, preg_match ou tout ce qui s'y rattache.
Commenter la réponse de cs_GRenard