passaggio variabili da form dopo verifiche: tutte meno una!?!?

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
Buongiorno a tutti,
ho un problema che magari è stupido ma non riesco a capire dove sbaglio.
ho una pagina con un form, due o tre script che controllano e fanno cose a seconda di quanto viene inserito nei vari campi, dopo di che l'ultimo script manda tutte le variabili a un'altra pagina php, che recupera le variabili _POST.
Tutto normale, tranne che passano i valori di tutte le variabili tranne "posti" che mi rimane misteriosamente vuota.
Naturalmente ho controllato e ricontrollato il nome della variabile, la punteggiatura ecc...
Ecco i codici delle due pagine.
1) la pagina col form:
Codice:
<?php
session_start();


	?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Regala un corso di cucina presso teatro7 | Lab</title>
<link href="backoffice.css" rel="stylesheet" type="text/css" />


<script type="text/javascript">
<!--

var q;

function Modulo() {
	var nomecliente = document.modulone.nomecliente.value;
	var cognomecliente = document.modulone.cognomecliente.value;
	var telefono = document.modulone.telefono.value;
	var email = document.modulone.email.value;
	var pagato = document.modulone.pagato.value;
	var decimali = document.modulone.decimali.value;
	var decok = "00";
	var destinatario = document.modulone.destinatario.value;
	var cognomedestinatario = document.modulone.cognomedestinatario.value;
	var id_lezione = document.modulone.id_lezione.value;
	var posti = document.modulone.postiprenotati.value;
	

	var email_reg_exp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;

	if (nomecliente == "") {
		alert("Il campo NOME è obbligatorio!");
		document.modulone.nomecliente.focus();
		return false;
	}
	if (cognomecliente == "") {
		alert("Il campo COGNOME è obbligatorio!");
		document.modulone.cognomecliente.focus();
		return false;
	}

	if (pagato == "" || pagato == 0) {
		alert("Il campo IMPORTO PAGATO è obbligatorio! SE HAI INSERITO UN CODICE LEZIONE CONTROLLA CHE SIA ESATTO!");
		document.modulone.pagato.focus();
		return false;
	}

	if (isNaN(pagato)) {
		alert("Nel campo IMPORTO PAGATO devono esserci solo numeri!");
		document.modulone.pagato.focus();
		return false;
	}

	if (isNaN(decimali)) {
		alert("Nel campo dei decimali devono esserci solo numeri!");
		document.modulone.decimali.value = decok;
		document.modulone.decimali.select();
		return false;
	}
	
	if (destinatario == "") {
		alert("IDevi inserire sia il nome che il cognome del destinatario del regalo!");
		document.modulone.destinatario.focus();
		return false;
	}

	if (cognomedestinatario == "") {
		alert("Devi inserire sia il nome che il cognome del destinatario del regalo!");
		document.modulone.cognomedestinatario.focus();
		return false;
	}

	if (q) {
		posti = q;
	};

	if (email == "") {
		alert("Il campo Email è obbligatorio! Dobbiamo poterti contattare in caso di problemi...");
		document.modulone.cognomedestinatario.focus();
		return false;
	};
	
	if(email) {
		if(!email_reg_exp.test(email)) {
			alert("ATTENZIONE: La mail inserita non è corretta!");
			document.modulone.email.select();
			return false;
			}

	}
	

	document.modulone.action = "acquista_regalo.php";
	document.modulone.submit();

}
var prezzolezione;


function nposti() {
	
	q = document.modulone.postiprenotati.value;

	document.getElementById("idid").value = prezzolezione * q;
	
}

function prosegui() {
	document.getElementById("asterischi").style.display = "none";
	document.getElementById("bottone").style.display = "block";
	document.getElementById("bottcontinua").style.display = "none";
}

// QUI GESTISCO LA RICHIESTA ASINCRONA CON AJAX

var xmlhttp;

function prendiprezzo(str) {
	xmlhttp = GetXmlHttpObject();

	if (xmlhttp == null) {
		alert ("Il browser non supporta le richieste HTTP");
		return;
	}

	var url="corri.php";
	url = url+"?q="+str;
	xmlhttp.onreadystatechange=stateChanged;
	xmlhttp.open("GET",url,true);
	xmlhttp.send(null);
}

function stateChanged() {
	if (xmlhttp.readyState==4) {
		if (xmlhttp.responseText == 0) {
			alert("CONTROLLA IL CODICE DELLA LEZIONE SCELTA! probabilmente non hai inserito il codice esatto");
			document.modulone.id_lezione.focus();
			document.modulone.id_lezione.select();
			return;
		}
		document.getElementById("idid").value = xmlhttp.responseText;
		var p = document.getElementById("posticini").value;
		if (p > 1) {document.getElementById("idid").value = xmlhttp.responseText * p};
		prezzolezione = xmlhttp.responseText;

	}
}

function GetXmlHttpObject() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	}
	if (window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
	return null;
}
//-->

</script>



</head>

<body>

<div>
	<a href="../index.html"><img src="../immagini/t7logo.gif"></a>
</div>

<div id="divsinistra" class="testoPiccolo">
<p>Compila il modulo per ottenere il voucher regalo in PDF<br>
	Se preferisci, invia una mail a <a href="mailto:ks@teatro7.com?subject=Vorrei regalare un corso di cucina...">Silvia</a><br>
oppure chiamala direttamente al numero +39 366 666 4427</p>
<br>
<hr>
<br>

<div id="ciccio"></div>

<form method="post" name="modulone" target="_blank">
Nome*: <input tabindex="1" name="nomecliente" type="text" size="35" /> 
Cognome*: <input tabindex="2" name="cognomecliente" type="text" size="35" /> <br><br>
Telefono: <input tabindex="3" name="telefono" type="text" /> 
Email*: <input tabindex="4" name="email" type="text" /> <br><br>
ID Lezione regalata (OPZIONALE**): <input tabindex="5" name="id_lezione" type="text" size="4" onChange="prendiprezzo(this.value)"><br><br>
Numero posti (OPZIONALE): <input tabindex="6" id="posticini" name="postiprenotati" type="text" size="3" value="1" onBlur="nposti()"><br><br>
Importo del buono*: Euro <input tabindex="20" id="idid" name="pagato" type="text" readonly="readonly" size="4" value="80" /> , <input tabindex="21" name="decimali" type="text" readonly="readonly" size="2" value="00"><br><br>
Destinatario del regalo*: <br> 
Nome <input tabindex="7" name="destinatario" type="text" size="35" /> Cognome <input tabindex="8" name="cognomedestinatario" type="text" size="35" /> <br><br> 


<div id="bottcontinua" style="display: block">
<p align="center"><input type="button" name="continua" value=" CONTINUA " onClick="prosegui()" style="color: red;"></p>
</form>

</div>


<hr>
<br>

<div id="asterischi" name="asterischi" style="display: block">
	<p><b>* CAMPI OBBLIGATORI</b></p>
	<p><b>** Se inserisci l'ID della lezione il buono riporterà anche il nome e la data della lezione regalata</b></p>
</div>

<div id="bottone" name="bottone" style="display: none">
	<p>Se non si indica il codice della lezione si regala un buono "aperto" dell'importo di <b>80 Euro</b>, che sarà valido per tutte le lezioni 
		con un prezzo fino a <b>85 Euro</b>.<br>
		Nel caso il destinatario del regalo scelga un corso dal costo superiore, potrà integrare la parte mancante prima dell'inizio della lezione,
		direttamente alla scuola.</p>
		<p>
			Per regalare una lezione specifica, bisogna inserirne il codice, consultando l'elenco delle lezioni qui a fianco. 
		</p>

		<p>
		Controlla i dati inseriti e procedi cliccando sul bottone qui sotto.
		</p>

		<p align="center">
			<input type="button" name="capito" value=" OK, HO CAPITO " onClick="Modulo()" style="color: red;">
		</p>
</div>





</div>





<div id="divdestra">
	<iframe src="../corsi_elenco.php" width="100%" height="640px" frameborder="0"   ></iframe>

</div>


<div class="keepclear"></div>


</body>
</html>
2) la pagine che riceve (acquista_regalo.php):
Codice:
<?php
session_start();

$nomecliente = $_POST["nomecliente"];
$cognomecliente = $_POST["cognomecliente"];
$telefono = $_POST["telefono"];
$email = $_POST["email"];
$pagato = $_POST["pagato"];
$decimali = $_POST["decimali"];
$decok = $_POST["decok"];
$destinatario = $_POST["destinatario"];
$cognomedestinatario = $_POST["cognomedestinatario"];
$id_lezione = $_POST["id_lezione"];
$posti = $_POST["posti"];

$_SESSION['nomecliente'] = $nomecliente;
$_SESSION['cognomecliente'] = $cognomecliente;
$_SESSION['telefono'] = $telefono;
$_SESSION['email'] = $email;
$_SESSION['pagato'] = $pagato;
$_SESSION['decimali'] = $decimali;
$_SESSION['destinatario'] = $destinatario;
$_SESSION['cognomedestinatario'] = $cognomedestinatario;
$_SESSION['id_lezione'] = $id_lezione;
$_SESSION['posti'] = $posti;




?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Regala un corso di cucina presso teatro7 | Lab</title>
<link href="backoffice.css" rel="stylesheet" type="text/css" />

</head>

<body>

<div>
	<a href="../index.html"><img src="../immagini/t7logo.gif"></a>
</div>

<div>
	<p>Riepilogo dei dati per il voucher:</p>
	<hr>
	<p>Il regalo è acquistato da: <? echo $nomecliente . " " . $cognomecliente . "<br>"; ?></p>
	<p>
		Dati di contatto:<br>
		- telefono: <? echo $telefono; ?> <bR>
		- Email: <? echo $email; ?> <br>
	</p>
	<p>Importo da pagare: <? echo $pagato . "," . $decimali; ?></p>
	<p>Destinatario del regalo: <? echo $destinatario . " " . $cognomedestinatario; ?></p>
	<hr>
	<p>
		Lezione scelta per il regalo: <? echo $id_lezione; ?><br>
		
		Posti prenotati: <? echo $posti; ?><br>
	</p>
	<hr>

</div>

<div id="bottone2" name="bottone2">

	<p align="center">Verifica che i dati inseriti siano corretti e procedi con l'acquisto del buono</p>

	<p align="center">
		<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top" align="center">
			<input type="hidden" name="cmd" value="_xclick">
               <input type="hidden" name="currency_code" value="EUR" />
               <input type="hidden" name="lc" value="IT" />
               <input type="hidden" name="item_name" value="Corso <?php echo $titolo; ?> a teatro7 | Lab" />
               <input type="hidden" name="amount" value="<?php echo $euro; ?>" />
               <input type="hidden" name="notify_url" value="http://www.teatro7.com/backoffice/listener_t7_voucher.php" />
               <input type="hidden" name="business" value="maurizioamedeo.gerosa@gmail.com" />
               <input type="hidden" name="custom" value="<? echo $id; ?>" />
               <input class='rosso' type='submit' value='ACQUISTA IL VOUCHER' style="text-align: center;" />
		</form>
	</p>
</div>


</body>
</html>
Caccia all'errore?
:-)
Grazie per l'aiuto. E' due giorni che ci sbatto la faccia e non ne vengo a capo...
 
Ciao, io non vedo un input con name "posti" nel tuo codice, c'è solo un name="postiprenotati"
 
nello script quando assegno le variabili:
Codice:
var posti = document.modulone.postiprenotati.value;
quindi mi aspettavo che da quel momento la variabile spedita fosse appunto "posti"... o no?
 
no. passa con il nome che hai assegnato all'attributo name. Se vuoi essere sicuro dei dati che arrivano alla pagina php metti sempre a inizio pagina var_dump($_REQUEST)
 
GRAZIE!
Ho sempre utilizzato lo stesso nome per le variabili all'interno degli script e non mi ero mai reso conto che passassero le variabili in base all'attributo name e non in base a come chiamavo le variabili nello script... Qui "postiprenotati" mi veniva scomodo e l'ho abbreviato... e ho imparato una cosa in più!
Alla prossima
 

Discussioni simili