HTML / PHP / MySQL: Tabelle filtern?

3 Antworten

Es fehlt die „Where“ Bedingung, das ist alles.

Woher ich das weiß:Berufserfahrung – Jahrzehnte IT Erfahrung, Experte für Kryptowährungen, 🐱

Dfgpnt 
Beitragsersteller
 05.03.2021, 10:43

Hab das ganze jz mal angepasst aber wie genau bekomm ich das mit der WHERE anfrage hin oder ist es so komplet falsch

  <?php

        //// Code zum Anzeigen der Datenbank und Seiten erstellen

        $con = mysqli_connect('localhost','root','');

        mysqli_select_db($con, 'systems');

        $results_per_page = 5;

        $result = mysqli_query($con, $sql);

        $number_of_results = mysqli_num_rows($result);

        $number_of_pages = ceil($number_of_results/$results_per_page);

        if (!isset($_GET['page'])) {

          $page = 1;

        } else {

          $page = $_GET['page'];

        }

        $this_page_first_result = ($page-1)*$results_per_page;

        //

        

        ////SELECT * FROM users LIMIT ' Funktoniert auch soweit jedoch bekomm ich das mit WHERE nicht hin.

        

        $sql='SELECT * FROM users LIMIT ' . $this_page_first_result . ',' .  $results_per_page;

        $result = mysqli_query($con, $sql);

       //

       //// Und dann das  Anzeigen der Einträge über Divs und keiner Tabelle

        while  ( $row = mysqli_fetch_array($result)) {

    ?>

  

0
Nube4618  05.03.2021, 13:07
@Dfgpnt

Ich weiss jetzt nicht wie deine Felder heissen, aber grundsätzlich müsste die Abfrage so funktionieren:

SELECT * FROM users WHERE Vorname = 'Hans' LIMIT = 100

Wichtig ist die Reihenfolge -> SELECT, FROM, WHERE, ORDER BY, LIMIT. LIMIT muss also immer am Schluss stehen, wobei ich nicht sehe, was das bei dir bezwecken soll, da du ja gar keine Grenze für LIMIT angibst.

0

Hallo, ich weiß dass ich etwas spät bin, aber ich habe ein Sicherheitsproblem in deinem Code gefunden.

Bitte benutze mysqli_query nicht mit "ungereinigtem" user input!
Dadurch könnte jemand fremden oder sogar bösartigen SQL code in dein Skript injizieren und dann wachst du den nächsten Tag zu einem blitzeblank leerem Datenbank Server auf und alle Nutzerdaten und co. kursieren nun auf dem darknet.
Du musst immer user input sanitizen/escapen, oder prepared statements verwenden, vor allem im Umgang mit Nutzerdaten und Passwörtern (welche du immer hashen und salten musst).

Verwende in diesem Falle einfach den WHERE clause, aber bitte verwende "prepared statements", es ist etwas mehr aufwand (1-3 Zeilen), aber du kannst damit fremde und potenziell bösartige SQL queries zu verhindern.

Woher ich das weiß:eigene Erfahrung

dazu müssten wir deine tabellen kennen und wonach du da genau auswählen willst.

ansonsten halt SELECT auf die Tabelle und mit WHERE eingrenzen . Dann sich um die ausgabe kümmern .


Dfgpnt 
Beitragsersteller
 05.03.2021, 10:43
Hab das ganze jz mal angepasst aber wie genau bekomm ich das mit der WHERE anfrage hin oder ist es so komplet falsch

  <?php
        //// Code zum Anzeigen der Datenbank und Seiten erstellen
        $con = mysqli_connect('localhost','root','');
        mysqli_select_db($con, 'systems');
        $results_per_page = 5;
        $result = mysqli_query($con, $sql);
        $number_of_results = mysqli_num_rows($result);
        $number_of_pages = ceil($number_of_results/$results_per_page);
        if (!isset($_GET['page'])) {
          $page = 1;
        } else {
          $page = $_GET['page'];
        }
        $this_page_first_result = ($page-1)*$results_per_page;
        //




        
        ////SELECT * FROM users LIMIT ' Funktoniert auch soweit jedoch bekomm ich das mit WHERE nicht hin.
        
        $sql='SELECT * FROM users LIMIT ' . $this_page_first_result . ',' .  $results_per_page;
        $result = mysqli_query($con, $sql);
       //


       //// Und dann das  Anzeigen der Einträge über Divs und keiner Tabelle
        while  ( $row = mysqli_fetch_array($result)) {
    ?>
  
0
TechPech1984  05.03.2021, 14:04
@Dfgpnt

irgendwie hast du schwierigkeiten zu begreifen was andere schreiben . OHNE DEINE TABELLE KANN ICH NICHT SAGEN WAS DU MACHEN MUSST:

0