Avatar billede shako Novice
17. juni 2014 - 09:05 Der er 1 løsning

PHP/Javascript form

Hej Eksperter.

Jeg har en form som jeg gerne vil have fungere således:

Du vælger et post nr. fra en drop down boks (hentet fra en SQL query med DISTINCT. Efter du har valgt opdaterer siden med en GET request (via javascript). Så er det valgte postnr valgt i dropdown boksen, og der kommer en ny hvor man kan vælge adresser fra det postnr.

Til sidst kan man submitte det til en ny php side.

Noget af mine kode:

<SCRIPT language=JavaScript>
function reload(form) {
var val=form.postnr.options[form.postnr.options.selectedIndex].value;
val=val.substring(0, 4);
self.location='search.php?postnr=' + val; }
</script>

------------------


echo "<form method=post name=f1 action='search.php'>";

echo "<select name='postnr' onchange=\"reload(this.form)\"><option value='' disabled selected>Postnr</option>";

while ($row = mysql_fetch_array($query))
{
  echo '<option value="'.$row['postnr_sted'].'">'.$row['postnr_sted'].'</option>';
}
echo "</select>";


---

Men jeg er hverken stærk i PHP eller Javascript - er der nogen som gider fixe det for mig?
Avatar billede HBP2 Praktikant
21. juni 2014 - 20:57 #1
1) Start med at skifte til jQuery eller lignende.
2) Flyt onchange væk fra selve <select>.
3) Undlad at genindlæse hele siden ved pstnr valg, indlæs kun den nye menu v.h.a. ajax.

Javascript kommer til at se nogenlunde sådan ud:
$(function() {
  // kaldes af jquery når hele siden er indlæst; al init her
  $('#postnr').change( function() {
    // kaldes når postnr skifter
    var postnr = $(this).val();
    $('#adresse').load('getaddrforpostno.php', { postnr: postnr }, function() {
      // kaldes når adr menuen er indlæst
      $('#adress').show();
    });
  });
});

Generering af postnr menuen er næsten den samme, bare fjern onchange='...' og sørg for at sætte id til 'postnr', altså:
<select id="postnr" name="postnr" ... >

Du skal osse generere en skjult, tom <select> til adresserne:
echo '<select id="adresse" name="adresse" style="display: none;"></select>';

Endelig skal du lave et PHP script som getaddrforpostno.php som returnerer alle <option> for et givet postnummer.
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