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] Listes liées et affichage tableau


Sujet :

AJAX

  1. #1
    Membre à l'essai
    Homme Profil pro
    apprenti webmaster
    Inscrit en
    Octobre 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : apprenti webmaster

    Informations forums :
    Inscription : Octobre 2011
    Messages : 4
    Par défaut [AJAX] Listes liées et affichage tableau
    Bonjour

    Je voudrais réaliser un formulaire avec 2 listes liées... ou plutôt une liste (propriétés) qui "appelle" une 2ème liste (valeurs) sous forme de tableau (et non de liste déroulante).
    Je me suis servi des tutos suivants :
    http://siddh.developpez.com/articles/ajax/
    http://j-reaux.developpez.com/tutori...-tableau-html/

    Mes requêtes sql sont les suivantes :
    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
    CREATE TABLE `prop` (
      `id` tinyint(4) NOT NULL auto_increment,
      `nom` varchar(50) NOT NULL,
      PRIMARY KEY  (`id`)
    );
     
    insert into `prop` values 
    (1,'p1'),
    (2,'p2'),
    (3,'p3');
     
    CREATE TABLE `val` (
      `id` tinyint(4) NOT NULL auto_increment,
      `nom_val` varchar(50) NOT NULL,
      `idProp` tinyint(4) default NULL,
      PRIMARY KEY  (`id`)
    ) ;
     
    insert into `val` values 
    (1,'v1',1),
    (2,'v1',2),
    (3,'v1',3),
    (4,'v2',1),
    (5,'v2',2),
    (6,'v3',1),
    (7,'v4',2),
    (8,'v4',3),
    (9,'v5',3);
    Mon fichier propriete.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
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    	<head>
    		<title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
      	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      	<meta name="language" content="fr">
    		<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 à la liste
    						document.getElementById('val').innerHTML = leselect;
    					}
    				}
     
    				// Ici on va voir comment faire du post
    				xhr.open("POST","tableau.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 de la propriété
    				sel = document.getElementById('prop');
    				idprop = sel.options[sel.selectedIndex].value;
    				xhr.send("idProp="+idprop);
    			}
    		</script>
    	</head>
    	<body>
    		<form>
    				<legend>Listes liées</legend>
    				<label>Propriétés</label>
    				<select name='prop' id='prop' onchange='go()'>
    					<option value='-1'>Aucune</option>
    					<?
    						mysql_connect("serveur","admin","mdp");
    						mysql_select_db("base");
    						$res = mysql_query("SELECT * FROM prop ORDER BY nom");
    						while($row = mysql_fetch_assoc($res)){
    							echo "<option value='".$row["id"]."'>".$row["nom"]."</option>";
    						}
    					?>
    				</select>
    <br /><input type="submit" name="ok" id="ok" value="Envoyer" />
    		</form>
    <table id="val" style="position: absolute; top: 80px; left: 250px">
        <tbody>
        </tbody>
    </table>
     
    	</body>
    </html>
    Mon fichier tableau.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
    <?php
    echo    '<table id="val">
            <tbody>';
            if(isset($_POST["idProp"])){
                    $connexion = mysql_connect("serveur","admin","mdp");
                    mysql_select_db("base");
                    $res = mysql_query("SELECT id,nom_val FROM val 
                            WHERE idProp=".$_POST["idProp"]." ORDER BY nom_val");
     
    // AFFICHAGE TABLEAU
     
     
    $NbrCol = 1;
    $result = mysql_query($res);
    // --------------------------------
    // nombre de cellules à remplir
    $NbreData = mysql_num_rows($result);
    // --------------------------------
    // affichage
    $NbrLigne = 0;
    if ($NbreData != 0) {
            $j = 1;
     
            while ($val = mysql_fetch_array($result)) 
            {
                    if ($j%$NbrCol == 1) {
                            $NbrLigne++;
                            $fintr = 0;
    ?>		<tr>
    <?php           }
    ?>
    			<td>
    <?php                   // -------------------------
                            // DONNEES A AFFICHER dans la cellule
                            echo $val['nom_val'];
                            // -------------------------
    ?>			</td>
    <?php           if ($j%$NbrCol == 0) {
                            $fintr = 1;
    ?>		</tr>
    <?php           }
                    $j++;
            } // fin while affichage tableau
            // fermeture dernière balise /tr
            if ($fintr!=1) {
    ?>		</tr>
    <?php   } 
     
     
                    }  
     
        mysql_close($connexion);
            }  
     
    echo    "</tbody>
             </table>";
    ?>
    Les erreurs que j'obtiens sont :
    Warning: mysql_query() expects parameter 1 to be string, resource given in... tableau.php on line :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $result = mysql_query($res);
    Warning: mysql_num_rows() expects parameter 1 to be resource, null given in... tableau.php on line :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $NbreData = mysql_num_rows($result);
    Si quelqu'un peut m'aiguiller vers une solution ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $res = mysql_query("SELECT id,nom_val FROM val 
    			WHERE idProp=".$_POST["idProp"]." ORDER BY nom_val");
    // AFFICHAGE TABLEAU
    $NbrCol = 1;
    $result = mysql_query($res);
    A remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $result = mysql_query("SELECT id,nom_val FROM val 
    			WHERE idProp=".$_POST["idProp"]." ORDER BY nom_val");
    // AFFICHAGE TABLEAU
    $NbrCol = 1;

  3. #3
    Membre à l'essai
    Homme Profil pro
    apprenti webmaster
    Inscrit en
    Octobre 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : apprenti webmaster

    Informations forums :
    Inscription : Octobre 2011
    Messages : 4
    Par défaut
    Merci beaucoup jreaux62 ! ... effectivement, voilà qui est plus logique.

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

Discussions similaires

  1. [AJAX] Listes liées: quelle solution?
    Par Xavier1979 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 23/05/2007, 09h40
  2. [AJAX] Listes liées
    Par oranocha dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/02/2007, 06h59
  3. [AJAX] listes liées : faire une redirection
    Par _nico42_ dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/10/2006, 13h28
  4. [AJAX] liste liée ajax: s'iou plait, cherchez l'erreur
    Par redwire dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/09/2006, 20h26
  5. [AJAX]Listes liées multiples
    Par Schuss dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 27/06/2006, 16h31

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