ssc37 Posté(e) le 15 septembre 2005 Partager Posté(e) le 15 septembre 2005 Bonjour, Voila je me suis mis un peu au php et je ne vois pas comment realiser ce que je souhaite. En fait j'ai une page qui liste les concerts présents dans ma base mysql, tout ca s'affiche dans un tableau mais je souhaiterais ne pas repeter la même date sur chaques lignes mais plutot genre ca: =========================================== 15-09-05 =========================================== 20h | Département: 37 | Ville: Tours | Groupes: FuriousBelly, Les Witotos 20h | Département: 75 | Ville: Paris | Groupes: Kattilers, FlyingOver =========================================== 18-09-05 =========================================== 22h | Département: 86 | Ville: Poitiers| Groupes: Haya, Fouta 22h | Département: 49 | Ville: Angers | Groupes: Zenzilé, Dr.Alimantado =========================================== J'ai cherchais chez notre ami google mais point trouvé de choses qui m'éclaire Est-ce que quelqu'un pourais me donner un coup de en m'expliquant comment je pourais faire?enfin le principe quoi car je vois pas trop comment faire avec ce que j'ai appris pour le moment Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
ImoTheP Posté(e) le 15 septembre 2005 Partager Posté(e) le 15 septembre 2005 Si tu souhaites vraiment faire ça, une manière possible est de stocker tes dates dans une table séparée associée à un champ id en auto_increment, et d'associer cet id à chaque concert En gros : Table date : ******************** id (INT, auto_increment) -> Simple ID date_conert (date) -> Contient une date unique à chaque enregistrement ******************** Table concerts : ******************** id_concert (INT, auto_increment) -> Simple ID département (INT) -> Ben le département ville (VARCHAR) -> La ville GROUPES (BLOB ou VARCHAR) -> Les groupes date (INT) -> correspond à date.id pour récupérer la date associée ******************** En gros pour récupérer les concerts à une date précise (15 Sep 2005), ta requête ressemblera à un truc du genre : SELECT concerts.departement,concerts.ville,concerts.groupes,concerts.date,date.date_concert FROM concerts,date WHERE concert.date = date.id AND date.date_concert = "2005/09/15"; Bon je garantis pas la fiabilité de la requête (loin de là même) mais c'est en gros le principe... Cette solution est valable si tu répertories beaucoup de concerts pour une même date, sinon ça ne vaut pas le coup... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 15 septembre 2005 Partager Posté(e) le 15 septembre 2005 La solution viendra du php, pas du SQL... Voici une méthode efficace, qui en plus te permet de conserver ta structure de tables SQL et tes requêtes telles quelles : Dans ta boucle d'affichage des résultats, il suffit, à chaque ligne, de regarder si la date du concert est identique à la date du concert précédent (la date est placée dans une variable externe à la boucle, et remplie à chaque itération). Si la date est différente, tu affiches un joli en-tête avec la date, puis le concert. Dans le cas contraire, tu affiches juste le concert. Et voilà :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
ImoTheP Posté(e) le 15 septembre 2005 Partager Posté(e) le 15 septembre 2005 Hem, je viens de comprendre que j'ai rien compris... C'est un grand pas. Je pensais que tu ne voulais pas stocker la date dans les enregistrements concerts de ta base de données... effectivement, la méthode de Sentinel devrait te convenir... Sur ce, je m'en vais m'auto-flagéller pour n'avoir rien compris... Lien vers le commentaire Partager sur d’autres sites More sharing options...
ssc37 Posté(e) le 16 septembre 2005 Auteur Partager Posté(e) le 16 septembre 2005 Merci les gars En fait hier soir je voulais faire un peu comme l'explique Sentinel mais je devais être trop fatigué pour réfléchir Je chercherais ce soir pour transformer l'explication de sentinel en code car je vois bien le principe mais pour le moment je mouline un peu @ce soir je pense Lien vers le commentaire Partager sur d’autres sites More sharing options...
ssc37 Posté(e) le 16 septembre 2005 Auteur Partager Posté(e) le 16 septembre 2005 Bon bah ca loupe pas je trouve pas comment mettre un oeuvre ce que m'a dit Sentinel avec le peu de fonctions que je puisse connaitre de php et recherches sur google Voila mon rapide script si vous pouvez m'orienter: <?php // Déclaration des paramètres de connexion $host = 'localhost'; $user = '***'; $bdd = 'test'; $passwd = '***'; // Connexion au serveur mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur"); mysql_select_db($bdd) or die("erreur de connexion a la base de donnees"); // Creation et envoi de la requete $query = "SELECT date,departement,ville,groupe,heuredebut,paf,commentaires FROM concerts ORDER BY date"; $result = mysql_query($query); // Recuperation des resultats while($row = mysql_fetch_row($result)){ $date = $row[0]; $departement = $row[1]; $ville = $row[2]; $groupe = $row[3]; $heuredebut = $row[4]; $paf = $row[5]; $commentaires = $row[6]; $datefr = dateUsToFr($date); echo "<tr>\n <td>$datefr</td>\n <td>$departement</td>\n <td>$ville</td>\n <td>$groupe</td>\n <td>$heuredebut</td>\n <td>$paf</td>\n <td>$commentaires</td>\n </tr>\n"; } // Deconnexion de la base de donnees mysql_close(); ?> </tr> </table> Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 16 septembre 2005 Partager Posté(e) le 16 septembre 2005 Simplement : $date_previous = ''; while($row = mysql_fetch_row($result)) { $date = $row[0]; if ( $date_previous != $date ) { /* affichage des entêtes */ $date_previous = $date; } Note au passage que mysql_fetch_assoc est à conseiller, (ainsi que l'utilisation d'alias dans les noms de champs SQL) pour éviter de devoir réécrire/modifier du code. Lien vers le commentaire Partager sur d’autres sites More sharing options...
ssc37 Posté(e) le 16 septembre 2005 Auteur Partager Posté(e) le 16 septembre 2005 Simplement : $date_previous = ''; while($row = mysql_fetch_row($result)) { $date = $row[0]; if ( $date_previous != $date ) { /* affichage des entêtes */ $date_previous = $date; } Note au passage que mysql_fetch_assoc est à conseiller, (ainsi que l'utilisation d'alias dans les noms de champs SQL) pour éviter de devoir réécrire/modifier du code. Merci en fait après avoir posté je me suis dis "bon faut quand même que tu essaye de trouver par toi même mon gamin!! " et j'y suis arrivé même si quand j'y repense je me dit "Franchement c'était simple faut que tu arretes de fumer quand tu apprend quelquechose.... " Merci pour le conseil pour mysql_fetch_assoc j'étudierais ca......à tête reposée Hop resolu meme si c'était vraiment simple Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 16 septembre 2005 Partager Posté(e) le 16 septembre 2005 Tu comprendras son utilité si tu t'amuses à changer la requête :> genre $query = "SELECT departement,date,ville,groupe,heuredebut,paf,commentaires FROM concerts ORDER BY date"; au lieu de $query = "SELECT date,departement,ville,groupe,heuredebut,paf,commentaires FROM concerts ORDER BY date"; Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.