Comment programmer une fct en PHP
Résolu/Fermé
Lili_754
Messages postés
125
Date d'inscription
mercredi 18 avril 2012
Statut
Membre
Dernière intervention
31 mai 2016
-
5 févr. 2013 à 15:27
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 17 févr. 2013 à 09:48
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 17 févr. 2013 à 09:48
A voir également:
- Comment programmer une fct en PHP
- Easy php - Télécharger - Divers Web & Internet
- Programmer sms - Guide
- Programmer mail gmail - Guide
- Programmer en basic sous windows 10 - Télécharger - Édition & Programmation
- Programmer un mail outlook - Guide
9 réponses
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
Modifié par Alain_42 le 7/02/2013 à 11:12
Modifié par Alain_42 le 7/02/2013 à 11:12
<?php ///// fonctions php //tu peux mettre la fct au début du code c'est plus lisible si elles sont toutes regroupées au début function vect_to_tableHTML($array){ //ici dans la fct il faut utiliser le nom de l'argument c a d $array //et mettre <table> en dehors de la boucle sinon tu vas avoir autant de tables que de lignes echo "<table border='1'>"; foreach ($array as $information => $donnee){ //une ligne tr par ligne de l'array echo "<tr> <th> $information </th>"; echo "<td> $donnee </td>"; echo "</tr>"; } echo "<table>"; } //initialisation de l'array $Coordonnee = array( 'prenom'=> 'Lila' 'nom' => 'Du' 'adresse' => '4 rue Dodo' 'ville' => 'paris' 'tel' => '0146453423'); //appel de la fonction vect_to_tableHTML($Coordonnee); //en lui passant en argument l'array $Coordonnee
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
8 févr. 2013 à 13:38
8 févr. 2013 à 13:38
tu as du modifier qq chose car chez moi j'ai bien seulement la première colonne en gras
par contre tu as oublié les virgule lors de la definition de l'array:
autre question comment fias tu pour rentrer dans ton array une autre personne
car ton affichage est plutôt inversé, nom, prenom etc devraient être en titre de colonnes et le svaleurs dans les lignes en dessous
par contre tu as oublié les virgule lors de la definition de l'array:
//initialisation de l'array $Coordonnee = array( 'prenom'=> 'Lila', 'nom' => 'Du', 'adresse' => '4 rue Dodo', 'ville' => 'paris', 'tel' => '0146453423');
autre question comment fias tu pour rentrer dans ton array une autre personne
car ton affichage est plutôt inversé, nom, prenom etc devraient être en titre de colonnes et le svaleurs dans les lignes en dessous
Lili_754
Messages postés
125
Date d'inscription
mercredi 18 avril 2012
Statut
Membre
Dernière intervention
31 mai 2016
2
9 févr. 2013 à 13:07
9 févr. 2013 à 13:07
Ouii j'ai rectifié j'ai mis le point virgule apres l'array. Bonne question je sais pas :( peux tu me montrer? :)
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
9 févr. 2013 à 14:03
9 févr. 2013 à 14:03
il manqait les virgules dans l'array.
un exemple:
un exemple:
<?php ///// fonctions php function vect_to_tableHTML($array){ echo "<table border='1'>"; //affichage de la ligne titre echo '<tr><th>prenom</th><th>nom</th><th>adresse</th><th>ville</th><th>telephone</th></tr>'; foreach ($array as $index_1 => $donnee){ //affichage des donnes une ligne tr par ligne de l'array echo '<tr>'; //colonnes echo '<td>'.$donnee['prenom'].'</td><td>'.$donnee['nom'].'</td><td>'.$donnee['adresse'].'</td><td>'.$donnee['ville'].'</td><td>'.$donnee['tel'].'</td>'; echo '</tr>'; } echo "<table>"; } //////initialisation de l'array /* on va faire un array à deux dimensions premiere dimension: index 0, 1 ,2 etc, coorespondant à chaque personne deuxième dimension: pour chaque index 0,1,2 on aura un array avec omme index prenom, nom etc.. correspondant aux donnees de chaque personne */ $Coordonnee[0] = array( 'prenom'=> 'Lila', 'nom' => 'Du', 'adresse' => '4 rue Dodo', 'ville' => 'paris', 'tel' => '0146453423'); $Coordonnee[1] = array( 'prenom'=> 'Annie', 'nom' => 'Dupuy', 'adresse' => '2 av de Paris', 'ville' => 'Roissy', 'tel' => '0121345697'); $Coordonnee[2] = array( 'prenom'=> 'Pierre', 'nom' => 'Dupont', 'adresse' => 'Place bellecourt', 'ville' => 'Lyon', 'tel' => '0438965421'); //etc pour les autres personnes /////appel de la fonction vect_to_tableHTML($Coordonnee); //en lui passant en argument l'array $Coordonnee ?>
Lili_754
Messages postés
125
Date d'inscription
mercredi 18 avril 2012
Statut
Membre
Dernière intervention
31 mai 2016
2
9 févr. 2013 à 15:04
9 févr. 2013 à 15:04
a ouii c'est vrai j'ai eu un message d'erreur je l'avais corrigé apres, merci. En faite on me demande de traiter les ligne et les colonne de façon dynamique. Je souhaite avoir juste dans ma premiere colonne tout mes <th> donc j'ai fais ce-ci:
function vect_to_tableHTML($array){
echo "<table border='1'>";
echo "<tr>";
foreach ($array as $information => $donnee){
echo "<th> $information </th>";
#echo "<tr> <td> $donnee </td></tr>";
}
echo "</tr>";
echo "<table>";
}
Mon souci c'est pour mes td comment faire pour qu'il s'associe parfaitement à la colonne dont la $donnee correspont??
function vect_to_tableHTML($array){
echo "<table border='1'>";
echo "<tr>";
foreach ($array as $information => $donnee){
echo "<th> $information </th>";
#echo "<tr> <td> $donnee </td></tr>";
}
echo "</tr>";
echo "<table>";
}
Mon souci c'est pour mes td comment faire pour qu'il s'associe parfaitement à la colonne dont la $donnee correspont??
maka54
Messages postés
698
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
80
9 févr. 2013 à 15:20
9 févr. 2013 à 15:20
function vect_to_tableHTML($array = array()){ ?> <table border="1"> <thead> <tr> <?php foreach(array_keys($array[0]) as $key){ ?> <th><?php echo $key; ?></th> <?php } ?> </tr> <thead> </tbody> <?php foreach ($array as $line){ ?> <tr> <?php foreach ($line as $element){ ?> <td><?php echo $element; ?></td> <?php } ?> </tr> <?php } ?> </tbody> </table> <?php }
Lili_754
Messages postés
125
Date d'inscription
mercredi 18 avril 2012
Statut
Membre
Dernière intervention
31 mai 2016
2
9 févr. 2013 à 15:38
9 févr. 2013 à 15:38
function vect_to_tableHTML($array){
echo "<table border='1'>";
echo "<tr>";
foreach ($array as $information => $donnee){
echo "<th> $information </th>";
}
echo "</tr>";
foreach ($array as $information => $donnee){
echo "<tr>";
foreach ($array as $information => $donnee){
echo "<td> $donnee </td>";
}
echo "</tr>";
}
echo "<table>";
}
J'ai suivi l'algorithme, maintenant je n'ai plus le souci de la donnee mise dans la bonne colonne, mon seul souci c'est que ça boucle autant que j'ai de colonne, c'est à dire il m'affiche 5 fois mes donnees dans 5 lignes differentes..
echo "<table border='1'>";
echo "<tr>";
foreach ($array as $information => $donnee){
echo "<th> $information </th>";
}
echo "</tr>";
foreach ($array as $information => $donnee){
echo "<tr>";
foreach ($array as $information => $donnee){
echo "<td> $donnee </td>";
}
echo "</tr>";
}
echo "<table>";
}
J'ai suivi l'algorithme, maintenant je n'ai plus le souci de la donnee mise dans la bonne colonne, mon seul souci c'est que ça boucle autant que j'ai de colonne, c'est à dire il m'affiche 5 fois mes donnees dans 5 lignes differentes..
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
maka54
Messages postés
698
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
80
Modifié par maka54 le 9/02/2013 à 15:45
Modifié par maka54 le 9/02/2013 à 15:45
<?php class vect_to_tableHTML { public $table; function _construct(){ $this->table = ''; } function thead($keys){ $this->table .= '<thead><tr>'; foreach($keys as $key){ $this->table .= '<th>'.$key.'</th>'; } $this->table .= '</tr></thead>'; } function tbody($elemnts){ $this->table .= '<tr>'; foreach($elemnts as $elt){ $this->table .= '<td>'.$elt.'</td>'; } $this->table .= '</tr>'; } function generate($array = array()){ $this->table = '<table border="1">'; if(is_array($array[0])){ // alors 2 dimensions ou plus $this->thead(array_keys($array[0])); foreach($array as $line){ $this->tbody($line); } }else{ // un seule dimension $this->thead(array_keys($array)); $this->tbody($array); } $this->table .= '</table>'; return $this->table; } } $Coordonnee[0] = array( 'prenom'=> 'Lila', 'nom' => 'Du', 'adresse' => '4 rue Dodo', 'ville' => 'paris', 'tel' => '0146453423'); $Coordonnee[1] = array( 'prenom'=> 'Annie', 'nom' => 'Dupuy', 'adresse' => '2 av de Paris', 'ville' => 'Roissy', 'tel' => '0121345697'); $Coordonnee[2] = array( 'prenom'=> 'Pierre', 'nom' => 'Dupont', 'adresse' => 'Place bellecourt', 'ville' => 'Lyon', 'tel' => '0438965421'); $vect = new vect_to_tableHTML(); $tab2 = $vect->generate($Coordonnee); // tableau a 2 dimension $tab1 = $vect->generate($Coordonnee[0]); // tableau a 1 dimension echo $tab1; echo $tab2;
Lili_754
Messages postés
125
Date d'inscription
mercredi 18 avril 2012
Statut
Membre
Dernière intervention
31 mai 2016
2
9 févr. 2013 à 16:52
9 févr. 2013 à 16:52
Il y a pas une facon plus simple que de faire appel à des fonctions, il me semble qu'on y ait presque le truk se joue dans la seconde boucle...
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
9 févr. 2013 à 19:58
9 févr. 2013 à 19:58
le problème n'est pas dans l'appel de la fonction, tel qu'on te l'a fait c'est bon.
le problème est dans le code la fonction elle même.
Donnes nous un exemple de tableau que tu veux obtenir avec 3 personnes par exemple
titres en haut des colonnes ou au début des lignes ?
le problème est dans le code la fonction elle même.
Donnes nous un exemple de tableau que tu veux obtenir avec 3 personnes par exemple
titres en haut des colonnes ou au début des lignes ?
Lili_754
Messages postés
125
Date d'inscription
mercredi 18 avril 2012
Statut
Membre
Dernière intervention
31 mai 2016
2
9 févr. 2013 à 22:08
9 févr. 2013 à 22:08
par exemple je souhaite un affichage de type
echo "<table border=\"1\">";
echo "<tr>";
echo "<th> nom </th>";
echo "<th> prenom </th>";
echo "<th> adresse </th>";
echo "<tr> <td> lili </td>";
echo "<td> popo </td>";
echo "<td> 4, rue bobo </td> </tr>";
echo "<tr> <td> trutru </td>";
echo "<td> nolo </td>";
echo "<td> 54, rue du chomage </td> </tr>";
echo "</table>";
Mais mon souci vient au niveau de du deuxieme foreach de la fonction je pense...
echo "<table border=\"1\">";
echo "<tr>";
echo "<th> nom </th>";
echo "<th> prenom </th>";
echo "<th> adresse </th>";
echo "<tr> <td> lili </td>";
echo "<td> popo </td>";
echo "<td> 4, rue bobo </td> </tr>";
echo "<tr> <td> trutru </td>";
echo "<td> nolo </td>";
echo "<td> 54, rue du chomage </td> </tr>";
echo "</table>";
Mais mon souci vient au niveau de du deuxieme foreach de la fonction je pense...
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
10 févr. 2013 à 15:02
10 févr. 2013 à 15:02
ne nous donnes pas le code mais un exemple de page résultat
ex:
prenom nom adresse ville telephone
lili Du 4 rue bobo Paris 012345678
Nanie Dupont 5 place vendome Paris 061236879
Fred Astaire rue Frere Lyon 04789654123
ex:
prenom nom adresse ville telephone
lili Du 4 rue bobo Paris 012345678
Nanie Dupont 5 place vendome Paris 061236879
Fred Astaire rue Frere Lyon 04789654123
Lili_754
Messages postés
125
Date d'inscription
mercredi 18 avril 2012
Statut
Membre
Dernière intervention
31 mai 2016
2
16 févr. 2013 à 11:51
16 févr. 2013 à 11:51
Ouiii exactement c'que j'aimerai avoir :-)
maka54
Messages postés
698
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
80
16 févr. 2013 à 14:48
16 févr. 2013 à 14:48
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
16 févr. 2013 à 14:51
16 févr. 2013 à 14:51
c'est déjà ce que je t'avait fait qqs post plus haut revoici le code:
<?php ///// fonctions php function vect_to_tableHTML($array){ echo "<table border='1'>"; //affichage de la ligne titre echo '<tr>'; foreach($array[0] as $titre=>$value){ //les titres de chaque colonne echo '<th>'.$titre.'</th>'; } echo '<tr>'; //affichage des lignes de valeurs du tableau foreach ($array as $index_1 => $donnee){ //affichage des donnes une ligne tr par ligne de l'array echo '<tr>'; //colonnes echo '<td>'.$donnee['prenom'].'</td><td>'.$donnee['nom'].'</td><td>'.$donnee['adresse'].'</td><td>'.$donnee['ville'].'</td><td>'.$donnee['tel'].'</td>'; echo '</tr>'; } echo "<table>"; } //////initialisation de l'array /* on va faire un array à deux dimensions premiere dimension: index 0, 1 ,2 etc, coorespondant à chaque personne deuxième dimension: pour chaque index 0,1,2 on aura un array avec omme index prenom, nom etc.. correspondant aux donnees de chaque personne */ $Coordonnee[0] = array( 'prenom'=> 'Lila', 'nom' => 'Du', 'adresse' => '4 rue Dodo', 'ville' => 'paris', 'tel' => '0146453423'); $Coordonnee[1] = array( 'prenom'=> 'Annie', 'nom' => 'Dupuy', 'adresse' => '2 av de Paris', 'ville' => 'Roissy', 'tel' => '0121345697'); $Coordonnee[2] = array( 'prenom'=> 'Pierre', 'nom' => 'Dupont', 'adresse' => 'Place bellecourt', 'ville' => 'Lyon', 'tel' => '0438965421'); //etc pour les autres personnes /////appel de la fonction vect_to_tableHTML($Coordonnee); //en lui passant en argument l'array $Coordonnee ?>
maka54
Messages postés
698
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
80
16 févr. 2013 à 15:54
16 févr. 2013 à 15:54
En faite on me demande de traiter les ligne et les colonne de façon dynamique
dans ton foreach tu fait réfèrence au nom des champs , donc ce n'est pas dynamique , si demain on veux faire la meme chose sur un tableau completement différent çà ne fonctionnera pas .
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
16 févr. 2013 à 20:18
16 févr. 2013 à 20:18
alors tu va m'expliquer comment faire cela de façon plus dynamique que ce que je t'ai fait ?
mon foreach génère justement les noms des colonnes qui permettent de générer même si demain ton array est différent
essayes par exemple de faire un array en rajoutant un champ sexe et un champ nationalité
mon foreach génère justement les noms des colonnes qui permettent de générer même si demain ton array est différent
essayes par exemple de faire un array en rajoutant un champ sexe et un champ nationalité
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
17 févr. 2013 à 09:48
17 févr. 2013 à 09:48
maka54, excuses je croyait que c'était le demandeur qui posait cette question.
Dans mon post plus haut effectivement ce n'est pas dynamique au niveau des titres, je n'avais pas copier /collé le bon code.
Dans mon post plus haut effectivement ce n'est pas dynamique au niveau des titres, je n'avais pas copier /collé le bon code.
7 févr. 2013 à 21:29
Mercii d'avance :)