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

    inserimento valori checkbox in database tramite variabili

    ciao a tutti, premetto che è la prima volta che mi cimento in checkbox collegate all'sql e al php. quindi non ne so praticamente niente... allora... ho una serie di checkbox messe cosi:


    codice:
    
     <form id="formconsole" name="formconsole" method="post" action="nuovogioco.php">
    <table width="200">
        <tr>
          <td><label>
            <input type="checkbox" name="console" value="playstation" id="console_0" />
            playstation</label></td>
        </tr>
        <tr>
          <td><label>
            <input type="checkbox" name="console" value="dreamcast" id="console_1" />
            dreamcast</label></td>
        </tr>
        <tr>
          <td><label>
            <input type="checkbox" name="console" value="wii" id="console_2" />
            wii</label></td>
        </tr>
        <tr>
          <td><label>
            <input type="checkbox" name="console" value="xbox" id="console_3" />
            Microsoft Xbox</label></td>
        </tr>
         <tr>
          <td><label>
            <input type="checkbox" name="console" value="snes" id="console_4" />
            Nintendo Snes</label></td>
        </tr>
      </table>
     <input type="submit" name="submit" id="submit" value="Invia" />
     </form>
    ne ho di più, circa una ventina ma ne ho messe poche per brevità...

    ora dovrei fare in modo che i valori delle checkbox selezionate mi finiscano in un database che ho già creato, dove ci sono 5 campi da riempire con i valori delle check (console1, console2 etc etc), in pratica il valore di ogni checkbox selezionata deve riempire un campo diverso (questo mi serve per altre pagine e deve rimanere cosi). la mia idea era di fare un array di 5 valori e di assegnare ad ogniuno di questi una variabile da mandare poi al database con una query... ma appunto non so come fare a recuperare questi valori e assegnargli la variabile...
    nella pagina dove invio le variabili ho già inserito un controllo in php che se ci sono + di 5 checkbox selezionate mi restituisce un errore e se non ce ne è nessuna me ne restituisce un'altro. nel database ho già previsto che i campi da console 2 a 5 possono essere vuoti mentre uno (console1) deve essere per forza pieno. quindi il problema rimane solo mandare questi 5 valori ogniuno in un campo differente del database... come posso fare?

  2. #2
    Utente di HTML.it L'avatar di bode
    Registrato dal
    Feb 2007
    Messaggi
    304
    Vorrei aiutarti ma sinceramente ho capito ben poco, tu dici che hai una tabella con 5 campi e l'utente deve selezionare tra queste 20 console almeno 1 e non piu di 5 e cio' che ha selezionato andrà a finire ciascuno in un proprio campo. Ora se faresti un esempio della tabella con un paio di righe di esempio potrei capire di piu' comunque a prima vista, visto che hai detto che vuoi ( e in questo caso direi che è la soluzione migliore ) usare un array devi aggiungere a ciascun name le parentesi quadre cosi:
    Codice PHP:
      <input type="checkbox" name="console[]" value="dreamcast" id="console_1" /> 
    poi nella pagina dove leggi il contenuto che ti viene passato tramite post la prima cosa che devi fare è vedere quanto è lungo l'array visto che le scelte possono essere da 2 a 5 e quindi qui potresti fare anche il controllo se le scelte fatte soddisfano i tuoi criteri. Dopodichè con un ciclo for che dura la lunghezza dell'array fai la insert. ora se mi spieghi meglio come si chiamano i campi della tabella ti spiego meglio come fare.

  3. #3
    ok grazie, già è molto più chiaro, comunque, nel database ho la tabella in questo modo (separo i campi con un trattino):

    ID - TITOLO - GENERE - CONSOLE1 - CONSOLE2 - CONSOLE3 - CONSOLE4 - CONSOLE5

    praticamente questa tabella mi serve a fare una sorta di database di videogame, dove ho delle pagine di ricerca per genere e per cosnsole per cui il gioco è disponibile, in ogni pagina dove mi devono comparire i risultati per console faccio una query cosi:

    codice:
    <?php
    $console='xbox';
    $result=mysql_query ("SELECT * FROM giochi WHERE console1 = '$console' OR console2 = '$console' OR console3 = '$console' OR console4 = '$console' OR console5 = '$console' ", $conn);
    
    while ($giochi= mysql_fetch_array ($result))
    
    echo ( "" . $giochi[1] ."" . "
    "); 
    
    ?>
    e in questo modo il db mi restituisce i titoli a seconda della console per cui è disponibile, basta che nella pagina di ogni console cambio la variabile $console ed il gioco è fatto. ovviamente i campi delle checkbox li devo mettere nel db con gli stessi valori che poi attribuirò alla variabile $console sennò non trova niente, e a questo ho già provveduto, ogni checkbox ha il value che poi metterò nella relativa pagina console...penso che cosi funzioni bene la cosa, è anche abbastanza pratica... però ho questo intoppo di inserire i valori nel db... poi una cosa, mi fai un esempio di questa cosa del controllo della lunghezza dell'array? io ho fatto in un metodo che funziona ma un più ortodosso...

  4. #4
    stasera ho studiato un pò le funzioni degli array e sono riuscito a fare quello che volevo, solo che c'è un problema... ho usato questo codice:

    codice:
     
    
    $array = $_POST['console'];
    
    $console1 = $array[0]; 
    $console2 = $array[1];
    $console3 = $array[2];
    $console4 = $array[3]; 
    $console5 = $array[4];
    e per il controllo ho usato questo:
    (l'array su $errori è perchè se nell'iserimento del form ci sono più errori ho un echo dell'array errori che me li fa vedere tutti in fila.)


    codice:
    	if (!isset($_POST['console']) || empty($_POST['console']))
    		{
    			$errori[]='<h3>- Non hai inserrito nessuna console</h3>';
    		}
    		
    		
    		//controllo array delle console
    		
    		$array = $_POST['console'];
    		$conteggio = count($array);
    		
    		if ($conteggio > 5)
    		{
    			$errori[]='<h3>- Puoi inserire al massimo 5 console</h3>';
    		}
    ora riesco ad inserire i valori delle variaibili $console1 etc etc... nel database, e a controllare che ce ne sia almeno uno e non più di cinque.
    il problema è che se ce ne sono ad esempio due settate mi restituisce un errore che mi dice:

    Notice: Undefined offset: 2 in ................ on line 74

    l'iserimento funziona lo stesso ma mi da questi errori... come posso fare ad evitarli?

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.