IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Plusieurs boucles au lieu d'une seule


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut Plusieurs boucles au lieu d'une seule
    Bonjour à tous,

    j'ai la requête suivante qui concerne un seul adhérent


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    $sqla = sprintf("SELECT A.id_adh, A.id_vil, B.id_adh, B.id_log, B.description, B.type, C.id_adh, C.continent, C.pays, C.ville, D.id_log, D.up_nom, E.id_vil, E.id_pay, E.ville, F.id_pay, F.id_con, F.pays_fr, G.cont_fr
    FROM flatforswap_adherent A
    INNER JOIN flatforswap_logement B ON A.id_adh = B.id_adh
    INNER JOIN flatforswap_destination C ON A.id_adh = C.id_adh
    INNER JOIN flatforswap_photo D ON B.id_log = D.id_log
    INNER JOIN flatforswap_ville E ON A.id_vil = E.id_vil
    INNER JOIN flatforswap_pays F ON E.id_pay = F.id_pay 
    INNER JOIN flatforswap_continent G ON G.id_con = F.id_con
    WHERE G.cont_fr= 'Afrique'");
     
    $reqa = mysql_query($sqla) or die('Erreur SQL !<br>'.$sqla.'<br>'.mysql_error());
    En gros il n'y a qu'un seul adhérent qui vit en Afrique.

    Ce que je ne comprends pas c'est au moment où je boucle avec la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    while($dataa = mysql_fetch_assoc($reqa)){


    j'effectue plusieurs fois la boucle pour le même adhérent, au lieu de ne la faire qu'une seule fois (car il n'y a qu'un adhérent qui est concerné...)

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 054
    Par défaut
    Bonjour,

    Si, pour ce même adhérent, il existe plusieurs logements, ou plusieurs destinations, ou encore plusieurs photos, alors c'est normal que la requête ramène plusieurs lignes.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut
    Mais à l'intérieur de cette requête je vais des boucles afin de récupérer les différentes destinations et les différentes photos :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
     
     
    // requête sur la table destination
     
    $sqld =sprintf("SELECT id_des,continent,pays,ville,autre,date_deb,date_fin FROM flatforswap_destination WHERE id_adh=%s ORDER BY timestamp ASC", quote_smart($id_adh));
    $reqd = mysql_query($sqld) or die('Erreur SQL !<br>'.$sqld.'<br>'.mysql_error());
    $nbrdes = mysql_num_rows($reqd);
     
    if ($nbrdes==0){
     
    echo '<div class="rectyy">';
    		echo 'Le membre n\'pas choisie de destiantion particulière';
    echo '</div>';}
    else{
     
    		while($datad = mysql_fetch_assoc($reqd))
    		{
    			// conversion de la date
    			$annee1 = substr($datad['date_deb'], 0, 4);
    			$mois1 = substr($datad['date_deb'], 5, 2);
    			$jour1 = substr($datad['date_deb'], 8, 2);  
     
    			$datad['date_deb'] = $jour1 . '-' . $mois1 . '-' . $annee1;
     
    			$annee2 = substr($datad['date_fin'], 0, 4);
    			$mois2 = substr($datad['date_fin'], 5, 2);
    			$jour2 = substr($datad['date_fin'], 8, 2);  
     
    			$datad['date_fin'] = $jour2 . '-' . $mois2 . '-' . $annee2;
     
     
    			if ($datad['autre'] == 'OK') { 
    					echo '<div class="rectyy">';
    					echo 'N\'importe où <br />';
    					echo 'du '.$datad['date_deb'].' au '.$datad['date_fin'].' <br />';
    					echo '</div>';}
    			else{
    			if ($datad['ville'] == '-1'){ $ville_fr = "";}else{ $ville_fr = $datad['ville'];}
    			if ($datad['pays'] == '-1'){ $pays_fr = "";}else{ $pays_fr = $datad['pays'];}
    			if ($datad['continent'] == '-1'){ $continent_fr = "";}else{ $continent_fr = $datad['continent'];}
     
    			echo '<div class="rectyy">';
    			if($ville_fr != ""){
    			echo $ville_fr.'<br />';}
    			else if($pays_fr != ""){
    			echo $ville_fr.'<br />';}
    			else{
    			echo $continent_fr.'<br />';}
    			echo 'du '.$datad['date_deb'].' au '.$datad['date_fin'].' <br />';
    			echo '</div>';
     
    			}
    			}
    ça veut dire que je fais cette boucle pour rien...

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 054
    Par défaut
    Citation Envoyé par sam01 Voir le message
    ça veut dire que je fais cette boucle pour rien...
    J'ai bien peur que oui
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  5. #5
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut
    Mais alors, comment récupérer mes multiples destinations?

  6. #6
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut
    Pardon d'effectuer une relance, mais est-ce que quelqu'un à une idée ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/03/2010, 12h44
  2. Réponses: 4
    Dernier message: 06/06/2008, 10h56
  3. Créer plusieurs tables identiques vues comme une seule
    Par maqfab dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/10/2007, 11h41
  4. Plusieurs devices de données pour une seule base
    Par The Wretched dans le forum Sybase
    Réponses: 4
    Dernier message: 12/10/2006, 09h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo