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 :

Pb formulaire qui efface les données


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 4
    Par défaut Pb formulaire qui efface les données
    Bonsoir,

    Lorsque j'essaye d'update les informations sur une photo, il me met à jour la donnée saisie mais il m’enlève toute les autres données !

    Je ne comprend pas pourquoi... Aussi, on dirait qu'il ne fait pas attention au if lors de l'ajout !

    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
     
    $sql="SELECT *
              FROM PHOTO P INNER JOIN APPARTENIR A ON P.IDPhoto=A.IDPhoto
                                          INNER JOIN CATEGORIE C ON A.IDCategorie=C.IDCategorie
               WHERE P.login='".$nom2."' ";
    $sql_exe = mysql_query($sql) or die(mysql_error());
     
    while($data = mysql_fetch_assoc($sql_exe)) 
    {
        if(isset($_POST["Envoyer"]))
        {
            if(!empty($_POST['new_titre']))
            {
                $new_titre = $_POST["new_titre"];
                $req = 'SELECT titre FROM PHOTO WHERE IDPhoto = \' '.$data['IDPhoto'].' \' ';
                $result=mysql_query($req) or die ('Erreur  :'.mysql_error() );
                $titre = mysql_fetch_array($result);
                $old_titre = $titre['titre'];
                if($old_titre != $new_titre[$data['IDPhoto']])  // Si l'ancien titre est différent du nouveau titre
                {
                        $req="UPDATE PHOTO
                                SET titre = ' " .$new_titre[$data['IDPhoto']]." ' WHERE IDPhoto=' ".$data['IDPhoto']." ' ";
                        $result=mysql_query($req)
                                    or die ('Erreur lors de la modification du titre dans la base de données :'.mysql_error() );
                        $message="Titre changé avec succès.";
                }
                else
                {
                    $message = 'Le nouveau titre est identique à l\'ancien!';
                }
            }
     
     
     
     
            if(!empty($_POST['new_datePhoto'])) 
            {
                $new_datePhoto = $_POST["new_datePhoto"];
                $req2 = "SELECT datePhoto FROM PHOTO WHERE IDPhoto = '".$data['IDPhoto']."'";
                $result2=mysql_query($req2)
                        or die ('Erreur  :'.mysql_error() );
                $datePhoto = mysql_fetch_array($result2);
                $old_datePhoto = $datePhoto['datePhoto'];
                if($old_datePhoto != $new_datePhoto)
                {
                    $req3="UPDATE PHOTO
                            SET datePhoto = ' " .$new_datePhoto[$data['IDPhoto']]." ' WHERE IDPhoto=' ".$data['IDPhoto']." ' ";
                    $result3=mysql_query($req3)
                                or die ('Erreur lors de la modification de la date photo dans la base de données :'.mysql_error() );
                    $message="Date changé avec succès.";
                }
                else
                {		
                    $message = 'La date photo saisie est identique à l\'ancienne !';			
                }
            }
    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
     
    <div id="bloc_texte" align="center">    
    <form action="mes_photos.php" method="post" name="page_1">   
     
    <?php 
    $reset     =     mysql_data_seek($sql_exe,0);
    if (!$reset){
        echo 'MySql data seek Error' .  mysql_error();
    }
    if(isset($message)) echo $message;
     
    while($data = mysql_fetch_assoc($sql_exe)) 
    {
        echo '
            <fieldset><legend>'.$data['titre'].'</legend>
            <table id="bloc_form">
            <tr><td rowspan="6"><img src='.$data['url'].' border="1" align="left" width=400 ></td>
                  <td><li>Titre</li></td>
                  <td><input type="text" name="new_titre['.$data['IDPhoto'].']" id = "titre" /></td>
                  <td>'.$data['titre'].'</td></tr>
            <tr><td><li>Auteur</li></td>
                  <td>'.$data['login'].'</td></tr>
            <tr><td><li>Catégorie</li></td>
                  <td><input type="text" name="new_titreCategorie['.$data['IDCategorie'].']" id = "nomCategorie" /></td>
                  <td>'.$data['nomCategorie'].'</td></tr>
            <tr><td><li>Date de la photo</li></td>
                  <td><input type="text" name="new_datePhoto['.$data['IDPhoto'].']" id = "datePhoto" /></td>
                  <td>'.$data['datePhoto'].'</td></tr>
            <tr><td><li>Description</li></td>
                  <td><textarea rows="3" name="new_description['.$data['IDPhoto'].']" id="description"></textarea></td>
                  <td>'.$data['description'].'</td></tr>
            <tr><td><input type="submit" name="Envoyer" value="Envoyer" id = "valider" /></td>
                  <td><input type="submit" name="Supprimer" value="Supprimer" id = "suprimer" /></td>
            </tr>
            </table>
            </fieldset>';    
    }
     
    ?>
     
    </form>
    </div>

  2. #2
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Par défaut
    Humm...

    Tu as un seul formulaire sur ta page (à la vue du deuxième bout de code), que tu envoies dans son intégralité à chaque fois. Tu envoies donc tout plein de données inutiles à chaque fois à ta page "mes_photos.php".
    Ensuite tu fais une boucle étrange ou tu compares des titres des photos, jusqu'à temps de tomber sur la bonne photo, et tu mets à jour plein de photos.
    J'ose pas trop penser ce qui va se passer si tu cliques sur "Supprimer"...

    Ou est le problème ? Un peu partout.

    Ton but est de mettre à jour une photo (et une seule), en changeant son titre.
    De quoi aurait besoin ton script pour cela (au minimum):
    • un ID de photo.
    • le nouveau titre de la photo.


    Ensuite ton script n'a qu'une seule requête à faire pour mettre à jour la photo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE PHOTO SET titre = ' " .$le_nouveau_titre." ' WHERE IDPhoto=' ".$id_photo." '
    Pas besoin de boucle pour faire ça.

    Concrêtement, je te conseille de faire un formulaire qui ressemblera à celui là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <td>
      <form action="mes_photos.php" method="post">
        <input type="text" name="nouveau_titre" />
        <input type="hidden" name="photo_id" value="$id_photo" />
        <input type="submit" name="modifierTitre" value="Modifier le titre" />
      </form>
    </td>
    Puis tu pourras adapter pour après modifier la date aussi en même temps.

    Remarques supplémentaires:
    • Ton code est pas du tout sécurisé.
    • En (X)HTML, tu ne dois jamais avoir deux balises avec le même attribut "id".

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 4
    Par défaut
    Oh merci beaucoup !! ça marche beaucoup mieux maintenant !!

    Pour les protections, je les avait enlevé pour la plupart, car ça devenait trop lourd sur le forum.

    En tout cas merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ne pas effacer les données d'un formulaire sur submit
    Par steph_1 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 13/10/2013, 23h58
  2. Réponses: 6
    Dernier message: 02/06/2009, 13h20
  3. Réponses: 3
    Dernier message: 10/04/2009, 13h26
  4. formulaire qui transforme les données!
    Par xave dans le forum Langage
    Réponses: 11
    Dernier message: 03/07/2006, 11h58
  5. Construire un formulaire qui ecrase les variables hidden
    Par Battosaiii dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 14/04/2006, 11h58

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