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 :

[SQL] fonction where avec variable [Débutant(e)]


Sujet :

PHP & Base de données

  1. #1
    Membre actif

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 404
    Points : 241
    Points
    241
    Par défaut [SQL] fonction where avec variable
    bonjour
    j'ai fait un formulaire permettant une recherche a différents endroits de la base
    avec une variable pour ce que l'on recherche et une pour l'endroit ou s'effectue la recherche, mais ce qui fonctionne bien quand j'écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $mot=$_REQUEST['motclef'];
    $searchpar=$_REQUEST['par'];
    $recherche= '';
    if (isset($mot)){
    	$recherche= "WHERE  produits like '%$mot%'";
    }
    $sql= "SELECT * FROM produits ".$recherche;
    $resultat=mysql_query($sql);
    while ($produits =mysql_fetch_array ($resultat)){
    ne fonctionne plus lorsque je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $mot=$_REQUEST['motclef'];
    $searchpar=$_REQUEST['par'];
    $recherche= '';
    if (isset($mot)){
    	$recherche= "WHERE  '%$searchpar%' like '%$mot%'";
    }
    $sql= "SELECT * FROM produits ".$recherche;
    $resultat=mysql_query($sql);
    while ($produits =mysql_fetch_array ($resultat)){
    code avec le formulaire
    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
    <?php echo $_REQUEST['motclef'];?>
    "/>
    <input type="submit" value="rechercher"/>
     
      par
      <select name="par">
      <option value="id">utilisation
      <option value="reference"reference">nom</option>
      <option value="constructeur">constructeur</option>
      <option value="importateur">fournisseur
      </select>
      </form>
    <br><br><br>
    <table width=90% align=center border=1>
    <tr>
    <td class='photo' width="7%"><b>photo </td>
    <td class='intitule'width="20%"><b>designation</td>
    <td class= 'intitule'width="20%"><b>reference</td>
    <td class='intitule'><b>distributeur</td>
    <td class='pdf'><b>documentations</td></b>
    <?php
     
    $mot=$_REQUEST['motclef'];
    $searchpar=$_REQUEST['par'];
    $recherche= '';
    if (isset($mot)){
    	$recherche= "WHERE  '%$searchpar%' like '%$mot%'";
    }
    $sql= "SELECT * FROM produits ".$recherche;
    $resultat=mysql_query($sql);
    while ($produits =mysql_fetch_array ($resultat)){

  2. #2
    Membre actif

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 404
    Points : 241
    Points
    241
    Par défaut
    juste une rectif par rapport a mon post precedent cela fonctionne quand je met
    les mots reference, constructeur, id ...
    à la place de la variable searchpar
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $recherche= "WHERE  '%$searchpar%'

  3. #3
    Membre actif

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 404
    Points : 241
    Points
    241
    Par défaut
    j'ai toujours mon problème avec la variable $searchpar, qui n'est pas prise en compte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $recherche= "WHERE '%$searchpar%' LIKE '%$mot%'"
    quand je teste en remplaçant la variable
    $searchpar
    par un paramètre de ma table cela fonctionne uniquement quand je ne met pas le tri derrière cela ne marche pas quand je met les 2 variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql= "SELECT * FROM produits ".$recherche.$ordre2
    dans ce cas seul le tri fonctionne
    et quand je fais un tri l'affichage de la liste est réinitialisé comment faire pour garder les critères de recherche quand cela fonctionnera, dans le tri
    merci

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 50
    Points : 56
    Points
    56
    Par défaut
    Salut,
    Histoire d'avoir un peu plus d'info, as tu essayer de faire un "echo" de ta requête avant de l'éxecuter et de la tenter à la main dans phpMyAdmin (ou autre), si ton problème vient de la syntaxe SQL tu devrais obtenir un vrai message d'erreur.
    Sinon, pour sauvegarder les critères de tri ou de recherche tu peux enregistrer tout ça en session.

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Votre requête est erronée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $recherche= "WHERE  '%$searchpar%' like '%$mot%'";
    La syntaxe est : nom_du_champ LIKE motif. La partie située avant la clause LIKE n'est donc pas valide. Que cherchez-vous à faire ?

    PS : pensez, par pitié, à ajouter le or die(mysql_error()); à l'exécution de vos requêtes (fonction mysql_query, entre autres).

  6. #6
    Membre actif

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 404
    Points : 241
    Points
    241
    Par défaut
    j'essaye de faire une recherche sur un site en mettant dans un formulaire ce que l'on recherche variable $mot et de définir dans quel endroit (rubrique) de la base cette recherche se fait variable $searchpar.
    exemple je cherche un produit appelé xyz dans ma colonne reference.

    merci pour votre aide

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Ce serait alors plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $recherche= ' WHERE `' . mysql_real_escape_string($searchpar) . '` LIKE "%' . mysql_real_escape_string($mot) . '%"';

  8. #8
    Membre actif

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 404
    Points : 241
    Points
    241
    Par défaut
    ça fonctionne, super, merci

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

Discussions similaires

  1. requete SQL clause WHERE avec variable
    Par gabule dans le forum JDBC
    Réponses: 6
    Dernier message: 09/01/2019, 11h04
  2. [Vxi3] Fonction Where avec variable
    Par Macao35 dans le forum Webi
    Réponses: 2
    Dernier message: 10/03/2014, 16h24
  3. [SQL & VBA] Requête avec Variable
    Par Altrensa dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/07/2007, 14h31
  4. Fonction INDIRECT avec variable sur n° de colonne
    Par mat.guillaume dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 30/08/2006, 18h04
  5. [Oracle / Sql] clause where avec resultat d'une requete
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 2
    Dernier message: 31/01/2006, 09h37

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