Avatar billede netroam Nybegynder
16. september 2009 - 12:57 Der er 4 kommentarer og
1 løsning

Onchange select-boks ændrer værdi i anden select-boks

Dette kan både være et JavaScript og et PHP-spørgsmål, men nok mest det første.

Jeg har en formular i PHP, hvor der skal oprettes leverandører til en database. I denne formular har jeg en stor liste med lande, der hendes fra en MySQL database. I samme tabel i databasen ligger der også forkaldsnumre til telefoni. Dvs. at under Danmark står der +45 under forkaldsnummer. Ved Sverige står der +46. Ved Tyskland +49 osv.

Det jeg gerne vil have er så følgende:

I select-boksen hvor alle lande listes op i alfabetisk orden, vil jeg gerne have det sådan, at når et land vælges - f.eks. Danmark - så skal en select boks længere nede under punktet "Telefonnr." ændres til +45.

På den måde får jeg altid brugerne til at skrive telefonnumre på den rigtige måde, når de udfylder formularen.

Er det noget, der kan lade sig gøre?
Avatar billede showsource Seniormester
16. september 2009 - 13:20 #1
Det nemmeste ville være hvis du i db havde et id som svarede til forkaldsnummer.
Dvs. dk ville få 45 som value i select box'en, som ved onchange så sætter et readonly felt til valgte value ( land )

Men i bund og grund burde det vel være unødvendigt
Avatar billede lolman Nybegynder
16. september 2009 - 13:34 #2
evt. noget ala.



<script type="text/javascript">
function setTlf(e){
    document.getElementById("tlf_fortegn").selectedIndex=e;
}
</script>

</head>
<body>

<select name="land" onchange="setTlf(this.selectedIndex)">
<option value="0">Vælg land</option>
<option value="dk">Danmark</option>
<option value="sv">Sverige</option>
<option value="no">Norge</option>
<option value="de">Tyskland</option>
</select>

...

<select name="tlf_fortegn" id="tlf_fortegn">
<option value="0">Vælg +xx</option>
<option value="0045">+45</option>
<option value="0046">+46</option>
<option value="0047">+47</option>
<option value="0049">+49</option>
</select>


---

MAN SKAL bare lige være opmærksom på at option2 i land viser option2 i tlf_forteng, opt3 viser opt3 osv.

Og så er det vist ikke lovligt js. for selectedIndex bruges både til at læse og sætte value.

...

Men håber at du kan bruge det..

KH
Andreas
Avatar billede netroam Nybegynder
16. september 2009 - 13:57 #3
Det er noget i den stil, jeg leder efter.

Her er lidt af HTML'en / PHP'en fra formularen, hvor jeg har brug for at lave noget magi:

....
<tr>
  <td style="padding-top: 4px;" class="sm_txt">&nbsp;<b>Country</b>:</td>
  <td style="padding-top: 4px;" class="sm_txt"><select class="form" name="supplierCountry" style="width: 300px;">
  <option value="">- Country -</option>
  <?
  $query = "select * from lande order by name_uk asc";
  $result = mysql_query($query) or die("".mysql_errno()."Error: ".mysql_error());

  if ($result && mysql_num_rows($result) > 0)
  {
    while($row = mysql_fetch_array($result))
    {
      $iso = $row['iso'];
      $name_uk = $row['name_uk'];
  ?>
  <option value="<?= $iso ?>"><?= $name_uk ?></option>
  <?
    }
  }
  ?>
  </select> &nbsp;<span class="red">*</span></td>
</tr>
<tr>
  <td style="padding-top: 4px;" class="sm_txt">&nbsp;<b>Telephone No.</b>:</td>
  <td style="padding-top: 4px;" class="sm_txt"><select class="form" name="supplierPhoneSuffix" style="width: 80px;">
  <option value="">- Suffix -</option>
  <?
  $query = "select DISTINCT suffix from lande where suffix <> '' order by suffix asc";
  $result = mysql_query($query) or die("".mysql_errno()."Error: ".mysql_error());

  if ($result && mysql_num_rows($result) > 0)
  {
    while($row = mysql_fetch_array($result))
    {
      $suffix = $row['suffix'];
  ?>
  <option value="<?= $suffix ?>"><?= $suffix ?></option>
  <?
    }
  }
  ?>
  </select> &nbsp;<input type="text" name="supplierPhone" value="<?= $supplierPhone ?>" style="width: 212px;" class="form"> &nbsp;<span class="red">*</span></td>
</tr>
.....

Variablerne i database-udtrækkene giver data som ser således ud:

$iso      = DK
$name_uk  = Denmark
$suffix  = +45

Det skulle selvfølgelig gerne være sådan, at de 2 select-bokse kommer til at vise de 2 sidste variabler, når formularen udfyldes. Hvis det i programmeringen betyder, at $iso f.eks. bruges for at få de rette variabler vist, så er det fint at gøre sådan. Jeg ved bare ikke lige hvordan det skal gøres.
Avatar billede netroam Nybegynder
24. september 2009 - 09:12 #4
Virkelig ingen, der kan hjælpe med det her?
Avatar billede netroam Nybegynder
13. oktober 2009 - 15:55 #5
Nå, jeg tager pointsene så.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester