Salve a tutti, 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 possiedo un server MANAGED con CloudLinux e cPanel/WHM e sto utilizzando come dbms PostgreSql (fermo alla versione 8.4.20).
-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 è 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
Premetto che possiedo un server MANAGED con CloudLinux e cPanel/WHM e sto utilizzando come dbms PostgreSql (fermo alla versione 8.4.20).
-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 UNIQUE,
ecc ...
PRIMARY KEY(id,tema)
);
------------------------
-Ho una tabella "domini" che elenca tutti i domini inseriti, dove la PRIMARY KEY è 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