Ajouter des commentaires sur une meme page php ?

Résolu/Fermé
Mouslim02 Messages postés 320 Date d'inscription lundi 28 juillet 2014 Statut Membre Dernière intervention 4 juin 2015 - 27 oct. 2014 à 21:50
Mouslim02 Messages postés 320 Date d'inscription lundi 28 juillet 2014 Statut Membre Dernière intervention 4 juin 2015 - 30 oct. 2014 à 16:10
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

prosthetiks Messages postés 1189 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 12 juin 2020 431
29 oct. 2014 à 00:30
Attttttention aux injections SQL !
Ce genre de ligne sont très dangereuses !

$reponse = $bdd->query('SELECT * FROM patis WHERE id=\'' . $_GET['id'] . '\'');
0
Kopros Messages postés 595 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 89
29 oct. 2014 à 16:21
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).
0
Mouslim02 Messages postés 320 Date d'inscription lundi 28 juillet 2014 Statut Membre Dernière intervention 4 juin 2015 11
29 oct. 2014 à 22:04
salut kopros
merci pour les indications je vais me mettre a aprendre le javascript et l'ajax
merci infiniment :)
0
Kopros Messages postés 595 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 89
30 oct. 2014 à 14:50
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.
0
Mouslim02 Messages postés 320 Date d'inscription lundi 28 juillet 2014 Statut Membre Dernière intervention 4 juin 2015 11
30 oct. 2014 à 16:10
ah ça c'est magnifique
vraiment merci bcp pour les etapes et tout :)
jvé telecharger la bib
0
Mouslim02 Messages postés 320 Date d'inscription lundi 28 juillet 2014 Statut Membre Dernière intervention 4 juin 2015 11
29 oct. 2014 à 22:03
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
0