Visualizzazione risultati 1 fino 5 di 5

Discussione: [Ajax/PHP] Richiesta a pagina esterna

  1. #1
    Guest

    Predefinito [Ajax/PHP] Richiesta a pagina esterna

    Ciao a tutti
    oggi mi è venuta voglia di ottimizare la registrazione ad un sito con cui collaboro...
    ho voluto mettere il classico cambio di colore del bordo dei vari input text però adesso vorrei aggiungere anche la verifica che l'user sia disponibile e non gai in uso da un altro utente.
    Ricapitolando:
    -dovrei avere due pagine una che verifica se l'user è disponibile e la pagina di registrazione
    -all' eseguire dell evento onchange attiva una funzione che fa una richiesta a una pagina php che verifica che l'user inserito nel input text sia disponibile e persavo una cosa del genere
    Codice PHP:
    $query="SELECT * from tabella WHERE username = '$user'";//query che seleziona gli username nella tabella _user
    $risultato=mysql_query($query);
    $num_righe=mysql_num_rows($risultato);
    if(
    $num_righe) {
    return
    true;
    } else {
    return
    false;
    }
    -se il valore e true faccio diventare il bordo rosso se il valore e false faccio diventare il bordo verde
    qualcuno mi puo spiegare come posso fare la parte in ajax dello script
    grazie mille in anticipo

  2. #2
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Dovresti fare anche una piccola modifica allo script PHP, che per essere intercettato attraverso AJAX deve produrre un output. Il modo più semplice è far stampare la variabile $num_righe.

    Poi, svilupperai il JavaScript in questo modo (funziona solo con Firefox... su IE devi usare l'oggetto equivalente a XMLHttpRequest):
    Codice:
    var xml = new XMLHttpRequest ();
    xml.onreadystatechange = function () {
       if (xml.readystate == 4) {
          if (xml.status == 200) {
             if (req.responseText == '0') // usa il formato che hai usato in PHP!
             {
                // elabora lo username come NON ESISTENTE
             }
             else
             {
                // elabora lo username come ESISTENTE
             }
          }
          else
          {
             // l'esecuzione dello script non è andata a buon fine...
          }
       }
    };
    xml.open ('GET', 'script.php', true);
    xml.send (null);
    Stammi bene...
    Ultima modifica di dementialsite : 18-05-2009 alle ore 09.05.46
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  3. #3
    Guest

    Predefinito

    Grazie mille dementialsite
    ieri ero proprio curioso di capire come fare ma visto che non arrivavano risposte ho navigando tantissimo su google e alla fine grazie a delle guide ero arrivato a questo:
    javascript.js
    Codice HTML:
    function verifica(tipo) {
    	var ajax = new XMLHttpRequest();
    	ajax.onreadystatechange = function() {
    		if(ajax.readyState == 4 && ajax.status == 200) {
    			if(ajax.responseText == "disponibile") {
    				document.getElementById('img_ver_'+tipo).alt = "Su questo server è disponibile";
    				document.getElementById('img_ver_'+tipo).src = "inc/img/icon_ok.gif";
    			} else {
    				document.getElementById('img_ver_'+tipo).alt = "Su questo server non è disponibile";
    				document.getElementById('img_ver_'+tipo).src = "inc/img/icon_ko.gif";
    			}
    		} else {
    		    document.getElementById('img_ver_'+tipo).src = "inc/img/wait.gif";
    			document.getElementById('img_ver_'+tipo).style.display = "block";
    		}
    	}
    	ajax.open("get","verifica.php?server="+document.getElementById('server').value+"&tipo="+tipo+"&valore="+document.getElementById(tipo).value,true);
    	ajax.send(null);
    }
    verifica.php
    Codice PHP:
    <?php
    include("/membri/enkairas/inc/function.php");
    Db($db);
    $server=htmlentities(mysql_real_escape_string($_GET['server']));
    $tipo=htmlentities(mysql_real_escape_string($_GET['tipo']));
    $value=htmlentities(mysql_real_escape_string($_GET['value']));
    if(
    $tipo == "user") { $elemento_tab="username"; } else { $elemento_tab="email"; }
    $query="SELECT * from ".$server."_user WHERE ".$elemento_tab." = '$value'";
    $risultato=mysql_query($query);
    $num_righe=mysql_num_rows($risultato);
    if(!
    $num_righe) {
    echo
    "disponibile";
    }
    ?>
    e il form
    Codice HTML:
        <div align="center">
          <fieldset style="height:267px; width:260px;">
            <legend>Registrazione</legend>
            <form name="form" method="post">
              <input type="hidden" name="reg">
              <table width="260" border="0">
                <tr>
                  <td width="69">Username:</td>
                  <td width="144" valign="middle"><input id="user" name="user" type="text" onkeyup="conferma(this,4,10);" onchange="conferma(this,4,10);verifica('user');" /></td>
                  <td width="33" valign="middle"><img id="img_ver_user" style="display:none;" /></td>
                </tr>
                <tr>
                  <td>Password:</td>
                  <td><input id="pass" name="pass" type="password" onkeyup="conferma(this,4,10);" onchange="conferma(this,4,10);"></td>
                  <td><img style="display:none;"/></td>
                </tr>
                <tr>
                  <td>Conferma:</td>
                  <td><input id="ver_pass" name="ver_pass" type="password" onkeyup="conferma(this,4,10,true);" onchange="conferma(this,4,10,true);"></td>
                  <td><img style="display:none;"/></td>
                </tr>
                <tr>
                  <td>email:</td>
                  <td><input id="email" name="email" type="text" onkeyup="conferma(this,6,30,false,true);" onchange="conferma(this,6,30,false,true);verifica('email');"></td>
                  <td><img style="display:none;" id="img_ver_email" /></td>
                </tr>
                <tr>
                  <td>Server:</td>
                  <td><select id="server" name="server"><option value="s1" selected="selected">Mondo 1</option></select></td>
                  <td><img style="display:none;"/></td>
                </tr>
                <tr>
                  <td height="26" colspan="3" align="center"><input type="button" value="Invia" onclick="controllo_registrazione()"></td>
                </tr>
              </table>
            </form>
          </fieldset>
        </div>
    solo che c'è un problema in ogni caso sia che l'user sia disponibile o che non sia disponibile l'icona diventa verde e se provo a mettere in un alert ajax.responseText mi esce un allert con la scritta disponibile
    viene da pensare che il php è sbagliato ma non riesco a capire dove
    Mi potete aiutare?
    grazie mille in anticipo

  4. #4
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Prova a scrivere così la condizione: if ($num_righe == 0).

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  5. #5
    Guest

    Predefinito

    grazie ho risolto... se guardi nel js passo la stringa valore ma nel php prendo la stringa value
    piccolo eerrore

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •