WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   SQL-Abfrage via URL-Parameter (http://www.wcm.at/forum/showthread.php?t=173084)

ff 31.08.2005 20:50

SQL-Abfrage via URL-Parameter
 
Wenn ich im Browser
mydomain.at/myscript.php?where_string=id=17
eintrage, wird das in meinem php-Script
PHP-Code:

$abfrage_ergebnis mysql_db_query($meine_db"SELECT * FROM $meine_tabelle WHERE $where_string"); 

richtig erkannt und der Datensatz mit der id=17 angezeigt.

Leider funktioniert das nur mit Zahlenfeldern.

Wie stelle ich das an, wenn ich ein Textfeld abfragen will:
mydomain.at/myscript.php?where_string=Tier=Katze

Das funktioniert ohne Hochkommas nicht.

Hat da jemand eine Idee?

Danke
ff

pc.net 31.08.2005 21:11

du mußt $where_string mit einfachem hochkomma einschließen -> '$where_string' ...

ff 31.08.2005 22:06

Das funktioniert leider nicht. Die Variable $where_string soll ja Tier='Katze' liefern und nicht 'Tier=Katze'.

Das Problem sehe ich eher in den URL-Parametern. Wie bringe ich das $where_string="Tier=\'Katze\'" oder so aehnlich in einer URL unter?

Danke
ff

pc.net 31.08.2005 22:16

aja, jetzt wird mir klar, was du willst ...

dann solltest du nicht beide paramater in einen reinstopfen, sondern diese trennen ...

mydomain.at/myscript.php?search_column=Tier&match_string=Katze
PHP-Code:

$abfrage_ergebnis mysql_db_query($meine_db"SELECT * FROM $meine_tabelle WHERE $search_column = '$match_string'"); 


ff 31.08.2005 22:33

Ja, das funktioniert so. Nur bin ich halt dann bei der Abfrage nicht so flexibel, wie ich es gerne haette. Dann braeuchte ich eine weitere Variable fuer den Operator (= ,LIKE, <, >, ...) und was mache ich bei Tier='Katze' AND Farbe='schwarz'?

Vermutlich bilde ich schon wieder etwas ein, was via URL gar nicht moeglich ist . . . schade :(

Danke jedenfalls fuer deine Hilfe!
ff

pc.net 31.08.2005 22:37

naja, man kann halt nicht alles so wie man es gerne hätte in eine url packen ;) ...

ff 01.09.2005 00:43

aber man soll die Hoffnung nicht aufgeben ;-)

Jedenfalls geht es auch, wenn man nun den Operator in die 1. Variable schreibt! Also:

mydomain.at/myscript.php?search_column=Tier =&match_string=Katze

bzw.

mydomain.at/myscript.php?search_column=Farbe LIKE&match_string=%schwarz%

PHP-Code:

$abfrage_ergebnis mysql_db_query($meine_db"SELECT * FROM $meine_tabelle WHERE $search_column  '$match_string'"); 

lg
ff

pc.net 01.09.2005 10:16

ich würd dann aber den operator auch separat in einer eigenen variable übergeben ;) ...

ff 01.09.2005 11:54

Hast du dafuer eine Begruendung, die ich momentan nicht erkennen kann?

pc.net 01.09.2005 12:16

bei der parameter-übergabe würde ich jedenfalls leer- und operatorzeichen (=, <, >, !=, <=, >=) möglichst vermeiden ...

statt "=" würde ich das wort "equal" nehmen (analog dazu greater, less_then, not_equal, usw.) ... das ganze dann in php auf das entsprechende operator-zeichen zu ersetzen ist IMHO designmäßig unkritischer (vor allem in bezug auf fehlerquellen bei upgrade oder zusätzlicher einzubindender browser bzw. plattformen) ...


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag