Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & ODBC
PHP & ODBC Forum d'entraide sur ODBC avec PHP. Avant de poster -> FAQ ODBC
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/07/2008, 12h31   #1
Invité de passage
 
Inscription : octobre 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 2
Points : 0
Points : 0
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 :
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 :
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 :
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 :
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 ;
?>
méloquenn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2008, 16h13   #2
Membre expérimenté
 
Homme Rémi BOURGAREL
Développeur .NET
Inscription : juin 2006
Messages : 426
Détails du profil
Informations personnelles :
Nom : Homme Rémi BOURGAREL
Âge : 25
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur .NET
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : juin 2006
Messages : 426
Points : 584
Points : 584
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.
Bourgui est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h17.


 
 
 
 
Partenaires

Hébergement Web