laioss

Bonjour j'ai du mal avec mon code depuis des heures, j'ai sans aucun doute fait une erreur mais je ne la trouve pas... Mon code actuel ne me permet pas d'afficher les commentaires, ils sont bien présents dans la BDD en revanche! Voici mon code

pour post.php :

<?php

$post = get_post();
if($post == false){
header("Location:index.php?page=error");
}else{
?>

</div>

<div class="parallax-container">
<div class="parallax">
<img src="img/posts/<?= $post->image ?>" alt="<?= $post->title ?>"/>
</div>
</div>

<div class="container">

<h2><?= $post->title ?></h2>
<h6 class="text-grey darken-4">Par <?= $post->name ?> le <?= date("d/m/Y à H:i", strtotime($post->date)) ?></h6>
<p><?= nl2br($post->content); ?></p>

<?php
}

?>

<hr>
<h4>Commentaires :</h4>
<?php
$responses = get_comments;
foreach($responses as $response){
?>
<blockquote>
<strong><?= $response->name ?> (<?= date("d/m/Y", strtotime($response->date)) ?>) ronaldo</strong>
<p><?= nl2br($response->comment); ?></p>
</blockquote>
<?php
}
?>



<h4>Commenter :</h4>

<?php

if(isset($_POST['submit'])){
$name = htmlspecialchars(trim($_POST['name']));
$email = htmlspecialchars(trim($_POST['email']));
$comment = htmlspecialchars(trim($_POST['comment']));
$errors = [];

if(empty($name) || empty($email) || empty($comment)){
$errors['empty'] = "Tous les champs n'ont pas été remplis";
}else{
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
$errors["email"] = "L'adresse email n'est pas valide";
}
}

if(!empty($errors)){
?>
<div class="card red">
<div class="card-content white-text">
<?php
foreach($errors as $error){
echo $error."<br/>";
}
?>
</div>
</div>
<?php
}else{
comment($name,$email,$comment);
?>
<script>
window.location.replace("index.php?page=post&id=<?= $_GET['id'] ?>");
</script>
<?php
}
}

?>


<form method="post">
<div class="row">
<div class="input-field col s12 m6">
<input type="text" name="name" id="name"/>
<label for="name">Nom</label>
</div>
<div class="input-field col s12 m6">
<input type="email" name="email" id="email"/>
<label for="email">Adresse courriel</label>
</div>
<div class="input-field col s12">
<textarea name="comment" id="comment" class="materialize-textarea"></textarea>
<label for="comment">Votre commentaire</label>
</div>
<div class="col s12">
<button type="submit" name="submit" class="btn waves-effect">Commenter ce post</button>
</div>
</div>
</form>

pour post.func.php :

<?php

function get_post(){
global $db;

$req = $db->query("
SELECT posts.id,
posts.title,
posts.image,
posts.content,
posts.date,
admins.name
FROM posts
JOIN admins
ON posts.writer = admins.email
WHERE posts.id='{$_GET['id']}'
AND posts.posted = '1'

");

$result = $req->fetchObject();
return $result;
}

function comment($name,$email,$comment){

global $db;

$c = array(
'name' => $name,
'email' => $email,
'comment' => $comment,
'post_id' => $_GET['id']

);

$sql = "INSERT INTO comments(name,email,comment,post_id,date) VALUES(:name, :email, :comment, :post_id, NOW())";
$req = $db->prepare($sql);
$req->execute($c);
}

function get_comments(){

global $db;
$req = $db->query("SELECT * FROM comments WHERE post+id = '{$_GET['id']}' ORDER BY date DESC");
$results = [];
while($rows = $req->fetchObject()){
$results[] = $rows;
}

return $results;


}


Merci de votre coup de pouce.

Le 03/02/2016 à 21:35
laioss

Le "ronaldo" en plein milieu de la balise strong, c'était juste un test pour voir si je pouvais le voir... mais non! lol

Le 03/02/2016 à 21:50
Camille

Bonjour, je pense que cela viens du fait que quand tu appel la fonction get_comments tu ne met pas les parenthèses.
Donc il ne trouve pas ta fonction qui elle permet d'afficher les commentaires.

$responses = get_comments;
foreach($responses as $response){
?>

Essaye comme ceci :

$responses = get_comments();
foreach($responses as $response){
?>

Le 25/10/2016 à 16:00
Connectez-vous pour pouvoir répondre