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] Probleme lorsque je click sur actualisé


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de fadex
    Inscrit en
    Septembre 2005
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2005
    Messages : 223
    Points : 105
    Points
    105
    Par défaut [Système] Probleme lorsque je click sur actualisé
    Bonjour

    donc j'ai une fonction qui permet d'ajouter des enregistrement a une base de données , le probleme c que quand je click sur actualisé du navigateur l'enregistrement sera ajouter une autre fois .

    j'ai fait le test sur le bouton qui envoi le formulair
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if(isset($_GET['envoi']))
    {
    $sql="insert .............";
     
    $result=$r->setRecord($sql);
    }

    merci d'avance

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 24
    Points : 20
    Points
    20
    Par défaut
    Salut...

    d'après ton code... c'est normal... explication...

    Dans ton code... la condition d'execution de ta requete, c'est:

    Si la variable $_GET['envoi'] est défini...

    or... une fois la condition remplie et ta requete executé... et bien ta condition est toujours valabe...

    Le truc simple, qui me vient tout de suite la, c'est qu'il faudrait que tu fasses une redirection (manuel php -> header) vers une autre page... ou la meme page, avec les bonnes variables d'url histoire de faire en sorte à ce que ton if(isset($_GET['envoi'])) ne sois pas executé...

    Y'a certainement d'autres moyens... (je serais d'ailleurs curieux de les connaitres...)

    allez hop... vla du code...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if(isset($_GET['envoi'])) 
    {
    $sql="insert .............";
    $result=$r->setRecord($sql);
    header("Location: http://ton_url_qui_va_bien");
    }
    Note que tu auras une erreur php si du html est imprimé avant l'execution de ce code (en gros... ce bout de code est a placé tout en haut de ta page...)

    Bon courrage

  3. #3
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Ou sinon tu vérifies que ton enregistrement n'est pas déjà en base avant de l'insérer.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  4. #4
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 57
    Points : 43
    Points
    43
    Par défaut
    J'ai exactement le même problème toi.

    Sauf que j'ai essayé de faire la solution de "fastmanu" mais lorsque je valide mon formulaire j'ai le message d'erreur suivant:

    Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\base_mysql\form.php:6) in c:\program files\easyphp1-8\www\base_mysql\form.php on line 91

    Et puis ben ca plante toujours lorsque j'essaie d'actualiser et ca me réinsert encore une fois les données dans ma base.

    Je suis débutant en php quelqu'un pourrait m'aider??

    J'utilise php, mysql, et appache (sous windows) (=> easyPHP)

    Voici mon code:
    N'hésitez pas à me corriger (notemment dans le choix d'emplacement du code 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
    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
     
     
    <html> 
     
    <head>
     
    <script language="javascript">
    <!-- 
    function controle ()
    {
    if ((document.form1.nom.value.length == 0) || (document.form1.prenom.value.length == 0) || (document.form1.sexe.value.length == 0))
     {
    alert("Remplissez tous les champs obligatoire s.v.p")
    document.form1.nom.focus();
    return false;
    }
    else {
    return true;
    }
    }
    //-->
    </script>
     
    </head>
     
    <body>
     
    <?
    // Paramètres perso
    $host = "localhost"; 
    $user = "xxx";
    $pass = "xxx";
    $bdd = "mysql"; 
     
    // connexion
    // Connection au serveur
    @mysql_connect($host,$user,$pass)
       or die("Impossible de se connecter");
    // connection à la base
    @mysql_select_db("$bdd")
       or die("Impossible de se connecter");
    ?>
     
    <?  
    if (isset($_POST['action'])) { 
      $v_politique = "";
      $v_automobile = "";
      $v_sport = "";
     
      $v_informatique=""; if(!empty($_POST["informatique"]))
      $v_informatique="X";
     
      $v_politique=""; if(!empty($_POST["politique"]))
      $v_politique="X";
     
      $v_automobile=""; if(!empty($_POST["automobile"]))
      $v_automobile="X";
     
      $v_sport=""; if(!empty($_POST["sport"]))
      $v_sport="X";
     
      $v_nom=""; if(!empty($_POST["nom"]))
        $v_nom=addslashes($_POST["nom"]);
     
      $v_prenom=""; if(!empty($_POST["prenom"]))
         $v_prenom=addslashes($_POST["prenom"]);
     
      $v_adresse=""; if(!empty($_POST["adresse"]))
        $v_adresse=addslashes($_POST["adresse"]);
     
      $v_localite=""; if(!empty($_POST["localite"]))
        $v_localite=addslashes($_POST["localite"]);
     
      $v_npa=""; if(!empty($_POST["npa"]))
        $v_npa=addslashes($_POST["npa"]);
     
      $v_pays=""; if(!empty($_POST["pays"]))
        $v_pays=addslashes($_POST["pays"]);
     
      $v_sexe=""; if(!empty($_POST["sexe"]))
        $v_sexe=addslashes($_POST["sexe"]);   
     
      $v_npa=""; if(!empty($_POST["npa"]))
        $v_npa=addslashes($_POST["npa"]);
     
      $v_commentaires=""; if(!empty($_POST["commentaires"]))
        $v_commentaires=addslashes($_POST["commentaires"]);
     
      $query_mod = "insert into fiche (nom, prenom, adresse, localite, npa, pays, sexe, informatique, politique, automobile, sport, commentaires) values ('$v_nom', '$v_prenom', '$v_adresse', '$v_localite', '$v_npa', '$v_pays', '$v_sexe', '$v_informatique', '$v_politique', '$v_automobile', '$v_sport', '$v_commentaires')";
      $result_mod = mysql_query($query_mod);
     
      header("Location: http://localhost/base_mysql/form.php"); 
    }
    ?>
     
     
    <table>
      <FORM name = "form1" method="post" onSubmit=" return controle()">
    	<tr>
          <td width="100">Nom&nbsp;<font color="#FF0000">*</font></td> 
          <td width="100"><input name="nom" type="text" size="40" maxlength="30"></td>
        </tr>
        <tr>
          <td width="100">Prénom&nbsp;<font color="#FF0000">*</font></td> 
          <td width="100"><input name="prenom" type="text" size="40" maxlength="30"></td>
        </tr> 
        <tr>
          <td width="100">Adresse</td>
    	  <td width="100"><input name="adresse" type="text" size="40" maxlength="50"></td>
        </tr>
        <tr>
          <td width="100">Localité</td>
    	  <td width="100"><input name="localite" type="text" size="30" maxlength="30"></td>
        </tr>
        <tr>
          <td width="100">NPA</td>
         <td width="100"><input name="npa" type="text" size="4" maxlength="4"></td>
       </tr>
       <tr>
         <td width="100">Pays</td>
         <td><select name="pays" size="1">
    	 <option selected value=""></option>
     
    	<?
     
    //définition de la tale
    $table="pays";
     
    // sélectionne toutes les fiches de la table $table
    $query = "SELECT * FROM $table"; 
    $result = mysql_query($query);
     
    // tant qu'il y a des fiches
    while ($val = mysql_fetch_array($result)) { ?>
     <option value="<? echo $val["nom_pays"]; ?>"><? echo $val["nom_pays"]; ?></option>
     
     
    <? }
    ?>
    	 </select></td>
       </tr>
       <tr>
         <td width="100">Sexe&nbsp;<font color="#FF0000">*</font></td>
         <td width="100"> <select name="sexe" size="1">
    	                  <option selected value=""></option>
    	                  <option value="homme">Homme</option>
                          <option value="femme">Femme</option>
    	                </select></td>
     
       </tr>
       <tr>
         <td height="40" valign="bottom">Vos centre(s) d'intérêt
         <td>
       </tr>
       <tr>
         <td width="100">Informatique</td>
         <td width="100"><input type="checkbox" name="informatique"></td>
       </tr>
       <tr>
         <td width="100">Politique</td>
     	 <td width="100"><input type="checkbox" name="politique"></td>
       </tr>
       <tr>
         <td width="100">Automobile</td>
    	 <td width="100"><input type="checkbox" name="automobile"></td>
       </tr>
       <tr>
         <td width="100">Sport</td>
    	 <td width="100"><input type="checkbox" name="sport"></td>
       </tr>
       <tr><td height="30"></td></tr>
       <tr>
         <td width="100" height="80" valign="top">Commentaire(s)</td>	
         <td width="100"height="80" valign="bottom"><textarea name="commentaires" rows="6" cols="30"></textarea></td>
       </tr>
       <tr>	
       <td width="200"><input type="submit" name="action" id="action" value="Valider" />
       <input type="reset"></td>
       </tr> 
      </form>
    </table>
     
    <?
    mysql_close(); 
     
    ?>
     
    <br>
    <br>
    <a href="../index.htm">Retour</a>
    </body>
    </html>
    D'avance merci

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 92
    Points : 102
    Points
    102
    Par défaut
    pour utiliser la fonction header c'est en tout début du fichier php. c pour ça que ça marche pas

  6. #6
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 57
    Points : 43
    Points
    43
    Par défaut
    En tout début tu veux dire sur la première ligne du fichier? avant même la balise <html> ???

    Car quand je l'a met en toute première ligne, ben la page ne se charge pas. Ca va très long et puis rien. Toujours la même erreur

  7. #7
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    pour plus de détails sur la fonction header() :

    http://fr3.php.net/manual/fr/function.header.php

    Et ce point là est le plus important, et c'est lui qui engendre la majorité des erreurs ...

    N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichges PHP. Une erreur très classique est de lire un fichier avec include() ou require(), et de laisser des espaces ou des lignes vides, qui génèreront un affichage avant que la fonction header() ne soit appelée. Le même problème existe avec les fichiers PHP/HTML standards.
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  8. #8
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 57
    Points : 43
    Points
    43
    Par défaut
    Merci pour le lien, mais j'ai lu le truc mais franchement je sèche.
    Il y a trop de chose qui sont obscur pour moi la dedant.

    Je comprends toujours pas ou j dois placer mon truc pour que ca fonctionne.

    Ou en revenant sur la quetions de base, comment faire pour que ça plante pas qu'on on actualise (et également que ça n'insère pas plusieurs fois dans la base).

  9. #9
    Membre régulier Avatar de fadex
    Inscrit en
    Septembre 2005
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2005
    Messages : 223
    Points : 105
    Points
    105
    Par défaut
    Merci a vous tous

    donc c vrais que la fonction header va corriger le probleme , mais est ce qu'il y a une autre façon pour corriger le probleme de l'actualisation de la page

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

Discussions similaires

  1. probleme de recuperation d'enregistrement apres le click sur Listview
    Par r.mehdi dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 26/02/2009, 21h10
  2. Réponses: 3
    Dernier message: 06/04/2007, 16h16
  3. [Système] Probleme de requette HTTP sur fichier php
    Par thenightmare1985 dans le forum Langage
    Réponses: 1
    Dernier message: 26/10/2006, 11h36
  4. [Système] probleme Safemode sur unlink()
    Par dfournier dans le forum Langage
    Réponses: 2
    Dernier message: 24/10/2006, 10h00
  5. Réponses: 7
    Dernier message: 20/10/2005, 20h51

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