Bonjour,
J'essaie de créer un système de news. Pour ce, j'ai créé une base de données, une page "update_agendaresultats.php" qui permet de créer ou de modifier une news; une page "agendaresultats.php" qui affiche les news dans une session administration avec possibilité de supprimer ou de modifier une news.
L'enregistrement dans la base de données fonctionne très bien, l'affichage sur mes pages aussi mais par contre si je souhaite modifier une news ça ne fonctionne pas, la modification n'est pas enregistrée.
Le formulaire sur ma page "update_agendaresultats.php" s'affiche correctement avec les champs pré-remplis avec les données de ma news mais si je modifie un champ, la modification ne s'enregistre pas dans la base de donnée.
Voici le code de ma page "update_agendaresultats.php"
Voici le code de la page qui affichent les news avec les boutons "modifier" "supprimer"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 <?php mysql_connect("", "", ""); mysql_select_db("monsite"); if (isset($_GET['modifier_match'])) // Si on demande de modifier un match { // On protège la variable "modifier_match" pour éviter une faille SQL $_GET['modifier_match'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier_match'])); // On récupère les infos du match correspondant $retour = mysql_query('SELECT * FROM agendaresultats WHERE id=\'' . $_GET['modifier_match'] . '\''); $donnees = mysql_fetch_array($retour); // On place le contenu dans des variables simples $match = stripslashes($donnees['match']); $resultat = stripslashes($donnees['resultat']); $lieu = stripslashes($donnees['lieu']); $date = stripslashes($donnees['date']); $heure = stripslashes($donnees['heure']); $id_match = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification } else // C'est qu'on rédige un nouveau match { // Les variables sont vides, puisque c'est un nouveau match $match = ''; $resultat = ''; $lieu = ''; $date = ''; $heure = ''; $id_match = 0; // La variable vaut 0, donc on se souviendra que ce n'est pas une modification } ?> <form action="agendaresultats.php" method="post"> <p>Date: <input type="text" size="15" name="date" value="<?php echo $date; ?>" /></p> <p>Heure: <input type="text" size="15" name="heure" value="<?php echo $heure; ?>" /></p> <p>Match: <input type="text" size="30" name="match" value="<?php echo $match; ?>" /></p> <p>Lieu: <input type="text" size="30" name="lieu" value="<?php echo $lieu; ?>" /></p> <p>Résultat: <input type="text" size="5" name="resultat" value="<?php echo $resultat; ?>" /></p> <input type="hidden" name="id_match" value="<?php echo $id_match; ?>" /> <input type="submit" value="Envoyer" /> </p>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 <?php mysql_connect("", "", ""); mysql_select_db("monsite"); //----------------------------------------------------- // Vérification 1 : est-ce qu'on veut poster une news ? //----------------------------------------------------- if (isset($_POST['match']) AND isset($_POST['resultat'])) { $match = addslashes($_POST['match']); $resultat = addslashes($_POST['resultat']); $date = addslashes($_POST['date']); $heure = addslashes($_POST['heure']); $lieu = addslashes($_POST['lieu']); // On vérifie si c'est une modification ou pas if ($_POST['id_match'] == 0) { // Ce n'est pas une modification, on crée une nouvelle entrée dans la table mysql_query("INSERT INTO agendaresultats VALUES('', '" . $date . "', '" . $heure . "','" . $match . "','" . $lieu . "','" . $resultat . "', '" . time() . "')"); } else { // On protège la variable "id" pour éviter une faille SQL $_POST['id_match'] = addslashes($_POST['id_match']); // C'est une modification, on met juste à jour les champs ci-dessous mysql_query("UPDATE agendaresultats SET date='" . $date . "', heure='" . $heure . "', match='" . $match . "', lieu='" . $lieu . "', resultat='" . $resultat . "' WHERE id='" . $_POST['id_match'] . "'"); } } //-------------------------------------------------------- // Vérification 2 : est-ce qu'on veut supprimer une ligne ? //-------------------------------------------------------- if (isset($_GET['supprimer_match'])) // Si on demande de supprimer une match { // Alors on supprime la news correspondante // On protège la variable "id_match" pour éviter une faille SQL $_GET['supprimer_match'] = addslashes($_GET['supprimer_match']); mysql_query('DELETE FROM agendaresultats WHERE id=\'' . $_GET['supprimer_match'] . '\''); } ?> <table><tr> <th>Modifier</th> <th>Supprimer</th> <th>Date</th> <th>Heure</th> <th>Match</th> <th>Lieu</th> <th>Résultat</th> </tr> <?php $retour = mysql_query('SELECT * FROM agendaresultats ORDER BY id DESC'); while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les matchs { ?> <tr> <td><?php echo '<a href="update_agendaresultats.php?modifier_match=' . $donnees['id'] . '">'; ?>Modifier</a></td> <td><?php echo '<a href="agendaresultats.php?supprimer_match=' . $donnees['id'] . '">'; ?>Supprimer</a></td> <td><?php echo stripslashes($donnees['date']); ?></td> <td><?php echo stripslashes($donnees['heure']); ?></td> <td><?php echo stripslashes($donnees['match']); ?></td> <td><?php echo stripslashes($donnees['lieu']); ?></td> <td><?php echo stripslashes($donnees['resultat']); ?></td> </tr> <?php } // Fin de la boucle qui liste les matchs ?> </table>
Merci à tous pour votre aide
Partager