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 :

concaténation au niveau de clause where [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé Avatar de memo11
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 132
    Par défaut concaténation au niveau de clause where
    Bonjour tout le monde,

    j'ai un petit problème au niveau d'une requête... je veux concaténer 3 champ au niveau de clause where comme suit:
    le 1er c'est le valeur retourner par une liste de champs d'une table1
    le 2eme c'est le valeur retourner par une liste des opérations (like, in, 'between', <, >, =,...)
    et le 3eme ce zone de texte saisit par l'user pour terminer la condition
    alors la clause where devient comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $where = $liste1 . $cond . $carct ;
    le pbme ici que le pgme retourne que les 3 vbles sont indéfinies

    sachant que l'user peut choisir n'importe quel champs pour la recherche.

    HELP ME PLEASE!!!!!

  2. #2
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Slt,

    Est-ce qu'on pourrait avoir plus de code notamment la récupération des paramètres puisque c'est ce qui pose problème ?

    A première vue il faudrait aussi ajouter des espaces entre chaque chaîne que tu concatènes mais ça sera après.

  3. #3
    Membre confirmé Avatar de memo11
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 132
    Par défaut
    Merci bien pour votre réponse,
    voici le code:
    la 1ere liste:

    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
    <select name="champ">
       <option> --- </option>
     <?php  
    include 'Connexionbd.php';
    $req= "SHOW COLUMNS FROM article";
    $sqll = mysql_query ($req);
    if (!$sqll) {
       echo "Erreur DB, impossible de lister les champs\n";
       echo 'Erreur MySQL : ' . mysql_error();
       exit;
    }
    while ($row = mysql_fetch_row($sqll)) {?>
       <option> <?php echo $row[0]; ?> </option>
    <?php }
    	?>
     </select>
    la 2eme liste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <select name="cond" size="1" id="cond">
            <option>like</option>
            <option>in</option>
            <option>between</option>
            <option>&lt;=</option>
            <option>&gt;=</option>
            <option>=</option>
            <option>!=</option>
            <option>&lt;</option>
            <option>&gt;</option>
          </select>
    la zone de texte et la 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
      <label>
          <input type="text" name="carct" id="carct" />
          </label>
          <?php
     
     //connection au serveur
    $connect = mysql_connect( "localhost", "root", "" ) or die('erreur de connexion');
     
      //sélection de la base de données:
    $db  = mysql_select_db( "gestion_stock" ) or die('base introuvable');
      //requête de selection
      $where = $liste1 . $cond . $carct ;
     
     $aff='select  * 
          from article
    	  where' .$liste1 . $cond . $carct.'order by' .$liste1 ; 
     
    $reqt=mysql_query($aff) or die ('erreur sql'.$reqt.'<br>'.mysql_error());
    $num = mysql_num_rows($reqt);
    echo ('Il y a '.$num.'enregistrement(s) dans la table article');
     ?>

  4. #4
    Membre chevronné
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Par défaut
    Salut !

    Je t'invite à lire le tutoriel pour les débutants pressés et notamment la partie sur les formulaires. Il faut en effet que tu utilises les variables $_POST...

    A++

  5. #5
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    +1 avec djayp

    Vite fait sinon il faudrait savoir comment sont organisés tes fichiers : les 3 bouts de code sont dans un même fichier ou sont séparés ? Peut-on avoir tout le code de ton formulaire ?
    Et comme je disais tu as des soucis d'espace dans la construction de ta requête, là tout va être collé tu vas te retrouver avec quelque chose comme wherechampliketotoorder donc ça va pas le faire.

  6. #6
    Membre confirmé Avatar de memo11
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 132
    Par défaut
    les 3 bouts de code sont dans un même pagecàd même formulaire

  7. #7
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Citation Envoyé par memo11 Voir le message
    les 3 bouts de code sont dans un même pagecàd même formulaire
    Ah...

    Il faut lire le tuto rapide posté plus haut par djayp ça te fera gagner du temps

  8. #8
    Membre confirmé Avatar de memo11
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 132
    Par défaut
    alors,j'ai debuté en php et je ne sais pas est ce que ces modifications sont
    valables ou non:
    voilà que j'ai fais:
    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
    .
    .
    ..
     <input type="text" name="carct" id="carct" />
          </label>
         
    <input name="OK" type="button" value="OK" />
    
     <?php
    
    $liste1 =$_POST['liste1'];
    $cond = $_POST['$cond'];
    $carct = $_POST['carct'];
    
    include ('connexionbd.php');
      //requête de selection
      $where = $liste1 . $cond . $carct ;
    .
    .
    ..

  9. #9
    Membre chevronné
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Par défaut
    Salut !

    Oui ces modifications pourraient marcher mais il faut les tester !
    Comme le faisait remarquer Amara, il faudra certainement des espaces entre les éléments de la clause where. Tu pourrais avoir au final quelques chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $where = $_POST['liste1']." ".$_POST['cond']." ".$_POST['carct'] ;
    Note que les variables $_POST n'existent que si l'utilisateur a cliqué sur le bouton "OK" de ton formulaire.

    A+

  10. #10
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Sinon le bouton OK doit être de type submit, et la page de validation de ton formulaire (action) doit être ta page courante tel que c'est foutu là.

  11. #11
    Membre confirmé Avatar de memo11
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 132
    Par défaut
    j' essayé ça mais rien ne change,il affiche les erreurs suivants:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Notice: Undefined index: liste1 in C:\Program Files\EasyPHP 2.0b1\www\requete.php on line 56
     
    Notice: Undefined index: cond in C:\Program Files\EasyPHP 2.0b1\www\requete.php on line 56
     
    Notice: Undefined index: carct in C:\Program Files\EasyPHP 2.0b1\www\requete.php on line 56

  12. #12
    Membre chevronné
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Par défaut
    Pourquoi écrire des tutoriels s'ils ne sont pas utilisés...
    Une fois de plus, regarde et lis le tutoriel sur les formulaires. Tu verras qu'il faut d'abord s'assurer que ton formulaire a été soumis avant de pouvoir afficher ces variables...

    Bonne lecture !

  13. #13
    Membre confirmé Avatar de memo11
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 132
    Par défaut
    tt ce que se trouve dans ce tutoriel je l'étudié bien et notre formulaire est bien organisé au moins selon notre compréhensibilité,et je ne sais pas le pbme d'où devient.

  14. #14
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Paragraphe III-3 du tuto

  15. #15
    Membre confirmé Avatar de memo11
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 132
    Par défaut
    Merci très sincèrement de votre aide.
    j'ajoute le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    if(isset($_POST['OK']))
    {include ('connexionbd.php');
       $where = $_POST['liste1']." ".$_POST['cond']." ".$_POST['carct'] ;
      echo $where; }
    et je fais un "echo" de "where" pour vérifier qu'elle est bien construite,lorsque je clique sur le bouton "ok".Mais aucun resultat s'affiche.

  16. #16
    Membre chevronné
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Par défaut
    Ton code est bon il ne doit surement pas manquer grand chose...

    - Est-ce que ton bouton OK est bien de type "submit" (<input name="OK" type="submit" value="OK" />) ?
    - Qu'as tu mis dans la balise d'ouverture de ton formulaire "<form action="..." method="..."> ?


    A+

  17. #17
    Membre confirmé Avatar de memo11
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 132
    Par défaut
    pour le bouton ok:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <input type="submit" name="OK" id="OK" value="OK" />
    pour le formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form id="form1" name="form1" method="post" action="">

  18. #18
    Membre confirmé Avatar de memo11
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 132
    Par défaut
    maintenant, j'effectue qques modifications ça va echo $where s'affiche bien le résultat,mais au niveau de requête l'erreur suivant s'affiche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    : Undefined index: where in C:\Program Files\EasyPHP 2.0b1\www\requête.php on line 62
    erreur sql
    Erreur de syntaxe pr�s de '' � la ligne 3
    et voici la ligne 62
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	  where'.$_POST['where'];
    et même faute s'affiche lorsque j'écris :

  19. #19
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Au delà de l'erreur il y a toujours le souci d'espace après WHERE donc ça pourra pas marcher, djayp avait pourtant donné une version propre là-dessus

  20. #20
    Membre confirmé Avatar de memo11
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 132
    Par défaut
    enfin, c'est un pbme de guillemet, et maintenant notre code est bien exécuter,
    Merci très sincèrement de votre aide.

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

Discussions similaires

  1. concaténer un champ avec sa condition dans la clause where
    Par zineb_cerisette dans le forum Requêtes
    Réponses: 3
    Dernier message: 12/01/2012, 16h10
  2. Clause where au niveau de la macrotisation
    Par SASMetrics dans le forum Macro
    Réponses: 0
    Dernier message: 29/01/2010, 19h37
  3. [Vxi] Utilité de la clause Where au niveau Objet
    Par doc malkovich dans le forum Designer
    Réponses: 1
    Dernier message: 29/09/2009, 12h56
  4. probleme avec le caractere 'Z' dans ma clause WHERE
    Par dibox dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/04/2004, 13h21
  5. [ character en simple cote ] clause Where
    Par hocinema dans le forum DB2
    Réponses: 3
    Dernier message: 20/02/2004, 11h17

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