2011-06-28 4 views
1

J'ai créé une page avec le nom edit.php. J'ai bougé sur cette page de action.php en utilisant un bouton Modifier. J'ai récupéré avec succès les valeurs dans les zones de texte respectives et d'autres éléments de formulaire. J'ai un problème que si par erreur cette page edit.php est actualisée toutes les valeurs ont disparu. Quelle est l'autre façon de maintenir les valeurs? Bien que la chose se passe bien si la page n'est pas rafraîchie. Si la variable de session est créée que la façon dont les valeurs sont extraites à la fois de la variable de session et de la base de données?Doute avec récupération des valeurs

Ce que j'ai fait avec le problème .. Je l'ai demandé "ALBUMID" sur la page action.php ..

session_start(); 
$aid = mysql_real_escape_string($_REQUEST['albumid']); 

Maintenant, si action.php page est demandée par edit.php la page en utilisant le bouton d'édition. que j'ai créé une variable de session. et l'a détruit après une requête de mise à jour réussie. Cela signifie que la session est maintenant créée .. si la page est actualisée, les valeurs de session restent également et, par conséquent, les valeurs sont sélectionnées à partir de cette variable.

if($_POST['update']!="") { 
Update query 
session destroyed } 

Que aussi mon problème n'est pas résolu qui est si la page est mise à jour avant de frapper le bouton de mise à jour je perdais toutes les valeurs.

Répondre

0

Les variables de session sont simplement des données que vous mettez dans la superglobale $_SESSION. Leur accès n'est pas différent de l'accès à tout autre tableau, sauf que le tableau de session est automatiquement enregistré pour vous. Tout ce que vous devez vous rappeler est de faire un session_start() avant de faire quoi que ce soit avec la session.

$_SESSION['formfield1'] = $_POST['formfield1']; 
$_SESSION['formfield2'] = $_POST['formfield2']; 
etc... 


<input type="text" name="formfield1" value="<?php echo htmlspecialchars($_SESSION['formfield1']) ?>" /> 

Par défaut, PHP utilise des sessions basées sur des fichiers. Pour le mettre dans une base de données, vous devez écrire vos propres gestionnaires de session et leur indiquer PHP en utilisant session_set_save_handler().

0

Lorsque vous soumettez, enregistrez les valeurs dans les membres $ _SESSION nommés de manière appropriée. Puis sur votre page, si vous ne pouvez pas trouver les membres dans $ _GET/$ _ POST, vous pouvez choisir de les rechercher dans $ _SESSION. Ou vice versa. Chaque fois que l'utilisateur soumet un formulaire, vous devez toujours mettre à jour $ _SESSION afin que les valeurs soient les plus récentes. (dans le cas où ils font marche arrière, ou resoumises, ou autres).

0
session_start(); 
if (!empty($_POST)) { 
    $_SESSION['post'] = $_POST; 
} 
elseif (empty($_POST) && !empty($_SESSION['post'])) { 
    $_POST = $_SESSION['post']; 
} 

N'oubliez pas d'ajouter unset($_SESSION['post']); lorsque vous avez terminé.

+0

il est préférable d'utiliser isset que vide dans ce cas! je pense que – Sourav

+0

'! isset' et'!empty' sont des concepts opposés;) - mais à votre avis, cela ne devrait pas avoir d'importance. 'empty()' ne produira pas d'avertissement si la clé n'existe pas, et empêchera l'affectation si '$ _SESSION ['post'] == array()'; Cependant, 'isset()' lui permettra d'assigner un tableau vide, et le même effet net est obtenu. – Dereleased

+0

Je suis désolé, j'ai essayé d'utiliser ** isset ** au lieu de **! Vide ** – Sourav

0

Si j'ai bien compris votre question, je pense que vous avez besoin de certaines variables de la base de données ainsi que de la session.

Il suffit de mettre la clé de votre ligne de base de données (ou des clés en cas de valeurs multiples) avec d'autres choses. Page, lors du chargement va vérifier les variables de session et quand il trouve la clé, il peut l'utiliser pour récupérer les données de la base de données.

Dans votre page précédente, le code ressemblera à ceci:

$_SESSION["player_key"] = 56; 
    $_SESSION["tournament_key"] = 100; 

Et page en cours, commencer le traitement comme celui-ci:

<?php 
     session_start(); 
     $player = $_SESSION["player_key"]; 
     $tournament = $_SESSION["tournament_key"]; 

     /* 
     * your database connection steps 
     */ 
     $query = "select * from player where pid=".$player; 
     $res = mysql_query($query); 
     /* 
     Now assign values for your forms/components here or anywhere in the page. You don't have  to read anything from the querystring. 
     */ 
    ?> 
+0

oui, expliquez ceci avec un court exemple .. – Aditii

+0

@Aditii allez voir – mihsathe

+0

consulter mes codes modifiés. – Aditii

Questions connexes