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] Traiter données d'une table onchange select


Sujet :

AJAX

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut [AJAX] Traiter données d'une table onchange select
    Bonjour, je souhaiterai traiter les données d'une table lorsque l'on choisit une option d'un select: voici mon code

    Code php : 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
    <form id="userForm" name="userForm" action="script/envoimail.php" method="post">
    <fieldset class="step">
    <legend>Professional information</legend>
    <p>
    	<label>Group:</label>
    	<select id="house" name="house" size="1" STYLE="width:212px" onchange="checkGroup();">
    		<option value="" selected>
    <?php
    $sql = "SELECT MaisonMere FROM Societe WHERE MaisonMere!='' ORDER BY MaisonMere ASC";
    $rep = odbc_exec($co,$sql) or die(odbc_errormsg());
    while($data = odbc_fetch_array($rep))
    {
    ?>	
    		<option value="<?php echo utf8_encode($data['MaisonMere']) ?>"><?php echo utf8_encode($data['MaisonMere'])?>
    <?php
    }
    ?>
    	</select>
    </p>
    <p>
    	<label>Company name:</label>
    	<select id="company" name="company" size="1" STYLE="width:212px">
    		<option value="" selected>

    Je voudrais que les options du select company varient en fonction du groupe choisit.J'ai également mon code ajax
    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
    function checkGroup(){
    	var group = document.userForm.house.value;
    	var company = document.userForm.company.value;
    	var xhr = getXMLHttpRequest();
    	//opening file which execute request
    	xhr.open("POST","script/req.php",true);
    	//headers
    	xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    	//data
    	xhr.send(group); 
    	xhr.send(company);
    	xhr.onreadystatechange = function() {
    		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
    			callback(xhr.responseText);
    		}
    	};
    }
    Puis pour terminer le php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    //Connection au server de bd
    ...........
    //
     
    $req = $database->query("SELECT RaisonSociale FROM Participant,Societe WHERE MaisonMere=".$_REQUEST['group']." AND IDSociete.Participant = IDSociete.Societe");
     
    ?>

    Et la je bloque, quelqu'un saurait comment faire pour que le résultat de la requête que j'ai envoyé, aille prendre la valeur des options du select

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    xhr.send(group); 
    xhr.send(company);
    Euh... ce n'est pas comme ça qu'on envoie plusieurs paramètres au serveur...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    J'ai changé, voici mon nouveau code

    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
    function getXhr(){
    	var xhr = null;
    	if(window.XMLHttpRequest)	//Firefox & Others
    		xhr = new XMLHttpRequest();
    	else if(window.ActiveXObject){ //Internet Explorer
    		try{
    			xhr = new ActiveXObject("Msxml2.XMLHTTP");
    		}catch(e){
    			xhr = new ActiveXObject("Microsoft.XMLHTTP");
    		}
    	}else{	//XMLHttpRequest not supported
    		alert("Your Browser doesn't support XMLHttpRequest Object ...");
    		xhr = false;
    	}
    	return xhr;
    }
     
    function go(){
    	var xhr = getXhr();
    	xhr.onreadystatechange = function(){
    		if(xhr.readyState == 4 && xhr.status == 200){
    			var leselect = xhr.responseText;
    			document.getElementById('company').innerHTML = leselect;
    		}
    	}
    	xhr.open("POST","req.php",true);
    	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	var sel = document.getElementById('house');
    	idhouse = sel.options[sel.selectedIndex].value;
    	xhr.send("idGroup="+idhouse);
    }
    Code php : 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
    <p>
    	<label>Group:</label>
    	<select id="house" name="house" size="1" STYLE="width:212px" onchange="go();">
    		<option value="" selected>
    <?php
    $sql = "SELECT MaisonMere FROM Societe WHERE MaisonMere!='' ORDER BY MaisonMere ASC";
    $rep = odbc_exec($co,$sql) or die(odbc_errormsg());
    while($data = odbc_fetch_array($rep))
    {
    ?>	
    		<option value="<?php echo utf8_encode($data['MaisonMere']) ?>"><?php echo utf8_encode($data['MaisonMere'])?>
    <?php
    }
    ?>
    	</select>
    </p>
    <p>
    	<label>Company name:</label>
    	<select id="company" name="company" size="1" STYLE="width:212px">
    		<option value="" selected>
    	</select>
    </p>

    Puis le script php:

    Code php : 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
    $req = $database->query("SELECT RaisonSociale FROM Participant,Societe WHERE MaisonMere=".$_REQUEST['group']." AND IDSociete.Participant = IDSociete.Societe");
    	$req = $database->query("SELECT RaisonSociale FROM Societe WHERE MaisonMere=".$_REQUEST['group'].")";
    	while($recup = $req->fetch())
    	{
    		echo "<option value=".$recup['RaisonSociale'].">"$recup['RaisonSociale'];
    	}
     
    	echo "<select name='company'>";
    	if (isset($_POST["house"])){
    		//Connection DB
                   //...
    		$sql = "SELECT RaisonSociale FROM Participant,Societe WHERE MaisonMere=".$_POST['house']." AND IDSociete.Participant = IDSociete.Societe";
    		$rep = odbc_exec($co,$sql) or die(odbc_errormsg());
    		while($row = odbc_fetch_array($rep)){
    			echo "<option value='".$row["RaisonSociale"]."'>".$row["RaisonSociale"]."</option>";
    		}
    	}
    	echo "</select>";

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Ton code PHP génère une balise <select>, or
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('company').innerHTML = leselect;
    l'élément dont l'id est company est déjà une balise <select>, résultat, tu cherches à insérer une balise <select> dans une autre, ce qui n'est pas possible !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Et comment je peux faire dans ce cas pour insérer des valeurs dans les options du select ? Je bloque un peu désolé ..

    EDIT:J'arrive bien à récupérer la valeur POST: par exemple si dans mon php j'ai

    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
    <select name="company" id="company">
     
    <?php
    		$server="CDP-SQL2\\WDSK";
    		$database="CedepWDSK_test";
    		$user="xxxxxx";
    		$password="xxxxxxx";
    		$co = odbc_connect("Driver={SQL Server};Server=$server;Database=$database;charset=UTF-8", $user, $password) or die(odbc_errormsg());
    		//$sql = "SELECT RaisonSociale FROM Participant,Societe WHERE MaisonMere=".$_POST['Group']." AND IDSociete.Participant = IDSociete.Societe";
    		$sql = "SELECT IDSociete FROM Societe WHERE MaisonMere=".$_POST['Group'];
     
    		echo "<option value=".$_POST['Group'].">".$_POST['Group']."
    		}
     
    ?>
    J'obtiens bien la valeur du 1er select dans le 2 select quand j'ai choisit une valeur quand j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var sel = document.getElementById('house');
    				idhouse = sel.options[sel.selectedIndex].value;
    				xhr.send("Group="+idhouse);
    Dans ma fonction js, mais si je veux insérer depuis ma base de données dans mon php: par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $sql = "SELECT IDSociete FROM Societe WHERE MaisonMere=".$_POST['Group'];
     
    		$rep = odbc_exec($co,$sql) or die(odbc_errormsg());
     
    		while($row = odbc_fetch_array($rep)){
     
    		echo "<option value=".$row['IDSociete'].">".$row['IDSociete']."</option>";
     
    		}
    Je n'obtiens rien

Discussions similaires

  1. changer des données d'une table avec select.
    Par PHPkoala dans le forum Développement
    Réponses: 2
    Dernier message: 23/03/2010, 16h07
  2. Selection des données dans une table
    Par Bouanda dans le forum VBA Access
    Réponses: 1
    Dernier message: 15/02/2008, 12h48
  3. Réponses: 4
    Dernier message: 27/05/2007, 15h06
  4. Réponses: 7
    Dernier message: 23/04/2007, 15h35
  5. SQL - Traiter des données d'une table
    Par david71 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/02/2005, 16h47

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