Calcul avec un select ...

Eléphant du PHP | 231 Messages

03 mars 2006, 22:35

Bonjour,

J'ai un petit pb

J'ai un select qui me permet de choisir une destination
J'aimerais pouvoir calculer le temps en seconde pour aller sur celle ci (application de la formule AB² = racine[ (Xb-Xa)² + (Yb-Ya)² ] )

Les coordonnées de la cible sont a recuperer suivant la valeur du select (le select est generé par php / les infos sont stocké en base de données)

Code : Tout sélectionner

<html> <head> <title>gni ?</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script language="JavaScript"> function update(coord_Xm, coord_Ym) { var coord_Xo = 427; var coord_Yo = 57; document.getElementById('temps').innerHTML = 'Temps estimé*&nbsp;:&nbsp;'+10*Math.sqrt(Math.pow(coord_Xm-coord_Xo,2)+Math.pow(coord_Ym-coord_Yo,2))+'&nbsp;sec&nbsp;&nbsp;'; } </script> </head> <body> <select name="destination" id="destination" class="select"> <option value=1 style="color: #0000FF;" onKeyUp="update(584,247);">Aduba 3 [Romek]</option> <option value=2 style="color: #00FF00;" onKeyUp="update(424,57);">Almania [dark_vidor]</option> <option value=3 style="color: #FF0000;" onKeyUp="update(530,460);">Alzoc 3 [Decapfour]</option> <option value=4 style="color: #0000FF;" onKeyUp="update(389,32);">Ammuund [Romek]</option> <option value=5 style="color: #0000FF;" onKeyUp="update(490,410);">Ando [Romek]</option> <option value=6 style="color: #0000FF;" onKeyUp="update(275,550);">Anoat [Dark Ness]</option> <option value=7 style="color: #0000FF;" onKeyUp="update(270,575);">Anoth [Dark Ness]</option> <option value=8 style="color: #9E6209;" onKeyUp="update(455,192);">Anzat </option> <option value=9 style="color: #9E6209;" onKeyUp="update(450,473);">Arbra </option> </select> <div id='temps'></div> <script language="JavaScript"> update(); </script> </body> </html>
Bon ça ne fonctionne pas :(
Si vous pouviez m'aider :D :wink:

Merci par avance

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

03 mars 2006, 23:07

Salut,
J'ai un petit pb
oui les abréviations, certes compréhensibles mais tout de même :roll:

Sinon pour déclencher une action avec un select on utilise "onchange" et non "onKeyUp" et encore moins sur chaque option mais plutot sur le select lui même.

Essaie en adaptant
<select onchange="update(this.value)">
<option value="584,247">Aduba 3 [Romek]</option>
</select>
function update(coord)
{ 
   //récupération des coordonnées... de "584,247" => x=584 et y=247
   var coupure = coord.indexOf(","); 
   var x= parseInt(coord.substring(0,coupure));
   var y= parseInt(coord.substring(coupure+1));
 
   //reste du code

}

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 231 Messages

03 mars 2006, 23:19

je souhaite garder value=id parce que je m'en sert pour une insertion après en bdd :roll:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

03 mars 2006, 23:32

c'est mi-grave :)

tu peux faire passer tout ce que tu veux dans le value:
<select name="destination" id="destination" class="select" onchange="update(this.value)">
<option value="1,584,247">Aduba 3 [Romek]</option>
<option value="2,424,57">Almania [dark_vidor]</option>
</select>
function update(coord)
{
   var coupure1 = coord.indexOf(",");
   var coupure2 = coord.lastIndexOf(",");
   var x= parseInt(coord.substring(coupure1+1,coupure2));
   var y= parseInt(coord.substring(coupure2+1));

   //reste du code

}
Pour l'insertion en BD qui se fait en php tu récupère l'id avec POST:
$id = explode(",",$_POST['destination']);
$id = $id[1]; // 1ère partie de la varaible POST donc l'id

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute