HTML / PHP / MySQL: Tabelle filtern?
Hallo Leute,
ich stehe gerade vor einem Problem.
Und zwar will ich mit PHP eine MySQL-Tabelle anzeigen lassen, was auch gut funktioniert. Die ganze Datenbank wird mit allen Einträgen angezeigt. Es ist jedoch möglich (z.B. Datenbank Möbel - "Tabelle Möbel" - StühleFarbe ) nicht alle Möbel anzuzeigen, sondern nur die StühleFarbe.
Da nun in der Datenbank mehrere Einträge mit der Farbe Orange eingetragen sind, sollten dann nur diese angezeigt werden.
Der Code zum Anzeigen der Seite:
$results_per_page = 5;
$sql = 'SELECT * FROM users';
$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'];
}
// determine the sql LIMIT starting number for the results on the displaying page
$this_page_first_result = ($page - 1) * $results_per_page;
// retrieve selected results from database and display them on page
$sql = 'SELECT * FROM users LIMIT ' . $this_page_first_result . ',' . $results_per_page;
$result = mysqli_query($con, $sql);
while ($row = mysqli_fetch_array($result)) {
3 Antworten
Es fehlt die „Where“ Bedingung, das ist alles.
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.
Vielleicht hilft dir das auch noch etwas:
https://www.mysqltutorial.org/mysql-limit.aspx
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.
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 .
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)) {
?>
irgendwie hast du schwierigkeiten zu begreifen was andere schreiben . OHNE DEINE TABELLE KANN ICH NICHT SAGEN WAS DU MACHEN MUSST:
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)) {
?>