- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Form html-php per invio dati tabella database mysql
-
Form html-php per invio dati tabella database mysql
Sto rimbecillendo!
Il mio problema era creare un form in html per l'invio di una serie di dati
(nome1 e id; nome2 e id; nome3 e id: quindi il primo sempre diverso e il secondo
sempre uguale) in una tabella del database.
Dopo un lavoro, per me complessissimo :-), ho risolto così, creando 3 file:inviodati.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<!--CTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//E-->
<form action="inviovocaboli.php" method="post"
name="inviovocaboli">Inserisci Vocabolo: <input
name="voc" size="35" type="text">
Inserisci id vocabolo: <input name="id" size="3"
type="text"><br>
<br>
<p> </p>
<p> <input name="inviovocaboli.php"
value="INVIA" type="submit"></p>
</form>
</body>
</html>
</form>
</body>
</html>
inviovocaboli.php
<?
$voc="";
$id="";
$voc=$_POST['voc']; // recupero il valore inserito nella 1^ input box
$id=$_POST['id'];// recupero il valore inserito nella 2^ input box
if (empty($voc)===false || empty($id)===false) //verifico che entrambi i campi non siano nulli
include "connettidatabase.php"; // includo il file di connessione al Db
$sql="INSERT INTO nuke_vocaboli (voc,id) VALUES ('$voc','$id')"; // preparo la query di inserimento record e quindi passo ad eseguirla
$query=@mysql_query($sql) or die (mysql_error());
echo "Inserimento effettuato con successo."; // mando in output un messaggio che mi conferma l'inserimento
?>
connettidatabase.php
.... con i dati per la connessione ... SONO OK SI CONNETTE SEMPRE REGOLARMENTE
==> Tutto funziona bene e il vocabolo che inserisco nel form viene regolarmente inserito nella tabella del database.
Il mio problema però è non inserire un vocabolo alla volta ma fare in modo che se ad es. nel form per l'inserimento del vocabolo io digito:
vocabolo1,vocabolo2,vocabolo3,vocabolo4 (quindi più vocaboli separati da una virgola)
e nel campo per id:
5 (un solo id comune per tutti i vocaboli)
--> nella tabella del database mi vengono inserite in un colpo solo tutte e 4 le righe:
vocabolo1 5
vocabolo2 5
vocabolo3 5
vocabolo4 5Ho provato a modificare così il file:
inviovocaboli.php
$voc = explode(",",$voc);
$id="5";
$voc=$_POST[('".trim($voc)."')]; // recupero il valore inserito nella input box nome
$id=$_POST['id'];// recupero il valore inserito nella input box cognome
if (empty($voc)===false || empty($id)===false) //verifico che entrambi i campi non siano nulli
include "connettidatabase.php"; // includo il file di connessione al Db
foreach ($vocs as $voc) {
$voc = addslashes(check_words(check_html($voc, "nohtml")));
$db->sql_query="INSERT INTO nuke_vocaboli (voc,id) VALUES ('".trim(voc)."','$id')"; // preparo la query di inserimento record e quindi passo ad eseguirla
}
echo "Inserimento effettuato con successo."; // mando in output un messaggio che mi conferma l'inserimento
?>
ma il risultato è che mi viene inserita una sola riga:
vocabolo1,vocabolo2,vocabolo3,vocabolo4 5
Ho fatto tantissime prove ma non riesco!
Dove sbaglio? Quali modifiche devo fare x risolvere il problema?
Grazie per chi ha avuto la pazienza di seguire l'intero post.
Aspetto fiducioso l'aiuto di qualcuno tosto: dopo giorni di prove ho capito che da solo non ce la faccio.
Ciao, Dino.
-
Ciao dovresti fare un explode della stringa $voc.
Se usi la virgola per separare i singoli vocaboli dovresti fare:
$voc=explode("," , $voc);
faccendo questo $voc diventa un array con i vari vocaboli.
poi usi $voc[0],$voc[1],$voc[2] ecc...
-
Ciao
Ha ragione memic, devi usare explode.
Io ti consiglierei di fare così:
[PHP]$vocs = explode(",",$vocs);
foreach($vocs as $voc){
echo $voc." ";
}[/PHP]
-
Puoi postare il codice delle pagine? Necessarie.