You are not logged in.

  • Login

1

Thursday, October 8th 2009, 5:44pm

javascript variable auswerten

Hi zusammen,

Ich benutze folgende jquery Abfrage um einen Benutzernamen auf bereits vorhanden bei der Registrierung zu checken:

JavaScript Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<script type="text/javascript">
 
$(document).ready(function() {
	$('#usernameLoading').hide();
	$('#username').blur(function(){
	  $('#usernameLoading').show();
      $.post("helper.php", {
        username: $('#username').val()
      }, function(response){
        $('#usernameResult').fadeOut();
        setTimeout("finishAjax('usernameResult', '"+escape(response)+"')", 400);
      });
    	return false;
	});
});
 
function finishAjax(id, response) {
  $('#usernameLoading').hide();
  $('#'+id).html(unescape(response));
  $('#'+id).fadeIn();
 
}


die helper.php sieht folgendermaßen aus:

PHP Quellcode

1
2
3
4
5
6
<?php
include("functions.php");
 
echo check_username($username);
 
?>


Die Function sieht so aus:

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function check_username($username){
dbconn();
 
$sql = mysql_query("SELECT * FROM userdata WHERE username = '$username' LIMIT 1");
$result = mysql_fetch_assoc($sql);
$res = mysql_affected_rows();
		if($res == "1"){	
			//return '<span style="color:#f00">Vergeben</span>';
			return "1";
	   }
	   else
	   {   
	//return '<span style="color:#0c0">OK</span>';
		return "0";
	}
}


Im HTML sieht die Auswertung folgendermaßen aus:

HTML Code

1
<span id="usernameLoading"><img src="img/ajax-loader.gif" alt="Ajax Indicator" /></span><span id="usernameResult"></span>


Funktioniert soweit auch einwandfrei. Ich bekomme ne 1 wenn der Benutzername vergeben ist, und ne 0 wenn er frei ist. Nun habe ich aber noch eine Fehlerauswertung auf der Seite welche folgendermaßen aussieht:

JavaScript Code

1
2
3
4
5
6
7
8
9
10
11
12
13
function formcheck() {
 
    form = document.registerform;
    error = "";
    var validate ="<?php echo $sum ?>";
    var username_check = "<?php echo $ucheck; ?>"; 
//Textfelder überprüfen --->
if (form.firstname.value == "") {
    error = "Vorname fehlt\n";
}
if (form.lastname.value == "") {
    error += "Nachname fehlt\n";
}


Hier möchte ich noch einbauen das wenn ich in der Funktion username_check eine 1 bekomme hier die entsprechende fehlermeldung ausgegeben wird beim Absenden des Forms, weil, momentan wird dem Benutzer zwar angezeigt das der Benutzername vergeben ist, aber er kann dennoch das Formular abschicken, das möchte ich natürlich nicht.

Merci vorab fürs drüberschaun!

Grüße,
Matthias

2

Thursday, October 8th 2009, 6:11pm

Hi,

das kannst du nur machen, indem du auch mit JavaScript das Formular absendetst.
Das kannst du einfach mittels submit() machen, wenn keine Fehler vorhanden sind.
Zudem musst du denn auch den type von submit auf button stellen.

Aber beachte, das Clientseitige Überprüfungen nur der Usability dienen und nicht die Serverseitigen Überprüfugnen ersetzen sollen.

3

Thursday, October 8th 2009, 6:20pm

Hi!

Ich schicke das Formular mittels Javascript ab

HTML Code

1
<form name="registerform" action="<?php $PHP_SELF; ?>" method="POST" onSubmit="return formcheck()">


oder?

Wenn dem so ist, was muss ich dann ändern damit die erste funktion bei vergebenem usernamen die error funktion in die zweite schreibt? Dooferweise habe ich von Javascript soviel Ahnung wie ne Kuh vom Weitsprung :(

Matze

4

Thursday, October 8th 2009, 8:49pm

Du musst nichts ändern - der Abschnitt stimmt.
Voraussetzung ist, dass <input name="firstname"> und<input name="lastname"> existieren.
Außerdem musst du error natürlich irgendwie ausgeben.

Wenn du error nicht gerade global verwendest, solltest du noch ein das var in Zeile 4 ergänzen.

5

Friday, October 9th 2009, 7:53am

Hi!

Ja, firstname und lastname existieren, aber mein Problem ist das ich a, nicht weiß wie ich die Funktion usercheck auswerten kann, und b, ich nicht weiß wie ich dann anhand dieser Auswertung entweder in der anderen Funktion einen error patzieren kann oder eben nicht.

Ich versuch es nochmal darzustellen:

JavaScript Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<script type="text/javascript" src="overlib.js"><!-- overLIB (c) Erik Bosrup --></script>
// Hier wird der Username geprüft und entweder wird ok oder vergeben in die ID im HTML zurückübergeben, das funktioniert.
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
 
$(document).ready(function() {
	$('#usernameLoading').hide();
	$('#username').blur(function(){
	  $('#usernameLoading').show();
      $.post("helper.php", {
        username: $('#username').val()
      }, function(response){
        $('#usernameResult').fadeOut();
        setTimeout("finishAjax('usernameResult', '"+escape(response)+"')", 400);
      });
    	return false;
	});
});
 
function finishAjax(id, response) {
  $('#usernameLoading').hide();
  $('#'+id).html(unescape(response));
  $('#'+id).fadeIn(); 
  error = "Benutzername bereits vergeben\n"; 
   } //finishAjax
</script> 
// Hier endet die Funktion zur Prüfun des Usernames
<script language="JavaScript">
 
 
//Hier beginnt die Fehlerauswertung des Formulars, hat es Fehler kann das Formular nicht abgeschickt werden.[/b] Ist momentan ein Username vergeben wird dies zwar im id des HTML ausgegeben, das Formular kann aber dennoch abgeschickt werden. Das soll nicht sein.
<!--
function formcheck() {
 
    form = document.registerform;
    //error = "";
    var validate ="<?php echo $sum ?>";
    var username_check = "<?php echo $ucheck; ?>"; 
//Textfelder überprüfen --->
if (form.firstname.value == "") {
    error = "Vorname fehlt\n";
}
if (form.lastname.value == "") {
    error += "Nachname fehlt\n";
}
if (form.password.value != form.password_retype.value) {
    error += "Die Passwörter stimmen nicht überein\n";
}
if (form.email.value != form.email_retype.value) {
    error += "Die Emailadressen stimmen nicht überein\n";
}
if (form.verify.value != validate) {
    error += "Verifizierung stimmt nicht!\n";
}
if (username_check != "0") {
    error += username_check;
}
if(form.agb.checked == false){
    error += "Bitte stimmen Sie unseren AGB's zu!\n";
}
if(form.use_legal.checked == false){
    error += "Bitte stimmen Sie unseren Nutzungsbedingungen zu!\n";
}
if (form.email.value == "") {
    error += "Emailadresse fehlt\n";  
}

6

Friday, October 9th 2009, 8:13am

Um gezielt Inhalte zwischen dem Server und dem Browser hin und her schicken zu können, benutzt man mitlerweile die gut verbreitete Möglichkeit über JSON:

Bei jQuery kenn ich mich nicht gut genug aus, denke aber, dass man das in deinem Fall über die Funktion jQuery.getJSON lösen würde.
Auch in der Wiki findest du von unserem großen Spezialisten einen wunderbaren und anschaulichen Eintrag über das Thema: JSON: PHP und JavaScript

Similar threads

Social bookmarks