fredo35m
Messages postés244Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention12 juillet 2006
-
8 sept. 2005 à 11:29
fredo35m
Messages postés244Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention12 juillet 2006
-
12 sept. 2005 à 14:22
Bonjour,
je ne m'y connais pas vraiment en tableau et je souhaiterais savoir comment effectué un tableau croisé en php, pour l'instant j'arrive à afficher mes colonnes et mes lignes mais j'aimerais croiser ma varaible1 avec ma variable 2 pour obtenir les effectifs 3
mysql_select_db($database_local, $local);
$query_Recordset1 = "SELECT * FROM sirene_petit GROUP BY $param1, $param2";
$Recordset1 = mysql_query($query_Recordset1, $local) or die(mysql_error());
?>
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 9 sept. 2005 à 12:25
Surtout que vu le contenu, je suppose que 'est un projet pro...et une
base pourrie sur un projet pro, tu vas vite te heurter à de gros
problèmes : performances, et surtout requêtes infaisables...bref, on
finira par te demander de sortir tel ou tel renseignement de ta base,
en fonction de telle ou telle condition, et tu ne le pourras pas.
D'ailleurs ça commence...avec une meilleure structure, ton affichage
serait nettement plus simple à faire.
fredo35m
Messages postés244Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention12 juillet 2006 9 sept. 2005 à 12:38
ben oui je m'en doute bien !!!
mais si je fais plusieurs requetes sur ma table et qu'ensuite j'interroge mes requete plutot que ma base cela revient un peu au même non??
j'en ai marre, je pensais pourtant pouvoir reussir à afficher mes données de manière tabulaire !!!
Et si jamais j'avais 3 tables comme tu me disais plus haut, tu crois que ça serait jouable de présenter les résultats en tableau croisé?? Parce que au pire je peux créer plusieurs tables dans ces cas là !! mais je ne vois en quoi cela va m'aider à présenter les données !!!
merci bien !!!
Tu as les 6 cas importants, il faut bien bien réflêchir là-dessus,
avant de recréer ta base. Une bonne structure te sauvera de bien des
emmerdes ;-) (tu peux lire tout le tuto, il est très intéressant et
très bien foutu).
Créer plusieurs tables (pas trop non plus, il faut un juste milieu) va
t'aider à faire tes requêtes, des requêtes plus malléables, et donc
oui, ça t'aidera pour l'affichage de ces données parceque tu
contrôleras mieux comment elles te parviennent. Là, le problème, c'est
que tu n'arrives pas à récupérer tes données dans un ordre correct
(orde n'est pas le mot mais je ne trouve pas mieux) pour les afficher
sous forme de tableau croisé. Pourquoi ? Parce que, déjà, la
structure de ta base n'st pas une structure de tableau croisé! C'est
une structure de liste. (tout est affiché à la suite...ou plutôt tout
est stocké à la suite, en ligne). De plus, tu as énormément de doublons
inutiles.
Vous n’avez pas trouvé la réponse que vous recherchez ?
fredo35m
Messages postés244Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention12 juillet 2006 9 sept. 2005 à 13:54
oui je sais que ça ne se crée pas au hasard, mais le problème est que je reçoi cette base de données tel que et donc j'avais imaginer l'utiliser comme ça mais pourquoi pas en faire plusieurs en effet!!!
Bon ben je vais regarder ce que tu m'as dit et je vais essayer de voir comment faire mes bases !!
Merci de ton aide en tout cas !!!
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 9 sept. 2005 à 14:45
Tss lol. Ouais. Mais reste à afficher les villes et les entreprises,
sans doublon, dans un tableau croisé lol. M'enfin oui, jolie requête
pour la somme :-)
fredo35m
Messages postés244Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention12 juillet 2006 9 sept. 2005 à 14:51
oui ça peut être un début, ce que j'aimerais pouvoir afficher c'est à partir de la base entreprise:
________| Ville
Entreprise | Paris | St-machin|
Danone | 15
Nestlé | 25
st machin | 50
Ou si j'avais 2 Danone à paris (15 et25)2 lignes dans ma table avec paris et danone somme
________| Ville
Entreprise | Paris | St-machin|
Danone | 40
Nestlé | 25
st machin | 50
je souhaite en faite croisé ma variable ville avec entreprise sans sélection d'un modalité !! et en récupérer un total effectif par exemple, tout ceci dans un tableau récapitulatif.
merci bien
fredo35m
Messages postés244Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention12 juillet 2006 9 sept. 2005 à 16:53
Bon vous allez dire que j'insiste mais je continue dans ma demande, alors depuis tout à l'heure j'ai un peu avancé mais j'ai toujours un broblème avec ma somme d'effectif !!! j'ai l'impression qu'il la comprends pas !! il ne me marque rien !!!
Bon sinon, concernant mon état d'avancement, j'ai bien ma première ligne avec
1ère ligne : HAUT GAUCHE puis nom de ma variable 1
2ème ligne : nom de la varible 2 puis l'ensemble des modalité variable1
3ème ligne : 1ère modalité de la variable 2 et puis plus rien sauf quand je ne mets pas SUM($param3) j'ai toute les effectifs sans somme!!!!
voici ce que j'ai écris pour l'instant : faut que j'y arrive !!!
$sql1 = mysql_query("SELECT DISTINCT $param1 FROM sirene_petit ORDER BY $param1");
$sql2 = mysql_query("SELECT DISTINCT $param2 FROM sirene_petit ORDER BY $param2");
$sql = mysql_query("SELECT SUM($param3) as $som FROM sirene_petit group by $param1, $param2");
fredo35m
Messages postés244Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention12 juillet 2006 12 sept. 2005 à 09:28
bon il y a du mieux déjà il m'affiche bien la somme en fonction des paramaètres 1 et 2 !! c'est déjà ça !!! maintenant il faut que je trouve la combine pour qu'il m'affiche ça bien dans un tableau croisé !!!
ce qui est en rouge est bien disposé là où il faut et en gras ce qui n'est pas bien mis !! ce qui est en gras devrait être à la suite du 4 !!
il me manque plus grand chose je pense qu'il s'agit juste d'une histoire de boucle ou truc comme ça !!
voici mon script si quelqu'un avit une idée !! merci !!
$sql1 = mysql_query("SELECT DISTINCT $param1 FROM sirene_petit ORDER BY $param1");
$sql2 = mysql_query("SELECT DISTINCT $param2 FROM sirene_petit ORDER BY $param2");
$sql = "SELECT DISTINCT $param1, $param2, SUM($param3) as somme FROM sirene_petit GROUP BY $param1, $param2 ORDER BY $param1, $param2 ";
$query = mysql_query($sql);
fredo35m
Messages postés244Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention12 juillet 2006 12 sept. 2005 à 12:17
hello,
ben en fait c'est les deux je croyais que la première s'affichait bien mais en fait non, le principal problème est je crois que je n'arrive pas à faire retourner à la ligne une fois qu'il a lu une ligne !!
En fait pour l'instant il mets tout sur une même ligne (à la suite) !!!
je vais jamais m'en sortir !!!!
Donc globalement, il m'affiche bien mes 2 premières lignes :
GAUCHE,
nafg36,
----
ze,
DA,
DE,
DK,
FA,
GA,
HA,
IA,
JA,
KA,
OA
mais ensuite,il commence à écrire nickel :
35ZEMP1,
4
4=>somme effectif si nafg36=DA
mais les autres sommes au lieu de les mettre à la suite il me les mets en haut de mon tableau !!!
Il y a un soucis. Tu opuvres un <tr> en dehors d'une boucle, ok.
Puis dans la 1ère boucle, tu ouvres <td> et tu le fermes. Ok
aussi, tu mets une valeur entre chaque, donc ces valeurs seront chacune
dans une cellule <td></td>
Par contre, tu fermes ensuite cette oucle (accolade fermante } ), puis
tu écris un <td>. Donc tu ouvres une nouvelle cellule (tjrs sur
la même ligne). Enfin tu rentres dans ta 2de boucle, tu écris une
valeur et tu fermes un </td>. Ce qui veut dire que tu n'ouvres ta
cellule qu'une fois, mais que tu la fermes autant de fois que tu
boucles sur $query. Et ça, ce n'est pas bon.
regarde ton source html (lance ta page, et fais "afficher source").
regarde comment est écrit ton tableau. A mon avis il est foireux. La
règle à ne pas oublier : chaque balise ouvrante doit avoir sa balise
fermante, et inversement. Si tu as un déséquilibre quelconque, c'est
qu'il y a un problème. Pour les tableaux, ce genre de problèmes se
traduit par ce que tu as : des données qui sortent du tableau.
fredo35m
Messages postés244Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention12 juillet 2006 12 sept. 2005 à 13:49
alors j'y approche j'y approche enfin il me semble !!!
j'ai désormais un tableau sous la forme :
HAUT GAUCHE,
nafg36,
----
epci,
DA,
DE,
DK,
FA,
GA,
HA,
IA,
JA,
KA,
OA,
----
35EPCI01,
048944974514724151070022115716 ,
----
35EPCI03,
,
----
35EPCI05,
,
----
35EPCI06,
,
----
35EPCI08,
,
----
35EPCI10,
,
----
35EPCI27
En gras, il s'agit des sommes d'effectifs, il faut maintenant que j'arrive à mettre les effectifs dans les bonnes lignes et bonnes colonnes !!! (je crois que ça va être le plus dur !!!)
voici mon script actuel qi quelqu'un à une idée ...!! j'suis preneur !!!
$sql1 = mysql_query("SELECT DISTINCT $param1 FROM sirene_petit ORDER BY $param1");
$sql2 = mysql_query("SELECT DISTINCT $param2 FROM sirene_petit ORDER BY $param2");
$sql = "SELECT DISTINCT $param1, $param2, SUM($param3) as somme FROM sirene_petit GROUP BY $param1, $param2 ORDER BY $param1, $param2 ";
$query = mysql_query($sql);
{echo '<td>' , $col[$param1], '</td>';} ?>
</tr>
<tr>
<?php while ($ligne = mysql_fetch_assoc($sql2))
{
echo '<td>' , $ligne[$param2], '</td>';
?>
<td> => ouverture en dehors de ta boucle sur $query
<?php while ($data = mysql_fetch_array($query) )
{
echo $data['somme'] ;
} ?> </td> => fermeture dedans...<?php ?> </tr> => fermeture du <tr> dans ta boucle alors qu'il a été ouvert dehors <?php } ?>
fredo35m
Messages postés244Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention12 juillet 2006 12 sept. 2005 à 14:22
alors à priori mon tableau semble désormais correct sauf que comme disait malalam, il va falloir mettre des zéros si jamais les effectifs sont vides !! et là je crois que c'est pas gagné !!
car voici à quoi ressemble mon tableau :
HAUT GAUCHE,
nafg36,
----
epci,
DA,
DE,
DK,
FA,
GA,
HA,
IA,
JA,
KA,
OA,
----
mais maintenant il va falloir mettre les bons chiffres dans les bonnes cases en fonction des valeurs de paramètre!!!
PS : désolé malalam pour mes essais de tableaux mais j'ai tellement essayé dans tout les sens !!!!
Voici mon script (bon maintenant j'espère d'un point de forme en tout cas ....:-(!!