Suchformularabfragen II

EifelFrosch

Mitglied
Hallo nochmal,

leider habe ich immer noch ein Problem mit einer Suchabfrage.
Es sollen max. vier Begriffe in einem Formular eingegeben werden können, um ein Grundstück zu suchen (ID, Eigentuemer, Gemarkung und Groesse_ha). Man soll wählen können, welches Feld man eingibt (z.b. ID und Eigentuemer, Gemarkung und Größe, alle vier, nur eins...je nachdem welche Daten man hat). Ich habe versucht, dass ganze folgendermaßen zu lösen (hier nochmal ein dankeschön ans Forum :-) )

$sqlab = "select * from daten where 1";
if($id) $sqlab .= " and id=$id"; //wenn ID belegt ist, wird das Feld mit
// aufgenommen
if('$eigentuemer') $sqlab .= " and eigentuemer='$eigentuemer'";
if('$gemarkung') $sqlab .= " and gemarkung='$gemarkung'";
if($groesse_ha) $sqlab .= " and groesse_ha=$groesse_ha";

$res = mysql_db_query("grundstueck","$sqlab");

$num = mysql_num_rows($res);
echo "$num Datensätze gefunden<p>";

Leider findet er nur Datensätze, wenn ich den eigentuemer eingebe. In Kombination mit z.b. der richtigen ID findet er nichts, genauso wie bei den anderen Feldern. Gebe ich also nur eine korrekte Gemarung ein, sollte er mir 2 oder 3 Datensätze zeigen, die diese Gemarkung haben. Er sagt aber immer 0 Datensätze gefunden.

Wäre super, wenn mir jemand helfen könnte.

Vielen Dank
EF

PS: Ich glaube es hat irgendwas mit dem Datentyp von Eigentuemer und Gemarkung zu tun. Diese ist "varchar". Die Kombination zwischen ID und Groesse klappt nämlich.

PPS: Wenn ich jeweils einzeln abfrage und die anderen auskommentiere gehts auch und liefert korrekte angaben zurück. irgendwie klappt das zusammenspiel nicht
 
Zuletzt bearbeitet:
Du fragst hier einen String ab:
if('$eigentuemer')
Das ist immer wahr. Streich mal die Hochkommata, beim 3. If auch.
 
Hallo,

warum ist das immer wahr? Wenn man keinen Eigentümer eingibt soll das feld ja auch nicht mit einbezogen werden.

Wenn ich die Hockkommas weglasse und einen Eigentümer eingebe kommt folgenden Fehlermeldung: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result

Grüße
EF
 
Du prüfst mit if('$eigentuemer') darauf, ob ein String existiert - und das tut er, da du ihn explizit angegeben hast. Besser wäre if($eigentuemer) oder if(isset($eigentuemer)).
 
EifelFrosch hat gesagt.:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result
Um das zu vermeiden solltest Du die Auswertung in einen if($result)-Block einbinden.

Zum Testen würd ich mir an Deiner Stelle auch mal die Query per echo ausgeben lassen,
dann siehst Du warum er kein Ergebnis liefert.

Probier mal die Zeilen mit String-Vergleichen so:
PHP:
 if($eigentuemer) $sqlab .= " and eigentuemer='".$eigentuemer."'";
 
Dann erscheint folgendes:

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING

Ich glaube, ich verzweifel gleich hier...irgendwo ist da echt der Wurm drin :-(

Aber trotzdem schonmal danke für eure Hilfe!

Gruß
EF
 
Zurück