Ciao NLSweb,
Allora ho fatto le modifiche dovute ma non è cambiato molto. Probabilmente c'è un qualcosa che non va slla struttura dei tasti quando si digita. Questo è quello che ho fatto:
checkdati.php
Codice PHP:
<?php
require_once("connettimysqli");
$ID = $_GET['ID'];
$query = "SELECT * FROM uty WHERE `cognome`=\"".$ID."\"";
$result = mysqli_query($con,$query) or die(mysql_error());
while($row = mysqli_fetch_array($result)) {
$risultato = $row['cognome'];
}
if($risultato===$ID){
echo "VERO";
}else{
echo "FALSO";
}
mysqli_close($con);
?>
iscrizione.php
Un altro dubbio. Ho unito bene i due script in uno ???? Quello della connessione aijax e quello della verifica ??? Grazie.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").keyup(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 -->
<div>
<label for="cognome">Cognome: <input type ="text" id="cognome" name="cognome" maxlenght ="15" ></label>
<div id="controllo"><img src="" /></div>
<p>
</div>
<?php
include_once("connettimysqli.php");
include_once("data.php");
?>
</body>
</html>
Il file PHP checkdati sembra OK
mentre il resto del codice si sono ancora dei problemi..
hai sistemato correttamente il div controllo e il tag input ed hai rimosso il form che non serviva
ma hai modificato l'evento della funzione di controllo
$("input").keyup(function(){
controlla();
});
ed hai ripetuto due volte la funzione AJAX ??!!
................
come prima cosa leva la doppia funzione AJAX lansciando solo la prima delle due
poi ripristina l'evento della funzione di controllo
$("input").change(function(){
controlla();
});
Ciao NLSweb,
Sono tornato sui miei passi e ho corretto quello che c'era da correggere questo dovrebbe essere esatto ora:
Per favore dimmi se è tutto corretto.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:0;
height:100px;
position:absolute;
width:100%;
text-align:center;
overflow: auto; /*important*/
}
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 xxxxxxxxxx. 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 -->
<div>
<label for="cognome">Cognome: <input type ="text" id="cognome" name="cognome" maxlenght ="15" ></label>
<input id="Input" type="text" />
<div id="controllo"><img src="" /></div>
<p>
</div>
<?php
include_once("connettimysqli.php");
include_once("data.php");
?>
</body>
</html>
Ultima modifica di magnare : 01-09-2014 alle ore 16.38.39
Ciao NLSweb,
Ho eseguito tutto come mi hai detto te ma non mi funziona niente. Non so il perkè. Sono un po' avvilito perchè non sono riuscito nemmeno con te a raggiungere l'intento :( Bah.
il codice da te riportato ha ancora DUE funzioni AJAX !! .. e ci sono anche altri piccoli errori ...
copio ed incollo il codice da te postato e lo correggo .... prova così ..
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>
$(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();
}
</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:0;
height:100px;
position:absolute;
width:100%;
text-align:center;
overflow: auto; /*important*/
}
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 xxxxxxxxxx. 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>
<div>
<label for="cognome">Cognome: <input type ="text" id="cognome" name="cognome" maxlenght ="15" ></label>
<div id="controllo"><img src="" />
</div>
<?php
include_once("connettimysqli.php");
include_once("data.php");
?>
</body>
</html>
Ciao NLSweb,
Allora ci siamo quasi. Ho provato a digitare un cognome che già avevo nel db e mi è comparsa subito la "X" come volevo, solo anzicchè a fianco del campo sotto. Ma quello penso basta sistemarlo. Poi la data non so il perchè si è spostata da sopra è passata sotto subito dopo il campo "cognome". Però se io metto un altro cognome mi compare sempre la "X". Un passo avanti l'abbiamo fatto grazie per merito tuo.
Un po' alla volta ....
dimmi se hai bisogno ancora di aiuto..
Ciao NLSweb,
uhmmmm mi sa di si anche perchè vorrei ampliare a tre campi per poi provare a continuare da solo. E poi bisognerebbe capire il perchè ad ogni cognome che metto mi da un esito negativo, il db ha solo due voci. Credo che vda perfezionato.
Ultima modifica di magnare : 03-09-2014 alle ore 13.36.33
Per ampliare a tre campi , dove adesso hai
ModificaCodice:<div> <label for="cognome">Cognome: <input type ="text" id="cognome" name="cognome" maxlenght ="15" ></label> <div id="controllo"><img src="" /></div> </div>
e nello SCRIPT invece di avere solo $("#controllo").hide();Codice:<div> Cognome: <input type ="text" id="Input1" name="cognome" maxlenght ="15" > <div id="controllo1"><img src="" /></div> Nome: <input type ="text" id="Input2" name="nome" maxlenght ="15" > <div id="controllo2"><img src="" /></div> Indirizzo: <input type ="text" id="Input3" name="indirizzo" maxlenght ="15" > <div id="controllo3"><img src="" /></div> </div>
e invece di avere soloCodice:for(i=1;i<4){ var elemento = "#controllo"+i; $(elemento).hide(); }
dovrai ampliare a tutti i campi inputCodice:$("input").change(function(){ controlla(); });
Quindi la funzione controlla avra' in piu' l'argomento funzione ID che identifica il campo inputCodice:for(i=1;i<4){ var elemento = "#Input"+i; $(elemento).change(function(){ controlla(i); }); }
che a sua volta passera' al codice AJAX insieme al valore del campo stesso
La funzione AJAX avra' adesso due argomenti ID e ValoreCodice:function controlla(ID){ var elemento = "#Input"+ID; var valore = $(elemento).val(); loadXMLDoc(valore,ID); }
in questo caso ho usato uno switch che chiama il file PHP dedicato in base al ID del campo input , passandogli il valore del campoCodice:function loadXMLDoc(valore,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); var elemento = "#controllo"+id+" img": if (risposta=="VERO"){ $(elemento).attr("src","available.png"); }else{ $(elemento).attr("src","not-available.png"); } $("#controllo").show(); } } switch(id){ case 1: xmlhttp.open("GET","checkCOGNOME.php?ID="+valore,true); break; case 2: xmlhttp.open("GET","checkNOME.php?ID="+valore,true); break; case 3: xmlhttp.open("GET","checkINDIRIZZO.php?ID="+valore,true); break; } xmlhttp.send(); }
oppure se preferisci crei un unico file PHP a cui passi il valore e id e al suo interno diversifichi la ricerca nel DB
Ciao NLSweb,
Ora prvo l'esempio che i hai postato e spero di non avere problemi. Ma perchè nel primo campo lui qualsiasi cosa ci metto mi mette sempre una "x" come se esistesse nel db e invece non esiste ??? E le file checkdati come lod ebbo modificare ??? Grazie.
Posta il file PHP cosi' posso vedere dove e' l'errore....
Ciao Ciao NLSweb,
Questi sono i file php che mi hai chiesto. iscrizione e checkdati
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>
<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:15px;
height:100px;
position:absolute;
text-align:center;
width:1000px;
}
table{
border:1px solid black;
}
</style>
<script>
$(document).ready(function(){
for(i=1;i<4){
var elemento = "#controllo"+i;
$(elemento).hide();
}
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();
}
</script>
</head>
<body>
<header>
<div id="Titolo"><h2>Prova inserimento campi</h2></div>
<hr>
</header>
<footer>
<div id="footer">
La pagina è stata creata by Fabio xxxxxxxxxx. 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>
<div id = "div">
Cognome: <input type ="text" id="Input1" name="cognome" maxlenght ="15" >
<div id="controllo1"><img src="" /></div>
<p> <p>
Nome: <input type ="text" id="Input2" name="nome" maxlenght ="15" >
<div id="controllo2"><img src="" /></div> </p></p>
<p> <p>
Indirizzo: <input type ="text" id="Input3" name="indirizzo" maxlenght ="15" >
<div id="controllo3"><img src="" /></div> </p></p>
</div>
<?php
include_once("connettimysqli.php");
include_once("data.php");
?>
</body>
</html>
checkdati.php
Codice PHP:
<?php
require_once("connettimysqli.php");
$ID = $_GET['ID'];
$query = "SELECT * FROM uty WHERE `cognome`=\"".$ID."\"";
$result = mysqli_query($con,$query) or die(mysql_error());
while($row = mysqli_fetch_array($result)) {
$risultato = $row['cognome'];
}
if($risultato===$ID){
echo "VERO";
}else{
echo "FALSO";
}
mysqli_clo
il file iscrizione.php
devi aggiornare la funzione controllo e la funzione ajax come ti ho suggerito nel post precedente
per quanto riguarda il file checkdati.php va bene per solo il campo cognome , quindi ho crei tanti file quanti sono le ricerche che devi fare o inserisci uno switch ma gli devi passare come argomento ID del campo input e non solo il valore
mi devi dire se ti va bene creare piu' file php e mettere lo switch in ajax o preferisci il contrario , quindi un solo file php con lo switch
Ciao NLSweb,
Scusami ma sono stato un giorno a letto perchè sono stato poco bene. Comunque preferisco uno swit unico in un un unico file e non suddivisi in diecimila file. E' più un problema logistico il mio che altro :P Grazie
Ciao NLSweb,
Oggi ho finito finalmente di fare le modifiche che mi avevi detto di fare. Ti posto quello che ho fatto perchè non vorrei che ci fossero intoppi. Come già ti ho scritto preferisco avere un file unico che gestisca tutto quanto senza spezzettarli per i vari campi. Anche perchè una volta possono essere 4 una vota 5 oppure un'altra volta 10 insomma variano. L'importante è che si capisca dove bisogna mettere mano. nel senso commentarli mettendoci qua inizia il campo "cognome" poi qua iniza campo "nome" ecc.ecc. Ti posto i due file.
checkdati.php
e questo è quello con le modifichet terminate adesso:Codice PHP:
<?php
require_once("connettimysqli.php");
$ID = $_GET['ID'];
$query = "SELECT * FROM uty WHERE `cognome`=\"".$ID."\"";
$result = mysqli_query($con,$query) or die(mysql_error());
while($row = mysqli_fetch_array($result)) {
$risultato = $row['cognome'];
}
if($risultato===$ID){
echo "VERO";
}else{
echo "FALSO";
}
mysqli_close($con);
?>
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>
<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:15px;
height:100px;
position:absolute;
text-align:center;
width:1000px;
}
table{
border:1px solid black;
}
</style>
<script>
$(document).ready(function(){
for(i=1;i<4){
var elemento = "#controllo"+i;
$(elemento).hide();
}
for(i=1;i<4){
var elemento = "#Input"+i;
$(elemento).change(function(){
controlla(i);
}
function loadXMLDoc(valore,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);
var elemento = "#controllo"+id+" img":
if (risposta=="VERO"){
$(elemento).attr("src","available.png");
}else{
$(elemento).attr("src","not-available.png");
}
$("#controllo").show();
}
}
xmlhttp.open("GET","checkdati.php?ID="+id,true);
xmlhttp.send();
}
</script>
</head>
<body>
<header>
<div id="Titolo"><h2>Prova inserimento campi</h2></div>
<hr>
</header>
<footer>
<div id="footer">
La pagina è stata creata by Fabio xxxxxxxxxx. 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>
<div id = "div">
Cognome: <input type ="text" id="Input1" name="cognome" maxlenght ="15" >
<div id="controllo1"><img src="" /></div>
<p> <p>
Nome: <input type ="text" id="Input2" name="nome" maxlenght ="15" >
<div id="controllo2"><img src="" /></div> </p></p>
<p> <p>
Indirizzo: <input type ="text" id="Input3" name="indirizzo" maxlenght ="15" >
<div id="controllo3"><img src="" /></div> </p></p>
</div>
<?php
include_once("connettimysqli.php");
include_once("data.php");
?>
</body>
</html>
Grazi eternamente dell'aiuto. La visualizzazione della data stranamente è tornata al suo posto bah :(
Ho deciso di creare un piccolo esempio funzionante con due campi ed un unico file php
come potrai vedere quando si finisce di scrivere nel campo input e si esce viene eseguita la verifica
che puo' impiegare qualche secondo , quindi mostra l'immagini OK o ERROR
DEMO
Il file HTML e' composto dagli script da me suggeriti all'inizio , ho solo fatto qualche modifica per un corretto funzionamento
ho richiamato un unico file PHP quindi ho escluso lo switch nello script.
il file PHP prende ID ed il VALORE del campo INPUTCodice HTML:<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script> $(document).ready(function(){ /* definiamo quanti campi input sono presenti */ var numeroCampiInput = 2; /* nascondiamo le immagini di controllo */ for(i=1;i<=numeroCampiInput;i++){ var elemento = "#controllo"+i; $(elemento).hide(); } /* assegnamo la funzione controllo al cambiamento dei campi input */ function ccc(i){ return function(){ controlla(i); }; } for(i=1;i<=numeroCampiInput;i++){ var elemento = "#Input"+i; $(elemento).change(ccc(i)); } }); /* funzione di controllo: argomento di funzione ID del campo input */ /* identifichiamo l'elemento del campo input e leggiamo il suo valore */ /* quindi chiamiamo la funzione AJAX passandogli ID e Valore del campo */ function controlla(id){ var elemento = "#Input"+id; var valore = $(elemento).val(); loadXMLDoc(id,valore); } /* funzione AJAX: argomenti di funzione ID e Valore del campo Input */ function loadXMLDoc(id,valore) { var xmlhttp; if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); } else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { /* qui prendiamo la risposta del file PHP */ /* controlliamo se sia Vero o Falso la presenza del dato del DB */ /* quindi visualizziamo l'immagine relativa */ var risposta = xmlhttp.responseText; risposta = risposta.substr(1, risposta.length-2); var elementoIMG = "#controllo"+id+" img"; if (risposta=="VERO"){ $(elementoIMG).attr("src","3.png"); }else{ $(elementoIMG).attr("src","6.png"); } var elemento = "#controllo"+id; $(elemento).show(); } } /* eseguiamo il file PHP per verificare se il dato e' presente nel DB */ /* passiamo al file PHP id e il valore del campo Input */ xmlhttp.open("GET","controllaDB.php?ID="+id+"&VAL="+valore,true); xmlhttp.send(); } </script> </head> <body> ESEMPIO DI VERIFICA DELLA PRESENZA DEL CAMPO NEL DB Inserisci i dati (dati corretti: Categoria=Narrativa ; Titolo=Baudolino ) <div id="area"> CATEGORIA:<input type ="text" id="Input1" name="categoria"/><div id="controllo1"><img src="" /></div> TITOLO:<input type ="text" id="Input2" name="titolo"/><div id="controllo2"><img src="" /></div> </div> </body> </html>
ed eseguo lo switch per ID (quindi per ogni campo input esegue una ricerca diversa e mostra il relativo risultato)
Codice PHP:
<?php
$con=mysqli_connect(................................);
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$ID = $_GET['ID'];
$VALORE = $_GET['VAL'];
switch($ID){
case 1:
$query = "SELECT * FROM `libreria` WHERE `categoria`=\"".$VALORE."\"";
break;
case 2:
$query = "SELECT * FROM `libreria` WHERE `titolo`=\"".$VALORE."\"";
break;
}
$result = mysqli_query($con,$query) or die(mysql_error());
while($row = mysqli_fetch_array($result)) {
switch($ID){
case 1:
$risultato = $row['categoria'];
break;
case 2:
$risultato = $row['titolo'];
break;
}
}
if($risultato===$VALORE){
echo "VERO";
}else{
echo "FALSO";
}
mysqli_close($con);
?>
In questo esempio accedo ad un DB Libreria con campi CATEGORIA e TITOLO
nel tuo caso ci saranno NOME , COGNOME , INDIRIZZO , ecc.
e dovrai ampliare lo switch per tutti i differenti campi
Ciao NLSweb,
Sei un grande. L'ho sempre detto da quando ti ho conosciuto e ti sei dato da fare ad aiutarmi. Proverò il tuo esempio modificando ovviamente i campi. Per ora ho visto la demo e sembra funzionare alla grande. Era quello che volevo e che nessuno tranne te è riuscot ad aiutarmi ad oggi. Tra domani e dopodomani ti darò esito della prova. Grazie ancora davvero. Spero di capire dov'è lo switchma mi sembra che sia anche ben commentato. Grazie.
Ciao NLSweb,
Allora ho provato a modificare il tuo esempio che mi hai postato. Solo che non mi va. Non funziona. Devo aver sbagliato qualcosa sicuramente. Ora ti posto quello che ho modificato.
checkdatì.php
iscrizione.phpCodice PHP:
<?php
require_once("connettimysqli.php");
$ID = $_GET['ID'];
$VALORE = $_GET['VAL'];
switch($ID){
case 1:
$query = "SELECT * FROM uty WHERE `cognome`=\"".$VALORE."\"";
break;
case 2:
$query = "SELECT * FROM uty WHERE nome=\"".$VALORE."\"";
break;
}
$result = mysqli_query($con,$query) or die(mysql_error());
while($row = mysqli_fetch_array($result)) {
switch($ID){
case 1:
$risultato = $row['cognome'];
break;
case 2:
$risultato = $row['nome'];
break;
}
}
if($risultato===$VALORE){
echo "VERO";
}else{
echo "FALSO";
}
mysqli_close($con);
?>
nel tuo esempio ci sono delle cose che non mi sono chiare e sono le seguenti: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>
<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:15px;
height:100px;
position:absolute;
text-align:center;
width:1000px;
}
table{
border:1px solid black;
}
</style>
<script type="text/javascript">
$(document).ready(function(){
/* definiamo quanti campi input sono presenti */
var numeroCampiInput = 3;
/* nascondiamo le immagini di controllo */
for(i=1;i<=numeroCampiInput;i++){
var elemento = "#controllo"+i;
$(elemento).hide();
}
/* assegnamo la funzione controllo al cambiamento dei campi input */
function ccc(i){
return function(){
controlla(i);
};
}
for(i=1;i<=numeroCampiInput;i++){
var elemento = "#Input"+i;
$(elemento).change(ccc(i));
}
});
/* funzione di controllo: argomento di funzione ID del campo input */
/* identifichiamo l'elemento del campo input e leggiamo il suo valore */
/* quindi chiamiamo la funzione AJAX passandogli ID e Valore del campo */
function controlla(id){
var elemento = "#Input"+id;
var valore = $(elemento).val();
loadXMLDoc(id,valore);
}
/* funzione AJAX: argomenti di funzione ID e Valore del campo Input */
function loadXMLDoc(id,valore)
{
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
/* qui prendiamo la risposta del file PHP */
/* controlliamo se sia Vero o Falso la presenza del dato del DB */
/* quindi visualizziamo l'immagine relativa */
var risposta = xmlhttp.responseText;
risposta = risposta.substr(1, risposta.length-2);
var elementoIMG = "#controllo"+id+" img";
if (risposta=="VERO"){
$(elementoIMG).attr("src","available.png");
}else{
$(elementoIMG).attr("src","not-available.png");
}
var elemento = "#controllo"+id;
$(elemento).show();
}
}
/* eseguiamo il file PHP per verificare se il dato e' presente nel DB */
/* passiamo al file PHP id e il valore del campo Input */
xmlhttp.open("GET",checkdati.php?ID="+id+"&VAL="+valore,true);
xmlhttp.send();
}
</script>
</head>
<body>
<header>
<div id="Titolo"><h2>Prova inserimento campi</h2></div>
<hr>
</header>
<footer>
<div id="footer">
La pagina è stata creata by Fabio xxxxxxxxxx. 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>
<div id = "div">
Cognome: <input type ="text" id="input" name="cognome" maxlenght ="15" >
<div id="controllo"><img src="" /></div>
<p> <p>
Nome: <input type ="text" id="input2" name="nome" maxlenght ="15" >
<div id="controllo2"><img src="" /></div> </p></p>
<p> <p>
Indirizzo: <input type ="text" id="input3" name="indirizzo" maxlenght ="15" >
<div id="controllo3"><img src="" /></div> </p></p>
</div>
<?php
include_once("connettimysqli.php");
include_once("data.php");
?>
</body>
</html>
Codice:<div id="area"> dove l'hai definita ?????
la seconda cosa che non mi è chiara è questa, anche se sono quasi certo che sia questo il nome del db:
Grazie per l'aiuto datomi fino ad ora se ho capito bene come funziona il tuo esempio sono a cavallo.Codice:xmlhttp.open("GET","controllaDB.php?ID="+id+"&VAL="+valore,true); è questo il nome del che verifica i dati inseriti e e si connette poi al db ossiaio chiamo checkdati.php ????
Allora...
nel file checkdati , c'e' un errore
correggi cosi' :Codice PHP:
$query = "SELECT * FROM uty WHERE nome=\"".$VALORE."\"";
inoltre non hai inserito la ricerca per il controllo dell'indirizzo (non so se e' voluto oppure no)Codice PHP:
$query = "SELECT * FROM uty WHERE `nome`=\"".$VALORE."\"";
Nel file iscrizione i campi input e controllo NON sono corretti !
gli ID dei compi dovrebbero essere Input1 , Input2 , Input3Codice HTML:Cognome: <input type ="text" id="input" name="cognome" maxlenght ="15" > <div id="controllo"><img src="" /></div> Nome: <input type ="text" id="input2" name="nome" maxlenght ="15" > <div id="controllo2"><img src="" /></div> Indirizzo: <input type ="text" id="input3" name="indirizzo" maxlenght ="15" > <div id="controllo3"><img src="" /></div>
e ID del controllo dovrebbero essere controllo1,controlo2,controllo3
Codice HTML:Cognome: <input type ="text" id="Input1" name="cognome" maxlenght ="15" > <div id="controllo1"><img src="" /></div> Nome: <input type ="text" id="Input2" name="nome" maxlenght ="15" > <div id="controllo2"><img src="" /></div> Indirizzo: <input type ="text" id="Input3" name="indirizzo" maxlenght ="15" > <div id="controllo3"><img src="" /></div>
Mi chiedi del <div id="area">
non l'ho definita perche' in realta' non e' essenziale al funzionamento del codice , l'ho prevista solo perche' pensavo che volessi assegnare uno stile all'area che contiene i campi input
questo xmlhttp.open("GET","controllaDB.php?ID="+id+"&VAL= "+valore,true);
e' la mia chiamata al file PHP che legge il DB per te sara'
xmlhttp.open("GET",checkdati.php?ID="+id+"&VAL="+v alore,true);
Ciao NLSweb,
Grazie delle correzioni e ti rispondo suibito pe ril terzo campo non era una dimenticanza ma era voluto. Ora se io dovessi iniziare di nuovo da capo gli id li posso mettere in input con la "i" così anzicchè maiuscola e partendo input, input1, input2 ecc. ecc ??? Stessa cosa per il controllo ??? Dove debbo modificare eventualmente ??? E' solo un mio ordine mentale niente di più :P.
CiaoNLSweb,
Mi spiace doverti ri-rompere. Ma ho qualche difficoltà. Ho adattato il tuo esempio con i miei campi a tre ma qualsiasi cosa ci metta nei primi due mi segnala sempre la "X" sia che c'è nel db sia che non c'è. Quindi presumo che sia una falla da qualche parte. Poi aggiungendo un terzo campo mi compare un'immagine non definita sotto all'ultimo campo. Qui di seguito ti rimando per l'ennesima volta i codici. Un altra cosa poi ho risolto per avere le "i" minuscole anzicchè maiuscole ho capito dove bisognava modificare (ma questa è na scemenza). Allora facendo diverse prove, ho sgamato che mettendo lo style dava dei problemi con le "x" invece togliendolo funzionava come il tuo esempio. M a sempre e solo con la ricerca negativa di quello che chiedevo. Ora come posso mettere lo stil eil footer e l'header che non danno impiccio con lo script ??? Va prima o dopo o dentro lo script ????
Ti mando le immagini così vedi se riesci a capire il motivo per cui mi fa questo scherzo:
http://s28.postimg.org/5dzb2bdl9/Sen...o_nella_ri.png
E questo è con lo style:
http://s21.postimg.org/h0w02t4zb/Sen...ativo_nell.png
Spero che tu riesca a risolvere anche questo grazie.
Per rinominare i campi input e quelli di controllo con le immagini , devi solo stare attento ad una cosa:
Se ti ricordi abbiamo usato dei cicli di for per nascondere le immagini, assegnare la funzione controlla ai campi input , ecc.
l'abbiamo potuto fare perche' abbiamo assegnato un nome univico ai campi ("Input" , "controllo") e poi ci assegnavamo un numero in serie per distinguerli ("Input1 , Input2, ..." ; "controllo1 , controllo2 , ...").
questo metodo serve per non dover scrivere per ogni campo una funzione distinta !
per quanto riguarda il risultato sbagliato , bisogna controllare bene il dato tratto dal file checkdati
prova a fare una prova , apri il file checkdati ed all'URL scrivi manualmente la ricerca da svolgere
esempio checkdati.php?ID=1&VAL=mario
e vedi il risultato (VERO o FALSO)
poi fammi sapere..
se controlli msolo due campi , al campo indirizzo non c'e' bisogno di mettere un id e il div controllo con l'immagine
inoltre nello script devi inserire che il numero di campi input e' pari a 2 non 3.
gli stili non dovrebbero dare alcun problema agli script !
se puoi mandami il link della pagina al fine di eseguire un debug.. con le foto che hai postato non riesco a capire dove sia l'errore
Ciao NLSweb,
Purtroppo il link dove arrivare alla mia pagina è sul nas (synology) e non ci si arriva dall'esterno. Ora faccio queste prove che mi hai detto e poi ti riferisco. Quindi le immagini che ti ho inviato non sono per niente chiare ??? Da quanto ho capito. Comunque domani metto su altervista e poi ti posso dare il link Ho fatto girare il checkdati.php e mi da il seguente errore:
Warning: mysqli_query(): Empty query in /volume1/web/utenti/validiamo/checkdati.php on line 22
Allora ricapitolando prima mi ha dato l'errore sopra. poi ho fatto che mi hai detto te ossia ho messo:
checkdati.php?ID=1&VAL=mario
e mi ha restituito il seguente errore:
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in /volume1/web/utenti/validiamo/checkdati.php on line 24 FALSO
Cosa vuol dire ciò ???
Ultima modifica di magnare : 06-09-2014 alle ore 21.59.17
il primo errore dice che la query e' vuota !
il secondo errore dice che aspettava un parametro per il ciclo di while che non ha avuto alcun dato !
puoi postare il codice php , cosi' verifico dove possano essere gli errori..
ed un altra cosa , mi descrivi il DB che usi: nome della tabella , nomi dei campi e il loro formato e il valore di una row in modo da provare un dato certo.
inoltre ho inserito alcuni stili nel mio demo in modo che puoi confrontare con i tuoi...
questo e' il codice che mi avevi postato prima..
deduco la hai una tabella di nome uty
con due campi di nome: Cognome e Nome (propabilmente di formato TEXT)...
quindi quando esegui: checkdati.php?ID=1&VAL=mario
praticamneto stai dicendo che ID=1 quindi deve cercare un cognome che ha come valore VAL=mario ...
il $row = mysqli_fetch_array($result) dovrebbe ritornare il risultato della ricerca , ma ti restituisce NULL
quindi il $risultato e' diverso dal $VALORE e' ti restituisce FALSO..
Codice PHP:
<?php
require_once("connettimysqli.php");
$ID = $_GET['ID'];
$VALORE = $_GET['VAL'];
switch($ID){
case 1:
$query = "SELECT * FROM uty WHERE `cognome`=\"".$VALORE."\"";
break;
case 2:
$query = "SELECT * FROM uty WHERE `nome`=\"".$VALORE."\"";
break;
}
$result = mysqli_query($con,$query) or die(mysql_error());
while($row = mysqli_fetch_array($result)) {
switch($ID){
case 1:
$risultato = $row['cognome'];
break;
case 2:
$risultato = $row['nome'];
break;
}
}
if($risultato===$VALORE){
echo "VERO";
}else{
echo "FALSO";
}
mysqli_close($con);
?>
Ultima modifica di NLSweb : 06-09-2014 alle ore 22.36.35
Ciao NLSweb,
Innanzi tutto volevo ammire il tuo interesse verso il mio problema. ti stai dando molto da fare per farmi capire come effettivamente funzionano le cose e questo ti ringrazio vivamente. Aprezzo il tuo aiuto più che mai. Vorrei poterrti dare 5 stelle di merito. Ora ti posto tutto quello che mi hai chiesto. Ti posto anche il file connettimysql.php ovviamente dove ci sono le "xxxxxxx" è il mio indirizzo del nas.
connettimysql.php
Codice PHP:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</html>
</head>
<?php
$ip = $_SERVER['SERVER_ADDR'];
if(substr($ip,-7,3) == 'xxx'){
$host = 'xxx.xxx.xxx.xxx';
$user = 'fabio';
$password = 'xxxx';
$db = 'MegaLaboratorio';
/*$con= new mysqli($host, $user, $password, $db); */
$con=mysqli_connect($host, $user, $password, $db);
if (!$con) {
die ('Non riesco a connettermi: ' . mysqli_connect_errno());
}
$mysqli_db_selected = mysqli_select_db($con, $db);
if (!$mysqli_db_selected) {
die ("Errore nella selezione del database: " . mysqli_connect_errno());
}
else
{
echo'<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
//echo "<h1>Ti sei connesso al database"." ". $db. " "."da Roma.... Complimenti"." "."Il tuo indirizzo ip del server è:"." ". $ip;
echo"</h1>";
}
}
else if(substr($ip,-7,3) == 'xxx'){
//Attualmente adiopero il secondo quello del mare
$host = 'xxx.xxx.xxx.xxx';
$user = 'fabio';
$password = 'xxxxxx';
$db = 'MegaLaboratorio';
$con= new mysqli($host, $user, $password, $db);
if (!$con) {
die ('Non riesco a connettermi: ' . mysqli_connect_errno());
}
$mysqli_db_selected = mysqli_select_db($con, $db);
if (!$mysqli_db_selected) {
die ("Errore nella selezione del database: " . mysqli_connect_errno());
}
else
{
echo'<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
//echo "<h1>Ti sei connesso al database"." ". $db. " "."da Anzio.... Complimenti"." "."Il tuo indirizzo ip del server è:"." ". $ip;
echo"</h1>";
}
}
?>
La tabella uty è composta così:
Codice PHP:
id int(10) AUTO_INCREMENT
nome varchar(30) utf8_general_ci
cognome varchar(30) utf8_general_ci
username varchar(30) utf8_general_ci
email varchar(40) utf8_general_ci
password varchar(255) utf8_general_ci
attivo enum('1', '0') utf8_general_ci
Nella tabella vi sono inseriti i seguenti dati:
Qua metto anche un'immagine dei file inseriti:Codice:COGNOME NOME USERNAME EMAIL PASSWORD ATTIVO pippo pippa superpippo superpippo@gmail.com 0 eeee eeee eeee eeee 0
http://s29.postimg.org/a02cv4h5j/File_nel_db.png
Qui di seguito ti posto iscrizione.php
Questo è il checkdati.phpCodice 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>
<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:15px;
height:100px;
position:absolute;
text-align:center;
width:1000px;
}
table{
border:1px solid black;
}
</style>
<script>
$(document).ready(function(){
for(i=1;i<4){
var elemento = "#controllo"+i;
$(elemento).hide();
}
for(i=1;i<4){
var elemento = "#Input"+i;
$(elemento).change(function(){
controlla(i);
}
function loadXMLDoc(valore,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);
var elemento = "#controllo"+id+" img":
if (risposta=="VERO"){
$(elemento).attr("src","available.png");
}else{
$(elemento).attr("src","not-available.png");
}
$("#controllo").show();
}
}
xmlhttp.open("GET","checkdati.php?ID="+id,true);
xmlhttp.send();
}
</script>
</head>
<body>
<header>
<div id="Titolo"><h2>Prova inserimento campi</h2></div>
<hr>
</header>
<footer>
<div id="footer">
La pagina è stata creata by Fabio xxxxxxxxxx. 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>
<div id = "div">
Cognome: <input type ="text" id="Input" name="cognome" maxlenght ="15" >
<div id="controllo"><img src="" /></div>
<p> <p>
Nome: <input type ="text" id="Input2" name="nome" maxlenght ="15" >
<div id="controllo2"><img src="" /></div> </p></p>
<p> <p>
Indirizzo: <input type ="text" id="Input3" name="indirizzo" maxlenght ="15" >
<div id="controllo3"><img src="" /></div> </p></p>
</div>
<?php
include_once("connettimysqli.php");
include_once("data.php");
?>
</body>
</html>
Codice PHP:
<?php
require_once("connettimysqli.php");
$ID = $_GET['ID'];
$VALORE = $_GET['VAL'];
switch($ID){
case 1:
$query = "SELECT * FROM `uty` WHERE `cognome`=\"".$VALORE."\"";
break;
case 2:
$query = "SELECT * FROM `uty` WHERE `nome`=\"".$VALORE."\"";
break;
}
$result = mysqli_query($con,$query) or die(mysql_error());
while($row = mysqli_fetch_array($result)) {
switch($ID){
case 1:
$risultato = $row['cognome'];
break;
case 2:
$risultato = $row['nome'];
break;
}
}
if($risultato===$VALORE){
echo "VERO";
}else{
echo "FALSO";
}
mysqli_close($con);
?>
Spero di averti dato tutte le info che mi hai chiesto. nel pome confronto subito il tuo css con il mio per capire dov'è l'intoppo. Grazie.
Ultima modifica di magnare : 07-09-2014 alle ore 13.40.11
OK. Allora...
nel file iscrizione , sono presenti ancora degli errori.. (non capisco come mai non hai aggiornato il codice come ti avevo suggerito..)
.. questi due cicli di for sono sbagliati !
nel post#47 ti indicavo come farli !Codice:for(i=1;i<4){ var elemento = "#controllo"+i; $(elemento).hide(); } for(i=1;i<4){ var elemento = "#Input"+i; $(elemento).change(function(){ controlla(i); }
la chiamata del del checkdati e' sbaglita ! manca il valore del campo !Codice:/* definiamo quanti campi input sono presenti */ var numeroCampiInput = 2; /* nascondiamo le immagini di controllo */ for(i=1;i<=numeroCampiInput;i++){ var elemento = "#controllo"+i; $(elemento).hide(); } /* assegnamo la funzione controllo al cambiamento dei campi input */ function ccc(i){ return function(){ controlla(i); }; } for(i=1;i<=numeroCampiInput;i++){ var elemento = "#Input"+i; $(elemento).change(ccc(i)); }
sempre post#47Codice:xmlhttp.open("GET","checkdati.php?ID="+id,true);
ed anche la struttura HTML e' sbagliata !Codice:#xmlhttp.open("GET","checkdati.php?ID="+id+"&VAL="+valore,true);
ti avevo gia' indicato come risolverla nel post#53
mi domando se questo e' il codice che stai usando o mi hai postato un codice vecchio , perche' questi errori li avevamo gia' tutti corretti !
per verificare il file checkdate.php
prova ad eseguirlo in questo modo:
checkdati.php?ID=2&VAL=pippa
dovrebbe darti come echo VERO
Ciao NLSweb,
Perdonami, ma nel tentativo di correggere da solo devo aver reimpostato quello vecchio e non me ne sono accorto ora ricorreggo tutto e poi ti mando il risultato finale. La prossima volta ci starò più attento e se devo fare delle modifiche le farò in un file secondario così lascio intatto quello originale.
Ciao NLSweb,
Allora credo di aver rimesso tutto a posto come stava prima. Qua di seguito ti riposto le modifiche effettuate. Spero di non essermi mangiato qualcosa.
checkdati.php:
Se faccio girare semplicemente il file checkdati mi da il seguente errore:Codice PHP:
<?php
require_once("connettimysqli.php");
$ID = $_GET['ID'];
$VALORE = $_GET['VAL'];
switch($ID){
case 1:
$query = "SELECT * FROM `uty` WHERE `cognome`=\"".$VALORE."\"";
break;
case 2:
$query = "SELECT * FROM `uty` WHERE `nome`=\"".$VALORE."\"";
break;
case 3:
$query = "SELECT * FROM `uty` WHERE `username`=\"".$VALORE."\"";
break;
}
$result = mysqli_query($con,$query) or die(mysql_error());
while($row = mysqli_fetch_array($result)) {
switch($ID){
case 1:
$risultato = $row['cognome'];
break;
case 2:
$risultato = $row['nome'];
break;
case 3:
$risultato = $row['username'];
break;
}
}
if($risultato===$VALORE){
echo "VERO";
}else{
echo "FALSO";
}
mysqli_close($con);
?>
La riga 21 corrisponde alla seguente istruzione:Codice:Warning: mysqli_query(): Empty query in /volume1/web/utenti/validiamo/checkdati.php on line 21
Qua ti riporto di nuovo il file iscrizione.php che dovrebbe essere giusto (spero):Codice:$result = mysqli_query($con,$query) or die(mysql_error());
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>
<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:15px;
height:100px;
position:absolute;
text-align:center;
width:1000px;
}
table{
border:1px solid black;
}
</style>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
/* definiamo quanti campi input sono presenti */
var numeroCampiinput = 3;
/* nascondiamo le immagini di controllo */
for(i=1;i<=numeroCampiinput;i++){
var elemento = "#controllo"+i;
$(elemento).hide();
}
/* assegnamo la funzione controllo al cambiamento dei campi input */
function ccc(i){
return function(){
controlla(i);
};
}
for(i=1;i<=numeroCampiinput;i++){
var elemento = "#input"+i;
$(elemento).change(ccc(i));
}
});
/* funzione di controllo: argomento di funzione ID del campo input */
/* identifichiamo l'elemento del campo input e leggiamo il suo valore */
/* quindi chiamiamo la funzione AJAX passandogli ID e Valore del campo */
function controlla(id){
var elemento = "#input"+id;
var valore = $(elemento).val();
loadXMLDoc(id,valore);
}
/* funzione AJAX: argomenti di funzione ID e Valore del campo Input */
function loadXMLDoc(id,valore)
{
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
/* qui prendiamo la risposta del file PHP */
/* controlliamo se sia Vero o Falso la presenza del dato del DB */
/* quindi visualizziamo l'immagine relativa */
var risposta = xmlhttp.responseText;
risposta = risposta.substr(1, risposta.length-2);
var elementoIMG = "#controllo"+id+" img";
if (risposta=="VERO"){
$(elementoIMG).attr("src","available.png");
}else{
$(elementoIMG).attr("src","not-available.png");
}
var elemento = "#controllo"+id;
$(elemento).show();
}
}
/* eseguiamo il file PHP per verificare se il dato e' presente nel DB */
/* passiamo al file PHP id e il valore del campo Input */
xmlhttp.open("GET","checkdati.php?ID="+id+"&VAL="+valore,true);
xmlhttp.send();
}
</script>
</head>
<body>
</head>
<body>
<header>
<div id="Titolo"><h2>Prova inserimento campi</h2></div>
<hr>
</header>
<footer>
<div id="footer">
La pagina è stata creata by Fabio xxxxxxxxxx. 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>
<div id = "div">
Cognome: <input type ="text" id="input1" name="cognome" maxlenght ="15" >
<div id="controllo"><img src="" /></div>
<p> <p>
Nome: <input type ="text" id="input2" name="nome" maxlenght ="15" >
<div id="controllo2"><img src="" /></div> </p></p>
<p> <p>
Username: <input type ="text" id="input3" name="username" maxlenght ="15" >
<div id="controllo3"><img src="" /></div> </p></p>
</div> </div>
<?php
include_once("connettimysqli.php");
include_once("data.php");
?>
</body>
</html>
Il risultato della prova da te consigliatami è la seguente:
per la ricerca con la seguente stringa inserita a mano mi da il seguente risultato:
Codice:checkdati.php?ID=2&VAL=pippa FALSE
Ecco l'immagine:
http://s13.postimg.org/ej2z7kcuv/Ris..._con_Pippa.png
Invece se ci metto a posto di pippa --> pippo (che è presente nel db) mi da VERO
Codice:checkdati.php?ID=2&VAL=pippo VERO
http://s30.postimg.org/551cy54j5/Ris..._con_Pippo.png
Cosa c'è di sbagliato nella query ???? Mi sembra che pippa come nome sia presente nel db se non erro.
Ok. procediamo per gradi...
nel tuo post#56 l'immagine della tabella del DB mostra che Nome=Pippo , Cognome=Pippa
mentre il codice da te scritto e' al contrario (Nome=Pippa , Cognome=Pippo)
ecco perche'
checkdati.php?ID=2&VAL=pippo da VERO
e
checkdati.php?ID=2&VAL=pippa da FALSO
quindi possiamo dire che il file checkdati e' corretto !!
nel file iscrizione c'e' un errore:
<div id="controllo"><img src="" /></div>
dovrebbe essere
<div id="controllo1"><img src="" /></div>
tu dici
che significa fai girare semplicemente ? vuol dire che non gli passi alcun parametro e quindi il risultato della query e' NULLO !Se faccio girare semplicemente il file checkdati mi da il seguente errore:
Warning: mysqli_query(): Empty query in /volume1/web/utenti/validiamo/checkdati.php on line 21
..............
ci siamo quasi..
correggi gli ultimi errori e dovremo esserci !