par
Noobiephp » 01 oct. 2021, 11:53
Ok j'ai finalement réussi à afficher les catégories T_T
J'ai utilisé
$topic_categories = $bdd->query('SELECT id, category_name, category_description FROM categories ORDER BY id DESC LIMIT 0,5');
<?php while ($category = $topic_categories->fetch()) { ?>
<!-- Sélelectionner la catégorie -->
<div class="card-header bg-dark text-white mb-4">
<select class="form-select" aria-label="Default select example">
<option selected>Sélectionnez votre catégorie</option>
<option value="?"><?= $category['category_name']; ?></option>
</select>
</div>
<?php } ?>
Problème désormais : je n'arrive pas à afficher les catégories dans un menu déroulé normal...
Je ne trouve également pas comment valider le formulaire et rentrer les topics dans la bonne catégorie. J'ai un message d'erreur qui s'affiche quand je valide le formulaire (j'ai inséré les bonnes variables $topic_catégorie dans mon publishActions.php, enfin je crois...)
<?php
require('actions/database.php');
$topic_categories = $bdd->query('SELECT id, category_name, category_description FROM categories ORDER BY id DESC LIMIT 0,5');
//Valider le formulaire
if(isset($_POST['validate'])){
//Vérifier si les champs ne sont pas vides
if(!empty($_POST['title']) AND !empty($_POST['content'])){
//Les données du topic
$topic_category = $topic_categories['id'];
$topic_title = htmlspecialchars($_POST['title']);
$topic_content = nl2br(htmlspecialchars($_POST['content']));
$topic_date = date('d/m/Y H:i:s' );
$topic_id_author = $_SESSION['id'];
$topic_pseudo_author = $_SESSION['pseudo'];
$topic_image_author = $_SESSION['image'];
//Insérer le topic sur topics
$insertTopicOnWebsite = $bdd->prepare('INSERT INTO topics(catégorie, titre, contenu, id_auteur, pseudo_auteur, image_auteur, date_publication)VALUES(?, ?, ?, ?, ?, ?, ?)');
$insertTopicOnWebsite->execute(
array(
$topic_category,
$topic_title,
$topic_content,
$topic_id_author,
$topic_pseudo_author,
$topic_image_author,
$topic_date,
)
);
$successMsg = "Votre topic a bien été publié sur le site";
}else{
$errorMsg = "Veuillez compléter tous les champs...";
}
}
La liste n'est pas déroulante, ça me crée juste 3 fois la même chose
<?php
require('actions/users/securityAction.php');
require('actions/topics/publishTopicAction.php');
?>
<!DOCTYPE html>
<html lang="en">
<link rel="stylesheet" href="assets/style.css">
<?php include 'includes/head.php'; ?>
<body>
<?php include 'includes/navbar.php'; ?>
<br><br>
<form class="container" method="POST">
<?php
if (isset($errorMsg)) {
echo '<p class="alert alert-danger" role="alert">' . $errorMsg . '</p>';
} elseif (isset($successMsg)) {
echo '<p class="alert alert-success" role="alert">' . $successMsg . '</p>';
}
?>
<div class="alert alert-danger" role="alert">
<div class="card-body">
<span>Soyez libres de poster tout ce que vous voulez, mais assurez vous de respecter nos conditions.</span>
</div>
</div>
<div class="card bg-dark text-white mb-4 mb-4">
<?php while ($category = $topic_categories->fetch()) { ?>
<!-- Sélelectionner la catégorie -->
<div class="card-header bg-dark text-white mb-4">
<select class="form-select" aria-label="Default select example">
<option selected>Sélectionnez votre catégorie</option>
<option value="?"><?= $category['category_name']; ?></option>
</select>
</div>
<?php } ?>
<!-- Choisir un titre -->
<div class="card-header bg-dark text-white mb-4">
<input type="text" class="form-control" name="title" placeholder="Titre de votre topic">
</div>
<!-- Ecrire le contenu -->
<div class="card">
<div class="card-body">
<textarea type="text" class="form-control" name="content" placeholder="Contenu de votre topic"></textarea>
</div>
</div>
</div>
<!-- Valider -->
<button type="submit" class="btn btn-primary" name="validate">Publier</button>
<a href="index.php" class="btn btn-secondary">Retour</a>
</form>
</body>
</html>
Ok j'ai finalement réussi à afficher les catégories T_T
J'ai utilisé
[PHP]$topic_categories = $bdd->query('SELECT id, category_name, category_description FROM categories ORDER BY id DESC LIMIT 0,5');
<?php while ($category = $topic_categories->fetch()) { ?>
<!-- Sélelectionner la catégorie -->
<div class="card-header bg-dark text-white mb-4">
<select class="form-select" aria-label="Default select example">
<option selected>Sélectionnez votre catégorie</option>
<option value="?"><?= $category['category_name']; ?></option>
</select>
</div>
<?php } ?>[/PHP]
Problème désormais : je n'arrive pas à afficher les catégories dans un menu déroulé normal...
Je ne trouve également pas comment valider le formulaire et rentrer les topics dans la bonne catégorie. J'ai un message d'erreur qui s'affiche quand je valide le formulaire (j'ai inséré les bonnes variables $topic_catégorie dans mon publishActions.php, enfin je crois...)
[PHP]<?php
require('actions/database.php');
$topic_categories = $bdd->query('SELECT id, category_name, category_description FROM categories ORDER BY id DESC LIMIT 0,5');
//Valider le formulaire
if(isset($_POST['validate'])){
//Vérifier si les champs ne sont pas vides
if(!empty($_POST['title']) AND !empty($_POST['content'])){
//Les données du topic
$topic_category = $topic_categories['id'];
$topic_title = htmlspecialchars($_POST['title']);
$topic_content = nl2br(htmlspecialchars($_POST['content']));
$topic_date = date('d/m/Y H:i:s' );
$topic_id_author = $_SESSION['id'];
$topic_pseudo_author = $_SESSION['pseudo'];
$topic_image_author = $_SESSION['image'];
//Insérer le topic sur topics
$insertTopicOnWebsite = $bdd->prepare('INSERT INTO topics(catégorie, titre, contenu, id_auteur, pseudo_auteur, image_auteur, date_publication)VALUES(?, ?, ?, ?, ?, ?, ?)');
$insertTopicOnWebsite->execute(
array(
$topic_category,
$topic_title,
$topic_content,
$topic_id_author,
$topic_pseudo_author,
$topic_image_author,
$topic_date,
)
);
$successMsg = "Votre topic a bien été publié sur le site";
}else{
$errorMsg = "Veuillez compléter tous les champs...";
}
}[/PHP]
La liste n'est pas déroulante, ça me crée juste 3 fois la même chose
[PHP]<?php
require('actions/users/securityAction.php');
require('actions/topics/publishTopicAction.php');
?>
<!DOCTYPE html>
<html lang="en">
<link rel="stylesheet" href="assets/style.css">
<?php include 'includes/head.php'; ?>
<body>
<?php include 'includes/navbar.php'; ?>
<br><br>
<form class="container" method="POST">
<?php
if (isset($errorMsg)) {
echo '<p class="alert alert-danger" role="alert">' . $errorMsg . '</p>';
} elseif (isset($successMsg)) {
echo '<p class="alert alert-success" role="alert">' . $successMsg . '</p>';
}
?>
<div class="alert alert-danger" role="alert">
<div class="card-body">
<span>Soyez libres de poster tout ce que vous voulez, mais assurez vous de respecter nos conditions.</span>
</div>
</div>
<div class="card bg-dark text-white mb-4 mb-4">
<?php while ($category = $topic_categories->fetch()) { ?>
<!-- Sélelectionner la catégorie -->
<div class="card-header bg-dark text-white mb-4">
<select class="form-select" aria-label="Default select example">
<option selected>Sélectionnez votre catégorie</option>
<option value="?"><?= $category['category_name']; ?></option>
</select>
</div>
<?php } ?>
<!-- Choisir un titre -->
<div class="card-header bg-dark text-white mb-4">
<input type="text" class="form-control" name="title" placeholder="Titre de votre topic">
</div>
<!-- Ecrire le contenu -->
<div class="card">
<div class="card-body">
<textarea type="text" class="form-control" name="content" placeholder="Contenu de votre topic"></textarea>
</div>
</div>
</div>
<!-- Valider -->
<button type="submit" class="btn btn-primary" name="validate">Publier</button>
<a href="index.php" class="btn btn-secondary">Retour</a>
</form>
</body>
</html>[/PHP]