Es ist das suchen feld, und bei den echos wird das angezeigt was ich suche. Hier mal die kompletten Codes
Modell.class.php // ist das CRUD
Modell.class.php // ist das CRUD
Code:
<?php namespace mydb\App\classes\user_mvc_class; use mydb\App\classes\abstractClasses\AbstractCrud; use PDO; use PDOException; class Model extends AbstractCrud { //private $conn; protected $rows; protected $datetime=null; protected $first_name=null; protected $last_name=null; protected $corridor=null; protected $room=null; protected $bed=null; protected $proven=null; protected $ID=null; protected $list_sql="select * from users"; protected $param=[]; protected $info = ""; protected $save_update="save"; protected $action="none"; //function __construct(){ // $this->conn(); //nicht notwendig, da die Verbindung über den Methodaufruf conn() erfolgt! //} protected function get_rows(){ $this->list_sql = "SELECT * FROM users ORDER BY datetime DESC"; // Fügt die ORDER BY Klausel hinzu $stmt = $this->conn()->prepare($this->list_sql); $stmt->execute($this->param); $this->rows = $stmt->fetchAll(PDO::FETCH_ASSOC); } protected function save(){ // Überprüfen, ob die anderen Felder leer sind if($_POST['first_name']=="" || $_POST['last_name']=="" || $_POST['corridor']=="" || $_POST['room']=="" || $_POST['bed']=="") { $this->info = "Füllen Sie bitte alle Felder aus!"; return; } // Überprüfen, ob ein Eintrag bereits vorhanden ist $checkSql = "SELECT * FROM users WHERE first_name = :first_name AND last_name = :last_name AND corridor = :corridor AND room = :room AND bed = :bed"; $checkStmt = $this->conn()->prepare($checkSql); $checkStmt->execute([ ':first_name' => $_POST['first_name'], ':last_name' => $_POST['last_name'], ':corridor' => $_POST['corridor'], ':room' => $_POST['room'], ':bed' => $_POST['bed'] ]); $provenValue = isset($_POST['proven']) ? 1 : 0; // Wert von proven basierend auf Checkbox-Status if ($checkStmt->rowCount() > 0) { // Wenn ein Eintrag gefunden wird, dann prüfen Sie, ob proven bereits aktiviert ist $existingEntry = $checkStmt->fetch(PDO::FETCH_ASSOC); // Wenn proven nicht aktiviert ist, dann aktualisieren Sie es if ($existingEntry['proven'] != 1) { $updateSql = "UPDATE users SET proven = :proven, datetime = NOW() WHERE first_name = :first_name AND last_name = :last_name AND corridor = :corridor AND room = :room AND bed = :bed"; $updateStmt = $this->conn()->prepare($updateSql); $updateStmt->execute([ ':proven' => $provenValue, ':first_name' => $_POST['first_name'], ':last_name' => $_POST['last_name'], ':corridor' => $_POST['corridor'], ':room' => $_POST['room'], ':bed' => $_POST['bed'] ]); if ($updateStmt->rowCount() > 0) { $this->info = "Eintrag aktualisiert!"; } else { $this->info = "Fehler beim Aktualisieren!"; } } else { // Nur andere Felder aktualisieren, nicht proven $updateSql = "UPDATE users SET datetime = NOW() WHERE first_name = :first_name AND last_name = :last_name AND corridor = :corridor AND room = :room AND bed = :bed"; $updateStmt = $this->conn()->prepare($updateSql); $updateStmt->execute([ ':first_name' => $_POST['first_name'], ':last_name' => $_POST['last_name'], ':corridor' => $_POST['corridor'], ':room' => $_POST['room'], ':bed' => $_POST['bed'] ]); if ($updateStmt->rowCount() > 0) { $this->info = "Eintrag aktualisiert, proven wurde nicht geändert!"; } else { $this->info = "Fehler beim Aktualisieren!"; } } } else { // Neuen Eintrag hinzufügen $sql = "INSERT INTO users (datetime, first_name, last_name, corridor, room, bed, proven) VALUES (NOW(), :first_name, :last_name, :corridor, :room, :bed, :proven)"; $stmt = $this->conn()->prepare($sql); $stmt->execute([ ':first_name' => $_POST['first_name'], ':last_name' => $_POST['last_name'], ':corridor' => $_POST['corridor'], ':room' => $_POST['room'], ':bed' => $_POST['bed'], ':proven' => $provenValue ]); if($stmt->rowCount() > 0) { $this->info = "Datensatz wurde gespeichert!"; } else { $this->info = "Kein Datensatz gespeichert!"; } } } protected function edit() { $this->save_update = "update"; if (isset($_POST['id'])) { $sql = "SELECT * FROM users WHERE ID=:id"; $stmt = $this->conn()->prepare($sql); $stmt->execute(['id' => $_POST['id']]); $row = $stmt->fetch(PDO::FETCH_ASSOC); if ($row) { $this->first_name = $row['first_name']; $this->last_name = $row['last_name']; $this->corridor = $row['corridor']; $this->room = $row['room']; $this->bed = $row['bed']; $this->proven = $row['proven']; $this->ID = $row['id']; } else { $this->info = "Datensatz nicht gefunden!"; } } else { $this->info = "ID nicht gesetzt!"; } } protected function update(){ if (!isset($_POST['id'])) { $this->info = "ID nicht gesetzt!"; return; } // Überprüfen, ob 'proven' im $_POST Array gesetzt ist $provenValue = isset($_POST['proven']) ? $_POST['proven'] : 0; $sql = "UPDATE users SET datetime = NOW(), first_name = :first_name, last_name = :last_name, corridor = :corridor, room = :room, bed = :bed, proven = :proven WHERE ID = :id"; $stmt = $this->conn()->prepare($sql); $stmt->execute([ 'first_name' => $_POST['first_name'], 'last_name' => $_POST['last_name'], 'corridor' => $_POST['corridor'], 'room' => $_POST['room'], 'bed' => $_POST['bed'], 'proven' => $provenValue, // Verwenden Sie hier den überprüften Wert 'id' => $_POST['id'] ]); if ($stmt->rowCount() > 0) { $this->info = $stmt->rowCount() . " Datensatz verändert!"; } else { $this->info = "Kein Datensatz verändert/gespeichert!"; } } protected function delete(){ $sql = "DELETE FROM users WHERE ID=:id"; $stmt = $this->conn()->prepare($sql); $stmt->execute(['id'=>$_POST['id']]); if ($stmt->rowCount() > 0) $this->info = $stmt->rowCount() . " Datensatz gelöscht!"; else $this->info = "Der Datensatz wurde nicht gelöscht!"; } protected function search() { if (isset($_POST['search']) && !empty(trim($_POST['search']))) { $searchTerm = "%" . $_POST['search'] . "%"; // SQL-Statement vorbereiten $this->list_sql = "SELECT * FROM users WHERE `first_name` LIKE :search OR `last_name` LIKE :search OR `corridor` LIKE :search OR `room` LIKE :search OR `bed` LIKE :search"; // Debug-Ausgaben für SQL-Statement und Suchbegriff echo "SQL-Statement: " . $this->list_sql . "<br>"; echo "Suchbegriff: " . $searchTerm . "<br>"; $stmt = $this->conn()->prepare($this->list_sql); $stmt->bindParam(':search', $searchTerm, PDO::PARAM_STR); if (!$stmt->execute()) { echo "Fehler bei der Ausführung der Abfrage: " . print_r($stmt->errorInfo(), true); return; } // Ergebnisse abrufen und zu $this->rows zuweisen $this->rows = $stmt->fetchAll(PDO::FETCH_ASSOC); // Debug-Ausgabe für die zurückgegebenen Ergebnisse echo "Anzahl der zurückgegebenen Ergebnisse: " . count($this->rows) . "<br>"; echo "Ausgegebene Daten: <pre>" . print_r($this->rows, true) . "</pre>"; if (count($this->rows) > 0) { $this->info = count($this->rows) . " Ergebnisse gefunden!"; } else { $this->info = "Keine Ergebnisse gefunden!"; } } else { $this->info = "Suchbegriff nicht angegeben!"; } } }
Kommentar