ciao e ben ritrovati sono riuscito a creare un sito di chat dove l'utente si registra e può creare la sua stanza e diventa admin fin qui funziona tutto ma se l'utente che è diventato admin quando prova a creare un'altra stanza mi da errore che non riesco a capire
posto i codici
posto i codici
Codice:
Error: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`prova`.`chatrooms`, CONSTRAINT `chatrooms_ibfk_1` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`))
----------------------------------------
forse è qui l'errore???
CREATE TABLE `chatrooms` (
`id` int(11) NOT NULL,
`name` varchar(100) NOT NULL,
`created_by` int(11) DEFAULT NULL,
`topic` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$chatroomName = $_POST['chatroom_name'];
$topic = $_POST['topic'];
$userId = $_SESSION['user_id'];
try {
// Inserimento della chatroom
$stmt = $pdo->prepare("INSERT INTO chatrooms (name, topic, created_by) VALUES (:name, :topic, :created_by)");
$stmt->execute(['name' => $chatroomName, 'topic' => $topic, 'created_by' => $userId]);
$chatroomId = $pdo->lastInsertId();
// Assegnazione del ruolo di amministratore
$role = 'admin';
$stmt = $pdo->prepare("INSERT INTO user_roles (user_id, chatroom_id, role) VALUES (:user_id, :chatroom_id, :role)");
$stmt->execute(['user_id' => $userId, 'chatroom_id' => $chatroomId, 'role' => $role]);
$stmt = $pdo->prepare("UPDATE users SET role = :role WHERE id = :id");
$stmt->execute(['id' => $userId, 'role' => $role]);
echo "Chatroom created and user assigned as admin";
} catch (PDOException $e) {
echo 'Error: ' . $e->getMessage();
}
}
?>
<form method="post">
<div class="form-group"><h6>Nome stanza</h6>
<div class="col-sm-10"><input type="text" name="chatroom_name" value="" class="form-control" autocomplete="off"></div>
</div>
<div class="form-group"><h6>Descrizione stanza</h6>
<div class="col-sm-10"><input type="text" name="topic" value="" class="form-control" autocomplete="off"></div>
</div>
<div class="form-group">
<div class="col-sm-4 col-sm-offset-1"><br>
<button class="btn btn-primary" value="submit" name="create_chatroom" type="submit">Create room</button>
</div>
</div>
</form>