|
Forum Flash, Actionscript, PHP e MySQL
|
|
|
|
|
|
| Autore |
Messaggio |
alien
nuovo utente


Registrato: 05/06/07 21:03
Messaggi: 12
Località: molto lontano
|
Oggetto: 2 form in 1
Inviato: 09.06.07 | 21:47 |
|
|
Ciao Coach,
ho due form per inserire dati in due tabelle mysql diverse.
questo inserisce dati testuali nella tabella "db1" richiamando il file save.php:
| Codice: | <?
include ("config.inc.php");
include ("top_foot.inc.php");
//intestazione
top();
?><head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Registrazione</title>
</head>
<form method="post" action="save.php" enctype="multipart/form-data" name="insert1">
<table align="center">
<tr valign="baseline">
<td nowrap align="left">nome:</td>
<td><input name="nome" type="text" size="40" maxlength="40"></td>
</tr>
<tr valign="baseline">
<td nowrap align="left">indirizzo e-mail:</td>
<td><input name="mail" type="text" size="40" maxlength="50"></td>
</tr>
<tr valign="baseline">
<td nowrap align="left">URL del sito internet:</td>
<td><input name="url" type="text" size="40" maxlength="80"></td>
</tr>
<tr valign="baseline">
<td nowrap align="left">breve descrizione del sito:</td>
<td><input name="des" type="text" size="40" maxlength="60"></td>
</tr>
<tr valign="baseline">
<td nowrap align="left"></td>
<td><input name="send" type="submit" id="send" value="Invia"></td>
</tr>
</table>
</form>
<?
// chiusura pagina
foot();
?> |
file save.php:
| Codice: | <? include("top_foot.inc.php");
include("config.inc.php");
top();
if (trim($nome) == "" OR trim($mail) == "" OR trim($url) == "" OR trim($des) == ""):
echo "tutti i campi devono essere riempiti!";
else:
$nome = addslashes(stripslashes($nome));
$mail = addslashes(stripslashes($mail));
$url = addslashes(stripslashes($url));
$des = addslashes(stripslashes($des));
$nome = str_replace("<", "<", $nome);
$nome = str_replace(">", ">", $nome);
$des = str_replace("<", "<", $des);
$des = str_replace(">", ">", $des);
$db = mysql_connect($db_host, $db_user, $db_password);
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 db1 (nome, mail, url, des) VALUES ('$nome', '$mail', '$url', '$des')";
if (mysql_query($query, $db))
echo "Registrazione completata";
else
echo "Erorre durante la registrazione";
mysql_close($db); endif;
foot();
?> |
mentre questo fa l'upload delle immagini nella tabella "img":
| Codice: | <?php
include ("config.inc.php");
include ("top_foot.inc.php");
top();
// se è stato inviato il file...
if(isset($_POST['invia']))
{
// se ci sono stati problemi nell'upload del file
if(!isset($_FILES['file_inviato']) OR $_FILES['file_inviato']['error'] != UPLOAD_ERR_OK)
mostra_form("errore nell'invio del file. Riprova");
// connessione e selezione del database
mysql_connect($db_host, $db_user, $db_password)
or die('Connessione non riuscita: ' . mysql_error());
if(!mysql_select_db($db_name))
die('Selezione database fallita!');
// recupero alcune informazioni sul file inviato
$nome_file_temporaneo = $_FILES['file_inviato']['tmp_name'];
$nome_file_vero = $_FILES['file_inviato']['name'];
$tipo_file = $_FILES['file_inviato']['type'];
// leggo il contenuto del file
$dati_file = file_get_contents($nome_file_temporaneo);
// preparo il contenuto del file per la query
$dati_file = addslashes($dati_file);
// query per inserire il file nel DB
$query = "INSERT INTO img SET
nome = '$nome_file_vero',
type = '$tipo_file',
file = '$dati_file'";
mysql_query($query)
OR die('Query non valida: ' . mysql_error());
// mostro di nuovo il form ed un messaggio di conferma
mostra_form("<p align='center'>Memorizzazione del file <b>$nome_file_vero</b> nel database eseguita correttamente.</p>");
}
else
{
mostra_form();
}
//form
function mostra_form($messaggio = '')
{
?><head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Upload immagine</title>
</head>
<?php echo $messaggio?> <br>
<form method="post" action="" enctype="multipart/form-data" name="insert2">
<table align="center">
<tr valign="baseline">
<td nowrap align="left">seleziona un'immagine:</td>
<td><input name="file_inviato" type="file" size="40" maxlength="40"></td>
</tr>
<tr valign="baseline">
<td nowrap align="left"></td>
<td><input name="invia" type="submit" value="Invia file"></td>
</tr>
</table>
</form>
<?php
exit();
}
foot();
?> |
e fino a qui tutto bene.
Il problema è che non riesco a "fonderli" per inviare tutti i dati alle due tabelle in un unico form...
suggerimenti?  |
|
| Torna in cima |
|
|
Sponsor
|
|
 |
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 11.06.07 | 00:53 |
|
|
Ciao alien,
scusa... ma sono un po' stanco dalla giornata e non ho visto tutto il codice, ma credo sia più importante la logica che non il codice sopra scritto.
Cioè, per prima devi pensare a cosa devi fare... e poi inizi a strutturare la cosa.
Per iniziare, come mai la decisione di fare due form separati?
Comunque il problema non si presenta, usa un'unico form, che punta ad un'unico script PHP, volendo anche a se stesso ed esegui le 2 query in tabelle differenti.
. ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE!
Ultima modifica di Coach il 11.06.07 | 12:12, modificato 1 volta in totale |
|
| Torna in cima |
|
|
alien
nuovo utente


Registrato: 05/06/07 21:03
Messaggi: 12
Località: molto lontano
|
Oggetto:
Inviato: 11.06.07 | 12:04 |
|
|
allora mi spiego...
i due form sono separati perché ho aggiunto dopo la possibilità di fare l'upload delle immagini, e non sapendo come integrare il campo per l'upload nel form precedente (siccome le immagini sono in un'altra tabella del database) ne ho creato uno a parte per fare delle prove.
L'obiettivo è proprio quello di inviare i dati testuali in una tabella e le immagini nell'altra con un unico form: quello che non riesco a fare.
la soluzione è probabilmente semplice, ma per adesso non ho ancora molta esperienza con php/mysql
per esempio qui:
| Codice: | <? $query = "INSERT INTO db1 (nome, mail, url, des) VALUES ('$nome', '$mail', '$url', '$des')"; ?> |
come faccio se voglio aggiungere anche questa query?
| Codice: | <?$query = "INSERT INTO img SET
nome = '$nome_file_vero',
type = '$tipo_file',
file = '$dati_file'"; ?> |
oppure devo fare due query separate?
penso che qui non c'entra niente l'inner join.  |
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 11.06.07 | 12:13 |
|
|
Esatto, non centra niente l'INNER JOIN, devi fare due query.
. ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
alien
nuovo utente


Registrato: 05/06/07 21:03
Messaggi: 12
Località: molto lontano
|
Oggetto:
Inviato: 16.06.07 | 22:14 |
|
|
sono sempre al punto di prima
ho fatto due query separate, ma esce l'errore nell'eseguzione della query che fa l'upload dell'immagine.
se avrai mai tempo e voglia di leggere il codice please help me.
non riesco a trovare dove è l'errore!
form:
| Codice: | <?
include ("config.inc.php");
include ("top_foot.inc.php");
//intestazione
top();
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Registrazione</title>
</head>
<form method="post" action="save.php" enctype="multipart/form-data" name="insert1">
<table align="center">
<tr valign="baseline">
<td nowrap align="left">nome:</td>
<td><input name="nome" type="text" size="40" maxlength="40"></td>
</tr>
<tr valign="baseline">
<td nowrap align="left">indirizzo e-mail:</td>
<td><input name="mail" type="text" size="40" maxlength="50"></td>
</tr>
<tr valign="baseline">
<td nowrap align="left">URL del sito internet:</td>
<td><input name="url" type="text" size="40" maxlength="80"></td>
</tr>
<tr valign="baseline">
<td nowrap align="left">breve descrizione del sito:</td>
<td><input name="des" type="text" size="40" maxlength="60"></td>
</tr>
<tr valign="baseline">
<td nowrap align="left">immagine:</td>
<td><input name="file_inviato" type="file" size="40" maxlength="40"><td>
</tr>
<tr valign="baseline">
<td nowrap align="left"></td>
<td><input name="invia" type="submit" value="Invia"></td>
</tr>
</table>
<input type="hidden" name="MAX_FILE_SIZE" value="300000">
</form>
<?
// chiusura pagina
foot();
?> |
script php al quale punta il form:
| Codice: | <?
include("top_foot.inc.php");
include("config.inc.php");
top();
if (trim($nome) == "" OR trim($mail) == "" OR trim($url) == "" OR trim($des) == "" OR trim($file_inviato) == ""):
echo "<p align='center'><b>Tutti i campi devono essere riempiti!</b></p>";
else:
$nome = addslashes(stripslashes($nome));
$mail = addslashes(stripslashes($mail));
$url = addslashes(stripslashes($url));
$des = addslashes(stripslashes($des));
$nome = str_replace("<", "<", $nome);
$nome = str_replace(">", ">", $nome);
$des = str_replace("<", "<", $des);
$des = str_replace(">", ">", $des);
// se è stato inviato il file...
if(isset($_POST['invia']))
{
// se ci sono stati problemi nell'upload del file
if(!isset($_FILES['file_inviato']) OR $_FILES['file_inviato']['error'] != UPLOAD_ERR_OK)
("errore nell'invio del file. Riprova");
// connessione e selezione del database
$db = mysql_connect($db_host, $db_user, $db_password);
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");
// recupero alcune informazioni sul file inviato
$nome_file_temporaneo = $_FILES['file_inviato']['tmp_name'];
$nome_file_vero = $_FILES['file_inviato']['name'];
$tipo_file = $_FILES['file_inviato']['type'];
// leggo il contenuto del file
$dati_file = file_get_contents($nome_file_temporaneo);
// preparo il contenuto del file per la query
$dati_file = addslashes($dati_file);
$query1 = "INSERT INTO db1 (nome, mail, url, des) VALUES ('$nome', '$mail', '$url', '$des')";
$query2 = "INSERT INTO img SET
nome = '$nome_file_vero',
type = '$tipo_file',
file = '$dati_file'";
}
if(mysql_query($query1, $query2, $db))
echo "<p align='center'>Registrazione effettuata correttamente</p>";
else
echo "<p align='center'>C'è stato un errore durante la registrazione!</p>";
mysql_close($db); endif;
foot();
?> |
cliccando su invia si visualizza "C'è stato un errore durante la registrazione!", ma siccome la query1 eseguita singolarmente funziona l'errore probabilmente sta nella query2. |
|
| Torna in cima |
|
|
mesk8
avanzato


Età: -1984
Registrato: 31/10/05 16:41
Messaggi: 252
Località: Verona
|
Oggetto:
Inviato: 18.06.07 | 08:10 |
|
|
ciao alien, prova a cambiare quella riga così e poi ci dici cosa esce...
| Codice: | <?php
echo '<p align="center">C\'è stato un errore durante la registrazione!'.mysql_error().'</p>';
?> |
|
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 18.06.07 | 10:07 |
|
|
Non mi sembra che a mysql_query() tu possa passare due query... riceve due parametri.
. ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
mesk8
avanzato


Età: -1984
Registrato: 31/10/05 16:41
Messaggi: 252
Località: Verona
|
Oggetto:
Inviato: 18.06.07 | 12:35 |
|
|
vero vero, in quel modo non si può fare...  |
|
| Torna in cima |
|
|
alien
nuovo utente


Registrato: 05/06/07 21:03
Messaggi: 12
Località: molto lontano
|
Oggetto:
Inviato: 18.06.07 | 16:35 |
|
|
ehm vero, non si può fare...
allora cosa intendevi Coach per fare le due query?  |
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
|
| Torna in cima |
|
|
alien
nuovo utente


Registrato: 05/06/07 21:03
Messaggi: 12
Località: molto lontano
|
Oggetto:
Inviato: 18.06.07 | 17:53 |
|
|
ehm, ovvio, adesso è a posto
grazie coach e mesk x le risposte  |
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 18.06.07 | 17:55 |
|
|
de nada
. ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
|
|
Non puoi inserire nuovi Topic in questo forum Non puoi rispondere ai Topic in questo forum Non puoi modificare i tuoi messaggi in questo forum Non puoi cancellare i tuoi messaggi in questo forum Non puoi votare nei sondaggi in questo forum Non puoi allegare files in questo forum Non puoi downloadare gli allegati in questo forum
|
|