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

JavaScript Discussion :

List Select et requete SQL


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Par défaut List Select et requete SQL
    Bonjour voila je réalise avec 1 champ input texte, 1 select ( une liste déroulante ) et 2 boutons, => 1 moteur de recherche qui doit remplir mon formulaire de saisie par les informations de la recherche préalablement saisie dans ce meme formulaire.

    En faite je souhaiterai tout d'abord afficher le résultat de ma requete dans mon select. C'est à dire afficher les fiches d'informations "nomFiches" et "numFiche" les unes à la suite des autres pour pouvoir séléctionner par la suite la fiche désiré. L'évènement se réalise apres saisie et clic sur le 1er bouton.

    Recupération de la variable du champ ou on saisie la recherche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $search = $_POST['textfieldsearch'];
    voici ma requete:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $sql = 
    "SELECT * 
    FROM fiches 
    where numFiche =''".$search."'' or nomFiche like '%'".$search."'%' 
    or datecreaFiche =''".$search."'' 
    or loginF =''".$search."'' or descriptifFiche like '%'".$search."'%' 
    or resolutionFiche like '%'".$search."'%'
    or nomProjet =''".$search."'' or nbhresolution = ''".$search."'' 
    or enseigne = ''".$search."'' or privee =''".$search."''
    or emailF = ''".$search."''"
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
    $data = mysql_fetch_array($req);
    1) Est-il possible d'effectuer cette recherche de cette façon ? Je ne suis pas sur de tout ca

    2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $search = $_POST['textfieldsearch'];
    Je pense Comme je serai sur la meme page totu au long de la recherche qu'il faudra utilise un document.form1.textfieldsearch'.value non ?

    3) J'ai regarder plusieurs pages du forum, je n'ai pas trouvé d'aide la dessu, quel méthode appliqué donc pour remplir mon select ?

    merci

  2. #2
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    PHP = serveur
    JavaScript = client

    Quel est ta question concernant JS?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Par défaut Re: List Select et requete SQL
    Citation Envoyé par vincedjs
    En faite je souhaiterai tout d'abord afficher le résultat de ma requete dans mon select. C'est à dire afficher les fiches d'informations "nomFiches" et "numFiche" les unes à la suite des autres pour pouvoir séléctionner par la suite la fiche désiré. L'évènement se réalise apres saisie et clic sur le 1er bouton.

    quel méthode appliqué donc pour remplir mon select ?

    merci

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 159
    Par défaut
    Apparemment tu as envie de mélanger le php et javascript un peu trop dans tout les sens

    Mais je n'ai pas bien compris ce que tu cherchais a faire, apres avoir saisi son texte et cliqué sur le bouton, tu voudrais que les selects se mettent a jour sans recharger de page ?

    Ou bien simplement cela poste un formulaire et crée une "nouvelle" page avec un select construti selon ta requete ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Par défaut
    En faite, étant débutant j'indique ce qui me semble pour moi la méthode logique. Mais si je poste c'est justement pour avoir 1 bonne méthode par des personnes plus professionnels que moi .

    Donc ce que je cherche à faire:

    *C'est 1 moteur de recherche qui lorsque la personne indique 1 mot clé dans un champ texte et clic sur le bouton "OK" indique toutes les fiches correspondantes à cette requetes dans une list select

    *Pour permettre ensuite de selectionner la fiche désiré par la list select
    et ensuite cliquer sur le 2eme bouton "OK" pour afficher dans un 2nd formulaire de cette meme page les informations lié à cette fiche de renseignement.

    Vous me suivez ?

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 159
    Par défaut
    J'ai très bien suivi le but, mais pas le moyen

    Tu parles d'une seule page, sache que le seul moyen d'effectuer des requetes SQL sans changer/recharger de page (effectuer une requete http en fait) est de passer par une méthode dites "ajax" se servant de l'objet javascript xmlhttp. il faut ensuite traiter la réponse et l'injecter directement dans le DOM html, bref ca va p-e etre coton pour toi qui te dit débutant, bien que si tu as du courage et pas peur de suer, ce sujet est extremement intéressant

    La solution plus "classique" serait simplement de soumettre ton formulaire a un script php, qui te construira simplement la nouvelle page a afficher a ton visiteur. Cela se fait facilement par le biais d'echo et d'une boucle sur ton résultat SQL pour les <options> du <select>


    On progresse ou je suis a coté de la plaque ?

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Par défaut
    j'vais opter pour la 2eme solution

    OUi tu comprend tout

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Par défaut
    Donc si je comprend bien j ai 1 page accueil.php rassemblant tout mes formulaire, il faut que je la clonne en 2 exemplaires :

    1 sur clic sur 1er bouton "OK" ou je rajouterai donc la variables $post du champ de saisie du mot clé et j'effectuerai ma requete pour ensuite ajouté dans le list select le résultat de la requete.

    2 sur clic sur 2eme bouton "OK" qui affichera les données de la fiche selectionner dans le select directement dans mon formulaire.

    J aurai accueil.php
    accueil2.php
    accueil3.php


    Je dis des bêtises ?

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 159
    Par défaut
    Nonon c'est bien ca, 3 pages, 2 chargement et traitements php changement de pages

    Mais si tes 3 pages ont la meme arcitecture ca peut etre plus élégant de mettre tout dans le meme fichier php et d'afficher les elements ou pas en testant le contenu du tableau post, mais je te laisse y réfléchir

    Bonne merde à toi :p

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Par défaut
    Donc en gros j'aurai 1 fichier 'accueil.php' qui au début du code:

    if ($post..... != " ")
    {
    requete en utlisant $post...
    +
    Script javascript remplissant le select en fonction de la requete
    }

    et 1 deuxieme if qui lorsque le select comporte 1 valeur
    affecte les données de la fiche selectionner dans des variables

    qui lors du 2eme rafraichisement remplira le formulaires.

    C est possible ca ? il n a pas mieux

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Par défaut
    Re bonjour, je demande 1 derniere petite astuce svp

    J'ai étudier ça a tête reposé, pouvai vous me dire si ma démarche et correcte et que pouvai vous lui apporter .

    "accueil.php"
    champ input ( texte ) ou l'utilisateur saisie 1 mot clé.

    "accueil2.php"
    A l'aide de $POST['motclé'], éffectué 1 requete sur ma bdd pour ensuite ajouté dans 1 list select le résultat de cette requete. La fiche séléctionne à l'aide de la list select est transmise dans 1 variable de session
    $SESSION['selection']

    "accueil3.php"
    Consultation de la recherche: A l'aide de la variable de session, effectué une requete pour selectionner tout les champs correspondant à la selection. Puis ensuite à l'aide du javascript, insérer les champs dans les champs de mon formulaire.

    Est ce que je vais dans la bonne direction :

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 159
    Par défaut
    Citation Envoyé par vincedjs
    "accueil.php"
    champ input ( texte ) ou l'utilisateur saisie 1 mot clé.
    Oui

    Citation Envoyé par vincedjs
    "accueil2.php"
    A l'aide de $POST['motclé'], éffectué 1 requete sur ma bdd pour ensuite ajouté dans 1 list select le résultat de cette requete. La fiche séléctionne à l'aide de la list select est transmise dans 1 variable de session
    $SESSION['selection']
    Oui, mais le select n'est pas remplis apres chargement de la page, mais construit par php (echo "<select>" etc...)
    Pourquoi as tu besoin d'une variable de session ? elle peut rester en post elle aussi. D'ailleurs on écrit $_POST et $_SESSION (note le underscore)

    Citation Envoyé par vincedjs
    "accueil3.php"
    Consultation de la recherche: A l'aide de la variable de session, effectué une requete pour selectionner tout les champs correspondant à la selection. Puis ensuite à l'aide du javascript, insérer les champs dans les champs de mon formulaire.
    Pourquoi du javascript ? Tu peux très bien remplir tes champs en construction de page par php, en remplissant l'attribut value de tes champs


    Alé, bonne merde :p

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Par défaut
    1er soucis :
    J'ai cloner ma page d'accueil ou j'effectue ma saisie de mots clés pour la recherche ce qui donne "accueil2.php" que voici :

    Par contre j'ai le probleme suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error: syntax error, unexpected T_FOR in C:\wamp\www\rbdc\traitementsearch.php on line 31
    qui correspond à:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for ($i = 1; $i < $nb; $i++)
    seulement la ligne est bonne

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Traitement recherche</title>
    <link href="css/style.css" rel="stylesheet" type="text/css" />
    <?php include ('mysqlconnect.php'); 
    $search = $_POST['textfieldsearch'];
    if(emply($search))
    	{
    	echo '<script language=javascript> alert ("Indiquez un mot clé pour effectuer une recherche");</script>';
    	echo '<SCRIPT LANGUAGE="JavaScript">
    	document.location.href="accueil.php" </SCRIPT>';
    	exit;
    	}else{
    		$search = str_replace('+', ' ', trim($search));
    		$search = str_replace('\'', ' ', $search);
    		$search = str_replace(',', ' ', $search);
    		$search = str_replace(':', ' ', $search);
    		$tabsearch = explode(' ' , $search );
    		//on compte le nombre de mots
    		$nbsearch = count($tabsearch);
    		//on prépare la requête SQL.
    		$sql = "select * from fiches where numFiche =\'$tabsearch[0]\' or nomFiche like \'%$tabsearch[0]%\' 
    		or datecreaFiche =\'$tabsearch[0]\' or loginF =\'$tabsearch[0]\' 
    		or descriptifFiche like \'%$tabsearch[0]%\' or resolutionFiche like \'%$tabsearch[0]%\' 
    		or nomProjet =\'$tabsearch[0]\' or nbhresolution = \'$tabsearch[0]\' or enseigne = \'$tabsearch[0]\' 
    		or privee =\'$tabsearch[0]\' or emailF = \'$tabsearch[0]\'"
    		// on boucle pour integrer tous les mots dans la requête
    		for ($i = 1; $i < $nb; $i++)
    			{
    			  $sql = "select * from fiches where numFiche =\'$tabsearch[i]\' 
    			  or nomFiche like \'%$tabsearch[i]%\' or datecreaFiche =\'$tabsearch[i]\' 
    			  or loginF =\'$tabsearch[i]\' or descriptifFiche like \'%$tabsearch[i]%\' 
    			  or resolutionFiche like \'%$tabsearch[i]%\'or nomProjet =\'$tabsearch[i]\' 
    			  or nbhresolution = \'$tabsearch[i]\' or enseigne = \'$tabsearch[i]\' 
    			  or privee =\'$tabsearch[i]\' or emailF = \'$tabsearch[i]\'"
    			}
    		// on execute la requête SQL.
    		$result = mysql_db_query($db, $sql);
    		if ($result)
    			{
    			if (mysql_num_rows($result) == 0) 
    				{
    				// Si il n'y a pas de résultats
    				echo "<center><b>Pas de Résultat</b></center><br>";
    				}else{
    					echo "<center><b>Résultat(s)</b></center><br>";
    					while($row = mysql_fetch_array($result)) 
    						{
    						echo $row['nomFiche'];
    						}
    					mysql_free_result($result);
    					}
    			}
    		echo "La requête SQL executée est : $sql";
    		}
    ?>
    Pouvez vous me dire de ou viens l'erreur car je ne trouve pas, et par la meme occasion si je procéde bien comme il faut pour le traitement de ma recherche ( en restant simple ).
    Merci

    ps: je sais la le code est dans le head, mais c'est pour voir si la requete fonctionne apres je l'insererai dans mon select

  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 159
    Par défaut
    Alors, décidément, y'a que moi qui m'occupe de ton cas lol :p

    Pour le parse error, règle numéro un : toujours regarder si tu termine bien la ligne précédente par ";" !

    Erreur de noob hein la, je suis sur ca t'es déja arrivé plein de fois, mais la tu l'as pas repéré

    Sinon, pour la facon dont tu traite l'information, il y a un probleme...

    A chaque fois que tu passes dans ta boucle "for" tu réinitialise la variable $sql. Une fois l'appel à la requete, tu n'effectue donc que la requete correspondant au dernier mot entré :/

    Il faut donc n'effectuer qu'une seule requete, en concaténant plusieurs morceaux de sql selon le nombre de mots.

    comme ceci :
    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
     
    $sql="select * from fiches where 1";
     
    for ($i = 0; $i < $nb; $i++)
    {
      $sql .= " AND ( numFiche='$tabsearch[i]'
      or nomFiche like '%$tabsearch[i]%'
      or datecreaFiche ='$tabsearch[i]'
      or loginF ='$tabsearch[i]'
      or descriptifFiche like '%$tabsearch[i]%'
      or resolutionFiche like '%$tabsearch[i]%'
      or nomProjet '$tabsearch[i]'
      or nbhresolution = '$tabsearch[i]' or enseigne = '$tabsearch[i]'
      or privee ='$tabsearch[i]' or emailF = '$tabsearch[i]' )";
    }
    Le "where" 1 est une petite astuce, qui te permet de traiter la premiere valeur comme les autres, sans se soucier de si tu as besoin d'un AND ou pas.

    Avec AND cela signifie que si tu tapes 2 mots, cela ne retournera que les fichiers correspondant aux deux mots. si tu veux également les fiches correspondant à un seul mot, il te faut assembler tes conditions avec un OR.

    Note qu'avec cette astuce, tu dois commencer ta boucle for a 0 et pas a 1

    Et enfin, au cas ou tu ne connaitrais pas la syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $sql.="quelquechose";
     
    //est équivalent à
    $sql=$sql."quelquechose";
    Alé, courage, tu progresses


    Edit: au fait, cela ne concerne plus vraiment le problème de départ, et n'est plus du javascript. pense a amener ta prochaine question dans la section PHP pour le bien de ce forum :p

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

Discussions similaires

  1. [AC-2007] Zone de liste alimenter par requete SQL
    Par Vyl.Coyot dans le forum IHM
    Réponses: 4
    Dernier message: 17/05/2010, 08h28
  2. Zone de liste avec la requete SQL
    Par ade94 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 06/06/2007, 22h14
  3. Liste de requete SQL à exécuter
    Par dgouyette dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 20/09/2005, 15h29
  4. modification de la requete SQL d'une liste
    Par legillou dans le forum Access
    Réponses: 2
    Dernier message: 23/06/2005, 08h43
  5. resultat requete SQL d'un select dans variable vb
    Par seb_06 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 11/10/2004, 16h29

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