validazine input e risposta input

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Mi affaccio solo adesso su ajax perchè voglio implementare questo linguaggio sul mio form, che mi permette di recuperare un valore da db ed inserirlo in un tag input dopo che con ajax ho validato un precedente campo input. vengo al codice. Qua c'è ilmarkup
HTML:
<p>
<label for="username" class="block"></label>
<input type="email" name="email" id="email_rec" onkeypress="mail(this.value)" placeholder="Inserisci la tua mail"/>
</p>

questo è il codice ajax js
PHP:
<script type="text/javascript">
$(document).ready(function(){
	$("#email_rec").onchange(function() {
	var dati = $('#email_rec').attr('value');
	var data_send = "email="+dati;

	$.ajax({
		type: "POST",
		dataType: "html",
		url: "mail.php",
		data: data_send,
		success: function(data){
			$('input[name="domanda"]').val(data);
			},
		error: function(){
			alert ("Sbagliato!");
			}
		});
	});
});
</script>
ed infine il php
PHP:
if(isset($_POST['email'])){

	$mail=$_POST['email'];

//Se tuè stato inserito procedo a verificare che ci sia nel db
if($result = $mysqli->query("SELECT * FROM utenti ")){

	//Se trovo corrispondenza nel db con la mail inserita estraggo la domanda
	while($row = $result->fetch_row())
	{
		echo "";//echo  $row[5], " ", $row[10];
	}
	//A questo punto controllo che la mail che arriva da ajax sia uguale a quella inserita ne db
	if($mail == $row[5]){
		//Se è uguale metto in echo la domanda di sicurezza legata alla mail
		echo $row[10];
	}
}
}
problema che non va!. Non so dove mettere le mani. ho seguito un po di guide in rete ma non ne vengo a capo. Dimenticavo di dire che quello che voreri fare è questo: nel tag input email_rec inserisco la mail dell'utente, al momento di cambiare viene fatta una chiamata ad ajax che verifica con php se la mail inserita è presente nel db. Se l'esito è positivo recupero sempre dal db la domanda che andrà inserita nelcampo input che viene dopo quello della mail. Nelcaso non fosse presente la mail dovrei dare un alert, o con un semplice alert oppure potrei scrivere qualcosa come textarea invece di input. Non mi sembra molto complicato ma non capisco cosa non vada.
Chi mi può dare una dritta?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, hai fatto qualche piccolo errore, se non hai già risolto possiamo rivederlo
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
La funzone non è onchange() ma solo change()
manca il value all'input
per recuperarlo la sintassi corretta è
Codice:
$('#email_rec').val();
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Perfetto. Allora diciamo che ho cambiato metodo di inserimento ed ho fatto così, dimmi se può andare bene:
Markup
PHP:
<p>
<label for="mail" class="block"></label>
<input type="email" name="email" id="email_rec" onchange="check1()" placeholder="Inserisci la tua mail"/>
</p>

file di js viene richiamato dall' onchange()
PHP:
//Funzione per recuperare la domanda dal Db tramite Ajax
$(document).ready(function(check1){
	$('#email_rec').change(function(){
		var email2 =  $('#email_rec').val();
		$('#domanda_rec').load(
		"./funzioni_ajax/script2.php",
		{email2: email2},
		function() {
			$('#domanda_rec');
		});
	});
});
ed infine il codice php per interrogare il db
PHP:
<?php
include('../config/config2.php');

if(isset($_REQUEST["email2"])) $email2 = $_REQUEST["email2"];
//if(isset($_REQUEST["username"])) $username2 = $_REQUEST["username"];

if($result = $mysqli->query("SELECT * FROM utenti ")){

	while($row = $result->fetch_assoc())
	{
		if($email2 == $row['email']){
			//Se è uguale metto in echo la domanda di sicurezza legata alla mail
			echo $row['domanda'];
		} else {
			echo "Email non presente nel nostro Database!";
		}
	}
} $result->close();

?>
Mi sembra che vada bene.

Infine nel form che ho, io valido i dati inseriti semplicemente aggiungendo con js al tag input un flag verde o rosso a secondo che siano stati inseriti i dati. In particolar modo per l'username come posso fare a far apparire questo flag dopo che con onchange lui mi verifica che non ci sia un username già presente nel db? Cioè come posso legare il risultato dell'interrogazione al db con ajax alla funzione js che mi appende questi flag? questo è un esempio del codice js per la validazione senza ajax
PHP:
	'username' : function() {

			$('body').append('<div id="nicknameInfo" class="info"></div>');

			var nicknameInfo = $('#nicknameInfo');
			var ele = $('#username');
			var pos = ele.offset();

			nicknameInfo.css({
				top: pos.top-3,
				left: pos.left+ele.width()+25
			});

			if(ele.val().length < 3) {
				jVal.errors = true;
					nicknameInfo.removeClass('correct').addClass('error').html('&larr; Inserisci un Username!').show();
					ele.removeClass('normal').addClass('wrong').css({'font-weight': 'normal'});
			} else {
					nicknameInfo.removeClass('error').addClass('correct').html('&radic;').show();
					ele.removeClass('wrong').addClass('normal');
			}
		},
PHP:
	$('#send').click(function (){
		var obj = $.browser.webkit ? $('body') : $('html');
		obj.animate({ scrollTop: $('#jform').offset() }, 750, function (){
			jVal.errors = false;
			jVal.username();
			jVal.sendIt();
		});
		return false;
	});
//Qui colleghiamo il valore jVal.xxx al valore del form
	$('#username').change(jVal.username);

});
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
per funzionare funziona, non capisco cosa ti serve il check1 come parametro
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Il check1 mi permette di prendere la mail inserita nel form associarla al db e recuperare la domanda segreta dal db. Senza dover far fare tutto il controllo in un secondo step.
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Il sistema confermo funziona. Quindi tramite ajax riesco a recuperare la domanda dal db ed inserirla nel tag per poi permettere la risposta dell'utente.
Lo stesso sistema lo vorrei adottare per verificare l'esistenza di un username e di email nel db in fase di registrazione.
Ho fatto così, questo il codice js nel markup
PHP:
<script type="text/javascript">
$(document).ready(function() { $("#username").change(function(){
	var username = this.id;
	$.ajax({ type: "POST",
		url: "chkcontatti.php",
		data: username+"="+this.value,
		success: function(response){

if(response== '0')
{
	$("#username_ok").html(' Disponibile ');

}
else
{
	$("#username_ok").html('Non disponibile ');
	$("#username_ok").css('border', '2px red solid');
	$("#username").val("");
}
		}
	});
});
});
</script>
Quindi dopo il controllo faccio apparire un box con la risposta e elimino un flag legato ad un altro codice per il controllo dell'inserimento nei campi.

questo invece il codice di controllo in php
PHP:
include('../config/config2.php');
if(isset($_REQUEST["username"])) $username2 = $_REQUEST["username"];

if($stmt1 = $mysqli->query("SELECT username FROM utenti_temp ")){

	while($row1 = $stmt1->fetch_assoc())
	{
		if($username2 == $row1['username']){
			//Se è uguale metto in echo l'errore
				echo '1';
			} else {
				echo '0';
			}
		}
	}

Il problema che ho è, primo il controllo lo devo fare su due tabelle, secondo sia che inserisca un username nuovo sia uno già presente mi dice sempre che il nome esiste già. In più come posso cambiare il codice per poterlo inserire invece in un file js a parte?

Grazie a tutti!:cool::cool:
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Volevo segnalare, che il problema l'ho risolto, la soluzione la trovate in un post simile sempre su questo forum.
Grazie comunque a tutti.
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Volevo far scomparire lo span legato all'avviso dell'username già in uso dopo un determinato tempo. Secondo voi questo codice è corretto?
PHP:
$("#username").val("");
setTimeout(function(){
$("username_ko").remove();}, 3000
);
assegno un valore nullo all'input dell'username in modo da eliminare quello erroneamente inserito, e dopo 3 secondi vorrei far scomparire lo span che appare a fianco della caselle input. Ma non va! Ovviamente lo span con id username_ko è quello che da l'avviso dell'username già in uso.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Hai dimenitcato il # per indicare che è un id
 
Discussioni simili
Autore Titolo Forum Risposte Data
G Input checkbox in CSS HTML e CSS 0
L Ripetere Campi disabilitando input in riferimento ad un valore della select jQuery 0
otto9due Input text: accetta solo numeri e non può essere vuoto. Javascript 9
M Come recuperare molteplici input form PHP 1
F Lettura "input number" dinamico PHP 4
B form gestione input PHP 2
M Creare un campo input select quantità di un numero intero prelevato dal db PHP 3
F Leggere e aggiornare dati di campi <input text> su file di test PHP 0
R Nome input testo+variabile PHP 1
L input (rilevare cambio dati) PHP 3
S riflettere valore di campo input range in live Javascript 0
L input dati con inser into select ? PHP 4
M Compilazione automatica campi in input stessa pagina PHP 0
A attributo "min" per input gestione date PHP 8
F Steps campo input field Javascript 1
C input in sostituzione della select PHP 2
C [RISOLTO]Inserimento variabile php in input html PHP 20
L input (controllo se è stato modificato o no). PHP 1
W Modificare il Type di un Input box in javascript ovunque si trovi Javascript 0
S [PHP] Recupero nome immagine da Form con input file PHP 3
T [PHP] Autocompilazione input multiple da una select PHP 1
L [Javascript] input variabili di scrittura con canvas Javascript 2
MarkRed Come indicare, in una maschera, il primo controllo d'input, tipo "SetFocus" jQuery 9
L [Javascript] Select option in campi input Javascript 4
elpirata [RISOLTO][Javascript] Datapicker e autocompletamento campo input Javascript 2
P [PHP] Inserire stringhe in input(text),memorizzarle e stamparle in file successivo PHP 0
P [PHP] Aggiungere giorni e stampare risultato da data inserita in input PHP 3
G Campo HTML input file con jQuery jQuery 0
P [PHP] Input Type="date" non va correttamente con Apple PHP 2
L Bootstrap 4 input ext value HTML e CSS 1
R radio input php mysql PHP 2
Emix [Javascript] Somma con array input HTML Javascript 1
M [HTML] form con multipli input type image HTML e CSS 1
A [Javascript] Multi input su due tabelle correlate Javascript 1
N [PHP] filtrare input form di tipo array PHP 0
S [HTML] Problema <input type="date"> HTML e CSS 0
V [Javascript] [HTML] Attivazione nuovi campi di input Javascript 2
Daniele_Carrara [Javascript] Modifica input date Javascript 5
F Controllo dati sui campi di input tramite php PHP 1
A [Javascript] Somma di input dinamici Javascript 1
T [PHP] tornare alla pagina con gli input già compilati PHP 2
bubino8 [PHP] Recupero input senza invio PHP 1
D [Javascript] Input da un label Javascript 1
D [PHP] da option a input type PHP 9
bubino8 [HTML] <input type="file"> Testo a scelta HTML e CSS 3
D [Javascript] Script che controlla quello che hai scritto nell'input Javascript 3
MarcoGrazia [PHP] Verifica dell'input utente tramite funzione generica. PHP 0
trattorino [HTML] input automatico al click HTML e CSS 2
Alex1990000 [Javascript] autocompila campi input form Javascript 5
C [Javascript] Input request Javascript 3

Discussioni simili