problemi di validazione asincronizzazione dati

Discussione in 'PHP' iniziata da paperinik4, 3 Ottobre 2013.

  1. paperinik4

    paperinik4 Utente Attivo

    Registrato:
    29 Maggio 2011
    Messaggi:
    1.812
    Mi Piace Ricevuti:
    0
    Punteggio:
    36
    Occupazione:
    Pensionato
    Località:
    Roma
    Home Page:
    Salve a tutti,

    E' da poco che sto cercando di capire come funzionano le chiamate ajax ma con ben pochi risultati:E spongo subito il mio problema. Dovrei fare un modulo di registrazione che fa la verifica dei dati in contemporanea mentre inserisci username, email e password. Ora io ho questo esempio di inizio preso da internet nelle mie varie ricerche. però da qui non so andare avanti. I file dovrebbero essere tre principalmente:

    1) Modulo html d'iscrizione;

    2) connetti.php (che si riferisce alla chiamata del db)

    3) Modulo chiamata ajax (checkdati.php)

    Iniziamo a postare l'esempio che ho sopratuttto capire se è giusto o meno:


    Questo che posto è il modulo di iscrizione.php

    PHP:

    <html>
    <head>
            <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
     
    </head>
        <script type="text/javascript">
            function validateForm(){
                            //RECUPERO DEI PARAMETRI
                $('#loader').show();
                $('#invia').attr('disabled',true);
               
            var nome=$('#nome').val();
                var cognome=$('#cognome').val();
                var email=$('#email').val();
                var username=$('#username').val();
                            
            //ESECUZIONE DELLA CHIAMATA AJAX
                $.ajax(
                    {
                        type: 'POST',
                        url: 'checkdati.php',
                        data: {nome_p:nome, cognome_p:cognome, email_p:email,username_p:username},
                        success: function(data){
                                            //SE CI SONO ERRORI MOSTRO L'ERRORE ALTRIMENTI UN MESSAGGIO DI CONFERMA
                            if(data.error==1){
                                alert(data.message);
                            }else{
                                alert("Registrazione ok");
                            }
                            $('#loader').hide();
                            $('#invia').attr('disabled',false);
                        },
                        complete: function(data){},
                        failure: function(data){
                            alert("Errore nella chiamata ajax");
                            $('#loader').hide();
                            $('#invia').attr('disabled',false);
                        }
                });
            }
     
        </script>
    </head>
    <body>
        <div align ="center">
        <h2>Esempio form di registrazione</h2>
        </div>
        <form action="" method="post">
            
            <div class="row">
                <p><p>
                <label>Nome: <input name="nome" id="nome" type="text"/> </label>
            </div> </p></p>
            <div class="row">
                <p><p>
                <label>Cognome: <input type="text" name="cognome" id="cognome"/></label>
            </div> </p></p>
            <div class="row">
                <p><p>
                <label>Email: <input type="text" name="email" id="email"/></label>
            </div> </p></p>
            <div class="row">
                <p><p>
                <label>Username: <input type="text" name="username" id="username"/></label>
            </div> </p></p>
            <div class="row">
                <label></label>
                <input type="button" onclick="validateForm(); return false;" value="Invia"  name="invia" id="invia"/>
                <img src="130.png" id="loader" style="display:none" />
            </div>
        </form>
    </head>  
    <body>  
        
           
            <?php
            
    require_once("connetti.php");

            
    ?>
        </body>
    </html>

    Ora il mio problema è il segu7ente nel file chiamato checkdati.php, cosa ci debbo inserire ???? Considerando che poi deve andare tutto in un db. Attualmente il db contiene solo nome & cognome per semplificare l'esempio, ma ovviamente lo posso ampliare aggiungtendo username, password ri-password, email. ri-emeail.

    Spero in iun vostro aiuto e chiarimenti. Mi sono impantanato da secoli su qeusto argomento :(

    P.S.: Se ho sbagliato sessione, cercavo la sessione ajax ma non l'ho trovata. Perdoatemi
     
  2. alessandro1997

    alessandro1997 Utente Attivo

    Registrato:
    6 Ottobre 2009
    Messaggi:
    5.303
    Mi Piace Ricevuti:
    1
    Punteggio:
    0
    Occupazione:
    Studente
    Località:
    Roma
    Home Page:
    Leggendo il codice Javascript che esegue la validazione direi che il file PHP, in caso di errore, deve restituire una risposta JSON simile a questa:
    Codice:
    {
        "error": 1,
        "message": "Messaggio di errore..."
    }
    
    Mentre in caso non ci siano errori:
    Codice:
    {
        "error": 0
    }
    
    Per generare il JSON puoi usare la funzione PHP json_encode.
     
  3. paperinik4

    paperinik4 Utente Attivo

    Registrato:
    29 Maggio 2011
    Messaggi:
    1.812
    Mi Piace Ricevuti:
    0
    Punteggio:
    36
    Occupazione:
    Pensionato
    Località:
    Roma
    Home Page:
    ciao

    Quindi la sintassi é comunque giusta ???
     
  4. paperinik4

    paperinik4 Utente Attivo

    Registrato:
    29 Maggio 2011
    Messaggi:
    1.812
    Mi Piace Ricevuti:
    0
    Punteggio:
    36
    Occupazione:
    Pensionato
    Località:
    Roma
    Home Page:
    Problemi su problemi con ajax non capisco dove sta l'errore

    Salve a tutti,

    Ritorno alla carica. Vorrei capire dove sbaglio nell'effetuare gli esempi trovati su internet per fare una chiamata ajax e avere la sincronizzazione (validazione) dei dati in diretta. Rporto di seguito due esempi: il primo l'ho preso via internet il secondo mi è è stato passato. credo che manchi in entrambi i listati qualcosa. moi potreste dare una mano per favore ??? il primo listato lo so l'ho postato qualche giorno fa ma non ho capito se esatto o meno e vorrei una conefrma. Comunque lo riposto anche per gli altri:

    iscrizione.php

    PHP:

    <html>
    <head>
            <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
     
    </head>
        <script type="text/javascript">
            function validateForm(){
                            //RECUPERO DEI PARAMETRI
                $('#loader').show();
                $('#invia').attr('disabled',true);
               
            var nome=$('#nome').val();
                var cognome=$('#cognome').val();
                var email=$('#email').val();
                var username=$('#username').val();
                            
            //ESECUZIONE DELLA CHIAMATA AJAX
                $.ajax(
                    {
                        type: 'POST',
                        url: 'checkdati.php',
                        data: {nome_p:nome, cognome_p:cognome, email_p:email,username_p:username},
                        success: function(data){
                                            //SE CI SONO ERRORI MOSTRO L'ERRORE ALTRIMENTI UN MESSAGGIO DI CONFERMA
                            if(data.error==1){
                                alert(data.message);
                            }else{
                                alert("Registrazione ok");
                            }
                            $('#loader').hide();
                            $('#invia').attr('disabled',false);
                        },
                        complete: function(data){},
                        failure: function(data){
                            alert("Errore nella chiamata ajax");
                            $('#loader').hide();
                            $('#invia').attr('disabled',false);
                        }
                });
            }
     
        </script>
    </head>
    <body>
        <div align ="center">
        <h2>Esempio form di registrazione</h2>
        </div>
        <form action="" method="post">
            
            <div class="row">
                <p><p>
                <label>Nome: <input name="nome" id="nome" type="text"/> </label>
            </div> </p></p>
            <div class="row">
                <p><p>
                <label>Cognome: <input type="text" name="cognome" id="cognome"/></label>
            </div> </p></p>
            <div class="row">
                <p><p>
                <label>Email: <input type="text" name="email" id="email"/></label>
            </div> </p></p>
            <div class="row">
                <p><p>
                <label>Username: <input type="text" name="username" id="username"/></label>
            </div> </p></p>
            <div class="row">
                <label></label>
                <input type="button" onclick="validateForm(); return false;" value="Invia"  name="iInvia" id="invia"/>
                <img src="130.png" id="loader" style="display:none" />
            </div>
        </form>
    </head>  
    <body>  
        
           
            <?php
            
    require_once("connetti.php");

            
    ?>
        </body>
    </html>


    checkdati.php

    PHP:

    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>CheckDati</title>
        </head>
        <body>

            <?php
                    
    require_once("connetti.php");

    if(isset(
    $_POST['username']) ){

    #se esistono variabili posto con sto nome allora faccio come segue: $query_controllo = "SELECT username FROM utenti WHERE username = '$username'";

    $controllo_esistenza mysql_num_rows(mysql_query($query_controllo));

    #se controllo_esistenza darà come valore un numero maggiore di zero #vorrà dire che sono presenti alcuni record nel database, con lo stesso valore che hai scritto nel campo input

    if($controllo_esistenza 0)
        { 
        echo 
    "Mi dispiace questo utente già esiste"
        
        } else{ echo 
    "Questo username che hai scelto è perfetto!"
        
        }



    ?>
        </body>
    </html>

    Il checkdati.php dovrebbe servire per la verifica dei campi immessi. Spero che qualcuno mi aiuto e mi spieghi più nel dettaglio. Ho visto anche dei libri su ajax e jquery ma sono spiegati malissimo e saltano dei passaggi. Grazie a tutti.
     
  5. alessandro1997

    alessandro1997 Utente Attivo

    Registrato:
    6 Ottobre 2009
    Messaggi:
    5.303
    Mi Piace Ricevuti:
    1
    Punteggio:
    0
    Occupazione:
    Studente
    Località:
    Roma
    Home Page:
    Come ho già detto, non puoi inviare i dati nel formato che ti pare, perché Javascript, nel fare il parsing della risposta restituita dal tuo script, richiede che siano in JSON e con una struttura ben precisa.

    Il codice per il controllo è corretto, ma devi togliere tutto l'HTML e usare la funzione json_encode per restituire una risposta JSON. Inoltre, devi inviare l'header Content-Type (che dev'essere application/json). Guarda qui se non ti è chiaro: http://stackoverflow.com/a/7294846/705588.
     
  6. paperinik4

    paperinik4 Utente Attivo

    Registrato:
    29 Maggio 2011
    Messaggi:
    1.812
    Mi Piace Ricevuti:
    0
    Punteggio:
    36
    Occupazione:
    Pensionato
    Località:
    Roma
    Home Page:
    Problemi su problemi con ajax non capisco dove sta l'errore

    Ciao Alex,

    Grazie dei chiarimenti e se non volessi json c'è il modo più semplice immagino ????
     
  7. alessandro1997

    alessandro1997 Utente Attivo

    Registrato:
    6 Ottobre 2009
    Messaggi:
    5.303
    Mi Piace Ricevuti:
    1
    Punteggio:
    0
    Occupazione:
    Studente
    Località:
    Roma
    Home Page:
    Non so se hai visto il link che ti ho mandato; non vedo cosa ci sia di più semplice di JSON. Al confronto generare tutto quell'HTML è complicatissimo.
     
  8. paperinik4

    paperinik4 Utente Attivo

    Registrato:
    29 Maggio 2011
    Messaggi:
    1.812
    Mi Piace Ricevuti:
    0
    Punteggio:
    36
    Occupazione:
    Pensionato
    Località:
    Roma
    Home Page:
    ciao

    Ciao Alex,

    Gli avevo dato un'occhiatina veloce ma era pronto in tavola. Domani ci do un'occhiata più profonda, spero di non avere difficoltà. Ti farò comunque sapere.
     
Sto caricando...

Condividi questa Pagina