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

PHP & Base de données Discussion :

Probleme recuperation variable autocompletion listbox liées


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 62
    Points
    62
    Par défaut Probleme recuperation variable autocompletion listbox liées
    Bonjour à tous,

    Voilà je suis en train de faire un formulaire dans lequel il y a une autocomplétion. Cette autocomplétion ramène le nom du document dans l'inputbox saisi par l'user et dans un second temps, j'affiche les versions disponibles pour ce document par le biais d'un select box. Jusque là, c'est bon.

    Mon problème c'est que dès je "POST" mon formulaire je ne trouve pas le moyen de récupérer mon numéro de version.

    Ma page de formulaire se décompose de la façon suivante :

    docversion.php : contient le formulaire.
    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
    <html>
    <head>
    <title>test autocompletion document et version</title>
    <script type="text/javascript" src="jquery.js"></script>
    <script type='text/javascript' src='jquery.autocomplete.js'></script>
    <link rel="stylesheet" type="text/css" href="jquery.autocomplete.css" />
     
    <script type="text/javascript">
    $().ready(function() {
    //fonction qui fait l'autocompletion pour rechercher le nom du document
    	$("#course").autocomplete("get_course_list.php", {
    		width: 260,
    		matchContains: true,
    		selectFirst: false
    	});
    });
    </script>
     
    <script type="text/javascript">
    function showversion(str)
    //fonction qui va récupérer le(s) version(s) du document passé en paramètre dans l'input name="couse"
    {
    if (str=="")
      {
      document.getElementById("txtHint").innerHTML="";
      return;
      }
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
        }
      }
    xmlhttp.open("GET","getversiontst.php?q="+str,true);
    xmlhttp.send();
    }
    </script>
    </head>
    <body>
    <?php
    require_once "config.php";
    ?>
    Nom du document <label>:</label>
    <form autocomplete="off" action="showidz.php" method="POST">
    			<input type="text" name="course" id="course" size="40" onclick="showversion(this.value)"/><br/>
    			<div id="txtHint"><b>Liste des versions</b></div>
    <input type="submit" value="Submit" />
    </form>
    			</body>
    </html>
    getversiontst.php : classe php qui récupére les versions en fonction du document passé en paramètre dans docversion.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
    <?php
    //connexion BDD
    require_once "config.php";
     
    $q=$_GET["q"];
     
    $sql ="
    SELECT `NumeroVersion` FROM `version`, document WHERE document.idversion = version.idversion and document.NomDocument ='".$q."'
    ";
     
    $result = mysql_query($sql);
     
    //affiche le selectbox avec les versions en fonction du NomDocument
    echo "<select name='numeroversion'>";
    while($row = mysql_fetch_assoc($result)){
    			echo "<option value='".$row["idversion"]."'>".$row["NumeroVersion"]."</option>";
    		}
     
    	       echo "</select>";
     
    mysql_close($con);
    ?>
    get_course_list.php : autocomplétion pour le nom du document
    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
    <?php
    require_once "config.php";
     
    header( 'content-type: text/html; charset=utf-8' );
     
    $q = mysql_real_escape_string(strtolower($_GET["q"]));
    if (!$q) return;
     
    $sql = "select distinct NomDocument from Document where NomDocument LIKE '%$q%'";
     
    $rsd = mysql_query($sql);
    while($rs = mysql_fetch_array($rsd)) {
    	$cname = $rs['NomDocument'];
    	echo "$cname\n";
    }
    ?>
    page php de test qui doit récupérer les infos de docversion.php, c'est là je n'arrive que à récupérer le nom du document mais pas l'id de la version. Avez vous une idée pour me dé patauger de ce problème ??

    showidz.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $docname = $_POST["course"];
    $idversion = $_POST["numeroversion"];
    echo "$docname</br>";
    echo $idversion;
    ?>

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    je suppose que si tu fais un var_dump de $_POST dans ta page de destination, tu ne trouves que "course" et pas "numeroversion" ?

    Au passage, si tu utilises jquery pour ton autocomplete, tu peux aussi l'utiliser pour les requêtes ajax

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 62
    Points
    62
    Par défaut
    Bonjour Celira,

    Oui effectivement j'ai bien mon "course" et pas mon "numeroversion" .

    J'ai finalement changé la structure de mon script. J'utilise l'exemple fourni http://siddh.developpez.com/articles/ajax/

    j'ai le même problème lors du post, je ne récupère pas le numéroversion

    docversion.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
     
    <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('numeroversion').innerHTML = leselect;
    					}
    				}
    				// Ici on va voir comment faire du post
    				xhr.open("POST","rep_PhpAjax.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 document
    				sel = document.getElementById('course');
    				//iddocument = sel.options[sel.selectedIndex].value;
    				iddocument = sel.value;
    				xhr.send("idDoc="+iddocument);
    			}
    		</script>
     
    </head>
    <body>
    <?php require_once "config.php"; ?>
    <form name="test1" method="post" action="showidz.php" >
    Nom du document <label>:</label><br>
    <input type="text" name="course" id="course" size="40" onclick='go()'/><br/>
    <label>Version</label>
    				<div id='numeroversion' style='display:inline'>
    				<select name='numeroversionn'>
    					<option value='-1'>Choisir une version</option>
    				</select>
    				</div>
    <input type="submit" name="OK" value="OK">
    </form>
    </body>
    </html>
    rep_PhpAjax.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
    <?php
    require_once "config.php";
     
    echo "<select name='numeroversion'>";
    	if(isset($_POST["idDoc"])){
     
    		$res = mysql_query("SELECT `NumeroVersion` FROM `version`, document WHERE document.idversion = version.idversion 
    		and document.NomDocument ='".$_POST["idDoc"]."'");
    		while($row = mysql_fetch_assoc($res)){
    			echo "<option value='".$row["idversion"]."'>".$row["NumeroVersion"]."</option>";
    		}
    	}
    	echo "</select>";
    ?>

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 62
    Points
    62
    Par défaut
    Je ne vois vraiment pas comment récupérer le numero version dans ma page showidz.php qui était dans mon docversion.php.

    J'ai beau faire dans showidz.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $version = $_POST["numeroversion"];
    mais la variable reste vide. Je sèche littéralement

Discussions similaires

  1. [MySQL] Probleme recuperer variable listbox
    Par Jarod51 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/07/2011, 14h58
  2. recuperer variable session probleme
    Par Hooligeek dans le forum Langage
    Réponses: 1
    Dernier message: 27/04/2008, 12h40
  3. [AJAX] Recuperation variable de l'input
    Par laxe13 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/02/2008, 02h50
  4. [FLASH 8] Probléme récupération variable PHP
    Par hedgehog dans le forum Flash
    Réponses: 5
    Dernier message: 31/08/2006, 00h28
  5. [C#] [débutant ]Probleme recuperation variable
    Par p1k1 dans le forum ASP.NET
    Réponses: 9
    Dernier message: 08/03/2006, 12h09

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