# Eingabeformular an MYSQL Datenbank schicken



## Memfis (7. Juli 2003)

Hallo.

Ich habe da ein kleines Problem. Es geht darum, dass ich ein kleines Gästebuch / Newsscript (ist vom Codeaufbau ja fast das gleiche) machen will.
Ich habe es bereits geschft ein paar Einträge in die Datenbank zu schreiben, allerdings nur mit dem direkten Befehl und nicht per Eingabeformular.

Der Einfachheit kopiere ich eben mal den bisher erstellten Quellcode hier herrein:

Datei: eintragen.php


```
<?php

include ("define.php");
include ("mysql_connect.php");

if ($action == "add")
{ 
}

//MYSQL_QUERY("INSERT INTO test (POSTER,TITLE,NEWS) VALUES ('Memfis','Wieder ein Test','Jetzt muss es noch 
//per Formular funktionoeren, dann habe ich es geschafft')");


else
{

?>

<html>
<head>
<title> Gästebuch auf MSQL Basis </title>
</head>

<body>
<p align="center">
<form action="eintragen.php?action=add" method="post">
<table border="2">
<tr>
<td>Name: </td><td><input type="text" name="POSTER"></td>
</tr>
<tr>
<td>Title: <td><input type="text" name="TITLE"></td></td>
</tr>
<tr>
<td colspan="2">Eintrag </td>
</tr>
<tr>
<td colspan="2"><textarea cols="30" rows="7" name="NEWS"></textarea></td>
</tr>
<tr>
<td><input type=submit name="ok" value="ok"></td>
<td align="right"><input type="reset" value="nochmal neu"></td>
</tr>
</table>
</form>
</p>
<?php
}
?>
```

Dann habe ich auch noch das Problem, dass die News etwas unschön angezeigt werden, nämlich so: 


> Memfis > Vierte News > Jetzt muss es noch per Formular funktionoeren, dann habe ich es geschafft



Erstens nerven die ">" und zweitens habe ich versucht bei der Ausgabe das ganze ein wenig zu ordnen, aber auch das ging nicht, den sobald ich folgenden Code bei der Ausgabe  "auseinderreise" bekomme ich Fehler über Fehler:


```
echo($row['POSTER']." &gt; ".$row['TITLE']." &gt; ".$row['NEWS']."<br />\n");
```

Wie kann man das jetzt ordentlich (zum in einer Tabelle) auflisten ?

Gruß Memfis


----------



## Tim C. (7. Juli 2003)

In die Tabelle schreibst du die Variablen aus dem $_POST Array. In deinem Fall sind das

$_POST['POSTER']
$_POST['TITLE']
$_POST['NEWS']

Damit das ganze aus der textarea auch schön formatiert wird und bei wiederausgeben auch korrekt angezeigt wird baust du noch nl2br ein und kommst dann zu einem Code der ca so aussieht wie hier der:

```
if($_REQUEST['action'] == "add"){ //REQUEST oder GET Array verwenden. siehe register_globals Problematik seit PHP 4.2.0
 $news = nl2br($_POST['NEWS']);
 $query = "INSERT INTO test (POSTER,TITLE,NEWS) VALUES ('$_POST[POSTER]','$_POST[TITLE]','$news')";
 mysql_query($query); // Natürlich vorher noch DB-Connection herstellen.
}
```
So das sollte es sein.

Bei der Ausgabe der Daten aus der Datenbank musst du halt nur die entsprechenden while Schleifen bauen um das ganze aus der DB auszulesen und dann kannst du, wie du das auch schon gemacht hast mit $row['_spaltenname_'] auf die Werte zugreifen.


----------



## Memfis (7. Juli 2003)

Danke dir, aber leider ist die Sache jetzt auch nicht perfekt. Wenn ich das Forumlar über die Datei "eintragen.php" aurufe kommt das


> Sie wurden erfolgreich an der Datenbank angemeldet.
> Notice: Undefined index: action in C:\Inetpub\wwwroot\php_test\newsscript\eintragen.php on line 7



Wenn ich die Datei so aufrufe: eintragen.php?action=add

kommt das:


> Sie wurden erfolgreich an der Datenbank angemeldet.
> 
> Notice: Undefined index: NEWS in C:\Inetpub\wwwroot\php_test\newsscript\eintragen.php on line 9
> 
> ...



Erst wenn ich einmal auf "OK" klicke sieht die Seie richtig aus. An er URL oben ändert sich allerdings nichts.


----------



## Tim C. (7. Juli 2003)

Du musst ja auch erstmal was eintragen in das Formular und kannst nich sofort über Add aufrufen.

Ausserdem ist der Check auf action==add dämlich, da du nur dahin weiterleitest. Überprüfe doch lieber ob

```
$_REQUEST['ok'] == "ok";
```
ist, was nur eintritt, wenn du den submit Button gedrückt hast.


----------



## Memfis (7. Juli 2003)

Jetzt kapier ich überhaupt nichts mher (und es geht auch irgendwie nichts mher. 
Ich will doch nur über ein Eingabeforular die Daten in die Datenbank bekommen und von dort wieder auslesen und das ohne dass der Besucher meiner Seite gleich ne Fehlermeldung auf´s Auge gedrückt bekommt.


----------



## Memfis (8. Juli 2003)

Kann mir jemannd n simples Beispielscript schreiben, wie ich Daten aus Forluaren in eine MYSQL Datenabk eintrage ?


----------



## Sven Petruschke (8. Juli 2003)

Hallo, wie Du Formulardaten überträgst, 
solltest Du schon wissen. Die übermittelten 
Daten trägst Du dann in die UPDATE-SQL-Anweisung ein.
Als Beispiel für das Ändern und Wiederauslesen 
von Datenbankinhalten, sollte Dir der letzte 
Beitrag dieses Themas dienen: 
http://www.tutorials.de/forum/showthread.php?threadid=75743

mfg, snuu


----------



## Caliterra (4. Oktober 2003)

Ich verwende die einfache Ausführung zur Übermittlung.


```
if ($gesendet)
   {
      include("./conf.inc.php"); //einbinden der zugriffsdaten
      
      $db = mysql_connect("$host","$user","$pass");

      $sqlab = "insert $table";
      $sqlab .= "(link_thumb, link, beschreibung) values ";
      $sqlab .= "('./thumb/$lt', './wallpapers/$lw', '$be')";

      mysql_db_query("$database", $sqlab);

      $num = mysql_affected_rows();
      if ($num>0)
         echo "Es wurde 1 Datensatz hinzugefügt<p>";
      else
      {
         echo "Es ist ein Fehler aufgetreten, ";
         echo "es wurde kein Datensatz hinzugefügt<p>";
      }
      mysql_close($db);
   }
```

Vielleicht hilfts ja weiter. 

Caliterra


----------

