le 12/09/2008 à 17:44
Plusieurs problèmes avec le forum
Okay.
Merci beaucoup globule de ton aide.
Merci beaucoup globule de ton aide.
<?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', 'teamextr1026', 'd0ZtHAgW');
mysql_select_db ('teamextr1026', $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"><font color="#cccccc">Auteur :</color></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"><font color="#cccccc">Titre :</color></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"><font color="#cccccc">Message :</color></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>
1. <html>
2. <head>
3. <title>Index de notre forum</title>
4. </head>
5. <body>
6.
7. <!-- on place un lien permettant d'accéder à la page contenant le formulaire d'insertion d'un nouveau sujet -->
8. <a href="./insert_sujet.php">Insérer un sujet</a>
9.
10. <br /><br />
11.
12. <?php
13. // on se connecte à notre base de données
14. $base = mysql_connect ('localhost', 'teamextr1026', 'd0ZtHAgW');
15. mysql_select_db ('teamextr1026', $base) ;
16.
17. // préparation de la requete
18. $sql = 'SELECT id, auteur, titre, date_derniere_reponse FROM forum_sujets ORDER BY date_derniere_reponse DESC';
19.
20. // 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)
21. $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
22.
23. // on compte le nombre de sujets du forum
24. $nb_sujets = mysql_num_rows ($req);
25.
26. if ($nb_sujets == 0) {
27. echo 'Aucun sujet';
28. }
29. else {
30. ?>
31. <table width="500" border="1"><tr>
32. <td>
33. Auteur
34. </td><td>
35. Titre du sujet
36. </td><td>
37. Date dernière réponse
38. </td></tr>
39. <?php
40. // on va scanner tous les tuples un par un
41. while ($data = mysql_fetch_array($req)) {
42.
43. // on décompose la date
44. sscanf($data['date_derniere_reponse'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);
45.
46. // on affiche les résultats
47. echo '<tr>';
48. echo '<td>';
49.
50. // on affiche le nom de l'auteur de sujet
51. echo htmlentities(trim($data['auteur']));
52. echo '</td><td>';
53.
54. // 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
55. echo '<a href="./lire_sujet.php?id_sujet_a_lire=' , $data['id'] , '">' , htmlentities(trim($data['titre'])) , '</a>';
56.
57. echo '</td><td>';
58.
59. // on affiche la date de la dernière réponse de ce sujet
60. echo $jour , '-' , $mois , '-' , $annee , ' ' , $heure , ':' , $minute;
61. }
62. ?>
63. </td></tr></table>
64. <?php
65. }
66.
67. // on libère l'espace mémoire alloué pour cette requête
68. mysql_free_result ($req);
69. // on ferme la connexion à la base de données.
70. mysql_close ();
71. ?>
72. </body>
73. </html>
Chargement en cours