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

    recuperare valori da checkbox con stesso name

    ciao a tutti, ho un problema da principiante del php:

    ho 3 checkbox che si chiamano allo stesso modo ma con valori diversi :

    codice:
    <INPUT type="checkbox" name="scelte" value="10-18">
    	<INPUT type="checkbox" name="scelte" value="19-30">
    	<INPUT type="checkbox" name="scelte" value="31-40">
    in php li recupero cosi:
    codice:
    $_POST['scelte'];
    ma se io permettessi di fare scelte multiple?

    come li recupero?

  2. #2
    Utente di HTML.it L'avatar di aserena
    Registrato dal
    Feb 2003
    Messaggi
    310
    Ti ritrovi con un array, i valori li recuperi così:

    $_POST['scelte'][0];
    $_POST['scelte'][1];
    .....

    o semplicemente cicli l'array

    ciao
    La (!) è quella roba che in autunno si intristisce... perche': seccano i piselli, migrano gli uccelli, cadono i marroni, e se poi c'è anche la nebbia non si vede più un caXXo!! by Piero.mac @07/05

  3. #3
    ho usato questo codice:

    codice:
    <?php 
    
    if(!isset($_POST['submit']) || $_POST['submit'] != "inviato"){ ?>
    
    	<FORM action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
    		<INPUT type="checkbox" name="scelta" value="0" tabindex="1">a
    
    		<INPUT type="checkbox" name="scelta" value="1" tabindex="3">b
    
    		<INPUT type="checkbox" name="scelta" value="2" tabindex="2">c
    
    		<INPUT type="checkbox" name="scelta" value="3" tabindex="4">d
    
    		<INPUT type="submit" name="submit" value="inviato">
    	</FORM>
    <?php }
    else {
    	if(isset($_POST['scelta'])){
    		for($i=0; $i<=2; $i++){
    			$e = $i+1;
    			echo "scelta $e :  $_POST['scelta'][$i]";
    		}		
    			
    			
    	}
    
    
    }
    ?>
    e mi restituisce questo errore:

    codice:
    
    Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/html/test_php/scelta_multipla.php on line 18

  4. #4
    Prova così:
    codice:
    <?php 
    
    if(!isset($_POST['submit']) || $_POST['submit'] != "inviato"){ ?>
    
    	<FORM action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
    		<INPUT type="checkbox" name="scelta" value="0" tabindex="1">a
    
    		<INPUT type="checkbox" name="scelta" value="1" tabindex="3">b
    
    		<INPUT type="checkbox" name="scelta" value="2" tabindex="2">c
    
    		<INPUT type="checkbox" name="scelta" value="3" tabindex="4">d
    
    		<INPUT type="submit" name="submit" value="inviato">
    	</FORM>
    <?php }
    else {
    	if(isset($_POST['scelta'])){
    		for($i=0; $i<=2; $i++){
    			$e = $i+1;
    			echo "scelta $e :  ".$_POST['scelta'][$i];
    		}		
    			
    			
    	}
    
    
    }
    ?>

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    534
    echo "scelta $e : $_POST['scelta'][$i]";

    Devi togliere le virgolette a $_POST['scelta'][$i]. E' già considerato stringa dalle virgolette di echo.

    echo "scelta $e : $_POST[scelta][$i]";

    oppure

    echo "scelta $e : {$_POST['scelta'][$i]}";


  6. #6
    niente da fare, mi restitusce questo:
    codice:
    scelta 1 : 2
    scelta 2 :
    scelta 3 :
    anche se io ho selezionato la voce con valore 0 e 2.

    in poche parole legge solo l'ultimo valore immesso

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    534
    <INPUT type="checkbox" name="scelta" value="0" tabindex="1">a



    se vuoi usare l'array devi dichiarare il name come array:

    <INPUT type="checkbox" name="scelta[]" value="0" tabindex="1">a

  8. #8
    Io non ho mai usato questa tecnica (l'uso di array intendo) per fare cose di questo tipo....

    ...per curiosità... prova a vedere quanti valori contiene l'array se selezioni 3 opzioni.... se contiene un valore solo vuol dire che il metodo non funziona, oppure hai sbagliato qualcosa a posteriori.

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    534
    Originariamente inviato da Beppesan
    Io non ho mai usato questa tecnica (l'uso di array intendo) per fare cose di questo tipo....

    ...per curiosità... prova a vedere quanti valori contiene l'array se selezioni 3 opzioni.... se contiene un valore solo vuol dire che il metodo non funziona, oppure hai sbagliato qualcosa a posteriori.
    Ovvio che tutti i name del chekbox devono avere lo stesso array.
    Come nello script sopra, i dati vengono sovrascritti e comparirà solo l'ultimo inserito.


  10. #10
    graize, cosi funziona

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.