par
Sirgeese » 17 févr. 2009, 16:02
Bonjour à tous,
Je crée un script pour gérer une petite base de médias.
Pour se faire, je récupère ma table et la liste sous forme de tableau avec les options de modification et suppression pour chaque média. J'ai également une option en haut de tableau pour 'ajouter' un nouveau média.
Le hic, c'est que la modification et la suppression ne fonctionne pas comme je le souhaite.
La modification se comporte comme un 'ajout'. Il m'envoie sur la page formulaire vide que je doit remplir, en lieu et place d'une formulaire ayant récupéré les données et juste à modifier.
Pour la suppression, elle ne fonctionne pas. Je pense que le problème de la modification réglera celui de la suppresion, mais pour le moment, je cale complètement et je ne vois pas d'ou vient mon problème.
Je vous donnes les 2 codes du script pour plus de compréhension :
"Liste des Médias et options d'ajout, modification et suppression".
<!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 Médias</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="ajouter_media.php">Ajouter un média</a></h2>
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("stock");
//-----------------------------------------------------
// Vérification 1 : est-ce qu'on veut ajouter un nouveau média ?
//-----------------------------------------------------
if (isset($_POST['type']) AND isset($_POST['reference']) AND isset ($_POST['quantite']))
{
$type = addslashes($_POST['type']);
$reference = addslashes($_POST['reference']);
$quantite = addslashes($_POST['quantite']);
// On vérifie si c'est une modification de média ou pas
if ($_POST['id_media'] == 0)
{
// Ce n'est pas une modification, on crée une nouvelle entrée dans la table
mysql_query("INSERT INTO media VALUES('', '" . $type . "', '" . $reference . "', '" . $quantite . "')");
}
else
{
// On protège la variable "id_media" pour éviter une faille SQL
$_POST['id_media'] = addslashes($_POST['id_media']);
// C'est une modification, on met juste à jour le type, la référence et la quantité
mysql_query("UPDATE media SET type='" . $type . "', reference='" . $reference . "'quantite='" . $quantite . "', WHERE id='" . $_POST['id_media'] . "'");
}
}
//--------------------------------------------------------
// Vérification 2 : est-ce qu'on veut supprimer un média ?
//--------------------------------------------------------
if (isset($_GET['supprimer_media'])) // Si on demande de supprimer un média
{
// Alors on supprime le média correspondant
// On protège la variable "id_media" pour éviter une faille SQL
$_GET['supprimer_media'] = addslashes($_GET['supprimer_media']);
mysql_query('DELETE FROM media WHERE id=\'' . $_GET['supprimer_media'] . '\'');
}
?>
<table><tr>
<th>Modifier</th>
<th>Supprimer</th>
<th>Type</th>
<th>Référence</th>
<th>Quantité</th>
</tr>
<?php
$retour = mysql_query('SELECT * FROM media ORDER BY id DESC');
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les médias
{
?>
<tr>
<td><?php echo '<a href="ajouter_media.php?modifier_media=' . $donnees['id'] . '">'; ?>Modifier</a></td>
<td><?php echo '<a href="liste_media.php?supprimer_media=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
<td><?php echo stripslashes($donnees['type']); ?></td>
<td><?php echo stripslashes($donnees['reference']); ?></td>
<td><?php echo stripslashes($donnees['quantite']); ?></td>
</tr>
<?php
} // Fin de la boucle qui liste les médias
?>
</table>
</body>
</html>
<!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>Ajouter un média</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="liste_media.php">Retour à la liste des médias</a></h3>
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("stock");
if (isset($_GET['modifier_media'])) // Si on demande de modifier un média
{
// On protège la variable "modifier_media" pour éviter une faille SQL
$_GET['modifier_media'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier_media']));
// On récupère les infos du média correspondant
$retour = mysql_query('SELECT * FROM media WHERE id=\'' . $_GET['modifier_media'] . '\'');
$donnees = mysql_fetch_array($retour);
// On place le type et la référence dans des variables simples
$type = stripslashes($donnees['type']);
$reference = stripslashes($donnees['reference']);
$quantite = stripslashes($donnees['quantite']);
$id_media = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification
}
else // C'est qu'on ajoute un nouveau média
{
// Les variables $type $contenu et $quantite sont vides, puisque c'est un nouveau média
$type = '';
$reference = '';
$quantite = '';
$id_media = 0; // La variable vaut 0, donc on se souviendra que ce n'est pas une modification
}
?>
<form action="liste_media.php" method="post">
<p>Type : <input type="text" size="20" name="type" value="<?php echo $type; ?>" /></p>
<p>Référence :<input type="text" size="30" name="reference" value="<?php echo $reference; ?>" /></p>
<p>Quantité : <input type="text" size="10" name="quantite" value="<?php echo $quantite; ?>" /></p>
<input type="hidden" name="id_media" value="<?php echo $id_media; ?>" />
<input type="submit" value="Envoyer" />
</form>
</body>
</html>
Ma table :
Code : Tout sélectionner
id
type
reference
quantite
[code]
Si vous avez un début de solution, je prends avec plaisir.
Merci d'avance pour votre aide. :wink:
Bonjour à tous,
Je crée un script pour gérer une petite base de médias.
Pour se faire, je récupère ma table et la liste sous forme de tableau avec les options de modification et suppression pour chaque média. J'ai également une option en haut de tableau pour 'ajouter' un nouveau média.
Le hic, c'est que la modification et la suppression ne fonctionne pas comme je le souhaite.
La modification se comporte comme un 'ajout'. Il m'envoie sur la page formulaire vide que je doit remplir, en lieu et place d'une formulaire ayant récupéré les données et juste à modifier.
Pour la suppression, elle ne fonctionne pas. Je pense que le problème de la modification réglera celui de la suppresion, mais pour le moment, je cale complètement et je ne vois pas d'ou vient mon problème. :(
Je vous donnes les 2 codes du script pour plus de compréhension :
"Liste des Médias et options d'ajout, modification et suppression".
[php]
<!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 Médias</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="ajouter_media.php">Ajouter un média</a></h2>
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("stock");
//-----------------------------------------------------
// Vérification 1 : est-ce qu'on veut ajouter un nouveau média ?
//-----------------------------------------------------
if (isset($_POST['type']) AND isset($_POST['reference']) AND isset ($_POST['quantite']))
{
$type = addslashes($_POST['type']);
$reference = addslashes($_POST['reference']);
$quantite = addslashes($_POST['quantite']);
// On vérifie si c'est une modification de média ou pas
if ($_POST['id_media'] == 0)
{
// Ce n'est pas une modification, on crée une nouvelle entrée dans la table
mysql_query("INSERT INTO media VALUES('', '" . $type . "', '" . $reference . "', '" . $quantite . "')");
}
else
{
// On protège la variable "id_media" pour éviter une faille SQL
$_POST['id_media'] = addslashes($_POST['id_media']);
// C'est une modification, on met juste à jour le type, la référence et la quantité
mysql_query("UPDATE media SET type='" . $type . "', reference='" . $reference . "'quantite='" . $quantite . "', WHERE id='" . $_POST['id_media'] . "'");
}
}
//--------------------------------------------------------
// Vérification 2 : est-ce qu'on veut supprimer un média ?
//--------------------------------------------------------
if (isset($_GET['supprimer_media'])) // Si on demande de supprimer un média
{
// Alors on supprime le média correspondant
// On protège la variable "id_media" pour éviter une faille SQL
$_GET['supprimer_media'] = addslashes($_GET['supprimer_media']);
mysql_query('DELETE FROM media WHERE id=\'' . $_GET['supprimer_media'] . '\'');
}
?>
<table><tr>
<th>Modifier</th>
<th>Supprimer</th>
<th>Type</th>
<th>Référence</th>
<th>Quantité</th>
</tr>
<?php
$retour = mysql_query('SELECT * FROM media ORDER BY id DESC');
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les médias
{
?>
<tr>
<td><?php echo '<a href="ajouter_media.php?modifier_media=' . $donnees['id'] . '">'; ?>Modifier</a></td>
<td><?php echo '<a href="liste_media.php?supprimer_media=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
<td><?php echo stripslashes($donnees['type']); ?></td>
<td><?php echo stripslashes($donnees['reference']); ?></td>
<td><?php echo stripslashes($donnees['quantite']); ?></td>
</tr>
<?php
} // Fin de la boucle qui liste les médias
?>
</table>
</body>
</html>
[/php]
[php]
<!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>Ajouter un média</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="liste_media.php">Retour à la liste des médias</a></h3>
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("stock");
if (isset($_GET['modifier_media'])) // Si on demande de modifier un média
{
// On protège la variable "modifier_media" pour éviter une faille SQL
$_GET['modifier_media'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier_media']));
// On récupère les infos du média correspondant
$retour = mysql_query('SELECT * FROM media WHERE id=\'' . $_GET['modifier_media'] . '\'');
$donnees = mysql_fetch_array($retour);
// On place le type et la référence dans des variables simples
$type = stripslashes($donnees['type']);
$reference = stripslashes($donnees['reference']);
$quantite = stripslashes($donnees['quantite']);
$id_media = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification
}
else // C'est qu'on ajoute un nouveau média
{
// Les variables $type $contenu et $quantite sont vides, puisque c'est un nouveau média
$type = '';
$reference = '';
$quantite = '';
$id_media = 0; // La variable vaut 0, donc on se souviendra que ce n'est pas une modification
}
?>
<form action="liste_media.php" method="post">
<p>Type : <input type="text" size="20" name="type" value="<?php echo $type; ?>" /></p>
<p>Référence :<input type="text" size="30" name="reference" value="<?php echo $reference; ?>" /></p>
<p>Quantité : <input type="text" size="10" name="quantite" value="<?php echo $quantite; ?>" /></p>
<input type="hidden" name="id_media" value="<?php echo $id_media; ?>" />
<input type="submit" value="Envoyer" />
</form>
</body>
</html>
[/php]
Ma table :
[code]
id
type
reference
quantite
[code]
Si vous avez un début de solution, je prends avec plaisir.
Merci d'avance pour votre aide. :wink: