# Daten aus Formular in MySql Datenbank speichern



## ShOrtYk (5. August 2004)

Nabend zusammen,

seid mir bitte nicht böse, aber ich find einfach nicht das, was ich suche.
Ich hab schon mit Google die Seiten abgeklappert, hab hier im Forum gesucht, aber wenn Lösungen zu finden sind, dann sind diese schon weiter als mein Wissensstand 

Also nun aber zu meiner Frage bzw. zu meinem Problem.
Ich möcht per Formular einige Angaben in eine MySql Datenbank speichern.
Ich hab auch schon mehrere Varianten ausprobiert, da ich so weit sehr experimentierfreudig bin, aber irgendwann reichts 
Mein Problem ist, dass wenn ich z.B. per 
	
	
	



```
<form action="datei.php"
```
  die Variablen speichern möchte, er mir dauernd meldet, die wären alle undefiniert.
Wenn ich das ganze unten an die Formulardatei anhänge, passiert gar nix.
Die Datenbankverbindung steht, das hab ich schon alles genau geprüft, da liegt also nicht das Problem.
Ich hab zu Beginn versucht die Formularfelder nur als 
	
	
	



```
name="variable"
```
 zu definieren.
Als das nicht ging, was ich auch schon vermutet hatte, hab ich folgendes probiert 
	
	
	



```
name="<?php echo $variable;?>"
```
  - ging auch nicht.
Ich hab im PHP Manual unter PHP und HTML nachgesehen - da steht was ganz seltsames....

Nun habe ich vorhin hier im Forum die Sachen mit
$variable=$HTTP_POST_VARS.... gelesen.
Was muss den dort im Formularfeld angegeben werden?

Ich blick mittlerweile vor lauter möglichen Lösung nimmer durch.
Achja... ich test das ganze aufm lokalen Apache 2.0.50 mit PHP 4.3.8
und MySql 4.0.20 

Ich hoffe den Wald vor lauter Bäumen nicht zu sehen 
und dass es nicht allzu kompliziert ist, die Sache umzusetzen.

PS: Die Tutorials hier sind wirklich genial  *daumenhoch*

Danke im Voraus

***
Kleine Ergänzung - Global Registers könnte daran Schuld sein.
Wie ist das bei Webspaceanbietern?
Was haben die meisten dort eingestellt?
Da die Lösung auf sovielen Servern wie möglich laufen soll, möcht ich dies nach Möglichkeit umgehen, da falls die Einstellung falsch getroffen ist, man das ganze vergessen kann.
Ich hab mal bei meinem WebspacePaket per phpinfo nachgeschaut, konnte aber nichts von Global Registers finden.


----------



## Sven Petruschke (5. August 2004)

Und da die Tutorials so toll sind, kannst Du gleich mal dieses hier durcharbeiten: http://www.tutorials.de/tutorials15435.html
Denn dort ist alles beschrieben, was man wissen muss.

snuu


----------



## ShOrtYk (5. August 2004)

Thx - ich werds mir anschauen.


----------



## ShOrtYk (6. August 2004)

War wohl nix.
Habs so probiert und auf der Seite nach dem Formular, das die Daten in die Datenbank schreiben soll, kommen ersteinmal wieder die bekannten Fehlermeldungen von wegen undefiniert (diesmal Array).
Er erstellt zwar einen Eintrag, aber er übernimmt nicht die Werte aus dem Formular für diesen Eintrag, sondern entweder die Standard Werte oder halt leer.


----------



## Sebastianus (6. August 2004)

Wenn es nicht zu viel Code ist, poste ihn doch mal - auch, wenn es mehrere Dateien sind, die damit zu tun haben! Das Fehlerchen sollte jazu finden sein!


----------



## Sven Mintel (6. August 2004)

Wenn du in "datei.php" die HTTP_POST_VARS abfragst, musst die im Formular die Übermittlungsmethode "POST" angeben:


```
<form action="datei.php"method="post">
```

Bei den Formularfeldern gebe als *name* den Namen der Variablen an, welche du übermitteln willst(so wie im ersten Versuch)

Willst du einen bestimmten Wert übermitteln, gehört das in den *value*


```
<form action="datei.php"method="post">
<input type="text"name="deineVariable"value="deinWert">
</form>
```

in datei.php kannst du diese Variable  dann so ausgeben(oder was andres damit machen):

```
<?php
echo $_POST['deineVariable'];
//Ausgabe:deinWert
?>
```


Zum Register Globals:

Wenn das on ist, kannst du die Variable auch per

```
<?php
echo $deineVariable;
//Ausgabe:deinWert
?>
```

ansprechen....es ist jedoch empfehlenswerter, die erste Variante zu benutzen...
weil:

sie immer funktioniert, egal wie Register globals eingestellt ist
Du damit halbwegs sicher sein kannst, dass diese Variable auch da herkommt, wo sie soll, nämlich von einem per POST gesendeten Formular


----------



## ShOrtYk (6. August 2004)

Danke für die Antwort, ich werds gleich nochmal versuchen.


----------



## ShOrtYk (6. August 2004)

Vielleicht habe ich mich undeutlich ausgedrückt, aber ich möchte, dass ein Benutzer das Formular ausfüllt und die Daten dann in MySql übergeben werden.
Mit value="" wird doch ein Wert für das Feld vorbestimmt und es ist auch schon ausgefüllt wenn man es ausruft.
@fatalus: Wenn ich die Variablen mit $_POST wieder aufrufen soll, wie muss da der Befehl für die Eingabe in die Datenbank heissen?
@Sebastianus:
An dem Formular ist ja nichts falsch, das isses ja...  
Ich muss nur wissen, wie die eingegebenen Werte aus dem Formular in die MySql Datenbank kommen. Die Verbindung zur Datenbank funktioniert ja, das hab ich schon per echo Ausgabe getestet.


----------



## Sebastianus (6. August 2004)

Folgendes Schema-F:


```
if(isset($form_name))
     {
     mysql_query("INSERT INTO tabelle (name) VALUES ('".$_POST['form_name']."')");
     }
     else
     {
     echo "<form action=\"$_SERVER[PHP_SELF]\" method=\"POST\">";
     echo "<input type=\"text\" name=\"form_name\">";     
     echo "<input type=\"submit\" name=\"form_submit\" value=\"abschicken\"></form>";
     }
```

So, jetzt haste nen Beispiel wie man Daten in die DB bekommt - mehr wolltest du ja anscheinend nicht ODer noch Fragen?


----------



## ShOrtYk (6. August 2004)

Ja eine Frage hätt ich da spontan noch....
würde es das ganze einfacher machen, wenn ich das Formular PHP mäßig aufbaue?
also etwa so

```
echo "<form action=\"modules.php\" method=\"POST\">" 
    ."<input type=\"text\" name=\"titel\" size=\"30\" maxlength=\"50\"><br><br>"
```
würde es dann einfacher werden, die Werte der Felder zu übergeben?


----------



## shutdown (6. August 2004)

nein  

Ist nur ein schöner Schreibmehraufwand und hat überhaupt keinen Nutzen


----------



## Sven Petruschke (7. August 2004)

Man kann auch eine Anweisung über mehrere Zeilen verteilen, hauptsache das Semikolon kommt an der richtigen Stelle 

```
echo "<form action=\"modules.php\" method=\"POST\">
      <input type=\"text\" name=\"titel\" size=\"30\" maxlength=\"50\">
      <br><br>";
```

snuu


----------



## ShOrtYk (7. August 2004)

Also... 
ich fang jetzt nochmal bei 0 an und dann schau ich mal...
vielleicht war ja wirklich nur irgendwo ein kleiner Fehler drin.
Wenn es danach noch immer nicht geht, poste ich euch mal den Quellcode vom Formular, von PHP File und n Überblick über die Tabellenstruktur.

Danke erstmal
ShOrtYk


----------



## ShOrtYk (7. August 2004)

So....
da geht gar nix, das ist so krass  
Hab jetzt nur mal ein Formular mit einem input feld erstellt und da gehts schon nicht. 
Schaut euch das bitte mal an.

Quellcode formular.html

```
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form method="POST" action="submit2.php">
Testfeld:<input type="text" name="vname" id="vname">
<input type="submit" value="Abschicken">
</form>
</body>
</html>
```

Quellcode submit2.php

```
<script language="php">
include('mysql.php');

$vname = $HTTP_POST_VARS["vname"];

mysql_query("INSERT INTO spieler VALUE('$vname')");
</script>
```
Hab mit Script Language eingebunden, da der Dreamweaver meine bloßen <? ?> nicht so schön markiert  

Meine Tabelle in der Datenbank heisst spieler und beinhaltet vname als varchar(25).

Hoffe jetzt mal schwer, dass irgendwo ein Fehler ist *hoff*


----------



## shutdown (7. August 2004)

Also meines Wissens muss das so heißen

:
	
	
	



```
mysql_query("INSERT INTO spieler  (spaltenname)  VALUES ('$vname')");
```
 ] 


Und zum übernehmen reicht auch: $vname = $_POST[wasauchimmer];


----------



## ShOrtYk (7. August 2004)

Ich könnt dich knutschen  
Hatte da zwar auch noch das Verbinden zur DB vergessen aber mit deinen Ergänzungen funktioniert es jetzt !
Danke!


----------



## Chaosengel_Gabriel (20. April 2008)

Ich hab nen ähnliches Problem beim übergeben von Formlardaten...
Variablen richtig angesprochen garantiert ^^
Aber es geht umfolgendes:
In dem Formular soll die Reihenfolge von Links fürn navi festgelegt werden...
Also gibt es einen maximal 2stelligen numerischen Wert mit dem name="Folge"...
Dazu wird type="hidden" die ID des Links mit geliefert mit dem name="ID"...
Soweit eigentlich simpel...
Aber wie stelle cih das jetzt an, dass er hinterher für jeden Link, also für jede ID, die entsprechende Folgenummer einträgt?

Nen einzellnen WErt, also nur die ID würde ich mti foreach durchlaufen, aber ich bruach ja 2 WErte...

Pls helft, ich steh aufm Schlauch ^^


----------



## Sven Mintel (20. April 2008)

Wie wäre es, wenn du nur 1Feld verwendest, und die ID im Namen des Feldes hinterlegst, so behältst du den direkten Bezug zwischen Link-ID und Link-Position:

```
<input name="linkposition[$linkid]" value="hierDiePositionDesLinkesHinein">
```
....
	
	
	



```
foreach($_POST['linkposition'] as $k =>$v)
  {
    mysql_query('UPDATE tabelle SET linkposition='.$v.' WHERE linkid='.$k)
  }
```


----------



## Chaosengel_Gabriel (20. April 2008)

Ok ^^
Auf die Idee kam ich nicht...
Vielen Dank, ich probier das mal sofort ^^
Für wieviel Infos kann man das so anwenden!? ^^

[EDIT]

In diesem speziellen Fall funktioniert es


----------



## Sven Mintel (23. April 2008)

Chaosengel_Gabriel hat gesagt.:


> Für wieviel Infos kann man das so anwenden!? ^^



Für soviele, wie du benötigst, bei POST gibt es ja kein Limit an sendbarer Datenmenge


----------

