11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Est-il possible de créer une URL à partir de balises select ?

par exemple :

Critère 1 :
<select>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select> 

Critère 2 :
<select>
  <option value="jaune">Jaune</option>
  <option value="vert">Vert</option>
  <option value="bleu">Bleu</option>
  <option value="rouge">Rouge</option>
</select> 


Si on choisit Volvo et Jaune depuis n'importe qu'elle page de mon site, on tombe sur :

www/monsite.com/volvo/voiture-jaune.php


Si c'est possible, pourriez vous me montrer un exemple de code s'il vous plait parce que je n'ai trouvé que des select url où l'url est écrite entière en value Smiley decu
Salut Smiley smile

Si tu veux rester en pur php il faut passer par un FORM qui va envoyer vers une page blanche dite de transition qui va reconstituer l'url pour renvoyer le lien via la fonction header...

Sinon y a le JS mais là tu encours le risque de personnes qui n'active pas js et ne pourront donc pas naviguer...
Bonjour,

Merci pour cette réponse, il n'y aurait pas vraiment de problème de navigation, il s'agit en fait d'un outil, donc les personnes n'ayant pas activé le JS ne serait pas gêner outre mesure.

Du coup, je suis un peu embêter parce que je ne sais pas vraiment coder en JS, tu pourrais m'aider s'il te plait même si du coup mon sujet n'est pas dans la bonne catégorie ?
Oui je peux t'aider un petit peu Smiley cligne

@modérateur -> si quelqu'un pouvait avoir l'obligence de déplacer ce post dans la rubrique JS ?? Merci pour lui Smiley lol


Bon donc...

Des indications car le but d'alsa n'est pas de faire le code à ta place

sur les balises select placer un onchange qui ira sur une fonction js qui elle se chargera de prendre la value des select pour les reconstruire en concaténation sous la forme du lien que tu souhaites et qui placera ce même lien en lieu et place du bouton ou de href que la personne devra cliquer pour atteindre...


JS et php au niveau structure c'est quasi pareil...

Au niveau des objets il n'ya rien de très compliqué surtout si tu utilise un framework type Jquery, sinon meme en PUR JS ce n'est pas très compliqué non plus...

Il faut que tu donnes des ID aux select afin que JS puisse les voir..
Merci, alors pour le HTML, ça donnerait un truc comme ça :

<div id="selection">

<form id="recherche">

<div style="float:left;">Critère 1
<select id="nom" name="Marque">
  <option value="marque">Choisir la marque</option>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>
</div>

<div style="float:left;">Critère 2
<select id="color" name="Couleur">
  <option value="couleur">Choisir la couleur</option>
  <option value="jaune">Jaune</option>
  <option value="vert">Vert</option>
</select>
</div>

<div style="float:left;">Critère 2
<select id="date" name="Année">
  <option value="1980">1980</option>
  <option value="1990">1990</option>
  <option value="2000">2000</option>
  <option value="2010">2010</option>
</select>
</div>

<input type="button" value="Rechercher" onClick="rechercheVoiture(this.form.nom.value, this.form.color.value, this.form.date.value)"/>

</form>

</div>


function rechercheVoiture(nom,color,date) {
if ((nom == "marque") && (color == "couleur")) {
if (!confirm("Vous n'avez pas choisit de marque ni de couleur de voiture")) {
return false;
}}
if ((marque != "") && (color == "couleur")) {
if (!confirm("Vous n'avez pas choisit de couleur de voiture")) {
return false;
}}
{
if(Rechercher != "")
	{
	document.write ('<A HREF="'http://www.monsite.com/ + nom + / + color + / + date + .php'"></A>'
	}
}


Comme j'ai dit, je ne sais pas vraiment coder en javascript alors ce code n'est évidement pas fonctionnel Smiley decu

D'ailleurs ça serait sans doute mieux en Jquery mais là ça me dépasse encore ...

Qu'en penses-tu ?
pas mal pas mal Smiley smile

Forcément ça ne fonctionne pas...

JS sais utiliser les name ou les id sauf qu'il sles utilisent pas pareil Smiley smile comme tout langage y a des subtilités Smiley cligne

donc il faut remplacer ce genre de ligne

this.form.nom.value


par

document.getElementById("nom").value


on travaille sur l'id Smiley smile


après déjà relis un peu ton code Smiley cligne

il y a plein d'erreur tu envoi nom en variable mais tu teste marque..
Merci, j'ai fait quelques corrections du coup mais ça ne marche pas mieux Smiley decu :

<div id="selection">

<form id="recherche">

<div style="float:left;">Critère 1
<select id="nom" name="Marque">
  <option value="marque">Choisir la marque</option>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>
</div>

<div style="float:left;">Critère 2
<select id="color" name="Couleur">
  <option value="couleur">Choisir la couleur</option>
  <option value="jaune">Jaune</option>
  <option value="vert">Vert</option>
</select>
</div>

<div style="float:left;">Critère 2
<select id="date" name="Année">
  <option value="1980">1980</option>
  <option value="1990">1990</option>
  <option value="2000">2000</option>
  <option value="2010">2010</option>
</select>
</div>

<input type="button" value="Rechercher" onClick="rechercheVoiture(document.getElementById("nom").value,document.getElementById("color").value,document.getElementById("date").value)"/>

</form>

</div>


function rechercheVoiture(nom,color,date) {

if ((nom == "nom") && (color == "couleur")) {

if (!confirm("Vous n'avez pas choisit de marque ni de couleur de voiture")) {

return false;

}}

if ((nom!= "") && (color == "couleur")) {

if (!confirm("Vous n'avez pas choisit de couleur de voiture")) {

return false;

}}

{

if(Rechercher != "")

	{

	document.write ('<A HREF="'http://www.monsite.com/ + nom + / + color + / + date + .php'"></A>'

	}

}


J'imagine que je m'y prends comme un manche Smiley ohwell
Modifié par Nheavy (19 Jan 2012 - 19:32)
Faudrait prendre 2 min pour te relire un minimum

juste avant "if(Rechercher != "")" tu ouvres une accolade, comme ça ?


Tu fais une condition sur "Rechercher" qui, à priori, n'existe pas du tout dans le code que tu fournis.

Sinon

document.write ('<A HREF="'http://www.monsite.com/ + nom + / + color + / + date + .php'"></A>'


Pas de point virgule à la fin, et niveau variable, c'est le même principe qu'en PHP donc une variable > ' + variable + ' (avec les quotes) et donc "http://www.monsite.com/' + nom + '/' + color + '/' + date + '.php"

Bon courage