Danke Dir! Ich habe es mit Deinem ersten Codeschnipsel Deines letzten Beitrages versucht. Nun werden 5 Datensätze pro Seite ausgegeben, wie gewünscht.
Jetzt gibt es mehrere neu aufgekommene Probleme bzw. weitere Fragen.
Doch zuerst möchte ich Deiner Bitte nachgehen was das Erläutern meines o.g. Beispiels betrifft. Also ich habe ein Formular mit mehreren Inputfeldern mit dem ich die Abfrage der Datenbank selektieren kann. Sind alle Felder leer, sprich es ist nichts eingegeben, werden einfach alle Datensätze ausgegeben:
PHP:
// Alles wird selektiert
// Gleichzeitig die Grundlage fuer alle anderen Abfragen
$query = "SELECT * FROM (
SELECT TOP $zeilenProSeite * FROM (
SELECT TOP $seite *
FROM testtabelle
ORDER BY testtabelle.testspalte ASC) as foo
ORDER by testspalte DESC) as bar
ORDER by testspalte ASC " ;
$results = mssql_query($query);
Ist jetzt nun mind. ein, mehrere oder alle Felder gesetzt, dann wird nach den eingegeben Sachen selektiert:
PHP:
// Ist eines der Textfelder gesetzt ...
if(!empty($kdnr) || !empty($artikelnr) || !empty($lieferant) || !empty($von) || !empty($bis)){
$query .= " WHERE ";
// ... dann wird der Abfrage-String erweitert
if(!empty($kdnr))
$query .= " testspalte = '$kdnr' AND ";
if(!empty($artikelnr))
$query .= " testspalte_2 = '$artikelnr' AND ";
if(!empty($lieferant))
$query .= " testspalte_6 = '$lieferant' AND ";
if ((!empty($von)) && (!empty($bis)))
$query .= " testspalte_7 >= '$von' AND testspalte_7 <= '$bis' AND ";
// Abfrage-String wird gekuerzt um das AND am Schluss zu entfernen
$query = substr($query, 0, strlen($query)-4);
}
Jetzt zu meinen Anliegen bzw. Fragen:
Momentan wird ja die Ausgabe mit dieser Abfrage
PHP:
$query = "SELECT * FROM (
SELECT TOP $zeilenProSeite * FROM (
SELECT TOP $seite *
FROM testtabelle
ORDER BY testtabelle.testspalte ASC) as foo
ORDER by testspalte DESC) as bar
ORDER by testspalte ASC " ;
nach der ersten Spalte geordnet.
Besteht nun die Möglichkeit die Abfrage garnicht zu ordnen, sprich die Datensätze einfach so auszugeben, wie sie in der Datenbank gespeichert sind?
Desweiteren funktioniert jetzt die Selektionsabfrage nicht mehr. Ich bekomme nun nach der geänderten Abfrage folgende Fehlermeldung wenn ich ein input-Feld gesetzt habe:
Warning: mssql_query() [function.mssql-query]: message: Falsche Syntax in der Nähe des WHERE-Schlüsselwortes. (severity 15) in ** on line 184
Warning: mssql_query() [function.mssql-query]: Query failed in ** on line 184
Falsche Syntax in der Nähe des WHERE-Schlüsselwortes.
Zeile 184 ist folgende:
PHP:
$sql = mssql_query($query) or die (mssql_get_last_message());
Ich vermute, dass dieses neu aufgekommene Problem mit der Anordnung von SELECT, SELECT TOP, FROM, WHERE und ORDER BY zusammen hängt. Weisst Du wie es richtig heissen muss, bitte?
Ich hoffe Du kannst mir weiterhelfen.