Vous n'êtes pas connecté - 0 membre connecté
Catégories
Graphisme
Flash (49)
Print (64)
Programmation
PHP (63)
ASP (2)
CSS (24)
Hardware
PC (34)
Mac (14)
Linux (5)
Divers
Blabla (241)
881 Sujets
11882 Réponses
Programmation > PHP > Fonction de création d'un t...
Fonction de création d'un tableau
 Bonjour tous,

je cherche à créer une fonction qui pourrait me créer un tableau en fonction d'une requête Mysql.

Imaginons la table Mysql suivante :
J'ai 5 colonnes (col1, col2 ...) et 10 entrées (entr1col1, entr6col5 etc ...).

Je souhaite créer un tableau qui affichera en haut les intitulés de colonne que je souhaite (th) et enfin les entrées (td) regroupées par ligne (tr).

J'ai donc la requête suivante : $requete = 'SELECT * FROM ma_table'

Je crée un array qui contient mes intitulés de colonne ('Colonne 1', 'Colonne2') que j'appelle $array_intitules

Mai ntenant ma fonction va avoir besoin de la requête ($requete), des intitulés de colonne ($array_intitules), du nombre de colonnes que je souhaite voir apparaitre, (count($array_intitules)).

Supposons que je veuille que chaque entrée affiche dans la colonne 1 l'information 'Entrée ' et dans la colonne 2 'Entrée 2' (pour chacune des 10 entrées). Jusqu'ici aucun problème, je crée le tableau suivante : array_contenu ('Entrée', 'Entrée 2') et je le spécifie comme troisième variable de ma fonction. Ensuite la boucle qui affichera les résultats de la requête affichera un tableau avec mes intitulés et enfin 10 lignes de 2 colonnes qui afficheront à chaque fois 'Entrée' dans la première case et 'Entrée 2' dans la seconde.

Mais si je souhaite aller plus loin et lui demander d'afficher par exemple le vrai contenu d'un élément de ma base (par exemple la boucle avec la condition $var = mysql_fetch_array ($requete) qui afficherai à chaque fois par exemple $var['entr1col1'] etc ...

Comment faire une fonction qui me permettrait d'afficher le contenu que je veux (comme $var['entr1col1'] par exemple) dans mon tableau ?

Voici une fonction à peu près similaire ... Où quelque chose dans ce style ...
Je débute en PHP alors si quelqu'un accepte de m'éclairer (une fois de plus) ce sera vraiment gentil.

Merci d'avance (si vous avez compris déjà ...)

Edit : Avec une fonction un peu plus accomplie, si j'essaye de remplir le array_contenu avec ( $var[col1], $var[col2] ) ça saute ...


function CreaTableau ( $requete_sql, $array_intitules , $nombre_de_colonnes, $array_contenu )

{

echo '<table>';

// Ici on afficherai avec une boucles les intitulés de colonne

// Ici on affiche le résultat de la requête soit le contenu du tableau

$requete = mysql_query ( $requete_sql ) ;

while ( $var = mysql_fetch_array ($requete) )

{

echo '<tr>';

echo '<td>'.$array_contenu[0].'</td>';
echo '<td>'.$array_contenu[1].'</td>';

echo '</tr>';

}

echo '</table>';

}
Posté le 31 05 2007 à 14h13
aguenard - Membre

Réponses - Fonction de création d'un t...
Pourquoi ne pas faire un tableau à deux dimensions ?

$montableau = array();
(...)
$i = 0;
while ($var = mysql_fetch_array ($requete)) {

$montableau[$i] = array();
$montableau[$i] ["result1"] = $var["info1"];
$montableau[$i] ["result2"] = $var["info2"];
$i++;
}


??? suis pas sûr d'avoir compris le problème là...
Posté le 31 05 2007 à 14h22
caniche - Membre - www
Je ne comprend pas bien le concept de ton tableau à deux dimensions mais je crois que ça résout pas vraiment le problème.

J'utilise un array pour le contenu de chaque ligne, supposons que je veuille afficher la colonne1 et la colonne2 seulement, mon array sera de la forme $array_contenu = array ('colonne1','colonne2')

La fonction va donc faire la boucle du $var = mysql_fetch_array avec à chaque entrée l'affichage

<tr> <td> '. $var[ $array_contenu[0] ] .' </td> <td> '. $var[ $array_contenu[1] ] .' </td> </tr>

Là ça ne pose aucun problème et ça fonctionne mais si je rempli mon array contenu de la manière suivante :

$array_contenu = array ($var['colonne1'],$var['colonn e2'])

et que la boucle de ma fonction devient un truc dans ce genre :

<tr> <td> '. $array_contenu[0] .' </td> <td> '. $array_contenu[1] .' </td> </tr>

Là ça ne fonctionne plus ... Si je préfère aller vers cette solution c'est que la première ne me permet pas de mettre ce que je veux dans ma cellule (juste l'entrée correspondante de la base). Je ne peux pas formater l'entrée affichée ou mettre deux colonnes de l'entrée dans la même cellule etc ... alors que je voudrai pouvoir le faire.
Posté le 31 05 2007 à 19h37
aguenard - Membre
Si tu veux mettre 2 colonnes dans la même cellule, tu peux également faire un concaténation au niveau de ta requête, par exemple :
SELECT CONCAT('col1',' - ','col2') AS newCol FROM Table...

Je sais pas si ça peut t'aider.
Posté le 31 05 2007 à 20h13
Ishiro - Membre - www
Si ça m'aide ... je ne connaissais pas cette particularité de SQL. Et comment appliquer une fonction par exemple ? J'ai une fonction qui applique une couleur à un nombre si il est supérieur à 0 par exemple. Comment faire pour que ma fonction de création du tableau me permette de faire autant de truc sans avoir à recréer des boucles complexes à chaque page sachant que le tableau doit toujours avoir la même forme ... ?
Posté le 31 05 2007 à 20h58
aguenard - Membre
Hum... Après pour les couleurs, c'est plutot en PHP qu'il faut le gérer, à mon avis... Je vois pas trop comment faire pour obtenir une fonction qui soit vraiment générique, d'autant plus que je ne connais pas exactement tes besoins.
Posté le 01 06 2007 à 22h25
Ishiro - Membre - www
Sujets PHP
<< 1 2 3 4 5 6 7 >>
Fonction de (...)
Auteur : aguenard
Posté le 31 05 2007 à 14h13
5 Réponses (Nouveau sujet)
Sujet visité 1278 fois
Récupérer état dans (...)
Auteur : aguenard
Posté le 11 05 2007 à 10h38
16 Réponses (Nouveau sujet)
Sujet visité 1552 fois
Fonction (...)
Auteur : aguenard
Posté le 14 04 2007 à 19h37
7 Réponses (Nouveau sujet)
Sujet visité 2143 fois
Regexp : Ereg serait (...)
Auteur : Phoenix
Posté le 14 03 2007 à 19h08
5 Réponses (Nouveau sujet)
Sujet visité 987 fois
Date II, the revenge
Auteur : tyler
Posté le 12 02 2007 à 15h54
15 Réponses (Nouveau sujet)
Sujet visité 1045 fois
Proposition de stage
Auteur : bob
Posté le 14 02 2007 à 17h30
1 Réponse (Nouveau sujet)
Sujet visité 665 fois

Sujet bloqué
Inverse de (...)
Auteur : tyler
Posté le 09 02 2007 à 12h13
6 Réponses (Nouveau sujet)
Sujet visité 1070 fois
[résolu] mySQL & css
Auteur : geoffroy
Posté le 06 02 2007 à 15h00
11 Réponses (Nouveau sujet)
Sujet visité 775 fois
[Résolu] Mysql et (...)
Auteur : aguenard
Posté le 04 02 2007 à 17h25
3 Réponses (Nouveau sujet)
Sujet visité 877 fois
localisation
Auteur : senkante
Posté le 28 01 2007 à 17h20
9 Réponses (Nouveau sujet)
Sujet visité 1238 fois
<< 1 2 3 4 5 6 7 >>
Mentions légales   -   Crédits   -   Nous contacter   -   © Benzor 2006