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 :

Probleme sur un SELECTED de SELECT avec PHP


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 98
    Points : 50
    Points
    50
    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 : 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
    				<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?

  2. #2
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    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 ?

  3. #3
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 98
    Points : 50
    Points
    50
    Par défaut
    Voici tout le code :


    devis_affFoto_menu.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
    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..

  4. #4
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 98
    Points : 50
    Points
    50
    Par défaut
    alors aucune idée?

  5. #5
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    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.

  6. #6
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 98
    Points : 50
    Points
    50
    Par défaut
    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!

  7. #7
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    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 ?

  8. #8
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 98
    Points : 50
    Points
    50
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  9. #9
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    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...

  10. #10
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 98
    Points : 50
    Points
    50
    Par défaut
    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".

  11. #11
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    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.

  12. #12
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 98
    Points : 50
    Points
    50
    Par défaut
    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

  13. #13
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    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.

  14. #14
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Essaie de faire un [shift]+Reload quand l'affichage est erroné. Comme ça, pour voir.

  15. #15
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Je suis pas clair moi ???

  16. #16
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 98
    Points : 50
    Points
    50
    Par défaut
    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).

Discussions similaires

  1. select in (select in (select in etc.))
    Par Christophe P. dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/01/2015, 12h34
  2. probleme d'affichage d'une table avec php
    Par K.aoutar dans le forum Langage
    Réponses: 6
    Dernier message: 01/09/2010, 18h09
  3. probleme sur creation d'une classe avec netbeans 6.5
    Par bambi98 dans le forum NetBeans
    Réponses: 1
    Dernier message: 25/03/2009, 20h17
  4. Probleme assez étrange avec php et selected
    Par lysandre dans le forum Langage
    Réponses: 3
    Dernier message: 01/02/2008, 17h35
  5. Réponses: 6
    Dernier message: 20/11/2007, 12h14

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