Salve a tutti, sono un nuovo utente del forum.
Ho bisogno del Vs aiuto... sicuramente sarà più banale la soluzione del formularvi il quesito (vi chiedo scusa in anticipo, cercherò di essere il più chiaro possibile):
Premetto che sto utilizzando come dbms PostgreSql.
-Ho una tabella "temi" che elenca tutti i temi inseriti, dove la PRIMARY KEY e di tipo SERIAL (INTEGER) ed è l' "id":
------------------------
------------------------
-Ho una tabella "domini" che elenca tutti i domini inseriti, dove la PRIMARY KEY e di tipo SERIAL (INTEGER) ed è l' "id", poi c'è una FOREIGN KEY di tipo INTEGER che fa riferimento alla tabella "temi" al campo "id" ("id_temi"):
------------------------
------------------------
Ho la necessità di inserire nel form di inserimento domini, una checkbox che mi elenchi ogni record della tabella "temi", dove ovviamente possa dare la spunta a più record.
Fino a quì nessun problema; ho risolto così:
------------------------
------------------------
Il problema si verifica quando seleziono più temi dalla checkbox ed invio i dati al db.
Non so come fare ad inserire più valori (che di natura sono di tipo INTEGER) in una colonna della mia tabella "domini" che anch'essa è di tipo INTEGER in quanto è una chiave esterna che fa riferimento alla chiave primaria (di tipo INTEGER) della tabella "temi".
Al momento ho optato per questa soluzione (errata):
------------------------
------------------------
Così facendo, creo una stringa contenente tutti gli id dei temi selezionati in precedenza separati dal carattere -spazio-.
L'errore infatti è il seguente:
Query failed: ERROR: invalid input syntax for integer: "9 11 " LINE 1: id_tema) VALUES ('''9 11 '... ^
Come posso risolvere??
spero di essere stato chiaro. Grazie mille a tutti in anticipo.
Manuel
Ho bisogno del Vs aiuto... sicuramente sarà più banale la soluzione del formularvi il quesito (vi chiedo scusa in anticipo, cercherò di essere il più chiaro possibile):
Premetto che sto utilizzando come dbms PostgreSql.
-Ho una tabella "temi" che elenca tutti i temi inseriti, dove la PRIMARY KEY e di tipo SERIAL (INTEGER) ed è l' "id":
------------------------
Codice:
CREATE TABLE temi (
id serial UNIQUE,
tema varchar (100) NOT NULL,
ecc ...
PRIMARY KEY(id)
);
------------------------
-Ho una tabella "domini" che elenca tutti i domini inseriti, dove la PRIMARY KEY e di tipo SERIAL (INTEGER) ed è l' "id", poi c'è una FOREIGN KEY di tipo INTEGER che fa riferimento alla tabella "temi" al campo "id" ("id_temi"):
------------------------
Codice:
CREATE TABLE domini (
id serial UNIQUE,
ecc ...
id_tema integer NULL,
... ,
PRIMARY KEY(id),
FOREIGN KEY (id_tema) REFERENCES temi (id) ON UPDATE cascade ON DELETE RESTRICT
);
------------------------
Ho la necessità di inserire nel form di inserimento domini, una checkbox che mi elenchi ogni record della tabella "temi", dove ovviamente possa dare la spunta a più record.
Fino a quì nessun problema; ho risolto così:
------------------------
Codice:
$query= "SELECT * FROM temi;";
$result= pg_query($query) or die('Query failed: ' . pg_last_error());
echo "<label>Tema associato: <br> <br> <label class='check'>";
while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) {
$elenco_temi= array($line[id]);
foreach($elenco_temi as $p) {
echo "<input type='checkbox' name='id_tema[]' ";
if ($p == $id_tema) {
echo " selected ";
}
if ($p != 0) {
echo "value=$p>$line[tema] : (ID = $p) <br>"; } else {
echo "value=$p>Nessun tema <br>";
}
}
}
echo "</label><br>";
------------------------
Il problema si verifica quando seleziono più temi dalla checkbox ed invio i dati al db.
Non so come fare ad inserire più valori (che di natura sono di tipo INTEGER) in una colonna della mia tabella "domini" che anch'essa è di tipo INTEGER in quanto è una chiave esterna che fa riferimento alla chiave primaria (di tipo INTEGER) della tabella "temi".
Al momento ho optato per questa soluzione (errata):
------------------------
Codice:
$id_tema = $_POST[id_tema];
$string="";
for($i=0;$i<sizeof($id_tema);$i++){
$string .= $id_tema[$i]." "; }
$query = "INSERT INTO domini(id_tema) VALUES ('$string');";
$result = pg_query($query) or die('Query failed: ' . pg_last_error());
pg_free_result($result);
pg_close($dbconn);
------------------------
Così facendo, creo una stringa contenente tutti gli id dei temi selezionati in precedenza separati dal carattere -spazio-.
L'errore infatti è il seguente:
Query failed: ERROR: invalid input syntax for integer: "9 11 " LINE 1: id_tema) VALUES ('''9 11 '... ^
Come posso risolvere??
spero di essere stato chiaro. Grazie mille a tutti in anticipo.
Manuel
Ultima modifica: