Profis gefragt , SQL STRING

C

churcher

Hallo alle zusammen. Habe folgendes Problem ich habe 2 Datenbank auf der einen Seite die Immobilien und auf der anderen die Kunden: hier damit es einfach zu verstehen ist die Datenbank gliederung:

PHP:
immobilien (
  id int(6) NOT NULL auto_increment,
  nr varchar(6) NOT NULL default '',
  name varchar(50) NOT NULL default '',
  art enum('kaufen','mieten') NOT NULL default 'kaufen',
  typ enum('Haus','Wohnung','Grundstück') NOT NULL default 'Haus',
  bundesland  enum('Wien','Niederösterreich','Oberösterreich','Burgenland','Kärnten','Steiermark','Tirol','Vorarlberg','Salzburg') NOT NULL default 'Wien',
  lage text NOT NULL,
  standort text NOT NULL,
  strasse varchar(250) NOT NULL default '',
  plz varchar(4) NOT NULL default '',
  ort varchar(70) NOT NULL default '',
  wohnflaeche mediumint(5) default NULL,
  grundflaeche mediumint(5) default NULL,
  zimmer tinyint(2) default NULL,
  baujahr varchar(4) default NULL,
  provision text,
  bezugsfrei varchar(250) default NULL,
  nebenkosten int(10) default NULL,
  preis int(10) default NULL,
  beschreibung text,
  sonstiges text,
  ausstattung text,
  bild_1 varchar(100) NOT NULL default 'blind.gif',
  bild_2 varchar(100) NOT NULL default 'blind.gif',
  bild_3 varchar(100) NOT NULL default 'blind.gif',
  text_bild1 varchar(250) default NULL,
  text_bild2 varchar(250) default NULL,
  text_bild3 varchar(250) default NULL,
  plan_1 varchar(100) NOT NULL default 'blind.gif',
  plan_2 varchar(100) NOT NULL default 'blind.gif',
  plan_3 varchar(100) NOT NULL default 'blind.gif',
  text_plan1 varchar(250) default NULL,
  text_plan2 varchar(250) default NULL,
  text_plan3 varchar(250) default NULL,
  PRIMARY KEY  (id)
) TYPE=MyISAM;


kunden (
  id mediumint(6) NOT NULL auto_increment,
  nr varchar(6) NOT NULL default '',
  username varchar(50) default NULL,
  password varchar(30) default NULL,
  vorname varchar(50) NOT NULL default '',
  name varchar(50) NOT NULL default '',
  anrede enum('Herr','Frau') NOT NULL default 'Herr',
  email varchar(50) default NULL,
  tel varchar(20) default NULL,
  fax varchar(20) default NULL,
  adresse varchar(100) default NULL,
  plz varchar(4) default NULL,
  ort varchar(50) default NULL,
  bundesland  enum('Wien','Niederösterreich','Oberösterreich','Burgenland','Kärnten','Steiermark','Tirol','Vorarlberg','Salzburg') default NULL,
  s_typ enum('Haus','Wohnung','Grundstück') NOT NULL default 'Haus',
  s_wohnflaeche mediumint(5) default NULL,
  s_grundflaeche mediumint(5) default NULL,
  s_preis int(10) default NULL,
  s_art enum('kaufen','mieten') NOT NULL default 'kaufen',
  s_bundesland  enum('Wien','Niederösterreich','Oberösterreich','Burgenland','Kärnten','Steiermark','Tirol','Vorarlberg','Salzburg') NOT NULL default 'Wien',
  s_ort varchar(100) default NULL,
  s_plz varchar(4) default NULL,
  eintrag_datum date NOT NULL default '0000-00-00',
  eintrag_dauer tinyint(2) NOT NULL default '0',
  PRIMARY KEY  (id),
  UNIQUE KEY username (username)
) TYPE=MyISAM;

Die s_ Felder sind für die Suchfelder der Kunden gedacht also welche art von immobilien sie suchen (m² , Wohnung oder Haus usw...)

Nun sollte wenn der Admin eine neue Immobilie hinzufügt der kunde automatisch verständigt werden wenn auf seine Suchdaten was passendes gefunden wird:

Hier der Suchstring:

PHP:
	$sql = "INSERT INTO immobilien SET nr='$nr',name='$name',art='$art',typ='$typ',bundesland='$bundesland',lage='$lage',standort='$standort',strasse='$strasse',plz='$plz',ort='$ort',wohnflaeche='$wohnflaeche',grundflaeche='$grundflaeche',zimmer='$zimmer',provision='$provision',bezugsfrei='$bezugsfrei',nebenkosten='$nebenkosten',preis='$preis',beschreibung='$beschreibung',sonstiges='$sonstiges',ausstattung='$ausstattung',text_bild1='$text_bild1',text_bild2='$text_bild2',text_bild3='$text_bild3',text_plan1='$text_plan1',text_plan2='$text_plan2',text_plan3='$text_plan3' ";
	
	$result = mysql_query($sql,$db);
	echo "<br><br><span class=text_1><b>Daten  wurden gespeichert</b>
	<br><br><span class=text_1><b>Folgende User wurden über die neue Immobilie informiert:</b><br><br>";
		
	$r = mysql_query("SELECT * FROM kunden WHERE (nr = '".$nr."') AND (s_typ = '".$typ."') AND (s_preis >= '".$preis."') AND (s_art LIKE '%".$art."%') AND (s_bundesland LIKE '%".$bundesland."%') AND (s_ort LIKE '%".$ort."%') AND (s_plz LIKE '%".$plz."%') AND (s_wohnflaeche >= '".$wohnflaeche."') AND (s_grundflaeche >= '".$grundflaeche."') ORDER BY id"); 
	while ($data = mysql_fetch_array($r))
	{
heir kommt der mail versand

eigentlich sollte ja alles passen mit den suchstring leider klappt des nur wenn der User alle Suchfelder [s_ ] ausgefüllt hat wenn er eine leer lasst zum Beispiel in welcher PLZ die Immobilie sein soll dann wird er leider nicht ausgegeben. Wenn ich auf den Ort und PLZ verzichte klappt es auch aber diese beiden felder (PLZ, ORT) sind für die suche sehr wichtig falls wer helfen kann ich wäre sehr dankbar.

vielleicht hat wer einen Lösungsvorschlag bzw kann mir den obigen code so ändern das es klappt wäre echt prima.

Danke


DANKE
 
Tja ist ja eh logisch wenn du die Abfrage mit AND verknüpfst muss ALLES ausgefüllt sein !

Entweder du überprüfst vor der Ausgabe ob die Felder leer sind und so dynamisch die Ausgabe gestaltest (ist schwierig) oder du verwendest Joins (wobei ich erstes bevorzugen würde)

Ich kann dir da leider mit dem Code nicht helfen, aber hier im Forum wurde bestimmt sowas schon mal besprochen, einfach suchen !

Hoffe dir damit geholfen zu haben. :)
 
mal mein senf dazu :

also join ist leider falsche ecke,,,

ansonsten wenn mit and eine anfrage verbunden wird und einige felder leer sein können immer mit like arbeiten

nr = '".$nr."' wird zu
nr like '".$nr."%'
 

Neue Beiträge

Zurück