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 :

Boucle qui tourne pas.


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    en formation
    Inscrit en
    Septembre 2019
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : en formation

    Informations forums :
    Inscription : Septembre 2019
    Messages : 90
    Par défaut Boucle qui tourne pas.
    Bonjour à tous et merci d'avance.
    Je suis débutante en PHP et dans mon devoir je dois faire tourner un programme "en PJ "
    Je liste les id des villes consultées par un utilisateur nommé. identifier par la variable ($input_user_id)
    À partir de cette liste je dois afficher ces villes (ville_nom).
    Pour ça j'ai trois tables MYSQL:
    user: (user-id et user login)
    villes (ville id, ville nom et villes texte)
    user search (user id et ville id) qui est incrémenté à chaque visite par un utilisateur.
    Le programme que je mets en PJ fait le job mais ne fait pas les boucles il se contente d'afficher la dernière ville visitée.

    dans ma base utilisateur 1 a visité les villes A,B et C.
    le programme ne va affiché que C.

    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
    <?php require('connexion.php'); ?> <!--connection à la base de donnée-->
    <?php
     
    	$id_result = $mysqli->query('SELECT ville_id FROM user_searchs WHERE user_id = '. $input_user_id);// je prends les villes_id consulté par $input_user_id.	
    					// pour chaque résultat de $id_result je fait les commandes suivantes.					
     
    	$row = $id_result->fetch_array();
     	$id_nom= $row['ville_id']; // place cette id dans une variable
     
    	$result = $mysqli->query('SELECT ville_nom FROM villes WHERE ville_id = '. $id_nom);
    	$row = $result->fetch_array();
     	// variables destinees a l'affichage
     	$v_nom= $row['ville_nom'];
     
     	?>
    	<body>
     	<div>
    	<h3><?php echo $v_nom ?></h3>
     
     
    </div>
    </body>

  2. #2
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Bonsoir.
    Tu devais dormir quand le prof a fait le cours sur les boucles toi ?

    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
    <?php require('connexion.php');
    $liste='';
    $input_user_id=1;
    $id_result = $mysqli->query('SELECT ville_id FROM user_searchs WHERE user_id = '. $input_user_id);				
    $data= $id_result->fetch_array();
    if(count($data)>0){
      $text='L\'utilisateur '.$input_user_id.' a visité :<br/>';
      $liste.='<ol>';
      foreach($data as $row){
        $result = $mysqli->query('SELECT ville_nom FROM villes WHERE ville_id = '. $row['ville_id']);
        $ville = $result->fetch_array();
        $liste.= $ville['ville_nom'].'<br/>';
      }
      $liste.='</ol>';
    }
    else{
      $text='L\'utilisateur '.$input_user_id.' n\'a visité aucune ville.<br/>';
    }
    ?>
    <html>
      <body>
        <div><h3><?php echo $text;?></h3>
            <?php echo $liste; ?>
        </div>
      </body>
    </html>
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Membre confirmé
    Femme Profil pro
    en formation
    Inscrit en
    Septembre 2019
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : en formation

    Informations forums :
    Inscription : Septembre 2019
    Messages : 90
    Par défaut merci DENDRITE
    Non non je ne dormais pas mais j'ai un petit blocage sur les boucles.
    vue la réponse que tu m'a faite, je me demande si tu ne connaitrais pas déjà les cours de ESECAD ?
    C'est le cas. Ou alors tu est très fort.

    amicalement

    Nadine

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Euh... Dendrite, tu as aussi un problème de boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $data= $id_result->fetch_array();
    if(count($data)>0){
      $text='L\'utilisateur '.$input_user_id.' a visité :<br/>';
      $liste.='<ol>';
      foreach($data as $row){
    Là tu boucles sur les colonnes à l'intérieur d'une ligne et non sur les lignes à l'intérieur d'un résultat. Du coup, ça ne va pas bien marcher.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $resVilleUser = $mysqli->query('SELECT ville_id FROM user_searchs WHERE user_id = '. $input_user_id);	
     
    // on utilise num_rows pour avoir le nombre de lignes retourné par la requête
    $nbVilles = $resVilleUser->num_rows;
    if($nbVilles > 0){
      $text='L\'utilisateur '.$input_user_id.' a visité :<br/>';
      $liste.='<ol>';
      while($row = $resVilleUser->fetch_array()){
        $resNomVille = $mysqli->query('SELECT ville_nom FROM villes WHERE ville_id = '. $row['ville_id']);
        $ville = $resNomVille->fetch_array();
        $liste.= $ville['ville_nom'].'<br/>';
      }
      $liste.='</ol>';
    }
    Petit conseil, quand tu imbriques des boucles de requêtes, utilise des noms qui indique clairement quel morceau correspond à quelle requête. On évite $res, $result, $res2

    Et au passage, on pouvait tout faire en une seule requête avec une jointure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $resVilleUser = $mysqli->query('SELECT ville_nom FROM user_searchs join villes on user_searchs.ville_id = villes.ville_id  WHERE user_id = '. $input_user_id);	
     
    // on utilise num_rows pour avoir le nombre de lignes retourné par la requête
    $nbVilles = $resVilleUser->num_rows;
    if($nbVilles > 0){
      $text='L\'utilisateur '.$input_user_id.' a visité :<br/>';
      $liste.='<ol>';
      while($row = $resVilleUser->fetch_array()){
        $liste.= $row['ville_nom'].'<br/>';
      }
      $liste.='</ol>';
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    on a déjà répondu dans cette discussion......


    @Dendrite @Celira
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      $liste.='<ol>';
      while(..............){
        $liste.= $row['ville_nom'].'<br/>';
      }
      $liste.='</ol>';
    Bonjour la structure HTML !

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    @jreaux : j'ai pas fait attention au html Ni d'ailleurs au fait qu'on envoie des données dans la requête sans les échapper. Mais bon, la question portait sur les boucle hein
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par Celira Voir le message
    Euh... Dendrite, tu as aussi un problème de boucle
    Nagyp, elle a dit que j'étais TRES forte. alors bon hein...
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] boucle qui tourne pas comme il faut
    Par nagyp dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 24/11/2019, 16h19
  2. BOUCLE qui marche pas
    Par malone12 dans le forum Bases de données
    Réponses: 4
    Dernier message: 08/10/2010, 21h04
  3. condition avec une boucle qui marche pas
    Par lumycaan dans le forum Langage
    Réponses: 5
    Dernier message: 23/10/2009, 20h02
  4. ventilateur du proc qui tourne pas
    Par charaf dans le forum Composants
    Réponses: 5
    Dernier message: 08/06/2007, 23h35
  5. Quelle alternative a VS2005 qui tourne pas sous Vista ?
    Par Cazaux-Moutou-Philippe dans le forum Visual Studio
    Réponses: 10
    Dernier message: 06/03/2007, 15h59

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