Alternative zu exit() und die() ...

Skala

Mitglied
Hallo zusammen

Ich habe hier eine Suchfunktion welche Daten nach Auswahlfeldern sucht. Zur Datenbankstruktur: Es wird nach Spalten in der Haupttabelle (event) gesucht. Neben der Haupttabelle gibt es 3 Nebentabellen welche je eine Zwischentabelle zur Haupttabelle besitzten. Diese haben immer die IDs beider Tabellen gepeichert.

Jetzt mal der Code:

PHP:
//Funktion: Query mit einer Kontrolle
function query1($table,$row,$data) {
 return "SELECT event_fk FROM " . $table . " WHERE " . $row . " = '" . $data . "'";
}

//Funktion: Query mit 2 Kontrolle
function query2($table,$row,$data,$data2) {
 return "SELECT event_fk FROM " . $table . " WHERE " . $row . " = '" . $data . "' AND event_fk = '" . $data2 . "'";
}

function EchoOrga($where) {
 $sel = mysql_query("SELECT organisation_fk FROM orga_id WHERE event_fk = '" . $where . "'") or die(mysql_error());
 if(mysql_num_rows($sel)) {
  while($res = mysql_fetch_array($sel)) {
   $sel2 = mysql_query("SELECT name FROM organisation WHERE organisation_id = '" . $res[0] . "'") or die(mysql_error());
   if(mysql_num_rows($sel2)) {
	$res2 = mysql_fetch_array($sel2);
	echo $res2[0];
	echo "<br>";
   }
  }
 } else {
  echo "Keine Daten vorhanden";
	exit();
 }
}


//Funktion: Tabelle mit Resultat
function CreateTable($result) {
//tabelle anfang
	echo "<br>";
	echo "<table width=\"535\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"#336699\">"; 
	echo "<tr align=\"left\" valign=\"middle\" bordercolor=\"#336699\" bgcolor=\"#FFFFFF\">"; 
	echo "<th width=\"95\" class=\"style8\" scope=\"col\">Datum</th>";
 	echo "<th width=\"115\" class=\"style8\" scope=\"col\">Ort</th>"; 
	echo "<th width=\"250\" class=\"style8\" scope=\"col\">Organisation</th>"; 
	echo "<th width=\"75\" class=\"style8\" scope=\"col\">Link</th>"; 
	echo "</tr>";

 //result
 while($resResult = mysql_fetch_array($result)) {
  //query
  $sel = mysql_query("SELECT event_id,ort,datum FROM event WHERE event_id = '" . $resResult[0] . "'") or die(mysql_error());

  if(mysql_num_rows($sel)) {
  $res = mysql_fetch_array($sel);
   echo "<tr align=\"left\" valign=\"middle\" bordercolor=\"#336699\" bgcolor=\"#FFFFFF\">";
   echo "<th width=\"95\" class=\"style8\" scope=\"col\">";
		datum_sort($res['datum']);
   echo "</th>";
   echo "<th width=\"115\" class=\"style8\" scope=\"col\">" . $res['ort'] . "</th>";
   echo "<th width=\"250\" class=\"style8\" scope=\"col\">";
   		EchoOrga($res['event_id']);
   echo "</th>";
   echo "<th width=\"75\" class=\"style8\" scope=\"col\">";
	    $popdata = $res['event_id'];
   echo "<script type=\"text/javascript\">
         function DetailUp(idVar) {
		 F = window.open(\"liste_details.php?id=\" + idVar + \"\",\"Details\",\"width=800,height=600\", \"resizable=yes\", \"scrollbar=yes\")}
		 </script>";
   echo "<a href=\"javascript:DetailUp(" . $popdata . ")\"><font size=\"3\">Details</font></a>";
   echo "</th>";
   echo "</tr>";
  } else {
  echo "";
	exit();
 }
}
	echo "</table>";
}

function suchen_html() {
//HTML Formular
echo "<br>";
echo "<form name=\"form1\" method=\"post\" action=\""; $_SERVER['PHP_SELF']; echo "\">";
echo"<table width=\"530\"  border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
echo"<tr valign=\"top\">";
echo"<th scope=\"col\" width=\"265\" align=\"left\">Vortrag</th>";
echo "<th scope=\"col\" width=\"265\" align=\"right\">Vertreter der TVD</th>";
echo"</tr>";
echo"<tr valign=\"top\">";
echo "<th scope=\"col\" width=\"265\" align=\"left\">"; search_vortrag(); echo"</th>";
echo "<th scope=\"col\" width=\"265\" align=\"right\">"; search_vertreter(); echo"</th>";
echo "</tr>";
echo "<tr align=\"left\" valign=\"top\">";
echo"<th colspan=\"2\" scope=\"row\" width=\"530\"><center>Organisation</center></th>";
echo"</tr>";
echo"<tr align=\"left\" valign=\"top\">";
echo"<th colspan=\"2\" scope=\"row\" width=\"530\"><center>"; search_orga(); echo"</center></th>";
echo"</tr>";
echo"</table>";

echo "<br>";
echo "<center>";
echo "<input type=\"submit\" name=\"Submit\" value=\"Suchen\">";
echo "</center>";
echo "</form>";
//Suchen();
}

function start() {
 if($_POST['Submit']) {
  Suchen();
 }
}

//Funktion: Kontrolle
function Suchen() {
 //var
 $vertreter = $_POST['vertreter'];
 $vortrag = $_POST['vortrag'];
 $organisation = $_POST['organisation'];
 
 //switch definiern
 /*----------Alle Felder sind gesetzt----------*/
 if($vertreter != 99999999 && $vortrag != 99999999 && $organisation != 99999999) {
  //vertreter
  $selVer = mysql_query(query1("ver_id","vertreter_fk",$vertreter)) or die(mysql_error());
  if(mysql_num_rows($selVer)) {
   //vertreter
   while($resVer = mysql_fetch_array($selVer)) {
    //vortrag
	$selVor = mysql_query(query2("vor_id","vortrag_fk",$vortrag,$resVer[0])) or die(mysql_error());
	if(mysql_num_rows($selVor)) {
	 //vortrag
	 while($resVor = mysql_fetch_array($selVor)) {
	  //Organisation
	  $selOrga = mysql_query(query2("orga_id","organisation_fk",$organisation,$resVor[0])) or die(mysql_error());
	  if(mysql_num_rows($selOrga)) {
	   //Ausgabe
	   CreateTable($selOrga);
exit();
	  } else {
	   echo "Keine Daten vorhanden";
	exit();
	  }
	 }
	} else {
	 echo "Keine Daten vorhanden";
	exit();
	}
   }
  } else {
   echo "Keine Daten vorhanden";
	exit();
  }
 /*----------Vertreter und Vortrag sind gesetzt----------*/
  } elseif($vertreter != 99999999 && $vortrag != 99999999 && $organisation == 99999999) {
  //vertreter
  $selVer = mysql_query(query1("ver_id","vertreter_fk",$vertreter)) or die(mysql_error());
  if(mysql_num_rows($selVer)) {
   //vertreter
   while($resVer = mysql_fetch_array($selVer)) {
    //vortrag
	$selVor = mysql_query(query2("vor_id","vortrag_fk",$vortrag,$resVer[0])) or die(mysql_error());
	if(mysql_num_rows($selVor)) {
	 //Ausgabe
	 CreateTable($selVor);
exit();
	} else {
	 echo "Keine Daten vorhanden";
	exit();
	}
   }
  } else {
   echo "Keine Daten vorhanden";
	exit();
  }
 /*----------Vertreter und Organisation sind gesetzt----------*/
 } elseif($vertreter != 99999999 && $vortrag == 99999999 && $organisation != 99999999) {
  //vertreter
  $selVer = mysql_query(query1("ver_id","vertreter_fk",$vertreter)) or die(mysql_error());
  if(mysql_num_rows($selVer)) {
   //vertreter
   while($resVer = mysql_fetch_array($selVer)) {
	//Organisation
	$selOrga = mysql_query(query2("orga_id","organisation_fk",$organisation,$resVer[0])) or die(mysql_error());
	if(mysql_num_rows($selOrga)) {
	 //Ausgabe
	 CreateTable($selOrga);
exit();
	} else {
	 echo "Keine Daten vorhanden";
	exit();
	}
   }
  } else {
   echo "Keine Daten vorhanden";
	exit();
  }
 /*----------Vortrag und Organisation sind gesetzt----------*/
 } elseif($vertreter == 99999999 && $vortrag != 99999999 && $organisation != 99999999) {
  //vortrag
  $selVor = mysql_query(query1("vor_id","vortrag_fk",$vortrag)) or die(mysql_error());
  if(mysql_num_rows($selVor)) {
   //vortrag
   while($resVor = mysql_fetch_array($selVor)) {
	//Organisation
	$selOrga = mysql_query(query2("orga_id","organisation_fk",$organisation,$resVor[0])) or die(mysql_error());
	if(mysql_num_rows($selOrga)) {
	 //Ausgabe
	 CreateTable($selOrga);
exit();
	} else {
	 echo "Keine Daten vorhanden";
	exit();
	}
   }
  } else {
   echo "Keine Daten vorhanden";
	exit();
  }
 /*----------Vertreter ist gesetzt----------*/
 } elseif($vertreter != 99999999 && $vortrag == 99999999 && $organisation == 99999999) {
  //vertreter
  $selVer = mysql_query(query1("ver_id","vertreter_fk",$vertreter)) or die(mysql_error());
  if(mysql_num_rows($selVer)) {
   //Ausgabe*
/*
while ($test = mysql_fetch_array($selVer)) {
echo $test['0'];
echo " , ";
echo "<br>";
echo "<br>";
CreateTable($test);
}*/
   return CreateTable($selVer);
	//break;
	//exit();
  } else {
   echo "Keine Daten vorhanden";
	exit();
  }
 /*----------Vortrag ist gesetzt----------*/
 } elseif($vertreter == 99999999 && $vortrag != 99999999 && $organisation == 99999999) {
  //vortrag
  $selVor = mysql_query(query1("vor_id","vortrag_fk",$vortrag)) or die(mysql_error());
  if(mysql_num_rows($selVor)) {
   //Ausgabe
   CreateTable($selVor);
exit();
  } else {
   echo "Keine Daten vorhanden";
	exit();
  }
 /*----------Organisation ist gesetzt----------*/
 } elseif($vertreter == 99999999 && $vortrag == 99999999 && $organisation != 99999999) {
  //organisation
  $selOrga = mysql_query(query1("orga_id","organisation_fk",$organisation)) or die(mysql_error());
  if(mysql_num_rows($selOrga)) {
   //Ausgabe
   CreateTable($selOrga);
	exit();
  } else {
   echo "Keine Daten vorhanden";
	die();
  }
 /*----------Keine Auswahl ist gesetzt----------*/
 } elseif($vertreter == 99999999 && $vortrag == 99999999 && $organisation == 99999999) {
  return "Setzten Sie mittels Auswahlfelder die Kriterien";
 } 
}

mein Problem ist das wenn ich die exit() nicht mache zeigt es mir meine Ergebnisstabelle gleich 3 mal oder mehrmals an.. (was es doch bei elseif abfragen nicht tun sollte?)

Daher muss ich also irgend ein Stopp einfügen, das Problem ist das der Html code dann nicht weitergerechnet wird und nach der Suchfunktion ist dann einfach Schluss...

Hat wer eine Idee? ^^

Gruss Skala


edit: jetzt versteh ich gar nichts mehr...

im folgenden wird sowohl if als auch else ausgeführt, und zwar false bevor true...

PHP:
//Funktion: Tabelle mit Resultat
function CreateTable($result) {
//tabelle anfang
	echo "<br>";
	echo "<table width=\"535\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"#336699\">"; 
	echo "<tr align=\"left\" valign=\"middle\" bordercolor=\"#336699\" bgcolor=\"#FFFFFF\">"; 
	echo "<th width=\"95\" class=\"style8\" scope=\"col\">Datum</th>";
 	echo "<th width=\"115\" class=\"style8\" scope=\"col\">Ort</th>"; 
	echo "<th width=\"250\" class=\"style8\" scope=\"col\">Organisation</th>"; 
	echo "<th width=\"75\" class=\"style8\" scope=\"col\">Link</th>"; 
	echo "</tr>";

 //result
 while($resResult = mysql_fetch_array($result)) {
  //query
  $sel = mysql_query("SELECT event_id,ort,datum FROM event WHERE event_id = '" . $resResult[0] . "'") or die(mysql_error());

  if(mysql_num_rows($sel)) {
  $res = mysql_fetch_array($sel);
   echo "<tr align=\"left\" valign=\"middle\" bordercolor=\"#336699\" bgcolor=\"#FFFFFF\">";
   echo "<th width=\"95\" class=\"style8\" scope=\"col\">";
		datum_sort($res['datum']);
   echo "</th>";
   echo "<th width=\"115\" class=\"style8\" scope=\"col\">" . $res['ort'] . "</th>";
   echo "<th width=\"250\" class=\"style8\" scope=\"col\">";
   		EchoOrga($res['event_id']);
   echo "</th>";
   echo "<th width=\"75\" class=\"style8\" scope=\"col\">";
	    $popdata = $res['event_id'];
   echo "<script type=\"text/javascript\">
         function DetailUp(idVar) {
		 F = window.open(\"liste_details.php?id=\" + idVar + \"\",\"Details\",\"width=800,height=600\", \"resizable=yes\", \"scrollbar=yes\")}
		 </script>";
   echo "<a href=\"javascript:DetailUp(" . $popdata . ")\"><font size=\"3\">Details</font></a>";
   echo "</th>";
   echo "</tr>";
  } else {
  echo "tesssttt";
 }
}
	echo "</table>";
}
 
Zuletzt bearbeitet:
Nehme mal Query und kopiere den in PHPMyAdmin und schaue, was er dir da für Datensätze anzeigt. Ich denke nämlich, dass das Problem da liegt. Ist das Feld welches du durchsuchst auch nen Volltext Feld? Weil das muss es sein um dort zu suchen, außerdem ist dein Query kein üblicher Suchquery sondern eine Standart Abfrage um Datensätze zu holen, aber du willst ja bestimmt auch nach Schlüsselwörtern suchen, wenn die in einem Wort vorkommen, also schaue dir mal LIKE an in der MySQL Doku.
 
Hallo

Ich durchsuche eigentlich kein Feld, es läuft alles nur mit Hilfe der IDs und somit denn Zwischtentabellen. Das Problem ist das die Funktion CreateTable mehermals aufgerufen wird. aber ich kanns mir nicht erklären..
 

Anhänge

  • suchen.jpg
    suchen.jpg
    14,4 KB · Aufrufe: 34
Zurück