Newsgroup: it.comp.lang.javascript
Titolo: js + php recuperare valore da query

Sto facendo dei test su una semplice pagina
ho inserito nella parte alta il codice js
e sotto il codice php
questa � la funzione:
  function showUser(str) {
   if (str=="") {
     document.getElementById("txtHint").innerHTML="";
     return;
   }
   if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, 
Safari
     xmlhttp=new XMLHttpRequest();
   } else {// code for IE6, IE5
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   }
   xmlhttp.onreadystatechange=function() {
     if (xmlhttp.readyState==4 && xmlhttp.status==200) {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
     }
   }
   xmlhttp.open("GET","ajax_model.php?type="+$('#type').val()+"make="+$('#make').val()+str,true);
   xmlhttp.send();
   var str1="Valore da recuperare";
   document.getElementById
   ('prezzo').innerHTML = "Prezzo " + str1;
  }
Questo � il codice sotostante in php
<label for="type">Type:</label>
      <select id="type" name="type">
    <?php
    include('../../lib/class_dbcon.php');
    $connect = new doConnect();
    $q = mysql_query("SELECT ProductID, ProductName,  ProductColor, 
ProductSku , ProductPrice FROM product ORDER BY ProductName ASC");
    while($row = mysql_fetch_assoc($q))
    {
     echo '<option value="' . $row['ProductID'] . '"';
                    echo '>' . $row['ProductName'] . ' - ' . 
$row['ProductColor'] . ' - ' . $row['ProductSku'] . '</option>' . "\n";
    }
    $connect->disc();
   ?>
  </select><div id="prezzo"></div>
      <br />
      <label for="make">Make:</label>
      <select id="make" name="make" onchange="showUser(this.value)">
    <option value="">-- Select Make --</option>
  </select>
dovrei recuperare il valore $row['ProductPrice'] e visualizzarlo nel <div 
id="prezzo"></div>
ho inserito queste righe nel js :
  var str1="Valore da recuperare";
   document.getElementById
   ('prezzo').innerHTML = "Prezzo " + str1;
dovrei inserire il valore $row['ProductPrice']  in var str1=
come cavolo faccio?


Ciao, puoi farlo anche senza usare js, basta scrivere
<div>
  <p>
   <?php echo $row['ProductPrice'];?>
  </p>
</div>
Saluti Patrick

 
"Patrick" <pt@NOSPAM.c> ha scritto nel messaggio 
news:4e94b2c2$0$1374$4faf...@reader1.news.tin.it...

si ok
sto facendo delle prove
io ho un prezzo che è X ( $row['ProductPrice'] )
selezionando la seconda select gli farei fare dei calcoli e a fronte del 
risultato di questo calcolo visualizzare il risultato ottenuto
 
 
per questo volevo tenerlo .hide e poi .show il div
 
 
 
 

 come cavolo faccio?
Non puoi, non nel modo che pensi tu. Il punto ï¿½ che il lato client e
server side vivono in due tempi completamente differenti. Quando JS
agisce, PHP ha giï¿½ terminato da un bel pezzo, e l'uno non ï¿½ consapevole
dell'altro. Dunque, tu vuoi che il prezzo cambi quando l'utente cambia
scelta, quindi o contatti di nuovo il server, chiedendogli il prezzo per
quell'articolo ogni volta che l'utente cambia la selezione (che giï¿½ mi
sembra tu lo faccia con `showUser`, quindi puoi farti ritornare entrambi
i valori che ti servono), oppure nel momento in cui stai componendo la
pagina in PHP "salvi" il dato del prezzo da qualche parte, in modo che
lato client sia possibile recuperarlo quando ï¿½ il momento. Ad esempio:
    echo '<option value="' . $row['ProductID'] . '" data-price="' .
$row['ProductPrice'] . '"';
Lato client quindi avrai un attributo `data-` (HTML5) che potrai
accedere tramite JS. In jQuery Ad esempio sarebbe:
    $("#make option:selected").data("price");
Se hai giï¿½ il riferimento a `#make`, puoi anche usare JS puro, che ï¿½ piï¿½
rapido:
    make.options[make.selectedIndex].getAttribute("data-price");
Se il browser supportasse i data attributes:
    make.options[make.selectedIndex].dataset.price;
Ma visto che vuoi supportare anche IE non ti consiglio di certo
quest'ultima, era solo per dover di cronaca.

   }();|
Un po' piï¿½ arzigogolata, forse, ma piï¿½ coerente, potrebbe essere:
    var getXMLHttpRequest = function getXMLHttpRequestFactory() {
       if (window.XMLHttpRequest) {
         return function nativeXMLHttpRequest() {
           return new XMLHttpRequest();
         }
       } else if (window.ActiveXObject) {
         var isWin32 = false;
         /*@cc_on
           @if (@_win32)
            isWin32 = true;
          @end
         @*/
         if (isWin32)
            return function ActiveXMLHttpRequest() {
              return new ActiveXObject("Microsoft.XMLHTTP");
            }
       }


           @*/
Scusate l' ot, ma qualcuno potrebbe spiegarmi o indirizzarmi dove 
trovare il significato delle @ sia in questo caso che nel caso di php?
Grazie mille, per le risposte
Saluti Patrick

 Grazie mille, per le risposte
Prego.

 Prego.
 
Grazie mille Zer0, per la spiegazione sempre cortese e disponibile. Alla 
prossima
Saluti Patrick
 

 lato client sia possibile recuperarlo quando è il momento. Ad esempio:
 
Hai ragione non ci avevo pensato
ti dico cosa ho in testa
 
Con la select  <select id="type" name="type2">
scelgo l'articolo ed il prezzo relativo
con la <select id="make" name="make2" onchange="showUser(this.value)">
scelgo la lavorazione: legata all'articolo e scelgo ad esempio "fresatura"
prendo il prezzo dell'articolo e sommo il prezzo fresatura = $prezzo
 
<div id="prezzo"></div> mi rimane hide quando ho il valore $prezzo lo 
visualizzo .show
 
per cui come prendo il valore $prezzo preso da ajax_model.php  e lo 
visualizzo in id prezzo?
 
 
Altra domanda
non ho capito come visualizzo sto valore  $("#make 
option:selected").data("price"); o 
make.options[make.selectedIndex].getAttribute("data-price");
 nella pagina
 

 nella pagina
 
Beh, tranne `innerHTML` o `html` di jQuery.
Una volta che PHP ti scrive il valore come data attributes, lo puoi
recuperare lato client nei modi sopra descritti. Poi è una stringa a
tutti gli effetti che puoi manipolare come più ti aggrada.