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 17/03/2006, 11h52   #1
Futur Membre du Club
 
Inscription : avril 2005
Messages : 98
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 98
Points : 19
Points : 19
Par défaut Probleme sur un SELECTED de SELECT avec PHP

Bonjour,

la selection (selected) de l'option du select ne semble pas fonctionner, voici le code puis une photo d'ecran :

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
				<select name="selOf" onchange="loadDevisOf()">
 
					<?php
 
					session_start();
 
					$rqOf = "SELECT num_of FROM of WHERE num_aff = '".$_SESSION['aff']."'";
					$resOf = odbc_exec($devis, $rqOf);
 
					while(odbc_fetch_array($resOf))
						{
							$numOf = odbc_result($resOf, "num_of");
					  		if ($numOf == $_SESSION['of'])
								{
									echo '<option selected>'.$numOf.'</option>';
								}
							else
								{
									echo '<option>'.$numOf.'</option>';
								}
						}
 
					?>
 
				</select>



J'ai bien la liste que je souhaite et numOf est bien egal à $_SESSION['of'], je n'ai pas de messages d'erreurs mais pourtant la selection ne s'execute pas. Quelqu'un pourrait-il m'aider svp?
G.D.O est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 12h21   #2
Membre émérite
 
Avatar de macbook
 
Inscription : février 2006
Messages : 840
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 840
Points : 924
Points : 924
Déjà le session_start() là où il est placé à moins d'avoir bufférisé, il n'est pas où il faut. Voir la doc à ce sujet.
Et puis pour faire bien il faudrait mettre selected="selected"...

La fonction javascript loadDevisOf() elle fait quoi ?
__________________
Consultant idéaliste.
macbook est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 12h35   #3
Futur Membre du Club
 
Inscription : avril 2005
Messages : 98
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 98
Points : 19
Points : 19
Voici tout le code :


devis_affFoto_menu.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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<?php
 
	include ("php_cnx.inc.php");
	session_start();
 
?>
 
 
<!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>
	<title> Devis - Ajout de photos </title>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	<link rel="stylesheet" type="text/css" href="menu_achat.css" />
	<center><img src="imag/haut.jpeg" width="995" height="67"></center><br />
</head>
 
<body>
 
<script language="javascript">
 
	function loadDevisAff()
		{
			document.forms.formAff.submit();
		}
 
	function loadDevisOf()
		{
			document.forms.formOf.submit();
		}
 
</script>
 
<strong>
<center>
 
<table>
 
	<form name="formAff" action="devis_addFoto_aff.php" method="post">
		<tr align="left">
			<td align="left">
				Veuillez sélectionner une affaire :
			</td>
			<td>
				<select name="selAff" onchange="loadDevisAff()">
					<?php
 
						$rqAff = "SELECT num_aff FROM of GROUP BY num_aff ORDER BY num_aff";
						$resAff = odbc_exec($devis, $rqAff);
 
						while(odbc_fetch_array($resAff))
							{
								$numAff = odbc_result($resAff, "num_aff");
								if ($numAff == $_SESSION['aff'])
									echo '<option selected="selected">'.$numAff.'</option>';
								else
									echo '<option>'.$numAff.'</option>';									
							}
 
					?>
				</select>
			</td>
		</tr>
	</form>
 
	<form name="formOf" action="devis_addFoto_of.php" method="post">
		<tr align="left">
			<td align="left">
				Veuillez sélectionner une of :
			</td>
			<td>
				<select name="selOf" onchange="loadDevisOf()">
 
					<?php
 
						$rqOf = "SELECT num_of FROM of WHERE num_aff = '".$_SESSION['aff']."'";
						$resOf = odbc_exec($devis, $rqOf);
 
						while(odbc_fetch_array($resOf))
							{
								$numOf = odbc_result($resOf, "num_of");
								if ($numOf == $_SESSION['of'])
									echo '<option selected="selected">'.$numOf.'</option>';
								else
									echo '<option>'.$numOf.'</option>';
							}
 
					?>
 
				</select>
			</td>
		</tr>
	</form>
 
	<tr align="left">
		<td>
			Veuillez sélectionner un composant :
		</td>
		<td>
			<select name="selComp">
				<?php
 
					$rqComp = "SELECT code_comp FROM composant WHERE num_of ='".$_SESSION['of']."'";
					$resComp = odbc_exec($devis, $rqComp);
 
					while(odbc_fetch_array($resComp))
						{
							$codeComp = odbc_result($resComp, "code_comp");
							echo '<option>'.$codeComp.'</option>';
						}
 
				?>
			</select>
		</td>
	</tr>
 
</table>
 
<form method="post" action="devis_menu.php">
	<input type="submit" value="RETOUR" style="width:15%" />
</form>
 
</center>
</strong>
 
</body>
 
</html>
sinon pour le selected j'avais mis comme ca au debut puis j'ai mis comme ca parceque j'arrivais pas a debuguer.

pour le session_start je vais voir la doc donc..
G.D.O est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 14h39   #4
Futur Membre du Club
 
Inscription : avril 2005
Messages : 98
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 98
Points : 19
Points : 19
alors aucune idée?
G.D.O est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 14h50   #5
Membre émérite
 
Avatar de macbook
 
Inscription : février 2006
Messages : 840
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 840
Points : 924
Points : 924
Citation:
Envoyé par macbook
Déjà le session_start() là où il est placé à moins d'avoir bufférisé, il n'est pas où il faut. Voir la doc à ce sujet.
Citation:
Envoyé par G.D.O
alors aucune idée?
Si. Lire les réponses que tu reçois.
__________________
Consultant idéaliste.
macbook est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 15h22   #6
Futur Membre du Club
 
Inscription : avril 2005
Messages : 98
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 98
Points : 19
Points : 19
Je vois pas où est le problème : dans la doc de developpez.com on utilise la commande session_start() puis les variables de sessions. Donc OUI je lis les remarques j'ai même fait plus puisque j'ai relu le chapitre sur les sessions dans mon bouquin. D'ailleurs ma variable de session "$_SESSION['aff']" n'est pas vide et elle contient bien ce que j'attends d'elle.

Donc DESOLE mais dans la mesure où je fais ce que j'ai compris dans la doc et le bouquin et qu'en plus il semblerait que ca marche déjà je vois pas ce que je peux faire de plus! Alors au lieu de m'agresser explique-moi ce qui ne va pas!
G.D.O est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 15h37   #7
Membre émérite
 
Avatar de macbook
 
Inscription : février 2006
Messages : 840
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 840
Points : 924
Points : 924
J'agresse pas, j'explique. Cette question est réccurente, elle est posée deux fois par semaine dans ce forum.

Places le session_start() avant tout code html.

Et puis c'est fatiguant de donner des solutions puis de lire une réponse dans laquelle rien de ce qui a été proposé n'a été intégré.

C'est comme le selected="selected".

Et puis $_SESSION['aff'] et $_SESSION['of'] sont initialisée comment ?
__________________
Consultant idéaliste.
macbook est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 16h09   #8
Futur Membre du Club
 
Inscription : avril 2005
Messages : 98
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 98
Points : 19
Points : 19
Excuses-moi mais ma question ne porte pas sur les sessions à la base et mes sessions fonctionnent donc NON je ne pose pas une question bateau. Certes c'est mieux de mettre le session_start() dès le début, je te remercie pour cette parenthèse utile, j'en ai pris note et modifié mon code.

Pour ce qui est du select je sais très bien que pour que ce soit conforme au XHTML il faut mettre selected="selected". J'ai mis select histoire de voire si ca débloquait le problème.

$_SESSION['aff'] est initialisée dans la page "devis_addFoto_aff" et $_SESSION['of'] est initialisée dans la page "devis_addFoto_of".

Par l'intermediaire de javascript et des formulaires j'envoie le contenu des listes deroulantes rien qu'en selectionnant une option (sans passer par un bouton) vers les pages "devis_addFoto_aff" et "devis_addFoto_of" qui recuperent le contenu des formulaires et les sauvegardent dans des variables de session. Puis je reviens sur la page principale : "devis_menu_foto".

Je fais ca parceque le contenu de la liste nommée "selComp" depend du contenu de la liste nommée "selOf" qui depend du contenu de la liste nommée "selAff".

Voici la page devis_addFoto_aff :

Code :
1
2
3
4
5
6
7
8
9
<?php
 
	session_start();
 
	$_SESSION['aff']=$_POST['selAff'];
	echo $_POST['selAff'];
	header("Location: devis_addFoto_menu.php");
 
?>
Voici la page devis_addFoto_of :

Code :
1
2
3
4
5
6
7
8
<?php
 
	session_start();
 
	$_SESSION['of']=$_POST['selOf'];
	header("Location: devis_addFoto_menu.php");
 
?>
C'est curieux je suis persuadé d'avoir déjà posté le code de ces 2 pages et il n'y aie pas
G.D.O est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 16h31   #9
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Ce qui est bizarre c'est que tu n'avais pas de message d'erreur concernant le placement de session_start() là où il fallait pas. J'en déduit donc que tu as display_errors == off, donc que tu ne vois pas les notices et autres warnings et donc que tu peux laisser passer des erreurs susceptibles d'influer sur ton developpement...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 16h39   #10
Futur Membre du Club
 
Inscription : avril 2005
Messages : 98
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 98
Points : 19
Points : 19
Non les erreurs sont parfaitement affichées. En fait je ne vois toujours pas où est le problème avec mon "session_start()" vu qu'il était placé avant l'utilisation des variables de session.

Je crois que vous avez supposé que les variables de session étaient initialisées sur la même page alors que $_SESSION['aff'] et $_SESSION['of'] sont respectivement initialisées dans les pages "devis_addFoto_aff" et "devis_addFoto_of".
G.D.O est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 16h42   #11
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Pour info, session_start ne doit pas être placé avant l'utilisation des variable de session (enfin... si mais c'est pas ça le probleme), mais avant tout caractère envoyé vers le navigateur.
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 16h46   #12
Futur Membre du Club
 
Inscription : avril 2005
Messages : 98
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 98
Points : 19
Points : 19
ah d'accord merci bien pour l'explication

Mais j'ai toujours le même problème : quand je sélectionne une affaire ou une of, le choix des listes deroulantes ne sont pas affichés. Par contre le choix de l'affaire est pris en compte dans le code car la liste d'ofs est juste mais la liste de composants qui dépends du choix de la liste de d'ofs est fausse.

Rappel :



Exemple (regardez l'image en même temps pour comprendre) :

je selectionne l'affaire 05-220 la page est rechargée et l'affaire est toujours sur 04-587-02.

PAR CONTRE la liste d'ofs corresponds bien à l'affaire 05-220 avec la 1ère of de l'affaire : l'of20040225 avec le premier composant de l'of :F_BC_...
puis je selectionne l'of20040226 et l'affaire est tjrs 04-587-02., l'of est tjrs l'of20040225 et le composant est tjrs F_BC_05...

J'ai donc un double problème :

- au niveau de la visu : les choix des affaires et des ofs ne sont pas réaffichés

- au niveau du code : le choix des ofs ne sont pas pris en comptes
G.D.O est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 17h23   #13
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Je vous invite à ne pas vous agresser les uns les autres ^_^

@G.D.O. : Si macbook te recommandait de consulter la doc, c'était justement pour que tu puisses y lire ce que Mr N. vient de t'apprendre.

Citation:
Envoyé par [url=http://cyberzoide.developpez.com/php4/faqsession/#error
FAQ sessions sur Développez.com[/url]]Warning: Cannot send session cookie - headers already sent by (output started at /home/SiteWeb/SiteAnalyse/index.php:3) in /home/SiteWeb/SiteAnalyse/index.php on line 6

Cette erreur survient lorsqu'on tente d'ouvrir une session après avoir déjà écrit dans le document, ce qui interdit, bien sûr.
Cela dit, j'admets que macbook n'a peut-être pas été très clair [ironie inside] sur quelle doc utiliser. Voici :
Citation:
Envoyé par [url=http://es2.php.net/manual/fr/function.session-start.php
Doc officielle de PHP[/url]]Note : Si vous utilisez des sessions basées sur les cookies, vous devez appeler session_start() avant d'afficher quoi que ce soit au navigateur.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 17h25   #14
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Essaie de faire un [shift]+Reload quand l'affichage est erroné. Comme ça, pour voir.
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 19h04   #15
Membre émérite
 
Avatar de macbook
 
Inscription : février 2006
Messages : 840
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 840
Points : 924
Points : 924
Je suis pas clair moi ???
__________________
Consultant idéaliste.
macbook est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 15h44   #16
Futur Membre du Club
 
Inscription : avril 2005
Messages : 98
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 98
Points : 19
Points : 19
ok autant pour moi

entre temps le patron a simplifié sa demande du coup je n'ai plus besoin de passer par cette interface mais le problème se reproduira vu qu'à l'avenir il est sur que j'aurais besoin de listes deroulantes dont le contenu varie selon les choix d'autres listes deroulantes.

Le plus simple serait de me lacher un bout de code en PHP/XHTML/Javascript qui comprends ce systeme de listes deroulantes dynamiques et je me dermederais à comprendre comment ca marche.

Sinon Mr .N, j'ai essaye le shift + reload et ca n'a rien donné (en fait je ne sais pas a quoi corresponds la touche "reload" donc j'ai fait SHIFT + F5).
G.D.O 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 08h13.


 
 
 
 
Partenaires

Hébergement Web