Création forum
kmorel
Messages postés
15
Statut
Membre
-
jordane45 Messages postés 40050 Statut Modérateur -
jordane45 Messages postés 40050 Statut Modérateur -
Bonjour cher amis. je suis un programmeur débutant qui essaie de créer un forum pour son site. j'en suis a la page ou on doit insérer une réponse au sujet proposé. j'ai une erreur dans le code que je n'arrive pas à cerner.
Voici le code
Voici l'erreur que cela m'affiche: Parse error: syntax error, unexpected end of file in /home/cp1022993/public_html/forum/lire_sujet.php on line 113.
Merci d'avance pour votre aide.
Voici le code
<?php session_start();?>
<?php
// on teste si le formulaire a été soumis
if (isset ($_POST['go']) && $_POST['go']=='Poster') {
// on teste la déclaration de nos variables
if (!isset($_POST['auteur']) || !isset($_POST['titre']) || !isset($_POST['message'])) {
$erreur = 'Les variables nécessaires au script ne sont pas définies.';
}
else {
// on teste si les variables ne sont pas vides
if (empty($_POST['auteur']) || empty($_POST['titre']) || empty($_POST['message'])) {
$erreur = 'Au moins un des champs est vide.';
}
// si tout est bon, on peut commencer l'insertion dans la base
else {
// on se connecte à notre base
error_reporting(E_ALL); ini_set('display_errors', TRUE);ini_set('display_startup_errors', TRUE);
try{
$bdd =new PDO('mysql:host=localhost;
dbname=cp1022993_reveil; charset=utf8', 'cp1022993_momo', 'ultimatum2018');
// Activation des erreurs PDO
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
$bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
die('Erreur : ' . $e->getMessage());}
// on calcule la date actuelle
$date = date("Y-m-d H:i:s");
if (!isset($_GET['id_sujet_a_lire'])) {
echo 'Sujet non défini.';}
else{
// préparation de la requête d'insertion (pour la table forum_rep)
$sql = 'INSERT INTO forum_rep (forum_rep_id, forum_rep_auteur, message , date_rep) VALUES(:forum_rep__id, :forum_rep_auteur, :message, :date_rep)';
$datas= array (':forum_rep__id'=> $_GET['id_sujet_a_lire'] ,
':forum_rep_auteur'=> $_POST['auteur'],
':message'=> $_POST['message'],
':date_rep'=>$date);
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
try{ $req = $bdd->prepare($sql);
$req->execute($datas);} catch (Exception $e) {echo "<br>ERREUR dans la requête ! " . $sql ."<br>" .$e->getMessage();}
// on redirige vers la page d'accueil
header('Location: lire_sujet.php');
// on termine le script courant
exit ;?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></sxript><! [endif]-->
<link rel="stylesheet" href=".css"/>
<title>Lecture d'un sujet</title>
</head>
<body>
<?php
// on prépare notre requête
$sql = 'SELECT * FROM forum_sujets WHERE sujet_id=:sujet_id';
$datas=array(
':sujet_id'=>$_GET['id_sujet_a_lire']);
sscanf($datas['date_derniere_reponse'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);
try{
$req = $bdd->prepare($sql);
$req->execute($datas);}catch(Exception $e)
{echo "<br>ERREUR dans la requête ! " . $sql ."<br>" .$e->getMessage();}
$resultat = $req->fetch(PDO::FETCH_ASSOC);
$sql = 'SELECT * FROM forum_rep WHERE forum_rep__id=:forum_rep_id';
$resultat=array(
':forum_rep__id'=>$_GET['id_sujet_a_lire']);
sscanf($resultat['date_rep'], "%4s-%2s-%2s %2s:%2s:%2s", $an, $moi, $jou, $heur, $min, $sec);
echo '<section class="auteur">
<span class="auteur">' .htmlspecialchars($datas['sujet_auteur']).'<br>
<span class)"date">'.$jour. '-' .$mois. '-' .$annee. ' ' .$heure. ':' .$minute.'<span>';
'<span class="message">' .htmlspecialchars($datas['sujet_messages']).'<span><section>';
while($resultat = $req->fetch());
echo '<section class="rep">
<span class="rep">' .htmlspecialchars($resultat['forum_rep_auteur']).'<br>
<span class)"date">'.$jou. '-' .$moi. '-' .$an. ' ' .$heur. ':' .$min.'<span>';
'<span class="message">' .htmlspecialchars($resultat['message']).'<span></section>.';
echo
'<h2>Insérer une Réponse</h2>
<form action="insert_rep.php" method="post">
<table>
<tr><td>
Auteur :
</td><td>
<input type="text" name="auteur" maxlength="30" size="50" value="<?php echo' .htmlspecialchars($_SESSION['nom']). ' '.htmlspecialchars($_SESSION['prenom']). ';?>">
</td></tr><tr><td>
Message :
</td><td>
<textarea name="message" cols="50" rows="10"><?php if (isset('.$_POST['message'].')) echo' .htmlentities(trim($_POST['message'])).';?></textarea>
</td></tr><tr><td><td align="right">
<input type="submit" name="go" value="Répondre">
</td></tr></table>
</form>';?>
</body>
</html>
Voici l'erreur que cela m'affiche: Parse error: syntax error, unexpected end of file in /home/cp1022993/public_html/forum/lire_sujet.php on line 113.
Merci d'avance pour votre aide.
A voir également:
- Création forum
- Creation compte gmail - Guide
- Création site web - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
- Création compte google - Guide
- Code iptv 2024 forum ✓ - Forum TNT / Satellite / Réception
1 réponse
Bonjour,
Plusieurs erreurs....
Une accolade oubliée,
Des instructions php
Sans parler du code php placé au hasard dans ton code...
Essaye ceci (et inspire t'en pour tes prochains codes...)
Plusieurs erreurs....
Une accolade oubliée,
Des instructions php
<?php....; ?>alors que tu te trouves déjà dans un bloc de code php...
Sans parler du code php placé au hasard dans ton code...
Essaye ceci (et inspire t'en pour tes prochains codes...)
<?php session_start();
//-------------------------------------------------------------------//
//Affichage des erreurs PHP (se place AU DEBUT du code)
//-------------------------------------------------------------------//
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
//-------------------------------------------------------------------//
//connexion à la bdd
//-------------------------------------------------------------------//
try{
$bdd =new PDO('mysql:host=localhost;dbname=cp1022993_reveil; charset=utf8', 'cp1022993_momo', 'ultimatum2018');
// Activation des erreurs PDO
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
$bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
die('Erreur : ' . $e->getMessage());
}
//-------------------------------------------------------------------//
//recuperation PROPRE des variables AVANT de les utiliser
//-------------------------------------------------------------------//
$nom = !empty($_SESSION['nom']) ? $_SESSION['nom'] : "";
$prenom = !empty($_SESSION['prenom']) ? $_SESSION['prenom'] : "";
$auteur = !empty($_POST['auteur']) ? $_POST['auteur'] : NULL;
$titre = !empty($_POST['titre']) ? $_POST['titre'] : NULL;
$message = !empty($_POST['message']) ? $_POST['message'] : NULL;
$go = !empty($_POST['go']) ? $_POST['go'] : NULL;
$id_sujet_a_lire = !empty($_GET['id_sujet_a_lire']) ? $_GET['id_sujet_a_lire'] : NULL;
// on calcule la date actuelle
$date = date("Y-m-d H:i:s");
//-------------------------------------------------------------------//
// Début du traitement du formulaire
//-------------------------------------------------------------------//
if ($go =='Poster') {
// on teste la déclaration de nos variables
if (!$auteur || !$titre || !$message) {
$erreur = 'Au moins un des champs est vide.';
}
} else {
if (!$id_sujet_a_lire) {
echo 'Sujet non défini.';
} else {
// préparation de la requête d'insertion (pour la table forum_rep)
$sql = 'INSERT INTO forum_rep (forum_rep_id, forum_rep_auteur, message , date_rep) VALUES(:forum_rep__id, :forum_rep_auteur, :message, :date_rep)';
$datas= array (':forum_rep__id'=> $id_sujet_a_lire,
':forum_rep_auteur'=> $auteur,
':message'=> $message,
':date_rep'=>$date
);
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
try{
$req = $bdd->prepare($sql);
$req->execute($datas);
} catch (Exception $e) {
echo "<br>ERREUR dans la requête ! " . $sql ."<br>" .$e->getMessage();
exit(); // sinon tu ne verras jamais l'erreur avant la redirection !
}
// on redirige vers la page d'accueil
header('Location: lire_sujet.php');
// on termine le script courant
exit();
}
//-------------------------------------------------------------------//
//récupération des sujets
//-------------------------------------------------------------------//
$sql = 'SELECT *
FROM forum_sujets
WHERE sujet_id=:sujet_id';
$datas = array(':sujet_id'=>$id_sujet_a_lire);
try{
$req = $bdd->prepare($sql);
$req->execute($datas);
$sujets = $req->fetchAll(PDO::FETCH_ASSOC);
}catch(Exception $e){
echo "<br>ERREUR dans la requête ! " . $sql ."<br>" .$e->getMessage();
}
//-------------------------------------------------------------------//
//récupération des répponses
//-------------------------------------------------------------------//
$sql = 'SELECT *
FROM forum_rep
WHERE forum_rep__id=:forum_rep_id';
$resultat=array(':forum_rep__id'=>$id_sujet_a_lire);
try{
$req = $bdd->prepare($sql);
$req->execute($datas);
$reponses = $req->fetchAll(PDO::FETCH_ASSOC);
}catch(Exception $e){
echo "<br>ERREUR dans la requête ! " . $sql ."<br>" .$e->getMessage();
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></sxript><! [endif]-->
<link rel="stylesheet" href=".css"/>
<title>Lecture d'un sujet</title>
</head>
<body>
<div class="forum-item">
<?php
sscanf($sujets['date_derniere_reponse'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);
echo '<section class="auteur">
<span class="auteur">' .htmlspecialchars($sujet['sujet_auteur']).'<br>
<span class)"date">'.$jour. '-' .$mois. '-' .$annee. ' ' .$heure. ':' .$minute.'<span>';
'<span class="message">' .htmlspecialchars($sujet['sujet_messages']).'<span><section>';
//on boucle sur les réponses au sujet :
foreach($reponses as $rep){
sscanf($reponse['date_rep'], "%4s-%2s-%2s %2s:%2s:%2s", $an, $moi, $jou, $heur, $min, $sec);
echo '<section class="rep">
<span class="rep">' .htmlspecialchars($rep['forum_rep_auteur']).'<br>
<span class)"date">'.$jou. '-' .$moi. '-' .$an. ' ' .$heur. ':' .$min.'<span>';
'<span class="message">' .htmlspecialchars($rep['message']).'<span></section>.';
}
echo '<h2>Insérer une Réponse</h2>
<form action="insert_rep.php" method="post">
<table>
<tr>
<td>Auteur :</td>
<td><input type="text" name="auteur" maxlength="30" size="50" value="'.htmlspecialchars($nom). ' '.htmlspecialchars($prenom). '"></td>
</tr>
<tr>
<td>Message :</td>
<td>
<textarea name="message" cols="50" rows="10">';
if ($message){
echo htmlentities(trim($message));
}
echo'</textarea>
</td>
</tr>
<tr>
<td><td align="right"><input type="submit" name="go" value="Répondre"></td>
</tr>
</table>
</form>';
?>
</div>
</body>
</html>
Que dos je faire?
J'ai écrit le code de tête... il se peut qu'il y ait d'autres coquilles
<?php session_start(); //-------------------------------------------------------------------// //Affichage des erreurs PHP (se place AU DEBUT du code) //-------------------------------------------------------------------// error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //-------------------------------------------------------------------// //connexion à la bdd //-------------------------------------------------------------------// try{ $bdd =new PDO('mysql:host=localhost;dbname=cp1022993_reveil; charset=utf8', 'cp1022993_momo', 'ultimatum2018'); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } //-------------------------------------------------------------------// //recuperation PROPRE des variables AVANT de les utiliser //-------------------------------------------------------------------// $nom = !empty($_SESSION['nom']) ? $_SESSION['nom'] : ""; $prenom = !empty($_SESSION['prenom']) ? $_SESSION['prenom'] : ""; $auteur = !empty($_POST['auteur']) ? $_POST['auteur'] : NULL; $titre = !empty($_POST['titre']) ? $_POST['titre'] : NULL; $message = !empty($_POST['message']) ? $_POST['message'] : NULL; $go = !empty($_POST['go']) ? $_POST['go'] : NULL; $id_sujet_a_lire = !empty($_GET['id_sujet_a_lire']) ? $_GET['id_sujet_a_lire'] : NULL; // on calcule la date actuelle $date = date("Y-m-d H:i:s"); //-------------------------------------------------------------------// // Début du traitement du formulaire //-------------------------------------------------------------------// if ($go =='Poster') { // on teste la déclaration de nos variables if (!$auteur || !$titre || !$message) { $erreur = 'Au moins un des champs est vide.'; } } else { if (!$id_sujet_a_lire) { echo 'Sujet non défini.'; } else { // préparation de la requête d'insertion (pour la table forum_rep) $sql = 'INSERT INTO forum_rep (forum_rep_id, forum_rep_auteur, message , date_rep) VALUES(:forum_rep__id, :forum_rep_auteur, :message, :date_rep)'; $datas= array (':forum_rep__id'=> $id_sujet_a_lire, ':forum_rep_auteur'=> $auteur, ':message'=> $message, ':date_rep'=>$date ); // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die) try{ $req = $bdd->prepare($sql); $req->execute($datas); } catch (Exception $e) { echo "<br>ERREUR dans la requête ! " . $sql ."<br>" .$e->getMessage(); exit(); // sinon tu ne verras jamais l'erreur avant la redirection ! } // on redirige vers la page d'accueil header('Location: lire_sujet.php'); // on termine le script courant exit(); } } //-------------------------------------------------------------------// //récupération des sujets //-------------------------------------------------------------------// $sql = 'SELECT * FROM forum_sujets WHERE sujet_id=:sujet_id'; $datas = array(':sujet_id'=>$id_sujet_a_lire); try{ $req = $bdd->prepare($sql); $req->execute($datas); $sujets = $req->fetchAll(PDO::FETCH_ASSOC); }catch(Exception $e){ echo "<br>ERREUR dans la requête ! " . $sql ."<br>" .$e->getMessage(); } //-------------------------------------------------------------------// //récupération des répponses //-------------------------------------------------------------------// $sql = 'SELECT * FROM forum_rep WHERE forum_rep__id=:forum_rep_id'; $resultat=array(':forum_rep__id'=>$id_sujet_a_lire); try{ $req = $bdd->prepare($sql); $req->execute($datas); $reponses = $req->fetchAll(PDO::FETCH_ASSOC); }catch(Exception $e){ echo "<br>ERREUR dans la requête ! " . $sql ."<br>" .$e->getMessage(); } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <!--[if lt IE 9]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></sxript><! [endif]--> <link rel="stylesheet" href=".css"/> <title>Lecture d'un sujet</title> </head> <body> <div class="forum-item"> <?php sscanf($sujets['date_derniere_reponse'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde); echo '<section class="auteur"> <span class="auteur">' .htmlspecialchars($sujet['sujet_auteur']).'<br> <span class)"date">'.$jour. '-' .$mois. '-' .$annee. ' ' .$heure. ':' .$minute.'<span>'; '<span class="message">' .htmlspecialchars($sujet['sujet_messages']).'<span><section>'; //on boucle sur les réponses au sujet : foreach($reponses as $rep){ sscanf($reponse['date_rep'], "%4s-%2s-%2s %2s:%2s:%2s", $an, $moi, $jou, $heur, $min, $sec); echo '<section class="rep"> <span class="rep">' .htmlspecialchars($rep['forum_rep_auteur']).'<br> <span class)"date">'.$jou. '-' .$moi. '-' .$an. ' ' .$heur. ':' .$min.'<span>'; '<span class="message">' .htmlspecialchars($rep['message']).'<span></section>.'; } echo '<h2>Insérer une Réponse</h2> <form action="insert_rep.php" method="post"> <table> <tr> <td>Auteur :</td> <td><input type="text" name="auteur" maxlength="30" size="50" value="'.htmlspecialchars($nom). ' '.htmlspecialchars($prenom). '"></td> </tr> <tr> <td>Message :</td> <td> <textarea name="message" cols="50" rows="10">'; if ($message){ echo htmlentities(trim($message)); } echo'</textarea> </td> </tr> <tr> <td><td align="right"><input type="submit" name="go" value="Répondre"></td> </tr> </table> </form>'; ?> </div> </body> </html>