mi sono proprio incastrata...!
ho seguito un esempio su un libro ed è andato tutto liscio, però ora ho
un'esigenza diversa rispetto all'esempio e non so come risolvere, vorrei quindi
se possibile qualche delucidazione.
Il mio scenario è questo: ho una form con due input text (codice cliente, password) e una select dove andranno i
destinatari collegati al codice cliente inserito.
Non riesco a capire come popolare la select senza stravolgere il lavoro che ho già fatto.
Riesco con successo a reperire i risultati della query destinatari che dovrebbe riempire la select,
risultato che inserisco in un array perchè potrebbero essere più di uno, ma poi il codice che trasferisce il risultato accoglie
stringa(responsetext) e non l'array, e poi cmq non saprei come inserirlo nella select essendo alla primissime armi....
Ho fatto una prova con un semplice testo l'ho passato al responsetext come potete vedere in more.php, poi in more.js tramite la
funzione handleServerResponse (myDiv = document.getElementById("risultato");
myDiv.innerHTML = responseText mi ritrovo direttamente la stringa nel div, quindi ho capito come funziona se trattasi di stringa,
ma non so proprio come elaborare il risultato della query che potrebbe essere più di un record, e tramite js passarlo alla select.
cmq riporto il codice....se qualcuno volesse spendere qualche minuto per capirci qualcosa gliene
sarei veramente grata 0
index.php
more.php
more.js
ho seguito un esempio su un libro ed è andato tutto liscio, però ora ho
un'esigenza diversa rispetto all'esempio e non so come risolvere, vorrei quindi
se possibile qualche delucidazione.
Il mio scenario è questo: ho una form con due input text (codice cliente, password) e una select dove andranno i
destinatari collegati al codice cliente inserito.
Non riesco a capire come popolare la select senza stravolgere il lavoro che ho già fatto.
Riesco con successo a reperire i risultati della query destinatari che dovrebbe riempire la select,
risultato che inserisco in un array perchè potrebbero essere più di uno, ma poi il codice che trasferisce il risultato accoglie
stringa(responsetext) e non l'array, e poi cmq non saprei come inserirlo nella select essendo alla primissime armi....
Ho fatto una prova con un semplice testo l'ho passato al responsetext come potete vedere in more.php, poi in more.js tramite la
funzione handleServerResponse (myDiv = document.getElementById("risultato");
myDiv.innerHTML = responseText mi ritrovo direttamente la stringa nel div, quindi ho capito come funziona se trattasi di stringa,
ma non so proprio come elaborare il risultato della query che potrebbe essere più di un record, e tramite js passarlo alla select.
cmq riporto il codice....se qualcuno volesse spendere qualche minuto per capirci qualcosa gliene
sarei veramente grata 0
index.php
HTML:
<html>
<head>
<title>Practical AJAX: PHP Parameters and Error Handling</title>
<script type="text/javascript" src="morephp.js"></script>
<meta name="viewport" content="width=device-width, user-scrollbar=no">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ordini On Line</title>
</head>
<body>
<table class="tablogin" border="1" align="center">
<tr class="trblu">
<td><img src="logo.gif" id="imglogo"/></td>
<td colspan="2" align="center" class="textreg"><p>Se sei già REGISTRATO inserisci Login e Password<br>
altrimenti richiedi i codici al servizio clienti della Rino Pratesi
Tel. +39.06.79.07.61</td>
</tr>
<tr>
<td class="tdwhite" colspan="3">Rino Pratesi ordini on-line</td>
</tr>
<tr>
<td class="tdrosso"> </td>
<td valign="top" class="corpo"><label for="area" class="area">Accedi alla tua Area Riservata per effettuare gli ordini on-line</label>
<form method="post" name="modulo">
<fieldset class="raccoglitore"> <br> <legend>LOGIN:</legend>
<label for="codice" class="lblcodice">Codice</label><input type="text" name="txtcodice" id="codice" class="txtcod"/>
<label for="password" class="lblpassw">Password</label><input type= "text" name= "txtpassword" id="password" class="txtpassw"/>
<input type= "button" value="Send" onClick="process()" class="mnubutton"/> </fieldset>
<br><fieldset><legend>SELEZIONA DESTINATARIO:</legend>
<select name="listadest" class="combolista">
</select>
<p><p>
<div id= "risultato" />
</fieldset>
</form>
</td>
<td class="tdrosso"> </td>
</tr>
</table>
</body>
</html>
more.php
Codice:
<?php
$codice = $_GET['codice'];
$password = $_GET['password'];
// chiamata alla funzione di connessione
$data->connetti();
$sqlLogCli="select CODICE, PASSWORD1, E_MAIL, RAGIONE_SOCIALE, INDIRIZZO, CITTA, PR from " .$db_clienti. " where CODICE =". $codice ." AND PASSWORD1= '".$password."'";
$risultlogincli= $data->query($sqlLogCli);
$NUMRECCLI=mysql_num_rows($risultlogincli);
if ($NUMRECCLI > 0)
{
$rescli=$data->estrai($risultlogincli);
$RAGSOCCLI=$rescli->RAGIONE_SOCIALE;
$CITTA=$rescli->CITTA;
$PR=$rescli->PR;
$daticlienti=$RAGSOCCLI . " ". $CITTA;
$sqlLogDest="select CODCLI, CODDES, RAGIONE_SOCIALE,INDIRIZZO,CAP,CITTA,PR from " . $db_dest. " where CODCLI =". $codice;
//filtro la tabella destinatari
$risultlogindest= $data->query($sqlLogDest);
$NUMRECDEST = mysql_num_rows($risultlogindest);
$datidest= "";
//questi dati mi servono per popolare la select
if($NUMRECDEST>0)
{
$i=0;
while($row = mysql_fetch_array($risultlogindest))
{
$clientiDest[] = array(
'RAGIONE_SOCIALE' => $row['RAGIONE_SOCIALE'],
'INDIRIZZO' => $row['INDIRIZZO']);
$i++;
}
}
else
header("Location: diario.php?smslogin=".$clientiDest[1]);
}
//questa parte di codice inserisce il risultato nel mydiv, e funziona se trattasi di stringa
//ma non di array.
$data->disconnetti();
$dom= new DOMDocument();
$response = $dom->createElement('response');
$dom->appendChild($response);
$responseText = $dom->createTextNode($clientiDest[1]);
$response->appendChild($responseText);
$xmlString = $dom->saveXML();
echo $xmlString;
?>
more.js
Codice:
function handleServerResponse()
{
// retrieve the server's response packaged as an XML DOM object
var xmlResponse = xmlHttp.responseXML;
// catching potential errors with IE and Opera
if (!xmlResponse || !xmlResponse.documentElement)
throw("Invalid XML structure:\n" + xmlHttp.responseText);
// catching potential errors with Firefox
var rootNodeName = xmlResponse.documentElement.nodeName;
if (rootNodeName == "parsererror")
throw("Invalid XML structure:\n" + xmlHttp.responseText);
// getting the root element (the document element)
xmlRoot = xmlResponse.documentElement;
// testing that we received the XML document we expect
if (rootNodeName != "response" || !xmlRoot.firstChild)
throw("Invalid XML structure:\n" + xmlHttp.responseText);
// the value we need to display is the child of the root <response> element
responseText = xmlRoot.firstChild.data;
// display the user message
myDiv = document.getElementById("risultato");
// $risultato = responseText;
myDiv.innerHTML = responseText;
}