# Form submit über JS funktioniert nicht



## Phinix (19. August 2010)

Hi,

also ich habe 2 Formulare auf dem ersten Formular(toolbar.php) ist der Submit-button, der so aussieht:


```
echo "<form method='GET'>";
	echo "<input type='image' class='img16' src='http://localhost/webapp/login pics/Obj0614.bmp' name='save' border='0'  alt='Save' /></form>";
```

Der Submit Button ist ein Teil einer Toolbar. Wenn ich diesen Button drücke, soll er auf einem anderen Formular einen Mysql-Querry senden, der dann die Informationen in die Datenbank schreibt. So weit funktioniert das auch alles.
Bloß mein Problem ist das ich keine $_POST[''] Informationen aus der Tabelle erhalte. Dieses Problem war auch schnell gefunden ich erhalte nur diese Information wenn ich ein submit des Form-tags habe.

Also wollte ich durch dieses JS den submit an den Form-Tag senden:

```
echo "<script type='text/javascript'>";
function send() {
	document.output.submit;
	}
echo "</script>";
```

Dadurch soll die Funktion aufgerufen werden, mit dem anschließenden query:


```
if(isset($_GET['save_x']) == TRUE) {
	if($path['filename'] == "TST8110_02_2") {
	
	send();
	
	$lastnameup  = (isset($_POST['lastname']));	
	$initialsup  = (isset($_POST['initials']));
	$firstnameup = (isset($_POST['firstname']));

		$updatesql ="UPDATE gbrkrs SET AC002 ='" . $lastnameup . "',
									   AC003 ='" . $initialsup . "',
									   AC005 ='" . $firstnameup . "',
									   AC012 = NOW()
									   WHERE AC000 ='" . $userid . "' AND 
AC001 ='" . $_SESSION['USERNAME'] . "';";										
		$updateresult = mysql_query($updatesql) OR DIE (mysql_error());
}
```

Und das ist die Form:


```
<form name="output" id="output" method="POST" action="TST8110_02_2.php">
```

Aber leider wird kein submit gesendet und ich weiß auch nicht voran es liegt. Suche schon den ganzen morgen nach einer Lösung dafür. Hoffe mal ihr versteht wo mein Problem liegt und könnt mir helfen. Wenn mehr Quelltext benötigt wird sagt bescheid^^

mfg Phinix


----------



## Quaese (19. August 2010)

Hi,

du hast die Klammern vergessen:

```
document.output.submit();
```
Ciao
Quaese


----------



## Phinix (20. August 2010)

Hi,

wenn ich die Klammer dort hin setze, zeigt er mir eine fehler an:

Fatal error: Call to undefined function submit() in

Was mich sehr wundert da ich es auch schon sehr oft mit diesen Klammern gesehen habe.

mfg Phinix


----------



## ush (20. August 2010)

Phinix hat gesagt.:


> Hi,
> 
> wenn ich die Klammer dort hin setze, zeigt er mir eine fehler an:
> 
> ...


 
offentsichtlich geht der Interpretor davon aus das du eine methode namens submit aufrufen moechtest.
Ich finde den Aufruf insgesamt etwas merkwürding weil document (meines Wissens) weder eine Eigenschaft noch eine Methode namens "output" hat. Von daher scheitert es (meiner Meinung nach) schon daran.


----------



## Phinix (20. August 2010)

Output ist der name der Form in dem ein submit ausgeführt werden soll.


```
<form name="output" method="POST" action="TST8110_02_2.php">
```

Und an dem namen der Form kann es auch nicht liegen, denn ich habe schon mehrere namen ausprobiert.


----------



## Quaese (20. August 2010)

Hi,

die Klammern sind definitiv richtig, da hierdurch die Funktion ausgeführt wird. Das Problem scheint woanders zu liegen - Formular existiert nicht, Name doppelt vergeben usw.

Um mehr sagen zu können, reichen die Informationen nicht aus. Gibt es das Ganze irgendwo online zu betrachten? Ansonsten den relevanten geparsten HTML-Code posten.

Wird das Formular vielleicht an einen Frame oder iFrame gesendet? Dann könnte es eventuell Probleme mit dem Zugriff über das *document*-Objekt geben, wenn es nicht auf dem richtigen Objekt verwendet wird.

Ciao
Quaese


----------



## Phinix (20. August 2010)

Hier ist der komplette Html teil des Formulars das abgesendet werden soll:


```
<html>
<font face="Arial">
<form name="output" method="POST" action="TST8110_02_2.php">
<input type="hidden" name="submit" />
<table border="0">
	<tr>
		<td><strong>Username:</strong></td>
		<td><input type="text" name="Username" value="<?php echo $username;?>" /></td>
	</tr>
	<tr>
		<td><strong>Password:</strong></td>
		<td><input type="password"  name="password1" /></td>
	</tr>
	<tr>
		<td><strong>Confirm Password:</strong></td>
		<td><input type="password"  name="password2" /></td>
	</tr>
	<tr>
		<td><strong>Last name:</strong></td>
		<td><input type="text" value="<?php echo $lastname; ?>" name="lastname" /></td>
	</tr>
	<tr>
		<td><strong>Initials:</strong></td>
		<td><input type="text" value="<?php echo $initials;?>" name="initials" /></td>
	</tr>
	<tr>
		<td><strong>First Name:</strong></td>
		<td><input type="text" value="<?php echo $firstname; ?>" name="firstname" /></td>
	</tr>
	<tr>
		<td><strong>Male/Female:</strong></td>
		<td>
		<select  name="gender">
		<?php
		$gensql = "SELECT AC008 FROM gbrkrs WHERE AC000 = '" . $userid . "'
										AND AC001 = '" . $_SESSION['USERNAME'] . "';";										
		$genres = mysql_query($gensql);
  
		while($genrow = mysql_fetch_assoc($genres)) {
		$gender = $genrow['AC008'];
		}
		?>    
		<option value='Male' <?php if($gender==1) echo 'selected="selected"'; ?>>Male</option>
		<option value= 'Female' <?php if($gender==2) echo 'selected="selected"'; ?>>Female</option>
		<option value= 'Nvt.' <?php if($gender==0) echo 'selected="selected"'; ?>>Nvt.</option>
		</select>	
		</td>
	</tr>
</table>
</form>
</font>
</html>
```

mfg Phinix


----------



## Quaese (20. August 2010)

Hi,

zum ersten ist das nicht der geparste Code. Mit den PHP-Anteilen kann der Hilfeleistende im Allgemeinen nur wenig anfangen.

Zum zweiten ist hier nicht ersichtlich von wo aus das Formular aus abgesendet werden soll, wo der Funktionsaufruf stattfindet (gleiches Dokument/anderes Dokument, gleicher Frame/anderer Frame).

Macht es den Helfenden doch nicht immer so schwer. Wenn die Suche nach dem eigentlichen Problem schon länger dauert als dessen Lösung, verliert der Hilfeleistende irgendwann die Motivation.

Ciao
Quaese


----------



## CPoly (20. August 2010)

Funktioniert folgendes?

```
function send() {
    document.getElementsByName("output")[0].submit();
}
```


----------



## Phinix (20. August 2010)

Sorry, das ich nicht direkt verstanden habe was du möchtest. Kenne mich noch nicht mit den ganzen begriffen aus.

Ich hoffe das ist jetzt der richtige code:


```
<!DOCTYPE HTML PUBLIC "-//WC3//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html14/loose.dtd">
<html>
<font face="Arial">
<form name="output" method="POST" action="TST8110_02_2.php">
<input type="hidden" name="submit" />
<table border="0">
	<tr>
		<td><strong>Username:</strong></td>
		<td><input type="text" name="Username" value="Lisa" /></td>
	</tr>
	<tr>
		<td><strong>Password:</strong></td>
		<td><input type="password"  name="password1" /></td>
	</tr>
	<tr>
		<td><strong>Confirm Password:</strong></td>
		<td><input type="password"  name="password2" /></td>
	</tr>
	<tr>
		<td><strong>Last name:</strong></td>
		<td><input type="text" value="Kleine" name="lastname" /></td>
	</tr>
	<tr>
		<td><strong>Initials:</strong></td>
		<td><input type="text" value="LK" name="initials" /></td>
	</tr>
	<tr>
		<td><strong>First Name:</strong></td>
		<td><input type="text" value="Lisa" name="firstname" /></td>
	</tr>
	<tr>
		<td><strong>Male/Female:</strong></td>
		<td>
		<select  name="gender">
		    
		<option value='Male' >Male</option>
		<option value= 'Female' selected="selected">Female</option>
		<option value= 'Nvt.' >Nvt.</option>
		</select>	
		</td>
	</tr>

</form>
</table>
</font>
</html>
```

Das ist jetzt nur der Teil der absendet werden soll.

Die funktion wird in einer If-Bedingung aufgerufen, die im selben Formular steht.


```
if(isset($_GET['save_x']) == TRUE) {
	if($path['filename'] == "TST8110_02_2") {
	
	send();
```

Der Button der die If-Bedingung auslöst ist in einem anderen Formular untergebracht, ist aber auf der selben seite implementiert. Und auch der GET-Post funktioniert ohne Probleme, denn nach dem aufruf der Funktion kommt noch ein query und eine Msg-box. Und diese Msg-Box wird auch aufgerufen. Es wird auch ein query versendet bloß halt mit leeren Feldern.

Ich hoffe mal das ist es was du an Informationen haben wolltest.

@CPoly
Funktioniert leider auch nicht dort gibt er mir sofort diesen fehler aus.

Parse error: syntax error, unexpected '[' in C:\xampp\htdocs\webapp\TST8110_02_2.php on line 10

Das ist die Zeile dann in der Funktion:


```
document.getElementsByName("output")[0].submit();
```

Phinix


----------



## Quaese (20. August 2010)

Hi,

du hast ein Formularfeld mit dem Name *submit* im Formular. Änder dessen Name und es sollte funktionieren.

Ciao
Quaese


----------



## Phinix (20. August 2010)

Habe den Namen geändert hat aber leider auch nichts gebracht. Habe die Funktion auch wieder umgeschrieben:


```
document.output.submit();
```

Und bekomme immer noch eine Fehler meldung:

Call to undefined function submit()

Und mit der anderen Funktion funktioniert es auch nicht.

mfg
Phinix


----------



## CPoly (20. August 2010)

Das liegt wohl daran, dass du versuchst per PHP auf die Elemente zuzugreifen.
Du gibst hier die Funktion garnicht aus. Es handelt sich also um eine PHP-Funktion.

```
echo "<script type='text/javascript'>";
function send() {
    document.output.submit;
    }
echo "</script>";
```

Mach mal folgendes:

```
echo "<script type='text/javascript'>";
echo "function send() {
		document.getElementsByName(\"output\")[0].submit();  
    }";
echo "</script>";
```


----------



## Phinix (20. August 2010)

Hey,

also er zeigt mir jetzt keine fehler mehr an. Danke schon mal dafür.

Rufe die Funktion jetzt so auf:


```
echo "<script type=\"text/javascript\">send();</script>";
```

Hoffe das ist so richtig, aber ich bekomme immer noch keinen Informationen über den $_POST befehl. Somit denke ich mir das immer noch kein submit gesendet wird. (Korrigiert mich bitte wenn ich da falsch liege.)
Und deswegen frage ich mich warum keiner gesendet wird auch wenn die Funktion nun richtig ist.

mfg Phinix


----------



## Sven Mintel (20. August 2010)

Moin,

poste Bitte die aktuelle HTML-Source des Dokumentes(Browser->Quelltext anzeigen)

Ohne diese zu kennen artet dies  in ein Quiz aus.


----------



## Phinix (20. August 2010)

Okay, das ist das dokument:


```
<script type='text/javascript'>function send() {
        document.getElementsByName("output")[0].submit();  
    }</script><!DOCTYPE HTML PUBLIC "-//WC3//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html14/loose.dtd">
<html>
<font face="Arial">
<form name="output" method="POST" action="TST8110_02_2.php">
<table border="0">
	<tr>
		<td><strong>Username:</strong></td>
		<td><input type="text" name="Username" value="Lisa" /></td>
	</tr>
	<tr>
		<td><strong>Password:</strong></td>
		<td><input type="password"  name="password1" /></td>
	</tr>
	<tr>
		<td><strong>Confirm Password:</strong></td>
		<td><input type="password"  name="password2" /></td>
	</tr>
	<tr>
		<td><strong>Last name:</strong></td>
		<td><input type="text" value="Kleine" name="lastname" /></td>
	</tr>
	<tr>
		<td><strong>Initials:</strong></td>
		<td><input type="text" value="LK" name="initials" /></td>
	</tr>
	<tr>
		<td><strong>First Name:</strong></td>
		<td><input type="text" value="Lisa" name="firstname" /></td>
	</tr>
	<tr>
		<td><strong>Male/Female:</strong></td>
		<td>
		<select  name="gender">
		    
		<option value='Male' >Male</option>
		<option value= 'Female' selected="selected">Female</option>
		<option value= 'Nvt.' >Nvt.</option>
		</select>	
		</td>
	</tr>
</form>
</table>
</font>
</html>
```

mfg 
Phinix


----------



## Sven Mintel (20. August 2010)

Phinix hat gesagt.:


> Rufe die Funktion jetzt so auf:
> 
> 
> ```
> ...



Der Funktionsaufruf fehlt irgendwie in der HTML-Source


----------



## Phinix (20. August 2010)

Hier ist es drin, hatte nicht das richtige genommen:


```
</html><script type='text/javascript'>function send() {
        document.getElementsByName("output")[0].submit();  
    }</script>
<script type="text/javascript">send();</script>
<script type='text/javascript'>window.alert('');</script><table height="40" width="100%" bgcolor="#C0C0C0" style="position:absolute; top:517px;"><tr><td align="center"><h2>Account successfully updated!</h2></td></tr></table><!DOCTYPE HTML PUBLIC "-//WC3//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html14/loose.dtd">
<html>
<font face="Arial">
<form name="output" method="POST" action="TST8110_02_2.php">
<table border="0">
	<tr>
		<td><strong>Username:</strong></td>
		<td><input type="text" name="Username" value="Lisa" /></td>
	</tr>
	<tr>
		<td><strong>Password:</strong></td>
		<td><input type="password"  name="password1" /></td>
	</tr>
	<tr>
		<td><strong>Confirm Password:</strong></td>
		<td><input type="password"  name="password2" /></td>
	</tr>
	<tr>
		<td><strong>Last name:</strong></td>
		<td><input type="text" value="Kleine" name="lastname" /></td>
	</tr>
	<tr>
		<td><strong>Initials:</strong></td>
		<td><input type="text" value="LK" name="initials" /></td>
	</tr>
	<tr>
		<td><strong>First Name:</strong></td>
		<td><input type="text" value="Lisa" name="firstname" /></td>
	</tr>
	<tr>
		<td><strong>Male/Female:</strong></td>
		<td>
		<select  name="gender">
		    
		<option value='Male' >Male</option>
		<option value= 'Female' selected="selected">Female</option>
		<option value= 'Nvt.' >Nvt.</option>
		</select>	
		</td>
	</tr>
</form>
</table>
</font>
</html>
```

mfg Phinix


----------



## Sven Mintel (20. August 2010)

So ein Dokument liest der Browser von oben nach unten ein.

Dort, wo du den Funktionsaufruf zu stehen hasst, kennt er das Formular noch nicht, kann es somit auch nicht senden.

Lösung: packe den Funktionsaufruf ans Ende des Dokumentes.


----------

