Caricare nuova pagina dopo invio dati form

Prom

Nuovo Utente
27 Gen 2015
6
0
0
Ciao a tutti,

Sono una novellina di siti web e sto cercando di scrivere un questionario per i miei studenti.
Ho creato un form con le varie domande, al click su Invia viene eseguita una funzione javascript che controlla che tutte le domande obbligatorie abbiano ricevuto risposta e, in tal caso, viene eseguita una pagina php che scrive su un file i dati inseriti. Fin qui tutto ok.

1) Vorrei che la pagina php non venisse caricata in una nuova finestra, ma nella stessa tab del questionario, è possibile?

2) Se non è possibile, posso farla chiudere automaticamente? E contemporaneamente caricare una nuova pagina al posto del questionario?

Sostanzialmente, quello che vorrei, è che, dopo aver risposto e inviato i dati, venisse visualizzata una pagina di ringraziamento e non rimanessero tutte le domande con le risposte.

Grazie a chiunque vorrà aiutarmi!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
scusa ma non ho capito bene, dici di avere una pagina php che elabora i dati del form inserendoli in un file txt, ma se non li fai stampare (echo o print) non li vedi
mettiamo che tu abbia le due pagine (metto i nomi a caso) form.php e elabora.php
form.php
HTML:
<form action="elabora.php" method="post">
<!-- tutti i vari campi di input -->
<input type="submit" name="Submit" value="Invia">
</form>

elabora.php
PHP:
<?php
//ricevi i vari dati
$dato_1=$_POST[['dato_1'];
$dato_2=$_POST[['dato_2'];
//ecc....
//e li metti nel file
echo "grazie di aver risposto al questionario<br />";
//e rimandi dove vuoi es. con un link
echo "<a href=\"index.php\">torna alla index</a>";
?>
o se vuoi un ritorno automatico al posto dell'a href... un comando meta
PHP:
<?php
//....
echo "<meta http-equiv='Refresh' content='4; URL=index.php'>";
//..
?>
attende 4 secondi (content =4) e poi torna in automatico alla index
 

Prom

Nuovo Utente
27 Gen 2015
6
0
0
scusa ma non ho capito bene, dici di avere una pagina php che elabora i dati del form inserendoli in un file txt, ma se non li fai stampare (echo o print) non li vedi

Ciao,
Grazie della risposta, cerco di darti più dettagli, non è esattamente come pensi. Ho un file form.html

HTML:
<form method="post" name="modulo" action="pagina.php">
<!-- tutte le varie domande -->
<script type="text/javascript" src="validation.js"></script>
<input type="button" value="Submit survey" onClick="Modulo()"/>
</form>

La funzione Modulo() è descritta nel file validation.js
HTML:
 <!--
function Modulo() {
         // definizione delle variabili 
if {
        // controllo sulle domande obbligatorie
}
else {
        document.modulo.submit();
       }
}
-->

Mentre il file pagina.php è così composto:

PHP:
<?php
// nome del file in cui inserire i dati
$file = "./elabora_dati.txt";

// apre il file in modalità "append", se non esiste lo crea
 $fp = fopen($file, "a");

// inserisce i valori ricevuti dal form in coda al file
 fputs($fp, htmlspecialchars($_POST["dato_1"]) . " " .
                htmlspecialchars($_POST["dato_2"]) "\r\n");

// chiude il file
 fclose($fp);
 
// richiama la pagina di ringraziamento
 echo "<meta http-equiv='Refresh' content='2; URL=thanks.html'>";
?>


Come vedi ho aggiunto l'echo che mi hai consigliato e funziona, ma rimane il solito problema: dopo che clicco su "Submit survey", passata la validazione dei campi, mi apre pagina.php in un'altra tab su cui poi carica la pagina di ringraziamento, lasciando la finestra originaria con il questionario e le domande. Come faccio a far sì che pagina.php si apra nella stessa tab di form.html?

Grazie ancora per l'aiuto!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
intanto perche non fai una pagina unica (form+elaborazione+grazie)?
poi cosa intendi con altra tab? altra finestra?
e dai un name al button
PHP:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>form</title>
<script type="text/javascript" src="validation.js"></script>
</head>
<body>
<?php
if(isset($_POST['invia'])){
	$file = "./elabora_dati.txt";
	// apre il file in modalità "append", se non esiste lo crea
	$fp = fopen($file, "a");
	// inserisce i valori ricevuti dal form in coda al file
	fputs($fp, htmlspecialchars($_POST["dato_1"]) . " " .htmlspecialchars($_POST["dato_2"]) "\r\n");
	// chiude il file
	fclose($fp);
	echo "<h1>grazie di aver risposto</h1>";
	echo "<meta http-equiv='Refresh' content='2; URL=index.php'>"; //rimandi alla index
}else{
?>
	<form method="post" name="modulo" action="pagina.php">
		<!-- tutte le varie domande -->
		<input type="button" name="invia" value="Submit survey" onClick="Modulo()"/><!-- dai il name al button-->
	</form>
<?php
}
?>
</body>
</html>
in questo modo non hai bisogno di fare 3 pagine, form+elaborazione+ringraziamento
poi secondo me ti conviene fare tutte le pagine con estenzione .php
ultima cosa: i controlli js sono graficamente "bellini", ma facilemente bypassabili, conviene sempre fare dei controlli dei dati lato server e, se appena puoi, abbamdona il file txt e passa ad un database (es. mysql)
 

Prom

Nuovo Utente
27 Gen 2015
6
0
0
Ciao,
Per quanto riguarda i controlli js, li ho scelti più che altro perché per me erano più semplici da capire e da scrivere.
La questione database l'avevo già incontrata per un altro aspetto e mi devo mettere a studiarla meglio, ma intanto inizio con il file txt.
Potresti spiegarmi che modifiche hai fatto al codice? Hai inserito il rimando allo script nell'head, poi hai inserito il php come prima cosa nel body mettendolo in un ciclo if, e hai inserito il form dentro else. Giusto? Però non capisco perché ci sono i rimandi a pagina.php né come funzioni esattamente. Scritto così com'è, mi apre comunque una nuova scheda(=tab)...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
scusa, ho fatto una svista col copy/paste
correggi l'action
PHP:
<form method="post" name="modulo" action="<?php echo $_SERVER['PHP_SELF']; ?>">
 

Prom

Nuovo Utente
27 Gen 2015
6
0
0
Ciao,
Immaginavo ci fosse stata una svista...
Ho provato come mi hai consigliato, ma c'è qualcosa che non va nel php: non mi scrive il file con i risultati e mi apre un'altra scheda ricaricando il questionario, che è la cosa che mi da più fastidio.
Com'è possibile? Perché si deve aprire sempre un'altra scheda?
Grazie mille per le tue risposte, mi stai aiutando veramente tanto!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
ho fatto delle prove, ho tolto il js e il button messo il pulsante di submit e senza percorso al file txt per fare prima, ho fatto queste due paginette
la prima chiamata pinco.php, la seconda form.php
pinco.php
PHP:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>index o come vuoi</title>
</head>
<body>
vai al <a href="form.php">form</a>
</body>
</html>
form.php
PHP:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>form</title>
</head>
<body>
<?php
if(isset($_POST['invia'])){
    //$file = "./elabora_dati.txt";
	$file = "elabora_dati.txt";
    // apre il file in modalità "append", se non esiste lo crea
    $fp = fopen($file, "a");
    // ATTENTA mancava il punto tra la fine di dato_2 e "\r\n"
    fputs($fp, htmlspecialchars($_POST["dato_1"]) . " " .htmlspecialchars($_POST["dato_2"]). "\r\n");
    // chiude il file
    fclose($fp);
    echo "<h1>grazie di aver risposto</h1>";
    echo "<meta http-equiv='Refresh' content='2; URL=pinco.php'>"; //rimandi alla index
}else{
?>
    <form method="post" name="modulo" action="<?php echo $_SERVER['PHP_SELF']; ?>">
        <!-- tutte le varie domande -->
		dato 1	<input name="dato_1" type="text" id="dato_1"> <br />
		dato 2	<input name="dato_2" type="text" id="dato_2"> <br />
        <!--<input type="button" name="invia" value="Submit survey" />-->
        <input name="invia" type="submit" id="invia" value="Invia">
    </form>
<?php
}
?>
</body>
</html>
risultato:
chiami pinco.php e cliccando su form ti si apre la pagina form.php, scrivi i dati e dai il submit
ti appare la scritta di ringraziamento e automaticamente torni a pinco.php (non al form)
nel file elabora_dati.txt trovi quello che hai inputato.

es ho provato

dato_1 dato_2
aaa bbb
ccc ddd


e li ho trovati nel txt
detto questo mi sa che il problema potrebbe essere nel js. punta a qualche pagina?
se è un problema di js avviso l'esperto
 

Prom

Nuovo Utente
27 Gen 2015
6
0
0
Sgrunt!!!!

Ho apportato le tue stesse modifiche: tolto il js e bottone submit, ma niente...

Allora ho copia-incollato le tue due pagine di prova e quelle funzionavano!

Così ho capito che c'era qualcosa che non andava nel resto dello script e mi sono resa conto che nell'head avevo:

HTML:
<base target="_blank">

che non so da dove saltasse fuori, probabilmente l'avevo copiato da qualche sito quando avevo iniziato e non l'avevo mai cancellato. Tolto quello, si è risolto tutto.

Grazie dell'aiuto e scusa se ti ho fatto perdere tempo, ma senza qualcuno con cui confrontarmi non ci sarei mai riuscita!!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
cioa
nessuna perdita di tempo, anche perchè così hai imparato un grande princiopio "molto spesso l'errore non è dove si pensa che sia"
 
Discussioni simili
Autore Titolo Forum Risposte Data
L Come caricare un'immagine in Canvas dinamicamente Javascript 0
C Come caricare foto da google foto ad un sito? Discussioni Varie 1
Y Come caricare e visualizzare un'immagine PHP 0
I javascript come caricare una pagina sopra quella corrente in automatico Javascript 2
O MIT App Inventor - caricare un file da app Sviluppo app per Android 1
Alex_70 [PHP] Caricare foto su un'altra tabella collegata PHP 0
A [Java] caricare un url esterno senza utilizzo di iframe Java 0
G Caricare una jpg con il php PHP 1
N [WordPress] Caricare diversi fogli di stile in tema-child WordPress 0
G Caricare una semplice Jpg con il PHP PHP 1
E Caricare dati da DB MySql all'apertura pagina, meglio PHP o Javascript? PHP 1
Selenio89 problema a caricare immagine con html. dove sbaglio? HTML e CSS 25
P [PHP] Caricare un file da client XP su server Ubuntu PHP 2
M [Javascript] Caricare link esterno file js in base al device Javascript 0
L Come caricare <iframe> dopo il click ad un immagine, per migliorare le prestazioni. Discussioni Varie 0
andrea93_12 Aiuto caricare immagine su database MYSQL MySQL 1
giancarlob Prova a rimandare o a caricare in modo asincrono le risorse di blocco SEO e Posizionamento 0
F [HTML] Caricare un font ttf HTML e CSS 2
Y CARICARE IMMAGINI IN CARTELLA PHP PHP 3
A Caricare foto in una gallery PHP 0
A caricare file PHP con Load cambiandone parte del contenuto jQuery 1
9 caricare immagini in tabella html da cartella sul server tramite id database PHP 1
A Caricare una pagina jsp in un div alla pressione di un button Javascript 1
M Problema caricare file sul hosting Discussioni Varie 1
M Caricare più google maps con un ciclo Javascript 1
marino51 non riesco a caricare un allegato percgè non riesco a ridimensionare la finestra Supporto Mr.Webmaster 0
F Caricare immagine da Mysql su evento click-radio Javascript 5
D Caricare foto in un DB PHP 2
S Caricare una pagina con JQuery jQuery 4
asevenx problemi per caricare immagine su server PHP 4
A [risolto] caricare con un ciclo For dei file PHP inclusi in una variabile array PHP 3
M Zenphoto: far caricare immagini agli utenti CMS (Content Management System) 0
F Caricare file da locale al server Javascript 3
D Caricare file via ajax Ajax 1
G caricare immagini sul db con il formato text PHP 3
P Caricare un .exe sul sito. HTML e CSS 6
P caricare dati all'interno di un tag div html HTML e CSS 15
I Perchè devo cliccare 2 volte su un link per caricare correttamente il css di una galleria? WordPress 1
F Caricare contenuto pagina all'interno di un'altra pagina Javascript 1
S come caricare un banner tramite un form in una cartella all interno del sito PHP 11
F comando php per caricare delle scritte in una pagina html PHP 4
C Problema nel Caricare file e spostarlo con la funzione move_uploaded_file PHP 14
X Caricare contenuto iframe su richiesta Javascript 6
F Caricare pagine del sito sul database MySQL 1
B Caricare immagini in un DB insieme ad altri dati e visualizzarli PHP 2
C in un file html/javascript caricare i div presenti nel body in un file di testo e richiamarli Javascript 7
P Caricare immagini con scelta multipla e creare le PHP 45
A Caricare quiz in un sito PHP 1
P Come caricare immagini e video PHP 57
D pagina per caricare testo e immagini direttamente sul sito pubblicato PHP 7

Discussioni simili