[PHP] Checkbox: inserimento nel db e lettura dal db

Max61

Utente Attivo
2 Mar 2014
740
4
18
Salve rieccomi con un nuovo problema, vorrei come da titolo poter gestire alcuni dati con le Checkbox.
Ho questo codice e vorrei inserire le checkbox selezionate nel db ma non ci riesco, qualcuno mi sa aiutare?

PHP:
<form method="post" action="ceckboxRiceve.php">
    <?php
echo "<span style=\"color:red; font-size: 10pt\"> Dati comunali <span style=\"color:red\"><span style=\"color:red\"></span><span style=\"color:blue\"></span><span style=\"color:red\"></span>";
 ?>
 <input type="checkbox" name="tipodato[1]" value="Dati comunali" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<?php
echo "<span style=\"color:green; font-size: 10pt\"> Dati provinciali <span style=\"color:red\"><span style=\"color:red\"></span><span style=\"color:blue\"></span><span style=\"color:red\"></span>";
 ?>
 <input type="checkbox" name="tipodato[2]" value="Dati provinciali" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<?php
echo "<span style=\"color:blue; font-size: 10pt\"> Dati regionali <span style=\"color:black\"><span style=\"color:black\"></span><span style=\"color:blue\"></span><span style=\"color:black\"></span>";
 ?>
 <input type="checkbox" name="tipodato[3]" value="Dati regionali" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<?php
echo "<span style=\"color:black; font-size: 10pt\"> Dati nazionali <span style=\"color:black\"><span style=\"color:black\"></span><span style=\"color:blue\"></span><span style=\"color:black\"></span>";
 ?>
 <input type="checkbox" name="tipodato[4]" value="Dati nazionali" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<?php
echo "<span style=\"color:brown; font-size: 10pt\"> Altri dati <span style=\"color:black\"><span style=\"color:black\"></span><span style=\"color:blue\"></span><span style=\"color:black\"></span>";
 ?>
<input type="checkbox" name="tipodato[5]" value="Altri dati" /><br><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" value="  Salva!  ">
</form>

Allego anche codice che legge i valori delle checkbox
PHP:
$tipodato = isset($_POST['tipodato']) ? $_POST['tipodato'] : array();

  $stringa = implode(',', $tipodato);
  echo $stringa;

  if(!$_POST['tipodato']){
      $sqlquery = "INSERT tblarchivioistat tipodato VALUES($tipodato)";
       $result = $db->query($sqlquery);
}
 
if (!count($tipodato)) echo 'Errore! Devi selezionare almeno una casella!';
else {
 foreach($tipodato as $stringa) {
    echo '<li>' . $stringa . '</li>'; 
  }
  echo '</ul>';
}

Con questo secondo codice visualizzo le checkbox biffate, ma non so come memorizzarle nel DB.
Grazie
Max61
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, prova cosi
PHP:
if (isset($_POST['tipodato'])) {
    $stringa = implode(',', $_POST['tipodato']);
    $sqlquery = "INSERT tblarchivioistat tipodato VALUES($stringa)";
    $result = $db->query($sqlquery);
    if ($result) {
        echo "dati memorizzati";
    } else {
        echo "errore query : " . $query;
    }
} else {
    echo 'Errore! Devi selezionare almeno una casella!';
}
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
Ciao e grazie, ho provato ma mi da questo errore
Fatal error: Call to a member function query() on a non-object in C:\xampp\htdocs\Archivio\ceckboxRiceve.php on line 25
su questa riga
PHP:
$result = $db->query($sqlquery);

Ti volevo dire che ad ogni parametro corrisponde un campo:
datocomunale
datoprovinciale
datoregionale
ecc. non so se ti può servire questa specifica
Ciao
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
quell'errore riguarda la connessione al database, avevo dato per scontato che era già a posto visto che lo hai postato tu ?
posta il codice con cui ti connetti alla tabella.
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
Buongiorno ecco il codice di connessione:
PHP:
$host = 'localhost';
$user = 'utente';
$password = 'utente';
$db = 'archivioistat';

//Mi connetto al MySql Server
$myconn = mysql_connect($host, $user, $password) or die('Impossibile connettersi al server');

//Mi connetto al database 'archivio'
mysql_select_db($db, $myconn) or die('Errore di connessione alla tabella');

Comunque penso di aver risolto con il codice che vedi sotto
PHP:
VECCHIO  //$result = $db->query($sqlquery);
 NUOVO   $result = mysql_query($sqlquery);

ma adesso mi da errore sulla colonna:
errore query : INSERT archivioistat tipodato VALUES(Dati comunali,Dati provinciali)Unknown column 'stringa' in 'field list'

Grazie
Max61
 
Ultima modifica:

allivio

Nuovo Utente
30 Ott 2016
15
0
1
34
www.chatcity.it
ma possibile che nessuno di voi si è accorto che la query è scritta male? (oltre tutto..)
PHP:
 $sqlquery = "INSERT tblarchivioistat tipodato VALUES($stringa)";

vi sembra corretta?
1 non si capisce cosa vuol fare.. salvare in un campo? il campo si chiama "tipodato"?
2 INSERT.. non manca qualcosa??.. INTO?

la query dovrebbe essere così: (sempre se è correttamente creata)
PHP:
 $sqlquery = "INSERT INTO `tblarchivioistat` (`tipodato`) VALUES ('$stringa')";
vi ricordo che non è un campo numerico, servono gli apici..

se la tabella è creata correttamente dovrebbe andare.. (anche se è tutta strana)..
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
Buongiorno Allivio, grazie per l'interessamento, cerco di spiegarmi:
ho 5 campi (datocomunale, datoprovinciale,datoregionale,datonazionale,altrodato e sono di tipo varchar ma non so se va bene perchè ho la necessità di recuperare i dati dal db nell' edit con le checkbox), dove per ognuno di essi vorrei inserire il corrispettivo valore dell'array.
In questo momento la query mi inserisce il valore nel campo $stringa che però non esiste, se al posto del campo stringa metto per esempio il campo $datocomunale mi inserisce tutti i valori selezionati in questo campo, ma non va bene perchè in questo campo deve inserire il dato proveninete dalla check <input type="checkbox" name="tipodato[1]" value="Dati comunali" />
e così via per ogni campo.
Nella speranza di essermi spiegato...
Max61
 

allivio

Nuovo Utente
30 Ott 2016
15
0
1
34
www.chatcity.it
Buongiorno,
se ho capito bene dovrebbe essere cosi:

PHP:
 $sqlquery = "INSERT INTO `tblarchivioistat` (`datocomunale`, `datoprovinciale`,`datoregionale`, `datonazionale`,`altrodato`) VALUES ('".intvar($tipodato[1])."', '".intvar($tipodato[2])."', '".intvar($tipodato[3])."', '".intvar($tipodato[4])."','".intvar($tipodato[5])."')";


converti i campi in ENUM(0,1) e nel value dei vari checkbox mettici 1
usando la funzione intvar se il campo è nullo ti da zero (ed è anche sicuro)..

poi per l'editare basta che ci aggiungi al checkbox ad esempio
PHP:
<?php if ($row->datocomunale == 1) {echo "checked"; } ?>
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
Grazie, ho provato a modificare il db come mi hai detto ma mi dava sempre questo errore qualsiasi valore inserissi 0 1 0,1 null
Errore nella query:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1) NOT NULL' at line 1
allora li ho convertiti in tinyint(1)

adesso mi da questo errore:
Fatal error: Call to undefined function intvar() in C:\xampp\htdocs\ArchivioIstat\views\InserisciDatiIstat.php on line 56
può essere il campo tinyint(1)?
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
Ho tolto intvar e adesso sembra che l'array funziona, ma non mi inserisce gli altri campi.
Ecco la query che uso:
PHP:
$sqlquery = "INSERT INTO `tblarchivioistat` ('livello', 'categoria1', 'categoria2', 'categoria3', 'categoria4', 'categoria5', '__________nomefile__________', '__________variabili__________',
        `datocomunale`, `datoprovinciale`,`datoregionale`, `datonazionale`,`altrodato`)
        VALUES ('$livello', '$categoria1', '$categoria2', '$categoria3', '$categoria4', '$categoria5', '$__________nomefile__________', '$__________variabili__________','".($tipodato[1])."', '".($tipodato[2])."', '".($tipodato[3])."', '".($tipodato[4])."','".($tipodato[5])."')";

Altra cosa, i dati recuperati li visualizzo e sono disabilitati e ho creato una pagina di modifica che apro con questo codice dalla pagina di visualizzazione

PHP:
Apri pagina <input type='checkbox' onClick="document.location.href='Edit_DatiIstat.php?$id';">
ma non riesco a passargli l'id che sto guardando a video
 

allivio

Nuovo Utente
30 Ott 2016
15
0
1
34
www.chatcity.it
ti da mysql quell'errore perchè enum deve essere '0','1' però si va benissimo anche tinyint..

e scusami ho sbagliato da intvar devi cambiare in intval
 

allivio

Nuovo Utente
30 Ott 2016
15
0
1
34
www.chatcity.it
devi togliere le parentesi tonde...

comunque non gli stai passando il campo.. 'Edit_DatiIstat.php?$id' cambialo in 'Edit_DatiIstat.php?id=$id'
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
Ho provato, ho tolto tutte le parentesi ma non inserisce nulla nel db, le ho rimesse togliendo la prima ma niente...
PHP:
$sqlquery = "INSERT INTO `tblarchivioistat` ('livello', 'categoria1', 'categoria2', 'categoria3', 'categoria4', 'categoria5', '__________nomefile__________', '__________variabili__________',
        `datocomunale`, `datoprovinciale`,`datoregionale`, `datonazionale`,`altrodato`)
        VALUES ('$livello', '$categoria1', '$categoria2', '$categoria3', '$categoria4', '$categoria5', '$__________nomefile__________', '$__________variabili__________','".intval($tipodato[1])."', '".intval($tipodato[2])."', '".intval($tipodato[3])."', '".intval($tipodato[4])."','".intval($tipodato[5])."')";

Ho provato come hai detto, anche se lo avevo già provato, ma niente l'id non lo passa
PHP:
$result = mysql_query("SELECT * FROM tblarchivioistat WHERE id=$id")
    or die(mysql_error());

PHP:
Apri pagina <input type='checkbox' onClick="document.location.href='Edit_DatiIstat.php?id=$id';">
scusa ma non sono molto esperto l'avrai capito
 

allivio

Nuovo Utente
30 Ott 2016
15
0
1
34
www.chatcity.it
hai inserito prima della query questo?
PHP:
$id = intval($_GET['id']);

sicuro di aver scritto correttamente i campi '__________nomefile__________', '__________variabili__________' ?

perchè creare campi con nomi così "difficili"? cioè da scriverli sbagliati con facilità.. non basta un _nomefile_ senza tutti quegli underscore?


se non ti inserisce la query c'è un errore o di nomi di campi o di strutturazione della tabella..
controlla per bene se tutto coincide
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
Questi campi li ho fatti così perchè li vedo a video con datagrid e se la stringa è lunga la riga mi diventa troppo alta, mentre così allargo il campo e la vedo più bassa.
I campi sono coretti, ho preso la vecchia pagina di insert e funziona ma aggiungendo il nuovo codice per inserire l'array non funziona più, si vede che sbaglio qualcosa e non inserisce nulla. Stranamente se inserisco i campi normali separatamente dall'array funziona, e viceversa se tolgo i campi normali e inserisco l'array funziona..bo.
Praticamente così inserisce l'array
PHP:
$sqlquery = "INSERT INTO `tblarchivioistat` (`datocomunale`, `datoprovinciale`,`datoregionale`, `datonazionale`,`altrodato`) VALUES ('".intval($tipodato[1])."', '".intval($tipodato[2])."', '".intval($tipodato[3])."', '".intval($tipodato[4])."','".intval($tipodato[5])."')";

così gli altri campi
PHP:
$query = "INSERT INTO tblarchivioistat (livello, categoria1, categoria2, categoria3, categoria4, categoria5,__________nomefile__________, __________variabili__________)
            VALUES ('$livello', '$categoria1', '$categoria2', '$categoria3', '$categoria4', '$categoria5',
            '$__________nomefile__________', '$__________variabili__________')";
se li metto insieme..NULLA
 
Ultima modifica:

allivio

Nuovo Utente
30 Ott 2016
15
0
1
34
www.chatcity.it
hai usato gli apici, l'ho notato adesso...

PHP:
$sqlquery = "INSERT INTO `tblarchivioistat` (`livello`, `categoria1`, `categoria2`, `categoria3`, `categoria4`, `categoria5`, `__________nomefile__________`, `__________variabili__________`,
        `datocomunale`, `datoprovinciale`,`datoregionale`, `datonazionale`,`altrodato`)
        VALUES ('$livello', '$categoria1', '$categoria2', '$categoria3', '$categoria4', '$categoria5', '$__________nomefile__________', '$__________variabili__________','".intval($tipodato[1])."', '".intval($tipodato[2])."', '".intval($tipodato[3])."', '".intval($tipodato[4])."','".intval($tipodato[5])."')";



quelli da me usati non sono apici ma accenti, si possono anche evitare io sono abituato ad usarli
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
Grazie adesso non posso provarlo perchè sono fuori e ti rispondo dal cellulare ma ti volevo chiedere se devo togliere tutti gli apici o soltanto quelli dell'array?
 

allivio

Nuovo Utente
30 Ott 2016
15
0
1
34
www.chatcity.it
basta che fai copia e incolla della query che ti ho postato..

gli apici erano sbagliati qui INSERT INTO `tblarchivioistat` ('livello', 'categoria1', 'categoria2', 'categoria3', ecc

copia e incolla questa:
PHP:
$sqlquery = "INSERT INTO `tblarchivioistat` (`livello`, `categoria1`, `categoria2`, `categoria3`, `categoria4`, `categoria5`, `__________nomefile__________`, `__________variabili__________`,
        `datocomunale`, `datoprovinciale`,`datoregionale`, `datonazionale`,`altrodato`)
        VALUES ('$livello', '$categoria1', '$categoria2', '$categoria3', '$categoria4', '$categoria5', '$__________nomefile__________', '$__________variabili__________','".intval($tipodato[1])."', '".intval($tipodato[2])."', '".intval($tipodato[3])."', '".intval($tipodato[4])."','".intval($tipodato[5])."')";
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
FUNZIONA GRAZIE!
Adesso se non chiedo troppo mi rimane l' update che ho fatto così ma non salva i dati anzi svuota i campi della tabella se sono valorizzati
PHP:
mysql_query("UPDATE tblarchivioistat SET livello='$livello', categoria1='$categoria1', categoria2='$categoria2', categoria3='$categoria3', categoria4='$categoria4', categoria5='$categoria5', 
'".intval($tipodato[1])."', '".intval($tipodato[2])."', '".intval($tipodato[3])."', '".intval($tipodato[4])."','".intval($tipodato[5])."' WHERE id='$id'")
or die(mysql_error());
Ciao e Grazie ancora
 

allivio

Nuovo Utente
30 Ott 2016
15
0
1
34
www.chatcity.it
prova così:
PHP:
mysql_query("UPDATE tblarchivioistat SET livello='$livello', categoria1='$categoria1', categoria2='$categoria2', categoria3='$categoria3', categoria4='$categoria4', categoria5='$categoria5',
datocomunale='".intval($tipodato[1])."', datoprovinciale='".intval($tipodato[2])."',  datoregionale='".intval($tipodato[3])."',  datonazionale='".intval($tipodato[4])."', altrodato='".intval($tipodato[5])."' WHERE id=$id")
or die(mysql_error());
 
Discussioni simili
Autore Titolo Forum Risposte Data
M Inserimento dati checkbox multipli in db da ajax a php PHP 1
S [PHP] Come mantenere selezionato checkbox dopo aver cliccato submit PHP 7
P [PHP] Controllo al checkbox privacy PHP 6
C [PHP] Checkbox in tabella PHP 7
L [PHP] CHECKBOX DA SELEZIONARE IN UNA TABELLA PHP 4
T [PHP] Checkbox E Valori Multipli In Una Colonna PHP 1
M PHP - Checkbox - Mysql PHP 2
M [PHP] Far rimanere biffata checkbox dopo aggiornamento pagina PHP 24
ientii [PHP] Gestione CheckBox PHP 1
bubino8 [PHP] Variabile da multipla Checkbox PHP 2
E [PHP] valore checkbox PHP 1
M PHP/SQL Inserire più valori in una colonna di tipo integer - Checkbox - PHP 3
M [PHP] Checkbox e valori multipli in una colonna PHP 10
U [PHP - RISOLTO] Tabella dinamica: colonne selezionate da checkbox PHP 40
giancadeejay [PHP] INSERT into tabella tramite scelta checkbox PHP 0
giancadeejay [PHP] checkbox ad ogni riga estratta dal db PHP 13
Fede72 Controllare le checkbox con PHP PHP 6
L [PHP] selezionare righe di una tabella con le checkbox e cancellarle PHP 2
P [PHP] checkbox e sua memorizzazione nel db PHP 31
M form php con checkbox PHP 4
A Aiutino su PHP e MySQL [Checkbox] PHP 2
L dati da checkbox passati a script php via json jQuery 5
M visualizzazione checkbox con PHP PHP 3
N [RISOLTO] Mostrare a video le checkbox selezionate con PHP e MySQL PHP 4
P Controllo php su checkbox PHP 2
Sargon php _ checkbox mysql _ PHP 3
unkus_nob valori checkbox di form html in file php senza submit PHP 1
A Problema PHP e checkbox! PHP 10
Athene Come nascondere i dati della checkbox in php PHP 2
D query con mysql, checkbox e php PHP 8
M Leggere valori da checkbox e richiamarli in php Javascript 1
M selezione con checkbox php mysql PHP 14
T checkbox e PHP PHP 12
P [PHP] problema script con checkbox! PHP 0
W php e checkbox PHP 3
S ComboBox, radioButton, CheckBox...passagio dati FLASH-PHP!!! Flash 0
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9

Discussioni simili