• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP Funktion die von einem Button aus aufrufe geht nicht

Status
Für weitere Antworten geschlossen.

MadMax777

Neues Mitglied
Hallo liebe Leute,

ich habe folgenden PHP-Code bei mir auf die Seite gepackt.

Code:
<?php
function Freigabe_Button() {
  if  $Vorname!="" 
  and $Nachname!=""
  and $Benutzername!=""
  and $EMailadresse!="" {
    Anmelden.disabled="false"
  } else {
    Anmelden.disabled="true"
  }
  return;
} 
?>

Das ganze steht im Body-Bereich

Die Funktion wird wiefolgt aufgerufen.

Code:
<input name="Vorname" type="text" onChange="Freigabe_Button()" size="30">

Problem dabei, das ganze Funktioniert nicht, die Seite wenn ich sie aufrufe bleibt komplett leer. Was mache ich Falsch?

Danke für eure Hilfe.

mfg
Markus
 
Du rufst die JS Funktion und nicht die PHP Funktion auf!

PHP:
<?php
if (!isset($_POST["execute"])) {
 echo '<form action="datei.php" method="post">'."\n";
 echo '<input name="exectue" type="submit" value="Beschreibung" style="width:30px;">'."\n";
 echo '</form>'."\n";
} else {
function Freigabe_Button() {
  if  (!empty($Vorname) && !empty($Nachname) && !empty($Benutzername) && !empty($EMailadresse) {
   echo '<p>Die Verarbeitung</p>'."\n";
  } else {
    echo '<p>Fülle bitte alles aus</p>'."\n";
  }
  // Was denn dass? --> return;
} 
?>

__
Edit: Ups, ein
Code:
<?php
zuviel^^
 
...und Du rufst die Funktion auch nicht auf in Deinem Beispiel, CGollhardt.

onChange ist ein JavaScript Event-Handler. Das läuft alles clientseitig ab, PHP aber serverseitig. Das läuft nur, wenn Du eine Anfrage an den Serevr stellst, z.B. durch Abschicken eines Formulars oder anklicken eines Links.

Ja, Sorry, mir ist ein Leichtsinnsfehler unterlaufen. Hatte es nicht in meinem Dreamweaver gemacht, sondern im Formularfeld, und da ist es unübersichtlicher.

Hier die überarbeitete Version:

PHP:
<?php
//Funktion definieren
function Freigabe_Button() {
	if (!empty($Vorname) && !empty($Nachname) && !empty($Benutzername) && !empty($EMailadresse)) {
		echo '<p>Die Verarbeitung</p>'."\n";
	} else {
		echo '<p>Fülle bitte alles aus</p>'."\n";
	}
}
if (!isset($_POST["execute"])) {
	//Wenn Button nicht geklickt, Button ausgeben
	echo '<form action="datei.php" method="post">'."\n";
	echo '<input name="exectue" type="submit" value="Beschreibung" style="width:30px;">'."\n";
	echo '</form>'."\n";
} else {
	//Button wurde geklickt, Funktion ausführen
	Freigabe_Button();
}
?>
 
So ich hab das ganze erst mal wie folgt gemacht, so wie ich es aufgrund eurer Posts verstanden hab.

PHP:
<?php
//Funktion definieren
function Freigabe_Button() {
    if (!empty($Vorname) && !empty($Nachname) && !empty($Benutzername) && !empty($EMailadresse)) {
        echo '<p>Die Verarbeitung</p>'."\n";
    } else {
        echo 'alert("Fülle bitte alles aus.")';
    }
}

if (!isset($_POST["Anmelden"])) {
    //Wenn Button nicht geklickt, Button ausgeben
echo'<form name="form1" method="post" action="registrieren.php">'."\n";
echo'<pre>'."\n";
echo'Vorname*      <input name="Vorname" type="text" size="30">'."\n";
echo'Nachname*     <input name="Nachname" type="text" size="30">'."\n";
echo'Benutzername* <input name="Benutzername" type="text" size="30">'."\n";
echo'EMailadresse* <input name="EMailadresse" type="text" size="60">'."\n";
echo''."\n";
echo'     * Pflichtfelder'."\n";
echo ipaddr=$_SERVER["REMOTE_ADDR"];
echo''."\n";
echo'<input type="checkbox" name="checkbox" value="checkbox"> Ja ich habe die AGB''s gelesen und stimme diesen zu.'."\n";
echo''."\n";
echo'<input name="Anmelden" type="submit" disabled="false" value="Anmelden"><input name="zurueck" type="button" onClick="window.close()" value="Zur&uuml;ck">'."\n";
echo'</pre>'."\n";
echo'</form>'."\n";
} else {
    //Button wurde geklickt, Funktion ausführen
    Freigabe_Button();
}
?>

Nur leider funktioniert das ganze immer noch nicht. :(
Irgend etwas hab ich noch nicht verstanden bzw. mache es falsch.
 
Zuletzt bearbeitet:
Dein Submit Button heißt nicht execute sondern Anmelden

PHP:
if (!isset($_POST["execute"])) {
muss durch folgendes ersetzt werden
PHP:
if (!isset($_POST["Anmelden"])) {

[edit]
In einer viertel Stunde schreibe ich dir ein kurzes Script, bloß schaue gerade nen Film an
 
Dein Submit Button heißt nicht execute sondern Anmelden

PHP:
if (!isset($_POST["execute"])) {
muss durch folgendes ersetzt werden
PHP:
if (!isset($_POST["Anmelden"])) {

[edit]
In einer viertel Stunde schreibe ich dir ein kurzes Script, bloß schaue gerade nen Film an

Hab den Fehler entsprechend beseitigt. Siehe oberen Post. Es funktioniert leider immer noch nicht. Vielleicht sollte ich noch dazu sagen, dass die Seite komplett leer bleibt.
 
Also habe jetzt was geschrieben, habs aber noch nicht auf Fehler getestet!:

PHP:
<?php
//Eingaben Serverseitig Überprüfen
if (strlen($_POST['vorname']) < 4) {
	$error_style["vorname"] = "border-color:#F00F00;";
}
if (strlen($_POST['nachname']) < 4) {
	$error_style["nachname"] = "border-color:#F00F00;";
}
if (strlen($_POST['username']) < 4) {
	$error_style["username"] = "border-color:#F00F00;";
}
if (!ereg("^[_a-zA-Z0-9-](.{0,1}[_a-zA-Z0-9-])*@([a-zA-Z0-9-]{2,}.){0,}[a-zA-Z0-9-]{3,}(.[a-zA-Z]{2,4}){1,2}$",$_POST['email'])) {
	$error_style["email"] = "border-color:#F00F00;";
}
//Seitenaufbau
if (isset($_POST['anmelden']) && !isset($error_style)) {
	//Wenn Formular abgesendet und Eingaben ok
	echo '<p>Hallo '.$_POST['vorname'].' '.$_POST['nachname'].', danke für deine Registrierung!</p>'."\n";
	//Weitere Daten kannst du immer mit $_POST[] abfragen, wobei du den value aus dem Formularfeld übernehmen musst!
	//evtl in Datenbank Speichern: mysql_query ("INSERT INTO...");
} else {
	//Wenn Formular nicht abgesendet oder nicht ok
	if (isset($_POST['anmelden'])) {
		//Falls Formular nicht vollständig
		echo '<p>Bitte fülle alle Farblich makierten Pflichtfelder korrekt aus!</p>'."\n";
	}
	//Loginformular, falls bereits Felder ausgefüllt mit POST wieder eintragen
	echo '<form name="anmelden" method="post" action="registrieren.php">'."\n";
	echo '<table>'."\n";
	echo '<tr>'."\n";
	echo '<td>Vorname*</td>'."\n";
	echo '<td><input name="vorname" type="text" value="'.$_POST['vorname'].'" style="width:100px;'.$error_style["vorname"].'"></td>'."\n";
	echo '</tr>'."\n";
	echo '<tr>'."\n";
	echo '<td>Nachname*</td>'."\n";
	echo '<td><input name="nachname" type="text" value="'.$_POST['nachname'].'" style="width:100px;'.$error_style["nachname"].'"></td>'."\n";
	echo '</tr>'."\n";
	echo '<tr>'."\n";
	echo '<td>Benutzername*</td>'."\n";
	echo '<td><input name="username" type="text" value="'.$_POST['username'].'" style="width:100px;'.$error_style["username"].'"></td>'."\n";
	echo '</tr>'."\n";
	echo '<tr>'."\n";
	echo '<td>E-Mail</td>'."\n";
	echo '<td><input name="email" type="text" value="'.$_POST['email'].'" style="width:100px;'.$error_style["email"].'"></td>'."\n";
	echo '</tr>'."\n";
	echo '<tr>'."\n";
	echo '<td colspan="2"><input name="anmelden" type="submit" value="Anmelden" style="width:100px;"></td>'."\n";
	echo '</tr>'."\n";
	echo '</table>'."\n";
	echo '</form>'."\n";
}
?>

Da ich mir den Code von dir vorhin angeschaut habe, noch mal ein paar kleine Dinge:
Du solltest immer Serverseitig überprüfen, niemals mit JS
\n ist ein Zeilenvorschub im Quelltext, dagegen <br> eine neue Zeile in HTML

Hoffe das dir das jetzt ein wenig weiterhilft

[edit]
Eine PHP Funktion habe ich hier nicht verwendet, weil es nicht nötig ist! Aber hier noch mal deine andere Frage:
PHP:
//Funktion definieren
function test ($nr) {
    echo 'Das ist der '.$nr.'. Test!';
}
//Funktion aufrufen
test(13);
Ausgabe:
Code:
Das ist der 13. Test
 
Hallo CGollhardt,

dein PHP-Code funktioniert wunderbar. Vielen Dank. Ich werde den Code mal genaustens betrachten und dann für meine eigenen Zwecken noch etwas verfeiner.

Echt Klasse CGollhardt, vielen Dank nochmal.
 
Status
Für weitere Antworten geschlossen.

Neueste Beiträge

Zurück
Oben