Je pense qu’il n’a pas spécialement de problèmes pour faire passer les variables de ses listes au travers d’un formulaire mais plutôt de les conserver en « mémoire » le temps de pouvoir faire autre chose.
Vu que tu utilises des sessions en fait, je vois pas spécialement le problème. Si tu stockes tes variables (choix_liste1 prix, choix_liste2 prix, choix2_liste1 prix, choix2_liste2 prix) dans des variables de sessions, tu les garderas tout au long du processus du moment que le formulaire, la page de traitement du formulaire etc… fonctionne sur la même session. Utilises des variables du style $_SESSION[‹ liste1 ›] pour cela. Le mieux est de boucler tes résultats pour éviter de faire 10000 traitements dans le genre:
[code]<?php
// on admet que liste1 est ta première liste et que les variables sont passées
// dans un tableau liste1[]
foreach ($liste1 as $value) {
$_SESSION[‹ liste1 ›][] = $value; // on enregistre toutes les valeurs de liste1 dans le tableau de session $_SESSION[‹ liste1 ›][]
}
// pareil pour liste2[]
foreach ($liste2 as $value) {
$_SESSION[‹ liste2 ›][] = $value; // on enregistre toutes les valeurs de liste2 dans le tableau de session $_SESSION[‹ liste2 ›][]
}
?>[/code]
On va utiliser les crochets vides pour le tableau de session afin de ne pas s’occuper de gérer les lignes du tableau. Ca faciletera grandement les opérations dessus, comme les effacements, ajouts etc… et nous évitera d’écraser des données par mégarde 
Pour effacer les données, un truc du genre:
[code]<?php
// On affiche les résultats des tableaux avec une boîte à cocher pour l’effacement
print « <form method=« POST » action=« effacer.php »> »;
foreach ($_SESSION[‹ liste1 ›] as $key => $value) { // tableau liste1[]
print « $value <input type=« checkbox » name=« effacer1[] » value= »$_SESSION[‹ liste1 ›][$key]" />";
}
foreach ($_SESSION[‹ liste2 ›] as $key => $value) { // tableau liste2[]
print « $value <input type=« checkbox » name=« effacer2[] » value= »$_SESSION[‹ liste2 ›][$key]" />";
}
print « »;
// effacer.php
foreach ($effacer1 as $v) { // on efface les entrées de la liste 1
unset($_SESSION[‹ liste1 ›][$v]);
}
foreach ($effacer2 as $k) { // on efface les entrées de la liste 2
unset($_SESSION[‹ liste2 ›][$v]);
}
?>[/code]
J’ai fait ça vite fait, mais le principe est là. Après tout ça, tu peux stocker tous les résultats dans une table MySQL lors de la validation finale et détruire la session pour éviter les erreurs.
Tu peux aussi faire comme fser le propose, ça peut être plus simple à gérer. Maintenant, tout dépend tes besoins, ça peut grandement alourdir les traitements si tu as un nombre conséquent d’utilisateurs, de faire xx requêtes toutes les 2 secondes sur les tables. A toi de voir 
Je passerais quand même l’id de session (<?php echo SID?>) dans l’URL en cas que l’utilisateur ait désactivé complètement les cookies (tout dépend encore une fois à quel public est destiné ton application).
(note: <? echo SID?> n’est pas nécessaire, si --enable-trans-sid a été activé à la compilation de PHP.)