Ankündigung

Einklappen
Keine Ankündigung bisher.

suche mit datenbank wo ist mein fehler?

Einklappen

Neue Werbung 2019

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

  • suche mit datenbank wo ist mein fehler?

    Hallo,
    Ich habe versucht eine suche mittels Datenbank aufzusetzen nur will es nicht so recht funktionieren. Ich bin noch ein relativer neuling auf diesem Gebiet und finde den Fehler nicht. Vieleicht könnt ihr mir weiterhelfen. Datenbank und seite wird gehostet von strato. anbei der code

    HTML-Code:
    <html>
    <head>
    
    
    <Title>suche datenbank</title>
    
    <head>
    <body>
    <form action='index.php' method='Post'>
    <input type='text' name='suchfeld'> <input type='submit' name='suche_enter' value='Suchen'>
    </form>
    <hr><br>
    <?php
    
    if(isset($_Post['suche_enter']))
      {
    
    $dbh = mysql_connect("rdbms.strato.de", "U.....", "Passwort");
    
    $query = "use DB....";
    
        $suchbegriff = trim(htmlentities(stripslashes(mysql_real_escape_string($_Post['suchfeld']))));
    
        $sql = "
        SELECT
        v_suchwort,link
        FROM
        suche
        WHERE
        suchwort LIKE '%$suchbegriff%'
        OR
        link Like '%suchbegriff%'
        ORDER BY
        suchwort,link
        ";
        $query = mysql_query($sql);
    
        echo "<ul>";
        WHILE($row = mysql_fetch_assoc($query))
        {
            $suchwort = $row['suchwort'];
            $link = $row['link'];
            echo "<li>$suchwort $link -<b>$v_suche</b></li>";
        }
    echo "</ul>";
      }
    ?>
    </body>
    </html>


  • #2
    Die Frage dürfte sein woher du diesen Code hast.

    Infos:
    - Debugging: https://php-de.github.io/jumpto/faq/#debugging
    - Lies den roten Kasten hier: https://php.net/mysql_query
    - Gross und Kleinschreibung ist wichtig. Der Superglobale Array heisst $_POST, nicht $_Post.

    PHP-Code:
      trim(htmlentities(stripslashes(mysql_real_escape_string($_Post['suchfeld'])))); 
    Das ist ziemlich unsinnig. Nur die Escape-Funktion verwenden. Oder verwende doch gleich Prepared Statments (https://www.php.net/manual/de/mysqli...statements.php)

    Kommentar


    • #3
      Schalte erst mal das Error Reporting ein, damit dir Fehler auch ausgegeben werden.

      PHP-Code:
        $dbh mysql_connect("rdbms.strato.de""U.....""Passwort"); 
      mysql ist veraltet, verwende mysqli oder PDO als API. Sieh rosa Kasten als Warnung zu deiner verwendeten Funktion:
      https://www.php.net/manual/de/functi...ql-connect.php

      PHP-Code:
         $suchbegriff trim(htmlentities(stripslashes(mysql_real_escape_string($_Post['suchfeld'])))); 
      Das ist totaler Unsinn. Nach dem maskieren mit mysqli_real_escape folgt nichts mehr. Trim kannst du vorher anwenden. stripslashes ist überflüssig und htmlentities brachst du auch nicht.
      Für den Kontextwechsel zu html später bei der Ausgabe nimmst du htmlspecialchars.

      Wo hast du das her, das man es so macht, Die Quelle kannst du jedenfalls in die Tonne werfen.

      Schau dir auch mal das EVA-Prinzip an und wende es an. DB Operationen haben nämlich inmitten von HTML ausgaben nichts zu suchen.
      Deine Ausgabe beginnt hier <html>

      Bei deiner HTML Ausgabe fehlt zudem der Doctype.

      Kommentar


      • #4
        Das die quelle nicht die beste war merke ich jetzt auch... Erstmal danke für die hilfe
        .
        HTML-Code:
        $query = mysqli_query($sql);
        
        echo "<ul>";
        WHILE($row = mysqli_fetch_assoc($query, $dbh))
        {
        $suchwort = $row['suchwort'];
        $link = $row['link'];
        echo "<li>$suchwort $link -<b>$v_suche</b></li>";
        }
        echo "</ul>";
        an dieser stelle komme ich gerade nicht weiter. die anderen fehler und tipps von euch konnte ich schon umsetzten. Error Reporting habe ich jetzt auch endlich an(hätte ich gleich machen sollen) und dort wird mir folgendes angezeigt:

        Warning: mysqli_query() expects at least 2 parameters, 1 given in /mnt/web405/b3/49/59446649/htdocs/suche.w-server.org/index.php on line 60
        Warning: mysqli_fetch_assoc() expects exactly 1 parameter, 2 given in /mnt/web405/b3/49/59446649/htdocs/suche.w-server.org/index.php on line 63

        ich weiß nicht genau wie ich das umbauen soll da ja mysql veraltet ist und mysqli anderster funktioniert..

        Kommentar


        • #5
          Lies doch in der Doku nach, du findest dort jede Funktion mit den Parametern, die sie erwartet sowie was sie zurückgibt.

          https://www.php.net/mysqli_query
          https://www.php.net/mysqli_fetch_assoc

          Die Fehlermeldung genau lesen hilft oftmals schon gut weiter.

          Kommentar


          • #6
            Hast du dir die Beispiele dazu mal im Handbuch angesehen?

            Kommentar

            Lädt...
            X