Vous n'êtes pas connecté - 0 membre connecté
Catégories
Graphisme
Flash (51)
Print (66)
Programmation
PHP (66)
ASP (2)
CSS (26)
Hardware
PC (34)
Mac (14)
Linux (5)
Divers
Blabla (261)
933 Sujets
12337 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 ... 6 7 >>
PHP et resolution (...)
Auteur : Narno
Posté le 16 08 2006 à 00h19
7 Réponses (Nouveau sujet)
Sujet visité 1255 fois
Vérifier le contenu (...)
Auteur : bob
Posté le 08 08 2006 à 12h24
10 Réponses (Nouveau sujet)
Sujet visité 873 fois
todolist
Auteur : veensez
Posté le 13 08 2006 à 20h34
2 Réponses (Nouveau sujet)
Sujet visité 785 fois
Htaccess
Auteur : caniche
Posté le 27 07 2006 à 09h48
6 Réponses (Nouveau sujet)
Sujet visité 997 fois
demande de test sur (...)
Auteur : lo215
Posté le 26 07 2006 à 17h19
8 Réponses (Nouveau sujet)
Sujet visité 658 fois
Unlink
Auteur : Narno
Posté le 04 07 2006 à 10h21
6 Réponses (Nouveau sujet)
Sujet visité 623 fois
<< 1 2 ... 6 7 >>
Mentions légales   -   Crédits   -   Nous contacter   -   © Benzor 2006