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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7
    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
    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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7
    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 expérimenté
    Inscrit en
    Juillet 2007
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 201
    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
    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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7
    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
    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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7
    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...

+ 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, 20h25
  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, 12h22
  3. Formulaire qui renvoie sur la même page
    Par agnaou dans le forum Langage
    Réponses: 4
    Dernier message: 05/03/2009, 21h32
  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, 17h47

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