Variazione di un campo input in base al contenuto di un altro campo input inserito dall'utente

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
Buongiorno a tutti,
premetto che è la prima volta che affronto Ajax, e scrivo qui perchè non sono riuscito a trovare nulla che mi aiutasse.
Quadro generale:
ho un form che tra le altre voci permette all'utente di selezionare il codice della lezione che vuole acquistare.
Vorrei che quando l'utente inserisce il codice della lezione il campo "prezzo della lezione" venisse popolato interrogando il db delle lezioni da cui estrarre il relativo prezzo.
Credevo fosse una cosa semplice per incominciare a familiarizzare con Ajax, ma non mi riesce di farlo funzionare!
Il form è il seguente:
HTML:
<form method="post" name="modulone" target="_blank">
Nome*: <input name="nomecliente" type="text" size="35" /> 
Cognome*: <input name="cognomecliente" type="text" size="35" /> <br><br>
Telefono: <input name="telefono" type="text" /> 
Email*: <input name="email" type="text" /> <br><br>
ID Lezione regalata (OPZIONALE**): <input name="id_lezione" type="text" size="4" onChange="prendiprezzo(this.value)"><br><br>
Numero posti (OPZIONALE): <input name="postiprenotati" type="text" size="3" value="1"><br><br>
Importo del buono*: Euro <input id="idid" name="pagato" type="text" size="4" value="80" /> , <input name="decimali" type="text" size="2" value="00"><br><br>
Destinatario del regalo*: <br> 
Nome <input name="destinatario" type="text" size="35" /> Cognome <input 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="Modulo()" style="color: red;"></p>
</form>

Lo script richiamato dal campo id_lezione:
Codice:
// 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) {
		document.getElementById("idid").value = xmlhttp.responseText;
	}
}

function GetXmlHttpObject() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	}
	if (window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
	return null;
}
Il codice php contenuto nella pagina corri.php:
PHP:
<?
$q = $_GET['q'];

include 'connect.php';

$query = ("SELECT * FROM calendario WHERE id_lezione = '$q'");
$risultato = mysql_query($query);
$riga = mysql_fetch_array($risultato);
$costo = $riga['euro'];
Quando inserisco il codice di una lezione il valore del campo "pagato" mi si azzera... In pratica, come faccio a inserire il valore di $costo nel form?
So di aver saltato qualcosa di fondamentale, ma non so cosa.
Grazie per l'aiuto!
 
Ciao,cosi a naso hai dimenticato di mandare in output il risultato php
PHP:
echo $costo;
non ho guardato il resto del codice quindi potrebbe non essere l'unico problema
 
confermo quanto detto da criric, con l'aggiunta che, ho guardato il resto del codice e funziona,

se vuoi fare un po' di debug, modifica così,

PHP:
      function prendiprezzo(str) {
	alert("The input value has changed. The new value is: " + str);

	xmlhttp = GetXmlHttpObject();

PHP:
      function stateChanged() {
	if (xmlhttp.readyState==4) {
		var myData = xmlhttp.responseText;
		alert("The seminar cost is: " + myData);
		document.getElementById("idid").value = myData;
	}
      }

PHP:
<?php
ini_set('log_errors', 1);
ini_set('error_log', 'corri.log');

$q = $_GET['q']; 

error_log("message : ".$q, 0);

/*
include 'connect.php'; 

$query = ("SELECT * FROM calendario WHERE id_lezione = '$q'"); 
$risultato = mysql_query($query); 
$riga = mysql_fetch_array($risultato); 
$costo = $riga['euro'];
echo $costo;
*/

$costo = 103;
error_log("costo : ".$costo, 0);
echo $costo;
?>

e guarda il log 'corri.log'
 
Ultima modifica:
Ciao,cosi a naso hai dimenticato di mandare in output il risultato php
PHP:
echo $costo;
non ho guardato il resto del codice quindi potrebbe non essere l'unico problema

Classico errore stupido da neofita frettoloso...
GRAZIE, ora funziona. Adesso meto un controllo nel caso l'utente sbagli il codice della lezione e poi il form è pronto (questo lo so fare...).
Alla prossima
 

Discussioni simili