Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto
Amazon porta i colori sul suo Kindle da scrittura più grande: schermo Colorsoft a 11 pollici, processore quad-core, penna premium più reattiva e strumenti IA per le note, sono le note salienti. Il salto di prezzo rispetto al modello in bianco e nero si fa sentire, anche se la percezione è quella di trovarsi di fronte a un prodotto di fascia altissima, per veri appassionati
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
Abbiamo intervistato Sumit Dhawan, CEO di Proofpoint, per capire come stia cambiando il mondo della sicurezza con l'avvento dell'intelligenza artificiale e con il ritmo sempre più serrato a cui vengono trovate vulnerabilità nel software. Un problema significativo, che richiederà del tempo per essere risolto (o quantomeno arginato)
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
La parola d'ordine al Nextcloud Summit 2026, che si è tenuto a Monaco, è stata "sovranità". Non come è spesso usato questo termine in politica ma, al contrario, come capacità positiva di decidere il proprio destino tecnologico, con modalità collaborative e aperte. L'Europa dice già molto nel mondo open source, che viene visto come mezzo per ottenere la tanto agognata autonomia digitale
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 25-12-2005, 11:45   #1
Jedi82
Senior Member
 
L'Avatar di Jedi82
 
Iscritto dal: Nov 2001
Città: Roma
Messaggi: 16135
[Php]Lista di checkboxs, come farsi restituire l'ordine esatto di selezione?

Ho una specie di lista della spesa in cui l utente seleziona alcune checkbox ma al momento in cui mi viene restituito il risultato queste escono in ordine sparso, come far si che mi venga resituito l'ordine esattyo in cui l utente le ha selezionate?
Jedi82 è offline   Rispondi citando il messaggio o parte di esso
Old 25-12-2005, 17:05   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da Jedi82
Ho una specie di lista della spesa in cui l utente seleziona alcune checkbox ma al momento in cui mi viene restituito il risultato queste escono in ordine sparso, come far si che mi venga resituito l'ordine esattyo in cui l utente le ha selezionate?
Ciao, intanto auguri!
Vediamo di capire meglio il problema. Tu hai un form del tipo:
Codice:
<form action="...." method="..">
<input type="checkbox" name="check1" value="1">Checkbox 1
<br>
<input type="checkbox" name="check2" value="2">Checkbox 2
<br>
<input type="checkbox" name="check3" value="3">Checkbox 3
<br>
<input type="submit" value="Invia">
</form>
e vuoi sapere l'ordine esatto con cui l'utente ha selezionato le varie checkbox, giusto???
Ci ho pensato un attimo. Delle soluzioni ci sarebbero ma ovviamente hanno bisogno di usare Javascript. La mia idea sarebbe questa (la butto lì, poi ditemi voi):
Codice:
<script type="text/javascript">
<!--
var ord = 1;

function checkbox_onclick (c)
{
    c.name = c.name.replace (/_ord.*$/, "");
    c.name = c.name + "_ord" + ord;
    ord++;
}
//-->
</script>

...ecc...

<form action="...." method="..">
<input type="checkbox" name="check1" value="1" onclick="checkbox_onclick (this); return true">Checkbox 1
<br>
<input type="checkbox" name="check2" value="2" onclick="checkbox_onclick (this); return true">Checkbox 2
<br>
<input type="checkbox" name="check3" value="3" onclick="checkbox_onclick (this); return true">Checkbox 3
<br>
<input type="submit" value="Invia">
</form>
Ecco cosa succede: c'è una variabile globale ord che parte da 1. Ogni volta che viene fatto il click su una checkbox, il nome della checkbox diventa <nome>_ordNNN e il valore di ord viene incrementato.
Proviamo con questa sequenza di esempio:

- l'utente seleziona check1 (diventa check1_ord1)
- l'utente seleziona check3 (diventa check3_ord2)
- l'utente deseleziona check1 (diventa check1_ord3 ma tanto non viene poi inviato)
- l'utente seleziona check2 (diventa check2_ord4)

Se l'utente invia il form, vengono inviati i valori di due checkbox: check2_ord4 e check3_ord2.
A questo punto non dovrebbe essere difficile scoprire, dal lato server, che check3 è stato cliccato prima (ord2) e check2 dopo (ord4).
Spero di essermi spiegato. Fatemi sapere cosa ne pensate!
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 27-12-2005, 14:54   #3
Jedi82
Senior Member
 
L'Avatar di Jedi82
 
Iscritto dal: Nov 2001
Città: Roma
Messaggi: 16135
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?

Auguri anche a te ed aiutatemi!!!!!!!!
Jedi82 è offline   Rispondi citando il messaggio o parte di esso
Old 27-12-2005, 15:46   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
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.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet

Ultima modifica di andbin : 07-01-2006 alle 20:59.
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 07-01-2006, 09:42   #5
Jedi82
Senior Member
 
L'Avatar di Jedi82
 
Iscritto dal: Nov 2001
Città: Roma
Messaggi: 16135
ehm, ho provato a mettere questo codice in una pagina ma non capisco perche non mi funziona. Lo script alla fine puo stare in una sola pagina no? Cmq gentilissimo un codice ad hoc, sei un grande
Jedi82 è offline   Rispondi citando il messaggio o parte di esso
Old 07-01-2006, 18:00   #6
rdefalco
Senior Member
 
L'Avatar di rdefalco
 
Iscritto dal: Feb 2005
Città: Napoli (provincia)
Messaggi: 2372
Domanda: presumibilmente se una checkbox viene selezionata il valore di "ord" si incrementa, mentre quando viene deselezionata creerà un "buco", quindi non sarà possibile usare il contenuto del campo hidden per definire la "posizione precisa" nell'ordinamento, ma solo la posizione rispetto agli altri.

Altrimenti non ho capito niente
__________________
Raffo™ (io, non la birra) | informatica»unisa.it | my terzigno | για να είναι ή για να μην είναι
rdefalco è offline   Rispondi citando il messaggio o parte di esso
Old 07-01-2006, 20:57   #7
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da rdefalco
Domanda: presumibilmente se una checkbox viene selezionata il valore di "ord" si incrementa, mentre quando viene deselezionata creerà un "buco", quindi non sarà possibile usare il contenuto del campo hidden per definire la "posizione precisa" nell'ordinamento, ma solo la posizione rispetto agli altri.

Altrimenti non ho capito niente
Sì, è vero che ci possono essere dei "buchi" (l'utente seleziona e poi deseleziona la stessa checkbox) ma questo non è un problema.
Immaginiamo che dal POST si abbia questa situazione:
Codice:
Array
(
    [check] => Array
        (
            [1] => 1
            [2] => 2
            [4] => 4
            [5] => 5
        )

    [ord_check] => Array
        (
            [1] => 1
            [2] => 7
            [3] => 
            [4] => 8
            [5] => 6
        )
)
Tramite il seguente codice PHP:
Codice:
$ord = $_POST['ord_check'];
$check_ordered = array ();

asort ($ord);
reset ($ord);

while (list($k, $v) = each ($ord))
{
    if (is_numeric ($v))
        array_push ($check_ordered, $k);
}
Adesso il nuovo array $check_ordered contiene:
Codice:
Array
(
    [0] => 1
    [1] => 5
    [2] => 2
    [3] => 4
)
Cioè con l'ordine voluto: il primo checkbox selezionato è il 1 e l'ultimo il 4.

P.S.: Nello script Javascript che ho scritto nel post #4, ho usato document.all, che è supportato solo da IE. Il mio naturalmente era un esempio di base ma va modificato per supportare anche gli altri browser (che usano document.getElementById)!!
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto Kindle Scribe Colorsoft: riduce le cornici e div...
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint L'IA cambia tutte le regole della sicurezza tra ...
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
Rocket Lab acquisisce Iridium: nasce un ...
Una ventola nascosta e un design fuori d...
Display e fotocamera insieme: a Zurigo n...
Lenovo Idea Tab Plus, il tablet per stud...
Un ingegnere di AMD ha riprodotto in cas...
SanDisk Optimus cresce con nuovi SSD cer...
Loongson contro Intel e AMD: dalla Cina ...
Australia, quasi tutti gli under-16 aggi...
Oltre 1.300 miliardi di dollari per la p...
Un nuovo studio mette in dubbio la natur...
Crisi Volkswagen, torna l'ipotesi cessio...
Il CERN spegne il Large Hadron Collider:...
Stranger Than Heaven avrà una storia mol...
Il futuro prezzo di PS6 preoccupa i gioc...
AMD Ryzen 10000 sempre più vicini...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:29.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v