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 :

Affichage des listes liées


Sujet :

AJAX

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 22
    Points : 8
    Points
    8
    Par défaut Affichage des listes liées
    Bonjour,

    Après avoir lu le tuto suivant http://http://siddh.developpez.com/articles/ajax/ et appliqué ce qu'ils disaient je me retrouve avec les deux pages de code suivant : (index.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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    <html>
    	<head>
    		<title>Test_code</title>
    		<script type='text/javascript'>
     
    			function getXhr(){
                                    var xhr = null; 
    				if(window.XMLHttpRequest) // Firefox et autres
    				   xhr = new XMLHttpRequest(); 
    				else if(window.ActiveXObject){ // Internet Explorer 
    				   try {
    			                xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			            } catch (e) {
    			                xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			            }
    				}
    				else { // XMLHttpRequest non supporté par le navigateur 
    				   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    				   xhr = false; 
    				} 
                                    return xhr;
    			}
     
    			/**
    			* Méthode qui sera appelée sur le click du bouton
    			*/
    			function go(){
    				var xhr = getXhr();
    				// On défini ce qu'on va faire quand on aura la réponse
    				xhr.onreadystatechange = function(){
    					// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    					if(xhr.readyState == 4 && xhr.status == 200){
    						leselect = xhr.responseText;
    						// On se sert de innerHTML pour rajouter les options a la liste
    						document.getElementById('chantier').innerHTML = leselect;
    					}
    				}
     
    				// Ici on va voir comment faire du post
    				xhr.open("POST","ajaxChantier.php",true);
    				// ne pas oublier ça pour le post
    				xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    				// ne pas oublier de poster les arguments
    				// ici, l'id du client
    				sel = document.getElementById('client');
    				idclient = sel.options[sel.selectedIndex].value;
    				xhr.send("id_client="+idclient);
    			}
    		</script>
    	</head>
    	<body>
    		<form>
    			<fieldset style="width: 500px">
    				<label>Client</label>
    				<select name='client' id='client' onchange='go()'>
    					<option value='-1'>--- Selectionner un client ---</option>
    				<?php
                                    $bdd =pg_connect("host=localhost port=5432 dbname=postgres user=postgres password=*******");
        $sql = 'SELECT * FROM client ORDER BY nom_prenom';
            $req = pg_query($sql) or die('Erreur SQL !<br/>'.$sql.'<br/>'.pg_last_error());
            while ($data = pg_fetch_array($req)){
    ?>
    		<option value="<?php echo $data['nom_prenom']; ?>"><?php echo $data['nom_prenom']; ?></option>
    <?php
            }
    ?>
    	</select>
    				<label>Chantier</label>
    				<div id='chantier' style='display:inline'>
    				<select name='chantier'>
    					<option value='-1'>---Choisir une date---</option>
    				</select>
    				</div>
    			</fieldset>
    		</form>
    	</body>
    </html>
    et ajaxChantier.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
    <?php
    	echo "<select name='chantier'>";
    	if(isset($_POST['client'])){
    		$bdd =pg_connect("host=localhost port=5432 dbname=postgres user=postgres password=*******");
    		$sql1 = 'SELECT id,date FROM chantier WHERE id_client = ".$_POST["id_client"]."ORDER BY date';
    		$req1 = pg_query($sql1) or die('Erreur SQL !<br/>'.$sql1.'<br/>'.pg_last_error());
    		while ($data1 = pg_fetch_assoc($req1)){
    			print $data1;
    ?>
    			<option value="<?php echo $data1['date']; ?>"><?php echo $data1['date']; ?></option>
    <?php
    		}
    	}
    ?>

    Lorsque je clique sur le client dont je veux voir la liste de ses chantiers, la liste associée s'actualise mais elle est vide. Cela fait deux jours que je bloque, pouvez vous y jeter un coup d’œil svp. Je ne vois pas ou j'ai pu me tromper.

    Merci

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    peut être parce que coté client tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.send("id_client="+idclient);
    et coté serveur
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_POST['client'])){

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    Bonjour,
    Je viens d'essayer de mettre les mêmes variable c'est à dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.send("id_client="+idclient);
    (car id_client est un attribut contenue dans ma table 'chantier'
    et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_POST['id_client'])){
    ...
    Et cela ne fonctionne toujours pas.

    La table 'client' est composée de la manière suivante :
    + id (clé primaire), +nom_prenom (VARCHAR), +email (VARCHAR), id_identification (clé_étrangère en provenance de la table 'identification')

    La table 'chantier' est composée de la manière suivante:
    + id (clé primaire), +date (date), +id_type_de_mesure(clé etrangère de la table 'type_de_mesure'), +id_client (clé étrangère de la table 'client')

    Svp aidez moi
    Merci

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql1 = 'SELECT id,date FROM chantier WHERE id_client = ".$_POST["id_client"]."ORDER BY date';
    Une variable php dans une chaîne délimité par des apostrophes n'est pas interprétée comme variable.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql1 = "SELECT id,date FROM chantier WHERE id_client = '".$_POST["id_client"]."' ORDER BY date';

    Sinon, pense aussi à utiliser une requête préparée pour éviter les injections sql.

    A+.

Discussions similaires

  1. [AJAX] cacher des listes liées dynamiques
    Par Stageuse44 dans le forum AJAX
    Réponses: 12
    Dernier message: 18/07/2011, 18h38
  2. [AJAX] des listes liées
    Par feadream dans le forum AJAX
    Réponses: 4
    Dernier message: 13/04/2011, 15h55
  3. Réponses: 11
    Dernier message: 29/06/2009, 22h20
  4. Information et aide à propos des listes liées et de XMLHttpRequest
    Par redpopo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/04/2007, 17h05
  5. Utilisation des liste liées (ajax) avec du perl
    Par Jim_Nastiq dans le forum Web
    Réponses: 1
    Dernier message: 12/07/2006, 12h07

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