Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre
Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre
Abbiamo provato Google Pixel 11, il più accessibile della nuova gamma: chip Tensor G6 condiviso con i modelli Pro, fotocamera 48 MP con Magic Capture e Stili Fotografici, display Actua da 3000 nit e batteria da 4985 mAh. Ecco come si comporta nell'uso quotidiano, e cosa cambia davvero rispetto a Pixel 11 Pro e Pro XL
Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship
Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship
Google Pixel 11 Pro XL debutta in Italia con il nuovo Tensor G6, lo Zoom Pro fino a 120x, il display Super Actua da 3600 nit e la new entry HiLight riservata ai modelli Pro: lo abbiamo provato in anteprima per diversi giorni prima del lancio commerciale, tra fotocamera generativa, ricarica ancora indietro rispetto ai rivali e un prezzo che parte da 1399 euro
Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti
Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti
Con un semplice dialogo in linguaggio naturale e la potenza di una scheda video di fascia alta è possibile costruire software funzionante da zero, senza scrivere una riga di codice e senza inviare un solo byte dei propri dati a server esterni
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-05-2006, 19:34   #1
anonimizzato
 
Messaggi: n/a
[PHP] dinamicizzare elenco checkbox

Ciao,

ho un problema concettuale, voglio dinamicizzare un elenco di campi checkbox i cui nomi di campo sono elencati a DB.

Faccio una select e li elenco uno ad uno in output e fin qui nessun problema.

Ora voglio però leggere quali di questi sono "checked" in modo da tenere la spunta una volta inviata la form.

Come faccio?

Dato per assunto che la cosa deve essere completamente dinamica ovvero se aggiungessi/togliessi record a DB lo stesso script continui a funzionare senza modifiche del caso.

Coscio che forse non è facile da capire per come mi spiego vi chiedo come si fà a recuperare in post il valore di un campo il cui name è dinamico es:

<input type="checkbox" name="<?php echo $myrow['campo']; ?>" ... />

Grazie.
  Rispondi citando il messaggio o parte di esso
Old 28-05-2006, 21:22   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da Sgurbat
Ciao,

ho un problema concettuale, voglio dinamicizzare un elenco di campi checkbox i cui nomi di campo sono elencati a DB.

Faccio una select e li elenco uno ad uno in output e fin qui nessun problema.

Ora voglio però leggere quali di questi sono "checked" in modo da tenere la spunta una volta inviata la form.

Come faccio?

Dato per assunto che la cosa deve essere completamente dinamica ovvero se aggiungessi/togliessi record a DB lo stesso script continui a funzionare senza modifiche del caso.

Coscio che forse non è facile da capire per come mi spiego vi chiedo come si fà a recuperare in post il valore di un campo il cui name è dinamico es:

<input type="checkbox" name="<?php echo $myrow['campo']; ?>" ... />

Grazie.
È possibile. Il problema sta solamente nel nome da dare ai checkbox.

Dal punto di vista del PHP, i dati li puoi prendere usando le variabili speciali $_GET e $_POST. Sono array associativi, quindi se sai il nome del campo, lo prendi direttamente con $_POST['nomecampo'] ma puoi anche fare un foreach ($_POST as $campo => $valore).

Se però hai anche altri campo (testo, hidden, ecc...) rischi di confondere i campi dei checkbox con gli altri. Quindi l'ideale sarebbe quello di mettere un prefisso nel nome dei checkbox:
Codice:
name="chk_<?php echo $myrow['campo']; ?>"
A questo punto, puoi fare:
Codice:
foreach ($_POST as $campo => $valore)
{
    if (substr ($campo, 0, 4) == "chk_")
    {
        $nome_checkbox = substr ($campo, 4);
        ....
    }
}
Questa è una possibile soluzione (e probabilmente non l'unica) che mi è venuta in mente.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2006, 19:05   #3
anonimizzato
 
Messaggi: n/a
Perfetto funziona, in quanto riesco a leggere il campo dopo il submit.

Ora però ho un altro problema che la mia scarsa conoscenza di PHP mi limita nel risolvere.

Nel ciclo do while con il quale costruisco dinamicamente i checkbox

Codice PHP:
$checked "";
if(
$nome_checkbox == $myrow_sel['genere_nome']){
 
$checked 'checked="checked"';

quando faccio il primo ciclo foreach per individuare i campi checkbox

Codice PHP:
foreach ($_POST as $campo => $valore){
            
   if (
substr ($campo04) == "chk_"){
             
    
$nome_checkbox substr ($campo4);
            
  }
     

la variabile $nome_checkbox assume di volta in volta, giustamente, solo l'ultim o dei valori letti essendo ogni volta sovrascritta nel caso i campi fossero due o più.

Come faccio per memorizzare tutti i campi che vengono spuntati?

Grazie ancora.
  Rispondi citando il messaggio o parte di esso
Old 29-05-2006, 19:26   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da Sgurbat
quando faccio il primo ciclo foreach per individuare i campi checkbox

Codice PHP:
foreach ($_POST as $campo => $valore){
            
   if (
substr ($campo04) == "chk_"){
             
    
$nome_checkbox substr ($campo4);
            
  }
     

la variabile $nome_checkbox assume di volta in volta, giustamente, solo l'ultim o dei valori letti essendo ogni volta sovrascritta nel caso i campi fossero due o più.

Come faccio per memorizzare tutti i campi che vengono spuntati?
Li puoi, ad esempio, memorizzare in un array temporaneo. Poi successivamente farai altre elaborazioni sui checkbox spuntati, suppongo.
Codice:
$checkbox_spuntati = array ();   /* Array vuoto */

foreach ($_POST as $campo => $valore)
{
    if (substr ($campo, 0, 4) == "chk_")
    {
        $nome_checkbox = substr ($campo, 4);
        array_push ($checkbox_spuntati, $nome_checkbox);
    }
}

....

foreach ($checkbox_spuntati as $chk)
{
    ....altre elaborazioni...
}
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2006, 20:02   #5
anonimizzato
 
Messaggi: n/a
perfetto ho fatto come hai detto (cosa che in effetti mi era venuta in mente di fare quella dell'array) ed ora funziona.

ho messo il ciclo foreach all'interno del do while per controllare ogni volta se il campo spuntato coincide con quello generato.

Azz! però non era proprio semplice semplice (almeno per me).

Thanks again!
  Rispondi citando il messaggio o parte di esso
Old 29-05-2006, 20:11   #6
anonimizzato
 
Messaggi: n/a
Perdona un'ultima domanda:

facendo il ciclo foreach

foreach ($_POST as $campo => $valore)

la chiave è il nome del campo quindi

chk_campo1
chk_campo2
...

mentre valore è il valore assegnato al relativo campo

es:


chk_campo1 = 1
chk_campo1 = 2


non riesco bene a capire qual'è lo schema logico con cui vengono memorizzati questi dati all'interno dell'array associativo $_POST.

Bye.
  Rispondi citando il messaggio o parte di esso
Old 29-05-2006, 20:23   #7
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da Sgurbat
Perdona un'ultima domanda:
Nessun problema!

Quote:
Originariamente inviato da Sgurbat
facendo il ciclo foreach

foreach ($_POST as $campo => $valore)

la chiave è il nome del campo quindi

chk_campo1
chk_campo2
...

mentre valore è il valore assegnato al relativo campo

es:


chk_campo1 = 1
chk_campo1 = 2


non riesco bene a capire qual'è lo schema logico con cui vengono memorizzati questi dati all'interno dell'array associativo $_POST.
Prova a mettere nella pagina:
Codice:
<pre>
<?php print_r ($_POST); ?>
</pre>
Così ti stampa tutta la struttura dell'array in modo chiaro.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2006, 20:25   #8
anonimizzato
 
Messaggi: n/a
Capito!!!

Fico il print_r non lo conoscevo mica

  Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre Recensione Google Pixel 11: non ha l'HiLight dei...
Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship Google Pixel 11 Pro XL: fotocamera al top, batte...
Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti Non sai programmare? Ecco cosa si può far...
Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto Recensione Samsung Galaxy Z Fold8 Ultra: il pieg...
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing" Insta360 X6: Dolby Vision, 8K e montaggio "...
Sennheiser Momentum 5, i nuovi auricolar...
Serie A e Serie B al via: guida ai nuovi...
CMF Buds Neo, il sub-brand di Nothing pr...
GTA 6 è già un successo: i preordini sta...
Una Visa scaduta può ancora pagar...
I migliori robot aspirapolvere in offert...
The Duskbloods non cambia la direzione d...
Un weekend di ribassi eccezionali su Ama...
Cosa succede se l'IA diventa una persona...
Tutta la stagione NFL 2026/2027 è su DAZ...
I 3 portatili in offerta migliori di tut...
iPhone 17 Pro e Pro Max ai minimi storic...
SK hynix, il boom dell'HBM finisce in bu...
Linktour Alumi, test drive: la microcar ...
Dopo l'atterraggio, il razzo spaziale ci...
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: 16:24.


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