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 :

input valeur saisie dans une session


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2012
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 11
    Points : 7
    Points
    7
    Par défaut input valeur saisie dans une session
    Bonjour,
    La valeur affiché de l'input par défaut provient de l'enregistrement d'une table .Si l'utilisateur change la valeur de l'input , j'aimerais la stocker immédiatement dans une session

    comment dois je faire ??

    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    </div></td>  
        <td align="right"> <input type="text" name="txt_id_code_insee" size="20" value="<?=$objResult["id_code_insee"];?>"></td>  
      </td>  
     
    <?
       // on passera les parametres par session mettre les valeurs d'entree de input et non $objResult a voir !!!
     
    $_SESSION['id_code_insee']=$objResult["id_code_insee"];

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Merci de lire le cours sur les formulaires: http://sylvie-vauthier.developpez.co...ulaires#LIII-1

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2012
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 11
    Points : 7
    Points
    7
    Par défaut suite
    je passe bien par le formulaire voir ci dessous
    par défault le code insee affiché est 75000 (provient d'une requete via une table)
    seulement quand l'utilidateur change manuellement le code insee
    par exemple 84000 cela m'affiche toujours la valeur 75000

    merci



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     if($_POST["hdnCmd"] == "Update")  
        {  
        	</script>"; 	
    	echo "<script>alert(\"test:".$_SESSION['id_code_insee']."\")</script>";

    ci dessous appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $_SESSION['id_code_insee']=$objResult["id_code_insee"];
     <td align="right"> <input type="text" name="txt_id_code_insee" size="20" value="<?=$_SESSION['id_code_insee'];?>"></td>  
       <input name="btnAdd" type="button" id="btnUpdate" value="Update" OnClick="frmMain.hdnCmd.value='Update';frmMain.submit();">

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Je ne vois pas à quel moment tu mets la donnée POST sur session, tu peux nous montrer davantage de code pour qu'on comprenne ce que tu essaie de faire ?

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2012
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 11
    Points : 7
    Points
    7
    Par défaut suite
    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
    $strSQL = "SELECT * FROM detail";  
        $objQuery =pg_query($strSQL) or die ("Error Query [".$strSQL."]");  
        ?>  
        <form name="frmMain" method="post" action="<?=$_SERVER["PHP_SELF"];?>">  
        <input type="hidden" name="hdnCmd" value="">  
        <table width="600" border="1">  
        <tr>  
        <th width="198"> <div align="center">id_code_insee </div></th>  
        <th width="30"> <div align="center">Edit </div></th>  
        <th width="30"> <div align="center">Delete </div></th>  
        </tr>  
        <?  
        while($objResult = pg_fetch_array($objQuery))  
        { 
    
    	// ici je mets la valeur du code insee de la table  dans une session 
    	$_SESSION['id_code_insee']=$objResult["id_code_insee"];
    
        ?>  
          
        <?  
        if($objResult["iddetailcamp"] == $_GET["CusID"] and $_GET["Action"] == "Edit")  
        {  
    
    
        ?>  
        <tr>  
        <td><div align="center">  
        <input type="text" name="txtEditCustomerID" size="5" value="<?=$objResult["iddetailcamp"];?>">  
        <input type="hidden" name="hdnEditCustomerID" size="5" value="<?=$objResult["iddetailcamp"];?>">  
        </div></td>  
    
      
    
    
        // ici ca affiche bien le code insee 
        // mais celui d'origine et non le nouveau rentré par l'utilisateur  	
    
    if($_POST["hdnCmd"] == "Update")  
    
        <td align="right"> <input type="text" name="txt_id_code_insee" size="20" value="<?=$_SESSION['id_code_insee'];?>"></td>  
    
        <td colspan="2" align="right"><div align="center">  	
        <input name="btnAdd" type="button" id="btnUpdate" value="Update" OnClick="frmMain.hdnCmd.value='Update';frmMain.submit();">  
        <input name="btnAdd" type="button" id="btnCancel" value="Cancel" OnClick="window.location='<?=$_SERVER["PHP_SELF"];?>';">  
        </div></td>  
        </tr>  
        <?  
        }  
    
    
    
    if($_POST["hdnCmd"] == "Update")  
        {  
        	// afficher pour le test $_POST["hdnEditCustomerID"]
    
    	echo "<script>alert(\"test:".$_SESSION['id_code_insee']."\")</script>"; 
    
    		
        }
    Merci !

  6. #6
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Je ne vois pas l'utilité de stocker cette donnée dans la session, un champ caché serait suffisant (type hidden).
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type="text" name="txt_id_code_insee" size="20" value="<?=$objResult['id_code_insee'];?>" />
    <input name="id_code_insee_default" type="hidden" value="<?=$objResult['id_code_insee'];?>" />
    <input name="btnAdd" type="submit" id="btnUpdate" value="Update" />
    A la validation on obtiendra 2 données en POST :
    -> txt_id_code_insee : valeur saisie
    -> id_code_insee_default : valeur par défaut/originale (non visible par l'utilisateur)

    Ensuite il suffit de faire une comparaison entre ces 2 données.
    SI les 2 sont égales ...(l'utilisateur n'a rien modifié)... ALORS tel traitement/code
    SINON ...(l'utilisateur a modifié).. tel traitement/code


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OnClick="frmMain.hdnCmd.value='Update';frmMain.submit();"
    Tout ceci me semble inutile aussi.
    La valeur du champ "hdnCmd" est déjà "Update", pourquoi rajouter un code JS pour remattre le même non ?
    Pourquoi utiliser un code JS pour soumettre (submiter) un formulaire alors qu'un bouton de type "submit" le fait par défaut ?
    Pourquoi faire compliqué quand cela est simple ?
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  7. #7
    Futur Membre du Club
    Inscrit en
    Avril 2012
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    merci Run mais cela ne marche pas et je prefere rester dans les sessions
    1)
    une syntaxe comme ceci est t'elle possible ?????
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <td align="right"> <input type="text" name="txt_id_code_insee" size="20"  value="<?=$_SESSION['id_code_insee'];?>"  onChange="<? $_SESSION['id_code_insee']=txt_id_code_insee; ?> "></td>
    2)
    la valeur par default doit etre visible pas en hidden et je prefere la mettre dans une session , si l'utilisateur change cette valeur dans le input , j'insere cette valeur dans cette meme session

    merci

  8. #8
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    1) Bien sûr que non vu que c'est exécuté coté client.

    2) Je ne vois toujours pas le code responsable de ce comportement dans les scripts que tu as présenté.

  9. #9
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    la valeur par default doit etre visible pas en hidden et je prefere la mettre dans une session , si l'utilisateur change cette valeur dans le input , j'insere cette valeur dans cette meme session
    Alors tu n'as pas compris le code d'exemple que je t'ai mis, car on peu parfaitement procéder ainsi.
    Dans cet exemple la donnée y été 2 fois : 1 visible (type text) pour que l'utilisateur saisisse la nouvelle valeur et une autre dans un champ caché (type hidden) pour obtenir la valeur originale.


    D'ailleurs, si dès le départ (donc lorsqu'on propose le formulaire) tu stock cette donnée dans la session, et bien après validation lorsqu'on va obtenir la donnée en POST il suffit de réinitialiser cette variable de session avec celle obtenue en POST (du formulaire).
    Suffit de mettre à jour la session avec celle obtenue en POST pour obtenir la nouvelle valeur saisie.


    Mais pour quelle raison tiens tu à mettre cette donnée en session ?
    Sans raison valable ça ne sert à rien, ce n'est pas une question qu'on préfère ou pas.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td align="right"> <input type="text" name="txt_id_code_insee" size="20"  value="<?=$_SESSION['id_code_insee'];?>"  onChange="<? $_SESSION['id_code_insee']=txt_id_code_insee; ?> "></td>
    Ca n'a aucun sens de faire ce code, hormis le code ne soit pas correcte.

    Tu n'as à priori pas une bonne vision du comment se déroule les choses.
    Javascript est interprété/exécuté uniquement coté client, et Php lui est interprété coté serveur.
    C'est radicalement pas la même chose.


    si l'utilisateur change cette valeur dans le input , j'insere cette valeur dans cette meme session
    Pour faire ça simplement : (exemple)
    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
    <?php
    // Récupération des données dans la Bdd
    // création/initialisation de la variable de session
    $_SESSION['id_code_insee'] = $objResult['id_code_insee'];
     
    // On réinitialise la variable de session "id_code_insee" avec celle en POST
    // SI le formulaire est validé et de valeur différente
    if (isset($_POST['id_code_insee']) && $_SESSION['id_code_insee'] != $_POST['id_code_insee']) {
        $_SESSION['id_code_insee'] = $_POST['id_code_insee'];
     
        // Théoriquement cela demande de mettre à jour cette donnée dans la Bdd
        // UPDATE ...
    }
    ?>
     
    <form ...etc...>
    <p>
        <input name="txt_id_code_insee" value="<?=$_SESSION['id_code_insee'];?>" />
        <input name="btnAdd" type="submit" id="btnUpdate" value="Update" />
    </p>
    </form>
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  10. #10
    Futur Membre du Club
    Inscrit en
    Avril 2012
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    ok merci il me semble que j'avance

    si par exemple je fais cela ajout d'un bouton insert et update

    comment puis je recuperer la condition si c'est le bouton update ou insert
    selectionné
    merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <form ...etc...>
    <p>
        <input name="txt_id_code_insee" value="<?=$_SESSION['id_code_insee'];?>" />
        <input name="btnAdd" type="submit" id="btnUpdate" value="Update" />
     <input name="btnAdd" type="submit" id="btnInsert" value="Insert" />
    </p>
    </form>

  11. #11
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    si par exemple je fais cela ajout d'un bouton insert et update

    comment puis je recuperer la condition si c'est le bouton update ou insert
    Théoriquement au moment où tu génère le le formulaire tu devrais déjà savoir la situation (l'action en faite), je dis bien théoriquement.
    (disons c'est le cas le plus fréquent, à mon sens)

    Si c'est bien ça alors tu peux y mettre comme valeur dans le champ caché l'action, comme "insert" ou "update" selon le cas.
    On peu aussi éviter d'utiliser un champ caché et utiliser le bouton submit pour ça, suffit de lui donner comme nom "action" et lui donner l'une des 2 valeurs selon le cas.


    Admettons maintenant que tu n'as aucun moyen de savoir l'action à effectuer, ça sous entend qu'il devrait avoir 2 actions (insert et update) et c'est à l'utilisateur de choisir l'action.
    Et bien là il peu avoir plusieurs façon de faire.

    - Une façon simple c'est de placer 2 boutons (type submit) avec le même nom (genre name="action") dont l'un avec comme valeur "upddate" et l'autre "insert".
    Seul celui qui sera cliqué par l'utilisateur sera retourné (du coup l'autre non).
    Si c'est "update" qui est cliqué par l'utilisateur la valeur dans POST pour "action" sera -> "update".
    (c'est celle que tu utilises)

    - On peu aussi utiliser un groupe de bouton radios (même nom, 2 propositions et un seul choix sera fait.

    On peu imaginer d'autres système encore.

    Dans tous las cas on recevra un couple de nom/valeur dans POST, et c'est la valeur qui dira l'action à faire.


    Tu ne dis toujours pas pourquoi tu utilises une variable session pour ça, théoriquement ce n'est pas utile.
    M'enfin ...
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  12. #12
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Très simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (isset($_REQUEST['btnAdd'])) {
      if ($_REQUEST['btnAdd'] == 'Update') {
      }
      if ($_REQUEST['btnAdd'] == 'Insert') {
      }
    }
    Pourquoi n'as tu pas lu le tutoriel que je t'ai donné ? c'est mentionné pourtant !

  13. #13
    Futur Membre du Club
    Inscrit en
    Avril 2012
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    j'ai bien pu avancer , je vous remercie à tous

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 15/11/2008, 23h14
  2. Réponses: 3
    Dernier message: 25/09/2008, 10h26
  3. récupérer la valeur saisie dans une combo box
    Par whitebird001 dans le forum MFC
    Réponses: 2
    Dernier message: 18/09/2008, 00h42
  4. recuperer la valeur saisie dans une requete
    Par gui-llaume dans le forum VBA Access
    Réponses: 11
    Dernier message: 22/11/2007, 15h37
  5. probleme:recuperer une valeur stockée dans une session
    Par oasma dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 26/03/2007, 00h38

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