Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    checkbox ajax con jquery

    Avrei bisogno di passare il valore di un checkbox ad una pagina php che lo registra nel database, senza abbandonare la pagina con il checkbox. Mi sono letto della guida a jquery solo i tre capitoli che riguardano l'uso di ajax e sono arrivato a questa "pensata" ma non funziona:
    codice:
    <html><head>
    <script language="javascript" type="text/javascript" src="jquery-1.7.1.js"></script>
    <script language="javascript" type="text/javascript">
    function invio() {
    $.post({
        url : "database.php";
    });
    }
    </script>
    </head><body>
    <form>
    <input type='checkbox' name='checkbox' value='1' id='checkbox' onclick="invio();" />
    </form>
    </body>
    </html>
    La pagina database.php è:
    codice:
    <?php
    require ('connessione.php');
    $query = "INSERT INTO checkbox (valore) VALUES ('".$_POST['checkbox']."')";
    mysql_query($query,$conn);
    ?>
    registra i dati solo se la carico direttamente dal browser ma non quando metto la spunta o la tolgo al checkbox.

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    data: $("#checkbox :checked").val()
    se il dato non lo invii la pagina database non lo riceve
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Hai ragione, questo "piccolo" particolare mi era sfuggito. Però non funziona lo stesso
    Ora la funzione è:
    codice:
    function invio() {
    $.post({
        url : "database.php";
    	data: $("#checkbox :checked").val();
    });
    }

  4. #4
    codice:
    $(function(){//caricata la pagina...
       $('#myCheckbox').click(function(){//assegno una funzione all'evento click
          $.ajax({
             type: 'POST',
             url: 'database.php',
             data: 'esempio='+$(this).checked
           });
       });
    });
    
    <input type="checkbox" name="esempio" value="on" id="myCheckbox" />
    nella pagina database.php, recuperi il valore (true o false) con:
    $_POST['esempio']

  5. #5
    Grazie, ora viene registrata la nuova riga nel database, l'unica cosa è che mi da sempre undefined come valore anche se cambio il campo value.

  6. #6
    No ce l'ho fatta, era così:
    codice:
    $(function(){//caricata la pagina...
       $('#myCheckbox').click(function(){//assegno una funzione all'evento click
          $.ajax({
             type: 'POST',
             url: 'database.php',
             data: 'esempio='+$(this).val()
           });
       });
    });
    
    <input type="checkbox" name="esempio" value="on" id="myCheckbox" />
    Grazie mille ad entrambi.

  7. #7
    $(this).val() ti da sempre "on" indipendentemente dal fatto che la checkbox sia selezionata o meno.

    $('#myCheckbox:checked').length
    restituirà 0 se la checkbox non è selezionata, 1 se lo è.

  8. #8
    Scusa la lunghezza di questa risposta ma così almeno si capisce cosa intendo fare.

    Io ho bisogno di passare il valore (che è sempre un numero) dell'attributo value del checkbox. Questo indipendentemente se viene selezionato o deselezionato. In sostanza se il checkbox viene selezionato il database.php si occupa di inserire la riga, se viene deselezionato invece cancella la riga.
    I codici delle due pagine attualmente sono:
    checkbox.php
    codice:
    <?php
    require ('connessione.php');
    ?>
    <html><head>
    <script language="javascript" type="text/javascript" src="jquery-1.7.1.js"></script>
    <script language="javascript" type="text/javascript">
    $(function(){//caricata la pagina...
       $('#myCheckbox').click(function(){//assegno una funzione all'evento click
          $.ajax({
             type: 'POST',
             url: 'database.php',
             data: 'id_immagine='+$(this).val()
           });
       });
    });
    </script>
    </head><body>
    <?php
    $query = "SELECT * FROM utente_immagini WHERE id_utente = '44' AND id_immagine = '23'";
    $result = mysql_query ($query,$conn);
    $esiste = mysql_num_rows($result);
    ?>
    <form>
    <input type="checkbox" name="id_immagine" value="23" id="myCheckbox" <?php if ($esiste) echo 'CHECKED'; ?> />
    </form>
    
    // PARTE DI ESTRAZIONE DATI SU CUI HO UN'ALTRA DOMANDA DA FARE
    <?php
    echo "<table>";
    while($row = mysql_fetch_array($result))  { 
    echo "<tr>"; 
    echo "<td>". $row['id_utente']. "</td><td>". $row['id_immagine']. "</td>";
    echo "</tr>"; 
    } 
    echo "</table>";
    ?>
    </body></html>
    database.php
    codice:
    <?php
    require ('connessione.php');
    $query = "SELECT * FROM utente_immagini WHERE id_utente = '44' AND id_immagine = '".$_POST['id_immagine']."'";
    $result = mysql_query ($query,$conn);
    $esiste = mysql_num_rows($result);
    if (!$esiste) {
    	$query = "INSERT INTO utente_immagini (id_immagine,id_utente) VALUES ('".$_POST['id_immagine']."','44')";
    	mysql_query($query,$conn);
    } else {
    	$query = "DELETE FROM utente_immagini WHERE id_utente = '44' AND id_immagine = '".$_POST['id_immagine']."' LIMIT 1";
    	mysql_query($query,$conn);
    }
    ?>
    E mi sembra funzionare come voglio. Naturalmente il numero 44 riferito all'id dell'utente è indicativo, nella realtà poi verrà utilizzato quello dell'utente loggato di Joomla passandolo con codice php.

    Per completezza metto anche la struttura della tabella mysql a cui faccio riferimento:
    codice:
    CREATE TABLE IF NOT EXISTS `utente_immagini` (
      `id_immagine` int(11) unsigned NOT NULL,
      `id_utente` int(11) unsigned NOT NULL,
      PRIMARY KEY (`id_utente`,`id_immagine`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    Ora mi sbilancio rendendomi conto di esagerare, per completezza descrivo tutto ma non pretendo che perdiate altro tempo per aiutarmi, già il risultato ottenuto grazie al vostro generoso aiuto mi soddisfa ampiamente.
    Per la parte di estrazione dati sulla pagina checkbox.php vorrei capire se esiste un modo per far sì che questa parte di codice stampato a video possa venire aggiornato in tempo reale senza dover ricaricare la pagina. Questa però è solo una mia curiosità perché in realtà mi sarebbe più utile mostrare un avviso a scomparsa che segnala se la transazione col server è andata a buon fine o meno, e soprattutto che l'attributo 'CHECKED' del checkbox venisse aggiornato in modo asincrono, in modo che se uno mette la spunta ma la transazione va male la spunta si leva subito e l'utente capisce che deve ripetere la spunta.

  9. #9
    Originariamente inviato da lucavizzi
    $(this).val() ti da sempre "on" indipendentemente dal fatto che la checkbox sia selezionata o meno.

    $('#myCheckbox:checked').length
    restituirà 0 se la checkbox non è selezionata, 1 se lo è.

  10. #10
    Originariamente inviato da giancarlo75
    ... Questo indipendentemente se viene selezionato o deselezionato. In sostanza se il checkbox viene selezionato il database.php si occupa di inserire la riga, se viene deselezionato invece cancella la riga.....

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.