Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di Scream
    Registrato dal
    Apr 2002
    Messaggi
    228

    [ajax] Formula matematica senza refresh

    Ciao, avrei necessità di fare un calcolo al volo tra 2 campi.
    In pratica l'utente inserisce 2 misure di un prodotto ed io devo calcolare in base alle variabili (misura1, misura2, idprodotto) il prezzo risultante.
    Questo deve accadere all'interno di una pagina che non deve essere ricaricata ovviamente

    Siccome di ajax ne capisco veramente poco, quello che ho intuito è una cosa simile a questa:

    codice:
    <script>function calcolaPrezzo(prodotto,valore1,valore2){
      myRequest = CreateXmlHttpReq(prezzo_calcolato);
      myRequest.open("POST","calcola_prezzo.php");
      myRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); 
      myRequest.send("id="+prodotto+"&lun="+valore1+"&lar="+valore2);
      myRequest.setRequestHeader("connection", "close");
    }
    
    function prezzo_calcolato(){
      if(myRequest.readyState==4 &#038;& myRequest.status==200){
        var a=document.getElementById("prezzofinito");
        a.innerHTML="";
        a.innerHTML=myRequest.responseText;
        $(".prezzofinito").selectbox();
      }
    }
    </script>
    sulla base di quanto scritto dovrei associare ad un pulsante l'azione calcolaPrezzo?
    in tal caso come faccio ad abilitare il pulsante solo se i 2 campi contenenti i valori sono stati compilati con numeri interi?

  2. #2
    Utente di HTML.it L'avatar di Scream
    Registrato dal
    Apr 2002
    Messaggi
    228
    Ho raggiunto questo NON risultato:
    pagina.php
    Codice PHP:
    <form name="calcolatore" id="calcolatore" method="post" action="" style="display:inline;">
    <
    label>Larghezza: <input class="number" type="number" name="lar" id="lar" min="50" step="1" /></label>
    <
    label>Altezza: <input class="number" type="number" name="alt" id="alt" min="100" step="1" /></label>
    <
    input type="button" name="submit" value="calcola" onClick="calcolaPrezzo();">
    <
    span id="prezzofinito"></span>
    </
    form
    Questo il codice in testata
    codice:
    <script>
    var myRequest = null;
    function CreateXmlHttpReq(handler) {
      var xmlhttp = null;
      try {
    	xmlhttp = new XMLHttpRequest();
      } catch(e) {
    	try {
    		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    	} catch(e) {
    		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    	}
      }
      xmlhttp.onreadystatechange = handler;
      return xmlhttp;
    }
    function calcolaPrezzo(prodotto,valore1,valore2){
      myRequest = CreateXmlHttpReq(prezzo_calcolato);
      myRequest.open("POST","calcola_prezzo.php");
      myRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
      myRequest.send("id="+prodotto+"&lar="+valore1+"&alt="+valore2);
      myRequest.setRequestHeader("connection", "close");
    }
    
    function prezzo_calcolato(){
      if(myRequest.readyState==4 &#038;& myRequest.status==200){
        var a=document.getElementById("prezzofinito");
        a.innerHTML="";
        a.innerHTML=myRequest.responseText;
      }
    }</script>
    Questa la pagina calcola_prezzo.php
    Codice PHP:
    // Controlla i dati
    if($_REQUEST['id']!=NULL){
      
    // ID prodotto
      
    $id $_REQUEST['id'];
      
    $lar $_REQUEST['lar'];
      
    $alt $_REQUEST['alt'];
      
    // Totale
      
    $total number_format(($lar*$alt),2,',','.');
    }
    if(
    $total!=NULL){
      echo 
    $total;

    In pratica premendo il pulsante che lancia la funzione mi dice che non la trova. Premetto che il codice con il form è in un box creato con fancybox il cui output è generato da una pagina PHP

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    192
    Per fare un calcolo tra due input utilizzando ajax basta usare il getElementById('id del input').
    Il bottone submit richiama quindi la funzione, all'interno della funzione ci saranno le due variabili che preleveranno il valore degli input e lì potrai fare tutti i calcoli che vuoi tra questi due variabili

  4. #4
    Ciao premetto che non ho visto il tuo script tuttavia dato che sei inesperto ti consiglio vivamente di usare ajax attraverso jquery, in primis perchè con 2 righe di codice gestisci le chiamate e sopratutto sei sicuro che sia cross browser...


    ah se non vuoi far in#azzare i bos non postare codice php qui

  5. #5
    Utente di HTML.it L'avatar di Scream
    Registrato dal
    Apr 2002
    Messaggi
    228
    il codice php credo serva per capire meglio il tutto, ad ogni modo...

    il calcolo l'ho semplificato per test. di fatto la formula corretta è:

    $variabile = "valore in database ricavato dall'id del prodotto"

    $lar*$alt*$variabile

    di conseguenza non credo che si possa fare la cosa con jquery. gli esempi che ho trovato sono stati con jquery calculation.

    Io devo fare questo processo:

    recuperare i valori inseriti dall'utente e l'id del prodotto
    spedirli ad una pagina php che farà il calcolo
    memorizzare il risultato in una variabile che sarà utilizzata 3 volte

    tutto questo senza ricaricare la pagina

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    192
    Perchè vorresti spedire le variabili ad una pagina php per fare il calcolo? Non potresti fare i calcoli utilizzando js?

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    recuperare i valori inseriti dall'utente e l'id del prodotto
    spedirli ad una pagina php che farà il calcolo
    memorizzare il risultato in una variabile che sarà utilizzata 3 volte
    Non ho capito pero su quale di queste 3 operazioni stai trovando difficoltà, sei ancora fermo qui?

    In pratica premendo il pulsante che lancia la funzione mi dice che non la trova.

  8. #8
    Utente di HTML.it L'avatar di Scream
    Registrato dal
    Apr 2002
    Messaggi
    228
    esatto sono ancora fermo.
    la formula è un po' più complessa. devo fare un po' di operazioni con varie tabelle di DB e quindi per ottenere un valore da applicare alla formula. oggi provo l'operazione senza usare il fancybox per capire se è lui che blocca il tutto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.