Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/12/2011, 17h54   #1
Invité de passage
 
Inscription : août 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 4
Points : 1
Points : 1
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 :
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 :
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>
cakao est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 20h13   #2
Membre confirmé
 
Homme Clément
Développeur informatique
Inscription : décembre 2006
Messages : 213
Détails du profil
Informations personnelles :
Nom : Homme Clément
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2006
Messages : 213
Points : 277
Points : 277
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 :
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 :
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".
Climoo est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 12/12/2011, 22h59   #3
Invité de passage
 
Inscription : août 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 4
Points : 1
Points : 1
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
cakao est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h13.


 
 
 
 
Partenaires

Hébergement Web