ssc37 Posted September 15, 2005 Share Posted September 15, 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 Link to comment Share on other sites More sharing options...
ImoTheP Posted September 15, 2005 Share Posted September 15, 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... Link to comment Share on other sites More sharing options...
Sentinel Posted September 15, 2005 Share Posted September 15, 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à :) Link to comment Share on other sites More sharing options...
ImoTheP Posted September 15, 2005 Share Posted September 15, 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... Link to comment Share on other sites More sharing options...
ssc37 Posted September 16, 2005 Author Share Posted September 16, 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 Link to comment Share on other sites More sharing options...
ssc37 Posted September 16, 2005 Author Share Posted September 16, 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> Link to comment Share on other sites More sharing options...
Baldurien Posted September 16, 2005 Share Posted September 16, 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. Link to comment Share on other sites More sharing options...
ssc37 Posted September 16, 2005 Author Share Posted September 16, 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 Link to comment Share on other sites More sharing options...
Baldurien Posted September 16, 2005 Share Posted September 16, 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"; Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.