Mi. 12.03.2014
16:42 Uhr
#1
- Registriert seit
- 23.03.2007
- Beiträge
- 2.425
- Beitragswertungen

Moin,
auf einigen Seiten sieht man ja ein schönes Feautre: Die Anzahl der Trefferergebnisse werden dynamisch angezeigt.
Bsp: Ich hab eine Tabelle, die wie folgt aussieht:
id - farbe
1 - blau
2 - blau
3 - blau
4 - blau
5 - rot
Nun Möchte ich eine Selectbox, in der ich dann Farben auswählen kann. Wenn ich dann die Farbei Blau auswähle, soll mir angezeigt werden, das es für meine "Suche" 5 Treffer gibt, ohne das die Seite neu geladen wird.
Ich habe schon viel darüber gelesen, auch einiges ausprobiert - aber leider bin ich nicht wirklich von Erfolg beglückt...
AJAX und JQuery sind denke ich schon die richtigen Themen. Hat vielleicht jemand ein Produktivbeispiel, vielleicht sogar ein gutes Tutorial für mich, an dem ich mich orientieren kann?
W3Schools habe ich schon durchstöbert, das ist aber sehr "trocken" - dort wird nicht weiter auf die Möglickeiten mit Datenbanken eingegangen.
Vielen Dank schonmal!
verwendete ilch Version: 1.1 P
Nichts ist so sicher, wie die Änderung.
Mi. 12.03.2014
19:57 Uhr
#2
- Registriert seit
- 16.06.2006
- Beiträge
- 15.334
- Beitragswertungen

Sind denn, wenn die Seite mit der Tabelle geladen wird, schon alle Zeilen der Datenbank dabei und sollen dann nur die angezeigten gezählt werden, oder gibt es eine Pagination und es sollen eine neue Abfrage an die Datenbank gesendet werden?
Do. 13.03.2014
07:34 Uhr
#3
- Registriert seit
- 23.03.2007
- Beiträge
- 2.425
- Beitragswertungen

Keine Pagination - die User haben die möglichkeit nach bestimmten kriterien zu filtern - was ich mochte ist, das nach jeder änderumg im formular das ergebnis (anzahl der treffer) aktualisiert wird
EDIT: Ich habe bereits eine Tabelle mit befüllten Daten. Mit einem Formular selektiere ich dann Werte aus der vorhandenen Tabelle - bisher ist es so, das wenn ich meine Kriterien angegeben habe, ich auf absenden klicke und dann weitergeleitet werde und den Request erhalte. Ich möchte jetzt aber, das man ohne Neuladen der Seite die Anzahl der zu erwartenden Ergebnisse z.B. h inter dem Suchbutton sieht. Und diese Anzahl soll sich immer dann ändern, wenn man ein neues Suchkriterium angibt (Radiobuttons, Selectboxen, Checkboxen etc.)
Zuletzt modifiziert von CeeJay am 13.03.2014 - 12:08:30
Nichts ist so sicher, wie die Änderung.
Sa. 22.03.2014
19:33 Uhr
#4
- Registriert seit
- 23.03.2007
- Beiträge
- 2.425
- Beitragswertungen

hat noch wer eine Idee?
Nichts ist so sicher, wie die Änderung.
Di. 25.03.2014
07:12 Uhr
#6
- Registriert seit
- 31.03.2013
- Beiträge
- 1.337
- Beitragswertungen

Also ich habe Dir mal was gebastelt. Dazu muss ich sagen, ich verwende auf unserer Page für die Shoutbox und sämtliche Kommentar-Sachen diese Methode. Damals habe ich das auch nur Dank der Hilfe von Mairu umgesetzt bekommen, deshalb denke ich, ich kann Dir jetzt hier auch etwas helfen.
Es ist zwar nur ein Grundgerüst, aber wenn Du das System darin erkennst, kannst Du es dann zur weiteren Verwendung anpassen.
Hier mal eine einfache Auswahl von Farben:
test.htm1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | < table width = "60%" border = "0" cellspacing = "1" cellpadding = "5" >
< tr >
< td align = "right" class = "Cmite" >< strong >Farben : </ strong ></ td >
< td class = "Cnorm" >
< select name = "colors" id = "colors" >
< option ></ option >
< option value = "rot" >rot</ option >
< option value = "schwarz" >schwarz</ option >
< option value = "weiss" >weiss</ option >
< option value = "silber" >silber</ option >
</ select >
</ td >
</ tr >
</ table >
< script type = "text/javascript" >
$(document).ready(function () {
$('#colors').change(function(){
$.ajax({
url: "index.php?test_request",
type: "post",
data: {option: $(this).find("option:selected").val()},
success: function(data){
//fügt die antwort in den container
$("#modells").html(data);
}
});
});
});
</ script >
< div id = "modells" >
</ div >
|
Jetzt brauchst Du eine Datei, die den request auswertet und wieder ausgibt (siehe oben bei url):
test_request.php1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <?php
$mainOption = escape( $_POST [ 'option' ], 'string' );
details( $mainOption );
function details( $opt )
{
if ( $opt == 'rot' )
echo 'Modelle: <select class = "detail_select" >
<option value= "Ferrari" >Ferrari</option>
<option value= "Alfa Romeo" >Alfa Romeo</option>
</select>';
else if ( $opt == 'schwarz' )
{
echo 'Modelle: <select class = "detail_select" >
<option value= "Mercedes" >Mercedes</option>
<option value= "Bentley" >Bentley</option>
</select>';
} else if ( $opt == 'weiss' )
{
echo 'Modelle: <select class = "detail_select" >
<option value= "Audi" >Audi</option>
<option value= "BMW" >BMW</option>
</select>';
} else if ( $opt == 'silber' )
{
echo 'Modelle: <select class = "detail_select" >
<option value= "VW" >VW</option>
<option value= "Cadillac" >Cadillac</option>
</select>';
}
}
?>
|
Ist wie gesagt nur eine minimalistische Version, aber das Prinzip sollte deutlich werden. Und alles ohne Reload
Zuletzt modifiziert von Outi77 am 25.03.2014 - 12:44:01
Die richtige Formulierung eines Problems ist nicht selten bereits die halbe Lösung.
»Albert Einstein«