Query gebaseerd op een optie in een dropdown lijst

Status
Niet open voor verdere reacties.

ac484219

Gebruiker
Lid geworden
17 mei 2007
Berichten
54
Ik wens de inhoud van een query die op een webpagina verschijnt laten afhangen van een optie aangeduid in een dropdown lijst (dus soort van filterfunctie).
Ik heb dit als volgt via javascript en PHP geprogrammeerd maar bekom niet het gewenste resultaat (geen records). Wat doe ik fout ?
PHP:
<script type="text/javascript">
function MM_callJS(jsStr) { //v2.0
var opd = document.form1.opdstatus.options[document.form1.opdstatus.selectedIndex].text;
alert (opd);
<?php
mysql_select_db($database_myconnection, $myconnection);
if (opd == "Started") {
$query_dashboard = "SELECT * FROM dashboard WHERE Status = 'ST' ORDER BY Deadline ASC";
$dashboard = mysql_query($query_dashboard, $myconnection) or die(mysql_error());
$row_dashboard = mysql_fetch_assoc($dashboard);
$totalRows_dashboard = mysql_num_rows($dashboard);
}
if (opd == "Finished") {
$query_dashboard = "SELECT * FROM dashboard WHERE Status = 'FN' ORDER BY Deadline ASC";
$dashboard = mysql_query($query_dashboard, $myconnection) or die(mysql_error());
$row_dashboard = mysql_fetch_assoc($dashboard);
$totalRows_dashboard = mysql_num_rows($dashboard);
} 
if (opd == "Pending") {
$query_dashboard = "SELECT * FROM dashboard WHERE Status = 'PN' ORDER BY Deadline ASC";
$dashboard = mysql_query($query_dashboard, $myconnection) or die(mysql_error());
$row_dashboard = mysql_fetch_assoc($dashboard);
$totalRows_dashboard = mysql_num_rows($dashboard);
}
if (opd == "All") {
$query_dashboard = "SELECT * FROM dashboard ORDER BY Deadline ASC";
$dashboard = mysql_query($query_dashboard, $myconnection) or die(mysql_error());
$row_dashboard = mysql_fetch_assoc($dashboard);
$totalRows_dashboard = mysql_num_rows($dashboard);
}
?>
}
</script>
 
Laatst bewerkt door een moderator:
Ik heb geen idee wat je wilt gaan bereiken, maar je wilt een javascript variable gebruiken in php.
php is een serverside taal en javascript een clientside. Die kun je niet zonder meer lekker met elkaar mixen.

google eens op ajax, handigste is jquery om te gebruiken.
 
Laatst bewerkt:
Of haal alles één keer uit de database via PHP, stop het in een javascript variabele en filter vervolgens in je javascript.

Scheelt elke keer requests doen naar de database.
 
Scheelt elke keer requests doen naar de database.

Dat zou ik niet doen, het kan sowieso alleen voor kleine resultsets, maar wanneer de data op de server verandert kom je daar pas weer achter als je de pagina herlaad, dat gaat niet werken.
 
Dat is afhankelijk van de toepassing.

Als het op een pagina staat die je uren open laat staan dan is het inderdaad geen handige optie.
Maar hetzelfde probleem houdt je met een AJAX-call. Wanneer er data wijzigt in de geselecteerde optie dan dien je ook eerst de dropdown te switchen voor je deze wijzigingen binnen krijgt.

Wanneer het echt real-time moet gebeuren zou je kunnen kijken naar toepassingen met node.js.
 
Maar hetzelfde probleem houdt je met een AJAX-call. Wanneer er data wijzigt in de geselecteerde optie dan dien je ook eerst de dropdown te switchen voor je deze wijzigingen binnen krijgt.

In tegendeel, met AJAX kun je juist automatisch pollen om aan de server te vragen of de data is veranderd sinds de vorige keer dat de data is opgevraagd. Zonee: doe niets, kost je 100 bytes traffic. Zoja: laad de nieuwe data en daarin zou je zelfs nog kunnen kiezen om alleen de records die ook echt zijn veranderd door te geven.
Op de server kun je de gewijzigde records bijhouden met een trigger of iets dergelijks simpels, en zo blijft je data prima uptodate terwijl je maar een handjevol data heen en weer stuurt.
 
Heb je daar meer informatie over / voorbeelden van? :)
 
Poeh, zelf werk ik veel met ExtJs (http://www.sencha.com/products/extjs) die werken met een MVC variant waarvan je de model z'n data onder andere via AJAX kan laten ophalen en dat doe ik (uit ervaring) met kleine brokjes tegelijk dus ik update niet per record maar dat zou niet ingewikkeld moeten zijn. ExtJs heeft ook een taskrunner die op gezette intervallen een handeling kan verrichten.

Ik gok zomaar dat dit voor jQuery ook prima te doen is.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan