Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [javascript+validation] calcolo di variabili + controllo username su db

    Buongiorno a tutti, ho inserito entrambe le argomentazioni in un post solo visto che comunque riguardano entrambe javascript ed ajax (si, la seconda argomentazione con anche un pò di php, ma minimo <_<).

    Il primo problema che mi si presenta è il calcolo dei valore di due variabili con javascript ed il conseguente innerHTML in un div, quello che ho io è questo:

    codice:
    function checkStat() {  
    
    var forz = parseInt(document.FormStat.forza.value,10); 
    var dex = parseInt(document.FormStat.destrezza.value,10); 
    var ment = parseInt(document.FormStat.mente.value,10); 
    var res = parseInt(document.FormStat.resistenza.value,10); 
    var cha = parseInt(document.FormStat.chakra.value,10); 
    var tot = forz+dex+ment+res+cha; 
    
    if (tot == "60") { 
    
    document.getElementById('stats_check').innerHTML = "<font color=\"green\">60 Punti Spesi!</font>";  
    
    } else {  
    
    document.getElementById('stats_check').innerHTML = "<font color=\"red\">Hai ancora da spendere dei punti</font>";  
    
    }
    }
    ovviamente il Form si chiama FormStat, i nomi degli input sono corretti e li passo sotto parseInt perchè hanno valori interi numerici, quello che non accade poi è penso la somma delle variabili ed il successivo controllo.

    Chiunque abbia la voglia e la capacità di aiutarmi è ben accetto >.< grazie comunque in anticipo per il tempo che ci si spenderà.

    ----------------------------------------------------------------------------------------

    Il secondo problema è invece la possibilità di effettuare un validate sul campo Nome del form, richiedendo al database se il nome immesso sia già presente o no, restituendo chiaramente una frase del tipo "Il nome è libero" o "il nome è occupato".

    codice:
    var url = "script/user_check.php?nome=";
    
    function updateName() {
      document.getElementById('check_nome').innerHTML = "Controllo...";
      var name = document.getElementById("username").value;
      http.open("GET", url + escape(name), true);
      http.onreadystatechange = handleHttpResponse;
      http.send(null);
    }
    
    function handleHttpResponse() {
      if (http.readyState == 4) {
    
    
      }
    }
    
    function getHTTPObject() {
      var xmlhttp;
      if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
        try {
          xmlhttp = new XMLHttpRequest();
        } catch (e) {
          xmlhttp = false;
        }
      }
      return xmlhttp;
    }
    var http = getHTTPObject();
    nella pagina user_check.php ho questo:

    codice:
    $nome = $_GET['nome'];
    
    $sql=mysql_query("SELECT count(Nome) AS conto FROM user WHERE Nome LIKE '$nome'");
    $sq=mysql_fetch_array($sql);

    Il punto è ora, come collego il risultato della pagina user_check.php con il codice js che ho inserito nella pagina di registrazione?

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Perche' confronti una quantita' con una stringa? :master:

    if (tot == 60) {

    Per la seconda domanda ti sposto su PHP
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    perchè non sono ferratissimo in Javascript :P ed evidentemente non ho compreso del tutto il funzionamento, quello di cui ho bisogno è, confrontare il valore sommato delle prime 5 variabili con un valore fisso (che è 60) e poi dare eventuali riscontri in base a quanto venuto.

    Se la somma è uguale a 60 un messaggio, se è superiore un'altro, se è inferiore un'altro ancora.

    Ps. mi sono accorto solo ora di (tot = "60") lo prende come stringa, mentre dovrebbe essere, se non sbaglio (tot == 60) senza apici " ". Possibile?

  4. #4
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Per tale tipoi di collegamento :

    1) Evita come la peste la struttura ajax che stai usando.
    E' brutta, poco usabile, poco manuntenibile e poco gestibile.

    Usa jquery se non hai esperienza con la programmazione OOP in js.
    Le classi/metodi di jquery per la semplice gestione di ajax sono fantasitche leggere e ti tolgono dalle OO (b4ll3) tutta una serie di casini.

    2) Usa il formato json per gestire le risposte dal server.
    E' uno dei migliori formati che puoi usare. Ha un basso overhead e se controlli bene i dati risposti, se formattati correttamente, si "trasformano" direttamente in oggetti che puoi usare tranquillamente e trasparentemente.

    3) Leggi la documentazione di jquery bedrai che dopo la chiamata ajax deovrai eseguire una funziona chiamata funzione di callback dove andrai ad utilizzare i dati risposti dal server


    EDIT :
    Ho visto ora la tua risp.

    In js come in php la tipizzazione delle variabili e' dinamica e delegata al parser nonche' gestita a runtime.

    Devi fare attenzione con i tipi :

    a = "a" // stringa
    a = 10 // intero
    a = "10" // stringa

    Quindi tu correttamente utilizzi parse int per convertire il tipo della variabile ma poi lo confrontavi con la stringa "60" , e come ti diceva sopra devi fare il controllo senza apici o virgolette perche il motore js effettui un confronto numerico.


    Inoltre :
    http://www.w3schools.com/jsref/jsref_parseInt.asp

  5. #5
    Il mio problema è che non sono un gran conoscitore di javascript ed ajax, quindi per me usare le librerie (come ovviamente scrivere codice da zero) diventa un problema, ma questo sistema di validation mi fa davvero comodo, quando più ovviamente che rende sbrigativa l'iscrizione di un utente.

    il campo del form "Nome" attiva la funzione updateName(); con l'istruzione OnBlur, da li dovrebbe far partire la chiamata vero la pagina user_check.php con param=Nome e riportare il risultato della query che si tiene in user_check.php è così rognoso da fare?

    il code per far partire la chiamata c'è

    [CODE
    var url = "script/username_check.php?param=";

    function updateName() {
    // da l'istruzione di inserire Controllo.. nel div check_nome per l'attesa
    document.getElementById('check_nome').innerHTML = "Controllo...";
    // prende il valore del campo username e lo affibia alla variabile name
    var name = document.getElementById("username").value;
    // apre la connessione in GET con script/user_check.php?param= specificando name come variabile
    http.open("GET", url + escape(name), true);
    http.onreadystatechange = handleHttpResponse;
    http.send(null);
    }
    [/CODE]

    dopo questa dovrebbe esserci il rientro dopo la query

    codice:
    function handleHttpResponse() {
      if (http.readyState == 4) {
    var results = http.responseText;
    //e qui mi fermo, perchè non so come richiamare il valore venuto fuori dalla query
    
      }
    }

  6. #6
    Il mio problema è che non sono un gran conoscitore di javascript ed ajax, quindi per me usare le librerie (come ovviamente scrivere codice da zero) diventa un problema, ma questo sistema di validation mi fa davvero comodo, quando più ovviamente che rende sbrigativa l'iscrizione di un utente.

    il campo del form "Nome" attiva la funzione updateName(); con l'istruzione OnBlur, da li dovrebbe far partire la chiamata vero la pagina user_check.php con param=Nome e riportare il risultato della query che si tiene in user_check.php è così rognoso da fare?

    il code per far partire la chiamata c'è

    codice:
    var url = "script/username_check.php?param=";
    
    function updateName() {
    // da l'istruzione di inserire Controllo.. nel div check_nome per l'attesa
      document.getElementById('check_nome').innerHTML = "Controllo...";
    // prende il valore del campo username e lo affibia alla variabile name
      var name = document.getElementById("username").value;
    // apre la connessione in GET con script/user_check.php?param= specificando name come variabile 
      http.open("GET", url + escape(name), true);
      http.onreadystatechange = handleHttpResponse;
      http.send(null);
    }
    dopo questa dovrebbe esserci il rientro dopo la query

    codice:
    function handleHttpResponse() {
      if (http.readyState == 4) {
    var results = http.responseText;
    //e qui mi fermo, perchè non so come richiamare il valore venuto fuori dalla query
    
      }
    }

  7. #7
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Ripeto : usa jquery.

    Ti faccio un esempio di chiamata ajax con jquery :

    $.ajax({
    url: 'documento.xml',
    type: 'GET',
    dataType: 'xml',
    timeout: 1000,
    error: function(){ // Sull'errore invoco una funzione
    alert('Errore durante il caricamento del documento XML');
    },
    success: function(xml){
    // Eseguo le modifiche al file XML
    $(xml).find('elemento').each(function(){
    var item_text = $(this).text();

    $('[*]')
    .html(item_text)
    .appendTo('ol');
    });
    }
    });


    Che dici abbastanza semplice no ???

    Trovi tutto qui

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.