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

    checkbox spuntato a fasi alterne

    codice HTML:
    <form name="form_ins" method="post" action="">
    <label>Seleziona nome:<br />
                    <input type="checkbox" name="nome" value="1b10bd">nome1<br />
                    <input type="checkbox" name="nome" value="1b15gg">nome2<br />
                    <input type="checkbox" name="nome" value="1b20nd">nome3<br />
    </label>
    </form>

    Ho questo form, identico ad un altro form di un'altra pagina che uso per lo stesso sito con stesso codice php che li funziona ma in questa pagina mi da un errore (ho gia provato a ricopiare il codice tre volte) ossia quando metto una spunta ad un qualsiasi nome mi spunta anche il primo nome, se ne spunto otolgo la spunta a un altro la spunta al primo nome scompare, per ricomparire se ripeto l'azione, è sempre il primo checkbox che si spunta e "de-spunta" a fasi alterne ogni volta che interagisco con gli altri checkbox, sapreste dirmi per favore da cosa può dipendere

    Grazie

  2. #2
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,781
    il codice che hai postato è regolare, il problema non è li

  3. #3
    La cosa strana è che se annido un'altra label, come ho fatto sotto, non lo fa più, vorrie però capire perchè ha questo comportamento, anche senza annidare un'altra label dovrebbe spuntare una sola casella alla volta.

    Ho provato, senza annidamento, anche a validare la pagina e in xtml strict non mi da nessun errore.

    Vincent.Zeno posso chiedere anche nella sezione php per lo stesso problema oppure è multiposting?

    codice HTML:
    <form name="form_ins" method="post" action="">
    <label>
                <label>Nome:<br />
                    <input name="nome" size="50" type="text" />
                </label>
    
    
    Seleziona nome:<br />
                    <input type="checkbox" name="nome" value="1b10bd">nome1<br />
                    <input type="checkbox" name="nome" value="1b15gg">nome2<br />
                    <input type="checkbox" name="nome" value="1b20nd">nome3<br />
    </label>
    </form>

  4. #4
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,781
    non puoi annidare label, e il comportamento anomalo dipende da altri fattori: probabilmente valori di sessione.

    prima di spostare il topic in php (che non sappiamo ancora se coinvolto) controlla le tue procedure e tutti i valori temporanei.
    per rintracciare il problema magari prova ad usare un file nuovo con nomi e valori dei marcatori differenti da quelli che usi.

    se poi hai certezza che php sia coinvolto posta un po' di codice e ti sposto il thread

  5. #5
    Ho fatto come hai detto, ho cambiato persino spazio web e creato un nuovo db, con una sola tabella per fare la prova ma il problema è sempre lo stesso

    allego il codice della pagina completo del php

    Codice PHP:
    <?php
    if($_POST) {
        
    inserisci();
    }
    else {
        
    mostra();
    }

    function 
    inserisci()
    {

    require 
    'config.php';

    require 
    'connect.php';

        
    // recupero i campi "stringa"
        
    $nome trim($_POST['nome']);

        if(
    get_magic_quotes_gpc())
            {
                
    $nome  stripslashes($nome);
            }
            
        
    $nome mysql_real_escape_string($nome);

        
    // recupero gli altri campi
        
    $lavoro  strval($_POST['lavoro']);

        
    // preparo la query
        
    $query "INSERT INTO lavori (nome,lavoro) VALUES ('$nome','$lavoro')";

        
    // invio la query
        
    $result mysql_query($query);

        
    // controllo l'esito
        
    if (!$result
            {
                die(
    "Errore nella query $query: " mysql_error());
            }
            
        
    //recupero l'id
        
    $id_inserito mysql_insert_id();

        
    //chiudo la connessione
        
    mysql_close();
        
            
    $messaggio urlencode("dati archiviati");
            
    header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);
    }

    function 
    mostra()
    {
        
    // messaggio
        
    if(isset($_GET['msg']))
            echo 
    '<b>'.$_GET['msg'].'</b><br /><br />';
            
        
    ?>
        <form name="" method="post" action="">
              <p>
                <label>nome:
                    <input name="nome" type="text" />
                </label>
              </p>

              <p>
                <label>lavoro: <br />
                    <input name="lavoro" type="checkbox" value="lavoro1" />Lavoro1 <br />
                    <input name="lavoro" type="checkbox" value="lavoro2" />Lavoro2 <br />
                    <input name="lavoro" type="checkbox" value="lavoro3" />Lavoro3 <br />
                    <input name="lavoro" type="checkbox" value="lavoro4" />Lavoro4 <br />
                    <input name="lavoro" type="checkbox" value="lavoro5" />Lavoro5 <br />
                    <input name="lavoro" type="checkbox" value="lavoro6" />Lavoro6 <br />
                </label>
              </p>

              <p>
                <input name="invia" type="submit" value="Invia" />
              </p>
        </form>
    <?php ?>

  6. #6
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, il tuo codice non è troppo corretto anche se il comportamento di per sè è giusto.
    Il label infatti ha una funzione "toggle", cioè "alterna" la selezione del controllo a cui è associato.
    Ora, è possibile associare il label ad un controllo usando l'attributo "for" oppure includendo il controllo stesso dentro l'elemento label.
    Praticamente tu hai quest'ultima situazione, infatti cliccando qualsiasi cosa che stà dentro il tag label avviene la funzione toggle, che però viene attribuita al primo elemento (il quale probabilmente viene considerato come elemento associato a quel label).
    In sostanza una situazione del genere è corretta:
    codice:
    <label>nome:
     <input name="nome" type="text" />
    </label>
    mentre questo è meno corretto:
    codice:
    <label>lavoro: <br />
     <input name="lavoro" type="checkbox" value="lavoro1" />Lavoro1 <br />
     <input name="lavoro" type="checkbox" value="lavoro2" />Lavoro2 <br />
     <input name="lavoro" type="checkbox" value="lavoro3" />Lavoro3 <br />
     <input name="lavoro" type="checkbox" value="lavoro4" />Lavoro4 <br />
     <input name="lavoro" type="checkbox" value="lavoro5" />Lavoro5 <br />
     <input name="lavoro" type="checkbox" value="lavoro6" />Lavoro6 <br />
    </label>
    Non ha senso (e non è corretto) usare un label per un gruppo di più elementi.
    Dovresti piuttosto avere un label per ogni elemento input, del tipo:
    codice:
    lavoro:<br>
    <label><input name="lavoro" type="checkbox" value="lavoro1" />Lavoro1</label><br>
    <label><input name="lavoro" type="checkbox" value="lavoro2" />Lavoro2</label><br>
    O nel caso usare l'attributo "for".
    Mentre se vuoi applicare un'etichetta che racchiuda graficamente un gruppo di elementi, puoi usare <fieldset> e <legend> in questo modo:
    codice:
    <form name="form_ins" method="post" action="">
     <fieldset>
      <legend>Lavoro:</legend>
      <label><input name="lavoro" type="checkbox" value="lavoro1" />Lavoro1</label><br>
      <label><input name="lavoro" type="checkbox" value="lavoro2" />Lavoro2</label><br>
     </fieldset>  
    </form>
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  7. #7
    Grazie del chiarimento, ora funziona tutto

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.