Listbox + Details

Status
Niet open voor verdere reacties.

ManuNeko

Gebruiker
Lid geworden
24 jun 2009
Berichten
110
Ik heb een listbox met werknemers. Als er op een naam wordt geclickt, dan zouden de details van die werknemer ernaast moeten komen.

Iemand enig idee hoe je zoiets doet? Ik zou op de een of andere manier mijn ID moeten kunnen doorgeven, maar ik weet niet hoe.:o
 
Bedoel je een select? Je kunt een ID opgeven als de value achter een keuze, en de naam als element gebruiken:

<select name="werknemer">
<option value="1">Jan Pietersen</option>
<option value="2">Piet Jansen</option>
</select>

Als je nu in deze dropdown de naam Piet Jansen selecteert, dan wordt de waarde "2" doorgegeven, en dat is het ID van die persoon.

Als je wil dat de extra informatie direct verschijnt zul je gebruik moeten maken van AJAX, een kruising tussen Javascript en PHP om daarmee de data op te halen als iemand klikt, daarvoor kun je het beste een AJAX tutorial op het web zoeken, tis opzich niet heel moeilijk.
 
Ik heb inderdaad zo mijn listbox opgebouwd, maar dan wel met PHP.

Mijn probleem is dat ik een onclick heb met een submit. Maar ik heb dus mijn ID niet meer.
 
Ik denk dat je in het javascript forum moet zijn! Verder is het wel handig om wat code te posten :)
 
In het javascript forum? Vragen stellen over PHP?

Dit is mijn code:

PHP:
<form method='post' ID='form1'><br>
<table border="0" width="90%" align="center" cellpadding="10" bgcolor="e6f5fa">
  <tr>
    <td width="20%">
	  <select name="lstPersoon" size="30" style="width: 100%" onChange="document.getElementById('form1').submit();">
        <?php
          $dbh = mysql_connect($hostname, $domein . $username, $password)  or die("Unable to connect to MySQL");
          $selected = mysql_select_db($domein . $database,$dbh) or die("Could not select " . $domein . $database);
          $result = mysql_query("Select ID, Naam, Voornaam From Persoon Where Actief = 1 Order By Naam, Voornaam");
		  $firstRow = true;
          while ($row = mysql_fetch_array($result,MYSQL_ASSOC))
           {
		    if ($firstRow && $PersoonID == -1)
			  $PersoonID = $row{'ID'};
	        print "<option" . ($row{'ID'}==$PersoonID ? " selected" : "") . " value='" . $row{'ID'} . "'>" . $row{'Naam'} . " " . $row{'Voornaam'} . "</option>";
            $firstRow = false;
	       }
          mysql_close($dbh);
        ?>
	  </select>
	</td>
  </tr>
</table><br>
 
Eeuhm, als ik je vraag zo begrijp wil je zonder dat je op de submit knop drukt, de gegevens van iemand laten verschijnen. Hiervoor moet je javascript gebruiken?
 
Nee, want als je op een naam klikt wordt er een submit geforceerd en dus kom je in PHP.
 
Maar dan heb je dus de ID... die wordt namelijk meegestuurd door het formulier. Gezien de select "lstPersoon" heet, zou de ID in de betreffende pagina binnen moeten komen in $_POST['lstPersoon']. Vanaf daar kun je hem gebruiken om informatie op te halen en te tonen.
 
Ik krijg de melding "Notice: Undefined index: lstPersoon in C:\...\Personeel.php on line 13" als ik
PHP:
echo "lstPersoon: " . $_POST['lstPersoon'];
doe.
 
Is dat voor of na het inzenden? De variabele bestaat natuurlijk alleen na het inzenden.
 
Ik maak vorderingen...

Er stond een foutje in de lijn die de submit deed en daarom was lstPersoon niet gekend.

Alvast bedankt voor de hulp:)
 
Ik dacht dat ik er was, maar toch is er nog een probleem.
Een beetje verder staat hetvolgende (wordt gebruikt als tabbladen):


PHP:
	<div id='header'>
	  <ul>
		  <li <?php if ($PageID==1) print "id='current'";?>><a href='Personeel.php?PageID=1'>Persoonlijke Gegevens</a></li>
		  <li <?php if ($PageID==2) print "id='current'";?>><a href='Personeel.php?PageID=2'>Gezin</a></li>
		  <li <?php if ($PageID==3) print "id='current'";?>><a href='Personeel.php?PageID=3'>Bedrijf</a></li>
		  <li <?php if ($PageID==4) print "id='current'";?>><a href='Personeel.php?PageID=4'>Financieel</a></li>
		  <li <?php if ($PageID==5) print "id='current'";?>><a href='Personeel.php?PageID=5'>Medisch</a></li>
		  <li <?php if ($PageID==6) print "id='current'";?>><a href='Personeel.php?PageID=6'>Kilometervergoeding</a></li>
		  <li <?php if ($PageID==7) print "id='current'";?>><a href='Personeel.php?PageID=7'>Info</a></li>
		</ul>
	  </div>

Als ik nu op een tabblad klik dan ben ik mijn lstPersoon kwijt.
 
Dat klopt :) Als je die opnieuw mee wil sturen zul je hem aan die pagina mee moeten geven, bijv via de GET:

HTML:
<a href="personeel.php?PageID=1&lstPersoon=3">

Dan kun je em met $_GET['lstPersoon'] weer terug vinden.
 
En waar haal ik die "3" vandaan? Ik kan niet de $PersoonID afdrukken want die wijzigt als ik op de listbox click. En lstPersoon afdrukken lukt ook niet.

Is het trouwens niet mogelijk om hier met session te werken?
 
Het is altijd mogelijk met sessions te werken. En die 3 hoort lstPersoon te zijn en die moet nog bestaan als je de pagina (en dus de links) aanmaakt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan