Ciao NLSweb,
Allora oggi finalmente mi ci sono messo un po' a capire come funziona ma senza avere un buon risultato purtroppo. Questo quanto consigliato da te. Ho provato il tuo codice ma sembra che non mi funzioni (ovviamente a posto della città ho messo il cognome quindi l'ho adattato alle mie esigenze).
iscrizione.php:
Codice PHP:
<html>
<head>
<meta charset="UTF-8">
<title>Iscrizione</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#controllo").hide();
$("input").change(function(){
controlla();
});
});
function controlla(){
var valore = $("input").val();
loadXMLDoc(valore);
}
function loadXMLDoc(id)
{
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var risposta = xmlhttp.responseText;
risposta = risposta.substr(1, risposta.length-2);
if (risposta=="VERO"){
$("#controllo img").attr("src","available.png");
}else{
$("#controllo img").attr("src","not-available.png");
}
$("#controllo").show();
}
}
xmlhttp.open("GET","checkdati.php?ID="+id,true);
xmlhttp.send();
* AJAX = Asynchronous JavaScript and XML */
function loadXMLDoc(id)
{
/* questa prima parte della funzione apre la comunicazione con il server in background , senza dover riaggiornare la pagina */
var xmlhttp;
if (window.XMLHttpRequest)
{// codice per le nuove versioni di browser che hanno XMLHttpRequest integrato IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// codice per le vecchie versioni di browser IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
/* qui catturiamo l'evento di quando il readyState cambia */
/* 0: richiesta non inizializzata */
/* 1: connessione con il server attivata */
/* 2: il server ha ricevuto la richiesta */
/* 3: il server sta eseguendo la richiesta [query] */
/* 4: il server ha finito e la risposta e' pronta ! */
/* mentre lo STATUS e' lo stato della pagina , cioe' : 200: "OK" 404: Page not found */
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
/* qui si inserisce la risposta dal server (quindi l'informazione che abbiamo chiesto al nostro file php */
/* di prendere dal DataBase , e la si passa al nostro elemento (in questo caso un div) */
/* da notare che abbiamo richiesto una stringa come risposta , questo perche' non stiamo usando un file XML */
/* altrimenti avremmo dovuto usare responseXML */
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
/* qui apri il file dettaglio.php a cui passi la richiesta id e imposti il parametro asincrono=true */
/* l'importanza di avere una comunicazione asincrona e' che JS non deve aspettare la risposta del server */
/* ma puo' continuare ad eseguire il codice ed eventualmente a ritardare la risposta in attesa del server */
/* in questo modo non si creano "colli di bottiglia" , ovvero rallentamenti dovuti a lunghe attese */
/* chiaramente se si imposta asincrono=false (quindi sincrono) JS fermera' l'esecuzione del codice fino a */
/* quando il server non gli avra' fornito la risposta .. */
xmlhttp.open("GET","checkdati.php?ID="+id,true);
xmlhttp.send();
/* da notare che AJAX puo' usare sia ASP che PHP */
}
</script>
<style type="text/css">
#Data{
position:absolute;
top:0px;
left:10px;
left:20px;
}
#Titolo{
position:absolute;
top:0px;
left:395px;
width: 350px;
font-size:100%;
}
hr {
position:absolute;
top: 50px;
width: 1055px;
color: #0000ff;
}
div {
position:absolute;
top: 72px;
}
footer{
bottom:0px;
height:100px;
position:absolute;
text-align:center;
width:1000px;
}
table{
border:1px solid black;
}
</style>
</head>
<body>
<header>
<div id="Titolo"><h2>Prova inserimento campi</h2> </div>
<hr>
</header>
<footer>
<div id="footer">
La pagina è stata creata by Fabio xxx. Tutti i diritti riservati.
Ogni parte o contenuto di essa se ricopiati o riportati in altre pagine
senza previaviso e autorizzazione dell'autore, saranno puniti a norma di legge.
</div>
</footer>
<!-- inizio inserimento campi per processarli con ajax -->
<form action="checkdate.php" method="post" id="contatti">
<div>
<label for="cognome">Cognome: <input type ="text" id="cognome" name="cognome" change="input" maxlenght ="15" ></label>
<p>
</div> </form
<?php
include_once("connettimysqli.php");
include_once("data.php");
?>
</body>
</html>
E questa è la parte relativa al controllo al db. considera che ho un file che raccoglie la connessione mysqli e che ha come variabile $con.
questo si chiama checkdati.php
Codice PHP:
<?php
require_once("connettimysqli");
$ID = $_GET['ID'];
$query = "SELECT * FROM uty WHERE `campo`=\"".$ID."\"";
$result = mysqli_query($con,$query) or die(mysql_error());
while($row = mysqli_fetch_array($result)) {
$risultato = $row['campo'];
}
if($risultato===$ID){
echo "VERO";
}else{
echo "FALSO";
}
mysqli_close($con);
?>
Spero insieme a te di capire dove sta l'errore. Grazie.