1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| <?php
require '../../inc/functions.php';
logged_only();
require_once '../../inc/db.php';
$idsalon = (int) $_GET['idsalon'];
// On vérifie que le salon existe bien.
// Inutile de faire une requete préparé ? (oui c'est bien une question), je sécurise déjà la variable grâce a (int) plus haut...
$req = $pdo->query('SELECT * FROM forum_salons WHERE idsalon = '.$idsalon.'');
$verif_salon = $req->fetch();
if (!$verif_salon) {
$_SESSION['flash']['danger'] = 'Ce salon n\'existe pas';
header('Location: /membres/forum/index.php');
exit();
}
if (!empty($_POST)) {
if (empty($_POST['sujet'])) {
$_SESSION['flash']['danger'] = 'Veuillez renseigner un sujet';
}
if (empty($_POST['message'])) {
$_SESSION['flash']['danger'] = 'Votre message est trop court';
}
if (!isset($_SESSION['flash'])) {
// Le sujet et le message sont bien remplis on peut donc continuer
// On commence par enregistrer le sujet dans la table forum_sujets
$req = $pdo->prepare("INSERT INTO forum_sujets SET sujet = ?, idsalon = ?, idmbr = ?, idmbr_dernier = ?, derniermsg = NOW(), etat = 1");
$user_id = $_SESSION['auth']->id;
$req->execute([$_POST['sujet'], $idsalon, $user_id, $user_id]);
$idsujet = $pdo->lastInsertId();
// Ensuite on enregistre le message dans la table forum_messages
$req = $pdo->prepare("INSERT INTO forum_messages SET idsujet = ?, message = ?, idmbr = ?, dateheure = NOW()");
$message = trim(htmlspecialchars(stripslashes($_POST['message'])));
$req->execute([$idsujet, $message, $user_id]);
// On vérifie si le membre a déjà posté un message sur le forum pour pouvoir choisir entre update ou insert
$req = $pdo->query('SELECT * FROM forum_profils WHERE idmbr = '.$user_id.'');
$user = $req->fetch();
if ($user) {
// Si un enregistrement a ete trouvé alors on update le nombre de messages postés par le membre
$nbmsg_new = ++$user->nbmsg; // on ajoute 1 au nombre de messages postés
$pdo->exec('UPDATE forum_profils SET nbmsg = '.$nbmsg_new.' WHERE idmbr = '.$user_id.'');
} else {
// Si c'est le premier message du membre alors on utilise insert
$pdo->exec('INSERT INTO forum_profils (idmbr, nbmsg) VALUES('.$user_id.', 1)');
}
$_SESSION['flash']['success'] = 'Votre message a bien été envoyé';
header('Location: sujet.php?idsujet='.$idsujet.'');
exit();
}
}
require '../../inc/header.php';
?>
<h1>Nouveau sujet</h1>
<form action="" method="POST">
<div class="form-group">
<label for="sujet">Sujet</label>
<input type="text" name="sujet" value="<?= empty($_POST['sujet']) ? '' : htmlspecialchars($_POST['sujet'], ENT_QUOTES); ?>" class="form-control" id="sujet" placeholder="Mon sujet...">
</div>
<div class="form-group">
<label for="message">Votre message</label>
<textarea name="message" class="form-control" id="message" rows="6"><?= empty($_POST['message']) ? '' : htmlspecialchars($_POST['message'], ENT_QUOTES); ?></textarea>
</div>
<button type="submit" class="btn btn-primary">Envoyer</button>
</form>
<?php require '../../inc/footer.php'; ?> |
Partager