bonjour je veux mettre un forum de discussion sur mon site j'ai toutes mes pages mais j'ai un problème de redirection lorsque je veux inserer un sujet ou repondre à un sujet. voici mes pages
l'index:
<html>
<head>
<title>Index de notre forum</title>
</head>
<body>
<!-- on place un lien permettant d'accéder à la page contenant le formulaire d'insertion d'un nouveau sujet -->
<a href="./insert_sujet.php">Insérer un sujet</a>
<br /><br />
<?php
// on se connecte à notre base de données
$base=mysql_connect ('localhost', 'root', '');
mysql_select_db ('forum',$base) ;
// préparation de la requete
$sql = 'SELECT id, auteur, titre, date_derniere_reponse FROM forum_sujets ORDER BY date_derniere_reponse DESC';
// 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)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on compte le nombre de sujets du forum
$nb_sujets = mysql_num_rows ($req);
if ($nb_sujets == 0) {
echo 'Aucun sujet';
}
else {
?>
<table width="500" border="1"><tr>
<td>
Auteur
</td><td>
Titre du sujet
</td><td>
Date dernière réponse
</td></tr>
<?php
// on va scanner tous les tuples un par un
while ($data = mysql_fetch_array($req)) {
// on décompose la date
sscanf($data['date_derniere_reponse'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);
// on affiche les résultats
echo '<tr>';
echo '<td>';
// on affiche le nom de l'auteur de sujet
echo htmlentities(trim($data['auteur']));
echo '</td><td>';
// on affiche le titre du sujet, et sur ce sujet, on insère le lien qui nous permettra de lire les différentes réponses de ce sujet
echo '<a href="./lire_sujet.php?id_sujet_a_lire=' , $data['id'] , '">' , htmlentities(trim($data['titre'])) , '</a>';
echo '</td><td>';
// on affiche la date de la dernière réponse de ce sujet
echo $jour , '-' , $mois , '-' , $annee , ' ' , $heure , ':' , $minute;
}
?>
</td></tr></table>
<?php
}
// on libère l'espace mémoire alloué pour cette requête
mysql_free_result ($req);
// on ferme la connexion à la base de données.
mysql_close ();
?>
</body>
</html>
la page insert_sujet.php
<?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
$base=mysql_connect ('localhost', 'root', '');
mysql_select_db ('forum',$base) ;
// on calcule la date actuelle
$date = date("Y-m-d H:i:s");
// préparation de la requête d'insertion (pour la table forum_sujets)
$sql = 'INSERT INTO forum_sujets VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['titre']).'", "'.$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)
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
// on recupère l'id qui vient de s'insérer dans la table forum_sujets
$id_sujet = mysql_insert_id();
// lancement de la requête d'insertion (pour la table forum_reponses
$sql = 'INSERT INTO forum_reponses VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['message']).'", "'.$date.'", "'.$id_sujet.'")';
// 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)
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
// on ferme la connexion à la base de données
mysql_close();
// on redirige vers la page d'accueil
header('Location: index.php');
// on termine le script courant
exit;
}
}
}
?>
<html>
<head>
<title>Insertion d'un nouveau sujet</title>
</head>
<body>
<!-- on fait pointer le formulaire vers la page traitant les données -->
<form action="insert_sujet.php" method="post">
<table>
<tr><td>
<span class="gras">Auteur :</span>
</td><td>
<input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
</td></tr><tr><td>
<span class="gras">Titre :</span>
</td><td>
<input type="text" name="titre" maxlength="50" size="50" value="<?php if (isset($_POST['titre'])) echo htmlentities(trim($_POST['titre'])); ?>">
</td></tr><tr><td>
<span class="gras">Message :</span>
</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="Poster">
</td></tr></table>
</form>
<?php
// on affiche les erreurs éventuelles
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</html>
la page lire_sujet.php
<html>
<head>
<title>Lecture d'un sujet</title>
</head>
<body>
<?php
if (!isset($_GET['id_sujet_a_lire'])) {
echo 'Sujet non défini.';
}
else {
?>
<table width="500" border="1"><tr>
<td>
Auteur
</td><td>
Messages
</td></tr>
<?php
// on se connecte à notre base de données
$base=mysql_connect ('localhost', 'root', '');
mysql_select_db ('forum',$base) ;
// on prépare notre requête
$sql = 'SELECT auteur, message, date_reponse FROM forum_reponses WHERE correspondance_sujet="'.$_GET['id_sujet_a_lire'].'" ORDER BY date_reponse ASC';
// 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)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on va scanner tous les tuples un par un
while ($data = mysql_fetch_array($req)) {
// on décompose la date
sscanf($data['date_reponse'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);
// on affiche les résultats
echo '<tr>';
echo '<td>';
// on affiche le nom de l'auteur de sujet ainsi que la date de la réponse
echo htmlentities(trim($data['auteur']));
echo '<br />';
echo $jour , '-' , $mois , '-' , $annee , ' ' , $heure , ':' , $minute;
echo '</td><td>';
// on affiche le message
echo nl2br(htmlentities(trim($data['message'])));
echo '</td></tr>';
}
// on libère l'espace mémoire alloué pour cette reqête
mysql_free_result ($req);
// on ferme la connection à la base de données.
mysql_close ();
?>
<!-- on ferme notre table html -->
</table>
<br /><br />
<!-- on insère un lien qui nous permettra de rajouter des réponses à ce sujet -->
<a href="./insert_reponse.php?numero_du_sujet=<?php echo $_GET['id_sujet_a_lire']; ?>">Répondre</a>
<?php
}
?>
<br /><br />
<!-- on insère un lien qui nous permettra de retourner à l'accueil du forum -->
<a href="./index.php">Retour à l'accueil</a>
</body>
</html>
la page insert_reponse.php
<?php
// on teste si le formulaire a été soumis
if (isset ($_POST['go']) && $_POST['go']=='Poster') {
// on teste le contenu de la variable $auteur
if (!isset($_POST['auteur']) || !isset($_POST['message']) || !isset($_GET['numero_du_sujet'])) {
$erreur = 'Les variables nécessaires au script ne sont pas définies.';
}
else {
if (empty($_POST['auteur']) || empty($_POST['message']) || empty($_GET['numero_du_sujet'])) {
$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 de données
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('forum', $base) ;
// on recupere la date de l'instant présent
$date = date("Y-m-d H:i:s");
// préparation de la requête d'insertion (table forum_reponses)
$sql = 'INSERT INTO forum_reponses VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['message']).'", "'.$date.'", "'.$_GET['numero_du_sujet'].'")';
// 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)
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
// préparation de la requête de modification de la date de la dernière réponse postée (dans la table forum_sujets)
$sql = 'UPDATE forum_sujets SET date_derniere_reponse="'.$date.'" WHERE id="'.$_GET['numero_du_sujet'].'"';
// 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)
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
// on ferme la connexion à la base de données
mysql_close();
// on redirige vers la page de lecture du sujet en cours
header('Location: lire_sujet.php?id_sujet_a_lire='.$_GET['numero_du_sujet']);
// on termine le script courant
exit;
}
}
}
?>
<html>
<head>
<title>Insertion d'une nouvelle réponse</title>
</head>
<body>
<!-- on fait pointer le formulaire vers la page traitant les données -->
<form action="insert_reponse.php?numero_du_sujet=<?php echo $_GET['numero_du_sujet']; ?>" method="post">
<table>
<tr><td>
<span class="gras">Auteur :</span>
</td><td>
<input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
</td></tr><tr><td>
<span class="gras">Message :</span>
</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="Poster">
</td></tr></table>
</form>
<?php
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</html>
voici le message que j'ai lorsque j'insert un sujet:
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\ange\pages\forum\insert_sujet.php:2) in c:\program files\easyphp1-8\www\ange\pages\forum\insert_sujet.php on line 42
voci le message que j'ai lorsque j'insert une reponse:
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\ange\pages\forum\insert_reponse.php:1) in c:\program files\easyphp1-8\www\ange\pages\forum\insert_reponse.php on line 37
merci d'avance pour votre aide à bientot
l'index:
<html>
<head>
<title>Index de notre forum</title>
</head>
<body>
<!-- on place un lien permettant d'accéder à la page contenant le formulaire d'insertion d'un nouveau sujet -->
<a href="./insert_sujet.php">Insérer un sujet</a>
<br /><br />
<?php
// on se connecte à notre base de données
$base=mysql_connect ('localhost', 'root', '');
mysql_select_db ('forum',$base) ;
// préparation de la requete
$sql = 'SELECT id, auteur, titre, date_derniere_reponse FROM forum_sujets ORDER BY date_derniere_reponse DESC';
// 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)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on compte le nombre de sujets du forum
$nb_sujets = mysql_num_rows ($req);
if ($nb_sujets == 0) {
echo 'Aucun sujet';
}
else {
?>
<table width="500" border="1"><tr>
<td>
Auteur
</td><td>
Titre du sujet
</td><td>
Date dernière réponse
</td></tr>
<?php
// on va scanner tous les tuples un par un
while ($data = mysql_fetch_array($req)) {
// on décompose la date
sscanf($data['date_derniere_reponse'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);
// on affiche les résultats
echo '<tr>';
echo '<td>';
// on affiche le nom de l'auteur de sujet
echo htmlentities(trim($data['auteur']));
echo '</td><td>';
// on affiche le titre du sujet, et sur ce sujet, on insère le lien qui nous permettra de lire les différentes réponses de ce sujet
echo '<a href="./lire_sujet.php?id_sujet_a_lire=' , $data['id'] , '">' , htmlentities(trim($data['titre'])) , '</a>';
echo '</td><td>';
// on affiche la date de la dernière réponse de ce sujet
echo $jour , '-' , $mois , '-' , $annee , ' ' , $heure , ':' , $minute;
}
?>
</td></tr></table>
<?php
}
// on libère l'espace mémoire alloué pour cette requête
mysql_free_result ($req);
// on ferme la connexion à la base de données.
mysql_close ();
?>
</body>
</html>
la page insert_sujet.php
<?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
$base=mysql_connect ('localhost', 'root', '');
mysql_select_db ('forum',$base) ;
// on calcule la date actuelle
$date = date("Y-m-d H:i:s");
// préparation de la requête d'insertion (pour la table forum_sujets)
$sql = 'INSERT INTO forum_sujets VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['titre']).'", "'.$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)
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
// on recupère l'id qui vient de s'insérer dans la table forum_sujets
$id_sujet = mysql_insert_id();
// lancement de la requête d'insertion (pour la table forum_reponses
$sql = 'INSERT INTO forum_reponses VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['message']).'", "'.$date.'", "'.$id_sujet.'")';
// 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)
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
// on ferme la connexion à la base de données
mysql_close();
// on redirige vers la page d'accueil
header('Location: index.php');
// on termine le script courant
exit;
}
}
}
?>
<html>
<head>
<title>Insertion d'un nouveau sujet</title>
</head>
<body>
<!-- on fait pointer le formulaire vers la page traitant les données -->
<form action="insert_sujet.php" method="post">
<table>
<tr><td>
<span class="gras">Auteur :</span>
</td><td>
<input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
</td></tr><tr><td>
<span class="gras">Titre :</span>
</td><td>
<input type="text" name="titre" maxlength="50" size="50" value="<?php if (isset($_POST['titre'])) echo htmlentities(trim($_POST['titre'])); ?>">
</td></tr><tr><td>
<span class="gras">Message :</span>
</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="Poster">
</td></tr></table>
</form>
<?php
// on affiche les erreurs éventuelles
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</html>
la page lire_sujet.php
<html>
<head>
<title>Lecture d'un sujet</title>
</head>
<body>
<?php
if (!isset($_GET['id_sujet_a_lire'])) {
echo 'Sujet non défini.';
}
else {
?>
<table width="500" border="1"><tr>
<td>
Auteur
</td><td>
Messages
</td></tr>
<?php
// on se connecte à notre base de données
$base=mysql_connect ('localhost', 'root', '');
mysql_select_db ('forum',$base) ;
// on prépare notre requête
$sql = 'SELECT auteur, message, date_reponse FROM forum_reponses WHERE correspondance_sujet="'.$_GET['id_sujet_a_lire'].'" ORDER BY date_reponse ASC';
// 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)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on va scanner tous les tuples un par un
while ($data = mysql_fetch_array($req)) {
// on décompose la date
sscanf($data['date_reponse'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);
// on affiche les résultats
echo '<tr>';
echo '<td>';
// on affiche le nom de l'auteur de sujet ainsi que la date de la réponse
echo htmlentities(trim($data['auteur']));
echo '<br />';
echo $jour , '-' , $mois , '-' , $annee , ' ' , $heure , ':' , $minute;
echo '</td><td>';
// on affiche le message
echo nl2br(htmlentities(trim($data['message'])));
echo '</td></tr>';
}
// on libère l'espace mémoire alloué pour cette reqête
mysql_free_result ($req);
// on ferme la connection à la base de données.
mysql_close ();
?>
<!-- on ferme notre table html -->
</table>
<br /><br />
<!-- on insère un lien qui nous permettra de rajouter des réponses à ce sujet -->
<a href="./insert_reponse.php?numero_du_sujet=<?php echo $_GET['id_sujet_a_lire']; ?>">Répondre</a>
<?php
}
?>
<br /><br />
<!-- on insère un lien qui nous permettra de retourner à l'accueil du forum -->
<a href="./index.php">Retour à l'accueil</a>
</body>
</html>
la page insert_reponse.php
<?php
// on teste si le formulaire a été soumis
if (isset ($_POST['go']) && $_POST['go']=='Poster') {
// on teste le contenu de la variable $auteur
if (!isset($_POST['auteur']) || !isset($_POST['message']) || !isset($_GET['numero_du_sujet'])) {
$erreur = 'Les variables nécessaires au script ne sont pas définies.';
}
else {
if (empty($_POST['auteur']) || empty($_POST['message']) || empty($_GET['numero_du_sujet'])) {
$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 de données
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('forum', $base) ;
// on recupere la date de l'instant présent
$date = date("Y-m-d H:i:s");
// préparation de la requête d'insertion (table forum_reponses)
$sql = 'INSERT INTO forum_reponses VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['message']).'", "'.$date.'", "'.$_GET['numero_du_sujet'].'")';
// 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)
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
// préparation de la requête de modification de la date de la dernière réponse postée (dans la table forum_sujets)
$sql = 'UPDATE forum_sujets SET date_derniere_reponse="'.$date.'" WHERE id="'.$_GET['numero_du_sujet'].'"';
// 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)
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
// on ferme la connexion à la base de données
mysql_close();
// on redirige vers la page de lecture du sujet en cours
header('Location: lire_sujet.php?id_sujet_a_lire='.$_GET['numero_du_sujet']);
// on termine le script courant
exit;
}
}
}
?>
<html>
<head>
<title>Insertion d'une nouvelle réponse</title>
</head>
<body>
<!-- on fait pointer le formulaire vers la page traitant les données -->
<form action="insert_reponse.php?numero_du_sujet=<?php echo $_GET['numero_du_sujet']; ?>" method="post">
<table>
<tr><td>
<span class="gras">Auteur :</span>
</td><td>
<input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
</td></tr><tr><td>
<span class="gras">Message :</span>
</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="Poster">
</td></tr></table>
</form>
<?php
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</html>
voici le message que j'ai lorsque j'insert un sujet:
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\ange\pages\forum\insert_sujet.php:2) in c:\program files\easyphp1-8\www\ange\pages\forum\insert_sujet.php on line 42
voci le message que j'ai lorsque j'insert une reponse:
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\ange\pages\forum\insert_reponse.php:1) in c:\program files\easyphp1-8\www\ange\pages\forum\insert_reponse.php on line 37
merci d'avance pour votre aide à bientot