Guten Abend zusammen,
in meinem Sachverhalt hat jeder registrierte Benutzer seine eigene User ID, welche in meiner Datenbank "Users" in der Spalte "ID" gespeichert wird.
Benutzer können Daten (z.B. Nachrichten) in der Datenbank "Kommunikation" über ein Formular eintragen, wobei ich festgelegt habe, dass ebenfalls die jeweilige User ID mitgesendet und in der Datenbank gespeichert wird, um alle Einträge zuordnen zu können.
Wie muss ich folgenden PHP Code anpassen, damit der Benutzer bei der Ausgabe der Datenbank NUR seine eigenen Einträge sehen kann, also jene, bei welchen die eigene User ID in der Tabelle mit dem Eintrag gespeichert ist?
Ich weiß ungefähr, dass man die SELECT Abfrage definieren kann..(z.B. SELECT * FROM Kommunikation WHERE $id = $userid .. <- ungefähr so? ) allerdings weiß ich nicht genau, wie es richtig aussehen muss.
in meinem Sachverhalt hat jeder registrierte Benutzer seine eigene User ID, welche in meiner Datenbank "Users" in der Spalte "ID" gespeichert wird.
Benutzer können Daten (z.B. Nachrichten) in der Datenbank "Kommunikation" über ein Formular eintragen, wobei ich festgelegt habe, dass ebenfalls die jeweilige User ID mitgesendet und in der Datenbank gespeichert wird, um alle Einträge zuordnen zu können.
Wie muss ich folgenden PHP Code anpassen, damit der Benutzer bei der Ausgabe der Datenbank NUR seine eigenen Einträge sehen kann, also jene, bei welchen die eigene User ID in der Tabelle mit dem Eintrag gespeichert ist?
Ich weiß ungefähr, dass man die SELECT Abfrage definieren kann..(z.B. SELECT * FROM Kommunikation WHERE $id = $userid .. <- ungefähr so? ) allerdings weiß ich nicht genau, wie es richtig aussehen muss.
PHP-Code:
<?php
$pdo = new PDO('mysql:host=;dbname=;charset=utf8', '', '');
$show_form = false;
$error = null;
//Das Formular wurde abgesendet, überprüfe den Inhalt und speichere es ab
if(isset($_GET['submit'])) {
$name = trim($_POST['name']);
$name = trim($_POST['name']);
$email = trim($_POST['email']);
$text = trim($_POST['text']);
//Überprüfen dass die E-Mail-Adresse gültig ist
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$error = 'Bitte eine gültige E-Mail-Adresse eingeben!<br>';
} else if(empty($name)) {
$error = 'Bitte einen Namen ein!<br>';
} else if(empty($text)) {
$error = 'Bitte eine Nachricht eingeben!<br>';
} else {
$statement = $pdo->prepare("INSERT INTO kommunikation (name, email, text) VALUES (:name, :email, :text)");
$result = $statement->execute(array('name' => $name, 'email' => $email, 'text' => $text));
if($result) {
echo '<b>Dein Beitrag wurde erfolgreich veröffentlicht.</b><br><br>';
$show_form = false;
} else {
$error = 'Dein Beitrag konnte nicht veröffentlicht werden.<br>';
}
}
}
?>
<?php
if(!is_null($error)) { //Ein Fehler ist aufgetreten
echo $error;
}
//Ausgabe des Formulars nur wenn $showForm == true ist
if($show_form):
?>
<form action="?submit=1" method="post">
Name:<br>
<input type="text" size="40" maxlength="250" name="name"><br><br>
E-Mail:<br>
<input type="email" size="40" maxlength="250" name="email"><br><br>
Text:<br>
<textarea cols="50" rows="9" name="text"></textarea><br><br>
<input type="submit" value="Eintragen">
</form>
<?php
endif;
?>
<hr>
<?php
/***********************
* Ausgabe der Einträge
***********************/
//Ermittelt die Anzahl der Beiträge
$statement = $pdo->prepare("SELECT COUNT(*) AS anzahl FROM kommunikation WHERE deleted_at IS NULL");
$statement->execute();
$row = $statement->fetch();
$anzahl_eintrage = $row['anzahl'];
echo "";
//Berechne alles notwendige für die Blätterfunktion
$seite = 1;
if(isset($_GET['seite'])) {
$seite = intval($_GET['seite']);
}
$beitraege_pro_seite = 20;
$start = ($seite-1)*$beitraege_pro_seite;
//Abfrage der Datenbank und Ausgabe der Daten
$statement = $pdo->prepare("SELECT * FROM kommunikation WHERE deleted_at IS NULL ORDER BY created_at DESC LIMIT :start, :limit");
$statement->bindParam(':start', $start, PDO::PARAM_INT);
$statement->bindParam(':limit', $beitraege_pro_seite, PDO::PARAM_INT);
$statement->execute();
while($row = $statement->fetch()) {
$name = htmlentities($row['name']);
$email = htmlentities($row['email']);
$text = nl2br(htmlentities($row['text']));
$date = new DateTime($row['created_at']);
$dateFormatted = $date->format('d.m.y H:i');
echo "
<button class='site-btn sb-line mr-4 mb-4'><i class='fa fa-user' aria-hidden='true'></i> <b><u>$name</u></b> <small>($dateFormatted Uhr)</small><hr>
$text</button>
<br>";
}
//Berechne die Anzahl der Seiten:
$anzahl_seiten = ceil($anzahl_eintrage / floatval($beitraege_pro_seite));
//Ausgabe der Seitenlinks:
echo "<div align="center">";
echo "<b>Seite:</b> ";
//Ausgabe der Links zu den verschiedenen Seiten
for($a=1; $a <= $anzahl_seiten; $a++) {
//Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben
if($seite == $a){
echo " <b>$a</b> ";
} else { //Aus dieser Seite ist der User nicht, also einen Link ausgeben
echo " <a href="?seite=$a">$a</a> ";
}
}
echo "</div>";
?>
Kommentar