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 :

[AJAX] Requ�te SQL en utilisant du Javascript


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    14
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 14
    Par d�faut [AJAX] Requ�te SQL en utilisant du Javascript
    Bonjour !

    Je suis bloqu�

    En fait, j'ai un formulaire avec 3 composants :
    - 2 listes d�roulantes
    - 1 input

    Je souhaiterai : lorsque l'on change la valeur d'une de ces 2 listes, je r�cup�re le nbre de ligne retourn�e par une requ�te SQL. Cette requ�te utilise les valeurs actuelles des 2 listes dans sa clause where. Puis, on affiche le nbre de lignes retourn�es dans le Input.

    Voila un petit exemple de code (j'ai fait au plus simple ... enfin j'esp�re) :

    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
    <script language="javascript">
     
    	function afficheMot()
    	{
    		document.write("<? $sql=select * from matable where champ1=document.form.cond1.value and champ2=document.form.cond2.value; ?>"); 
    		document.write("<? $req=mysql_query($sql); ?>");
    		document.write("<? $nb=mysql_num_rows($req); ?>");
    		document.form.nb.value = <? echo $nb; ?>;
    	}
     
    </script>
     
     
    <form name='form' method='post' action='xxx.php'>
     
    <td>
    	<select name='cond1' onchange="afficheNb()">
    		<option value='a'>a
    		<option value='b'>b
    </td>
     
    <td>
    	<select name='cond2' onchange="afficheNb()">
    		<option value='a'>a
    		<option value='b'>b
    </td>
     
    <td>
    	<input type='text' name='nb'>
    </td>
     
    <td>
    	<input type='submit' value='Envoyer'>
    </td>
     
    </form>
    Ce bout de code ne fonctionne pas car il n'est pas possible affecter � une variable php du code Javascript. Mais je ne sais pas comment faire ....

    Au secours svp. Merci.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    D�tails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par d�faut
    Va faire un tour dans la partie javascript => AJAX sera ton ami

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    14
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 14
    Par d�faut
    Merci pr ta r�ponse.

    J'ai �t� � la chasse aux infos sur Ajax (que je ne connaissais pas du tout). Et j'ai plutot du mal � m'y retrouver.

    L'utilisation d'Ajax est elle indispensable ?? ou existe peut �tre une solution autre ?

    J'ai cr��r une application php sans Ajax. Si j'utilise Ajax, c'est simplement pour pouvoir r�soudre mon probl�me.

    Est ce que tu crois n�cessaire d'utiliser Ajax que pour faire �a ?? (Y a t'il des choses � installer pr�alablement pour utiliser Ajax ??)

    Peux tu me donner une piste, un exemple d'utilisation d'Ajax avec mon exemple pour m'aider � d�marrer ? Je ne sais pas trop par ou commencer.

    Merci.

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    D�tails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par d�faut
    Si tu veux que l'affichage de ton input soit imm�diat, sans rechargement de la page, AJAX est l'unique solution.
    Un tutoriel, que tu peux adapter : http://nicolaspied.developpez.com/ajax-premiers-pas/

  5. #5
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    question de principe je suis contre embarquer les requetes SQL dans le javascript

    au d�but de l'informatique tout �tait sur une m�me machine. l'application contenait tout les donn�es, les traitements et l'interface utilisateur

    puis on a d�port� l'�cran mais rien d'autre et on c'est rapidement apper�u que ce n'�tait la bonne solution

    alors on � d�port� l'apli sur le poste client et on � mis les donn�es sur un serveur mais ce mode client-serveur a lui aussi rapidement montr� ses limites.

    et arriv� alors la mode du client l�ger (le navigateur) l'application est sur un serveur les donn�es aussi (pas necessairement le m�me) et l'interface (l'affichage) sur le poste client.

    mais l� encore on en voit vite les limite.

    aujourd'hui on s'orient vers l'IHM sur le poste client (et plus seulement l'affichage de celle-ci) les traitement sur un serveur applicatif et les donn�e sur un serveur de donn�e.

    ce que tu cherche � faire c'est revenir au client-serveur d'autre fois c'est le poste client qui embarque tous les traitement et qui int�roge directement le serveur de donn�es. (enfin presque: il passe par un php ou un asp pour etablir la conexion SQL)

    � mon avis la meilleur solution est de d�finir un service applicatif (une page asp php ou autre) qui est un sens par exemple "donner liste des client" "calculer la tva" etc. cette page en fonction des param�tres fournis effectue le traitement et renvoit le r�sultat brut (sous forme de donn�e pas de HTML mais JSON XML txt ...)

    le javascript lui ne fait qu'invoquer la page et de se servir des r�sultats.

    dans ton cas un php (ou asp) coutWord.php qui ex�cute la requ�te en fonction des param�tre champs1 et champs2

    et ton javascript qui lui l'apelle

    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
    <script language="javascript">
     
    	function afficheMot() {
                url = 'coutWord.php?c1=' + escape(document.form.cond1.value) + '&c2=' + escape(document.form.cond2.value)
                XHR.open("GET", url, false);
                document.form.nb.value = XHR.responseText;
    	}
     
    </script>
     
     
    <form name='form' method='post' action='xxx.php'>
     
    <td>
    	<select name='cond1' onchange="afficheNb()">
    		<option value='a'>a
    		<option value='b'>b
    </td>
    voil� pour le principe
    1) cela ne laisse rien suposer de la structure de ta base c�t� client
    2) si le traitement �volu il n'y a qu'un seul endroit ou il faut le changer
    3) si un jour tu veux acc�der � ce traitement depuis une autre interface applicative ou client tu n'as rien d'autre � faire que te concentrer sur ce nouveau client et non sur le traitement.

    Je le dis et je le r�p�te embarquer les traitements applicatif dans l'interface utilisateur est un retour au mode client-serveur qui � grandement montr� ses limites.

    il ne devrait y avoir aucun acc�s aux donn�e depuis un IHM sans passer par un serveur applicatif. l'IHM n'a aucunement besoin de savoir comment sont d�finis les donn�es que traitent les services du coeur applicatif.

    le client n'en sera que plus l�ger et rapide et l'application plus robuste.

    A+JYT

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    14
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 14
    Par d�faut
    Merci de m'avoir r�pondu de mani�re aussi compl�te.

    Tes fonctions 'XHR.open' et 'XHR.responseText' sont des fonctions Ajax ??

  7. #7
    Expert confirm�
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Ao�t 2003
    Messages
    3 684
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activit� : danseur

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 3 684
    Par d�faut
    alternative assez rapide:

    (test.php)

    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
    57
    58
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-
     
    strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>...</title>
     
     
    <script type="text/javascript">
     
    var g;
     
    function nbr(v){
     
    	g=document.getElementById("ghost");
    	while(g.lastChild){
    		g.removeChild(g.lastChild)
    	};
     
    	var scr=document.createElement('script');
    	scr.setAttribute("src","liste.inc.php?v="+v+"&alea="+Math.random().toFixed(3));
     
    	g.appendChild(scr);
     
     
    }
     
     
    </script>
     
    </head>
     
    <body>
     
    <div id="ghost"></div>
     
    <form id="f">
    	<p>
    		<select id="s1" onchange="nbr(this.value)">
    			<option value="zero">zéro</option>
    			<option value="un">un</option>
    			<option value="deux">deux</option>
    			<option value="trois">trois</option>
    			<option value="ma table">ma table</option>
    		</select>
     
    	</p>
     
    	<p>
    		<input type="text" id="r" />
    	</p>
     
    </form>
     
     
    </body>
    </html>

    (liste.inc.php)



    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
    <?php
     
    // routine de connection à inclure;
     
     
    $v=$_GET['v'];
     
    $req=mysql_query("select champ from ma_table where champ='$v'");
    $tot=mysql_num_rows($req);
     
    echo 'var tot='.$tot.';';
     
    ?>
     
    document.getElementById("r").value=tot;
    http://javatwist.imingo.net/test.php

  8. #8
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    Citation Envoy� par tstievet
    Merci de m'avoir r�pondu de mani�re aussi compl�te.

    Tes fonctions 'XHR.open' et 'XHR.responseText' sont des fonctions Ajax ??
    non ce sont les fonction native de XMLHttpRequest
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    'XHR = new XMLHttpRequest();
    sous IE il faut passer par createObject
    regarde la doc c'est complet (sur msdn par exemple)

  9. #9
    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
    Citation Envoy� par javatwister
    alternative assez rapide:
    JT, pourquoi tu aimes pas xmlHttpRequest? Tu peux faire exactement la m�me chose, d'une fa�on plus propre et sp�cifiquement faite pour. Je suis d'accord qu'au final, c'est exactement pareil, mais pourquoi ajouter un script plutot que d'utiliser XHR?!?


    Citation Envoy� par sekaijin
    question de principe je suis contre embarquer les requetes SQL dans le javascript

    � mon avis la meilleur solution est de d�finir un service applicatif (une page asp php ou autre) qui est un sens par exemple "donner liste des client" "calculer la tva" etc. cette page en fonction des param�tres fournis effectue le traitement et renvoit le r�sultat brut (sous forme de donn�e pas de HTML mais JSON XML txt ...)
    Euh, question de s�curit� aussi. Effectivement, la solution est d'utiliser Ajax pour r�cuperer une liste d'objet m�tier, pas de laisser Ajax faire la requete SQL!!!!

  10. #10
    Expert confirm�
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Ao�t 2003
    Messages
    3 684
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activit� : danseur

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 3 684
    Par d�faut
    pas � me justifier l�-dessus; j'ai 3 applis parfaitement rod�es qui marchent avec xhr;
    mais simplement pour rafraichir une balise en fonction d'un param�tre php, c'est un peu ridicule de mobiliser une demi-douzaine de m�thodes javascript!

  11. #11
    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
    Citation Envoy� par javatwister
    pas � me justifier l�-dessus; j'ai 3 applis parfaitement rod�es qui marchent avec xhr;
    mais simplement pour rafraichir une balise en fonction d'un param�tre php, c'est un peu ridicule de mobiliser une demi-douzaine de m�thodes javascript!
    Je ne te demande pas de te justifier, j'essaye de comprendre.

    Avec XHR, je fais �a en une seule m�thode aussi ! tu ouvres ton XHR, tu recuperes le flux au format JSON, et il ne te reste plus qu'� l'�valuer!
    Enfin, les gouts et les couleurs

Discussions similaires

  1. Lancer requ�tes sql en utilisant sqlplus.exe
    Par galene86 dans le forum VBScript
    R�ponses: 3
    Dernier message: 29/05/2015, 10h29
  2. [2.x] O� placer les requ�tes SQL (sans utiliser d'ORM)
    Par xhion dans le forum Symfony
    R�ponses: 6
    Dernier message: 20/12/2012, 09h51
  3. Renommer des colonnes dans une requ�te SQL en utilisant bcp
    Par Polochon_77 dans le forum D�veloppement
    R�ponses: 2
    Dernier message: 14/01/2012, 18h50
  4. [PHP 5.0] Ex�cuter une requ�te SQL dans une fonction Javascript
    Par PrinceMaster77 dans le forum Langage
    R�ponses: 13
    Dernier message: 08/07/2011, 04h53
  5. [AJAX] requ�te sql dans js
    Par cheers94wow dans le forum G�n�ral JavaScript
    R�ponses: 1
    Dernier message: 17/05/2006, 13h24

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