Select option

Status
Niet open voor verdere reacties.

wassie

Gebruiker
Lid geworden
21 apr 2009
Berichten
31
Ik wil in dit stuk commando <SELECT><OPTION>keuze</SELECT> verwijzen naar een kolom in een mysql database, die meerdere cellen bevat. de picklist geeft dus een hele rij weer met de gegevens uit de hele kolom.

kan iemand me op weg helpen met aanvullen?
 
hier heb je een voorbeeld voor een pseudoscriptje:
PHP:
// verbinging met database
$query = "de query om de rijen op tehalen";
$result = mysql_query($query);
echo "<form ect...... >":
echo "<select name='select'>";
while ($row = mysql_fetch_array($result){
     echo "<option>".$row['kolom naam']."</option>";}
echo "</select>";
echo "</form>":

al er nog iets niet lukt zeg je het maar
 
nou sta ik helemaal aan het begin van het (proberen) te begrijpen van html en php.
wil je me corrigeren als ik ergens de plank mis sla, want ik vind het meest belangrijk dat ik het snap, ipv maar te kopieren en een beetje aan te passen.

regel 2: daar zet ik het select statement om de gewenste rijen op te halen
regel 3: zegt tegen php dat het resultaat van de query getoond moet worden?
regel 4: laat het resultaat zien
regel 5: waarom weer een echo?
regel 6: wordt het resultaat gekoppeld (de fetch) aan het <option> object???
regel 7: het daadwerkelijk laten zien van het resultaat?
regel 8?
regel 9?

zeg je hier eigenlijk mee dat ik deze picklist niet in html moet maken, maar juist in php? of dat het niet kan in html?
 
zeg je hier eigenlijk mee dat ik deze picklist niet in html moet maken, maar juist in php? of dat het niet kan in html?
HTML is 'maar' een markup-taal, je kan er geen database connecties mee maken! PHP echter wel. PHP haalt je database beesjes op, en 'maakt' er HTML code van (via de echo). Deze spuugt ie dan uit, en voila: een html pagina, met een select erin.
 
Laatst bewerkt:
hier heb je een voorbeeld voor een pseudoscriptje:
PHP:
// verbinging met database
$query = "de query om de rijen op tehalen";
$result = mysql_query($query);
echo "<form ect...... >":
echo "<select name='select'>";
while ($row = mysql_fetch_array($result){
     echo "<option>".$row['kolom naam']."</option>";}
echo "</select>";
echo "</form>":

al er nog iets niet lukt zeg je het maar

moet op regel 1 nog een mysql_connect aangemaakt worden?
 
uiteraard, php weet niet zomaar welke database en welke tabel ie nodig heeft.
 
ik ben nu zover dat ik een verbinding met mijn database heb en gegevens getoond krijg uit de kolom Merk:

<?php
$db = mysql_connect("localhost","wouter","wouter");
mysql_select_db("oga", $db)
or die ("fout: openen mislukt");
$result = mysql_query("SELECT Merk FROM merken", $db);
while (list($Merk) =
mysql_fetch_row($result)) {
echo ("$Merk");
}
?>

het is nog niet gelukt om er een mooie picklist van te maken, dit toont alleen alle merken achter elkaar. waar moet ik <OPTION> nu tussen zetten?
 
Vervang
PHP:
while (list($Merk) =
mysql_fetch_row($result)) {
echo ("$Merk");
}
door
PHP:
while ($list = mysql_fetch_assoc($result)) {
  echo "<option>" . $list['Merk'] . "</option>\n";
}
Voor de while moet je nog <form etc> en <select> echo'en en </select> en </form> na de while, zoals je in ecross' bericht kan zien.
 
Laatst bewerkt:
Bedankt voor je reactie, gaan we vanavond uitproberen!! :thumb:
 
hier heb je een voorbeeld voor een pseudoscriptje:
PHP:
// verbinging met database
$query = "de query om de rijen op tehalen";
$result = mysql_query($query);
echo "<form ect...... >":
echo "<select name='select'>";
while ($row = mysql_fetch_array($result){
     echo "<option>".$row['kolom naam']."</option>";}
echo "</select>";
echo "</form>":

al er nog iets niet lukt zeg je het maar

hmmm, ik kom er maar niet achter wat ik met die form moet doen. Ik google en lees me suf......... :shocked: Misschien wil ik als beginner wel teveel hoor, maar dacht eigenlijk, door er gewoon mee aan de slag te gaan en echt iets te bouwen, leer ik het meest.
tot nu toe heb ik dit:

PHP:
include (dblink.php);
$result = mysql_query("SELECT Merk FROM merken", $db);
echo "<form>":
echo "<select name='select'>";
while ($list = mysql_fetch_assoc($result)) {
   echo "<option>".$list['Merk']."</option>\n";
}
 echo "</select> = $list['Merk']";
echo "</form>= $list['Merk']":
 
Hoi Wassie,

Het form heb je nodig als je de data van de controls gaat verwerken op de server. Maar daar hoef nu nog geen aandacht aan te besteden dat komt hierna in de volgende stap.

Deze code zou moeten werken.

PHP:
include (dblink.php);
$result = mysql_query("SELECT Merk FROM merken", $db);
echo "<form>":
echo "<select name='select'>";
while ($list = mysql_fetch_assoc($result)) {
   echo "<option>".$list['Merk']."</option>\n";
}
echo "</select>";
echo "</form>";

Dit script maakt de volgende HTML code, het aantal options en dat wat er tussen hangt van de data in de tabel af.

HTML:
<form><select name='select'>
<option>Ford</option>
<option>Audi</option>
<option>VW</option>
</select></form>

Gewoon vragen als je iets niet snapt of niet duidelijk is.

Mvg,
Peter
 
Laatst bewerkt:
dus als ik het goed begrijp, heb ik het resultaat van de sql query de naam 'select' meegegeven en roep ik die select in html weer aan? is het de bedoeling om het html deel na dit php deel aan te roepen, of moet ik juist in dit deel php verwerkt worden?

de php code werkt nog niet. Parse error: parse error, expecting `','' or `';'' op regel 3.
 
Ik heb er over heen gekeken regel 3 moet met een ; afgesloten worden ipv een :

PHP:
echo "<form>";

De PHP code genereert de option met de data uit de tabel erin.

Ik denk dat de volgende code beter voor jou doel is, doet het zelfde
PHP:
<form>
<select name="merken">
<?php
include (dblink.php);
$result = mysql_query("SELECT Merk FROM merken", $db);

while ($list = mysql_fetch_assoc($result)) {
   echo "<option>".$list['Merk']."</option>\n";
}

?>
</select>
</form>

Het volgende maakt het waarschijnlijk duidelijker:
PHP:
<html>
	<head>
	</head>
	<body>

	<form>
		<select name="merken">
<?php
include (dblink.php);
$result = mysql_query("SELECT Merk FROM merken", $db);

while ($list = mysql_fetch_assoc($result)) {
   echo "<option>".$list['Merk']."</option>\n";
}

?>
		</select>
	</form>
	</body>
</html>
 
je was er nog laat bij, Peter :D

dit maakt het idd duidelijker!! Ik neem het op in mijn html. Dank voor je uitleg!
blijft $result nu in het geheugen van php zitten, zodat ik het eventueel verop nogmaals kan aanroepen?

ik heb de automerken in een tabel 'merken' zitten. in deze tabel heb ik 2 kolommen, merk en merkid. elk merk heeft een eigen id.
daarnaast heb ik een tabel met typen. in deze tabel heb ik ook 2 kolommen, merkid en type.
wat ik hoop te gaan bereiken is dat de eerste picklist in mijn scherm een keuzemogelijkheid geeft uit de merken. kiest men een merk, moet automatisch in de volgende picklist alleen de types getoond worden die hetzelfde merkid hebben.
moet ik dat in een where clause specificeren?
 
Alle variabele die je buiten een functie gebruikt blijven geldig tot aan het einde van het script mits je ze zelf niet opruimt. Normaal hoef je de variabele niet op te ruimen dat doet php zelf, maar het kan voorkomen dat de inhoud van een variable erg groot is en dat je die geheugen ruimte weer vrij wil maken voor nog een grote bewerking. Als het script af gelopen is vervallen de variabelen weer muv session variabelen, als een session gestart is.

Er zijn verschillende mogelijkheden om dat wat je wil voor elkaar te krijgen. Door mbv javascript de type picklist te vullen afhankelijk van de merk selectie, of door na de merk keuze het formulier op te sturen en dan mbv WHERE de picklist te vullen of mbv ajax ook javascript dat na de selectie van het merk de data van de server haalt en de type picklist vult.

Het beste is om ook de merkid als value in de picklist te zetten en deze te gebruiken. Maar daar kom ik later op terug want ik moet effe weg.
 
weer wat geleerd!

ik zou het liefste niet direct met Java oid aan de gang gaan. laat ik eerst maar is php en html goed onder de knie krijgen ;)

als ik het select uitbreid met het merkid, dan kan ik dus in mijn where clausule een join maken?
 
Er is een heel groot verschil tussen javascript en java. ik bedoel dus javascript. Java is geen script taal maar wordt gecompileerd en niet ge-interpreteerd.

Goed dan gaan we dat alleen met PHP doen en een form maken dat na het selecteren van het merk wordt verzonden en dan terug komt met een keuzelijst om het type te selecteren. We gaan dat dan samen opbouwen zodat je leert hoe je dat moet doen.

Erg vervelend maar ik moet alweer weg, maar ik kom er vandaag nog op terug.
 
super!
ik ga proberen om steeds comments toe te voegen aan de scripts regels met //. dan hoef ik het niet steeds te vragen, mocht ik het vergeten ;)
 
Eerst gaan we nog naar de html code kijken. Als eerste naar de select control. De name van select is later belangrijk als we iets met de geselecteerde waarde van de control gaan doen. Het is goed om hier een duidelijke naam voor te pakken. Ik had die gisteren al aangepast.
Bij elke option heb ik de attribute value toegevoegd. Als we de attribute value niet hebben, wordt de tekst tussen <option> </option> als waarde gebruikt.
Maar dit is niet altijd handig. In ons geval gaan we value gebruiken om de merkid van het merk in op te slaan.

<form name="autoform" action="" method="POST">
<select name="merken">
<option value="1">Ford</option>
<option value="2">Audi</option>
<option value="3">VW</option>
</select>
</form>

Misschien is je opgevallen dat ik bij form ook een paar attribute toegevoegd heb. Namelijk name, action en methode.
Name van het form is handig om het form te kunnen identificeren.
action gebruiken we om aan te geven welke aktie uitgevoerd moet worden als het form ge-submit wordt.
method wordt gebruikt om aan te geven hoe de data verzonden wordt.
Met deze attributen gaan we later nog iets doen.

Nu gaan we het PHP script aanpassen zodat we de boven staande code als resultaat in de browser krijgen. Het goed om de uitvoer van een PHP script in de browser te controleren mbv "bron weergeven", dan kun je zien of de html code klopt die script gegenereerd heeft.
We moeten de merkid tegelijk met het merk uit de database hier voor moet de query aangepast worden. Om data uit meerdere kolommen van de tabel te halen kun je de namen van de kolommen achter SELECT opsommen met een comma ertussen.

Nu nog even naar de code om de option uit te geven. Hier wil ik eerst nog iets aan veranderen:
echo "<option>".$list['Merk']."</option>\n"; namelijk de ". In PHP kun je voor string (tekst) tussen " of tussen ' zetten, maar PHP verwerkt de tekst die er tussen staat anders.
Als je ' gebruikt doet PHP niets met de tekst. Maar bij " wordt de tekst gescand, het is mogelijk om dit te doen: echo "De waarde van de variabele merk is: $merk";. Als $merk de waarde Ford heeft is het resultaat De waarde van de variabele merk is: Ford.
In deze situatie maakt het inprincipe niet zoveel uit of we " of ' gebruiken, maar " wordt in html gebruikt en daarom gaan we ' hie gebruiken.
'<option>' . $list['Merk'] . '</option>\n';
Overigens het is toch mogelijk in een string waar " omheen staan een " in de tekst te gebruiken door er een \ voor te zetten, dus zo "Een \"woord\" tussen aanhalingstekens".
Maar dat maakt het nu wat minder overzichtelijk. vandaar die wijzig.
De . wordt in PHP gebruikt om 2 strings aan elkeer te plakken.

'<option value"' . $de_merkid . '">' . $list['Merk'] . '</option>\n';

Ik wil voorstellen dat je eens gaat proberen om het script aan te passen. Het is geen probleem als het niet lukt.
 
waar ik op vast loop, is dat ik geen idee heb of ik alles in 1 script moet proppen of dat ik er verstandig aan doe om diverse losse php scripts te maken en daar naar te verwijzen indien van toepassing. om als voorbeeld te nemen. als ik het goed begrijp moet ik bij action opgeven hoe het form verwerkt moet worden. daar zou ik bv kunnen verwijzen naar een script? anders heb ik even geen idee wat ik daar moet invullen.

weet jij toevallig of er lektuur (evt. op internet) bestaat die een heldere uitleg geeft over de opbouw van php scripts? ik ben nu aan het lezen in de "basiscursus PHP5" van Peter Kassenaar. Maar tot nu toe kom ik nog niet echt iets tegen dat over de structuur en opbouw van scripts gaat. Bestaat dat?

het form deel, dat moet toch gewoon tussen de php tags staan? of moet dat als html?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan