invio form non corretto dopo controllo dati

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Apro un altra discussione per capire secondo voi dove può stare l'errore. Nel mio form normalissimo faccio un controllo dati sia via js con una validazione live sia via php. I campi se risultano vuoti non vengono inviati ed il form rimane disponibile per correggere i valori. se i campi risultano completi imposto a ok una variabile ed invio il form al motore php per la validazione lato server. Il problema è che nonostante io lasci un campo vuoto invece di non cambiare pagina e permettermi di sistemare il form mi da l'ok all'invio dei dati e mi appare il messaggio di corretto invio ed ovviamente l'avviso che quel campo è mancante.
Questo è il markup
PHP:
<label for="username" class="block">Username</label>
<input type="text" required name="username" tabindex="4" id="username" onchange="check3() "Nickname di fantasia"/>
<span id="username_ko"></span>
questo è il codice php per la validazione lato server
PHP:
//sul input username faccio un controllo con ajax per verificare se è già presente..
if(!ver_testo($username,4,15)){
$ok_ko.="Username non corretto, deve essere compreso tra 6 e 15 caratteri compresi i caratteri jolly <br />";
echo "<meta http-equiv='Refresh' content='300; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";	}
e qui il controllo dei dati e l'invio
PHP:
if(empty($ok_ko)) {
$stmt = $mysqli->prepare("INSERT INTO utenti_temp (codiceconferma, nome, cognome, eta, interessi,
 username, password, email, domanda, risposta) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param ('ssssssssss', $codiceconferma, $nome, $cognome, $eta, $interessi, $username, $password, 
$email, $domanda, $risposta);
$stmt->execute();
$stmt->close();
//se tutto è OK da qua preparo l'invio della mail di conferma per l'avvenuta registrazione.
require_once('../TEST_3/phpmailer/PHPMailerAutoload.php');
if ($mail->Send()) {
//echo "Mail inviata con successo";
echo '<div id="mailok"><p style="margin-top: 2px;">Complimenti,<br />
la registrazione è andata a buon fine

Sbaglio qualcosa?
 

Altutto

Utente Attivo
30 Set 2013
262
0
16
stubborn.altervista.org
Ciao,
Questa sintassi
HTML:
<input type="text" required name="username" tabindex="4" id="username" onchange="check3() "Nickname di fantasia"/>
Non è corretta: se vuoi assegnare "Nickname di fantasia" come valore di default per l'input, devi usare
HTML:
<input type="text" required name="username" tabindex="4" id="username" onchange="check3()" value="Nickname di fantasia" />
Se invece vuoi che costituisca la descrizione dell'input, il codice dovrebbe essere:
HTML:
Nickname di fantasia: <input type="text" required name="username" tabindex="4" id="username" onchange="check3()" />
Oppure, con html5:
HTML:
<input type="text" required name="username" tabindex="4" id="username" onchange="check3()" placeholder="Nickname di fantasia" />
 
Ultima modifica:

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ciao altutto intanto grazie. Nel postare il codice mi è scappato un pezzo. Il placeholder che naturalmente nella pagina c'è.
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ecco qesto è il codice lato client che mi aggiunge dei flag verdi a fianco di ogni input per verificare l'effettivo inserimento dei dati, senza i dati completi il form non parte, o almeno così succedeva.
PHP:
$(document).ready(function(){

	var jVal = {
		'nome' : function() {

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

			var nameInfo = $('#nameInfo');
			var ele = $('#nome');
			var pos = ele.offset();

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

			if(ele.val().length < 3) {
				jVal.errors = true;
					nameInfo.removeClass('correct').addClass('error').html('&larr; Inserisci correttamente il tuo Nome').show();
					ele.removeClass('normal').addClass('wrong');
			} else {
					nameInfo.removeClass('error').addClass('correct').html('&radic;').show();
					ele.removeClass('wrong').addClass('normal');
			}
		},

		'cognome' : function() {

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

			var surnameInfo = $('#surnameInfo');
			var ele = $('#cognome');
			var pos = ele.offset();

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


			var patt = /^([a-zA-Z\xE0\xE8\xE9\xF9\xF2\xEC\x27]\s?)+$/;

			if(ele.val().length = 0) {
				jVal.errors = true;
					surnameInfo.removeClass('correct').addClass('error').html('&larr; Inserisci il tuo Cognome').show();
					ele.removeClass('normal').addClass('wrong');
			} else if(ele.val().length < 3) {
				jVal.errors = true;
					surnameInfo.removeClass('correct').addClass('error').html('&larr; Inserisci correttamente il tuo Cognome').show();
					ele.removeClass('normal').addClass('wrong');
			} else if(!patt.test(ele.val())) {
				jVal.errors = true;
					surnameInfo.removeClass('correct').addClass('error').html('&larr; Puoi inserire solo lettere').show();
					ele.removeClass('normal').addClass('wrong');
			} else {
					surnameInfo.removeClass('error').addClass('correct').html('&radic;').show();
					ele.removeClass('wrong').addClass('normal');
			}
		},


		'nascita' : function (){

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

			var nascitaInfo = $('#nascitaInfo');
			var ele = $('#nascita');
			var pos = ele.offset();

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

			//var patt = /^(0[1-9]|[12][0-9]|3[01])[- /.] (0[1-9]|1[012])[- /.](19|20)\d\d$/i
			var patt = /^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/g;


			if(!patt.test(ele.val())) {
				jVal.errors = true;
					nascitaInfo.removeClass('correct').addClass('error').html('&larr; Inserisci correttamente la data senza simboli').show();
					ele.removeClass('normal').addClass('wrong');
			} else {
					nascitaInfo.removeClass('error').addClass('correct').html('&radic;').show();
					ele.removeClass('wrong').addClass('normal');
			}
		},


		'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');
			}
		},


		'email' : function() {

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

			var emailInfo = $('#emailInfo');
			var ele = $('#email');
			var pos = ele.offset();

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

			var patt = /^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*\s+&lt;(\w[-._\w]*\w@\w[-._\w]*\w\.\w{2,3})&gt;$|^(\w[-._\w]*\w@\w[-._\w]*\w\.\w{2,3})$/i;

			if(!patt.test(ele.val())) {
				jVal.errors = true;
					emailInfo.removeClass('correct').addClass('error').html('&larr; Inserisci un indirizzo Mail valido').show();
					ele.removeClass('normal').addClass('wrong');
			} else {
					emailInfo.removeClass('error').addClass('correct').html('&radic;').show();
					ele.removeClass('wrong').addClass('normal');
			}

		},

		'interessi' : function() {

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

			var interessiInfo = $('#interessiInfo');
			var ele = $('#interessi');
			var pos = ele.offset();

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

			if(ele.val().length < 4) {
				jVal.errors = true;
					interessiInfo.removeClass('correct').addClass('error').html('&larr; Scrivimi qualcosa su di te!').show();
					ele.removeClass('normal').addClass('wrong').css({'font-weight': 'normal'});
			} else {
					interessiInfo.removeClass('error').addClass('correct').html('&radic;').show();
					ele.removeClass('wrong').addClass('normal');
			}
		},


		'password' : function() {

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

			var passwordInfo = $('#passwordInfo');
			var ele = $('#password');
			var pos = ele.offset();

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

			if(ele.val().length <= 0 ) {
				jVal.errors = true;
					passwordInfo.removeClass('correct').addClass('error').html('&larr; Inserisci la password!').show();
					ele.removeClass('normal').addClass('wrong');
			} else if (ele.val().length < 6 && ele.val().length > 0) {
				jVal.errors = true;
					passwordInfo.removeClass('correct').addClass('error').html('&larr; La password deve avere almeno 6 caratteri').show();
					ele.removeClass('normal').addClass('wrong');
			} else if (ele.val().length >= 6) {
				//jVal.errors = false;
					passwordInfo.removeClass('error').addClass('correct').html('&radic;').show();
					ele.removeClass('wrong').addClass('normal');
				}
			},


			'password2' : function() {

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

				var password2Info = $('#password2Info');
				var ele2 = $('#password2');
				var pos2 = ele2.offset();
				var ele = $('#password');
				var pos = ele.offset();

				password2Info.css({
					top: pos2.top-3,
					left: pos2.left+ele2.width()+25
				});

				if(ele2.val() != ele.val() ) {
					jVal.errors = true;
					password2Info.removeClass('correct').addClass('error').html('&larr; Le password devono coincidere!').show();
					ele2.removeClass('normal').addClass('wrong');
				} else if(ele2.val() == ""){
					jVal.errors = true;
					password2Info.removeClass('correct').addClass('error').html('&larr; Le password devono coincidere!').show();
					ele2.removeClass('normal').addClass('wrong');
				} else {
				//	jVal.errors = false;
					password2Info.removeClass('error').addClass('correct').html('&radic;').show();
					ele2.removeClass('wrong').addClass('normal');
					}
				},


		'domanda' : function() {

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

			var domandaInfo = $('#domandaInfo');
			var ele = $('#domanda');
			var pos = ele.offset();

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

			//if(ele.val().value < "1"){
			if($('select[value=0]').val()){
				jVal.errors = true;
				domandaInfo.removeClass('correct').addClass('error').html('&larr; Ricordati la domanda!').show();
				ele.removeClass('normal').addClass('wrong').css({'font-weight': 'normal'});
			} else {
				jVal.errors = false;
				domandaInfo.removeClass('error').addClass('correct').html('&radic;').show();
				ele.removeClass('wrong').addClass('normal');
			}
		},



		'risposta' : function() {

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

			var rispostaInfo = $('#rispostaInfo');
			var ele = $('#risposta');
			var pos = ele.offset();

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

			if(ele.val().length == "") {
				jVal.errors = true;
				rispostaInfo.removeClass('correct').addClass('error').html('&larr; Ricordati la risposta!').show();
				ele.removeClass('normal').addClass('wrong').css({'font-weight': 'normal'});
			} else {
				rispostaInfo.removeClass('error').addClass('correct').html('&radic;').show();
				ele.removeClass('wrong').addClass('normal');
			}
		},

		'privacy' : function(){

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

			var privacyInfo = $('#privacyInfo');
			var ele = $('#privacy');
			var pos = ele.offset();

			privacyInfo.css({
				top: pos.top-9,
				left: pos.left+ele.width()+175
			});

			if($("#privacy").is(":not(:checked)")){
				//jVal.errors = true;
				privacyInfo.removeClass('correct').addClass('error').html('&larr; Devi accettare l\'informativa sulla Privacy!').show();
				ele.removeClass('normal').addClass('wrong').css({'font-weight': 'normal'});
			} else {
				privacyInfo.removeClass('error').addClass('correct').html('&radic;').show();
				ele.removeClass('wrong').addClass('normal');
			};

		},


		'sendIt' : function (){
			if(!jVal.errors) {
				$('#sendmail').change('ok');
				$('#jform').submit();
			}
		}
	};

// ====================================================== //

	$('#send').click(function (){
		var obj = $.browser.webkit ? $('body') : $('html');
		obj.animate({ scrollTop: $('#jform').offset() }, 750, function (){
			jVal.errors = false;
			jVal.nome();
			jVal.cognome();
			jVal.nascita();
			jVal.username();
			jVal.email();
			jVal.interessi();
			jVal.password();
			jVal.password2();
			jVal.domanda();
			jVal.risposta();
			jVal.privacy();
			jVal.sendIt();
		});
		return false;
	});
//Qui colleghiamo il valore jVal.xxx al valore del form
    $('#nome').change(jVal.nome);
	$('#cognome').change(jVal.cognome);
	$('#nascita').change(jVal.nascita);
	$('#username').change(jVal.username);
	$('#email').change(jVal.email);
	$('#interessi').change(jVal.interessi);
	$('#password').change(jVal.password);
	$('#password2').change(jVal.password2);
	$('#domanda').change(jVal.domanda);
	$('#risposta').change(jVal.risposta);
	$('input[name="privacy"]').change(jVal.privacy);
});

A voi ogni aiuto.
 

Altutto

Utente Attivo
30 Set 2013
262
0
16
stubborn.altervista.org
Dando un'occhiata veloce al codice, mi sono imbattuto in:
Codice:
            if(ele.val().length = 0) {
(riga 43): per verificare che due valori siano uguali, devi usare ==, quindi dovrebbe essere
Codice:
            if(ele.val().length == 0) {
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
Ma sicuramente è un errore però non mi crea nessun problema a al form.
Altutto ha ragione, non vedi nessuna influenza, salvo che il controllo viene fatto con una logica diversa da quella voluta
controlla anche gli altri if, qualcuno mi sembra "strano",
in ogni caso nella parrocchia "domanda", hai il seguente codice attivo, che ti vanifica tutti i controlli precedenti
PHP:
jVal.errors = false;
c'è poi
PHP:
ele.val().length == ""
ma ora è tardi, il resto lo controlli tu
ciao
Marino
 
Ultima modifica:

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ho corretto gli errori ma sinceramente non ne vedo altri. Non conosco molto su js. Mi sapreste dare una dritta o farmi capire dove sono ?
Inoltre nonostante i campi siano parzialmente completati, vengono comunque inviati al db che li salva in tabella temporanea, in più il valore della select che ho impostato così
PHP:
	if($result = $mysqli->query("SELECT * FROM question")){
		while ($row = $result->fetch_array())
		{
			echo '<option value="' . $row['id']. '">', $row['domanda'] ,'</option>';
		}
	}
mi viene prelevato come valore 1 e non come stringa, cioè in tabella invece di avere la domanda ho il numero 1. Sbaglio qualcosa? Il valore lo prendo così
PHP:
	$domanda		= $mysqli->real_escape_string(trim($_POST['domanda']));
Grazie
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
Cosina [PHP] Preservare i campi del form solo se l'invio non ha successo PHP 5
Shyson Se invio form e c'è errore, form non ritorna a video PHP 0
1 invio col form non riuscito PHP 11
K [php]form invio dati PHP 0
G form invio multiplo con checkbox PHP 12
nivaria.achinet Intercettare form solo dopo invio Javascript 1
M Unire 2 funzioni per l'invio di un form e con l'apertura di un div Javascript 0
M Form: come tornare ai campi già compilati dopo invio PHP 1
G Invio form con PHP PHP 3
S Invio email da form PHP 8
U PHP bottone per invio mail o ritorno al form PHP 15
A [PHP] Invio automatico dati da form PHP 6
B [PHP] Invio mail automatico dopo compilazione form - db PHP 25
R [javascript]Form invio preventivo Javascript 0
paloppa [PHP] Invio mail da form dubbio PHP 17
G [PHP] FORM INVIO VALORI A QUERY CON TRE CONDIZIONI PHP 2
F Form mail php errore invio PHP 5
S Problema invio form php/html PHP 3
Samuele Ronzani [PHP] Validazione e invio campi form. PHP 7
Matteo Lorenzon [PHP][WORDPRESS] Form in Wordpress, creazione PDF con dati del form ed invio tramite email WordPress 1
I form invio mail HTML e CSS 1
Francesco Polese Errore form invio mail+php PHP 22
P invio mail da form con dati php PHP 7
Marco_88 Passare un valore prima dell'invio del form Ajax 0
P PHP mailer invio form con 2 allegati. PHP 3
G Form invio multiplo da database PHP 0
W Estrapolare un indirizzo mail di un form durante l'invio PHP 5
C Come posso integrare il bottone "paga adesso" di paypal e un form php per invio dati? PHP 1
I invio mail da form PHP 1
S Form invio mail html, con invio tramite file denominato invio.php PHP 8
W Modifica su invio dati da form PHP 4
N impedire invio dati form jQuery 3
Il Matta Problema Form e invio mail PHP 2
P Caricare nuova pagina dopo invio dati form Javascript 11
asevenx problema invio email tramite form PHP 3
M [Richiesta] - Invio tramite form di dati ad un db mysql PHP 2
B Problema form mail per invio doppio allegato PHP 1
N Invio Form con un Ciclo For Javascript 8
A Problema invio dati form contatti PHP 12
A Problema orario invio mail per form PHP 4
L Recupero dati form in tabella e invio con ajax. Problemino jQuery 1
asevenx invio dati da form a file xml XML 0
V problemi con l'invio di allegato in un form PHP 17
A Problema invio messaggio col form PHP 1
S php form invio mail PHP 3
L Form con invio mail PHP 1
L jquery UI dialog form. Conferma prima di invio jQuery 2
S [RISOLTO]invio form con select onchange Javascript 2
K Controllo FORM e invio dati al DB PHP 43
M lanciare due funzioni javascript dopo l'invio di un form Javascript 2

Discussioni simili