Problem mit Suchfunktion

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit Suchfunktion

    Hallo,
    ich bin gerade dabei eine kleine Suchfunktion zu machen
    Beim Suchen nach dem Titel funktioniert diese, wenn ich nach Stellen im Text oder nach einem Benutzer suche, werden mir einfach alle Beiträge angezeigt. Woran könnte dies liegen ?
    Hier der Code:
    PHP-Code:
    if(isset($_POST['search_titel']) || isset($_POST['search_text']) || isset($_POST['search_user']))
        {
            if(isset(
    $_POST['search_titel']))
            {
                
    $suche mysql_query("SELECT * FROM Beitrag WHERE Titel LIKE '%".$_POST['search_titel']."%'");
            }
            elseif(isset(
    $_POST['search_text']))
            {
                
    $suche mysql_query("SELECT * FROM Beitrag WHERE Beschreibung LIKE '%".$_POST['search_text']."%'");
            }
            elseif(isset(
    $_POST['search_user']))
            {
                
    $suche mysql_query("SELECT * FROM Benutzer WHERE Name LIKE '%".$_POST['search_user']."%'");
            }
            
            if(isset(
    $_POST['search_titel']) || isset($_POST['search_text']) && !isset($_POST['search_user']))
            {
                echo 
    '<table width="630px">
                    <tr>
                        <td width="80px">
                            <b>Titel</b>
                        </td>
                        <td width="520px">
                            <b>Beschreibung</b>
                        </td>                            
                    </tr>
                </table>'
    ;
                while ( 
    $row mysql_fetch_array($suche) )
                {
                    echo 
    '    <table width="630px">
                                <tr>
                                    <td width="80px">
                                        '
    .$row['Titel'].'
                                    </td>
                                    <td width="520px">
                                        '
    .$row['Beschreibung'].'
                                    </td>
                                    <td width="30px" align="right">
                                        <a href="index2.php?modul=show_det&ansicht=show_det&id='
    .$row['ID'].'&cat='.$_GET['cat'].'">Mehr</a>
                                    </td>
                                </tr>
                            </table><br />'
    ;
                }
                echo 
    '<a href="index2.php?modul=search&ansicht=search">Zur&uuml;ck</a>';
            }
            elseif(isset(
    $_POST['search_user']) && !isset($_POST['search_text']) && !isset($_POST['search_titel']))
            {
                while ( 
    $row mysql_fetch_array($suche) )
                {
                    echo 
    '    <table border="0" cellspacing="0" cellpadding="0">
                              <tr>
                                <td colspan="2">'
    ;echo $row['Vorname'];echo'</td>
                              </tr>
                              <tr>
                                <td colspan="2">'
    ;echo $row['Name'];echo'</td>
                              </tr>
                              <tr>
                                <td colspan="2">'
    ;echo $row['Adresse'];echo'</td>
                              </tr>
                              <tr>
                                <td>'
    ;echo $row['PLZ'];echo'</td>
                                <td>'
    ;echo $row['Ort'];echo'</td>
                              </tr>
                              <tr>
                                <td width="100">'
    ;echo $row['Telefon'];echo'</td>
                                <td>'
    ;echo $row['Mail'];echo'</td>
                              </tr>
                            </table><br />'
    ;
                }
                echo 
    '<a href="index2.php?modul=search&ansicht=search">Zur&uuml;ck</a>';
            }
        } 
    Vielen Dank & Gruss

  • #2
    Also ich habe jetzt gemerkt, dass die Suche nach dem Text geht, wenn ich nur eine SQL-Abfrage habe. Aber das mit dem Benutzer geht immernoch nicht, da dort die obere Tabelle (also die mit Titel & Beschreibung) angezeigt wird, obwohl dies gar nicht sein dürfte ?

    Kommentar


    • #3
      Du übergibst die suchbegriffer vermutlich per formuler (schließe ich aus _POST) wenn der Sucher nun benutzer und text freilässt ergibt isset() für diese felder abtrotzdem true, da der string zwar "" ist, aber er existiert.....

      Nimm statt isset empty()
      Die Musikreview Seite

      hi, i'm a signature virus. copy me into your signature to help me spread.

      Kommentar


      • #4
        Hallo,
        vielen Dank für Deine Antwort. Das klappt soweit auch ganz gut
        Einzig bei der Suche nach dem Benutzer wird die Tabelle von Titel und Text ausgegeben. Sehe nicht ganz wieso ?

        Hier nochmal der Code:

        PHP-Code:
        <?php
            
        if(isset($_POST['search_titel']) || isset($_POST['search_text']) || isset($_POST['search_user']))
            {
                if(isset(
        $_POST['search_titel']) && empty($_POST['search_text']) && empty($_POST['search_user']))
                {
                    
        $suche mysql_query("SELECT * FROM Beitrag WHERE Titel LIKE '%".$_POST['search_titel']."%'");
                }
                if(empty(
        $_POST['search_titel']) && isset($_POST['search_text']) && empty($_POST['search_user']))
                {
                    
        $suche mysql_query("SELECT * FROM Beitrag WHERE Beschreibung LIKE '%".$_POST['search_text']."%'");
                }
                if(empty(
        $_POST['search_titel']) && empty($_POST['search_text']) && isset($_POST['search_user']))
                {
                    
        $suche mysql_query("SELECT * FROM Benutzer WHERE Name LIKE '%".$_POST['search_user']."%'");
                }
                
                if(isset(
        $_POST['search_titel']) || isset($_POST['search_text']) && empty($_POST['search_user']))
                {    
                    echo 
        '<table width="630px">
                        <tr>
                            <td width="80px">
                                <b>Titel</b>
                            </td>
                            <td width="520px">
                                <b>Beschreibung</b>
                            </td>                            
                        </tr>
                    </table>'
        ;
                    while ( 
        $row mysql_fetch_array($suche) )
                    {
                        echo 
        '    <table width="630px">
                                    <tr>
                                        <td width="80px">
                                            '
        .$row['Titel'].'
                                        </td>
                                        <td width="520px">
                                            '
        .$row['Beschreibung'].'
                                        </td>
                                        <td width="30px" align="right">
                                            <a href="index2.php?modul=show_det&ansicht=show_det&id='
        .$row['ID'].'&cat='.$_GET['cat'].'">Mehr</a>
                                        </td>
                                    </tr>
                                </table><br />'
        .$_POST['search_titel'].' '.$_POST['search_text'].' '.$_POST['search_user'].'<br />';
                    }
                    echo 
        '<a href="index2.php?modul=search&ansicht=search">Zur&uuml;ck</a>';
                }
                elseif(isset(
        $_POST['search_user']) && empty($_POST['search_text']) && empty($_POST['search_titel']))
                {
                    while ( 
        $row mysql_fetch_array($suche) )
                    {
                        echo 
        '    <table border="0" cellspacing="0" cellpadding="0">
                                  <tr>
                                    <td colspan="2">Vorname: '
        ;echo $row['Vorname'];echo'</td>
                                  </tr>
                                  <tr>
                                    <td colspan="2">Nachname: '
        ;echo $row['Name'];echo'</td>
                                  </tr>
                                  <tr>
                                    <td colspan="2">'
        ;echo $row['Adresse'];echo'</td>
                                  </tr>
                                  <tr>
                                    <td>'
        ;echo $row['PLZ'];echo'</td>
                                    <td>'
        ;echo $row['Ort'];echo'</td>
                                  </tr>
                                  <tr>
                                    <td width="100">'
        ;echo $row['Telefon'];echo'</td>
                                    <td>'
        ;echo $row['Mail'];echo'</td>
                                  </tr>
                                </table><br />'
        ;
                    }
                    echo 
        '<a href="index2.php?modul=search&ansicht=search">Zur&uuml;ck</a>';
                }
            }
            else
            {
            echo 
        '
                <form name="form1" method="post" action="index2.php?modul=search&ansicht=search">
                    <table width="404" border="0" cellspacing="0" cellpadding="0">
                      <tr>
                        <td width="79">Titel:</td>
                        <td width="325"><input name="search_titel" type="text" id="search_titel"></td>
                      </tr>
                      <tr>
                        <td>Text:</td>
                        <td><textarea name="search_text" cols="50" rows="4" id="search_text"></textarea></td>
                      </tr>
                      <tr>
                        <td>Benutzer:</td>
                        <td><input name="search_user" type="text" id="search_user"></td>
                      </tr>
                      <tr>
                        <td colspan="2"><div align="center">
                            <input type="submit" name="Submit" value="Suchen">
                        </div></td>
                      </tr>
                    </table>
                </form>
            '
        ;
            }
        ?>
        Edit: Ich dachte gerade, es könne an dem isset || isset liegen, ist aber leider nicht so.. habe es so probiert, kommt trotzdem noch die Tabelle:
        PHP-Code:
        if((isset($_POST['search_titel']) && empty($_POST['search_text'])) || (isset($_POST['search_text']) && empty($_POST['search_titel'])) && empty($_POST['search_user'])) 
        Zuletzt geändert von OnTheRun; 08.09.2004, 14:29.

        Kommentar


        • #5
          also , ich habe es mal bei mir getestet.
          wenn du nichts eingibt zeigt er dir alles an.
          trägst du aber ein suchwort ein , das es nicht gibt zeigt er dir auch nichts an.
          wenn ich das richtig sehe steht bei leerer eingabe
          %% in der select anweisung??

          Kommentar


          • #6
            Hallo,
            vielen Dank für deine Antwort.
            Bei mir zeigt er nichts an, sobald ich die Felder leer lasse.
            Das mit dem Suchwort stimmt. Das muss ich dann noch abfangen
            Aber das eigentliche Problem ist, dass er nichts macht, wenn ich bei Benutzer etwas eintrage. Er sollte zumindest die untere Tabelle (mit Vorname, Nachname, Adresse usw.) ausgeben oder ?
            Es kommt aber immernoch die obere bzw. diese ist leer und es wird nur der Link zu "Mehr" angezeigt. Wieso dies ?

            Kommentar


            • #7
              hallo,

              mir ist noch aufgefallen, wenn ich in den if bedingungen, dort wo die
              select anweisungen stehen ein echo befehl reinschreibe,
              dann zeigt er mir in allen if bedingungen die echo variablen an.
              und das, obwohl ich im formular nur einen wert eingetragen habe.

              vieleicht benutzen wir auch unterschiedliche php versionen?!

              Kommentar


              • #8
                Du kannst überall woe du isset($_POST[''feldname']) geschrieben hast empty nehmen, weil isset($_POST[''feldname']) immer true ergibt wenn das formulöarfeld existiert, nicht nur wenn es ausgefüllt.....
                Die Musikreview Seite

                hi, i'm a signature virus. copy me into your signature to help me spread.

                Kommentar


                • #9
                  Hallo,
                  vielen Dank für eure Antworten.
                  Also wenn ich es per empty mache, klappt das wunderbar

                  Gruss

                  Kommentar


                  • #10
                    Ich habe die Suche jetzt etwas angepasst. Jetzt habe ich noch eine Frage. Wie kann ich denn nach mehreren Sachen suchen ?
                    Ich habe es mal so probiert:

                    PHP-Code:
                    $suche mysql_query("SELECT * FROM Benutzer WHERE Vorname LIKE '%".$_POST['search_vorname']."%' AND Name LIKE '%".$_POST['search_nachname']."%' AND Adresse LIKE '%".$_POST['search_adresse']."%'"); 
                    So zeigt er mir nur den Benutzer an, wenn ich per Nachname suche. Wie kann ich denn mit einem oder mehreren Feldern suchen ?

                    Danke & Gruss

                    Kommentar

                    Lädt...
                    X