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

    Checkbox per mostrare contenuti

    Buona sera, sto realizzando uno script che mi mostri una funzione però se la checkbox è selezionata
    codice:
    <form action="action.php" method="post">
    <label><input type="checkbox" name="chose[\'graphic\']" value="graphic"> Grafico</label>
    <label><input type="checkbox" name="chose[\'skinner\']" value="skinner"> Skinner</label>
    <label><input type="checkbox" name="chose[\'founder\']" value="founder"> Founder di un forum</label>
    <label><input type="checkbox" name="chose[\'student\']" value="student"> Studente Universitario</label>
    </form>
    E per il codice ho fatto così, ovviamente le funzioni le ho create, solo che non mi mostra il contenuto nonostante io le abbia selezionate

    Codice PHP:
    $question $_POST['chose'];
    if (isset(
    $question['graphic'])) {
        
    graphic_layout();
    }
    if (isset(
    $question['skinner'])) {
        
    skinner_layout();
    }
    if (isset(
    $question['founder'])) {
        
    founder_layout();
    }
    if (isset(
    $question['student'])) {
        
    student_layout();


  2. #2
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    devi togliere gli apici dagli input chose[graphic] e non chose['graphic']

    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  3. #3
    Non funziona lo stesso
    codice:
    <label><input type="checkbox" name="chose[graphic]" value="graphic"> Grafico</label>
    <label><input type="checkbox" name="chose[skinner]" value="skinner"> Skinner</label>
    <label><input type="checkbox" name="chose[founder]" value="founder"> Founder di un forum</label>
    <label><input type="checkbox" name="chose[student]" value="student"> Studente Universitario</label>
    Codice PHP:
    $question $_POST['chose'];
    if (isset(
    $question['graphic'])) {
        
    graphic_layout();
    }
    if (isset(
    $question['skinner'])) {
        
    skinner_layout();
    }
    if (isset(
    $question['founder'])) {
        
    founder_layout();
    }
    if (isset(
    $question['student'])) {
        
    student_layout();


  4. #4
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Prova a togliere il nome e a richiamarle in ordine numerico dell'array




    ps: ma non faresti prima chiamandole semplicemente col nome dato come chiave dell'array e controllando direttamente da $_POST se settata?

  5. #5
    Nel name non ci devi mettere un array, l'array viene composto poi al submit.

    codice:
    <label><input type="checkbox" name="chose" value="graphic"> Grafico</label>
    <label><input type="checkbox" name="chose" value="skinner"> Skinner</label>
    <label><input type="checkbox" name="chose" value="founder"> Founder di un forum</label>
    <label><input type="checkbox" name="chose" value="student"> Studente Universitario</label>

  6. #6
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    Originariamente inviato da BlitzKrieg
    Nel name non ci devi mettere un array, l'array viene composto poi al submit.

    codice:
    <label><input type="checkbox" name="chose" value="graphic"> Grafico</label>
    <label><input type="checkbox" name="chose" value="skinner"> Skinner</label>
    <label><input type="checkbox" name="chose" value="founder"> Founder di un forum</label>
    <label><input type="checkbox" name="chose" value="student"> Studente Universitario</label>


    1. è formalmente sbagliato perchè i checkbox devono avere nomi diversi (altrimenti otterrai il valore solo dell'ultimo)
    2. al submit non viene composto nessun array
    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da BlitzKrieg
    Nel name non ci devi mettere un array, l'array viene composto poi al submit.

    codice:
    <label><input type="checkbox" name="chose" value="graphic"> Grafico</label>
    <label><input type="checkbox" name="chose" value="skinner"> Skinner</label>
    <label><input type="checkbox" name="chose" value="founder"> Founder di un forum</label>
    <label><input type="checkbox" name="chose" value="student"> Studente Universitario</label>
    Se volevi far generare un array al massimo dovevi mettere chose[], cosi si sovrappone il valore e invia l'ultimo

  8. #8
    Originariamente inviato da las
    devi togliere gli apici dagli input chose[graphic] e non chose['graphic']


    Originariamente inviato da las
    1. è formalmente sbagliato perchè i checkbox devono avere nomi diversi (altrimenti otterrai il valore solo dell'ultimo)
    2. al submit non viene composto nessun array
    Veramente i checkbox non devono avere nomi diversi, che sia formalmente sbagliato mi giunge nuova. Al contrario in questo caso devono avere lo stesso nome.
    Quello che viene inviato con il mio esempio è ..?nomecheckbox=1&nomecheckbox=2&nomecheckbox=3&..
    Che in molti linguaggi viene poi interpretato come un array nel request (mi vengono in mente RPG-CGI/ASP/JSP).
    Il PHP si comporta diversamente e nel request ti viene restituito solo l'ultimo valore e non me ne ricordavo, però erano le 2 di venerdì notte quindi mi auto-perdono.
    (Oh magari rispondere con un pò meno di sufficienza sarebbe un'idea da non scartare).

    Originariamente inviato da RoTeam
    Se volevi far generare un array al massimo dovevi mettere chose[], cosi si sovrappone il valore e invia l'ultimo
    Non che proprio si sovrappone il valore e invia l'ultimo, viene inviata più volte la stessa variabile con più valori (vedi sopra).
    Comunque sì per il resto hai perfettamente ragione, in PHP si fa così, sorry .

  9. #9
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    Codice PHP:
    <?php
    $question 
    $_POST['chose'];
    if (isset(
    $question['graphic'])) {
        echo 
    "HO SELEZIONATO GRAPHIC
    "
    ;
    }
    if (isset(
    $question['skinner'])) {
        echo 
    "HO SELEZIONATO SKINNER
    "
    ;
    }
    if (isset(
    $question['founder'])) {
        echo 
    "HO SELEZIONATO FOUNDER
    "
    ;
    }
    if (isset(
    $question['student'])) {
        echo 
    "HO SELEZIONATO STUDENT
    "
    ;
    }
    ?>
    <form action="<?= $_SERVER['PHP_SELF'];?>" method="post">
    <label><input type="checkbox" name="chose[graphic]" value="graphic"> Grafico</label>
    <label><input type="checkbox" name="chose[skinner]" value="skinner"> Skinner</label>
    <label><input type="checkbox" name="chose[founder]" value="founder"> Founder di un forum</label>
    <label><input type="checkbox" name="chose[student]" value="student"> Studente Universitario</label>
    <input type="submit" name="invia" value="Invia" />
    </form>
    il codice sopra funziona (provare per credere) e per farlo funzionare ho solo tolto gli apici come avevo suggerito, niente di più.
    per completezza diciamo anche che la stessa cosa si potrebbe fare mettendo chose[], nessuno l'ha mai negato.

    Originariamente inviato da BlitzKrieg
    <label><input type="checkbox" name="chose" value="graphic"> Grafico</label>
    <label><input type="checkbox" name="chose" value="skinner"> Skinner</label>
    Questo invece è sbagliato, per le ragioni già dette, non stò a ripeterle, mi pare siano condivise da tutti.
    Se quando ti ho corretto sono sembrato 'sufficente' mi spiace, il mio obbiettivo era solo quello di evitare che passasse un informazione sbagliata sul forum; cerchiamo tutti informazioni su internet e sappiamo bene quanto sia fastidioso trovare qualcosa su un forum, perdere del tempo a provarla dando per scontato che sia giusta per poi scoprire che è sbagliata.

    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

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.