2010-12-15 19 views
0

Ce que j'ai jusqu'à présent est une page paginée, montrant tous les utilisateurs dans un système de base de données. Chaque page montre 30 utilisateurs et a une case à cocher à côté de chaque utilisateur, ce dont j'ai besoin est un moyen pour les utilisateurs de sélectionner et désélectionner ces utilisateurs et pour que ces sélections se propagent, donc si l'utilisateur retourne à la page 1, tous les utilisateurs de la page 1 seront toujours vérifiés.

J'ai également besoin d'un moyen d'enregistrer cette information, de sorte qu'une fois que l'utilisateur a regardé toutes les pages et clique sur un formulaire de soumission, toutes les informations des utilisateurs vérifiés peuvent être traitées. Je pense à utiliser javascript pour enregistrer les informations et les sessions PHP pour le stocker, mais avec la façon dont j'essaie maintenant, quand un utilisateur clique sur une case à cocher, il n'est pas coché.

Quelqu'un at-il une meilleure façon de le faire/voir comment je peux résoudre ce problème?

Merci.

<script type="text/javascript"> 
function log_export($str) { 
document.check.data.value = $str; 
document.check.submit(); 
} 
</script> 

<?php 
if(isset($_POST['data'])) { 
    echo $_POST['data']; 
} 
?> 

<form name="check" method = "post" action = ""> 
<input type="hidden" name="data"> 
    <input type="checkbox" name="A" onclick="log_export('1')" /> 
    <input type="checkbox" name="B" onclick="log_export('2')" /> 
    <input type="checkbox" name="C" onclick="log_export('3')" /> 
</form> 

Répondre

0

Pourquoi vous ne changez pas votre méthode de formulaire pour GET et faire le lien qu'il contient donc la pagination tous les paramètres transmis au formulaire et le numéro de page. Je pense que cela rend tout plus simple pour gérer ce cas avec les paramètres transmis sur l'URL par rapport à celui publié.

vous pouvez créer ces liens comme celui-ci:

for ($i =0; $i < $max_page; $i++){ 
echo "{$_SERVER['REQUEST_URI']}?$_SERVER['QUERY_STRING']&p={$i}"; 

et il vous suffit de changer votre backend à utiliser $_GET au lieu de $_POST.

1

Peu de façons de faire cela, mais j'éviterais d'utiliser javascript pour le faire. Vous pouvez utiliser un tableau dans votre $ _SESSION pour conserver la liste sur plusieurs pages.

<form name="check" method = "post" action = ""> 
    <input type="checkbox" name="person[A]" /> 
</form> 

(Note: Les éléments de formulaire sont nommés personne [A], personne [B] ... etc, donc on peut y accéder comme un tableau en php et vous rendre la vie plus facile.)

ensuite, dans le php, vous pouvez le stocker dans la session ...

$_SESSION['saved_list'] = $_REQUEST['person']; 

de cette façon, contiendra la saved_list variable de session la personne de tableau avec toutes les cases à cocher en elle. Vous devrez faire attention de ne pas écraser le tableau chaque fois cependant, afin d'ajouter ...

$_REQUEST['person'] = array_merge($_SESSION['saved_list'], $_REQUEST['person']); 

... avant cela devrait les garder (si je me souviens de mes fonctions correctement de fusion).

Vous pouvez également utiliser html pour enregistrer les cases cochées. Lorsque la page 2 reçoit les résultats de la page 1, elle pourrait les afficher en tant qu'éléments cachés à la fin du formulaire de la page 2. De cette façon, ils peuvent exister à travers les pages, mais cela pourrait devenir un peu lourd avec 30 noms par page.

Je suggère de le stocker dans un tableau de session php, cela ne devrait pas vraiment impliquer l'utilisation de Javascript, il suffit de trop compliquer les choses.