php _ checkbox mysql _

  • Creatore Discussione Creatore Discussione Sargon
  • Data di inizio Data di inizio

Sargon

Utente Attivo
22 Mar 2012
45
0
0
Ciao a tutti ! Ho una domanda da porvi in merito alle check box.

Ho realizzato un semplice database costituito da una serie di campi (autore, titolo, anno, casa editrice etc.:). Tramite un form in html ed una pagina in php mando direttamente i dati verso un database mysql. Il problema insorge quando voglio inserire delle check box.
Ad esempio vorrei inserire il campo genere :

html

<input type="checkbox" name="genere" value="horror"/> horror
<br />
<input type="checkbox" name="genere" value="fantasia"/> fantasia
<br />
<input type="checkbox" name="genere" value="storia"/> storia
<br />


la parte in php è costituita da seguente codice
PHP:
$autore=$_POST['autore']; 
$titolo=$_POST['titolo']; 
$anno=$_POST['anno'];
$casa editrice=$_POST['casa editrice']; 
$genere=$_POST['genere']; 


// 

$db_host =
$db_user = 
$db_password =
$db_name = 

 $db = mysql_connect($db_host, $db_user, $db_password); 
  //
mysql_query("SET NAMES utf8");
//
  if ($db == FALSE) 
    die ("Errore nella connessione. Verificare i parametri nel file
config.inc.php"); 

  mysql_select_db($db_name, $db) 
    or die ("Errore nella selezione del database. Verificare i parametri nel
file config.inc.php"); 
    $query = "INSERT INTO db (autore, titolo, anno, casa editrice, genere) VALUES ('$autore', '$titolo', '$anno', '$casa editrice', '$genere','")"; 


    if (mysql_query($query, $db)) 
    echo "The record is in the database"; 
  else 
    echo "Errore durante l'inserimento"; 

//endif;   
  mysql_close($db); 
 // chiude la verifica della presenza dei dati 
?>

Strutturata così ..... il valore della check box che verrà inserito nel database sarà sempre l'ultimo..... come posso fare per far si che non si creino problemi? ad esempio vorrei inserire tutti tre i valori contemporaneamente.... grazie MILLE!!!!:hammer:
 
ciao
intanto una cosa: non è bene chiamare le checkbox con lo stesso nome, poi verifica il tuo script da qualche parte hai chiso male gli apici (vedi zona tutta rossa cmprese le istruzioni php).
una domanda dici di voler mettere in certi casi tutti i generi ad un titolo, vedo però che hai un solo campo chiamato genere quindi o fai in modo che es due generi
il valore del campo diventi es horror|fantasia
o fai due record dello stesso autore, titolo,... con due generi diversi
o un'altra tabella di collegamento titolo -> generi
questo devi dirlo tu
 
Crea il tuo form in questo modo:
HTML:
<!DOCTYPE html>
<html lang="it">
  <head>
    <meta charset="utf-8">
    <title>Checkbox multiple</title>
  </head>

  <body>
    <form action="azione.php" method="post">
      <div>
        <label>Generi:</label>

        <input type="checkbox" name="generi[]" value="azione" /> Azione
        <input type="checkbox" name="generi[]" value="fantasia" /> Fantasia
        <input type="checkbox" name="generi[]" value="drammatico" /> Drammatico
      </div>

      <div>
        <button type="submit">Invia</button>
      </div>
    </form>
  </body>
</html>
$_POST['generi'] sarà un array contenente tutti i valori selezionati. Per inserirlo in una tabella usa serialize, oppure (architetturalmente più corretto) crea una tabella a parte in cui crei un record per ogni genere associato al film.
 
Ciao,
ho un problema simile con i checkbox multivalore inseriti all'interno di un cms.

I checkbox della form si riferiscono a categorie tipo Moda, Alimenti, Sport, Libri ecc. e li genero dinamicamente con un ciclo while pescando da una tabelle del db. Ora se chi lavora sul cms seleziona i suoi checkbox, perché li associa a un determinato negozio, io li recupero in questo modo:

$categoria = serialize($_POST['categorie']); // nello specifico recupero gli id

In effetti, l'inserimento a DB sembra funzionare. Infatti sul DB, nella tabella negozi, me li salva in un campo con una dicitura del genere

a:2:{i:0;s:1:"8";i:1;s:2:"18";}

Ora li voglio recuperare e lo faccio con la funzione unserialize in questo modo

$categoria_id = $sql_ris['categoria_id']; // salvo tutto nella variabile $categoria_id dopo la chiamata a db e mysql_fetch_array
$single_value=unserialize($categoria_id); // qui unserializzo

Ora se stampo a video $single_value mi restituisce un array del tipo

Array ( [0] => 8 [1] => 18 )

Il problema è che io dovrei confrontare ogni singolo valore (id) di questo array con gli id delle categorie che genero dinamicamento per creare l'elenco di tutte le categorie, in modo da rendere checked quelle corrispondenti.

Ma se faccio questo confronto

if($single_value==$id_categoria) ...

non ottengo alcun risultato.

Potresti gentilmente darmi delle dritte, sempre se ciò che ho scritto risulta comprensibile.

Grazie
Pino
 

Discussioni simili