Danke für den Tipp der schnelleren Verarbeitung. Hab schon gemerkt, wie langsam die Abfrage geworden ist. Werde das jetzt mal umbauen.
Gruß Jörg
SQL Filterfrage
Einklappen
X
-
PHP-Code:if($fontsort==1) $rs = mysql_query("SELECT * FROM sodah_fonts...
Es kann dann schneller verarbeitet werden.
Einen Kommentar schreiben:
-
wenn du alles haben willst, muss du den teil im WHERE weglassen oder eben % verwenden.
*VERSCHIEB* nach sql
Einen Kommentar schreiben:
-
Habs selber rausgefunden:
PHP-Code:/*******************/
/* Datenbank lesen */
/*******************/
//Verbindung zum MYSQL-Server Herstellen
$conn = mysql_connect("xxx","xxx","xxx");
//Verbindung zur Datenbank herstellen
$db = mysql_select_db("proskating");
//leerer Zeichenketten abfangen
if (strlen($fontsearch)>0)
{
$fontsearch = ltrim($fontsearch);
$fontsearch = chop($fontsearch);
} else {
$fontsearch = "";
}
if (strlen($customersearch)>0)
{
$customersearch = ltrim($customersearch);
$customersearch = chop($customersearch);
} else {
$customersearch = "";
}
if (strlen($notesearch)>0)
{
$notesearch = ltrim($notesearch);
$notesearch = chop($notesearch);
} else {
$notesearch = "";
}
//Sortierreihenfolge bestimmen
if($fontsort==1) $rs = mysql_query("SELECT * FROM sodah_fonts ORDER BY feld1 WHERE feld1 LIKE '%$fontsearch%' AND kunde LIKE '%$customersearch%' AND bemerkung LIKE '%$notesearch%'", $conn) or die ("&loaded=1");
else if ($kundensort==1) $rs = mysql_query("SELECT * FROM sodah_fonts ORDER BY kunde WHERE feld1 LIKE '%$fontsearch%' AND kunde LIKE '%$customersearch%' AND bemerkung LIKE '%$notesearch%'", $conn) or die ("&loaded=1");
else if ($bemerkungsort==1)$rs = mysql_query("SELECT * FROM sodah_fonts ORDER BY bemerkung WHERE feld1 LIKE '%$fontsearch%' AND kunde LIKE '%$customersearch%' AND bemerkung LIKE '%$notesearch%'", $conn) or die ("&loaded=1");
else $rs = mysql_query("SELECT * FROM sodah_fonts WHERE feld1 LIKE '%$fontsearch%' AND kunde LIKE '%$customersearch%' AND bemerkung LIKE '%$notesearch%'", $conn) or die ("&loaded=1");
$anzahlzeilen = mysql_num_rows($rs);
$anzahlspalten = mysql_num_fields($rs);
for ($x=0;$x<$anzahlspalten;$x++)
{
echo "&feld".$x."=";
for ($y=0;$y<$anzahlzeilen;$y++)
{
echo mysql_result($rs, $y, $x);
if ($y<$anzahlzeilen-1)
{
echo "¦";
}
}
}
echo "&loaded=1";
mysql_close($conn);
Einen Kommentar schreiben:
-
SQL Filterfrage
Hallo,
ich hab eine Frage bezüglich der Filter in der Select-SQL Abfrage.
Falls der Benutzer keine Filter einstellt, sollen alle Datensätze angezeigt werden. Da dachte ich, muss man das Zeichen * als Suchzeichen einbauen.
Zumindestens ist das so bei ACCESS. Hmmmm....
Also hier der Code. Nur funktioniert das * nicht. Es gibt keine Datensätze.
Wie muss denn der Syntax aussehen, um alle Datensätze anzeigen zulassen, solange vom User keine Eintragungen im Filter sind?
PHP-Code:/*******************/
/* Datenbank lesen */
/*******************/
//Verbindung zum MYSQL-Server Herstellen
$conn = mysql_connect("xxx","xxx","xxx");
//Verbindung zur Datenbank herstellen
$db = mysql_select_db("proskating");
//leerer Zeichenketten abfangen
if (strlen($fontsearch)>1)
{
$fontsearch = ltrim($fontsearch);
$fontsearch = chop($fontsearch);
} else {
$fontsearch = "*";
}
if (strlen($customersearch)>1)
{
$customersearch = ltrim($customersearch);
$customersearch = chop($customersearch);
} else {
$customersearch = "*";
}
if (strlen($notesearch)>1)
{
$notesearch = ltrim($notesearch);
$notesearch = chop($notesearch);
} else {
$notesearch = "*";
}
//Sortierreihenfolge bestimmen
if($fontsort==1) $rs = mysql_query('SELECT * FROM sodah_fonts ORDER BY feld1 WHERE feld1 LIKE '.$fontsearch.' AND kunde LIKE '.$customersearch.' AND bemerkung LIKE '.$notesearch, $conn) or die ("&loaded=1");
else if ($kundensort==1) $rs = mysql_query('SELECT * FROM sodah_fonts ORDER BY kunde WHERE feld1 LIKE '.$fontsearch.' AND kunde LIKE '.$customersearch.' AND bemerkung LIKE '.$notesearch, $conn) or die ("&loaded=1");
else if ($bemerkungsort==1)$rs = mysql_query('SELECT * FROM sodah_fonts ORDER BY bemerkung WHERE feld1 LIKE '.$fontsearch.' AND kunde LIKE '.$customersearch.' AND bemerkung LIKE '.$notesearch, $conn) or die ("&loaded=1");
else $rs = mysql_query('SELECT * FROM sodah_fonts WHERE feld1 LIKE '.$fontsearch.' AND kunde LIKE '.$customersearch.' AND bemerkung LIKE '.$notesearch, $conn) or die ("&loaded=1");
$anzahlzeilen = mysql_num_rows($rs);
$anzahlspalten = mysql_num_fields($rs);
for ($x=0;$x<$anzahlspalten;$x++)
{
echo "&feld".$x."=";
for ($y=0;$y<$anzahlzeilen;$y++)
{
echo mysql_result($rs, $y, $x);
if ($y<$anzahlzeilen-1)
{
echo "¦";
}
}
}
echo "&loaded=1";
mysql_close($conn);
Stichworte: -
Einen Kommentar schreiben: