Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    36

    stranissimo problema inspiegabile

    Salve, da 2 gg sbatto la testa su qualcosa che mi sta sembrando assurdo.
    Ho un form di registrazione in cui l'utente inserisce la partita iva. Effettuo prima di tutto i controlli standard sulla partiva iva, cioè l'esistenza (se il campo è vuoto), la lunghezza(11) e i tipi di caratteri inseriti (accettando sono numeri ovviamente). Se la sequanza di caratteri supera quasti primi test verifico se la partita iva inserita non risulta già presente nel database (mysql). uso una variabile variabile LoadVars() e il metodo sendAndLoad("file.php", myLoadVars, "POST")...Il file php (testato e funzionante) mi restituisce una variabile che può avere 3 valori:
    1)ok -> p.iva non risulta in archivio
    2)exist -> p.iva esistente
    3)errore_query -> qualcosa è andato storto

    Nel flash ho creato un input text di nome "iva " e un testo dinamico di nome "errore_iva " che mi segnale i risultati dei controlli. Inoltre c'è un bottone "controlla" che una volta schiacciato richiama la funzione controlla_campi_reg1()

    ******POSTO TUTTO IL CODICE******

    var p_iva=new LoadVars();

    function controlla_campi_reg1()
    {
    errore_iva="";

    /*IVA*/

    var var_iva:String=controlla_iva(iva.text);
    if(var_iva=="errore1")
    {
    errore_iva="campo obbligatorio";
    }
    if((var_iva=="errore2") || (var_iva=="errore3"))
    {
    errore_iva="campo errato";
    }
    if(var_iva=="ok")
    {
    var_iva=ottieni_iva();
    if(var_iva=="errore6")
    {
    errore_iva="errore caricamento";
    }
    if(var_iva=="exist")
    {
    errore_iva="p.iva già esistente";
    }
    if(var_iva=="errore_query")
    {
    errore_iva="errore query lettura";
    }
    if(var_iva=="ok")
    dati_utente["iva"]=iva.text;
    }


    if(var_iva==undefined)
    trace("p.iva indefinita");
    else
    trace("P:IVA = "+var_iva);
    }

    function controlla_iva(iv):String
    {
    num=["0" , "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9"];
    var trovato:Boolean;
    if(iv.length==0)
    return "errore1";
    else if(iv.length!=11)
    return "errore2";
    else//controllo se contiene caratteri non validi
    {
    for(i=0;i<11;i++)
    {
    trovato=false;
    for(j=0;j<10;j++)
    if(iv.charAt(i)==num[j])
    {
    trovato=true;
    j=10;//velocizziamo
    }
    if(!trovato)
    {
    return "errore3";
    }
    }
    return "ok";
    }
    }

    function ottieni_iva()
    {
    p_iva["piva"]=iva.text;
    p_iva.onLoad=function (success:Boolean)
    {
    if(success)//connessione a file esterno avvenuta con successo
    {
    if(this.loaded)
    {
    if(p_iva["result"]=="exist")
    errore_iva="p.iva già esistente";
    }
    }
    else
    return "errore6"
    };
    p_iva.sendAndLoad("check_iva.php" , p_iva , "POST");
    return p_iva["result"];
    }

    /***************RISULTATO STRANO************************/
    Quando inserisco una p.iva che è già presente nel mio db (cioè check_iva.php ritorna exist ) segnalo l'errore tramite errore_iva="p.iva già esistente"; ma successivamente, grazie al trace, mi stampa p.iva indefinita grazie a queste righe di codice:
    if(var_iva==undefined)
    trace("p.iva indefinita");
    else
    trace("P:IVA = "+var_iva);

    COME è POSSIBILE UNA COSA SIMILE??SE SOSTITUISCO QUESTE 2 RIGHE

    if(p_iva["result"]=="exist")
    errore_iva="p.iva già esistente";

    con return p_iva["result"]
    mi stampa sempre trace("p.iva indefinita");
    ....
    ...


    VI SEMBRA POSSIBILE???NON è un problema di caricamento altrimenti
    if(p_iva["result"]=="exist")
    errore_iva="p.iva già esistente";
    non funzionerebbe...cioè se riconosce il valore di p_iva["result"] confrontandolo (per prova) con "exist" nell'if, perchè se gli dico di ritornarmi direttamente p_iva["result"] non funziona?? Inoltre se provo a farmi stampare il valore de testo dinamico "errore_iva" dopo avergli assegnato "p.iva già esistente" non mi dà alcun valoreù

    AIUTATEMI PER FAVORE PERCHE' NON HO CAPITO DOV'è L'ERRORE

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    31
    Ciao, di recente ho avuto anche io un problema di valori di ritorno da PHP a flash...mi riescie difficile analizzare tutto il tuo codice, però posso dirti 2 cose:

    Di new LoadVars(); ne ho usati 2, uno per i dati mandati ed uno per i dati ricevuti, mentre tu mi pare ne abbia usato uno solo.

    Inoltre nel PHP ho usato il comando echo '&nome_variabile=valore' (apostrofi compresi) per inviare la variabile ed in flash l'ho recuperata col comando nome_loadVars_caricata.nome_variabile.

    Un esempio sotto:

    lv = new LoadVars();
    lvr = new LoadVars();
    lvr.onLoad = function() {
    if (lvr.dato_ricevuto == undefined) {
    trace("Errore connessione server");
    } else {
    trace(lvr.dato_ricevuto);
    }
    };
    lv.dato_da_inviare = dato.text;
    lv.sendAndLoad("form.php",lvr);
    Spero di esserti stato di aiuto, ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    36
    non è purtroppo un problema di connessione...I dati da php li legge!!!!

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Mi spiace, ma il regolamento non è optional, il titolo deve descrivere il problema ancora prima del thread e qui non lo fa, riproponi nuovamente con un titolo adeguato.

    [edit] Vabbè, diciamo che per stavolta te la do buona, ho modificato come meglio credevo, il titolo del thread, ma le prossime volte fai più attenzione.

  5. #5
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Già che ci sono rispondo anche alla tua domanda, il tuo è un problema di sincronia dei dati. Non puoi pretendere che la risposta di php sia immediata rispetto alla domanda, passerà un minimo di tempo entro il quale i dati non saranno disponibili, e di conseguenza il fatto di tentare un return su una funzione che si aspetta i dati da un evento asincrono, è perfettamente inutile e nella maggior parte dei casi restituirà un undefined.

    Io il tuo codice, a occhio, lo vedrei più in questo modo:
    Codice PHP:
    var p_iva = new LoadVars ();
    p_iva.onLoad = function (success:Boolean) {
        if (
    success) {
            if (
    this.result == "exist") {
                
    var_iva "exists";
            } else {
                
    var_iva "ok";
            }
        } else {
            
    var_iva "errore6";
        }
        
    processa_iva();
    };
    function 
    controlla_campi_reg1 () {
        
    errore_iva "";
        var 
    var_iva:String controlla_iva (iva.text);
        switch (
    var_iva) {
            case 
    "errore1":
                
    errore_iva "campo obbligatorio";
                break;
            case 
    "errore2": case "errore3":
                
    errore_iva "campo errato";
                break;
            case 
    "ok":
                
    ottieni_iva();
                break;
        }
    }
    function 
    processa_iva() {
        switch (
    var_iva) {
            case 
    "errore6":
                
    errore_iva "errore caricamento";
                break;
            case 
    "exists":
                
    errore_iva "p.iva già esistente";
                break;
            case 
    "errore_query":
                
    errore_iva "errore query lettura";
                break;
            case 
    "ok":
                
    dati_utente["iva"] = iva.text;
                break;
            case 
    undefined:
                
    trace ("p.iva indefinita");
                break;
            default:
                
    trace ("P:IVA = " var_iva);
                break;
        }
    }

    function 
    controlla_iva (iv):String {
        if (
    iv.length == 0) {
            return 
    "errore1";
        } else if (
    iv.length != 11) {
            return 
    "errore2";
        } else {
            return !
    isNaN(Number(iv)) ? "ok" "errore3";
        }
    }
    function 
    ottieni_iva () {
        
    p_iva["piva"] = iva.text;
        
    p_iva.sendAndLoad ("check_iva.php",p_iva,"POST");

    Non sono sicuro di aver scritto tutto correttamente, a quest'ora la stanchezza inizia a farsi sentire

    Ah, mi sono permesso di ottimizzare la parte di controllo dell'iva, non c'è bisogno della routine di controllo su ogni carattere, basta vedere se la stringa trasformata in numero è effettivamente un numero o restituisce "NaN (Not a Number)".

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    36
    GRAZIE MILLE DELL'AIUTO...GENTILISSIMO VERAMENTE!!!aL + PRESTO PROVO MA PENSO FUNZIONERA' DI SICURO!!!NON SONO UN ESPERTO FLASH,ANZI SONO ALL'INIZIO!!!HO SEMPRE PROGRAMMATO IN JAVA,C,PHP MA NOTO CHE LA LIENA è SEMPRE LA STESSA!!!QUESTIONE DI ESERCIZIO

  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Ti si è incastrato il caps-lock

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    36
    Ho provato e il codice funziona...Ma c'è un altro problema, un pò meno drammatico, penso sempre legato alla sincronia delle variabili....Ti spiego: ho dichiarato una varibile booleana chiamata tutto_ok che all'inizio della funzione controlla_campi_reg1() setto a true; quando c'è un campo scorretto setto la variabile a false ed essa nonsarà mai più true fin quando non scrivo correttamente le mie aree di testo...in pratica ho aggiunto al tuo alla fine degli switch dei metodi processa_iva() e controlla_campi_regi1() questo:
    Codice PHP:
    if(var_iva!="ok")
    {
    tutto_ok=false;

    Alla fine di controlla_campi_reg1() controllo:
    Codice PHP:
    if(tutto_ok)
    {
    procedo all'inserimento......

    Tutto funziona se scrivo i miei campi regolarmente, ma se scrivo una p.iva già esistente mi segnala l'errore, la correggo, ma il primo passaggio non procede all'inserimento, ma soltanto cliccando dinuovo sul bottone per l'inserimento(che chiama controlla_campi_reg())...In pratica tutto_ok resta settato a false e solo al secondo click diventa true...
    Spero mi sarai di aiuto anche qesta volta.......

  9. #9
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Mmh, sicuramente è necessario reimpostare ogni volta il tutto_ok=true, ma dovresti ripostare lo script con le tue modifiche, che non ho capito con esattezza dove vanno.

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    36
    Posto tutto il codice
    Codice PHP:
    //inizializzo una variabile booleana per la correttezza dei campi
    var tutto_ok:Boolean=false;

    //inizializzo l'array che conterrà tutti i campi
    var dati_utente=new LoadVars();

    //inizializzo l'array x la p.iva
    var p_iva=new LoadVars();

    //inizializzo l'array x il cf
    var cod_f=new LoadVars();

    //inizializzo l'array x l'email
    var e_mail=new LoadVars();

    //inizializzo le variabili x i controlli dell'iva,cf e email
    var var_iva:String="";
    var 
    var_cf:String="";
    var 
    var_email:String="";

    //funzione onLoad per il cf,richiamata quando sendAndLoad ha terminato
    cod_f.onLoad = function (success:Boolean):Void 

        if (
    success
        { 
            if (
    this.result == "exist"
            { 
                
    var_cf "exists"
            } 
            else 
            { 
                
    var_cf "ok"
            } 
        } 
        else 
        { 
            
    var_cf "errore6"
        } 
        
    processa_cf();         
    }; 

    //funzione onLoad per l'iva
    p_iva.onLoad = function (success:Boolean):Void

        if (
    success
        { 
            if (
    this.result == "exist"
            { 
                
    var_iva "exists";
                
    //trace(var_iva);
            

            else 
            { 
                
    var_iva "ok"
            } 
        } 
        else 
        { 
            
    var_iva "errore6"
        } 
        
    processa_iva();
    }; 

    //funzione onLoad per l'email
    e_mail.onLoad = function (success:Boolean):Void

        if (
    success
        { 
            if (
    this.result == "exist"
            { 
                
    var_email "exists"
            } 
            else 
            { 
                
    var_email "ok"
            } 
        } 
        else 
        { 
            
    var_email "errore6"
        } 
        
    processa_email();
    };
    function 
    controlla_campi_reg1()
    {
        
    //resetto tutti i campi di segnalazione di errori
        
    errore_cf=errore_iva=errore_email="";
        
    tutto_ok=true;
    /*IVA*/
        
    var_iva controlla_iva (iva.text); 
        switch (
    var_iva
        { 
            case 
    "errore1"
                
    errore_iva "campo obbligatorio";
                break; 
            case 
    "errore2": case "errore3"
                
    errore_iva "campo errato";
                break; 
            case 
    "ok"
                
    ottieni_iva(); 
                break; 
        } 
        if(
    var_iva!="ok")
            
    tutto_ok=false;
        
    /*CF*/
        
    var_cf controlla_cf (cf.text); 
        switch (
    var_cf
        { 
            case 
    "errore1"
                
    errore_cf "campo obbligatorio";
                break; 
            case 
    "errore2"
                
    errore_cf "lunghezza errata";
                break; 
             case 
    "errore3"
                
    errore_cf "caratteri non validi";
                break; 
            case 
    "ok"
                
    ottieni_cf(); 
                break; 
        } 
        if(
    var_cf!="ok")
            
    tutto_ok=false;
        
        
    /*EMAIL*/
        
    var_emailcontrolla_email (email.text); 
        switch (
    var_email
        { 
            case 
    "errore1"
                
    errore_email "campo obbligatorio";
                break; 
            case 
    "errore2"
                
    errore_email "campo errato";
                break; 
            case 
    "ok"
                
    ottieni_email(); 
                break; 
        } 
        if(
    var_email!="ok")
            
    tutto_ok=false;
    if(
    tutto_ok)
    {
    //proseguo per l'inserimento
    }
    }
    /***************************FUNZIONI X IL CF***************************/
    function ottieni_cf () 

        
    cod_f["c"] = cf.text;
        
    cod_f.sendAndLoad ("http://127.0.0.1/cf.php",cod_f,"POST"); 
    }
    function 
    processa_cf() 

        switch (
    var_cf
        { 
            case 
    "errore6"
                
    errore_cf "errore caricamento";
                break; 
            case 
    "exists"
                
    errore_cf "CF già esistente";
                break; 
            case 
    "errore_query"
                
    errore_cf "errore query lettura";
                break; 
            case 
    "ok"
                
    dati_utente["cf"] = cf.text
                break; 
            case 
    undefined
                
    tutto_ok=false;
                break; 
            default: 
                
    tutto_ok=false
                break;
        } 
        if(
    var_cf!="ok")
            
    tutto_ok=false;

    function 
    controlla_cf (c):String 

        if (
    c.length == 0)  
            return 
    "errore1"
        else if (
    c.length !=16)  
            return 
    "errore2"
        else 
        { 
            
    c=c.toUpperCase();
            var 
    trovato:Boolean=false;
            var 
    mix:Array=['A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M' 'N' 'O' 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z' '0' '1' '2' '3' '4' '5' '6' '7''8' '9'];
            for(
    i=0;i<c.length;i++)
            {
                
    trovato=false;
                for(
    j=0;j<mix.length;j++)
                {
                    if(
    c.charAt(i)==mix[j])
                    {
                        
    trovato=true;
                        
    j=mix.length;//velocizziamo
                    
    }
                }
                if(!
    trovato)
                    return 
    "errore3";
            }
            return 
    "ok";
        }

    /*************************FINE FUNZIONI X IL CF************************/

    /***************************FUNZIONI X L'IVA***************************/
    function ottieni_iva () 

        
    p_iva["piva"] = iva.text
        
    p_iva.sendAndLoad ("http://127.0.0.1/iva.php",p_iva,"POST"); 
    }
    function 
    processa_iva() 

        switch (
    var_iva
        { 
            case 
    "errore6"
                
    errore_iva "errore caricamento";
                break; 
            case 
    "exists"
                
    errore_iva "p.iva già esistente";
                break; 
            case 
    "errore_query"
                
    errore_iva "errore query lettura"
                break; 
            case 
    "ok"
                
    dati_utente["iva"] = iva.text
                break; 
            case 
    undefined
                
    tutto_ok=false;
                break; 
            default:
                
    tutto_ok=false;
                break; 
        } 
        if(
    var_iva!="ok")
            
    tutto_ok=false;


    function 
    controlla_iva (iv):String 

        if (
    iv.length == 0
        { 
            return 
    "errore1"
        } 
        else if (
    iv.length != 11
        { 
            return 
    "errore2"
        } 
        else 
        { 
            return !
    isNaN(Number(iv)) ? "ok" "errore3"
        } 

    /**************************FINE FUNZIONI X L'IVA*************************/

    /***************************FUNZIONI X L'EMAIL***************************/
    function ottieni_email () 

        
    e_mail["em"] = email.text
        
    e_mail.sendAndLoad ("http://127.0.0.1/email.php",e_mail,"POST"); 
    }
    function 
    processa_email() 

        switch (
    var_email
        { 
            case 
    "errore6"
                
    errore_email "errore caricamento";
                break; 
            case 
    "exists"
                
    errore_email "email già esistente";
                
    tutto_ok=false;
                break; 
            case 
    "errore_query"
                
    errore_email "errore query lettura"
                break; 
            case 
    "ok"
                
    dati_utente["email"] = email.text
                break; 
            case 
    undefined
                
    tutto_ok=false
                break; 
            default: 
                
    tutto_ok=false
                break; 
        }
        if(
    var_email!="ok")
            
    tutto_ok=false;


    function 
    controlla_email (e):String 

        if (
    e.length == 0)  
            return 
    "errore1"
        else if (
    e.length 7)  
            return 
    "errore2"
        else 
        { 
            var 
    trovato_punto:Boolean=false;
            var 
    trovato_at:Boolean=false;
            for(
    i=0;i<e.length;i++)
            {
                if(
    e.charAt(i)==".")
                    
    trovato_punto=true;
                if(
    e.charAt(i)=="@")
                    
    trovato_at=true;
            }
            if((!
    trovato_punto)||(!trovato_at))
                return 
    "errore2"
        }
        return 
    "ok";

    /*************************FINE FUNZIONI X L'EMAIL************************/ 

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.