Votre question

[RESOLU] Problème de modification sur la base de données [RESOLU]

Tags :
  • Php
  • Programmation
Dernière réponse : dans Programmation
1 Juillet 2009 15:40:28

Bonjour !
J'ai un script permettant de gérer des "fiches" sur des jeux vidéos. Il est actuellment présenté de cette forme :
- fiches.php me permettant de gérer les fiches
- rédiger_fiches.php pour écrire ou modifier une fiche.

Problème quand je veut modifier une fiche, cela m'envoie bien sur la page d'une nouvelle fiche avec les textes à modifier mais cela mais me créé une nouvelle fiche lorsque j'appuie sur envoyer.

Voici mes scripts :

fiches.php :

Citation :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Liste des fiches</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
h2, th, td
{
text-align:center;
}
table
{
border-collapse:collapse;
border:2px solid black;
margin:auto;
}
th, td
{
border:1px solid black;
}
</style>
</head>

<body>

<h2><a href="rediger_fiche.php">Ajouter une fiche</a></h2>
<?php
mysql_connect("mysql4.freehostia.com", "********", "*********"); // Connexion à MySQL
mysql_select_db("******************"); // Sélection de
//-----------------------------------------------------
// Vérification 1 : est-ce qu'on veut poster une fiche ?
//-----------------------------------------------------
if (isset($_POST['nom']) AND isset($_POST['intro']))
{
$nom = addslashes($_POST['nom']);
$intro = addslashes($_POST['intro']);
// On vérifie si c'est une modification de news ou pas
if ($_POST['id_fiches'] == 0)
{
// Ce n'est pas une modification, on crée une nouvelle entrée dans la table
mysql_query("INSERT INTO fiches VALUES('', '" . $nom . "', '" . $intro . "')");

}
else
{
// On protège la variable "id_fiche" pour éviter une faille SQL
$_POST['id_fiches'] = addslashes($_POST['id_fiches']);
// C'est une modification, on met juste à jour le titre et le contenu
mysql_query("UPDATE fiches SET nom='" . $nom . "', intro='" . $intro . "' WHERE id='" . $_POST['id_fiches'] . "'");
}
}

//--------------------------------------------------------
// Vérification 2 : est-ce qu'on veut supprimer une fiche ?
//--------------------------------------------------------
if (isset($_GET['supprimer'])) // Si on demande de supprimer une fiche
{
// Alors on supprime la news correspondante
// On protège la variable "id_fiches" pour éviter une faille SQL
$_GET['supprimer'] = addslashes($_GET['supprimer']);
mysql_query('DELETE FROM fiches WHERE id=\'' . $_GET['supprimer'] . '\'');
}
?>
<table><tr>
<th>Modifier</th>
<th>Supprimer</th>
<th>Titre</th>
</tr>
<?php
$retour = mysql_query('SELECT * FROM fiches');
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news
{
?>
<tr>
<td><?php echo '<a href="rediger_fiche.php?modifier=' . $donnees['id'] . '">'; ?>Modifier</a></td>
<td><?php echo '<a href="fiches.php?supprimer=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
<td><?php echo stripslashes($donnees['nom']); ?></td>
</tr>
<?php
} // Fin de la boucle qui liste les news
mysql_close();
?>
</table>
</body>
</html>


- rediger_fiche.php :

Citation :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Rédiger une news</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
h3, form
{
text-align:center;
}
</style>
</head>

<body>
<h3><a href="fiches.php">Retour à la liste des news</a></h3>
<?php
mysql_connect("mysql4.freehostia.com", "achzoz_jeuxvideo", "6024161"); // Connexion à MySQL
mysql_select_db("achzoz_jeuxvideo"); // Sélection de la base coursphp
if (isset($_GET['modifier'])) // Si on demande de modifier une news
{
// On protège la variable "modifier_news" pour éviter une faille SQL
$_GET['modifier'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier']));
// On récupère les infos de la news correspondante
$retour = mysql_query('SELECT * FROM fiches WHERE id=\'' . $_GET['modifier'] . '\'');
$donnees = mysql_fetch_array($retour);

// On place le titre et le contenu dans des variables simples
$nom = ($donnees['nom']);
$intro = ($donnees['intro']);
$id_fiches = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification
}
else // C'est qu'on rédige une nouvelle news
{
// Les variables $titre et $contenu sont vides, puisque c'est une nouvelle news
$nom = '';
$intro = '';
$id_fiches = 0; // La variable vaut 0, donc on se souviendra que ce n'est pas une modification
}
?>
<form action="fiches.php" method="post">
<p>Titre : <input type="text" size="30" name="nom" value="<?php echo $nom; ?>" /></p>
<p>
Contenu :<br />
<textarea name="intro" cols="50" rows="10">
<?php echo $intro; ?>
</textarea><br />

<input type="hidden" name="id_fiches" value="<?php echo $id; ?>" />
<input type="submit" value="Envoyer" />
</p>
</form>
</body>
</html>


Voilà, merci d'avance !

Autres pages sur : resolu probleme modification base donnees resolu

1 Juillet 2009 21:04:32

Problème résolu tout seul !
A la fin de de ma page rediger_fiche.php, j'avais écrit "id" au lieu de "id_fiches"

Citation :
<input type="hidden" name="id_fiches" value="<?php echo $id_fiches; ?>" />
<input type="submit" value="Envoyer" />
</p>
</form>
</body>
</html>


Voilà, je passe donc le sujet en résolu (tout seul :)  )
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS