Ho un codice Javascript che genera un <iframe nel quale viene creato un <form, In questo <form creato vengono memorizzati i campi html <input type="text" name="nome" id="name" /> con i valori inseriti dall'utente, questi vengono poi inviati in modalità asincrona in un'altra pagina.php e vengono inseriti in database.
Il codice funziona bene. Nessun problema. Eccolo qui di seguito:
Codice PHP:
<html>
<head>
<script type="text/javascript">
function save()
{
if(!document.getElementById("hiddenFrame"))
{
createIFrame();
setTimeout(save, 1000);
return;
}
var frm = document.getElementById("amici");
var frame = document.getElementById("hiddenFrame").contentDocument
? document.getElementById("hiddenFrame").contentDocument
: document.frames["hiddenFrame"].document;
if (document.all)
{
frame.body.innerHTML = frm.outerHTML;
}
else
{
frame.body.appendChild(frm.cloneNode(true));
frame.forms[0].action = frm.action;
}
frame.forms[0].submit();
}
function createIFrame()
{
var IFrame = document.createElement("iframe");
Iframe.width = 100; IFrame.height = 100; IFrame.frameBorder = 2;
IFrame.name = IFrame.id = "hiddenFrame";
document.body.appendChild(IFrame);
}
function callback_save(returnValue)
{
alert(returnValue);
document.getElementById("nome").value="";
document.getElementById("cognome").value="";
}
</script>
</head>
<body>
<form name="MyForm" action="pagina.php" id="amici" method="post" onSubmit="save(); return false;">
<label for="name">Nome:</label>
<input type="text" name="nome" id="nome" />
</p>
<label for="cognome">Cognome:</label>
<input type="text" name="cognome" id="cognome" />
</p>
<input type="hidden" name="hidden" id="hidden" />
<input type="submit" value=" Salva " />
</p>
</form>
<iframe id="hiddenFrame" width="0" height="0" frameborder="0"></iframe>
</body>
</html>
La pagina php inserisce i dati in questo modo:
Codice PHP:
<?php
$db = "";
$dbUsername = "";
$dbPassword = "";
$dbServer = "";
$serverReply = "Replica del Server:\\n\\n";
$dbLink = mysql_connect($dbServer, $dbUsername, $dbPassword)
or $serverReply .= mysql_error();
$Nome = addslashes($HTTP_POST_VARS["nome"]);
$Cognome = addslashes($HTTP_POST_VARS['cognome']);
if(!mysql_select_db($db))
{
$Part_1 = " _select_db:" .mysql_errno(). " - ";
$serverReply .= "$Part_1" .mysql_error()."!";
}
else
{
$Errno_Query = "Errore (".mysql_errno().")";
$sqI = "INSERT INTO `amici` VALUES(
'$Nome',
'$Cognome')";
$ResultQuery = mysql_query($sqI)
or $serverReply .= $Errno_Query;
if($ResultQuery)
{
$Msg_Insert = "Aggiunto Amico id";
$serverReply .= "$Msg_Insert:" . mysql_insert_id() ."!\\n";
}
}
?>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<script type="text/javascript">
window.onload = function()
{
parent.callback_save("<?php echo $serverReply; ?>");
}
</script>
</head>
<body>
<noscript>
<H3>Responso</H3>
<hr />
<?php
$Multispace = "";
$serverReply = str_replace('\n\n', "
", $serverReply);
$serverReply = str_replace('\t', "$Multispace", $serverReply);
$serverReply = str_replace('\n', "
", $serverReply);
echo $serverReply;
?>
<hr />
</noscript>
</body>
</html>
Funziona bene.
Vorrei fare la stessa cosa con il campo <selet> aggiungendolo nel form html
<select id="citta" name="citta">
<option value="MILANO">Milano</option>
<option value="ROMA">Roma</option>
</select>
Fare in modo che anche questo valore scelto possa essere registrato correttamante nell' iframe e quindi essere inviato alla pagina.php per inserirlo nell'apposito campo della tabella del Database.