Liste liées + Oracle

Mammouth du PHP | 19672 Messages

21 mai 2008, 09:55

Quand tu as des erreurs de cette sorte, prends l'habitude de faire afficher tes requêtes pour les inspecter : si certaines variables n'ont pas de valeur, ça peut aboutir à des requêtes SQL dont la syntaxe n'est plus valide. Et dans ce cas ton problème est en amont. Un simple echo($sql); peut te faire avancer assez rapidement comme ça.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

mdakoss
Invité n'ayant pas de compte PHPfrance

21 mai 2008, 10:18

Merci Cyrano.
Je sais que l'erreur vient de la requête mais je ne vois pas comment je peux la corriger. Je vais encore essayer en tout cas.

Mammouth du PHP | 19672 Messages

21 mai 2008, 11:12

Si tu sais ce qui cloche dans ta requête, remonte dans le code pour voir ù ça peut bafouiller dans l'initialisation de la variable incriminée : observe par exemple s'il est possible que cette variable ne soit jamais initialisée : un if() qui ne serait pas suivi d'un else, par exemple, ou encore une boucle for() dans laquelle on ne rentre jamais, etc...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 10 Messages

21 mai 2008, 11:35

En écrivant par exemple:
$sql="select distinct CA_NAME from 
PORTAL_CATEGORIE,PORTAL_PLATEFORME,PORTAL_PL_CA 
WHERE PORTAL_CATEGORIE.CA_ID=PORTAL_PL_CA.CA_ID 
AND PORTAL_PLATEFORME.PL_ID=PORTAL_PL_CA.PL_ID ";
Quand je sélectionne par exemple le 1er élément de la 1ère liste, j'ai des données dans la 2ème liste. Seulement j'ai quelques soucis:
1- les données correspondantes à l'élément sélectionné de la 1ère liste n'ont pas les bonnes valeurs. (A cause de la requête, quelque soit l'élément sélectionné dans ma 1ère liste, j'ai les mêmes données dans la 2ème liste)
2- j'ai des paranthèses "()" à la fin de chaque valeur de la 2ème liste
3- Chaque fois que je sélectionne un élément de la 1ère liste au lieu que celui-ci reste inchangé, dans cette liste j'ai le dernier élément de la liste i-e "Windows XP".
Sur l'image à ce lien je sélectionne par exemple le 1er élément "AIX" de la 1ère liste.
En image: http://download.yousendit.com/15983EBD3E576508

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Mammouth du PHP | 19672 Messages

21 mai 2008, 11:45

Alors commence par vérifier la première requête en changeant la valeur de ta première liste pour vérifier qu'à chaque fois le critère de sélection est pris en compte. S'il ne l'est pas, c'est que tu as une erreur au niveau de la récupération des données ou bien une erreur de traitement. Et sans voir le code approprié, je ne pourrai pas t'indiquer quoique ce soit.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 10 Messages

21 mai 2008, 11:45

J'ai corrigé l'erreur "2" concernant les parenthèses

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

mdakoss
Invité n'ayant pas de compte PHPfrance

21 mai 2008, 19:49

Il n'y a personne pour m'aider?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

21 mai 2008, 20:12

Modération :
mdakoss, les "up" sont interdits sur PHPFrance.

Si tu n'as pas obtenu de réponse, c'est (au choix) :
- que ta question est mal formulée : reformule-la différemment ;
- que personne ne connaît la réponse ici : faire un "up" ne te donnera pas davantage de résultats ;
- que la réponse demandée exige un travail important que personne ne va faire à ta place ;
- que trop peu de temps s'est écoulé depuis ton précédent message pour qu'un membre ait pu y répondre.

Merci de prendre le temps de lire les règlements.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

mdakoss
Invité n'ayant pas de compte PHPfrance

21 mai 2008, 22:30

Merci "ZEUS" pour tes remarques. Je les ai notées.

Mammouth du PHP | 19672 Messages

21 mai 2008, 22:36

Alors dans ce cas, je te suggère également de reformuler aussi ta question en fournissant les éléments qui nous permettront de t'apporter une assistance. Les parties du code qui posent problème par exemple, et accessoirement un copier/coller des requêtes générées :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 10 Messages

22 mai 2008, 10:10

La seule partie du code qui me pose problème actuellement est la création de la deuxième requête qui me permettra d'avoir les catégories d'une plateforme sélectionnée de la 1ère liste déroulante. La requête concernant la sélection des éléments de la 1ère liste marche bien à mon avis. Mais chaque fois que je sélectionne un élément de cette liste, dans la deuxième liste je n'ai pas vraiment les catégories correspondantes à la plateforme sélectionnée. J'ai une erreur sur la requête qui n'est pas bonne et donc j'essaie de la corriger pour avoir les informations que je veux. Voici la partie du code qui à mon avis, cause problème:


<?php
$libre=oci_free_statement($parsed);

/* On commence par vérifier si on a envoyé un numéro de plateforme et le cas échéant s'il est différent de -1 */
				if(isset($idr) && $idr != -1)
					{
						/* Création de la requête pour avoir les catégories de cette plateforme*/
$sql="select distinct CA_NAME from CATEGORIE,PLATEFORME,PL_CA WHERE CATEGORIE.CA_ID=PL_CA.CA_ID AND PPL_CA.PL_ID=".$idr."";
//echo($sql); 
			if($connexion != false)
							{
								$parsed1 = OCIParse($connexion, $sql);
								OCIExecute($parsed1,OCI_DEFAULT);
								$nrows1 = oci_fetch_all($parsed1, $results1);
								/* Un petit compteur pour les catégories */
								$nbca = 0;
								/* On crée deux tableaux pour les numéros et les noms des catégories */
								$id_ca = array();
								$ca_name = array();
								/* On va mettre les numéros et noms des catégories dans les deux tableaux */
								for ($i = 0; $i < $nrows1; $i++ )
								{
									array_push($id_ca, "".$results1["CA_ID"][$i]."" );
									array_push($ca_name, "".$results1["CA_NAME"][$i]."");
									/* On incrémente le compteur */
									$nbca++;
								}
							
								/* Maintenant on peut construire la liste déroulante */
            ?>   
								<p>              
			                    	<label>Catégorie</label>
									<select name="CA_NAME" id="CA_NAME">
										<?php  
											for($d = 0; $d<$nbca; $d++)
												{
										?>
											<option value="<?php echo($id_ca[$d]); ?>"
												<?php echo((isset($ca_selectionnee) && $ca_selectionnee == $id_ca[$d])?" selected=\"selected\"":null); ?>><?php echo($ca_name[$d]); ?> 
											</option>
										<?php
												}
										?>
									</select>
								</p> 
							<?php
							}
									/* Un petit coup de balai */
									$libre1=oci_free_statement($parsed1);
									

					}
							?>
J'espère que mon problème est plus clair maitenant?

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Mammouth du PHP | 19672 Messages

22 mai 2008, 10:46

Si tu sais ce qui cloche dans ta requête, remonte dans le code pour voir ù ça peut bafouiller dans l'initialisation de la variable incriminée : observe par exemple s'il est possible que cette variable ne soit jamais initialisée : un if() qui ne serait pas suivi d'un else, par exemple, ou encore une boucle for() dans laquelle on ne rentre jamais, etc...
Tu es sur que tu as bien lu ceci ??
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 10 Messages

22 mai 2008, 10:51

Désolé, je n'avais lu ce message. Je suis entrain de revoir tout le code.

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Eléphanteau du PHP | 10 Messages

22 mai 2008, 14:28

Je viens de résoudre mon petit problème. ça marche très bien. C'était ma première requête qui n'était pas bonne. Là je vais essayer de faire lier la deuxième liste à une 3ème!! Si j'ai un autre souci, je vous ferai appel. Je ne sais pas par contre comment marquer "résolu" ce sujet.
Merci


[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Mammouth du PHP | 19672 Messages

22 mai 2008, 14:46

Je viens de résoudre mon petit problème. ça marche très bien. C'était ma première requête qui n'était pas bonne....
Ha tiens donc, quelle surprise... :mrgreen:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: