Selezione multipla checkbox in un ciclo do while

  • Creatore Discussione Creatore Discussione MGbyte78
  • Data di inizio Data di inizio

MGbyte78

Nuovo Utente
6 Mag 2006
20
0
0
Salve, avrei bisogno di un aiuto. A dir la verità non è solo questione di PHP ma anche di Javascript. Io ho creato una pagina dove vengono visualizzati dei record recuperati da un database attraverso un ciclo while in php. Per ogni record ho inserito un campo checkbox con il nome "messaggi[]" . In questo modo ogni record viene identificato da un elemento dell' array "messaggi[]" e quando un utente seleziona un chekbox viene cancellato il rispettivo record. Ora il problema sta nel voler creare anche un tasto che dia la possibilità in un colpo solo di selezionare tutti i campi checkbox. Questo è chiaro che si fa in javascript, però il sistema creato in php non mi dà la possibilità di usare tale script perchè non riconosce il name che ho dato ai campi checkbox "messaggi[]". Di seguito vi invio lo script per capire meglio il tutto:

<html>

<head><title>prova</title></head>

<script language="JavaScript">

function checkAll()

{


i=0;

do

{



box = eval("document.form.messaggi" + "[" + i + "]");
if (box.checked == false) box.checked = true;

else

if (box.checked == true) box.checked = false;

i++;

}

while (i<=document.form.length);



}



function conferma()
{

chiediconferma=confirm('Sei sicuro di voler cancellare il/i messaggi ?');
if (chiediconferma==true)
{
location.href="delete.php";
}
else

return false;

}

</script>

<body>


<?



$dbhost = 'localhost';
$dbname = 'dream';
$dbuser = 'root';
$dbpass = '';

$conn = mysql_connect($dbhost,$dbuser,$dbpass)
or die ("connessione fallita");

mysql_select_db($dbname,$conn)
or die("database error");

$strsql = "select * from check";

$query = mysql_query($strsql) or die (" error");

?>

<table border="1" width="100%">
<form name="form" method="post" action="delete.php" onsubmit=" return conferma();">

<?


while ($row=mysql_fetch_array($query))

{

$id = $row['id'];




?>
<tr><td width="5%"><input type='checkbox' name="messaggi[]" value="<? echo $id ?>"></td><td><? echo $row['messaggio'] ?></td></tr>




<?


}

?>

<tr><td><input type="submit" value="cancella messaggio"></td></tr>
<tr><td><input type="button" value="Seleziona tutto" onClick="checkAll()"></td></tr>

</form>


</table>

</body>

</html>
 
Puoi fare una cosa, invece di richiamare i campi del database tramite array, puoi richiamarli in questo modo:
PHP:
$element = mysql_fetch_row($query);
 list($var1, $var2, $var3 etc...) = $element;
i vari $var1, $var2 e $var3 stanno ad indicare i vari campi della tabella, ad esempio se i campi sono tre: ID, NOME, TESTO
$var1 equivale a ID, $var2 a NOME e $var3 a TESTO. Ovviamene i nomi delle variabili sono a tua scelta.
A tal punto non dovresti più avere il problema dell'array.
Spero di esserti stato d'aiuto.
 

Discussioni simili