Sascha: Was ist daran falsch?

Beitrag lesen

Hallo,

ich habe nach wie vor noch nicht die richtige Lösung für mein Suchformular das ich gerade bastel gefunden.

Ich bekomme  im moment nach Änderung meiner IF-Anweisung-Verschachtelung  einen Fehler, und zwar folgenden:

Warning: Supplied argument is not a valid MySQL result resource in

und weist auf diese Zeile da hin:
=> while($row = mysql_fetch_array($daten)) { ...

Ich möchte, das wenn 2 Wörter nur eingeben sind, aber der Operator 1 im Forumlar nicht gewählt wurde, das er automatisch ein AND wählt bzw. bei 3 Suchbegriffen halt AND und AND setzt ...

Ich gebe mal am besten hier den wichtigsten Code:

//Anfang Suchformular:

<form method="POST" action="index.php4">
<input type=hidden name="session" value="gefunden.php4">
    <p><font face="Arial" color="#FFFF00" size="2">Nach welchem Begriff soll gesucht werden?<br><br>
1. Suchbegriff:  
<input type="text" name="wort1" size="40" maxlength="490"><br>
<br>
Operator 1 (Bitte wählen!):   <select name="operator1" size="1">
    <option value="">----
    <option value="UND">UND
    <option value="ODER">ODER
   </option>
  </select><br><br>
2. Suchbegriff:  
<input type="text" name="wort2" size="40" maxlength="490"><br>
<br>
Operator 2 (Bitte wählen!):   <select name="operator2" size="1">
    <option value="">----
    <option value="UND">UND
    <option value="ODER">ODER
   </option>
  </select><br><br>
3. Suchbegriff:  
<input type="text" name="wort3" size="40" maxlength="490"><br>
<br>
  <p><font face="Arial" size="2"><input type="submit" value="Abschicken" name="B1"><input type="reset" value="Zurücksetzen" name="B2"></font></p>
</form>

//Ende Suchformular

// Anfang Verarbeitungsscript => wichtigster Teil:

[...]

//wenn nur 1 Wort angeben wurde und Wort 2 und 3 keinen
//Wert enthalten!

if ( isset($wort1) AND ($wort2 == "0") AND ($wort3 == "0") )
{$daten = MYSQL_QUERY( "SELECT * FROM downloadprogramme
       WHERE titel LIKE '%$wort1%'
           OR beschreibung LIKE '%$wort1%'",$verbindung);}

//wenn nur 2 Wörter angeben wurde und Wort 3 keinen
//Wert enthält!
if ( isset($wort1) AND ($wort2) AND ($wort3 == "0") )
 {// Suche für 2 Wörter mit Operator AND
   if ($operator1 == "UND"){
     $daten = MYSQL_QUERY("SELECT * FROM downloadprogramme
       WHERE (titel LIKE '%$wort1%'
           OR beschreibung LIKE '%$wort1%')
       AND (titel LIKE '%$wort2%'
           OR beschreibung LIKE '%$wort2%')",$verbindung);}

// Suche für 2 Wörter mit Operator AND
   if ($operator1 == ""){
     $daten = MYSQL_QUERY("SELECT * FROM downloadprogramme
       WHERE (titel LIKE '%$wort1%'
           OR beschreibung LIKE '%$wort1%')
       AND (titel LIKE '%$wort2%'
           OR beschreibung LIKE '%$wort2%')",$verbindung);}

// Suche für 2 Wörter mit Operator OR
     if ($operator1 == "ODER"){
       $daten = MYSQL_QUERY( "SELECT * FROM downloadprogramme
         WHERE (titel LIKE '%$wort1%'
             OR beschreibung LIKE '%$wort1%')
         OR (titel LIKE '%$wort2%'
             OR beschreibung LIKE '%$wort2%')",$verbindung);}
 }

//wenn 3 Wörter angeben wurden
if ( isset($wort1) AND ($wort2) AND ($wort3) )
 {// Suche für 3 Wörter mit 2x Operator AND
    if ($operator1 == "UND" AND $operator2 == "UND"){
      $daten = MYSQL_QUERY("SELECT * FROM downloadprogramme
        WHERE (titel LIKE '%$wort1%'
            OR beschreibung LIKE '%$wort1%')
        AND (titel LIKE '%$wort2%'
            OR beschreibung LIKE '%$wort2%')
        AND (titel LIKE '%$wort3%'
           OR beschreibung LIKE '%$wort3%')",$verbindung);}

// Suche für 3 Wörter mit 2x Operator AND
    if ($operator1 == "0" AND $operator2 == "0"){
      $daten = MYSQL_QUERY("SELECT * FROM downloadprogramme
        WHERE (titel LIKE '%$wort1%'
            OR beschreibung LIKE '%$wort1%')
        AND (titel LIKE '%$wort2%'
            OR beschreibung LIKE '%$wort2%')
        AND (titel LIKE '%$wort3%'
           OR beschreibung LIKE '%$wort3%')",$verbindung);}

// Suche für 3 Wörter mit 1x Operator AND und 1x Operator OR
    if ($operator1 == "UND" AND $operator2 == "ODER"){
      $daten = MYSQL_QUERY("SELECT * FROM downloadprogramme
        WHERE (titel LIKE '%$wort1%'
            OR beschreibung LIKE '%$wort1%')
        AND (titel LIKE '%$wort2%'
           OR beschreibung LIKE '%$wort2%')
        OR (titel LIKE '%$wort3%'
           OR beschreibung LIKE '%$wort3%')",$verbindung);}

// Suche für 3 Wörter mit 2x Operator OR
    if ($operator1 == "ODER" AND $operator2 == "ODER"){
      $daten = MYSQL_QUERY( "SELECT * FROM downloadprogramme
          WHERE (titel LIKE '%$wort1%'
              OR beschreibung LIKE '%$wort1%')
          OR (titel LIKE '%$wort2%'
              OR beschreibung LIKE '%$wort2%')
          OR (titel LIKE '%$wort3%'
              OR beschreibung LIKE '%$wort3%')",$verbindung);}

// Suche für 3 Wörter mit 1x Operator OR und 1x Operator AND
     if ($operator1 == "ODER" AND $operator2 == "UND"){
       $daten = MYSQL_QUERY( "SELECT * FROM downloadprogramme
           WHERE (titel LIKE '%$wort1%'
               OR beschreibung LIKE '%$wort1%')
           OR (titel LIKE '%$wort2%'
               OR beschreibung LIKE '%$wort2%')
           AND (titel LIKE '%$wort3%'
               OR beschreibung LIKE '%$wort3%')",$verbindung);}
}

echo "<div align=center><font color="#ffff00"><h3>Es wurden folgende Einträge gefunden ... </h3></font></div>";

while($row = mysql_fetch_array($daten)) {[...]}

Wer kann mir sagen, was daran falsch ist, bzw. mir einen brauchbaren Tipp geben, wie ich das Problem entgültig beseitigen kann. Über eine Hilfe wäre ich sehr dankbar.

Im voraus besten Dank.

Mfg.

Sascha