n'arrive pas a faire affiché certaine informations liés à deux tables

ViPHP
ViPHP | 2144 Messages

03 oct. 2007, 18:40

Dommage de jeter l'éponge.
Tu sais tous les dévellopeurs dans leur apprentissage se sont pris la tête sur un truc, avant de finir par comprendre. Ca arrive même souvent à des développeurs très expérimentés de temps à autres.

Je t'ai donné l'algo dont tu as besoin, il te suffit juste d'adapter l'affichage des données, si tu ne comprends pas une partie de ce code, pose-nous des questions. Avant de vouloir faire en sorte qu'un code fonctionne, il faut commencer par le comprendre



Maintenant, c'est toi qui vois...

Eléphant du PHP | 169 Messages

03 oct. 2007, 20:28

Bon aller, je me replonge dedans, mais je me laisse juste cette soirée pour souffler un peu..... :roll:
A demain
--
Kweb

ViPHP
ViPHP | 2144 Messages

04 oct. 2007, 00:06

Bon aller, je me replonge dedans, mais je me laisse juste cette soirée pour souffler un peu..... :roll:
A demain
Excellente, idée, sérieusement, c'est un réflexe, plus ça bug, plus faut prendre du recul ;)

Eléphant du PHP | 169 Messages

04 oct. 2007, 15:17

Slt,
Bon aller je me lance !!

Donc si j'ai bien compris, la requête SQL est bonne
$sql=mysql_query("
SELECT 
id_categorie, txt_categorie, nom_formation, id_categorie_formation, ville_formation, date_formation
				
FROM 
formation 
				
LEFT JOIN 
categorie 
				
ON categorie.id_categorie = formation.id_categorie_formation 

ORDER BY 
txt_categorie

") or die(mysql_error());
Il faut maintenant que je me penche sur les "conditions" pour que je puisse faire un affichage comme je le souhaite.
Chirurgien
- formation 1
- formation 2
- formation 3
-------------------
Médecin
- formation 4
Voici comment j'exposerais le problème:

DEBUT Boucle N°1 (while)
Condition : (SI le nom de la catégorie existe plus de 2 fois )
=========>j'affiche une seule fois le nom .

DEBUT Boucle N°2 (while)
Condition : ( SI la formation à le même ID (id_categorie_formation) QUE id_catégorie )
=========>j'affiche le nom de la formation
FIN Boucle N°2 (while)

FIN Boucle N°1 (while)

:?: :?: J'attends une suggestion avant de me lancer.... histoire que je ne bloque pas trois jour !
--
Kweb

d0m
Mammouth du PHP | 1141 Messages

04 oct. 2007, 15:30

Souvent dès qu'il y a du "je veux que ça apparaissetn qu'une fois", il faut penser à utiliser les tableaux associatifs.

en mettant l'id de ta catégorie en index et en valeur un tableau contenant les différentes formations :

Code : Tout sélectionner

array( id_categorie1 => array(id_formation1 => id_formation1, id_formation2 => id_formation2) id_categorie2 => array(id_formation4 => id_formation4) )

Eléphant du PHP | 443 Messages

04 oct. 2007, 15:57

Et en quoi ça va changer sa problématique d'affichage ?

Ta méthode serait utile s'il était impossible d'ordonner les infos par la clé de regroupement (txt_catégorie), il n'est pas dans cette situation.

Eléphant du PHP | 169 Messages

04 oct. 2007, 16:01

Oppss ! les tableaux....je n'ai jamais utilisé... donc bonjour les ennuis :cry:
Lorsque je consulte quelques site sur l'utilisation d'un array, les exemples donné sont assez simple.
c'est pas le même genre de tableau que tu indique.

Pour mieux comprendre:
lorsque tu écrit : "id_categorie1" ou "id_categorie2", ce sont des noms écrit au hasard ? c'est a remplacer par des variables ?

RAJOUT de dernière minutes
Je viens de lire le post précédent.... avec un peu de retard, faut il que j'en tienne compte des array??? par ce que la je ne voudrais pas partir sur de mauvaise piste.... :roll:
Attention, je ne cherche a blessé personne...
--
Kweb

Eléphant du PHP | 443 Messages

04 oct. 2007, 16:14

Bon, je reprends ton code du post précédent, en le bricolant un peu:
<?php
$sql=mysql_query("SELECT id_categorie, txt_categorie, nom_formation, id_categorie_formation, ville_formation, date_formation FROM formation LEFT JOIN categorie ON categorie.id_categorie = formation.id_categorie_formation ORDER BY txt_categorie") or die(mysql_error());

// initilisation de la variable contenant l'identifiant de la catégorie
$id_categorie = 0;

?><table><?php
    while ($affiche = mysql_fetch_array($sql, MYSQL_ASSOC))
    {
// Si l'identifiant est différent de celui mémoriser, c'est qu'on a une nouvelle catégorie
       if ($affiche['id_categorie'] != $id_categorie)
       {
?><tr><td colspan="2"><?php
          echo htmlentities($affiche['txt_categorie']);
          $id_categorie = $affiche['id_categorie'];
?></td></tr><?php                
       }
// affichage des infos de la formation
?><tr><td width="20px"></td><td><?php
        echo htmlentities(' - '.$affiche['nom_formation'].' - '.$affiche['date_formation'].' - '.$affiche['ville_formation']);
?></td></tr><?php
    }
?></table>
En modifiant, ça devrait te convenir. :wink:
ps: la première valeur donnée à $id_categorie ne doit correspondre à aucun identifiant de catégorie existant..

Eléphant du PHP | 169 Messages

04 oct. 2007, 16:45

:shock: Whhoouuaaa ! merci beaucoup

J'aurais aimé trouvé par moi même...... mais bon, je pense que j'aurai vraiment mis du temp.

c'est pour cela que je vais bien me pencher sur ta syntaxe pour la comprendre a 100%

Une petite question :roll: : pourrais tu m'expliquer pourquoi tu a ajouter "MYSQL_ASSOC" ?
--
Kweb

Eléphant du PHP | 443 Messages

04 oct. 2007, 16:49

Une petite question :roll: : pourrais tu m'expliquer pourquoi tu a ajouter "MYSQL_ASSOC" ?
Si tu ne l'indiques pas, par défaut mysql_fetch_array fonctionne en mode BOTH, MYSQL_NUM + MYSQL_ASSOC et dans ton cas tu n'utilises que l'accès associatif au tableau. Tu aurais pu directement utiliser la fonction mysql_fetch_assoc...
// pour plus d'explication clique sur le lien ci-dessous, c'est la doc ;)
mysql_fetch_array(...)

Eléphant du PHP | 169 Messages

04 oct. 2007, 17:14

Et bien ! je pense que je peux passer ce post en RESOLU.

encore une fois, MERCI a toutes les personnes qui ont participé à ces échanges. =D> =D> =D> =D>
grâce a vous, je progresse un peu plus.
--
Kweb