Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    POST di array di valori: necessito di parentesi quadre?

    Ho una domanda.... una perplessità da vecchio programmatore ASP.

    Voglio inviare un array di checkbox aventi lo stesso nome tramite POST.

    Solo che quando arriva a riprendere il valore ottengo solamente quello dell'ultima checkbox selezionata.

    Ho visto che la soluzione è specificare un nome che espliciti la struttura ad array grazie alle parentesi quadre:

    nomecheckbox[]

    Ok ho capito.
    Ma.... perchè si fa così?

    Su ASP un doppio nome viene gestito automaticamente e genera una stringa CSV (tipo nomecheckbox="12, 23, 45, 94"

    Su PHP invece non fa nè una semplice concatenazione, nè genera automaticamente l'array.

    In pratica devo aggiungere nel codice di markup le parentesi quadre, altrimenti sul linguaggio server non funziona (!!!).

    Cioè mi pare assurdo :berto:
    E se la stessa pagina invia dati a pagine in linguaggi diversi, tipo PHP e ASP?
    Sono costretto da PHP ad aggiungere le parentesi quadre che specificano l'array di input; cosa che ad una pagina ASP non serve.

    Devo veramente metter mano al codice HTML per far funzionare il codice PHP?

    Sicuramente mi sfugge qualcosa.... perchè così non avrebbe senso.

    Me lo spiegate?

  2. #2
    invece ti assicuro che è molto più conveniente perchè quando usi le parenetsi quadri in PHP crei un arrayu in cui basta recuperare gli indici per visualzizare qualcosa. ad esempio

    <input type="checkbox" name="check[]" value="1" />
    <input type="checkbox" name="check[]" value="2" />
    <input type="checkbox" name="check[]" value="3" />

    quando clicchi su SUBMIT basta un ciclo for per esaminare i valori dell'array check[]

    for ($i=0; $i<count($_POST['check']); $i++)
    echo "check = ".$_POST['check'][$i]."
    ";

  3. #3
    Che sia più pratico mi va bene.

    Però è meno logico, secondo me. Sarà che con ASP ero abituato a pensarla diversamente.

    Il fatto che sia un array è già specificato dal fatto che hanno lo stesso nome. E difatti ad ASP basta quello per capire che è un insieme di valori (anche se contesto che venga restituita una stringa anzichè un array).

    Con PHP devo mettere un paio di parentesi che sono di fatto superflue.

    Perchè non fa la stessa cosa in automatico senza parentesi?

    E' previsto un 3° comportamento nel caso io specifichi un name multiplo, senza le parentesi?
    Non mi pare. Il 3° caso semplicemente non funziona (restituisce solo l'ultimo checkbox).

    A mio parere è un comportamento errato, fuorviante.

    Che diventi un array è ottimo (mi chiesi al tempo perchè ASP non lo facesse, anzichè concatenare in una stringa)..... è l'obbligo delle parentesi quadre che non mi va giù.

    Tutti gli altri linguaggi che ho incontrato non ne avevano bisogno. Javascript, come ASP, capisce da solo che è un array (è già previsto nella natura della proprietà html, a prescindere dal valore).

    C'è un motivo?

  4. #4
    Inoltre sto notando una cosa scomodissima.

    Se faccio
    Codice PHP:
    $destinatari $_POST['Destinatari']; 
    non ottengo un array!!! VVoVe:

    Codice PHP:
    echo $_POST['Destinatari'][0]; 
    funziona, mentre
    Codice PHP:
    echo $destinatari[0]; 
    no!!!! :berto:
    E se non voglio lavorare direttamente


    CORREZIONE:
    Non ho ancora finito di scrivere il post ma ho trovato la soluzione.

    Applicavo la trim durante l'assegnamento a $destinatari, e quindi ottenevo una stringa!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.