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 comme il faut [MySQL]


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 comme il faut
    Bonjour à tous.
    Je me trouve avec un probleme simple mais sur lequelle je bloque complétement.
    J'ai une base de donnée avec trois tables de deux colonnes chacune.
    USER -> user_id et user_nom,
    VILLES -> ville_id et Ville_nom;
    USER_SEARCHS -> Ville_id et user_id qui sont la copie de VILLES.ville_id et USER.user id.

    Je veut afficher toutes les lignes ville_nom qui aurons était consulter par un utilisateur (USER.user_id)
    Et pour le moment je n'arrive pas au moindre résultat
    Donc si l'un de vous peut m'apporter son aide.
    un grand merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php require('connexion.php'); ?> <!--connection à la base de donnée-->
    <?php
    echo "l'id de l'utilisateur en cours est: <h2>$input_user_id</h2>";
    $result = $mysqli->query('SELECT ville_id FROM user_searchs WHERE user_id = '. $input_user_id ); // Selectionne ville_id de la base user_searchs quand user_id et egale $input_user_id.
    foreach($result as $user_ville_id) // donne à $user_ville_id les valeurs qu'il trouve dans $result
    	echo "$user_ville_id"; // affiche le resultat
    {
    $result = $mysqli->query('SELECT ville_nom FROM villes WHERE ville_id =' . $user_ville_id ); // selectionne ville nom si ville_id = la valeur trouvé dans $user_ville_id.
    foreach($result as $user_ville_nom) // donne à $user_ville_nom les valeurs qu'il trouve dans $result
    	echo "$user_ville_nom"; // affiche le resultat
    }
    ?>

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 521
    Par défaut
    Salut,

    Tu peux le faire en utilisant une jointure par user_id et ville_id.

    Exemple :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $result = $mysqli->query("SELECT v.ville_id,ville_nom,us.user_id,user_nom
    FROM `user_searchs` us_s
    inner join user us on us.user_id=us_s.user_id
    inner join villes v on v.ville_id=us_s.ville_id
    where us.user_id=".$input_user_id);

    : si tu récupères la valeur de la variable $input_user_id via $_POST ou $_GET, dans ce cas il faut préparer la requête ou utiliser au moins mysqli_real_escape_string pour la sécuriser.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par nagyp Voir le message
    Je veut ... ... qui aurons était consulter ...
    Mais bien sûr.....

    Un Bescherelle vient d'exploser en plein vol....
    Dernière modification par Invité ; 23/11/2019 à 11h06.

  4. #4
    Invité
    Invité(e)
    Par défaut
    @MaitrePylos
    Tu as mélangé les syntaxes "procédurale" et "orientée objet".

    Citation Envoyé par nagyp Voir le message
    ...Je veux afficher toutes les lignes ville_nom qui auront été consultées par un utilisateur
    Pour ça, on n'a besoin que des tables VILLES et USER_SEARCHS, et d'une jointure INNER JOIN.

    1- Requête :
    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
    <?php 
    // connection à la base de donnée
    require('connexion.php'); 
     
    // récupération id_user
    $input_user_id = ( !empty($_POST['user_id']) )? $_POST['user_id'] : 0; // (A ADAPTER)
     
    // Requête
    $query = "SELECT V.ville_nom 
    	FROM VILLES V
    	INNER JOIN USER_SEARCHS US
    		ON V.ville_id = US.Ville_id
    	WHERE US.user_id = ?
    	ORDER BY V.ville_nom ASC";
     
    // Préparation et paramètres de la requête
    $stmt = $mysqli->prepare( $query );
    $stmt->bind_param('i', $input_user_id); // i : entier
     
    // Exécution de la requête
    $stmt->execute();
    2- Affichage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    // Association des variables de résultat
    $stmt->bind_result( $ville_nom );
     
    // AFFICHAGE
    $villes = [] ; // array
    while ($stmt->fetch())
    {
    	$villes[] = $ville_nom;
    }
    if( !empty($villes) )
    {
    	echo implode(', ', $villes); // (séparées par des virgules)
    }
    OU :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    $result = $stmt->get_result();
     
    // AFFICHAGE
    $villes = [] ; // array
    while ($row = $result->fetch_array())
    {
    	$villes[] = $row['ville_nom'];
    }
    if( !empty($villes) )
    {
    	echo '<ul><li>'.implode('</li><li>', $villes).'</li></ul>'; // (sous forme de liste)
    }
    CONSEIL : Si tu as encore le choix, je te recommande vivement d'oublier mysqli_, et de CHOISIR PDO.

    Dernière modification par Invité ; 24/11/2019 à 15h38.

  5. #5
    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 à tous pour votre aide. j'essaie de me former avec esecad est c'est pas simple.

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

Discussions similaires

  1. Problème avec des #include imbriqués
    Par Ph.denis dans le forum C++
    Réponses: 6
    Dernier message: 16/03/2008, 10h15
  2. recherchev avec des If imbriqués
    Par Tara59 dans le forum Excel
    Réponses: 9
    Dernier message: 07/02/2008, 16h54
  3. Réponses: 1
    Dernier message: 08/03/2007, 10h55
  4. Centrer une page avec des DIV imbriqués
    Par emstar dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 25/04/2006, 18h42
  5. créer un noeuds avec des paramétres
    Par Toxine77 dans le forum XMLRAD
    Réponses: 5
    Dernier message: 21/01/2003, 16h11

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