onChange rij toevoegen met options

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Albert de Wit

Albert de Wit

06/06/2012 11:24:05
Quote Anchor link
Ik zoek een mogelijkheid (tot nu toe pogingen hebben gefaald) om met javascript items uit de database te halen aan de hand van de value van een dropdownmenu.

Ik heb het volgende tot nu toe

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
echo '
<select name="idKlant" onChange="contacten('
;
$query = mysql_query("SELECT idKlant FROM klant");
while ($row = mysql_fetch_row($query)) { echo $row[0]; }

echo ')">
<option value="nieuw">Nieuwe Klant</option>                                                  '
;
$query = mysql_query("SELECT idKlant,Naam FROM klant");
while ($row = mysql_fetch_row($query))
{

  echo "<option value='".$row[0]."'>".$row[1]."</option>";
}

echo '
</select>
<
/td>
<
/tr>
<
div id="contact">
<
/div>
?>


bij de onChange van die <select> hoort de volgende functie

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script language="javascript" type="text/javascript">
function contacten(str)
{
  $query = mysql_query("SELECT * FROM contactpersonen WHERE idKlant='".str."'");
  while ($code .= "<option value='".$row[0]."'>"$row[2]"</option>";)
  
  document.getElementById('contact').innerHTML = "<tr>
                                                      <td>
                                                          Contactpersoon:
                                                      </td>
                                                      <td>
                                                          <select name='Contactpersoon'>
                                                          $code
                                                          </select>
                                                      </td>
                                                  </tr>        ";

}
</script>


Ik heb al eerder gezegd dat ik geen javascript ken (althans heeeel erg slecht).

Wat ik probeer te bereiken is dat als ik een keuze maak uit de <select> dat eronder in <div> een regel erbij komt die alle contactpersonen laat zien van die bepaalde klant.

Kan iemand mij op een mogelijke fout wijzen wat ik fout doe of is alles wat ik heb gedaan gewoon volledig verkeerd?
Gewijzigd op 06/06/2012 11:26:02 door Albert de Wit
 
PHP hulp

PHP hulp

29/11/2024 00:07:17
 
Jacco Engel

Jacco Engel

06/06/2012 11:30:00
Quote Anchor link
Je bent helemaal verkeerd bezig :). Als je een query wilt uitvoeren zul je onchange moeten posten of met AJAX gaan werken :). Een makkelijke manier om met Ajax te starten is bijvoorbeeld Jquery, die ook redelijk heldere documentatie hebben in mijn ogen :)
 
Albert de Wit

Albert de Wit

06/06/2012 11:32:01
Quote Anchor link
Ok, ik heb een beetje een hekel aan jQuery want dat ziet er in mijn ogen uit als matrix taal. Hoe bedoel je onChange moeten posten?
 
Kees Schepers

kees Schepers

06/06/2012 11:40:32
Quote Anchor link
Ik zou het ook met jQuery oplossen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
$('select[name="idKlant"]').change(function() {
    $.getJSON('url/naar/pagina.php?idKlant=' + $('option:selected',this).val(), function(rows) {
        $('select[name="idKlant"] option').length = 0;
        $(rows).each(function(key,value) {
            $('select[name="idKlant"]').append('<option value=' + key + '>' + value + '</option>');
        });
    }
});


En dan url/naar/pagina.php:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$result
= mysql_query("SELECT * FROM contactpersonen WHERE idKlant=" . (int)$_GET['idKlant'] . ");

$data = array();
while ($row = mysql_fetch_row($result)) {
    $data[] = $row;
}


header('content-type: text/json');
echo json_encode($data);
?>


En dit is uit mijn losse pols dus er kunnen nog wel wat probleempjes inzitten maar zou je op z'n minst een idee en een goede basis moeten geven ;-)
 
Albert de Wit

Albert de Wit

06/06/2012 11:55:37
Quote Anchor link
Ik dacht dat javascript en jQuery hetzelfde konden?

Dit kan dus alleen in jQuery en niet anders?
 
Kees Schepers

kees Schepers

06/06/2012 12:03:48
Quote Anchor link
Nee zeker niet! In JavaScript kan dit ook gewoon. Alleen dan moet je er wel 100 regels extra bij tikken voor je ajax afhandeling e.d. dus ik zou zeggen stick to jQuery!

Waarom vindt je het er zo 'matrix' achtig uit zien? Misschien omdat het event-driven is?

Welk gedeelte van mijn voorbeeld snap je niet? Dan kan ik het misschien toelichten.
 
Reshad F

Reshad F

06/06/2012 12:13:26
Quote Anchor link
@albert ik denk tochecht als je een poging waagt dat jquery veel makkelijker te begrijpen is met 100 regels minder code ook gelijk overzichtelijker.
 
Albert de Wit

Albert de Wit

06/06/2012 12:43:53
Quote Anchor link
tja dan moet ik me eerst in jQuery dus gaan verdiepen.

Kan ik toevallig ook alle contactpersonen oproepen en als een klant dan geselecteerd is alle contactpersonen uitkorten totdat alleen de contactpersonen er nog instaan die bij de klant horen?
Gewijzigd op 06/06/2012 12:46:01 door Albert de Wit
 
Kees Schepers

kees Schepers

06/06/2012 12:52:52
Quote Anchor link
Waarom zou dat niet kunnen? Kwestie van event op goede plek er aan 'hangen'.. Maar er zijn veel tutorials te vinden over jQuery hoor op internet :) Belangrijkste is dat je leert hoe met events en selectors om te gaan.
 
Albert de Wit

Albert de Wit

06/06/2012 12:56:24
Quote Anchor link
Maar ik kan niet een <select> field inkorten als er een keuze is gemaakt van een vorig <select>field? Met javascript bedoel ik dan (ik zie nog liever geen jQuery zolang ik er nog geen kennis van heb)
Gewijzigd op 06/06/2012 12:59:22 door Albert de Wit
 
Kees Schepers

kees Schepers

06/06/2012 13:05:17
Quote Anchor link
Ja dat kan wel met JavaScript. Dat doe je door de length te veranderen of alle elementen te selecteren en deze te verwijderen uit de DOM tree. Alleen omdat ik jQuery-fanaat ben heb ik geen zin om JavaScript voorbeeld te typen dus zul je even moeten googlen :)

Ik zou zoeken op iets in de zin van 'Manipulate select javascript'.
 
Albert de Wit

Albert de Wit

06/06/2012 13:05:57
Quote Anchor link
ok bedankt! :D

Toevoeging op 06/06/2012 16:17:54:

Ik vraag me 1 ding nog steeds wel af.

Waarom werkte de document.getElementById('contact').innerHTML = 'test';
niet als ik die gewoon wel uitvoer.
 
Kees Schepers

kees Schepers

07/06/2012 10:14:55
Quote Anchor link
Heb je al bekeken wat je firebug console daar over zegt? Misschien kan die een element met id contact niet vinden oid?
 
Albert de Wit

Albert de Wit

07/06/2012 10:35:21
Quote Anchor link
ik heb die <div id='contact'> in een table staan. Die table staat weer in een form. Kan dat een rol spelen in het niet kunnen vinden van de div?
 
Reshad F

Reshad F

07/06/2012 10:38:05
Quote Anchor link
albert misschien is dit iets voor je :)

http://learnjquery.tutsplus.com/
 
Albert de Wit

Albert de Wit

07/06/2012 10:52:44
Quote Anchor link
Zal ik thuis zeker doornemen ;)

jQuery in 30 dagen zou erg mooi zijn.

Heb je hiervan zelf ook geleerd? Zoja review?
 
Reshad F

Reshad F

07/06/2012 10:53:29
Quote Anchor link
ik heb hier zelf ook van geleerd, hij legt alles heel duidelijk uit met voorbeeldjes en hij gaat echt door alles heen ( wel in het engels )
 
Albert de Wit

Albert de Wit

07/06/2012 11:09:00
Quote Anchor link
Natuurlijk engels ;). Hartstikke bedankt!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.