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 :

problème avec php et javascript sous odbc : listes déroulantes


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut problème avec php et javascript sous odbc : listes déroulantes
    Bonjour à tous!
    Voilà je suis en stage développement et je suis bloquée sur un problème depuis quelques jours. Je dois faire une page de recherche en fonction des éléments de me bases de données et je dois pour cela créer 3 listes déroulantes de choix. G trouvé un code intéressant qui utilise en plus du javascript dont je connais pas grand chose.....
    Le problème est que mes 2 dernières listes ne prennent pas en compte les fonctions qui les concernent, c'est à dire ValideLd2.php et ValideLd3.php. Je m'explique: les 2 dernières listes sont, en fait, ma 1ere liste où j'affiche les noms de toutes les tables de ma base de données. Je sais pas pourquoi les 2 derniers scripts ne sont pas prises en compte. Et j'ai remarqué que quand je mets en commentaires toutes les fonctions de ListeCP.php, ça change rien du tout. Donc ça veut dire que le problème est dû à ListeCP.php. Merci de bien vouloir m'aider car j'y comprends rien et je sais plus quoi faire. Please help me I'm desperate Merci pour vos réponses

    ListeCP.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
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Listes déroulantes pilotées par JavaScript Asynchrone et une Base de données</title>
     
    <script type="text/javascript">
    //var Ld1Id='';
    //var Ld2Id='';
    //var id_liste='';
     
    function ValideLd2(val) {
    	Ld1Id=val;
    	id_liste='2';//Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
    	var LD_URL = 'ValideLd2.php?Ld1='+Ld1Id;
    	ObjetXHR(LD_URL)
    	// Réinitialisation de Ld3 si modification de LD1 après passage en Ld2
    	if (Ld2Id!='') {ValideLd3('');	}
    }
     
    function ValideLd3(val) {
    	Ld2Id=val; //id_commune
    	id_liste='3'; //Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
    	var LD_URL = 'ValideLd3.php?Ld1='+Ld1Id+'&Ld2='+Ld2Id;
    	if (Ld2Id=='') {var LD_URL = 'ValideLd3.php';}
    	ObjetXHR(LD_URL)
    }
     
    function ObjetXHR(LD_URL) {
    	//creation de l'objet XMLHttpRequest
    	if (window.XMLHttpRequest) { // Mozilla,...
    		xmlhttp=new XMLHttpRequest();
    		if (xmlhttp.overrideMimeType) {
    			xmlhttp.overrideMimeType('text/xml');
    		}	
    		xmlhttp.onreadystatechange=ChargeLd;
    		xmlhttp.open("GET", LD_URL, false);
    		xmlhttp.send(null);
    	} else if (window.ActiveXObject) { //IE 
    		xmlhttp=new ActiveXObject('Microsoft.XMLHTTP'); 
    		if (xmlhttp) {
    			xmlhttp.onreadystatechange=ChargeLd;
    			xmlhttp.open('GET', LD_URL, false);
    			xmlhttp.send();
    		}
    	}
    	// Bouton non apparent car modification de LD1 ou Ld2
    	document.getElementById('buttons').style.display='none';
    }
     
    // fonction pour manipuler l'appel asynchrone
    function ChargeLd() {
    	if (xmlhttp.readyState==4) { 
    		if (xmlhttp.status==200) { 
    			//span id="niv2" ou "niv3"
    			document.getElementById('niv'+id_liste).innerHTML=xmlhttp.responseText; 
    			if (xmlhttp.responseText.indexOf('disabled')<=0) {
    				//focus sur liste déroulante 2 ou 3
    				document.getElementById('Liste'+id_liste).focus(); 
    			}	
    		}
    	}
    }
     
    function Affiche_Btn() {
    	document.getElementById('buttons').style.display='inline';
    }
    </script>
     
    <style>
    #buttons {
    	display: none;
    }
    </style>
    </head>
     
    <body>
    <noscript>
    <p>Cette page nécessite que JavaScript soit activé; dans votre navigateur
    </noscript>
    <div id="Les3LD">
      <p>Selectionnez votre choix dans les listes déroulantes:</p>
      <form method="post" action="ListeCP.php">
        <?php
        include 'ValideLd1.php'; ?>&nbsp; <!--Pour remplir la liste déroulante 1-->
        <span id="niv2">
        <?php include 'ValideLd2.php'; ?></span>&nbsp; <!--Pour remplir la liste déroulante 2-->
        <span id="niv3">
        <?php include 'ValideLd3.php'; ?></span>&nbsp; <!--Pour remplir la liste déroulante 3-->
        <span id="buttons">
        <input type="submit" value="Submit">
        </span>
      </form>
    </div>
    </body>
    </html>

    ValideLd1.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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     
    <?PHP
     
    include 'bdconnect.php';
    $_conn=odbc_connect($_connect_string,"","");
    $query="SELECT * from All_tables_and_views;";
    $result = odbc_exec($_conn,$query) or die ("Select impossible");
    $query_pos_id=0; //position dans le SQL de la clé de la liste déroulante idem dans ValideLd2.php et ValideLd3.php
    $query_pos_val=1; //position dans le SQL de la valeur de la liste déroulante idem dans ValideLd2.php et ValideLd3.php
     
    $back .= '<select name="Liste1" id="liste1" size="1" onchange="ValideLd2(this[this.selectedIndex].value);">';
    $back .= '<option selected value="">Choose...</option>';
    if (odbc_num_rows($result) == 0) {
        $back = '<input id="1" type="text" size="10" value="No value" disabled>';
      }
    else while (odbc_fetch_row($result)) {
            $s1  =odbc_result($result,"Table_name");
     
     
    $back .= '<option >'. $s1 .'</option>';
     
    		}
     
    '</select>';
     
    //odbc_free_result($result);
    //odbc_close($_conn);
    echo $back  ;
    ?>

    ValideLd2.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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     
    <?PHP
    include 'bdconnect.php';
    $_conn=odbc_connect($_connect_string,"","");
     
     
    if (isset($_POST['Ld1'])) {$Ld1_retour = $_POST['Ld1'];}
    if ($Ld1_retour==''){echo "rien";}
    //$Ld1_retour='Activities_for_a_sector'  ;
    if ($Ld1_retour!='') {
     
      echo "$Ld1_retour";
      $query2 ="SHOW COLUMNS FROM '$Ld1_retour';";
    $result2 = odbc_exec($_conn,$query2) or die ("Select impossible");
    while($colonnes_array = odbc_fetch_array($result2))
    {
    echo $colonnes_array['Field']."<br />";
     
    	  $back .= '<select name="Liste2" id="liste2" size="1" onchange="ValideLd3(this[this.selectedIndex].value);">';
    //$back .= '<option selected value="">Choose...</option>';
    	//$columns=odbc_num_fields($fields);// récupère le nombre de champs d'un table
     
     
    			$back .= '<option value="'. $colonnes_array['Field'] .'">'. $colonnes_array['Field'] .'</option>';
     
     
    		}
     
     
     
      }
    '</select>';
     
     
     
     
     
    echo $back;
    ?>

    ValideLd3.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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     
    <?PHP
    include 'bdconnect.php';
     
    $_conn=odbc_connect($_connect_string,"","");
    if (isset($_POST['Ld1'])) {$Ld1_retour = $_POST['Ld1'];}
    if (isset($_POST['Ld2'])) {$Ld2_retour =  $_POST['Ld2'];}
     
     
     
    if (($Ld1_retour!='')&&($Ld2_retour!='')) {
     
     $query="Select '$Ld2_retour' from '$Ld1_retour';";
    	$query_pos_id=0;
    	$query_pos_val=0;
     
    $result = odbc_exec($_conn,$query) or die ("Select impossible");
    $back .= '<select name="Liste3" id="liste3" size="1" onchange="Affiche_Btn();">';
    $back .= '<option selected value="">Choose...</option>';
     
    	if (odbc_num_rows($result) == 0) {
        $back = '<input id="Liste3" type="text" size="10" value="No value" disabled>';
      }
      else if (odbc_num_rows($result) != 0) {
    		while ($row = odbc_fetch_row($result)) {
    			$back .='<option value="'. $row[$rq_pos_id] .'">'. $row[$rq_pos_val] .'</option>';
    			$query_pos_id++;
    $query_pos_val++;
    		}
        	}
    	'</select>';
    	}
    	//odbc_free_result($result);
    //	odbc_close($connexion);
     
    echo $back ;
    ?>

  2. #2
    Invité
    Invité(e)
    Par défaut
    Pourquoi a tu un doctype en entete de tes ValideX.php ?

    Le doctype est interprété coté client, donc il en faut un sur la page finale que tu vas lui envoyer et non pas un sur chacun de tes script php.

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/02/2013, 11h58
  2. Réponses: 8
    Dernier message: 20/10/2008, 17h30
  3. problème avec un script javascript en php
    Par le novice2 dans le forum Langage
    Réponses: 4
    Dernier message: 28/08/2008, 15h38
  4. Problèmes avec des cases à cocher et une liste déroulante
    Par rob2-9 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 25/01/2006, 10h52

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