Appel à la base de donnees

cs_nicodu94 Messages postés 7 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 13 janvier 2009 - 13 janv. 2009 à 17:53
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 13 janv. 2009 à 19:43
Salut à tous, je suis débutant en php et je cherche à modifier un code. Je lutte depuis plus d'une semaine dessus.
Je veut créer un back office.
J'ai 2 pages:
1 page pour afficher tous les liens de ma base de donnees,
1 page pour soit modifier, soit insérer, soit supprimé une entrée de ma table.
-> Le probleme est le suivant: lorsque je veut modifier une entrée, il m'en crèe une nouvelle.
Je m'en sort plus, je ne comprend plus rien. Si vous pouvez m'aider, merci d'avance.

* Le champ id ne doit pas etre en auto-increment.

-> ma première page s'appelle liste_encyclopedie.php
  
[rediger_encyclopedie.php Ajouter une encyclopedie]

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("faunafricaine");
//-----------------------------------------------------
// Vérification 1 : est-ce qu'on veut poster une entrée ?
//-----------------------------------------------------
if (isset($_POST['id']) AND isset($_POST['titre']) AND isset($_POST['famille']) AND isset($_POST['physique']) AND isset($_POST['nourriture']) AND isset($_POST['accouplement']) AND isset($_POST['image']))
{
    $id = addslashes($_POST['id']);
 $titre = addslashes($_POST['titre']);
    $famille = addslashes($_POST['famille']);
    $physique = addslashes($_POST['physique']);
    $nourriture = addslashes($_POST['nourriture']);
    $accouplement = addslashes($_POST['accouplement']);
    $image = addslashes($_POST['image']);


    // On vérifie si c'est une modification d'entrée ou pas
    if ($_POST['id_encyclopedie'] == 0)
    {
        // Ce n'est pas une modification, on crée une nouvelle entrée dans la table
        mysql_query("INSERT INTO encyclopedie VALUES('".$id."', '" . $titre . "', '" . $famille . "', '" . $physique . "', '" . $nourriture . "', '" . $accouplement . "', '" . $image . "')");
    }
    else
    {
        // On protège la variable "id_encyclopedie" pour éviter une faille SQL
        $_POST['id_encyclopedie'] = addslashes($_POST['id_encyclopedie']);
        // C'est une modification, on met juste à jour les contenus
        mysql_query("UPDATE encyclopedie SET id='" . $id . "', titre='" . $titre . "', famille='" . $famille . "' , physique='" . $physique . "', nourriture='" . $nourriture . "', accouplement='" . $accouplement . "', image='" . $image . "'WHERE id='" . $_POST['id_encyclopedie'] . "'");
    }
}
 
//--------------------------------------------------------
// Vérification 2 : est-ce qu'on veut supprimer une entrée ?
//--------------------------------------------------------
if (isset($_GET['supprimer_encyclopedie'])) // Si on demande de supprimer une entrée
{
    // Alors on supprime l' entrée correspondante
    // On protège la variable "id_encyclopedie" pour éviter une faille SQL
    $_GET['supprimer_encyclopedie'] = addslashes($_GET['supprimer_encyclopedie']);
    mysql_query('DELETE FROM encyclopedie WHERE id=\'' . $_GET['supprimer_encyclopedie'] . '\'');
}
?>
Modifier |
Supprimer |
Titre |
Id |

<?php
$retour = mysql_query('SELECT * FROM encyclopedie ORDER BY id');
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les entrées
{
?>
----

<?php echo '[liste_encyclopedie.php Retour à la liste des entrées]

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("faunafricaine");
if (isset($_GET['modifier_encyclopedie'])) // Si on demande de modifier une entrée
{
    // On protège la variable "modifier_encyclopedie" pour éviter une faille SQL
    $_GET['modifier_encyclopedie'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier_encyclopedie']));
   
    // On récupère les infos de l'entrée correspondante
    $retour = mysql_query('SELECT * FROM encyclopedie WHERE id=\'' . $_GET['modifier_encyclopedie'] . '\'');
    $donnees = mysql_fetch_array($retour);
   
    // On place les contenus dans des variables simples
    $id = stripslashes($donnees['id']);
 $titre = stripslashes($donnees['titre']);
    $famille = stripslashes($donnees['famille']);
    $physique = stripslashes($donnees['physique']);
    $nourriture = stripslashes($donnees['nourriture']);
    $accouplement = stripslashes($donnees['accouplement']);
    $image = stripslashes($donnees['image']);
    $id_encyclopedie = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification
}
else // C'est qu'on rédige une nouvelle entrée
{
    // Les variables sont vides, puisque c'est une nouvelle entrée
    $id = '';
    $titre = '';
    $famille = '';
    $physique = '';
    $nourriture = '';
    $accouplement = '';
    $image = '';
    $id_encyclopedie = 0; // La variable vaut 0, donc on se souviendra que ce n'est pas une modification
}
?>
<form action="liste_encyclopedie.php" method="post">


    Titre : " />


    id :

    <textarea name="id" cols="50" rows="10">
    <?php echo $id; ?>
    </textarea>


    famille :

    <textarea name="famille" cols="50" rows="10">
    <?php echo $famille; ?>
    </textarea>

   


    description physique :

    <textarea name="physique" cols="50" rows="10">
    <?php echo $physique; ?>
    </textarea>

   


    nourriture :

    <textarea name="nourriture" cols="50" rows="10">
    <?php echo $nourriture; ?>
    </textarea>

   


    accouplement :

    <textarea name="accouplement" cols="50" rows="10">
    <?php echo $accouplement; ?>
    </textarea>

   


    image :

    <textarea name="image" cols="50" rows="10">
    <?php echo $image; ?>
    </textarea>

   
    " />
   

</form>

</html>

1 réponse

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
13 janv. 2009 à 19:43
Salut

Regardes la valeur de if ($_POST['id_encyclopedie'] == 0)

Si tu as bien 0 et pas "0" ou null de dedans.

C'est une idée non testée
0
Rejoignez-nous