@Privacy-Impresa said:
Secondo me il problema è che usando l'innerhtml sostituisci quello che c'è nel div... ma poi devi pure stamparle? perchè se le devi stampare potresti anche selezionare nei menu a tendina gli articoli e poi mandando l'invio si apre la fattura ben formattata, con gli articoli scritti come testo e non nel select e anche l'importo scritto come testo, selezionando dal database il prezzo in base all'articolo...
Ad ogni modo prova a inviare con innerhtml non solo il prezzo, ma tutto l'elemento input, tag compresi...
keiske
allora forse ho avuto l'illuminazione ma non riesco a farla funzionare
ho modificato descrizione.php in questo modo
<?
include("connect.php");
$db = mysql_connect($db_host, $db_user, $db_password);
mysql_select_db($db_name, $db)
or die ("Errore nella selezione del database. Verificare i parametri ");
$q=$_GET["q"];
$codice=$_GET["cod"];
$sql="SELECT * FROM articoli WHERE codice = '".$q."'";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
echo "
<input maxlength=\"6\" size=\"6\" readonly=\"readonly\" name=\"importo" . $codice . "\" value=" . $row['importo'] . ">";
}
?>
e richiamandolo direttamente funziona... restituisce un input box con nome corretto ed importo corretto ...
invece questo è un pezzo del file principale nuova_fattura.php ....
<-------cut--------->
<? for ($i=1;$i<8;$i++){?>
<tr class="bodystyle">
<td><div align="center">
<select name="codice<?=$i;?>" id="codice<?=$i;?>" onchange="mostraarticolo('this.value', '<? print $i;?>')" >
<option selected="selected" value="null">Scegli un articolo ....</option>
<? $queryarticoli= "select * from articoli order by codice asc";
$ris_articoli = mysql_query($queryarticoli) or die ("Query fallita");
while($row_articoli=mysql_fetch_array($ris_articoli)){
?>
<option value="<?=$row_articoli['codice']?>" ><? echo $row_articoli['descrizione'];}
?></option>
</select>
</div> <div align="center"></div></td>
<td><div align="center" id="riga<?=$i;?>">
<input maxlength="6" size="6" readonly="readonly" name="importo<?=$i;?>" >
</div></td>
<td><div align="center">
<input maxlength="2" size="4" readonly="readonly" name="iva<?=$i;?>" >
</div></td>
<td><div align="center">
<input maxlength="2" size="4" readonly="readonly" name="prezzo<?=$i;?>" >
</div></td>
</tr>
<? } ?>
<-------cut--------->
modificato per richiamare la funzione mostraarticolo passando il valore della select quindi il codice dell'articolo e in più il numero di riga ...
la funzione javascript contenuta in descrizione.js invece l'ho modificata così
var xmlHttp
function mostraarticolo(str, codice)
{
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request")
return
}
var url="descrizione.php"
url=url+"?q="+str+"&cod="+codice"
xmlHttp.onreadystatechange=stateChanged
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}
function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
document.getElementById("test").innerHTML=xmlHttp.responseText
}
}
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
//Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
il problema è che sembra come se non venisse affatto richiamata (anche guardando i log del server ) e non succede niente ...
ho provato anche a modificare la parte
document.getElementById("test").innerHTML=xmlHttp.responseText
in ```
document.getElementById("importo"+codice).innerHTML=xmlHttp.responseText
ma non funziona ...
qualche idea dai guru ajax + javascript + php + mysql ! :x:x