Problema form invio dati

  • Creatore Discussione Creatore Discussione Alcolico
  • Data di inizio Data di inizio

Alcolico

Nuovo Utente
28 Nov 2006
10
0
0
Ciao a tutti,
premetto che sono alle prime armi col php..
Ho inserito un form di invio dati in un sito da me fatto e gestito.. Premetto che i dati arrivano senza problemi sulla mail, il problema è che ad invio effettuato dovrebbe apparire il classico messaggio di conferma ma non appare.. E poi se possibile vorrei che dopo il messaggio di conferma la pagina si aggiornasse/ricarichi in automatico (col form in bianco per intenderci...). Provo a postare un pò di codice sperando di beccare la parte giusta :jolly:

PHP:
			define('email','qui email destinatario');
session_start();
define("formContents","text,		*Nome,nome
text,		*Cognome,cognome
text,		*E-mail,email
text,		*Telefono,tel
text,		Data arrivo,start
text,		Data partenza,end
select,	    Adulti,option #0, option #1, option #2, option #3, option #4
select,		Bimbi 0-36 mesi,option #0, option #1, option #2, option #3, option #4
select,		Bimbi 3-10 anni,option #0, option #1, option #2, option #3, option #4
select,		Ragazzi 10-16 anni,option #0, option #1, option #2, option #3, option #4
select,		Sistemazione,option #0, option #1, option #2, option #3, option #4, option #5, option #6
select,		Trattamento,option #0, option #1, option #2, option #3
textarea,	Informazioni aggiuntive

header
submit,		INVIA
");

if($_POST){
	
	// visitor is sending us an email, verify & send
	
	
	
	// PREPARE EMAIL CONTENTS.
	$formItem=explode("\n",constant('formContents'));
	$body='';
	foreach($formItem as $item){
		
		$items=explode(',',$item);
		$safeName=trim(preg_replace( "/[^a-zA-Z0-9\-]/",'',$items[1]));
		unset($f);
		foreach($items as $iitems=>$iiitems)
			$f[$iitems]=trim($iiitems);

		if($f[0]=='header'){
			// this is header or separator, need to check if we need to skip it or not.	
			if(trim($f[1])!='')
			$body.=	"\n=======================================\n\t".$f[1].
					"\n=======================================\n\n";
			
		} elseif($f[0]=='submit'){
			
		} elseif($f[0]=='textarea'){
			
			if(trim($f[1])!='')
			$body.=trim($f[1],'*').":\n\n".$_POST[$safeName]."\n\n";
			
		} elseif($f[0]=='checkbox'){
			$body.=$f[1].': '."\n";
			
			if(count($_POST[$safeName])>0){
				foreach($_POST[$safeName] as $checkboxValue)
					$body.="\t- ".$checkboxValue."\n";
			}
			
		} else {
			if(trim($f[1])!='')
			$body.=trim($f[1],'*').":\t".$_POST[$safeName]."\n";
			
			if($f[2]=='email') // this will be "FROM" email
				$fromEmail=$_POST[$safeName];
			
			if($f[2]=='from') // this will be "FROM" name
				$fromName=ucfirst($_POST[$safeName]);
		}
	
	}
	
	if(!isset($fromName))$fromName='Richiesta preventivo';
	if(!isset($fromEmail))$fromEmail=constant('email');
	
	// was it send? 
	if(@mail(constant('email'),'Richiesta preventivo',$body,'From: '.$fromName.' <'.$fromEmail.'>'))
		echo 'OK';
	else
		echo 'ERROR';
	

	exit;
}
 
Dovrebbe bastare scrivere il messaggio di conferma al posto di "OK", per l'aggiornamento ti consiglio Javascript:
<script language="JavaScript
function doRefresh() {
document.location.reload();}
window.setTimeout("doRefresh();", 1500);
</script>
 
Innanzitutto grazie Eliox per la risposta,
allora forse mi sono spiegato male io perchè il messaggio di conferma (e anche di errore) c'è ma non viene visualizzato dopo le modifiche che ho apportato al form.. Ti posto il codice della funzione che invia

Codice:
function sendForm(){
		
		
		jQuery("#imessageOK, #imessageERROR").hide();
		jQuery(".required").removeClass("required");			
				jQuery.ajax({
			type: "POST",
			url: "contact.php",
			data: AddDetails,
			success: function(data){
				
				if(data=='OK'){
					jQuery(".iform").slideUp(function(){
														 
						jQuery("#imessageOK").fadeIn();
						
														 
					});
				} else {
					 
					jQuery("#imessageERROR").slideDown();
					jQuery("#btn1").val("INVIA");					
				}
			}
		});
			}
e nella chiamata del form sotto poi c'è
HTML:
<form method="post" action="" onsubmit="return:false" class="iform">
<div id="imessageOK">Grazie, messaggio spedito!</div>
<div id="imessageERROR">ERRORE: messaggio NON spedito!</div>

quindi in pratica dopo l'invio dovrebbe apparire sto rettangolo con il messaggio di conferma o errore e invece rimane vuoto..

Altra domanda..è possibile nella mail che arriva al destinatario avere come mittente la mail inserita nel form?
:tifoso:
 

Discussioni simili