risposta form con testo

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Nella pagina che sto creando ho un form, che viene validato nella stessa pagina ed al termine se tutto è ok mi da una risposta così
PHP:
if (!$mail->Send() && !$mail2->Send()){
			//Messaggio che appare se clicco invio e tutti i campi sono vuoti
			echo '<div>
			<p><h3>C\'è stato un errore nell\'invio della mail</h3></p>
			Cortesemente riprova e se vedi che il problema persiste, contattami direttamente</div>'; //	Messaggio di errore invio mail
			echo "<meta http-equiv='Refresh' content='30; URL=contatti.php'>";
		} else if ($mail->Send() && !$mail2->Send()) {
			echo "<meta http-equiv='Refresh' content='30; URL=contatti.php'>";
			echo '<div>
			<p><h3>C\'è stato un errore nell\'invio della mail 2</h3></p>
			Cortesemente riprova e se vedi che il problema persiste, contattaci direttamente</div>';
		}  else if ($mail2->Send() && !$mail->Send()) {
			echo "<meta http-equiv='Refresh' content='30; URL=contatti.php'>";
			echo '<div>
			<p><h3>C\'è stato un errore nell\'invio della mail 1</h3></p>
			Cortesemente riprova e se vedi che il problema persiste, contattaci direttamente</div>';
		} else {
			echo "Grazie, ti contatterò nei prossimi giorni. Denis Topino";  //Messaggio invio riuscito
			echo "<meta http-equiv='Refresh' content='30; URL=contatti.php'>";
		}
. Il problema è che prima del form ho una parte di testo, che mi appare ogni qual volta ottengo l'invio del contatto dal form. Quindi invece di avere una pagina vuota con l'ok dell'invio della mail per il contatto ottengo invece il testo ed in fondo naturalmente la risposta all'invio del form. Cosa posso fare per non caricare anche il testo?
 

Jonn

Utente Attivo
29 Dic 2012
352
3
18
Pistoia
La parte di testo che hai prima del form è quindi una conferma del messaggio inviato?
 

Fez Vrasta

Utente Attivo
11 Mag 2013
409
0
0
metti la parte di testo dentro ad un if:

PHP:
if (!isset ($_POST)) {

  // Parte di testo da visualizzare solo prima dell'invio

}

Logicamente se invii i dati a PHP con get sostituisci $_POST con $_GET

E se la pagina iniziale è richiamata grazie ad una variabile "post" o "get" allora sostituisci $_POST con, ad esempio, $_POST["email"] presupponendo che l'email dell'utente venga passata con POST.
Spero di essere stato chiaro, se ti servono delucidazioni fammi sapere.


PS: comunque la sezione adatta sarebbe PHP, non HTML5
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Grazie per la risposta.
mi spiego meglio. La pagina contatti ha un form con una parte di testo prima del form stesso. Al momento di compilare il form e di inviarlo dovrei avere una risposta del buon fine o no dell'invio. Solitamente quando si mette sia il codice html sia il codice php cioè il motore per l'invio dei dati, la risposta la si ottiene nella stessa pagina, ma avendo prima del form questo testo mi trovo ad avere nella risposta sia il testo che la risposta e non mi piace. Vorrei avere solo la risposta e non vorrei creare una pagina apposta con i ringraziamenti per aver compilato il form.

P.S. credo di aver inserito il quesito nella sezione giusta visto che siamo in php e non html5
 

Fez Vrasta

Utente Attivo
11 Mag 2013
409
0
0
mi pareva di aver letto HTML5, avran spostato.

Comunque la mia soluzione è quello che cerchi.
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Non capisco. Ti allego un po di codice magari mi faccio capire meglio. Il testo in questione è un normalissimo testo all'interno di alcuni div, nulla di speciale mentre il codice del form è questo
PHP:
<?php
if(!isset($_POST['invia'])){
	?>
<form id="form_contact" method="post" action='<?php echo $_SERVER['PHP_SELF']; ?>'>
	<fieldset style="width:300px;">
    <legend>Dati Generali</legend>
    <ol>
        <input id="name"  name="name" type="text" tabindex="1" placeholder="Nome" required autofocus />
    </ol>
    <ol>
        <span>
        <input id="cell_1" name="cell1" type="text" tabindex="2" maxlength="4" placeholder="349" required /> /
        </span>
		<span>
        <input id="cell_2" name="cell2" type="text" tabindex="3" maxlength="8" placeholder="1234567" required />
        </span>
	</ol>
    <ol>
        <input id="email"  name="mail" type="text" tabindex="4" placeholder="E-Mail" required />
	</ol>
    </fieldset>
etc etc ...
</form>
		<?php
} else {

	//Variabili Validazione
	$formok	=	true;
	$errors	=	array();

	//Recupero dati
	$ip		=	$_SERVER['REMOTE_ADDR']	;
	$data	=	date('d/m/Y');
	$time	=	date('H:i:s');

	//Dati del Form
	$nome		=	trim($_POST['name']);
	$cell_1		=	trim($_POST['cell1']);
	$cell_2		=	trim($_POST['cell2']);
	$email		=	$_POST['mail'];
	$testo		=	trim($_POST['testo']);
	$data		=	trim($_POST['mydate']);
	$richiesta	=	trim($_POST['checkbox']);

ho saltato alcuni passaggi per la validazione del form ovviamente che non servono per il nostro problema

	//Invio mail se tutto è OK
	if($formok){

		$denis 		= "[email protected]"; //Mail di Denis
		$alessio	= "[email protected]"; //Mail di Alessio
		
		//Se è tutto OK preparo la mail con la funzione mail() di php
		//Preparo la mail per l'utente in HTML
		$messaggiohtml	= "<html><body style='background: #DCCE6D;'><head>
				<div style='width:100%; margin:0 auto; padding:20px 10px;'>
				<h1>Grazie!</h1><br>Ho ricevuto la tua richiesta<p>Qui di seguito troverai un resoconto di quello che mi hai scritto.
				Ti contatterò il prima possibile per definire i dettagli e magari per incontrarci.</p><br>Denis</div><br><br>
				<div style='padding:10px;'>
				Ciao Denis,<br> mi chiamo <span style='text-transform:uppercase;'>".$nome."</span> e sto cercando uno showman per l'evento che si terrà il ".$dataevento.",
				sarà un " .implode(", ",$richiesta).".	Questa è la mia richiesta:<br> ".$testo."<br><br>
				Chiamami al numero ".$cell_1."-".$cell_2."<br><br> <h4>Grazie</h4><span style=\"text-transform:uppercase;\">".$nome."</span><br><br>
				Questa richiesta te l'ho inviata oggi ".$oggi." alle ".$time." con questo indirizzo IP ".$ip." e sto utilizzando ".$browser."<br><br>
				</div>
				</head></body></html>";
		
		//Intestazioni generali
		$header		=	"From: DenisLive.it" .$denis;
		$header		.=	"Reply-To: Denis ".$denis;
		$header		.=	"Bcc:" .$alessio;
		$header		.=	"X-Mailer: PHP/" . phpversion();
		
		//Stringa che funge da separatore
		$boundary	=	"==String_Boundary_x" .md5(time()). "x";
		
		// costruiamo le intestazioni specifiche per un messaggio
		// con parti relazionate
		$header .= "MIME-Version: 1.0\n";
		$header .= "Content-Type: multipart/related;\n";
		$header .= " boundary=\"$boundary\";\n\n";

		// questa parte del messaggio viene visualizzata
		// solo se il programma non sa interpretare
		// i MIME poiché è posta prima della stringa boundary
		$header .= "Se visualizzi questo testo il tuo programma non supporta i MIME\n\n";
		
		// inizia la prima parte del messaggio in testo puro
		$header .= "–$boundary\n";
		$header .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
		$header .= "Content-Transfer-Encoding: 7bit\n\n";
		$header .= "Nome: . $nome ";
		$header .= "E-mail: ". "\n\" . $email . \"\n\r";
		$header .= 'Telefono:' . "\n" . $cell_1 . "-" . $cell_2 . "\n\n";
		$header .= 'Richiesta:' . "\n" . $richiesta . "\n\n";
		$header .= 'Testo:' . "\n" . $testo . "\n\n";
		$header .= $data . "\n";
		$header .= $time . "\n";
		$header .= $ip . "\n";
		
		// inizia la seconda parte del messaggio in formato html
		$header .= "–$boundary\n";
		$header .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
		$header .= "Content-Transfer-Encoding: 7bit\n\n";
		$header .= ".$messaggiohtml.\n";
		
		//Chiusura della stringa di Boundary
		$header	.=	"-boundary-\n";

		$oggetto	=	"Richiesta Informazioni dal sito Denis Live";
		

		
		
		if (!mail($email,$oggetto,$messaggiohtml,$header)){
			//Messaggio che appare se clicco invio e tutti i campi sono vuoti
			echo '<div>
			<p><h3>C\'è stato un errore nell\'invio della mail</h3></p>
			Cortesemente riprova e se vedi che il problema persiste, contattami direttamente</div>'; //	Messaggio di errore invio mail
			echo "<meta http-equiv='Refresh' content='3; URL=contatti3.php'>";
		}else {
			header('location: contatti4.php');
			echo '<div class="testo">Grazie, ti contatterò nei prossimi giorni. Denis Topino</div>';
			exit(0);
			//echo "Grazie, ti contatterò nei prossimi giorni. Denis Topino";  //Messaggio invio riuscito
			//echo "<meta http-equiv='Refresh' content='3; URL=contatti3.php'>";
		}
	}

}

partendo da qui, dove dovrei mettere il tuo codice? In che punto?
 

Jonn

Utente Attivo
29 Dic 2012
352
3
18
Pistoia
Si hanno spostato.

Allora:
- Tu hai una pagina di contatto
- hai del testo prima di questo form (che non si sa che roba sia XD)
- Supponiamo che il testo che hai prima della form sia: "Compila il seguente modulo e premi invio.."
- Quindi logicamente una volta che uno preme INVIO gli riappare la stessa pagina di contatti ma con il messaggino di conferma scritto sopra la form stessa, e senza la scritta "Compila il seguente modulo e premi invio..", giusto? penso di si.

Io ora non so di preciso come farlo perchè ci dovrei fare delle prove sopra, ma di primo acchito mi viene da pensare ad una soluzione così:
PHP:
if (!mail($email,$oggetto,$messaggiohtml,$header)){
            //Messaggio che appare se clicco invio e tutti i campi sono vuoti
			$risposta = "formnoncompleta";
            echo '<div>
            <p><h3>C\'è stato un errore nell\'invio della mail</h3></p>
            Cortesemente riprova e se vedi che il problema persiste, contattami direttamente</div>'; //    Messaggio di errore invio mail
            echo "<meta http-equiv='Refresh' content='3; URL=contatti3.php'>";
        }else {
			$risposta = "messaggiospedito";
            header('location: contatti4.php');
            echo '<div class="testo">Grazie, ti contatterò nei prossimi giorni. Denis Topino</div>';
            exit(0);
            //echo "Grazie, ti contatterò nei prossimi giorni. Denis Topino";  //Messaggio invio riuscito
            //echo "<meta http-equiv='Refresh' content='3; URL=contatti3.php'>";

All'inizio dell'IF ed all'inizio dell'ELSE ho assegnato un valore ad una variabile chiamata "risposta".

Poi al posto del testo che hai prima della form ci metti questo:
PHP:
<?php	if (isset($_GET['risposta']))
				{
				switch($_GET['risposta'])
					{
					//Qui il codice da mostrare sopra il form quando il messaggio viene spedito
					case "messaggiospedito":	echo 'Messaggio spedito! grazie per averci contattato..';
					
					//Qui il codice da mostrare sopra il form se mancano dei campi
					case "formnoncompleta":		echo 'Non hai compilato il form correttamente, riprova!';
					}
				}
				//Qui il codice da mostrare sopra il form la prima volta che si visualizza la pagina
				else{echo 'Compila il form e premi invio per spedire la richiesta';}
?>
Puo funzionare come può non funzionare perchè non avendo il codice completo della pagina non ho neanche capito bene come vuoi che sia questo messaggio e in PHP anche io non è che sia chissà a quale livello, spero ti possa servire.
Ciao
 
Ultima modifica:

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Grazie Jonn!
Allora, solo per chiarire alcuni dubbi. Io sto creando il sito per un amico il quale in questa pagina ha voluto inserire prima del form di contatto un testo dove spiega alcune cose. Per la serie, se vuoi scrivimi qui, chiamami qua, o se vuoi compila il form e poi subito dopo il form in oggetto.
Se hai avuto modo di provare saprai che, se la pagina ha solo il codice html del form ed il codice php per l'analisi e l'invio, al momento di cliccare su invia la risposta sarà un avviso dato dalla riga "echo" nel codice php che apparirà nella pagina priva del form stesso. Sia chiaro che non è una regola, posso sbagliarmi.
Naturalmente avendo questo testo prima del form quando ricarica la pagina senza il form mi ricarica comunque il testo incriminato. Proverò quello che mi hai detto ed usare la funzione switch come da te scritto.

P.S. se poi sapessi darmi qualche dritta su un altro thread sempre qua in php te ne sarei grato. :fonzie::fonzie:
 
Discussioni simili
Autore Titolo Forum Risposte Data
C Form con risposta PHP 2
T Form con Risposta Automatica PHP 1
C [PHP] Campo facoltativo del form che non deve risultare nella risposta se negativo PHP 6
Michaelweb93 [HTML] Creazione risposta automatica - email "Contact form 7" Wordpress WordPress 10
P problema form senza pagina di risposta PHP 15
M Visualizzare nuove domande in base a risposta precedente PHP 0
F Problema con risposta PHP 0
M Inviare dati nel db dopo risposta alert PHP 0
WorldWideWeb Ajax POST con risposta JSON Ajax 2
B [Java] Paginazione in risposta HTTP Java 0
D [PHP] script che invii una mail automatica dopo risposta ad una discussione di un forum PHP 0
B [PHP] Scrivere risposta multipla in database PHP 1
G PHP Nessuna risposta PHP 3
otto9due Risposta ajax -> json con php Ajax 3
C [PHP] Risposta a discussione forum PHP 7
C Parser di una risposta soap XML 0
ecosito [WORDPRESS] Lentezza (in attesa di risposta da www.......) WordPress 18
ANDREA20 [PHP] Buongiorno!!! potrei ricevere una risposta anch'io o no? PHP 7
localhost.nicola [AJAX-JQUERY] Ritornare true||false in base alla risposta ricevuta da success: di $.ajax() Ajax 1
A Cambiare Risposta onclick con Switch. Javascript 1
S Eseguire funzione jquery all'interno della risposta ajax Ajax 0
Benix89 Modulo per pagamento con la risposta ad alcune domande Magento 1
Benix89 Modulo per pagamento con la risposta ad alcune domande PHP 2
M Ipn paypal problema nella risposta PHP 1
P validazine input e risposta input Ajax 11
IImanuII Tempo per una risposta. PHP 20
S creazione test con invio risposta a una email prescelta PHP 4
V sono 3 anni che aspetto una risposta Flash 0
M [Risolto]Problema con risposta json Sviluppo app per Android 6
helpdesk nessuna risposta dalla query di selct PHP 5
catellostefano shell rmdir .... risposta directory not empty Linux e Software 5
catellostefano Perplessità sulla risposta di apache su linux Apache 19
I Script risposta breve Javascript 0
minatore messaggio di risposta PHP 2
V Aiuto PHP restiture una risposta in base al numero visitatore PHP 0
P Risposta personalizzata PHP 2
G ricevere una email dal web e inviare una risposta con allegato Classic ASP 2
K Test a Risposta Multipla PHP 0
I Risposta in automatico da Outlook. Windows e Software 1
icebracker risposta con codice HTML e CSS 10
cerbero risposta cn script, stavolta rispondetemi xo! Javascript 6
M Al Primo Senza Risposta...ora Ci Riprovo Non Si Sa Mai :-) Flash 1
4 messaggi di risposta!! HTML e CSS 4
S passare un valore da un form a un file .php con metodo post PHP 4
K Form che manda dati doppi PHP 1
K Problema form update PHP 2
Elisacau [Contact form 7] Inserire Numero auto incrementante WordPress 1
K form Inserimento record mysql PHP 2
I Form con selettore HTML e CSS 0
K [php]form invio dati PHP 0

Discussioni simili