Requette comment la faire ??? Merci de me donner un coup de main!

cs_Pampas Messages postés 2 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 11 mai 2008 - 10 mai 2008 à 12:25
cs_Pampas Messages postés 2 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 11 mai 2008 - 11 mai 2008 à 13:01
Bonjour,



Plutôt designer graphiste et très debutante dans ce langage, j'ai une question très bête pour vous.



J'ai une BD avec cette structure :




id 
dpt_num (n°de departement)
depart  (nom du departement)
magasin 
adresse 
tel




et je voudrais afficher quelque chose comme ça :






GIRONDE



Bordeaux




Magasin 1
Adresse 1
Tél. 1



Magasin 2
Adresse 2
Tél. 2



Magasin 3
Adresse 3
Tél. 3






CHARENTE-MARITIME



La Rochelle




Magasin 1
Adresse 1
Tél. 1



Magasin 2
Adresse 2
Tél. 2



Magasin 3
Adresse 3
Tél. 3



etc...



J'ai commencer à faire mon code PHP (pas très duée, en effet) :



<?php
$sql = "SELECT * FROM `magasins` ORDER BY `magasins` . `ville` ASC LIMIT 0, 30";



$rs = mysql_query($sql);
while($row = mysql_fetch_array($rs)){
?>
  <?php echo $row['depart'];?>

  ----

    <?php echo $row['ville'];?>,
 
  ----

    <?php echo $row['magasin']; ?>,
 
  ----

    <?php echo $row['adresse']; ?>,
 
  ----

    <?php echo $row['tel']; ?>,
 

<?php
}
?>



J'ai reussi à faire afficher les données, mais de DEPARTEMENT et la ville se repettent à chaque fois, chose que je ne voudrais pas.
Je sais que ça doit pas être difficil à faire mais moi, je n'arrive pas. Je ne suis pas programatrice, je essaie de me debrouiller pour une petite application dans un site vitrine que je suis en train de construire.




Merci d'avance à tous pour votre aide.





Pampas

3 réponses

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
10 mai 2008 à 16:10
Salut,

MySQL va bêtement retourner ce que tu lui demandes. Pour chaque enregistrement, il va forcément retourner... tout... ville, département, etc. Logique, quoi.

C'est à toi de faire en sorte de ne pas répéter la ville et le département.
Pour cela, il te suffit de comparer la nouvelle valeur à l'ancienne. Si elle est différente, tu l'affiches. Sinon, tu passes à la suite.

Procédure à suivre :
1/ Initialiser au début du script une variable pour le département, une autre pour la ville. Par exemple :
$ville = '';
$dep = '';

2/ Récupérer le premier enregistrement (dans ta boucle while)

3/ Comparer la valeur du champ département avec $dep :
<?php
if ($row['depart'] != $dep) {
echo '' . $row['depart'] . '

'
$depart = $row['depart'];
}
?>

Idem pour la ville.
Note que dans le bloc if, si on a changé de département, on stocke dans la variable $dep la nouvelle valeur. Prochain enregistrement : si le département est le même, on n'affiche pas son nom, on affiche la suite. Dès qu'un enregistrement aura un autre département, celui-ci sera affiché et stocké dans la variable $dep.

Voilà pour le principe.

Sinon, ton code mériterait que tu sépares davantage le traitement des données de leur affichage.

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
0
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
10 mai 2008 à 16:22
Salut,
tu fais un order by 'ville' donc normal ! mais en plus tu fais aussi un limit 0,30
donc si t'as plus de 30 occurences pour une ville, bah le resultat est normal  compte rendu de  ton order by  et de ton limit  0,30;
tu peux ajouter la clause WHERE  pour personnaliser ta requete,

<hr size="2" width="100%" />Au début, on essaye de trouver une solution qui marche, et puis on veut la meilleure.
0
cs_Pampas Messages postés 2 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 11 mai 2008
11 mai 2008 à 13:01
Je vous remercie, vous êtes très gentils d'avoir repondu à ma question "Bête".
Vos réponses m'ont aidé à comprendre un petit peu mieux comment tout ça marche.








Pampas
0
Rejoignez-nous