Ankündigung

Einklappen
Keine Ankündigung bisher.

Such Script

Einklappen

Neue Werbung 2019

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

  • Such Script

    Ich hab bei Youtube ein Suchscript gefunden und nachgebaut.
    Bis auf ein paar kleinigkeiten.
    Aber er findet nichts was im eintrag ist.

    Link
    PHP-Code:
    <?php
    include('funktion/date.php');
    ?>
    <html>
    <head>
    <title>Suche</title>
    </head>
    <table border="1" cellspacing="0" cellpadding="0" align="center" width="100%">
    <?php
    include('funktion/header.php');
    include(
    'funktion/menu.php');
    ?>
    <a href="index.php">Startseite</a>&nbsp;&rArr;&nbsp;Suche
    </td>
    </tr>
    <tr>
    <td>
    <body>
    <form action="search.php" method="POST" >
        <input type='text' name='suchfeld'> <input type='submit' name='suche_enter' value='Suchen'>
    </from>
    <?php
    if(isset($_POST['suche_center']))
    {
        
    $host "localhost";
        
    $user "root";
        
    $pass "";
        
    $con  mysql_connect($host,$user,$pass) or die ("Error: Zeile ".__LINE__." </ br>".mysql_error());
        
    mysql_select_db("suche",$con) or die ("Error: Zeile ".__LINE__." </ br>".mysql_error());
        
    $suchbegriff trim(htmlentities(stripslashes(mysql_real_escape_string($_POST['suchfeld']))));
        
        
    $sql "
        SELECT
            karte_name.db_name_de,
            karte_name.db_name_en
        FROM
            karte_name
        WHERE
            karte_name.db_name_de
                LIKE
                    '%
    $suchbegriff%'
        OR
            karte_name.db_name_en
                LIKE
                    '%
    $suchbegriff%'
        ORDER BY
            karte_name.db_name_de,
            karte_name.db_name_en"
    ;
        
    $query mysql_query($sql);
        
        echo 
    "<ul>";
        WHILE (
    $row mysql_fetch_assoc($query))
        {
            
    $db_name_de $row['db_name_de'];
            
    $db_name_en $row['db_name_en'];
            
            echo 
    "<li>$db_name_de $db_name_en</li>";
        }
        echo 
    "</ul>";
    }
    ?>
    <hr>
    </br>
    </body>
    </td>
    </tr>
    <?php
    include('funktion/footer.php');
    ?>
    </table>
    </html>

  • #2
    Soweit sieht das gut aus. Muss ich mir noch mal Nachbauen....Kann es sein, dass du mit deinem htmlentities den Suchstring zerpflückst?

    Kleine Anmerkung: würd zu Mysqli bzw fetch_assoc() wechseln

    Kommentar


    • #3
      Du hältst das EVA-Prinzip nicht ein. Datenbankverarbeitung hat inmitten der HTML-Ausgabe nichts verloren, die gehört vor die HTML-Ausgabe.

      htmlentities() ist Quatsch. Überhaupt bei SQL-Abfragen. stripslashes() ist noch ein größerer Quatsch. Die Funktion hat eigentlich überhaupt keine Daseinsberechtigung mehr und zerstört Daten. Wozu verwendest du die?

      Wenn du Werte in HTML-Code ausgibst, müssen diese mit htmlspecialchars() maskiert werden, ansonsten könnte die ausgegebene HTML-Seite kaputt gehen oder gar für einen XSS-Angriff genutzt werden.

      Wenn du Daten abfragen möchtest, solltest du die GET-Methode und nicht die POST-Methode verwenden. POST dient dazu Daten zu speichern.

      Dein HTML-Code ist kaputt. Zwischen </head> und <body> darf nichts stehen.

      Kommentar


      • #4
        Achsooo......ganz einfach. Du schließt dein form-Tag nicht korrekt.
        HTML-Code:
        <form action="search.php" method="POST" >
            <input type='text' name='suchfeld'> <input type='submit' name='suche_enter' value='Suchen'>
        </from>
        Das schließende sollte wohl </form> sein

        Kommentar


        • #5
          arg stimmt.
          Da hab ich was falsch gemacht....
          Habs koregiert aber es haut immer noch nicht hin

          Kommentar


          • #6
            suche_enter != suche_center

            Kommentar


            • #7
              Du bist doch nicht zum erstem mal hier im Forum...

              http://php.net/manual/de/function.error-reporting.php

              mysql ist veraltet.
              http://php.net/manual/de/book.mysqli.php
              http://php.net/manual/de/book.pdo.php

              Ich persönlich finde pdo angenehmer, aber das ist wohl geschmackssache.

              Mit var_dump solltest du dir mal ausgeben lassen was dein "$suchbegriff" denn so enthält. Dann weißte auch wo du ansetzen musst.

              Kommentar


              • #8
                ok jetzt bekomme ich die meldung
                Error: Zeile 29 Unknown database 'suche'

                Kommentar


                • #9
                  Dann hast du keine Datenbank die "suche" heißt

                  Kommentar


                  • #10
                    Kann man in den Script ein INNER JOIN einfügen für die anderen Tabellen in der DB?

                    Kommentar


                    • #11
                      Ich seh da nur eine Tabelle mit zwei Spalten....aber klar kannst du da ein Join enfügen

                      Kommentar


                      • #12
                        Wir kennen deine Datenbankstruktur nicht und können dir nicht sagen, inwiefern du Joinen kannst.
                        Insofern du min. 2 Tabellen hast, mit verknüpften Datensätzen ist das selbstverständlich kein Problem.

                        Kommentar


                        • #13
                          also ich hab ein Join eingetragen
                          Aber ich bekomme mehr werte raus als was der Sucheingabe eingab

                          Kommentar


                          • #14
                            Wenn du uns mit ein bisschen mehr informationen versorgst und auf die Antworten eingehst erhöht sich die Wahrscheinlichkeit, dass dir jemand hilft.

                            Kommentar


                            • #15
                              PHP-Code:
                                  $sql "
                                  SELECT
                                      karte_name.db_name_de,
                                      karte_name.db_name_en,
                                      
                                      edition.name,
                                      edition.short
                                  FROM
                                      karte_name
                                  INNER JOIN
                                      edition
                                  WHERE
                                      karte_name.db_name_de
                                          LIKE
                                              '%
                              $suchbegriff%'
                                  OR
                                      karte_name.db_name_en
                                          LIKE
                                              '%
                              $suchbegriff%'
                                  OR
                                      edition.name
                                          LIKE
                                              '%
                              $suchbegriff%'
                                  OR
                                      edition.short
                                          LIKE
                                              '%
                              $suchbegriff%'
                                  ORDER BY
                                      karte_name.db_name_de,
                                      karte_name.db_name_en,
                                      edition.name,
                                      edition.short"
                              ;
                                  
                              $query mysql_query($sql);
                                  
                                  echo 
                              "<ul>";
                                  WHILE (
                              $row mysql_fetch_assoc($query))
                                  {
                                      
                              $db_name_de $row['db_name_de'];
                                      
                              $db_name_en $row['db_name_en'];
                                      
                              $name $row['name'];
                                      
                              $short $row['short'];
                                      
                                      echo 
                              "<li>$db_name_de</li>";
                                      echo 
                              "<li>$db_name_en</li>";
                                      echo 
                              "<li>$name</li>";
                                      echo 
                              "<li>$short</li>";
                                  }
                                  echo 
                              "</ul>";
                              }
                              ?> 
                              Ich gib im Feld MP14 ein und er sucht nicht nur die Sachen vom was aus der Edition kommt.
                              Sondern er zeigt auch namen der Karten an
                              • Ältestes Wesen Norden
                              • Elder Entity Norden
                              • 2014 Mega-Tin Mega-Pack
                              • MP14
                              • Übelschar-Zahak
                              • Evilswarm Zahak
                              • 2014 Mega-Tin Mega-Pack
                              • MP14
                              • Überfallraptor - Nest
                              • Raidraptor - Nest
                              • 2014 Mega-Tin Mega-Pack
                              • MP14
                              • Aquariumklippe
                              • Aquarium Stage
                              • 2014 Mega-Tin Mega-Pack
                              • MP14
                              • Auge der Leere
                              • Eye of the Void

                              Kommentar

                              Lädt...
                              X