ik heb volgend probleem. In een invulformulier kan de gebruiker velden enz. invullen maar er zijn 2 selectie menu's waarin de gebruiker een keuze moet maken, voor alle duidelijkheid, de gebruiker selecteert een afdeling, nu zou de volgende selectie daar moeten aan gerelateerd worden, dus enkel categorieen behorende bij deze afdeling zouden mogen getonnd worden.
dit heb ik nu
In een database 'afdelingen' staan verschillende records die uitgelezen worden en in een HTML selectielijst komen te staan.
$result = mysql_query("SELECT * FROM categorie WHERE cat_afd_naam ='$afd_naam'", $db) or die ("FOUT: " . mysql_error());
while (list($afd_id, $afd_naam) = mysql_fetch_row($result))
{
echo("<option value=\"$afd_naam\">$afd_naam</option>\n");
}
$result=mysql_query("SELECT * FROM categorie WHERE cat_afd_naam ='$afd_naam'",$db) or die("FOUT: ".mysql_error());
$result = mysql_query("SELECT * FROM categorie ORDER BY at_afd_naam",
$db) or die ("FOUT: " . mysql_error());
while (list($cat_id, $cat_naam, $cat_afd_naam) = mysql_fetch_row($result))
{
echo("<option value=\"$cat_naam\">$cat_naam</option>\n");
}
$result=mysql_query("SELECT * FROM categorie ORDER BY at_afd_naam",
Daar zit nu juist het probleem, bij het inladen van de pagina worden de selectielijst aangemaakt.
Eenmaal de gebruiker een afdeling gekozen heeft zou eigen in de
selectie lijst van de categorieen uiteindelijk de categorieen mogen staan die
bij de gekozen afdeling behoren.
En daar loop ik vast.
Hoe kan ik de selectie lijst pas aanvullen nadat de gebruiker een afdeling koos?
Iemand die mij kan helpen.
Alvast bedankt
19 antwoorden
Gesponsorde links
Abbas - 01/10/2008 11:41 (laatste wijziging 01/10/2008 14:27)
Crew .NET
Hier is al eerste hulp: CODETAGS gebruiken als je code post! Lees de forumregels voor alle verdere uitleg!
Allereerst, in je eerste stukje code: variabelen buiten quotes zetten!
$result = mysql_query("SELECT * FROM categorie WHERE cat_afd_naam ='".$afd_naam."'", $db) or die ("FOUT: " . mysql_error());
while (list($afd_id, $afd_naam) = mysql_fetch_row($result))
{
echo("<option value='".$afd_naam."'>".$afd_naam."</option>\n");
}
$result=mysql_query("SELECT * FROM categorie WHERE cat_afd_naam ='".$afd_naam."'",$db) or die("FOUT: ".mysql_error());
Ten tweede, zorg dat die tweede lijst nog niet 'aangemaakt' is zolang er nog niet uit de eerste lijst gekozen is. Als er uit de eerste lijst gekozen is, gebruik je die waarde in je query. En de resultaten daarvan gebruik je om de tweede lijst aan te maken en te tonen.
Ik heb een eenvoudig scriptje geschreven om te laten zien hoe het kan (zonder JavaScript). Het is zeker niet perfect, maar misschien krijg je zo een idee van hoe je het wel kan oplossen!
<option value='".$afd_naam."'> is niet correct aangezien w3 dubbele quotes aanraad bij het defineren van attributen dus:
<option value=\"".$afd_naam."\">
(bij XHTML iig => is afkooksel van XML)
Citaat:
Rens edit:
Het mag inderdaad ja, maar nog word het afgeraden om het zo te doen...
Eigen meningen zijn deel van de discussie, en horen volgens mij niet echt thuis in iemands posts, maar mee in de lijst van replies.
verder heb ik al een flink aantal boeken gelezen ivm PHP en frameworks die gebruik maken van php, ik heb al met verschillende frameworks gewerkt, én er zelf een ontwikkeld. Ik heb dit nog geen enkele coding standard weten afraden, alsook de php.net website niet. om deze functionaliteit te bevorderen zijn zelfs de {} toegevoegd voor het invoegen van arrays
klopt dat het niet gepast is in alle gevallen, maar het akn een handige shortcut zijn om betrouwbare data in een string te steken in bv een loop om rijen van kleur te laten wijzigen:
//dit mag dus niet
$sql = "SELECT * FROM table WHERE field=$value;"
//dit is correct
$sql = "SELECT * FROM table WHERE field=".mysql_escape_string( $value ).";"
Programmeurs hoeven zich niet voor niets te overwerken, en code moet inderdaad leesbaar blijven, maar daarvoor hoef je niet alle shortcuts in de vuilbak te gooien... Je hoeft het enkel verstandig te gebruiken
je kan zoveel queries achter elkaar in een string stoppen als je wil, zolang je elke query met een ; afsluit
beste voorbeeld is een sql export van je phpmyadmin
Zit standaard in een distro van php 5 als ik me niet vergis.
iig om terug naar de bron van het probleem te gaan, query afsluiten met een semicolon zal dus geen fout opleveren, php commando niet afsluiten met een semicolon zoals ik daar deed zal dus wel een parse error opleveren
Kan niet zeggen dat ik gecharmeerd ben van die site, evenals van je code hierboven...zie je nu zelf niet dat je code de hele layout om zeep helpt?
Codetags eromheen ....