Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    70

    controllo su button radio

    Codice PHP:
    <SCRIPT LANGUAGE="JavaScript"> 
          function validazione(form2) 
              { 
          if(form2.voto.value == ""){
        alert("Devi selezionare la canzone da votare prima di inviare il voto")
        form2.voto.focus();
                 return false
                }
            return true; 
              } 
          </SCRIPT>

    form action="Inserisci_Voto.php" method="post" name="form2">

       <?
       
    echo "<table border='1'><tr><td>[b]Titolo Canzone</td><td>[b]ID</td><td>[b]Media voti</td><td>[b]Numero Votazioni</td><td colspan='3'><center>[b]Vota!</center></td></tr>";

       while (
    $row mysql_fetch_array($result2)) 
        { 
         echo 
    "<tr><td> $row[nome_canzone] </td>";
         
    $id $row[id_canzone];     
         echo 
    "<td>$id</td>";
         
    //media voti più alta tra tutte le canzoni
         
    $best best_canzone();
         
    $media media($id); 
         
    //La media più alta sarà visibile perchè stampata in grassetto e nel colore verde
         
    if ( $media == $best) echo "<td>[b]<h3>$media</td>";
         else if ( 
    $media != $best) echo "<td>$media</td>";
         
    //stampo anche il numero di votazioni per ogni canzone, per apprezzare maggiormente la media
         
    $num_voti numero_voti($id);
         echo 
    "<td>$num_voti</td>";
         echo 
    "<td><input type='radio' name= 'id_canzone' value='$id' ></td>";
         
        } 
       
       
    //Stampa dei bottoni radio per la votazione
       
    echo "<td><select name='voto'>";
       for(
    $i=1$i<=10$i++)
        {
         echo 
    "<option value='$i'>$i</option>";
        }
       echo 
    "</select></td>";
       
    ?>
       <td><input type="submit" value="Vota!" onSubmit="return validazione(this);"></td></tr>
       </table>
       </form>
    PRemetto ke di jacascript so poco o niente, sto cercando di effettuare un controllo grazie all'aiuto di vecchie discussioni trovate sul forum ma nn riesco a farlo funzionare.
    Essenzialmente ho dei radio button e una select da cui seleziono un voto da 1 a 10. Inizialmente i radio button non sono selezionati e vorrei che nel caso l'utente non selezioni un radio button(che corrisponde ad una canzone) e clicca su invia si apra un alert che dica che prima deve selezionare una canzone. Ho provato come sopra ma non succede niente, sembra che il controllo venga saltato.
    Mi date una mano per favore?

  2. #2
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    ciao zerbo

    prova così
    Codice PHP:
    <script>
    function validazione(MyForm)
      {
      var SongChecked= false;
      var RadioColl=MyForm.getElementsByTagName('input');

      for (var i=0; i < RadioColl.length; i++)
        {
        if (RadioColl[i].type == 'radio')
          {
          if (RadioColl[i].checked == true && RadioColl[i].name == 'id_canzone')
            {
            SongChecked=true;
            break;
            }
          }
        }
      if (SongChecked == true) return true
      else
        {
        alert("Devi selezionare la canzone da votare prima di inviare il voto");
        return false;
        }
      }
    </script>

    <form action="Inserisci_Voto.php" method="post" name="form2" onSubmit="return validazione(this)">

       <?
       
    echo "<table border='1'><tr><td>[b]Titolo Canzone</td><td>[b]ID</td><td>[b]Media voti</td><td>[b]Numero Votazioni</td><td colspan='3'><center>[b]Vota!</center></td></tr>";

       while (
    $row mysql_fetch_array($result2))
        {
         echo 
    "<tr><td> $row[nome_canzone] </td>";
         
    $id $row[id_canzone];     
         echo 
    "<td>$id</td>";
         
    //media voti più alta tra tutte le canzoni
         
    $best best_canzone();
         
    $media media($id);
         
    //La media più alta sarà visibile perchè stampata in grassetto e nel colore verde
         
    if ( $media == $best) echo "<td>[b]<h3>$media</td>";
         else if ( 
    $media != $best) echo "<td>$media</td>";
         
    //stampo anche il numero di votazioni per ogni canzone, per apprezzare maggiormente la media
         
    $num_voti numero_voti($id);
         echo 
    "<td>$num_voti</td>";
         echo 
    "<td><input type='radio' name= 'id_canzone' value='$id' ></td>";
         
        }
       
       
    //Stampa dei bottoni radio per la votazione
       
    echo "<td><select name='voto'>";
       for(
    $i=1$i<=10$i++)
        {
         echo 
    "<option value='$i'>$i</option>";
        }
       echo 
    "</select></td>";
       
    ?>
       <td><input type="submit" value="Vota!"></td></tr>
       </table>
       </form>
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    70
    Originariamente inviato da dottwatson
    ciao zerbo

    prova così
    Codice PHP:
    <script>
    function validazione(MyForm)
      {
      var SongChecked= false;
      var RadioColl=MyForm.getElementsByTagName('input');

      for (var i=0; i < RadioColl.length; i++)
        {
        if (RadioColl[i].type == 'radio')
          {
          if (RadioColl[i].checked == true && RadioColl[i].name == 'id_canzone')
            {
            SongChecked=true;
            break;
            }
          }
        }
      if (SongChecked == true) return true
      else
        {
        alert("Devi selezionare la canzone da votare prima di inviare il voto");
        return false;
        }
      }
    </script>

    <form action="Inserisci_Voto.php" method="post" name="form2" onSubmit="return validazione(this)">

       <?
       
    echo "<table border='1'><tr><td>[b]Titolo Canzone</td><td>[b]ID</td><td>[b]Media voti</td><td>[b]Numero Votazioni</td><td colspan='3'><center>[b]Vota!</center></td></tr>";

       while (
    $row mysql_fetch_array($result2))
        {
         echo 
    "<tr><td> $row[nome_canzone] </td>";
         
    $id $row[id_canzone];     
         echo 
    "<td>$id</td>";
         
    //media voti più alta tra tutte le canzoni
         
    $best best_canzone();
         
    $media media($id);
         
    //La media più alta sarà visibile perchè stampata in grassetto e nel colore verde
         
    if ( $media == $best) echo "<td>[b]<h3>$media</td>";
         else if ( 
    $media != $best) echo "<td>$media</td>";
         
    //stampo anche il numero di votazioni per ogni canzone, per apprezzare maggiormente la media
         
    $num_voti numero_voti($id);
         echo 
    "<td>$num_voti</td>";
         echo 
    "<td><input type='radio' name= 'id_canzone' value='$id' ></td>";
         
        }
       
       
    //Stampa dei bottoni radio per la votazione
       
    echo "<td><select name='voto'>";
       for(
    $i=1$i<=10$i++)
        {
         echo 
    "<option value='$i'>$i</option>";
        }
       echo 
    "</select></td>";
       
    ?>
       <td><input type="submit" value="Vota!"></td></tr>
       </table>
       </form>
    Funziona alla perfezione al primo colpo, sei un grande...grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    70
    Già che ci sono ne approfitto per capire meglio. Essenzialmente quando l'utente invia viene chiamata la funzione validazione a cui passo il form stesso come argomento(this). LA funzione fapassare tutti i radio button e nel caso uno sia selezionato(checked) ritorna true altrimenti mostra l'alert e ritorna false. Giusto?
    Non mi è chiaro cosa fa questa riga di codice:
    Codice PHP:
    var RadioColl=MyForm.getElementsByTagName('input'); 
    Forse in radiocoll ottengo i nomi di tutti gli elementi del form, in questo caso dei radio button e del select?PEr questo poi si fa l'if: if (RadioColl[i].type == 'radio')

    Almeno cosi capisco per bene.

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.