2010-06-16 15 views

Répondre

2

Vous pouvez résoudre ce en utilisant la session-variables. De cette façon, les données ne seront pas écrasées. Voici un exemple:

$_SESSION['formdata'][] = $_POST['value1']; 
$_SESSION['formdata'][] = $_POST['value2']; 

Une fois que vous rechargerez le script les données seront toujours disponibles une autres valeurs qui poussent dans le tableau ne remplacent pas les anciens. Vous venez de le faire à nouveau:

$_SESSION['formdata'][] = $_POST['value3']; 
$_SESSION['formdata'][] = $_POST['value4']; 

Appel _SESSION $ [ « formdata »] - tableau que vous avez maintenant toutes les 4 valeurs stockées là-dedans. Je suis enfin à la maison, et comme promis, je propose une autre solution en utilisant des cookies, car les sessions ne fonctionnent pas pour vous, comme nous l'avons déjà discuté. Alors on y va ...

Tout d'abord, nous devons penser à la façon dont nous voulons nommer le cookie. Je suggère que nous le fassions par adresse ip et tout suffixe, pour nous assurer que c'est bien l'utilisateur qui a déjà rempli les formulaires précédents.

On pourrait donc se présenter comme suit:

$dataArray[] = $_POST['value1']; 
$dataArray[] = $_POST['value2']; 

Ensuite, nous avons besoin de stocker les données dans un cookie. Nous faisons cela en sérialisant le tableau, puisque nous ne voulons pas enregistrer des centaines de cookies. Cela fonctionnerait comme ceci:

$cookievalue = serialize($dataArray); 

// Here we actually generate a cookiename in the format of "IP_formdata" 
setcookie($_SERVER['REMOTE_ADDR'] . '_formdata', $cookievalue); 

Jusqu'ici tout va bien. Au sein de la forme suivante, nous récupérons les cookies-données et unserialize les données, afin que nous puissions étendre ce tableau:

$dataArray = unserialize($_COOKIE[$_SERVER['REMOTE_ADDR'] . '_formdata'); 

Maintenant, nous pouvons ajouter d'autres valeurs au tableau de la deuxième forme:

$dataArray[] = $_POST['value3']; 
$dataArray[] = $_POST['value4']; 

Une fois que toutes les valeurs supplémentaires ont été mis dans ce tableau que nous avons sERIALIZE encore et le stocker dans le nouveau nouveau:

$cookievalue = serialize($dataArray); 
setcookie($_SERVER['REMOTE_ADDR'] . '_formdata', $cookievalue); 

nous pouvons maintenant répéter ces étapes pour toutes les autres formes. Rappelez-vous simplement que si vous voulez travailler avec les données, vous devez d'abord désérialiser les données et les stocker dans un tableau.

Et n'oubliez pas comme je l'ai déjà dit dans les commentaires: L'utilisateur peut désactiver les cookies, alors le tout ne fonctionnera pas. Vous pouvez également ajouter des contrôles supplémentaires pour vérifier que c'est l'utilisateur correct ou quelque chose. Je n'ai pas testé le code, mais je pense que cela devrait fonctionner de la sorte et j'espère pouvoir vous aider ou au moins vous donner un indice :)

+0

C'est exactement ce que Je fais ... Mais ce n'est pas workling –

+0

vérifier si vous êtes involontairement écrit une ligne comme '$ _SESSION [' formdata '] [] = array();' n'importe où dans votre code. Si c'est le cas, le tableau sera effacé. Retirez simplement une ligne comme ça. Que se passe-t-il lorsque vous exécutez ceci: echo '

'; print_r($_SESSION['formdata']); echo '
'; –

+0

Il me sort avec une seule valeur qui est insérée à la fin soumettre –

3

En PHP:

$arr[] = value; 
$arr[] = other value; 

En HTML:

<input type="text" name="arr[]" /> 
<input type="text" name="arr[]" /> 
+0

Mais cela remplace ma dernière valeur insérée dans le tableau –

+2

Non, ce n'est pas le cas. –

+0

J'ai un tableau $ _SESSION ['bannersize'] [], chaque fois qu'un formulaire est soumis, la valeur $ _POST ['bannersize'] devrait être ajoutée dans le tableau avec les valeurs précédentes, mais cela ne se produit pas, chaque nouvelle valeur remplace la dernières valeurs résultant en Je suis disponible avec une seule valeur à l'index 0e –