Usando javascript+ajax le cose si semplificano molto... ti ho fatto velocemente un esempio (mooooolto migliorabile), dal quale puoi comunque trarre qualche spunto:
paginazione.php
elabora_checkbox.phpCodice PHP:<?php
session_start();
if (!isset($_SESSION['checkbox']))
{
$_SESSION['checkbox'] = array();
}
?>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script>
$(document).ready(function()
{
$('.cb').click (function ()
{
var checkbox = $(this);
var status = '';
if (checkbox.is(':checked'))
{
status = 'seleziona';
}
else
{
status = 'deseleziona';
}
$.ajax({
// in questa chiamata c'è il minimo indispensabile
url: 'elabora_checkbox.php?id=' + checkbox.attr('id') + '&status=' + status
});
});
});
</script>
<?php
$checkboxes = array('cb_01', 'cb_02', 'cb_03', 'cb_04', 'cb_05');
$input = '';
foreach ($checkboxes as $id)
{
if (isset($_SESSION['checkbox'][$id]))
{
$input .= "<input id=\"$id\" class=\"cb\" type=\"checkbox\" name=\"nome\" value=\"valore_5\" checked>";
}
else
{
$input .= "<input id=\"$id\" class=\"cb\" type=\"checkbox\" name=\"nome\" value=\"valore_5\">";
}
}
echo $input;
?>
Codice PHP:<?php
session_start();
if (!isset($_SESSION['checkbox']))
{
$_SESSION['checkbox'] = array();
}
if (isset($_GET['id']) && isset($_GET['status']))
{
$id = $_GET['id'];
$status = $_GET['status'];
if ($status == 'deseleziona')
{
unset($_SESSION['checkbox'][$id]);
}
elseif ($status == 'seleziona')
{
$_SESSION['checkbox'][$id] = true;
}
else
{
// non conosco lo status, gestisci
}
}
else
{
// non ci sono id e status in GET, gestisci
}

Rispondi quotando