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.