Page 1 sur 2

soucis avec tableau et requetes ...

Posté : 11 mars 2008, 12:46
par jp.kerloch
bonjour,

Je suis entrain de développer une gestion de cantine en php et j'ai un peu de mal pour un module !!
C'est a dire celui de la compta .
J'arrive a mettre a faire des compta par personne et par semaine mais le problème c'est que maintenant que j'ai proposé ca a la compta ils veulent sous excel !! (les chiants ...)

Je vous explique un peu ce que je voudrais ...

Un tableau excelsous cette forme


-------------------------------------------------------------------------------------
utilisateur | Nombre de repas | Repas à 3 Elements | Repas à 5 Elements
-------------------------------------------------------------------------------------
user1____|_____ 5_________|_______3_________|________2________
user2____|_____ 5_________|_______4_________|________1________
user3____|_____ 5_________|_______5_________|________0________
user4____|_____ 5_________|_______3_________|________2________
user5____|_____ 5_________|_______3_________|________2________
user6____|_____ 5_________|_______3_________|________2________
user7____|_____ 5_________|_______3_________|________2________
user8____|_____ 5_________|_______3_________|________2________
user9____|_____ 5_________|_______3_________|________2________

Je vous donne un exemple de ma base :

Image

Comme vous pouvez le voir l'utilisateur : colcombj à pris:

5 repas
dont 5 avec 3 elements
et 0 avec 5 elements !!

Voila !! j'aimerai avoir ca comme resultat dans un tableau xls !! mais comment faire..

voici ce que j'ai deja fait.. en php

<?
include("bdd_init.php5");
header("Content-type:  application/vnd.ms-excel");
header("Content-disposition : attachement");
	

print("<table>");
	print("<tr>");
		print("<td bgcolor='#CCCCCC'> Nom de la Personne</td>");
		print("<td></td>");
		print("<td> Le nombre de Repas </td>");
		print("<td></td>");
		print("<td bgcolor='#CCCCCC'> Repas à 3 Élements </td>");
		print("<td></td>");
		print("<td> Repas à 5 Élements </td>");
		print("<td bgcolor='#CCCCCC'></td>");
	print("</tr>");

print("</table>");

?>
désolé je ne sais pas trop faire les tableaux en php !!

Merci de votre aide...

Posté : 12 mars 2008, 15:47
par jp.kerloch
Je viens d'essayer ca ..
<?
include("bdd_init.php5");
header("Content-type:  application/vnd.ms-excel");
header("Content-disposition : attachement");
?>

<table border='1'>
        <tr>

            <td >Nom de la Personne
				<? 
				$requete_txt = "SELECT distinct admin_id from menu_utilisateur order by admin_id ASC";
				$compta = $bdd->result_to_array($bdd->query($requete_txt));
				for($j=0;$j<count($compta);$j++)
				{print("<td>".$compta[$j][0]." </td>");}
				?>
			</td>
        </tr>
        
		
		<tr>
            <td>Le nombre de repas
				<? 
				$requete_txt = "SELECT count( menu_jour )  FROM menu_utilisateur WHERE menu_semaine ='10' ";
				$compta = $bdd->result_to_array($bdd->query($requete_txt));
				for($j=0;$j<count($compta);$j++)
				{print("<td>".$compta[$j][0]." </td>");}
				?>
			</td>
        </tr>
		
		<tr>
            <td>Repas à 3 Élements
			</td>
        </tr>
		
		
		<tr>
            <td>Repas à 5 Élements
			</td>
        </tr>
</table>
	
Mais le pb c'est que je n'arrive pas a voir le bon comptage des repas !!

Posté : 12 mars 2008, 18:15
par spelou
Bonjour,

Je ne pense pas que l'on puisse générer des tableaux Excel directement à partir de tableaux XHTML.

A mon avis, il faudra que tu utilise l'objet COM dont tu as un article disponible sur developpez.com :)

Bonne journée !

Posté : 13 mars 2008, 09:33
par Cyrano
As-tu trouvé ce site ?

Générer un format xls, ce n'est pas générer du html. Les classes de writeExcel sont précisément faites pour ça. C'est du PHP4 mais ça fonctionne bien.

Posté : 13 mars 2008, 09:35
par jp.kerloch
Merci j'ai deja consuleté ce site...

voila ce que j'arrive a obtenir !! mais maintenant il me faut un truc pour mettre 2 tableau cote a cote ..
<?
include("bdd_init.php5");
header("Content-type:  application/vnd.ms-excel");
header("Content-disposition : attachement");
?>

<table border='1'>
<tr>
<td><h5 class="Style2">Nom d'utilisateur </h5></td>
<td><h5 class="Style2">Semaine</h5></td>
<td><h5 class="Style2">Jour</h5></td>
<td><h5 class="Style2">Nb de plats</h5></td>
</tr>

<?
$requete_txt = "SELECT admin_id, menu_semaine, menu_jour, ( IF( menu_entree = '', 0, 1 ) + IF( menu_resistance = '', 0, 1 ) + IF( menu_legume = '', 0, 1 ) + IF( menu_fromage = '', 0, 1 ) + IF( menu_dessert = '', 0, 1 )) AS Nb_repas FROM menu_utilisateur WHERE menu_semaine = '10' ORDER BY admin_id ASC ";
$result = $bdd->result_to_array($bdd->query($requete_txt));
for($i=0;$i<count($result);$i++)
	{
	print("<td>".stripslashes($result[$i][0])."</td>");
	print("<td>".stripslashes($result[$i][1])."</td>");
	print("<td>".stripslashes($result[$i][2])."</td>");
	print("<td>".stripslashes($result[$i][3])."</td>");
	print("<td>"
	print("</tr>");
	}



?>
</table>

Posté : 13 mars 2008, 09:38
par Cyrano
Tableaux HTML ou tableaux Excel ?

Posté : 13 mars 2008, 09:39
par jp.kerloch
tableau html mais avec extraction de donnée

Posté : 13 mars 2008, 09:41
par Cyrano
Fais pas tout en même temps.

Commence par résoudre le problème de mise en page en construisant une maquette HTML avec des données en dur le temps d'ajuster les positionnement des différents éléments de la page.

Quand le résultat sera satisfaisant, tu disposeras de tous les éléments nécessaires pour construire dynamiquement chaque tableau avec les données des fichiers Excel.

Posté : 13 mars 2008, 09:42
par jp.kerloch
ca yest le tableau est maintenant construit !!
il falait mettre float:left ..

Posté : 13 mars 2008, 09:43
par Cyrano
Si c'est résolu, n'oublie pas de marquer le sujet comme tel ;)

Posté : 13 mars 2008, 09:45
par jp.kerloch
le sujet n'est pas totalement résolu dans le sens des requetes SQL !!
sais tu comment je peux faire en sql pour avoir ca ?

-------------------------------------------------------------------------------------
utilisateur | Nombre de repas | Repas à 3 Elements | Repas à 5 Elements
-------------------------------------------------------------------------------------
user1____|_____ 5_________|_______3_________|________2________
user2____|_____ 5_________|_______4_________|________1________
user3____|_____ 5_________|_______5_________|________0________
user4____|_____ 5_________|_______3_________|________2________
user5____|_____ 5_________|_______3_________|________2________
user6____|_____ 5_________|_______3_________|________2________
user7____|_____ 5_________|_______3_________|________2________
user8____|_____ 5_________|_______3_________|________2________
user9____|_____ 5_________|_______3_________|________2________

Posté : 13 mars 2008, 10:06
par lospericos
Salut, moi j'écris simplement les informations séparées par un point-virgule dans un fichier .csv

// ouverture du fichier en écriture pour l'inscription
$fp = fopen("fichier.csv","a");
// on va a la ligne
fputs($fp, "\n");
// on écrit les informations dans le fichier .csv
fputs($fp, "$1er_info;$2eme_info;$3eme_info;$4eme_info");
fclose($fp);

Ensuite tu l'importe sur ton ordinateur et tu l'ouvre avec excel.

Posté : 13 mars 2008, 10:26
par jp.kerloch
Ce que je recherche maintenant c'est la requete sql !!

Posté : 13 mars 2008, 10:32
par Cyrano
le sujet n'est pas totalement résolu dans le sens des requetes SQL !!
sais tu comment je peux faire en sql pour avoir ca ?

-------------------------------------------------------------------------------------
utilisateur | Nombre de repas | Repas à 3 Elements | Repas à 5 Elements
-------------------------------------------------------------------------------------
user1____|_____ 5_________|_______3_________|________2________
user2____|_____ 5_________|_______4_________|________1________
user3____|_____ 5_________|_______5_________|________0________
user4____|_____ 5_________|_______3_________|________2________
user5____|_____ 5_________|_______3_________|________2________
user6____|_____ 5_________|_______3_________|________2________
user7____|_____ 5_________|_______3_________|________2________
user8____|_____ 5_________|_______3_________|________2________
user9____|_____ 5_________|_______3_________|________2________
Il faut que tu poses la question autrement : il semble qu'il y ait des agrégats dans le résultat attendu, à savoir des totaux de plusieurs colonnes. Donc définis que doit contenir quelle colonne dans le résultat en le formulant simplement, par exemple :
- Utilisateur : identifiant;
- Nombre de repas : col_abc + col_def
- Repas à 3 éléments : col_abc * 123
- Etc.. : etc...

À partir de là, tu pourras rédiger ta question en SQL plus facilement :)

Posté : 13 mars 2008, 10:39
par jp.kerloch
il me faut:

Colonne 1 : le nom d'utilisateur
Colonne 2 : le nombre de fois que la personne à manger
Colonne 3 : le nombre de repas à 3 elements
Colonne 4 : le nombre de repas à 5elements

ca me depasse au niveau sql !!

un ti coup de main ca serai sympa :)