2 pièce(s) jointe(s)
Insertion value BDD sur balise select [dropdown menu]
Bonjour à tous,
Par avance, je préfère m'excuser si ma question est idiote mais l'apprentissage en autodidacte peu avoir ces failles.
Mon problème est le suivi, je souhaite injecter ma liste déroulante d'un résultat récupéré de ma BDD ( en l'occurrence le résultat est "Clos margaux").
Le problème est que si je liste des valeurs en "dur" dans la balise option, tout se passe bien et chaque résultat est visible dans ma liste déroulante.. Par contre, quand j'interroge ma BDD pour rajouter une value, tout le résultat se mets à côté et je ne l'explique pas...
Voici le code html/php (ci-joint):
Code:
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 76 77 78 79 80 81 82 83 84
| <!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Star Rating Form | CodingNepal</title>
<link rel="stylesheet" href="notes.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" />
<link href="https://emoji-css.afeld.me/emoji.css" rel="stylesheet">
</head>
<body>
<div class="container">
<div class="post">
<div class="text">Thanks for rating us!</div>
<div class="edit">EDIT</div>
</div>
<div class="star-widget">
<input type="radio" name="rate" id="rate-5">
<label for="rate-5" class="fas fa-star"></label>
<input type="radio" name="rate" id="rate-4">
<label for="rate-4" class="fas fa-star"></label>
<input type="radio" name="rate" id="rate-3">
<label for="rate-3" class="fas fa-star"></label>
<input type="radio" name="rate" id="rate-2">
<label for="rate-2" class="fas fa-star"></label>
<input type="radio" name="rate" id="rate-1">
<label for="rate-1" class="fas fa-star"></label>
<form action="#">
<header></header>
<div class="textarea">
<textarea cols="30" placeholder="Qu'as-tu pensé de ce restaurant.."></textarea>
</div>
<div class="formulaire">
<label for="lang">Restaurant</label>
<select name="languages" id="lang">
<?php
$bdd = new PDO('mysql:host=localhost;dbname=restaurant', 'root', '');
$sql = "SELECT libelle FROM restaurant";
$stmt = $bdd->prepare($sql);
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
if ($stmt->rowCount() > 0) { ?>
<select name="fileselect">
<?php foreach ($results as $row) { ?>
<option value="<?php echo $row['libelle']; ?>"><?php echo $row['libelle']; ?></option>
<?php } ?>
<?php } ?>
<option value="php">PHP</option>
<option value="java">Java</option>
<option value="golang">Golang</option>
<option value="python">Python</option>
<option value="c#">C#</option>
<option value="C++">C++</option>
<option value="erlang">Erlang</option>
</select>
<input type="submit" value="Submit" />
</div>
<div class="btn">
<button type="submit">Post</button>
</div>
</form>
</div>
</div>
<script>
const btn = document.querySelector("button");
const post = document.querySelector(".post");
const widget = document.querySelector(".star-widget");
const editBtn = document.querySelector(".edit");
btn.onclick = () => {
widget.style.display = "none";
post.style.display = "block";
editBtn.onclick = () => {
widget.style.display = "block";
post.style.display = "none";
}
return false;
}
</script>
</body>
</html> |
Le résultat :
Pièce jointe 638349
Alors que sans cet ajout donc en supprimant la partie PHP, tout est propre :
Pièce jointe 638348
En espérant avoir vos lumières :$
Br,
Problème d'insertion en base
Bonsoir à tous,
J'ai des difficultés à générer mon insert dans ma base phpmyadmin. J'ai essayé de rajouter des logs pour avoir des traces, fouiller les logs de wamp notamment sur le apache_error.log et passer mon php.ini en display_errors je ne comprends pas ce qui gêne...
Si vous avez une explication, voici la partie html :
Code:
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
| <!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Star Rating Form | CodingNepal</title>
<link rel="stylesheet" href="notes.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" />
<link href="https://emoji-css.afeld.me/emoji.css" rel="stylesheet">
</head>
<body>
<div class="container">
<div class="post">
<div class="text">Thanks for rating us!</div>
<div class="edit">EDIT</div>
</div>
<div class="star-widget">
<input type="radio" name="rate" id="rate-5">
<label for="rate-5" class="fas fa-star"></label>
<input type="radio" name="rate" id="rate-4">
<label for="rate-4" class="fas fa-star"></label>
<input type="radio" name="rate" id="rate-3">
<label for="rate-3" class="fas fa-star"></label>
<input type="radio" name="rate" id="rate-2">
<label for="rate-2" class="fas fa-star"></label>
<input type="radio" name="rate" id="rate-1">
<label for="rate-1" class="fas fa-star"></label>
<form method="post" action="insert_comment.php">
<header></header>
<div class="textarea">
<textarea cols="30" name="Commentaire" placeholder="Qu'as-tu pensé de ce restaurant.."></textarea>
</div>
<div class="formulaire">
<label for="lang">Restaurant</label>
<select name="restaurant" id="lang">
<?php
$bdd = new PDO('mysql:host=localhost;dbname=restaurant', 'root', '');
$sql = "SELECT RestaurantID, libelle FROM restaurant ORDER BY libelle";
$stmt = $bdd->prepare($sql);
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($results as $row) {
$id = $row['RestaurantID'];
$libelle = htmlspecialchars($row['libelle']);
echo "<option value='$id'>$libelle</option>";
}
?>
</select>
</div>
<div class="btn">
<button type="submit" name="post">Post</button>
</div>
</form>
</div>
</div>
<script>
const btn = document.querySelector("button");
const post = document.querySelector(".post");
const widget = document.querySelector(".star-widget");
const editBtn = document.querySelector(".edit");
btn.onclick = () => {
widget.style.display = "none";
post.style.display = "block";
editBtn.onclick = () => {
widget.style.display = "block";
post.style.display = "none";
}
return false;
}
</script>
</body>
</html> |
La partie PHP ( insert_comment.php )
Code:
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
| <?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
function insert_comment($commentaire, $restaurantID) {
try {
$bdd = new PDO('mysql:host=localhost;dbname=restaurant', 'root', '');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO comment (RestaurantID, Commentaire) VALUES (:RestaurantID, :Commentaire)";
$stmt = $bdd->prepare($sql);
$stmt->execute(array(':RestaurantID' => $restaurantID, ':Commentaire' => $commentaire));
return true;
} catch (PDOException $e) {
// Log l'exception dans un fichier de journal
error_log('Error: ' . $e->getMessage() . ' - Could not save comment to database MDEP', 0);
return false;
}
}
if (isset($_POST['post'])) {
$commentaire = $_POST['Commentaire'];
$restaurantID = $_POST['restaurant'];
if (insert_comment($commentaire, $restaurantID)) {
echo "Commentaire enregistré avec succès !";
} else {
echo "Erreur lors de l'enregistrement du commentaire.";
}
}
?> |
Si vous avez des idées....