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 :

Rafraichissement formulaire avec résultats sur la même page


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Rafraichissement formulaire avec résultats sur la même page
    Bonjour j'ai le formulaire suivant dont le traitement se fait sur la même page :
    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
     
    echo '<div style="margin-left:580px;position:absolute;color:#000066;width:600px;margin-top=10px;">
    <table><tr height="10px">
    <br><br>
    <center style="width:100px;font-size:20px;background-color:#FF0055;font-weight:bold;margin-left:0px"> Posez votre question </center><br/>
    <form name="questionfaq" method="post" action="#" >
    <b><i> &nbsp Problème : <br/>&nbsp <textarea name="Question" rows="6" cols="55" ></textarea></b></i><br/><br/><br/>
    <center><input type="submit" name="submit" value="Envoyer" ></center>
    </form> </div> ';
     
     
    if(!isset($_POST['Question']))
    echo 'erreur';
    else
    { if(isset($_POST['Question']))
    {
    $question = $_POST['Question'];
    echo($question);
     
    $sqlfaq = "INSERT INTO faq (Titre) VALUES ('".addslashes($question)."');";
    $resultat2=mysql_query($sqlfaq,$connection);
     
    }
    }
    Le résultat est bien entré dans ma base de données mais je suis obligée de faire F5 pour l'afficher sur ma page ce qui fait qu'il me rentre une deuxieme fois ma varible dans la table....Je pensais mettre onclick="window.location.reload()" dans la balise form mais ça ne fonctionne pas...Comment faire?Merci d'avance de vos réponses.

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    faut inverser l'ordre dans ton fichier.
    En gros, au début du script, tu regardes si tu affiches la page pour la premiere fois ou si tu postes ton formulaire
    Dans le premier cas tu affiches directement le formulaire
    Dans le second cas, tu rentres dans ton if, tu fais l'insertion et ensuite tu affiches que l'insertion s'est bien passée

    Exemple avec un champ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if(isset($_POST['monchamp']))
    {
    $monchamp = $_POST['monchamp'];
     
    // insertion dans la base de données
    //...
    echo "Le champ monchamp a pris la valeur $monchamp dans la BDD";
    }
    else
    {
    // j'affiche mon formulaire
    }

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    ça ne fonctionne pas....maintenant à chauqe fois que je rafraichi ma page il me met des champs vide dans la table et ne m'affiche plus mon formulaire.

  4. #4
    Membre actif
    Inscrit en
    Juillet 2007
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 201
    Points : 241
    Points
    241
    Par défaut
    Renseigne (value) tes variables juste apres les avoir inserées.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    textarea  value="<?php echo $_POST['monchamp']; ?>" rows="6" cols="55" ></textarea>

  5. #5
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    1/ donnes le code que tu as fait
    2/ tu n'as pas dit que tu voulais réafficher le formulaire a chaque insertion il me semble. Il suffit de sortir le formulaire du else et de le remplir avec les données.
    En reprenant l'exemple a un champ:
    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
     
    if(isset($_POST['monchamp']))
    {
    $monchamp = $_POST['monchamp'];
     
    // insertion dans la base de données
    //...
    echo "Le champ monchamp a pris la valeur $monchamp dans la BDD";
    }
    else
    {
    // on initialise les variables à vide pour ne pas avoir d'erreur
    $monchamp = "";
    }
    // j'affiche mon formulaire
    ?>
    <form name="monform" ...>
     <input type="text" name="monchamp" value="<?php echo $monchamp;?>" />
    </form>

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    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
    <?
    session_start();
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    	"http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/
    	xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
     
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1 "/>
    <title>Bayard faq</title>
       <SCRIPT language="JavaScript">
          function pop(id) {
             window.open("popupfaq.php?id="+id,"","width=600,height=500,scrollbars=yes")
          }
       </SCRIPT>
    </head>
    <body>
     
    <?
     
    echo '<link rel="stylesheet" type="text/css" href="styleMenu.css"> '; //le fichier style pour le menu d'onglet
    include("./ConfigBackGround.php");
    echo '  </head> 
    		<body>';
    error_reporting(E_ALL);
    include("../connexion.php");
    include("./textDefilant.php");
     
     
    $date=date("d-m-Y");
     
    include("./PseudoEnteteBayard.php");
    //partie affichage
    echo "<B>
    	<div style='padding: 20px;position:absolute' bgcolor='#F5F5F5'>";		
    	echo'<p align=center>
          <h1>Questions fréquentes</h1>
       </p>
       <ol>';
     
    $SQL = "SELECT * FROM faq ORDER BY hits DESC";
    $result = mysql_query($SQL);
    while($val = mysql_fetch_array($result)) { 
       echo'<li><A href="javascript:pop('.$val["ID"].')" style="margin-left:20px;color:#8800FF;font-size:16px;">'.$val["Titre"].'</A></li>';
    } 
      echo' </ol></div>';
    //fin affichage	
     
    //début partie formulaire	
    echo '<div style="margin-left:580px;position:absolute;color:#000066;width:600px;margin-top=10px;">
       <table><tr height="10px">
    	<br><br>
     <center style="width:100px;font-size:20px;background-color:#FF0055;font-weight:bold;margin-left:0px"> Posez votre question </center><br/>
    <form name="questionfaq" method="post" action="#">
    <b><i> &nbsp Problème : <br/>&nbsp <textarea name="Question" rows="6" cols="55"></textarea></b></i><br/><br/><br/>
    <center><input type="submit" name="submit" value="Envoyer"></center>
    </form>	</div>	';
     
    ///fin partie formulaire
     
    //traitement
    if(!isset($_POST['Question']))
    echo 'erreur';
    else
    { if(isset($_POST['Question']))
    {
    $question = $_POST['Question'];
     
     
     $sqlfaq = "INSERT INTO faq (Titre) VALUES ('".addslashes($question)."');";
    	$resultat2=mysql_query($sqlfaq,$connection);
    	unset($_POST['Question']);
     
    }
    }
     
    		mysql_close($connection);
    ?>
    </body></html>
    Je fais une faq
    ceci est le code complet de ma page :
    à gauche sont situées toutes les questions déjà posée quand on clique on ouvre un popup.
    à droite mon formulaire où la personne pose sa question .

  7. #7
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    D'accord, et donc à quel endroit dans le code as-tu fait les modifications que je t'ai expliquées au dessus?

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    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
    echo '<div style="margin-left:580px;position:absolute;color:#000066;width:600px;margin-top=10px;">';
     
    //traitement
    if(isset($_POST['Question']))
    {
    $question = $_POST['Question'];
     $sqlfaq = "INSERT INTO faq (Titre) VALUES ('".addslashes($question)."');";
    	$resultat2=mysql_query($sqlfaq,$connection);
     
     
    echo "Le champ monchamp a pris la valeur $question dans la BDD";
    }
    else
    {
    // on initialise les variables à vide pour ne pas avoir d'erreur
    $question = "";
    }
     
    //affichage formulaire
     echo'<center style="width:100px;font-size:20px;background-color:#FF0055;font-weight:bold;margin-left:0px"> Posez votre question </center><br/>
    <form name="questionfaq" method="post" action="#">
    <b><i> &nbsp Problème : <br/>&nbsp <textarea name="Question" value="'.$_POST["Question"].'" rows="6" cols="55"></textarea></b></i><br/><br/><br/>
    <center><input type="submit" name="submit" value="Envoyer"></center>
    </form>
    </div>';
    9a me fait le meme tour : dès que je rafraichi ma page si par exemple ma dernière question était help?? il va me la mettre dans ma table autant de fois que je réactualiserais.
    Et à l'affichage il y a toujours une question de retard...

  9. #9
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Fiou, j'ai compris ce que tu voulais faire. Je suis pas certain que c'était ce qui était expliqué au début

    En gros, tu dois faire les actions dans cet ordre :
    1/ J'insère dans ma base la question s'il y en a une
    2/ J'affiche la liste de mes questions (donc la question insérée sera présente)
    3/ Je propose un formulaire pour insérer une nouvelle question.

    De ce qu'on avait compris, tu voulais d'abord dire "l'insertion s'est bien passée" et ensuite on avait compris que tu voulais reremplir le formulaire avec les données insérées.

    Pour le F5, si tu veux éviter que ca reposte la question il va falloir, après l'insertion dans la base de données utiliser la fonction header() mais il faut faire ca au tout début du script (avant meme d'afficher du html etc) pour rediriger vers ton script mais sans poster de formulaire (et donc relister toutes les questions)

    Le mieux reste de séparer l'affichage de la page dans un script et l'insertion dans la base dans un autre script...

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    okok je vais essayé je n'ai jamais fait de script. C'est du script html?

    Pour le header dedans je met :

    header("mapage.php")?

  11. #11
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Oui, en faisant attention au bug de headers already sent

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    j'ai trouvé une solution : j'ai pris le code d'un mini chat en le mélangeant au mien et tout fonctionne voici la solution :

    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
    //affichage des questions
    echo "<B>
    	<div style='padding: 20px;position:absolute' bgcolor='#F5F5F5'>";		
    	echo'<p align=center>
          <h1>Questions fréquentes</h1>
       </p>
       <ol>';
     
    $SQL = "SELECT * FROM faq ORDER BY hits DESC";
    $result = mysql_query($SQL);
    while($val = mysql_fetch_array($result)) { 
       echo'<li><A href="javascript:pop('.$val["ID"].')" style="margin-left:20px;color:#8800FF;font-size:16px;">'.$val["Titre"].'</A></li>';
    } 
      echo' </ol></div>';
     
     
     
    //affichage du formulaire
    echo '<div style="margin-left:580px;position:absolute;color:#000066;width:600px;margin-top=10px;">';
     
     
     
     echo'<center style="width:100px;font-size:20px;background-color:#FF0055;font-weight:bold;margin-left:0px"> Posez votre question </center><br/>
    <form name="questionfaq" method="post" action="faq.php?insert_question">
    <b><i> &nbsp Problème : <br/>&nbsp <textarea name="Question" value="" rows="6" cols="55"></textarea></b></i><br/><br/><br/>
    <center><input type="submit" name="submit" value="Envoyer"></center>
    </form>
    </div>';
     
     
    ?>
    </body></html>
    <?
    //insertion dans la base de donnée et refresh
    if (isset($_GET['insert_question']))
    {
    if($_POST['Question'] !== "")
    {
     
     
    $question = $_POST['Question'];
     $sqlfaq = "INSERT INTO faq (Titre) VALUES ('".addslashes($question)."');";
    	$resultat2=mysql_query($sqlfaq,$connection);
    echo "<meta http-equiv=\"refresh\" content=\"0; url=faq.php\">";
    }
    else
    {
    echo "<meta http-equiv=\"refresh\" content=\"0; url=faq.php\">";
    }
    }
    mysql_close($connection);
    ?>
    En tout cas merci à tous pour votre aide

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

Discussions similaires

  1. [PHP 5.3] Système d'appel avec menu sur la même page
    Par redoran dans le forum Langage
    Réponses: 6
    Dernier message: 02/05/2012, 19h25
  2. Envoi d'un formulaire et rester sur la même page
    Par Marie.B dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 30/08/2009, 11h22
  3. Formulaire qui renvoie sur la même page
    Par agnaou dans le forum Langage
    Réponses: 4
    Dernier message: 05/03/2009, 20h32
  4. [Conception] formulaire et résultat sur la même page
    Par ph_anrys dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 13/07/2006, 16h47

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