IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Système de news : l'enregistrement des modifications


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 115
    Points : 50
    Points
    50
    Par défaut Système de news : l'enregistrement des modifications
    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"

    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>
    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
    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

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Commence par vérifier la bonne construction de ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $sql = "UPDATE agendaresultats SET date='" . $date . "', heure='" . $heure . "', match='" . $match . "', lieu='" . $lieu . "', resultat='" . $resultat . "' WHERE id='" . $_POST['id_match'] . "'";
    echo $sql;
    mysql_query($sql);
    Si ton "id" est bien un champ numerique, fait un intval() dessus plutot qu'un addslash() et ne met pas de guillemets dans ta requete pour sa valeur.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Bonjour,

    tu devrais ajouter un die() après l'éxecution de ta requête, de cette manière tu sauras si ta modification a été pris en compte ou non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql_query($sql) or die('KO à cause de : '.mysql_error());
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 115
    Points : 50
    Points
    50
    Par défaut
    Bonjour,

    En faisant comme demandé ci-dessus, j'ai obtenu l'erreur suivante:

    UPDATE agendaresultats SET date='06/09/2008', heure='14h00', match='Bleu-Blanc (ent) - CCM Braine', lieu='Woluwé-Saint-Pierre (rue Kelle)', resultat='0-3' WHERE id='1'KO à cause de : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'match='Bleu-Blanc (ent) - CCM Braine', lieu='Woluwé-Saint-Pierre (rue Kelle)', ' at line 1

    Je ne comprends pas ce qui ne va pas?

  5. #5
    Membre habitué Avatar de raffa
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 26
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 194
    Points : 159
    Points
    159
    Par défaut
    match est un mot-clé réservé a mysql, tu ne dois pas l'utiliser comme nom de colonne
    http://dev.mysql.com/doc/refman/5.0/...ved-words.html

    Ou alors essai de le placer entre quote inversé

Discussions similaires

  1. [WD9] Comment enregistrer des modifications?
    Par loic20h28 dans le forum WinDev
    Réponses: 32
    Dernier message: 16/04/2008, 16h04
  2. Réponses: 2
    Dernier message: 03/03/2008, 09h38
  3. enregistrement des modifs dans la BD
    Par sjtraore dans le forum JSF
    Réponses: 3
    Dernier message: 13/09/2007, 21h05
  4. Enregistrement des modifications
    Par nathou38400 dans le forum Access
    Réponses: 1
    Dernier message: 01/06/2007, 13h46
  5. enregistrer des modifications dans une requête
    Par Lenalyon dans le forum WinDev
    Réponses: 1
    Dernier message: 14/02/2007, 10h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo