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

  • lw-server
    hat ein Thema erstellt suche mit datenbank wo ist mein fehler?.

    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>

  • protestix
    antwortet
    Hast du dir die Beispiele dazu mal im Handbuch angesehen?

    Einen Kommentar schreiben:


  • jonas3344
    antwortet
    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.

    Einen Kommentar schreiben:


  • lw-server
    antwortet
    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..

    Einen Kommentar schreiben:


  • protestix
    antwortet
    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.

    Einen Kommentar schreiben:


  • jonas3344
    antwortet
    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)

    Einen Kommentar schreiben:

Lädt...
X