Changement d'attribut selected au chargement

Vanvan -  
 Vanvan -
Bonjour tout le monde,

Après de multiple consultation sur le forum de "commentcamarche.net", qui m'a de nombreuses fois sortis de l'embarras, je me decide à poster !

Explication :

Je voudrais qu'au chargement d'un formulaire html, les <option> de mon <select> ai l'attribut selected ou pas.

Sur une page HTML, je récupère une variable dans l'URL du type "www.toto.fr\formulaire.html?logiciel=5",
j'arrive a extraire le "5" de la chaine de caractère.

Mais pas à modifier mon <select selected="selected"> :

je vous montre mon source :

<script language="javascript" type="text/javascript">
<!--

var var_url = window.location.search;
var choix_logiciel = var_url.slice(10);
alert(choix_logiciel);

function selected_option (choix_logiciel)
{
/*document.getElementsByTagName("option")[nbtagname].setAttribute("selected", "selected"); 1er test marche pas*/
alert('log_'+choix_logiciel);
document.getElementById('log_'+choix_logiciel).selected = 'selected';
}

switch(choix_logiciel)
{
case '0' :
selected_option(0);
alert(choix_logiciel);
break;

case '1' :
alert('toto');
selected_option(1);
alert(choix_logiciel);
break;

case '2' :
alert('titi');
selected_option(2);
alert(choix_logiciel);
break;

case '3' :
alert('tata');
alert(choix_logiciel);
selected_option(3);
break;

case '4' :
alert('tutu');
selected_option(4);
alert(choix_logiciel);
break;

case '5' :
alert('tete');
selected_option(5);
alert(choix_logiciel);
break;

case '6' :
alert('tyty');
selected_option(6);
alert(choix_logiciel);
break;

default :
alert('logiciel n\'a pas été incrementé');
}

-->

</script>

<!-- Voila mon select -->

<select name="logiciel" id="logiciel">
<option id="log_0" >--- Séléctionner ---</option>
<option id="log_1" >toto</option>
<option id="log_2" >titi</option>
<option id="log_3" >tata</option>
<option id="log_4" >tutu</option>
<option id="log_5" >tete</option>
<option id="log_6" >tyty</option>
</select>

Je remercie enormement tout le monde de "comment ca marche" pour l'aide que vous m'avez donné, et vous remercie d'avance pour les reponses à mon post !!!
A voir également:

6 réponses

Alain_42 Messages postés 5413 Statut Membre 894
 
Pourquoi n'utilises tu pas le php ce serait beaucoup plus facile

en nommant ton formulaire formulaire.php et

www.toto.fr\formulaire.php?logiciel=5

ensuite tu récupères par $_GET['logiciel']
0
Vanvan
 
Je ne sais pas programmer en php ! j'ai pris pas mal de temps sur le javascript et la j'ai des impératifs au niveau des délais :)

comment ferais tu en php, parce que mon problème n'est pas de récupérer la valeur de "logiciel",
l'erreur du script avec Web développeur est :

Erreur : document.getElementById("log_" + choix_logiciel) is null
Fichier Source : services_support_formulaire.html?logiciel=3
Ligne : 326

suis-je obliger de me lancer dans la prog php?
0
Alain_42 Messages postés 5413 Statut Membre 894
 
He bien si tu veux aller plus loin avec ta liste déroulante, c a d récupérer ce qui a été selectionné dedans il va te falloir du php

tu ne peux pas mettre de id= dans <option il faut par contre obligatoirement value=

alors si tu mets:

"www.toto.fr\formulaire.php?logiciel=5"


dans ta page formulaire.php tu auras:


<html>
<?php
//recup du logiciel dans l'url
if(isset($_GET['logiciel'])){
	//si on a reçu le numero par l'url
	$logiciel=$_GET['logiciel'];
}else{
	// sinon valeur par defaut
	$logiciel="0";
}

?>
<form name="ma_form" method="post" action="la_suite.php">
<select name="logiciel" id="logiciel">
<option value="0" <?php if($logiciel=="0") {echo "selected";} ?> >--- Séléctionner ---</option>
<option value="1" <?php if($logiciel=="1") {echo "selected";} ?> >toto</option>
<option value="2" <?php if($logiciel=="2") {echo "selected";} ?> >titi</option>
<option value="3" <?php if($logiciel=="3") {echo "selected";} ?> >tata</option>
<option value="4" <?php if($logiciel=="4") {echo "selected";} ?> >tutu</option>
<option value="5" <?php if($logiciel=="5") {echo "selected";} ?> >tete</option>
<option value="6" <?php if($logiciel=="6") {echo "selected";} ?> >tyty</option>
</select>

</form>
</html> 


<?php if($logiciel=="0") {echo "selected";} ?> on compare le numéro de log reçu avec la value de la ligne d'<option si identique on ecrit "selected"

Si tu veux apprendre le php vas voir www.siteduzero.com

@lain
-1
Vanvan
 
Je viens d'insérer ton script php dans ma page formulaire.php mais rien ne se passe,

j'ai l'impression que le code pour recuperer la valeur de "logiciel" ne fonctionne pas,

et echo "selected"; ajoute t-il l'attribut selected="selected" dans la balise <option>?

-----> parce-que quand je fais :

<option value="4" <?php echo "selected"; ?> >tutu</option>

tutu n'est pas selectionné????
0
Alain_42 Messages postés 5413 Statut Membre 894
 
oui tu peux mettre echo "selected='selected'";

mais ça marche qd même

par contre comment procedes tu ?

ou as tu mis le script formulaire.php ? sur ton serveur ? ton hebergeur accepte -t-il le php ?

as tu bien modifié ton lien qui l'appelle en "www...........formulaire.php?logiciel=5"

<option value="4" <?php echo "selected"; ?> >tutu</option>

tutu n'est pas selectionné????


voudrait dire que ton code php n'est pas interprété
-1
Alain_42 Messages postés 5413 Statut Membre 894
 
Si tu ne peux pas en PHP essayes ça en javascript

attention pas d'id mais value dans les options et les options ne sont accessibles que par leur index

et il faut bien avoir la balise form avec le name




<script language="javascript" type="text/javascript">
<!--


var var_url = window.location.search;
var choix_logiciel = var_url.slice(10);
alert(choix_logiciel);

function selected_option (choix_logiciel){
	var nbr_options=document.form1.logiciel.length;
	for(i=0;i<nbr_options;i++){
		if(document.form1.logiciel.options[i].value==choix_logiciel){
			document.form1.logiciel.options[i].selected=true;
		}
	}
}
//il faut lancer la fonction
selected_option (choix_logiciel);
</script>
<form name="form1" action="">
<select name="logiciel" value="logiciel">
<option value="0" >--- Séléctionner ---</option>
<option value="1" >toto</option>
<option value="2" >titi</option>
<option value="3" >tata</option>
<option value="4" >tutu</option>
<option value="5" >tete</option>
<option value="6" >tyty</option>
</select> 
</form>
-1
Vanvan
 
Merci Alain_42 de ton aide !

Je vais tester ca dans le weekend je te dis le resultat lundi !

Merci beaucoup c'est cool qu'il y ai des gens comme toi pour donner de l'aide à de pauvre petit developpeur comme moi :) !!!
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Vanvan
 
Salut Alain_42,

J'ai tester le script, ça ne fonctionne pas : Erreur = document.form1 is undefined

Je vais retenter en php mais j'suis pas sur de ce que je fais !
-1
Alain_42 Messages postés 5413 Statut Membre 894
 
Salut,

as tu bien mis:

<form <code>name="form1"
.......</code>

@lain
-1
Vanvan
 
Salut Alain_42 !!!

Victoire j'ai reussis a me depatouiller !!! :)

Voila mon script :

<script language="javascript" type="text/javascript">

var log_url = window.location.search;
var nb_log = log_url.slice(5);

var select_0 = "";
var select_1 = "";
var select_2 = "";
var select_3 = "";
var select_4 = "";
var select_5 = "";
var select_6 = "";

switch (nb_log)
{
case '0' :
var select_0 = "selected=\"selected\"";
break;

case '1' :
var select_1 = "selected=\"selected\"";
break;

case '2' :
var select_2 = "selected=\"selected\"";
break;

case '3' :
var select_3 = "selected=\"selected\"";
break;

case '4' :
var select_4 = "selected=\"selected\"";
break;

case '5' :
var select_5 = "selected=\"selected\"";
break;

case '6' :
var select_6 = "selected=\"selected\"";
break;
}

var log_option = "<select><option value=\"0\" "+select_0+" >--- Séléctionner ---</option><option value=\"1\" "+select_1+" >toto</option><option value=\"2\" "+select_2+" >tutu</option><option value=\"3\" "+select_3+" >tyty</option><option value=\"4\" "+select_4+" >tata</option><option value=\"5\" "+select_5+" >titi</option><option value=\"6\" "+select_6+" >tete</option></select>";

document.write (log_option+'');

</script>

Merci Alain_42 et a CCM.net !!!!
-1