Précédent   Forum du club des développeurs et IT Pro > 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
 
Outils de la discussion
Publicité
'
Vieux 21/11/2011, 16h26   #1
Barzai
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : novembre 2011
Messages : 4
Points : 2
Points : 2
Par défaut Liste liée avec connexion odbc

Bonjour

Je suis en train de créer un formulaire ou on pourrait renseigner des informations à propos de formations proposées.
Je suis à un stade ou j'ai vraiment un problème, c'est quand je crée une liste liée (liste déroulante change en fonction du premier choix). J'ai décidé de faire appel uniquement au PHP et non à du javascript ou à de l'ajax.
J'ai tout de même testé ma requête sous access et elle marche :
Voici là ou çà coince :

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
 
//Connexion a la base de donnée
		$cnx=odbc_connect("formation","root","") or die ("Impossible de se connecter Ã* la base de donnée");
 
		//Création de la requête
		$sql="SELECT intitule_gfe 
		        FROM GFE 
			ORDER BY intitule_gfe";
 
		//Préparation et exécution de la reqûete
		$res=odbc_exec($cnx,$sql);
 
		//Affichage de la requête
		echo '<p>
			<label for="gfe"><li>GFE :</li></label><br/>
			<select name="gfe" id="gfe">';
			echo "<option value='-1'>- - -Choisissez un GFE- - -</option>";
			while($row=odbc_fetch_array($res))
			{
				echo "<option value='".$row['intitule_gfe']."'>".$row['intitule_gfe']."</option>";
			}
			echo '</select>
		</p>';
 
		//Requête liée Ã* la première liste déroulante
		if(isset($_POST['$row[intitule_gfe]']) && $_POST['$row[intitule_gfe]'] != -1)
		{
			//Préparation de la requête 
			$sql2="SELECT SSGFE.intitule_ssgfe 
				  FROM SSGFE,GFE,Posseder
				  WHERE GFE.num_gfe=Posseder.num_gfe
				  AND Posseder.num_ssgfe=SSGFE.num_ssgfe
				  AND GFE.intitule_gfe= ".$row[intitule_gfe]."
				  ORDER BY intitule_ssgfe";
 
			  //Préparation et exécution de la requête
			  $res2=odbc_exec($cnx,$sql2);
 
			  //Affichage de la requête
					echo '<p>
				    <label for="ssgfe"><li>Sous-GFE</li></label><br/>
					<select name="ssgfe" id="ssgfe">';
					while($row2=odbc_fetch_array($res2))
					{
						echo '<option value="'.$row2['intitule_ssgfe'].'">'.$row2['intitule_ssgfe'].'</option>';
					}
					echo '</select> </p>';
		}
		//Deconnexion
		odbc_close($cnx);
		?>
Il ne m'affiche aucune erreur mais je crois que le compilateur n'arrive pas à faire le test isset() dans $row[intitule_gfe]. Pourquoi, çà devrait marcher non ?

Si j'ignore le test, alors il va me détecter une erreur au niveau du odbc_exec. En effet, le compilateur me signale une erreur au niveau de la jointure, mais je sais que la requête est bonne.

Merci d'avance d'avoir lu mon message en attendant une réponse.
Barzai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 18h22   #2
rawsrc
Modérateur
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 2 707
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 36
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 2 707
Points : 6 576
Points : 6 576
Envoyer un message via Skype™ à rawsrc
Bonjour,
Ta syntaxe $_POST est malformée :
Code :
$_POST['$row[intitule_gfe]'] => $_POST[$row['intitule_gfe']]
Et puis, ton if(isset($_POST['$row[intitule_gfe]']) est en dehors du la boucle while() qui définit $row à chaque passage. A moins que ton $sql ne retourne qu'un seul et unique enregistrement, dans ce cas ça ne devrait pas poser de problème.

Je sais que c'est (presque) équivalent mais il est préférable d'utiliser une jointure correctement formée à la place des critères des jointures dans le WHERE. Un truc du genre :
Code :
1
2
3
4
5
6
7
8
9
10
11
$sql2 = 
   "SELECT 
      SSGFE.intitule_ssgfe 
   FROM 
      SSGFE
         INNER JOIN Posseder ON SSGFE.num_ssgfe = Posseder.num_ssgfe
         INNER JOIN GFE ON Posseder.num_gfe = GFE.num_gfe
   WHERE
      GFE.intitule_gfe= ".$row['intitule_gfe']."
   ORDER BY 
      intitule_ssgfe";
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 08h36   #3
Barzai
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : novembre 2011
Messages : 4
Points : 2
Points : 2
Je ne vais pas pouvoir te répondre si çà marche car le poste ou je suis, je n'ai pas accès au localhost. je serais sur le poste afin de corriger mercredi, et je te dirais çà. En tout cas, merci pour ton aide
Barzai est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 00h25.


 
 
 
 
Partenaires

Hébergement Web