[AJAX/PHP]Meerdere vars wegschrijven in verschillende velden

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Montaner
  • Registratie: Januari 2005
  • Laatst online: 01-09 08:19
Ik heb een database waarin gebruikers staan, allemaal met een eigen ID. Nu heb ik een pagina waarin ik met een dropdown menutje(wordt gevuld uit het database) een ID selecteer. Zodra dit gedaan wordt moet er in 3 andere velden de bijbehorende voornaam, tussenvoegsels en achternaam worden ingevuld.

Ik krijg het nu nog net voor elkaar dat hij de gegevens ophaald, maar nu weet ik niet hoe ik ze in 3 verschillende velden moet zetten.

Hier het 'mainform' (let aub niet op de slordige PHP code om het dropdown menutje te vullen, dat komt allemaal later wel):

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<script type="text/javascript">
var xmlHttp

function haalNaam(str){
    xmlHttp=MaakXmlHttpObject()
    if (xmlHttp==null) return;
    var url="haalnaam.php" + "?q=" + str;
    xmlHttp.onreadystatechange=StatusGewijzigd;
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
} 

function StatusGewijzigd() { 
    if (xmlHttp.readyState==4) document.getElementById("voornaam").value=xmlHttp.responseText;
}

function MaakXmlHttpObject() {
    xmlHttp = null;
    if (window.ActiveXObject)       xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    else if (window.XMLHttpRequest) xmlHttp = new XMLHttpRequest();
    else alert ("Your browser does not support AJAX!");
    return xmlHttp;
}
</script>

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
mysql_connect("localhost","root", ""); 
mysql_select_db("recepten"); 

$query = "SELECT id FROM patienten";
$result = mysql_query($query);

    echo '<select onchange="haalNaam(this.value)">';
while ($rij = mysql_fetch_assoc($result)){
    echo '<option value="' . $rij["id"] . '">' . $rij["id"] . "</option>";
};
    echo '</select>';

?> 
<br />
<input type="text" id="voornaam" style="width: 150px;"/>
<input type="text" style="width: 80px;"/> 
<input type="text" style="width: 150px;"/> <br />


En hier het bestandje waar de voornaam etc. wordt opgehaald:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
mysql_connect("localhost","root", ""); 
mysql_select_db("recepten"); 

$patientid = $_GET['q'];
$quer = "SELECT voornaam, tussenvoegsel, achternaam FROM patienten WHERE id = '" . $patientid . "' ";
$res = mysql_query($quer);

while ($namen = mysql_fetch_assoc($res)){
    $voornaam = $namen["voornaam"];
    $tussenvoegsel = $namen["tussenvoegsel"];
    $achternaam = $namen["achternaam"];
}

echo $voornaam;
echo $tussenvoegsel;
echo $achternaam;

?> 


Nu echo ik dus domweg gewoon de variabelen(die nu dus in alleen het eerste veld worden gezet), maar hoe ik ze anders terug wil schrijven weet ik zo ook niet. Sinds ik verder echt slecht ben in AJAX/JS vraag ik hier om hulp sinds ik er domweg niet uit kom, en al helemaal niet als ik het 'officieel' wil gaan doen via XML & DOM etc.

Acties:
  • 0 Henk 'm!

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 15:19

voodooless

Sound is no voodoo!

Kijk eens naar libraries als prototype, en ook kijk ook eens naar JSON.

Do diamonds shine on the dark side of the moon :?


Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 14:39

Johnny

ondergewaardeerde internetguru

Je moet de responseText structureren, dat kan door de gegevens te presenteren als XML, JSON, of op een andere manier. Het makkelijkst lijkt me in dit geval om een enkel scheidingsteken tussen de velden te zetten dat niet in de gegevens zelf kan voorkomen.

Als je een newline character er tussen zet krijg je als een output als volgt:
code:
1
2
3
voornaam
tussenvoegsel
achternaam


Vervolgens splits je de tekst en zet je de waarden van de array in de juiste velden.

JavaScript:
1
2
3
4
5
var name = xmlHttp.responseText.str.split("\n");

document.getElementById("voornaam").value = name[0];
document.getElementById("tussenvoegsel").value = name[1];
document.getElementById("achternaam").value = name[2];

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.