query per popolare una select tramite ajaxc php e xml !

Kelly

Utente Attivo
5 Set 2008
112
1
18
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
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">&nbsp;</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">&nbsp;</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;
}
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao e Benvenuta :fonzie:
anche tu membro dell' U.C.A.S. ? (Ufficio Complicazione Affari Semplici)
Ti sei proprio incasinata.
Con tutta la buona volontà stasera non riesco a comprendere il codice che hai postato, magari ci riprovo domani a mente fresca.
Il discorso comunque è molto semplice :
Tutto quello che mandi in echo nella pagina chiamata da ajax verrà mostrato nel div indicato nella chiamata.
Ti posto un esempio molto semplice di come potresti fare:
index.php - contiene il form e la chiamata ajax
HTML:
<script type="text/javascript">
    function richiesta_ajax(code){  
        var xmlHttp = new XMLHttpRequest();
        xmlHttp.open('GET', 'more.php?code=' + code , true);    
        xmlHttp.onreadystatechange = function() {      
            if(xmlHttp.readyState == 4) {              
                if (xmlHttp.status == 200) {    
                    document.getElementById("risultato").innerHTML=xmlHttp.responseText;
                }
            }
        };   
        xmlHttp.send(null);
    }
</script>
<form>
    <input id="code" type="text" name="codice" />
    <input onclick="richiesta_ajax(document.getElementById('code').value)" type="button" name="send" value="send"/>
    <div id="risultato"></div>
</form>
more.php - contiene l'elaborazione della richiesta
PHP:
<?php
if ($_GET['code'] == '123456') {
    $dest = array("pippo", "pluto", "paperino");
    ?>
    <select name="listadest">
        <?php
        foreach ($dest as $key => $value) {
            echo "<option value='$key'>$value</option>";
        }
        ?>
    </select>
    <?php
} else {
    echo "<p> ! codice errato ! Accesso negato </p>";
}
?>
Ho usato un semplice array per farti capire meglio la struttura.
Il codice potrebbe diventare ancora più semplice utilizzando la libreria Jquery ma questo è un altro discorso.

Non ho commentato ma sono poche righe di codice e se sei riuscita a decifrare quel libro non dovresti aver problemi. :book:
 
Ultima modifica:

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
scusa se mi inserisco in questa discussione,
ho creato i due file che hai postato, nella stessa dir,
win 7, ie 11, mi chiede e acconsento, contenuto bloccato
inserisco il codice 123456 ma nulla succede
forse un controllo nelle "opzioni internet",
mi puoi dare una dritta ?
grazie infinite e ancora scusa
Marino
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Strano non dovrebbe bloccarti il contenuto,
ho riprovato anche con ie 11,
prova a vedere se qui ti fa la stessa cosa
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
dal tuo link funziona

sul pc ho abilitato l'estensione di 3e parti e non mi chede più l'attivazione

ma continua a non rispondere
grazie, se ti viene in mente qualcosa
ciao
Marino
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
ho attivato il debug

Riga: 7
Errore: Accesso negato.
xmlHttp.open('GET', ....

se hai un suggerimento
ciao
Marino
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Sinceramente non mi viene in mente
cominciamo ad escludere i problemi di compatibilità:
lo script che ho postato in effetti non funziona sulle versioni vecchie di IE ( sulla 11 si però)
modificalo cosi e riprova
HTML:
<script type="text/javascript">
    function richiesta_ajax(code) {
        var xmlHttp = null;
        if (window.XMLHttpRequest) {
            // IE7+, Firefox, Chrome, Opera, Safari
            xmlHttp = new XMLHttpRequest();
        }
        if (window.ActiveXObject) {
            // IE5, IE6
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlHttp.open('GET', 'more.php?code=' + code, true);
        xmlHttp.onreadystatechange = function() {
            if (xmlHttp.readyState == 4) {
                if (xmlHttp.status == 200) {
                    document.getElementById("risultato").innerHTML = xmlHttp.responseText;
                }
            }
        };
        xmlHttp.send(null);
    }
</script>
Eventualmente per non intasare questa discussione sporterò i messaggi in una nuova
 

Kelly

Utente Attivo
5 Set 2008
112
1
18
query per popolare una select tramite ajaxc php e xml !

grazie infinite....non sai da quanto tempo cerco una risposta....
adesso faccio delle prove.....poi in caso ti scrivo....
grazie ancora :love:




Ciao e Benvenuta :fonzie:
anche tu membro dell' U.C.A.S. ? (Ufficio Complicazione Affari Semplici)
Ti sei proprio incasinata.
Con tutta la buona volontà stasera non riesco a comprendere il codice che hai postato, magari ci riprovo domani a mente fresca.
Il discorso comunque è molto semplice :
Tutto quello che mandi in echo nella pagina chiamata da ajax verrà mostrato nel div indicato nella chiamata.
Ti posto un esempio molto semplice di come potresti fare:
index.php - contiene il form e la chiamata ajax
HTML:
<script type="text/javascript">
    function richiesta_ajax(code){  
        var xmlHttp = new XMLHttpRequest();
        xmlHttp.open('GET', 'more.php?code=' + code , true);    
        xmlHttp.onreadystatechange = function() {      
            if(xmlHttp.readyState == 4) {              
                if (xmlHttp.status == 200) {    
                    document.getElementById("risultato").innerHTML=xmlHttp.responseText;
                }
            }
        };   
        xmlHttp.send(null);
    }
</script>
<form>
    <input id="code" type="text" name="codice" />
    <input onclick="richiesta_ajax(document.getElementById('code').value)" type="button" name="send" value="send"/>
    <div id="risultato"></div>
</form>
more.php - contiene l'elaborazione della richiesta
PHP:
<?php
if ($_GET['code'] == '123456') {
    $dest = array("pippo", "pluto", "paperino");
    ?>
    <select name="listadest">
        <?php
        foreach ($dest as $key => $value) {
            echo "<option value='$key'>$value</option>";
        }
        ?>
    </select>
    <?php
} else {
    echo "<p> ! codice errato ! Accesso negato </p>";
}
?>
Ho usato un semplice array per farti capire meglio la struttura.
Il codice potrebbe diventare ancora più semplice utilizzando la libreria Jquery ma questo è un altro discorso.

Non ho commentato ma sono poche righe di codice e se sei riuscita a decifrare quel libro non dovresti aver problemi. :book:
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
scusa Nique se mi sono intromesso con un altro problema

ma volevo ringraziare criric per la sua cortesia,

accesso negato, con doppio click sul file html ovvero nella barra di navigazione
C:\Web_Sites\__Test\.......html

funziona con
http://localhost/test_site/php/test/.......html

non si finisce mai di scoprire ....
grazie di cuore
Marino
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Kelly, Nique :confused:
Siete due o una sola?

@Marino
certo, c'è bisogno del web server per interpretare il codice php
 
Ultima modifica:

Kelly

Utente Attivo
5 Set 2008
112
1
18
query per popolare una select tramite ajaxc php e xml !

Stessa persona, ho avuto problemi con il recupero della vecchia password
allora mi sono registrata di nuovo...
e quindi alla fine ho fatto confusione....quindi se vuoi cancellarne uno dei due per me va bene,
mantenendo la discussione attuale....!

perdona i casini!

Kelly, Nique :confused:
Siete due o una sola?

@Marino
certo, c'è bisogno del web server per interpretare il codice php
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Non ti preoccupare :fonzie:
chiedo all'amministratore come procedere e ti faccio sapere
 

Kelly

Utente Attivo
5 Set 2008
112
1
18
query per popolare una select tramite ajaxc php e xml !

Ho provato il tuo esempio .... c'è una cosa che non capisco...
ovvero, mentre nel libro c'è questa istruzione:

xmlHttp.responseText=xmlRoot.firstChild.data;

nel tuo esempio il responseText non lo assegni...
sembrerebbe che già contenga il valore......


:)
 
Ultima modifica di un moderatore:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Il codice che hai postato è incompleto e fa uso di XML, inutile per quello che devi fare tu
Ho trovato questa discussione che credo contenga l'intero codice che stai utilizzando
 

Kelly

Utente Attivo
5 Set 2008
112
1
18
query per popolare una select tramite ajaxc php e xml !

E' un esempio che sta nello stesso libro che sto utilizzando, il mio codice è incompleto nel senso che
non ho riportato ad esempio in dettaglio le interrogazioni al database, e la costruzione dell'oggetto
xmlHttp solo per semplificare la lettura....cmq ora cercherò di modificare il codice intorno al tuo....

grazie :)




Il codice che hai postato è incompleto e fa uso di XML, inutile per quello che devi fare tu
Ho trovato questa discussione che credo contenga l'intero codice che stai utilizzando
 
Discussioni simili
Autore Titolo Forum Risposte Data
E Aiuto per query PHP 8
V Query per una somma PHP 2
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
T Query per ricerca ritardo evento MS Access 7
Alex_70 actor film query per php PHP 1
G [PHP] Selezionare OGGI anno precedente per query sql PHP 2
elpirata [PHP] Query per ricercare stringa in più colonne PHP 5
S Il metodo $.getJSON() e <select> che non si popola di dati per query troppo grandey Ajax 0
sandropochi [PHP] Query per estrarre record con data successiva a quella odierna PHP 2
Trapano Query in php come ordinare per data e anche per ora PHP 7
M Query mysql per selezioni random in categorie mirate PHP 4
M Access-Query per creare una tabella con la data nel nome tabella MS Access 0
L Vanno bene queste due query per estrarre da due tabelle? MySQL 6
M Query Join per 2 colonne MySQL 1
otto9due Piccolo aiutino per una query.. PHP 3
F Miglior metodo per contare le righe di una query MySQL 2
M query per distinct su data timestamp Database 1
A [RISOLTO] Query per ricerca campo timestamp MySQL 2
N Chronoform: query UPDATE passando per il Confirmation Page Joomla 0
A [risolto] aiuto integrazione query per db calcistico MySQL 2
P [Access 2000] Export query in tanti file (uno per ogni record) MS Access 0
L radio button scattenare get per la query PHP 4
R passare una variabile in query per ORDER BY PHP 6
ivarello Raggruppare Query per mese PHP 1
J Aiuto per una query di eliminazione PHP 5
K creare uno script in php , per generare in modo automatico query PHP 2
Trapano Query per data PHP 1
Trapano Query semplicissima ma non per me :-( PHP 5
EffeElle Problema per una query di aggiornamento record php PHP 35
R Aiutino per query MySql PHP 8
P Query Mysql per inserimento multiplo MySQL 4
A Query per ricerca PHP 2
F aiuto per query UNIONE mysql MySQL 2
A Query per l'estrazione di occorrenze identiche PHP 1
A Il risultato di una query diviso per lettera PHP 2
L Query per fascie di età Classic ASP 0
E Aiuto per query PHP 8
E due query per due tabelle MySQL 22
grottafelix Query per estrazione record "a settimana" Classic ASP 1
Z query sql e script php per ordinamento dati tabella PHP 2
M query per paginazione record PHP 9
F query per ordine alfabetico ma... PHP 1
A Aiuto, query per Access 2003 MS Access 5
O query per db access PHP 0
giorgione_tg Per eseguire una query... PHP 6
max75 query su due tabelle e dati doppioni MS Access 2
E Query differenza tra tabelle MySQL 5
E Query Alias PHP 4
T Query con date MS Access 1
K Inserimento query Errore 1366 PHP 4

Discussioni simili