Abfrage von Datenbanken mit meheren Argumenten

darknet

Mitglied
Hallo zusammen,

ich habe das problem das ich in meiner Datenbank für die Sortierug mehere Argumente für die Abfrage zusammenfassen muss.

hier erst mal den Code

Suche
Code:
 <?PHP   
echo "<form name=\"form1\" method=\"GET\" action=\"show_job_boerse.php\">
	  <select name=\"berufszweig\" id=\"berufszweig\">
     ";
$abfrage = "SELECT * FROM berufsfelder ORDER BY berufszweig";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
   {
   $berufszweig = $row->berufszweig;
   if ($berufszweig == $berufszweig_sel)
   {$selected = "selected";}
   echo "
    <option $selected>$berufszweig</option>
   ";
   }
echo "</select>";
?>
    </font></td>
  </tr>
  <tr>
    <td><font size="2">Berufsbezeichnung</font></td>
    <td><font size="2">
      <input name="berufsbez" type="text" id="berufsbez" value="<?PHP echo $berufsbez; ?>" size="25">
    </font></td>
  </tr>
  <tr>
    <td><font size="2">sortiert nach</font></td>
    <td><font size="2">
      <select name="sortiert" id="sortiert">
        <option>---</option>
        <option value="1">neue zuerst</option>
        <option value="2">letzte zuerst</option>
        <option value="3">alphabetisch nach Berufszweig</option>
        <option value="4">alphabetisch nach Berufsbezeichnung</option>
          </select>
    </font>

Ausgabe
Code:
//Suchabfrage
if (!isset($berufsbez) && $berufszweig != "Alle"){$s1 = "WHERE berufszweig = '$berufszweig'"; $test1 = "Fall 1";}
else if (isset($berufsbez) && $berufszweig == "Alle") {$s1 = "WHERE berufsbez LIKE '%$berufsbez%'"; $test2 = "Fall 2";}
else if (isset($berufsbez) && $berufszweig != "Alle") {$s1 = "WHERE berufsbez LIKE '%$berufsbez%' AND berufszweig = '$berufszweig'"; $test3 = "Fall 3";}

if ($sortiert == "1") {$s2 = "ORDER BY 'eingetragen_am' DESC";}
else if ($sortiert == "2") {$s2 = "ORDER BY 'eingetragen_am'";}
else if ($sortiert == "3") {$s2 = "ORDER BY 'berufszweig'";}
else if ($sortiert == "4") {$s2 = "ORDER BY 'berufsbez'";}

#testen
echo "Berzw $berufszweig | Berbez $berufsbez | $sortiert | $s2";
echo "<br> $test1 $test2 $test3";

//Abfrage des Profils
$abfrage = "SELECT * FROM stellenangebote $s1 $s2";
$ergebnis = mysql_query($abfrage);
$menge = mysql_num_rows($ergebnis);

nun habe ich allerdings das Problem das die Abfrage zwar halbwegs lauft allerdings der Wert "Fall1" nicht angezeigt wird.

Kann mir jemand sagen warum das so ist?

mfg

Dark
 
Du solltest diese Zeilen:
PHP:
if (!isset($berufsbez) && $berufszweig != "Alle"){$s1 = "WHERE berufszweig = '$berufszweig'"; $test1 = "Fall 1";}
else if (isset($berufsbez) && $berufszweig == "Alle") {$s1 = "WHERE berufsbez LIKE '%$berufsbez%'"; $test2 = "Fall 2";}
else if (isset($berufsbez) && $berufszweig != "Alle") {$s1 = "WHERE berufsbez LIKE '%$berufsbez%' AND berufszweig = '$berufszweig'"; $test3 = "Fall 3";}

in folgende ändern:
PHP:
if (empty($berufsbez) && $berufszweig != "Alle"){$s1 = "WHERE berufszweig = '$berufszweig'"; $test1 = "Fall 1";}
else if (!empty($berufsbez) && $berufszweig == "Alle") {$s1 = "WHERE berufsbez LIKE '%$berufsbez%'"; $test2 = "Fall 2";}
else if (!empty($berufsbez) && $berufszweig != "Alle") {$s1 = "WHERE berufsbez LIKE '%$berufsbez%' AND berufszweig = '$berufszweig'"; $test3 = "Fall 3";}
So wie ich es sehe, sind jedoch bei den letzten zwei if Abfragen die Bedingung !empty($berufsbez) unnötig!


Außerdem solltest du besser mit Superglobalen Variablen arbeiten. Also in deinem Beispiel anstatt $berufsbez $_GET['berufsbez'] nehmen.
Hier der Link ins PHP Handbuch: http://de3.php.net/de/language.variables.predefined
 
Zurück