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 :

Comment puis faire qu'une requete MySQL et utiliser plusieur fois mysql_fetch_assoc()


Sujet :

PHP & Base de données

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut Comment puis faire qu'une requete MySQL et utiliser plusieur fois mysql_fetch_assoc()
    Bonjour à tous,

    Je dois faire un formulaire de recherche, soit un filtre, pour afficher des batteires.
    Ce formulaire contient de <select> et j'aimerais qu'ils se remplissent en fonction des autres <select>

    Exemple, si je sélection VW dans mon <select id="marque">, le <seéect id="modele"> n'afichera que les modèle de la marque VW. Pourcela j'utilise AJAX.

    Voci donc mon code. Ce fichier est appeler par ajax. Les balise form sont à l'extérieur.
    Code PHP : 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
     
    <?php
    include('../sql/db_config.inc.php');
    include('../sql/db_connect.inc.php');
     
    $sql_search = 'SELECT * FROM tb_combinaisons AS co
    INNER JOIN tb_carburants ON co.tb_carburants_id_carburant=tb_carburants.carburant_id
    INNER JOIN tb_batteries ON co.tb_batteries_id_batterie=tb_batteries.id_batterie
    INNER JOIN tb_modeles ON co.tb_modeles_id_modele=tb_modeles.id_modele
    WHERE co.tb_marques_id_marque LIKE "'.$_POST['marque'].'" AND tb_categories_id_categorie LIKE '.$_POST['categorie'].' AND tb_carburants_id_carburant LIKE '.$_POST['carburant'].' ORDER BY co.fd_annee_de ASC';
    $query_search = mysql_query($sql_search)or die(mysql_error());
    $nb_search = mysql_num_rows($query_search);
     
    if($nb_search >= 1){
    echo '<select id="fmarque">	
    while($data_search=mysql_fetch_assoc($query_search)){	
    	<option value="'.$data_search['fd_marque'].'">'.$data_search['fd_marque'].'</option>
    }
    echo '</select>';
    
    }else{
    	echo '<tr><td colspan="8">Aucunes batteries n\'a été trouvées selon les critères sélectionnés.  </td></tr>';
    }
    ?>

    J'aimerais éviter de faire une requete pour chaque select/option mais d'utiliser plusieur fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    echo '<select id="au-choix">'
    while($data_search=mysql_fetch_assoc($query_search)){	
    }
    echo '</select>'
    mais je crois qu'on ne peut pas faire ca comme ca car il faut que $data_search revienne à chaque fois sur son premier index.

    Es-ce bien juste?
    Et là, j'ai mon problème, car je ne sais plus comment faire ceci.
    je crois qu'il y a une fonction propre à MySQL.
    Pourriez-vous m'éclairecir?

    Milles mercis
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Déjà on ne met pas directement dans une requête des données venant d'un POST, faille de sécurité, injection SQL etc.

    Pour le reste je ne comprends pas ce que tu veux.
    Ta requête va alimenter un <select> ... A quel autre endroit voudrait tu réutiliser ce même résultat de requête ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    D'accord je prend note de ta premiere remarque.

    En fait j'aimerais que ma requete me fournisse (ou rempli) 5 <select> (j'en met que trois)

    Code PHP : 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
     
    <?php
    include('../sql/db_config.inc.php');
    include('../sql/db_connect.inc.php');
     
    $sql_search = 'SELECT * FROM tb_combinaisons AS co
    INNER JOIN tb_carburants ON co.tb_carburants_id_carburant=tb_carburants.carburant_id
    INNER JOIN tb_batteries ON co.tb_batteries_id_batterie=tb_batteries.id_batterie
    INNER JOIN tb_modeles ON co.tb_modeles_id_modele=tb_modeles.id_modele
    WHERE co.tb_marques_id_marque LIKE "'.$_POST['marque'].'" AND tb_categories_id_categorie LIKE '.$_POST['categorie'].' AND tb_carburants_id_carburant LIKE '.$_POST['carburant'].' ORDER BY co.fd_annee_de ASC';
    $query_search = mysql_query($sql_search)or die(mysql_error());
    $nb_search = mysql_num_rows($query_search);
     
    if($nb_search >= 1){
    echo '<select id="fmarque">	
    while($data_search=mysql_fetch_assoc($query_search)){	
    	<option value="'.$data_search['fd_marque'].'">'.$data_search['fd_marque'].'</option>
    }
    echo '</select>';
    [requete sql]
    echo '<select id="fmodele">';
    while($data_search=mysql_fetch_assoc($query_search)){	
    	<option value="'.$data_search['fd_modele'].'">'.$data_search['fd_modele'].'</option>
    }
    echo '</select>';
    [requete sql]
    echo '<select id="fcarburant">';
    while($data_search=mysql_fetch_assoc($query_search)){	
    	<option value="'.$data_search['fd_carburant'].'">'.$data_search['fd_carburant'].'</option>
    }
    echo '</select>';
    
    }else{
    	echo '<tr><td colspan="8">Aucunes batteries n\'a été trouvées selon les critères sélectionnés.  </td></tr>';
    }
    ?>

    Là où il y a [requete sql], je devrais refaire ma premiere requete (avec les jonctions) et c'est que j'aimerais éviter. Il me semble que j'avais vu qu'on pouvait simplifier ceci en réutilisant
    ou
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ($data_search=mysql_fetch_assoc($query_search)

    C'est ca que je doute.
    Vois-tu?
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Techniquement, tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_data_seek($query_search, 0);
    Après sur le fond j'ai du mal à comprendre comment une seule requête peut te retourner de quoi alimenter plusieurs listes différentes.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    et sur la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo '<select id="fmarque">	
    while($data_search=mysql_fetch_assoc($query_search)){	
    	<option value="'.$data_search['fd_marque'].'">'.$data_search['fd_marque'].'</option>
    }
    echo '</select>';
    Ca n'a pas d'bon sens ! (tabernacle !)
    Tu n'as pas l'impression qu'il manque quelque chose ?
    Des apostrophes et point-virgules, par exemple ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	echo '<tr><td colspan="8">Aucunes batteries n\'a été trouvées selon les critères sélectionnés.  </td></tr>';
    Je suis curieux de savoir comment on remplace dans le HTML une liste déroulante (select) par une ligne (tr) de table...

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/03/2011, 23h26
  2. comment utiliser "Distinct" pour une requete mysql
    Par Emilie012 dans le forum Requêtes
    Réponses: 4
    Dernier message: 30/10/2008, 21h03
  3. faire plusieurs having dans une requete mysql
    Par sirbaldur dans le forum Requêtes
    Réponses: 1
    Dernier message: 15/11/2006, 10h22
  4. Réponses: 2
    Dernier message: 03/07/2006, 20h14
  5. résultat d'une requete mysql
    Par noinneh dans le forum MFC
    Réponses: 4
    Dernier message: 03/03/2005, 16h54

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