andyah
Goto Top

PHP-Script von JavaScript aus starten

Hi NG,

wie kann ich ein PHP-Script starten, nachdem die Formularprüfung per JavaScript (über SUBMIT-Button) abgeschlossen ist?

Das PHP-Script dient zu Speicherung der Formulardaten in eine Datenbank.

Gruß
Andy

Content-Key: 203494

Url: https://administrator.de/contentid/203494

Printed on: April 19, 2024 at 15:04 o'clock

Member: nxclass
nxclass Mar 18, 2013 updated at 12:23:44 (UTC)
Goto Top
normal wird mit dem Attribute action festgelegt wohin der Browser die Daten senden soll
<form action="speichern.php">  
...
</form>

Formularprüfung per JavaScript (über SUBMIT-Button)
dieses JS müsste dann true zurück liefern - dann sollte das Formular gesendet werden - oder manuell mit form.submit().


... natürlich kannst Du auch mit Javascipt die Formularfelder auslesen und per ajax call an den Server senden.
Mitglied: 110135
110135 Mar 18, 2013 at 12:22:28 (UTC)
Goto Top
Hallo,

ich denke du solltest dir ersteinmal diverse Tutorials zum Thema PHP, Formulare, HTML, MySQL, etc durchlesen.

In der Fomular-Datei hast du (hoffentlich) folgenden Code:
<form name="Formular_Name" method="POST" action="fomular.php">  

Nun verarbeitest du in der fomular.php deine Daten.

Tutorials zu dem Thema:
http://php.net/manual/de/tutorial.forms.php
http://php-einfach.de/php-tutorial/php-tutorial.php
http://www.schattenbaum.net/php/anfang.php
Member: AndyAh
AndyAh Mar 19, 2013 at 06:36:12 (UTC)
Goto Top
Hi,

ich habe es mit return(true) und form.submit() versucht. Siehe Code:

function check()
{

if (eingabe.vorname.value == "")
{
alert("Bitte richtige Eingabe");
eingabe.vorname.focus();
return(false);
}

if (eingabe.nachname.value == "")
{
alert("Bitte richtige Eingabe");
eingabe.nachname.focus();
return(false);
}
if (eingabe.strasse.value =="")
{
alert("Bitte richtige Eingabe");
eingabe.strasse.focus();
return(false);
}
if(eingabe.plz.value =="")
{
alert("Bitte richtige Eingabe");
eingabe.plz.focus();
return(false);
}
if(eingabe._ort.value =="")
{
alert("Bitte richtige Eingabe");
eingabe._ort.focus();
return(false);
}
if(eingabe.email.value == "")
{
alert("Bitte richtige Eingabe");
eingabe.email.focus();
return(false);
}

return(true);


}

Der Focus wird zwar kurz gesetzt, aber es wird sofort wieder in das PHP-Script gesprungen.

Wo liegt der Fehler?

Gruß
Andy
Mitglied: 110135
110135 Mar 19, 2013 at 07:31:44 (UTC)
Goto Top
Hallo,

ich weiß nicht, ob du es nicht verstehen kannst oder nicht verstehen möchtest. Code gehört in die Code-Tags!
sprich: < code > bzw. < / code > (ohne Leerzeichen!)

Nun zu deinem Problem - da mal wieder nur die Hälfte des Codes eingereicht wurde kann man viel raten:

Angenommen du hast folgenden HTML-Code:
<div id="invalid"></div>  
<form name="form" method="post" action='URL_ZUR_PHP_FILE'>  
   <input type="text" id="vorname" name="vorname"  size="30" value="" />  
</form>

Mit Sicherheit hast du einen Submit-Button. Den müsstest / könntest du folgendermaßen umbauen:
<input type="button" value="Benutzer anlegen" onclick="this.blur();validate(this.form)" />  
Hier siehst du, dass wir keinen Submit-Button nutzen, sondern einen ganz normalen Button. Dieser führt nach dem Klick die Funktion validate() aus. Ihr wird die Objekt-Referenz this.form übergeben, damit die aufgerufene Funktion mit dem Fomular arbeiten kann.

Der JS-Code könnte so aussehen:
// Deklaration unserer Variablen
var fokus;
var valid;

// Funktion zur Überprüfung auf Kriterien. 
function validatefield(form,fieldname,description,length) {
	        if(form[fieldname].value.length<length) {
	                text+='<br/>- '+description+': '+length+' Zeichen';  
	                if(valid){
	                	fokus=form[fieldname];
	                }
	                valid=false;
	        }
	}

function validate(form){
  valid =true;
  text="Folgende Felder m&uuml;ssen noch ausgef&uuml;llt werden:<br/>";  
  validatefield(form,'vorname','Vorname',2);  
  validatefield(form,'nachname','Nachname',2);  
  if (valid) 
  {
	form.submit();
  }
  else 
  {
  	document.getElementById('invalid').innerHTML=text+'<br/>';  
  	fokus.focus()
  	scroll(0,0);
  }

}

Wenn du nun auf den Button klickst, wird die Javascript-Funktion validate() aufgerufen. In ihr wurden die Felder defeniert, die überprüft werden sollen. Hier erfolgt der Aufruf der Funktion validatefield mit den Parametern. Wenn diese Überprüfung negativ verläuft, sprich das Feld nicht ausgefüllt oder die Mindestlänge der Zeichen nicht erreicht wurde, dann wird die Variable valid auf FALSE gesetzt. Nach der Funktion validatefield wird in der Funktion validate() weitergearbeitet. Diese prüft, ob die Variable valid WAHR ist. Sollte sie WAHR sein, dann wird das Formular mittels form.submit() abgeschickt. Sollte sie UNWAHR sein, dann wird der Text "Folgende Fehler müssen nocht ausgefüllt werden" inkl. der Feldnamen in das DIV invalid geschrieben und das Formular wird nicht abgeschickt.

Ich hoffe ich konnte dir helfen.

Gruß,
Florian.

PS: Bitte verwende Code-Tags, ansonsten wird sich das hier keiner mehr antun!
Member: nxclass
nxclass Mar 19, 2013 at 09:05:37 (UTC)
Goto Top
der Ablauf deiner JS Funktion sieht OK aus - nur das return() sieht eigenartig aus - folgende Änderung schlage ich vor:
- return(true);
+ return true;
- return(false);
+ return false;
... prüfe ob in dem FORM Element:
<form ... onsubmit="return check(this)">  
damit die Prüfung beim versuch das Form zu senden aufgerufen wird.
... und im JS:
function check( eingabe ) {
...
}
damit die Funktion auch das Form kennt in dem die Elemente Inhalte geprüft werden sollen.
Member: nxclass
nxclass Mar 19, 2013 updated at 09:10:41 (UTC)
Goto Top
btw. wenn du dem Form ein ID Attribut gegeben hast, kannst du dass auch alles sauber in JS erledigen:
document.getElementById('myform').onsubmit = function() {  

  if (this. ... {
     ...
     return false;
  }
  ...

  return true;
}

...

<form id="myform" ...  
Member: AndyAh
AndyAh Mar 19, 2013 at 09:48:51 (UTC)
Goto Top
Hi,

danke für die Hilfe. So funktioniert es.

Gruß
Andy