php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS Probleme mit HTML5, Bootstrap oder jQuery ?

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 13-01-2012, 11:04
joextra
 Registrierter Benutzer
Links : Onlinestatus : joextra ist offline
Registriert seit: Jul 2005
Beiträge: 260
joextra ist zur Zeit noch ein unbeschriebenes Blatt
Standard Doppelte Einträge im IE9

Hallo,

ich bin mir nicht sicher ob das Thema hier richtig ist oder eher in "SQL / Datenbanken" gehört. Auf jeden Fall habe ich ein sehr komisches Problem. Ich habe ein Formular. Beim Submit wird der Inhalt in eine DB geschrieben. Soweit funktioniert alles Problemlos, nur beim IE9 werden die Einträge in der DB doppelt eingetragen. Beim IE8 (IE9 im IE8 Modus) & FF klappt es problem los. Der Insert wird nur ein mal aufgerufen. Das habe ich schon 10000x überprüft. Bei der Passworterstellung (die für das Formular verwendet wird) verwende ich eine Verschlüsselung bestehend aus md5 & Zufallszahl, so das sich der Schlüssel jedes mal ändert. Das komische dabei ist, das bei beiden Einträgen zwei verschiedene Passwörter drin stehen obwohl ja der Insert nur ein mal aufgerufen wird. Gibt es vielleicht einen Bug zwischen mysqli & IE9?
__________________
Erfahrungen vererben sich nicht jeder muss sie allein machen.

Geändert von joextra (13-01-2012 um 11:11 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 13-01-2012, 11:07
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.721
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von joextra Beitrag anzeigen
Gibt es vielleicht einen Bug zwischen mysqli & IE9?
Sollte nicht. mysqli/php läuft serverseitig. Da spielt der Browser keine Rolle.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 13-01-2012, 11:14
joextra
 Registrierter Benutzer
Links : Onlinestatus : joextra ist offline
Registriert seit: Jul 2005
Beiträge: 260
joextra ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ja, das habe ich mir auch gedacht. Aber an was kann es liegen? Problem ist auf jeden Fall der IE9. Das einfachste wäre, den IE9 im IE8 Kompatibilitätsmodus zu betreiben. Aber das ist keine schöne Lösung.
__________________
Erfahrungen vererben sich nicht jeder muss sie allein machen.
Mit Zitat antworten
  #4 (permalink)  
Alt 13-01-2012, 11:19
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.721
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Hast du bei dem Formular irgendwas mit JavaScript gemacht?

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #5 (permalink)  
Alt 13-01-2012, 11:23
joextra
 Registrierter Benutzer
Links : Onlinestatus : joextra ist offline
Registriert seit: Jul 2005
Beiträge: 260
joextra ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ja, das komplette Formular wird per JS überprüft. Normaler weise mach ich es mit PHP aber in diesem Fall sind Reloads unerwünscht (also so wenig wie möglich). Nur beim Submit (nach überprüfung per JS) wird die Seite neu geladen.
__________________
Erfahrungen vererben sich nicht jeder muss sie allein machen.
Mit Zitat antworten
  #6 (permalink)  
Alt 13-01-2012, 11:45
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.721
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Schmeiß doch mal spaßeshalber die JS-Überprüfung raus.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #7 (permalink)  
Alt 13-01-2012, 12:20
joextra
 Registrierter Benutzer
Links : Onlinestatus : joextra ist offline
Registriert seit: Jul 2005
Beiträge: 260
joextra ist zur Zeit noch ein unbeschriebenes Blatt
Standard

tatsache. Ohne JS Funktioniert es. Hmm, könnte es da an den ajax Funktionen liegen, mit denen ich überprüfe ob bestimmte Einträge vorhanden sind?

EDIT: nein, daran liegts nicht
__________________
Erfahrungen vererben sich nicht jeder muss sie allein machen.

Geändert von joextra (13-01-2012 um 12:22 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 13-01-2012, 12:22
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.721
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von joextra Beitrag anzeigen
tatsache. Ohne JS Funktioniert es.
Hab ich mir fast gedacht.
Zitat:
Zitat von joextra Beitrag anzeigen
Hmm, könnte es da an den ajax Funktionen liegen, mit denen ich überprüfe ob bestimmte Einträge vorhanden sind?
Ohne Code muss ich raten. Und auch wenn das mit jQuery gemacht wurde.

Peter

PS. Ich verschieb es dann mal ins richtige Forum.
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #9 (permalink)  
Alt 13-01-2012, 12:31
joextra
 Registrierter Benutzer
Links : Onlinestatus : joextra ist offline
Registriert seit: Jul 2005
Beiträge: 260
joextra ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ok, hier der Code. Und ja, es wird jQuery verwendet.

JS:
Code:
/***************************************
	Register/Change Profile check
	***************************************/
	$('#saveProfile').click(function () {
		var id = $('input[name=id]');
		var name = $('input[name=name]');
		var surname = $('input[name=surname]');
		var street = $('input[name=street]');
		var zip = $('input[name=zip]');
		var place = $('input[name=place]');
		var email = $('input[name=email]');
		var username = $('input[name=username]');
		var password = $('input[name=password]');
		var gender = $('input:radio[name=gender]:checked');
		
		// Check if filled
		if(name.val() == '') {
			//error = true;
			name.css("border", highlight);
			name.focus();
			return false;
		} else {
			name.css("border", deHighlight);
		}
		
		if(surname.val() == '') {
			//error = true;
			surname.css("border", highlight);
			surname.focus();
			return false;
		} else {
			surname.css("border", deHighlight);
		}
		
		if(email.val() == '') {
			//error = true;
			email.css("border", highlight);
			email.focus();
			return false;
		} else if(!emailReg.test(email.val())) {
			//error = true;
			alert("Falsches Email-Format.");
			email.css("border", highlight);
			email.focus();
			return false;
		} else {
			email.css("border", deHighlight);
		}
		
		// check if email exists
		if(id.val() == "") {
			var data = 'email=' + email.val();
			$.ajax({
				url: "checkPostData.php",
				type: "GET",
				data: data,
				cache: false,
				traditional: true,
				async: false,
				success: function(result) {
					if(result == true) {
						error = true;
						alert("Diese Email existiert bereits.");
						email.css("border", highlight);
						email.focus();
					}
				}
			});
		}
		// for: check if email exists
		if(error == true) {
			error = false;
			return false;
		}
		
		if(username.val() == '') {
			//error = true;
			username.css("border", highlight);
			username.focus();
			return false;
		} else {
			username.css("border", deHighlight);
		}
		
		// check if username exists
		if(id.val() == "") {
			var data = 'username=' + username.val();
			$.ajax({
				url: "checkPostData.php",
				type: "GET",
				data: data,
				cache: false,
				traditional: true,
				async: false,
				success: function(result) {
					if(result == true) {
						error = true;
						alert("Diese Benutzername ist bereits vergeben.");
						username.css("border", highlight);
						username.focus();
					}
				}
			});
		}
		// for: check if username exists
		if(error == true) {
			error = false;
			return false;
		}
		
		if(password.val() == '') {
			//error = true;
			password.css("border", highlight);
			password.focus();
			return false;
		} else if(password.val().length < 6) {
			//error = true;
			alert("Das Passwort muss mind. 6 Zeichen lang sein.");
			password.css("border", highlight);
			password.focus();
			return false;
		} else {
			password.css("border", deHighlight);
		}
		
		if(gender.val() != 'm' && gender.val() != 'f') {
			//error = true;
			$(".radio").css("color", "#CC0000");
			return false;
		} else {
			$(".radio").css("color", "#888");
		}
		
		if(error == true) {
			error = false;
			return false;
		} else {
			$("#registerForm").removeAttr("onsubmit");
			pause(1000);
			$("#registerForm").submit();
			return true;
		}
	});
	
	// prevent Form to Submit when pressing Return
	$('#registerForm').bind('keydown',function(e){
		if(e.which == 13){
			//return false;
			$('#saveProfile').trigger('click');
		}
	});
Formular:
HTML-Code:
<form name="registerForm" id="registerForm" action="index.php" method="post" onSubmit="return false;">
<input type="hidden" name="registerForm" value="true">
<input type="hidden" name="registeredSince" value="<?echo $registeredSince;?>">
<input type="hidden" name="id" value="<?echo $id;?>">
<div class="userData">
	<p>Vorname*</p>
	<input type="text" name="name" value="<?echo $name;?>">
	<p>Name*</p>
	<input type="text" name="surname" value="<?echo $surname;?>">
	<p>Straße</p>
	<input type="text" name="street" value="<?echo $street;?>">
	<div id="zip">
		<p>PLZ</p>
		<input type="text" name="zip" value="<?echo $zip;?>" maxlength="5">
	</div>
	<div id="place">
		<p>Ort</p>
		<input type="text" name="city" value="<?echo $city;?>">
	</div>
</div>
<div class="userData">
	<p>Email*</p>
	<input type="text" name="email" value="<?echo $email;?>">
	<p>Benutzername*</p>
	<input type="text" name="username" value="<?echo $username;?>">
	<p>Passwort*</p>
	<input type="password" name="password" id="passwordLength" value="<?echo $password;?>">
	<div style="float:left; width:100%;" class="radio">
		<p><input type="radio" name="gender" value="m" <?if($gender == "m") { echo "checked"; }?>>&nbsp;männlich*</p>
		<p><input type="radio" name="gender" value="f" <?if($gender == "f") { echo "checked"; }?>>&nbsp;weiblich*</p>
	</div>
	<p>* = Pflichtfelder</p>
	<p>&nbsp;</p>
	<button onClick="openProfile();" class="buttonSpaceRight">SCHLIESSEN</button>
	<button id="saveProfile">SPEICHERN</button>
</div>
</form>
Was mir auch auf gefallen ist, ist das focus() im IE9 auch nicht funktioniert. Ich habe zwar diesen Workarround gefunden "setTimeout(function() { document.getElementById('myInput').focus(); }, 10);" aber das ist auch nicht das wahre.
__________________
Erfahrungen vererben sich nicht jeder muss sie allein machen.

Geändert von joextra (13-01-2012 um 12:36 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 13-01-2012, 12:53
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.721
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von joextra Beitrag anzeigen
Und ja, es wird jQuery verwendet.
Sorry, dann bin ich raus.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #11 (permalink)  
Alt 13-01-2012, 15:30
joextra
 Registrierter Benutzer
Links : Onlinestatus : joextra ist offline
Registriert seit: Jul 2005
Beiträge: 260
joextra ist zur Zeit noch ein unbeschriebenes Blatt
Standard

d.h. du kennst dich mit JQ nicht aus? Im Prinzip ist es ja aber kein Problem von JQ sondern vom IE. Ich glaube das es einen Zusammenhang mit dem
HTML-Code:
onSubmit="return false;"
im formular gibt.

Also, bin jetzt etwas weiter. Wenn ich die ganze Überprüfung in eine funktion einbette und diese dann mit den onSubmit aufrufe
HTML-Code:
onSubmit="return check()"
, funktioniert es. Das Problem hierbei ist aber, das wenn ich Return drücke die Form submittet wird, ohne Überprüfung. Irgend eine Idee wie das vermeiden kann?
__________________
Erfahrungen vererben sich nicht jeder muss sie allein machen.

Geändert von joextra (13-01-2012 um 16:33 Uhr)
Mit Zitat antworten
  #12 (permalink)  
Alt 13-01-2012, 18:34
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.721
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von joextra Beitrag anzeigen
d.h. du kennst dich mit JQ nicht aus?
Ich bin zumindest kein Profi.
Zitat:
Zitat von joextra Beitrag anzeigen
Das Problem hierbei ist aber, das wenn ich Return drücke die Form submittet wird, ohne Überprüfung. Irgend eine Idee wie das vermeiden kann?
Wenn ein onsubmit-Handler auf dem Formular liegt und selbiger ein false zurückliefert, so wird auch nichts beim Drücken der Return-Taste abgesendet. Selbst im IE9. Also muss aus irgendeinem Grund der return-Wert von check() nicht stimmen.

Gruß
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #13 (permalink)  
Alt 13-01-2012, 19:21
joextra
 Registrierter Benutzer
Links : Onlinestatus : joextra ist offline
Registriert seit: Jul 2005
Beiträge: 260
joextra ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wenn ich aber direkt auf speichern klicke, funktioniert es aber. Nur wenn ich Return klicke, scheint es als würde er onsubmit ignorieren. Ich habe spasseshalber auch noch ein alert ganz oben in der Funktion eingefügt. Wenigstens dieser müsste aufgerufen werden.
__________________
Erfahrungen vererben sich nicht jeder muss sie allein machen.
Mit Zitat antworten
  #14 (permalink)  
Alt 13-01-2012, 19:26
joextra
 Registrierter Benutzer
Links : Onlinestatus : joextra ist offline
Registriert seit: Jul 2005
Beiträge: 260
joextra ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ok, Problem erkannt. Man sollte in JQ eine Funktion nicht innerhalb von
$(document).ready(function() {
einfügen, sonst klappt es nicht. Jetzt scheint es jedenfalls zu funktionieren. Auch der focus() wird jetzt gesetzt.
__________________
Erfahrungen vererben sich nicht jeder muss sie allein machen.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
doppelte einträge verhindern Putschi PHP Developer Forum 11 19-11-2006 21:33
doppelte einträge deathwarrant SQL / Datenbanken 5 07-03-2005 00:05
Doppelte Einträge Benji SQL / Datenbanken 5 01-12-2004 13:43
doppelte einträge phowe SQL / Datenbanken 7 08-07-2004 18:56
Doppelte Einträge vermeiden archie PHP Developer Forum 2 25-03-2002 20:15

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:09 Uhr.