Ajouter des commentaires sur une meme page php ?

Résolu
Mouslim02 Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   -  
Mouslim02 Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

3 réponses

prosthetiks Messages postés 1189 Date d'inscription   Statut Membre Dernière intervention   431
 
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   Statut Membre Dernière intervention   89
 
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   Statut Membre Dernière intervention   11
 
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   Statut Membre Dernière intervention   89
 
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   Statut Membre Dernière intervention   11
 
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   Statut Membre Dernière intervention   11
 
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