Ajouter des commentaires sur une meme page php ?

[Résolu/Fermé]
Signaler
Messages postés
318
Date d'inscription
lundi 28 juillet 2014
Statut
Membre
Dernière intervention
4 juin 2015
-
Messages postés
318
Date d'inscription
lundi 28 juillet 2014
Statut
Membre
Dernière intervention
4 juin 2015
-
bonjours a tous
j'ai fait une page qui propose des produits, elle se conecte a une base de donnée et suivant l'id elle affiche le produit voulu mais aussi elle montre les commentaires postés a propos du produit
voila mon code source
<?php
if (!isset($_GET['id']))
{
$_GET['id']=1;
}
 try
{
$bdd = new PDO('mysql:host=localhost;dbname=aroma', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$reponse = $bdd->query('SELECT nom FROM patis WHERE id=\'' . $_GET['id'] . '\'');
$point=0;
$id = $_GET['id'];
while ($donnees = $reponse->fetch())
{

$nom = $donnees['nom'];

}

$reponse->closeCursor();

?>
 <title><?php echo $nom; ?> fiche AROMA</title> 
 
 </head>
<body>
<header>
<?php include("tete.php"); ?>
</header>


<section>
<?php include("menu.php"); ?>
<article>
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=aroma', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$id = $_GET['id'];
$reponse = $bdd->query('SELECT * FROM patis WHERE id=\'' . $_GET['id'] . '\'');
$point=0;

while ($donnees = $reponse->fetch())
{
if (!empty($donnees['description']))
{
$desc = $donnees['description'];
}
else
{
$desc = 'pas de description';
}
echo "<h3>Nom : " . $donnees['nom'] . "</h3>";
echo "<p>Date d'ajout : " . $donnees['date'] . "</p>";
echo "<p><img src='" . $donnees['url'] . "' title='" . $donnees['nom'] . "'  /></p>";
echo "<p>Description : " . $desc . "</p>";
$point=$point+1;
}
if ($point == 0)
{
echo "<p>Aucune patisserie n'a été séléctionnée</p>";

}

$reponse->closeCursor();

?>

<h4>Les derniers commentaires :</h4>
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=aroma', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$reponse = $bdd->query('SELECT * FROM comment WHERE value=\'true\' AND id_patis=\'' . $_GET['id'] . '\' ORDER BY ID DESC');
$point=0;

while ($donnees = $reponse->fetch())
{
echo '<p id="voir"><strong>' . htmlspecialchars($donnees['nom']) . '</strong> <br/>' . htmlspecialchars($donnees['date']) . '<br/> commentaire : ' . nl2br(htmlspecialchars($donnees['message'])) . '<br/> </p>';
$point=$point+1;
}
if ($point == 0)
{
echo "<p>Aucun commentaire n'est posté, soyez le premier a vous exprimer...</p>";

}

$reponse->closeCursor();

?>

<h4>Poster un commentaire :</h4>
<form method="post" action="fichetechsub.php?id=<?php echo $id; ?>"> 
<label for="nom" >Votre nom : </label><br/>
<input type="text" name="nom" required><br/>
<label for="mail" >Votre mail : </label><br/>
<input type="mail" name="mail" required><br/>
<label style="vertical-align: top;">Votre commentaire : </label><br/>
<textarea rows="10" cols="50" name="message"></textarea><br/>

<input type="submit" value="Envoyer">
</form> 
</div> 

et voila la page qui sert a enregistrer les nouveaux commentaires

<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=aroma', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}

$req = $bdd->prepare('INSERT INTO comment (id_patis, nom, mail, date, message, value) VALUES(?, ?, ?, now(), ?, ?)');
$req->execute(array(htmlspecialchars($_GET['id']), htmlspecialchars($_POST['nom']), htmlspecialchars($_POST['mail']), htmlspecialchars($_POST['message']), 'false'));

header("Location: fichetech.php?id=?????");






?>

déja mon probleme c'est le "header ("location : fichetech.php?id...")" je voudrais mettre une variable dans le id pour qu'il me redirect a la page d'avant
et aussi je souhaiterais apprendre a ne faire qu'une seule page, est ce possible ? je voudrais eviter les deux page et la redirection
merci

3 réponses

Messages postés
1189
Date d'inscription
dimanche 7 octobre 2007
Statut
Membre
Dernière intervention
12 juin 2020
430
Attttttention aux injections SQL !
Ce genre de ligne sont très dangereuses !

$reponse = $bdd->query('SELECT * FROM patis WHERE id=\'' . $_GET['id'] . '\'');
Messages postés
597
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
3 février 2020
85
Pour le header, si l'id en get c'est celui de la page, ça ne pose pas de problème de faire une concaténation :
header("Location: fichetech.php?id=".$_GET['id']);


Et sinon pour tout faire en une page t'es obligé de faire de l'ajax (puisque le formulaire du commentaire est côté client, et le traitement, donc le php, côté serveur).
Messages postés
318
Date d'inscription
lundi 28 juillet 2014
Statut
Membre
Dernière intervention
4 juin 2015
30
salut kopros
merci pour les indications je vais me mettre a aprendre le javascript et l'ajax
merci infiniment :)
Messages postés
597
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
3 février 2020
85
De rien !

Pour faire de l'ajax, ce sera + simple d'utiliser la bibliothèque jQuery.
Téléchargement : https://jquery.com/download/
Utilisation d'ajax : https://api.jquery.com/jQuery.ajax/

Faut bien comprendre le principe :
1) la fonction qui gère ajax est appelée par un événement
2) elle appelle un fichier php en lui passant des paramètres, par get ou post
3) le fichier php en question reçoit les paramètres par les super-globales ($_GET ou $_POST)
4) le php écrit un fichier (moi je le fais souvent en json, c'est très pratique) et le retourne à la fonction js qui l'a appelé
5) cette fonction traite le résultat (c'est là que le json est pratique) et fait les modifs nécessaires.
Messages postés
318
Date d'inscription
lundi 28 juillet 2014
Statut
Membre
Dernière intervention
4 juin 2015
30
ah ça c'est magnifique
vraiment merci bcp pour les etapes et tout :)
jvé telecharger la bib
Messages postés
318
Date d'inscription
lundi 28 juillet 2014
Statut
Membre
Dernière intervention
4 juin 2015
30
salut prosthetiks
oui merci pour le rappel
je devrais mettre de marquers nominatif (je pense que ça s'appel comme ça :p)
jvé réviser le script
merci infiniment