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

AJAX Discussion :

[AJAX] Remplissage options avec résultat d'une requête mysql


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Marne (Champagne Ardenne)

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Par défaut [AJAX] Remplissage options avec résultat d'une requête mysql
    Bonjour a tous.

    En fait je suis a la recherche d'un exemple concret car je n'arrive pas a comprendre et adapter les tutos existants en ligne.

    Je dois remplir un select a partir d'une base de donnees mysql dans un fichier javascript qui est importé dans la page php.

    La page php je l'ai faite avec un retour en json mais comment acceder concretement a cette page et exploiter ce qu'elle me renvoi?

    Si quelqun pouvait m'expliquer cela (je comprends vite mais faut m'expliquer longtemps lol) ça serait genial.

    Merci d'avance

    la page php avec l'acces a la base et l'encodage json:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $requete['type_ligne']="SELECT id_type_ligne, nom_type, type_ligne FROM type_ligne;";
    $type_ligne=$sql->TabResSQL($requete['type_ligne']);
    $type_ligne=json_encode($type_ligne);
    return $type_ligne;
    ?>

    le code js dans le quel je dois integrer le resultat:
    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    function ajout_nombre_select(nb, objInput)
    {
    	var reg = /^[0-9]*$/;
     
    	if(!reg.test(objInput.value))
    	{
    		objInput.value = objInput.value.substring(0,objInput.value.length-1);
    	}
    	//recuperation du conteneur (div) qui contiendra les select
    	c=document.getElementById('div_a_remplir_suivant_nb_po');
    	//Suppression des select presents dans le conteneur au cas de changement avant remplissage
    	//avec le bon nombre de select
    	while (c.hasChildNodes())
    	{
    		c.removeChild(c.lastChild);
    	}
     
    	//Boucle qui remplis le conteneur avec le nombre de select demande.
    	for(boucle = 1; boucle <= nb; boucle++)
    	{
    		//creation du label contenant le titre du select
    		label=document.createElement("label");
    		//creation neud de text pour le label
    		text_label= document.createTextNode('PO N°'+boucle);
    		//asignation du neud text au label
    		label.appendChild(text_label);
    		//creation span
    		span=document.createElement("span");
    		//attribution de la classe filtre legende au span
    		span.setAttribute('class',"filtres legende");
    		//assignation du label au span
    		span.appendChild(label);
    		//assignation du span au conteneur (div)
    		c.appendChild(span);
    		//creation du select
    		ch=document.createElement('select');
     
     
     
    		elem1=document.createElement("option");
    		elem2=document.createElement("option");
    		elem3=document.createElement("option");
    //                                        Attribution des valeurs au select
    		elem1.setAttribute('value',"...");
    		elem2.setAttribute('value',"analogique");
    		elem3.setAttribute('value',"numerique");
    //                                        Creation des neux de text qui seront affiche dans le select
    		valeur1 = document.createTextNode('...');
    		valeur2 = document.createTextNode('Analogique');
    		valeur3 = document.createTextNode('Numerique');
    //                                        Atribution des neux de text aux options
    		elem1.appendChild(valeur1);
    		elem2.appendChild(valeur2);
    		elem3.appendChild(valeur3);
    //                                        Atribution des options au select
    		ch.appendChild(elem1);
    		ch.appendChild(elem2);
    		ch.appendChild(elem3);
    //                                        On donne un nom au select
    		ch.setAttribute('name',"po"+boucle);
    //                                         Atribution du select au conteneur
    		c.appendChild(ch);
     
     
    		//creation du label contenant le titre de la checkbox
    		label2=document.createElement("label");
    		//creation neud de text pour le label
    		text_label2= document.createTextNode('Mise en continuité');
    		//asignation du neud text au label
    		label2.appendChild(text_label2);
    		//creation span
    		span2=document.createElement("span");
    		//attribution de la classe filtre legende au span
    		span2.setAttribute('class',"filtres legende");
    		//assignation du label au span
    		span2.appendChild(label2);
    		//assignation du span au conteneur (div)
    		c.appendChild(span2);
    		//creation de la checkbox
    		ch2=document.createElement('input');
    		ch2.setAttribute('type','checkbox');
    		//Attribution des valeurs à la checkbox
    		ch2.setAttribute('value',"oui");
    		//On donne un nom à la checkbox
    		ch2.setAttribute('name',"mise_en_con"+boucle);
    		//Atribution de la checkbox au conteneur
    		c.appendChild(ch2);
     
     
    			 //creation du label contenant le titre du select
    		label=document.createElement("label");
    		//creation neud de text pour le label
    		text_label= document.createTextNode('Avec PO N°');
    		//asignation du neud text au label
    		label.appendChild(text_label);
    		//creation span
    		span=document.createElement("span");
    		//attribution de la classe filtre legende au span
    		span.setAttribute('class',"filtres legende");
    		//assignation du label au span
    		span.appendChild(label);
    		//assignation du span au conteneur (div)
    		c.appendChild(span);
    		//creation du select
    		ch=document.createElement('select');
    		//creation des options
     
    		for(var i = 1; i <= nb; i++)
    		{
     
    			if(i!=boucle)
    			{
    				elem=document.createElement("option");
    				elem.setAttribute('value',i);
    				valeur = document.createTextNode(i);
    				elem.appendChild(valeur);
    				ch.appendChild(elem);
    			}
     
     
    		}
     
    		//On donne un nom au select
    		ch.setAttribute('name',"po2"+boucle);
    		 //Atribution du select au conteneur
    		c.appendChild(ch);
     
    	   //creation d'un br'
    		separateur = document.createElement("br");
    		//Atribution du br au conteneur apres le select.
    		c.appendChild(separateur);
    	}
    }

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Tu veux dire un appel ajax ?.
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Marne (Champagne Ardenne)

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Par défaut
    en fait oui j'ai une page js qui est appelé dans ma page php

    Je dois trouver un moyen de récupérer des informations en BdD mysql et construire mon select avec mais comme j'ai fait l'impasse (j'ai honte je sais ) sur ajax je cherche mais ne comprends rien aux tuto trouvé

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Le principe d'ajax est de faire un aller retour sur le serveur sans recharger la page ...

    Le schéma classique lorsque l'on avait besoin d'aller cherche une info sur le serveur était d'avoir un formulaire, ce qui impliquait un rechargement de page.

    Ajax (xmlhttprequest) permet de lancer une requete vers le seveur sans recharger la page.

    en gros tu pointes vers une page (en passant ou non des paramètres)
    et tu reçois en retour une réponse du serveur sous forme d'xml ou de string

    Pour vulgariser, c'est comme si tu envoyais un chauffeur avec une liste de courses chercher des marchandises sur le serveur.
    Il part avec la liste de courses (les paramètres) arrive à l'adresse indiquée, remets sa liste.
    Le vendeur du magasin (langage serveur) prend la liste et opère aux traitements coté sevreur (requete ou autre ...) puis fait un echo du resultat

    Le chauffeur récupère les marchandises (la réponse du serveur xml ou string)
    et les ramène au navigateuir coté client.
    De retour sur la page ton javascript tiaite les marchandises reçues (xml ou string)

    Si tu comprends ce schéma jette un oeil sur ce tuto http://siddh.developpez.com/articles/ajax/
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Marne (Champagne Ardenne)

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Par défaut
    Oui ça c'est le principe de base. Mais dans la pratique je bloque.

    J'ai construit un objet xlmhttprequest comme ça:
    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
    if (window.XMLHttpRequest)    //  Objet standard
    { 
    	xhr = new XMLHttpRequest();     //  Firefox, Safari, ...
    } 
    else  if (window.ActiveXObject)      //  Internet Explorer
    {
    	xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
     
    xhr.onreadystatechange = function()
    {
    	var affich_list=xhr.responseText;
    	alert(affich_list);
    	//obj = document.getElementById(id_ecrire);
    	//obj.innerHTML = affich_list;
    };
     
    xhr.open("GET", "acces_ajax_options_poster.php" , true);
    xhr.send(null);
    Trouve dans un tuto

    Mais comment je fais pour le lancer vers une page php qui effectue la requête et surtout comment lire cela après?

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    lis le tuto de siddh c'est bein expliqué ...
    la declaration du "moteur"
    l'appel
    le retour ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/09/2014, 13h49
  2. Réponses: 11
    Dernier message: 06/02/2013, 15h25
  3. Réponses: 3
    Dernier message: 15/05/2012, 20h28
  4. [FPDF] Utilisation du résultat d'une requête MySQL
    Par ns_deux dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 25/01/2009, 01h02

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