(https://radiotrallacity.de/aa/profile.php?user_id=1) so sollte es sein --------------------------------------------------------------------------- SQL Script -- Datenbank erstellen, falls nicht vorhanden CREATE DATABASE IF NOT EXISTS `db_376260_23`; -- Auswahl der Datenbank USE `db_376260_23`; -- Tabelle für Benutzer erstellen CREATE TABLE IF NOT EXISTS `users` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `nickname` VARCHAR(50) NOT NULL, `email` VARCHAR(100) NOT NULL UNIQUE, `password` VARCHAR(255) NOT NULL, `profile_pic` VARCHAR(255), `about` TEXT, `hobbies` VARCHAR(255), `music` VARCHAR(50), `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- Tabelle für Fotos erstellen CREATE TABLE IF NOT EXISTS `photos` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `user_id` INT NOT NULL, `photo_path` VARCHAR(255) NOT NULL, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- Indizes zur Verbesserung der Abfrageleistung hinzufügen CREATE INDEX idx_user_email ON `users`(`email`); CREATE INDEX idx_user_id ON `photos`(`user_id`); ------------------------------------------------------------------------------------------------------------------------------------------------ ### 1. Profilansicht (profile.php) prepare("SELECT * FROM users WHERE id = ?"); $stmt->bind_param("i", $user_id); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows === 0) { echo "
Profil nicht gefunden!
"; exit(); } $user = $result->fetch_assoc(); $stmt->close(); // Bilder abrufen $stmt = $conn->prepare("SELECT photo_path FROM photos WHERE user_id = ?"); $stmt->bind_param("i", $user_id); $stmt->execute(); $photos = $stmt->get_result(); $stmt->close(); ?>Noch keine Bilder hochgeladen
----------------------------------------------------------------------------------------------------------------------------------------------- ### 2. Profil bearbeiten (edit_profile.php) prepare("SELECT * FROM users WHERE id=?"); $stmt->bind_param("i", $user_id); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows === 0) { die("Fehler: Kein Profil gefunden! Bitte erst ein Profil erstellen."); } $user = $result->fetch_assoc(); $stmt->close(); $photos = $conn->query("SELECT * FROM photos WHERE user_id=$user_id"); // Funktion zum Löschen von Bildern function deletePhoto($photo_id, $conn, $upload_dir) { $stmt = $conn->prepare("SELECT photo_path FROM photos WHERE id=?"); $stmt->bind_param("i", $photo_id); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { $photo = $result->fetch_assoc(); $file_path = $photo['photo_path']; if (file_exists($file_path)) { unlink($file_path); // Bild aus dem Dateisystem löschen } $stmt = $conn->prepare("DELETE FROM photos WHERE id=?"); $stmt->bind_param("i", $photo_id); $stmt->execute(); } $stmt->close(); } // Profil aktualisieren if ($_SERVER["REQUEST_METHOD"] === "POST") { $nickname = $_POST['nickname']; $about = $_POST['about']; $hobbies = $_POST['hobbies']; $music = $_POST['music']; $upload_dir = "uploads/"; if (!is_dir($upload_dir)) { mkdir($upload_dir, 0777, true); } $allowed_types = ['image/jpeg', 'image/png', 'image/gif']; // Profilbild aktualisieren if (!empty($_FILES['profile_pic']['name'])) { $tmp_name = $_FILES["profile_pic"]["tmp_name"]; $file_type = @mime_content_type($tmp_name); if ($file_type && in_array($file_type, $allowed_types)) { $new_file_name = uniqid() . "_" . basename($_FILES["profile_pic"]["name"]); $target_file = $upload_dir . $new_file_name; if (move_uploaded_file($tmp_name, $target_file)) { $stmt = $conn->prepare("UPDATE users SET profile_pic=? WHERE id=?"); $stmt->bind_param("si", $target_file, $user_id); $stmt->execute(); $stmt->close(); } else { die("Fehler: Upload fehlgeschlagen."); } } else { die("Fehler: Ungültiges Bildformat."); } } // Profildaten aktualisieren $stmt = $conn->prepare("UPDATE users SET nickname=?, about=?, hobbies=?, music=? WHERE id=?"); $stmt->bind_param("ssssi", $nickname, $about, $hobbies, $music, $user_id); if (!$stmt->execute()) { die("Fehler beim Speichern der Profildaten: " . $stmt->error); } // Album-Bilder aktualisieren if (!empty($_FILES['album_pics']['name'][0])) { foreach ($_FILES['album_pics']["tmp_name"] as $key => $tmp_name) { if ($key < 10) { // Maximal 10 Bilder $file_type = @mime_content_type($tmp_name); if ($file_type && in_array($file_type, $allowed_types)) { $new_file_name = uniqid() . "_" . basename($_FILES["album_pics"]["name"][$key]); $target_file = $upload_dir . $new_file_name; if (move_uploaded_file($tmp_name, $target_file)) { $stmt = $conn->prepare("INSERT INTO photos (user_id, photo_path) VALUES (?, ?)"); $stmt->bind_param("is", $user_id, $target_file); $stmt->execute(); $stmt->close(); } else { die("Fehler: Upload eines Album-Bildes fehlgeschlagen."); } } else { die("Fehler: Ungültiges Dateiformat für Album-Bild."); } } } } // Bilder löschen, falls angefordert if (!empty($_POST['delete_photos'])) { foreach ($_POST['delete_photos'] as $photo_id) { deletePhoto($photo_id, $conn, $upload_dir); } } header("Location: profile.php?user_id=$user_id"); exit(); } ?>Schon registriert? Hier einloggen
= htmlspecialchars($error_message) ?>