Quote:
|
Originariamente inviato da Jedi82
no la cosa è un pò piu complessa e cioè ho 23 check tutte con lo stesso name e cioe: giocatori[] quindi un array, come posso fare? Javascript però mi da un qualcosa lato client, io dovrei fare in modo che la mail che invio a tutti rispetti l'ordine delle chekkature capisci?
|
Sì, in effetti il codice l'ho scritto senza sapere il livello di complessità del tuo problema.
Ed è anche vero che quando si hanno tanti elementi simili in un form, si possono usare gli array, visto che php "vede" poi i dati postati come un array. Ma subito non ci avevo pensato che potevi aver fatto così.
Rimedio subito. Ecco un codice, simile al precedente, ma che tiene in considerazione dei valori come array:
Codice:
<script type="text/javascript">
<!--
var ord = 1;
function checkbox_onclick (c)
{
var name = "ord_" + c.name; /* compone nome "ord_<nome_checkbox>" */
if (c.checked)
document.all[name].value = ord;
else
document.all[name].value = "";
ord++;
}
//-->
</script>
...
<form action="...." method="post">
<input type="checkbox" name="check[1]" value="1" onclick="checkbox_onclick (this); return true">Checkbox 1<br>
<input type="checkbox" name="check[2]" value="2" onclick="checkbox_onclick (this); return true">Checkbox 2<br>
<input type="checkbox" name="check[3]" value="3" onclick="checkbox_onclick (this); return true">Checkbox 3<br>
<input type="checkbox" name="check[4]" value="4" onclick="checkbox_onclick (this); return true">Checkbox 4<br>
<input type="checkbox" name="check[5]" value="5" onclick="checkbox_onclick (this); return true">Checkbox 5<br>
<input type="hidden" name="ord_check[1]" value="">
<input type="hidden" name="ord_check[2]" value="">
<input type="hidden" name="ord_check[3]" value="">
<input type="hidden" name="ord_check[4]" value="">
<input type="hidden" name="ord_check[5]" value="">
<input type="submit" value="Invia">
</form>
In pratica adesso ci sono anche dei campi hidden che servono esclusivamente per tenere e poi postare l'ordine di marcatura delle checkbox. Ogni volta che selezioni e "spunti" una checkbox, il corrispondente valore hidden viene impostato al valore di ord.
Quando ricevi il post dal lato php, devi andare ad analizzare l'array ord_check per sapere quale è stato l'ordine. Ecco un esempio di un post stampato con il print_r del php (cioè ho fatto un print_r ($_POST); ):
Codice:
Array
(
[check] => Array
(
[2] => 2
[4] => 4
[5] => 5
)
[ord_check] => Array
(
[1] =>
[2] => 2
[3] =>
[4] => 1
[5] => 3
)
)
In questo caso il checkbox [4] è stato selezionato per primo, il [2] per secondo e il [5] per terzo.