Javascript η ajax για ελεγχο πεδίων φόρμας

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
valantis315
Δημοσιεύσεις: 37
Εγγραφή: 25 Ιουν 2008 20:30

Javascript η ajax για ελεγχο πεδίων φόρμας

Δημοσίευση από valantis315 » 25 Νοέμ 2010 23:25

Καλησπέρα, προσπαθώ να κάνω μία εφαρμογή όπου με ajax θέλω να εμφανίζεται κατα της συμπληρωση της φόρμας εάν αυτό που καταχωρεί ο χρήστης είναι δεκτό απο την εφαρμογή ή όχι. Υπάρχουν κάποιες λέξεις στην βάση μου εαν η λέξη που συμπληρώνει ο χρήστης είναι εκει μέσα είναι σωστό, αλλιως λαθος.
Τώρα πρέπει ο χρήστης να πατησει αποστολή για να του εμφανίσει εαν είναι σωστό/λάθος. Πώς θα γίνει με το που παταει tab για να συμπληρωσει το επομενο πεδίο να γίνετε έλεγχος στην βάση για τον έλεγχο εαν ύπάρχει ή όχι με χρήση ajax; Αυτό που θέλω είναι όταν είναι σωστό να εμφανίζετε δίπλα απο το πεδίο που έχει συμπληρωσει ένα ν (σε εικόνα) ή εάν είναι λάθος ένα Χ (σε εικόνα) χωρίς να πατησει αποστολή, και μόνο εαν όλα τα πεδία είναι σωστά να τον επιτρέπει να πατήσει αποστολή της φόρμας... καμια ιδέα;

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Javascript η ajax για ελεγχο πεδίων φόρμας

Δημοσίευση από cpulse » 26 Νοέμ 2010 01:27

Φτιάχνεις ένα javascript script που θα κάνει τον έλεγχο και το συνδέεις με το HTML field με το onblur

Κώδικας: Επιλογή όλων

<input type="text" name="myfield" onblur="check_myfield&#40;&#41;" />
Και ακόμα καλύτερα να κάνεις κι ένα γενικό έλεγχο πριν γίνει η αποστολή του form στο onsbumit

Κώδικας: Επιλογή όλων

<form name="myform" onsubmit="return check_myform&#40;&#41;" />
Και επειδή ο χρήστης μπορεί να έχει απενεργοποιημένη την JavaScript καλό θα ήταν να κάνεις τους ελέγχους και με PHP.

JavaScript ξέρεις ε;

valantis315
Δημοσιεύσεις: 37
Εγγραφή: 25 Ιουν 2008 20:30

Javascript η ajax για ελεγχο πεδίων φόρμας

Δημοσίευση από valantis315 » 26 Νοέμ 2010 01:47

Λίγα πραγματα... Παρολα αυτά καταφερα να κάνω αυτο που ήθελα με jQuery. Τώρα έχω φάει σκάλωμα πως μπορω να κάνω πολλαπλούς ελέγχους.
Για να ελέγξω το onoma χρησιμοποιώ

Κώδικας: Επιλογή όλων

<script src="jquery.js" type="text/javascript" language="JavaScript"></script>
<script language="JavaScript" type="text/javascript">

$&#40;document&#41;.ready&#40;function&#40;&#41;
&#123;
	$&#40;"#onoma"&#41;.blur&#40;function&#40;&#41;
	&#123;
		//remove all the class add the messagebox classes and start fading
		$&#40;"#msgbox"&#41;.removeClass&#40;&#41;.addClass&#40;'messagebox'&#41;.text&#40;'Έλεγχος...'&#41;.fadeIn&#40;"slow"&#41;;
		//check the username exists or not from ajax
		$.post&#40;"check.php",&#123; onoma&#58;$&#40;this&#41;.val&#40;&#41; &#125; ,function&#40;data&#41;
        &#123;
		  if&#40;data=='no'&#41; //if username not avaiable
		  &#123;
		  	$&#40;"#msgbox"&#41;.fadeTo&#40;200,0.1,function&#40;&#41; //start fading the messagebox
			&#123; 
			  //add message and change the class of the box and start fading
			  $&#40;this&#41;.html&#40;'Σωστό!'&#41;.addClass&#40;'messageboxerror'&#41;.fadeTo&#40;900,1&#41;;
			&#125;&#41;;		
          &#125;
		  else
		  &#123;
		  	$&#40;"#msgbox"&#41;.fadeTo&#40;200,0.1,function&#40;&#41;  //start fading the messagebox
			&#123; 
			  //add message and change the class of the box and start fading
			  $&#40;this&#41;.html&#40;'Λάθος'&#41;.addClass&#40;'messageboxok'&#41;.fadeTo&#40;900,1&#41;;	
			&#125;&#41;;
		  &#125;
				
        &#125;&#41;;
 
	&#125;&#41;;
&#125;&#41;;
</script>
στο βασικό αρχείο και στο άλλο αρχειο που κάνει τον ελεγχο

Κώδικας: Επιλογή όλων

<?php

$con = mysql_connect&#40;"localhost","root",""&#41;;
if &#40;!$con&#41;
  &#123;
  die&#40;'Could not connect&#58; ' . mysql_error&#40;&#41;&#41;;
 
  &#125;
mysql_select_db&#40;"betavasi", $con&#41;;
mysql_query&#40;"SET NAMES 'utf8'", $con&#41;;
$name=$_POST&#91;'onoma'&#93;;

$sql="SELECT name FROM onoma WHERE name='".$name."'";
$r = mysql_query&#40;$sql&#41;;
	$row = mysql_fetch_array&#40;$r&#41;;
	$nameapovash = $row&#91;'name'&#93;;

$existing_users=array&#40;$nameapovash&#41;; 
//value got from the get metho
if &#40;$name != ''&#41; &#123;
//checking weather user exists or not in $existing_users array
if &#40;in_array&#40;$name, $existing_users&#41;&#41;
&#123;
	//user name is not availble
	echo "no";
&#125; 
else
&#123;
	//user name is available
	echo "yes";
&#125;
&#125;
?>
Το άλλο πεδίο που θέλω να ελέγχει είναι το χρώμμα, υπάρχει μία λίστα με τα χρώμματα που μπορούν να εισαχθούν. Θα κάνω c-p κομματια κώδικα ή θα χρειαστεί να βάλω κάποιες επιπλέον γραμμες;

Σε ευχαριστώ για την απαντηση :D

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Javascript η ajax για ελεγχο πεδίων φόρμας

Δημοσίευση από cpulse » 29 Νοέμ 2010 19:08

Είναι και λίγο τέχνη αυτά τα πράγματα. Πολλές λύσεις μπορείς να εφαρμώσεις.

Στην θέση σου θα έβαζα μια παραπάνω παράμετρο στην κλήση που κάνεις από το jQuery πχ..

Κώδικας: Επιλογή όλων

$.post&#40;"check.php",&#123; command&#58; "check_name", onoma&#58;$&#40;this&#41;.val&#40;&#41; &#125; ,function&#40;data&#41; ... 
Οπότε μέσα από την PHP μπορείς να γράψεις μετά..

Κώδικας: Επιλογή όλων

switch &#40;@$_POST&#91;'command'&#93;&#41; &#123;
    case 'check_name'&#58;
        ... elegxos stin basi gia onomata ...
        break;

    default&#58;
        die&#40;'Command is not set'&#41;;
&#125;
Και για να γλιτώσεις τα copy paste βάλε τον έλεγχο αν υπάρχουν τα κατάλληλα POST variables και την σύνδεση με την βάση πριν το switch.

Κάτι άσχετο.. να χρησιμοποιείς την mysql_real_escape_string στις παραμέτρους της SQL για να μη αφήνεις τρύπες για sql injections. Επίσης στο mysql_connect, mysql_select_db και mysql_query βάζε και το die στο τέλος για να σταματάει ο κώδικας αν έχεις κάνει λάθη.

πχ..

Κώδικας: Επιλογή όλων

mysql_select_db&#40;"betavasi", $con&#41; or die&#40;'Could not select db'&#41;;

mysql_query&#40;$sql&#41; or die&#40;mysql_error&#40;&#41;&#41;;

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες