8768 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai une liste de choix d'une vingtaine de ligne. Lorsque je choisi la ligne 18, est il possible que l'affichage reste sur la ligne 18 au lieu de retourner systématiquement à la ligne 1 ?

Merci d'avance, de vos lumières ?

J'ai un :

<SELECT name="l" select onchange=submit()>


La liste est sur ma base de donnée, donc code php.
Modifié par Tintin75 (06 Apr 2017 - 13:44)
Bonjour.

Le même élément du 'select' sélectionné ? Au cours d'une même session ? Toujours ?

Pour qu'un élément d'un 'select' soit sélectionné par défaut au chargement d'une page, il faut ajouter selected="selected" :
<option value="..." selected="selected">...</option>


Si la liste est sur votre base de données, votre choix n'y est pas... alors je dirais que cela se passe uniquement avec Javascript... Avec par exemple :
https://www.alsacreations.com/article/lire/1402-web-storage-localstorage-sessionstorage.html

Smiley smile
<form id="form1" method="post" action="Bob.html">
      <p>
      
    <SELECT name="l" select onchange=submit()>;
     <?php 
		
		$l = (isset($_POST['l']) ? $_POST['l'] : ""); 
		
		$l=filter_input(INPUT_POST,"l",FILTER_SANITIZE_STRING);
	               
        $req = $connexion->query('SELECT Choix.Diametre, Choix.Ext, Choix.Hauteur, Articles.l , Articles.d , Articles.p FROM Choix JOIN Articles ON Choix.l = Articles.l ORDER BY d ASC');  
		
          while ($data = $req->fetch())
		 {
              echo "<option value=\"".$data['l']."\">". $data['Diametre'] .' mm | ' .$data['Ext'] .' mm | ' .$data['Hauteur'] .' mm | ' .$data['l'] . ' | ' . $data['d'].' | ' . $data['p']." € </option>";      
		 }
		


Merci pour la réponse, j'ai bien lue, qu'il fallait mettre selected="selected", mais là je sèche ..
Modifié par Tintin75 (06 Apr 2017 - 11:56)
salut,

dans le while il faut comparer $l et $data['l'] si les deux concorde alors il faut ajouter le selected="selected" dans l'option (après le value en fait).

il faut juste séparer le echo et ajouter un simple if.

Juste au passage des champs de bases de données ou de formulaire qui se nomment d'une seule lettre (l, d,p etc) c'est pas vraiment une bonne idée, c'est incompréhensible et source d'erreur (plus de temps de maintenance à prévoir en recherche et en possible bug).

@+
Merci pour tes explications.

 while ($data = $req->fetch())
	    {
            if($l == '$data["l"]');
			echo "selected='selected'."."<option value= \"".$data['l']."\">". $data['Diametre'] .' mm | ' .$data['Ext'] .' mm | ' .$data['Hauteur'] .' mm | ' .$data['l'] . ' | ' . $data['d'].' | ' . $data['p']." € </option>";   
		 }


Je rame avec "comparer $l et $data['l']"

Si on pouvait me corriger, ça serait sympa Smiley smile
Modifié par Tintin75 (06 Apr 2017 - 13:07)
oula oui y a un p'tit soucis, ton if sert à rien la
sans parler du fait que tu $compare la variable $l à une chaine de caractère qui contient (littéralement) $data["l"], comme aimait à le dire un certain constructeur automobile : ça ne marcheras jamais !

la comparaison c'est $l == $data['l]

ensuite il faut que tu pense à ce que ce que ton code va produire.
=> selected='selected'<option value="....." > ....
y a rien de sorcier, il faut afficher le début
echo '<option value="',$data['l'],'"';

tester si c'est la même valeur
if($l == $data['l]) {
echo ' selected="selected"';
}

afficher le reste
echo '>',$data['Diametre'] ,' mm | ' ,$data['Ext'] ,' mm | ' ,$data['Hauteur'] ,' mm | ' ,$data['l'] , ' | ' , $data['d'],' | ' , $data['p'],' &euro;</option>';

au final

while ($data = $req->fetch()){
    echo '<option value="',$data['l'],'"';
    if($l == $data['l]) {
        echo ' selected="selected"';
    }
    echo '>',$data['Diametre'] ,' mm | ' ,$data['Ext'] ,' mm | ' ,$data['Hauteur'] ,' mm | ' ,$data['l'] , ' | ' , $data['d'],' | ' , $data['p'],' &euro;</option>';
}


cela va sélectionner l'option qui a la même valeur que ce qu'il y a dans ton formulaire Smiley cligne


au passage la ligne $l = (isset($_POST['l']) ? $_POST['l'] : "");
ne sert à rien elle est écrasé directement en dessous Smiley cligne

@+
Merci beaucoup, ça fonctionne. Merci pour le cours de programmation. Je vais revoir mon code pour le simplifier.

Bonne après midi et merci encore. Smiley cligne
Modifié par Tintin75 (06 Apr 2017 - 13:44)