[MySQL] Formular an DB senden

dsNDesign

Erfahrenes Mitglied
hi,
ich hab mal wieder eine Frage ;)

ich habe folgendes Problem. Ich habe ein Formular erstellt, das Daten an eine MySQL Datenbank senden soll. Es wird auch eine Verbindung und alles aufgebaut, und es wir auch ein Eintrag in der Datenbank gemacht. Jedoch ist der Eintrag leer. In allen Feldern wird nichts angezeigt.

Hier mal die Codes:


gbook.php:
PHP:
<form name="form1" method="post" action="gb.php">
  <p>&nbsp;</p>
  <table width="236" border="1">
    <tr>
      <td width="266"><table width="41%" border="1">
          <tr> 
            <td width="37%">Name:</td>
            <td width="63%"><input name="nachname" type="text" maxlength="24" value="<?php if (isset($nachname)) {echo $nachname;}?>"</td>
          </tr>
          <tr> 
            <td>E-Mail:</td>
            <td><input name="mailadresse" type="text" maxlength="24" value="<?php if (isset($mailadresse)) {echo $mailadresse;}?>"></td>
          </tr>
          <tr> 
            <td>Nachricht: </td>
            <td><input type="text" name="textnachricht" value="<?php if (isset($textnachricht)) {echo $textnachricht;}?>"></td>
          </tr>
        </table></td>
    </tr>
    <tr>
      <td><input type="submit" name="Submit" value="Abschicken"></td>
    </tr>
  </table>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
</form>

gb.php:
PHP:
<?
include "guestbook.php";

if($res_id = @mysql_connect($mysql_host, $mysql_user, $mysql_pw))
{
   echo "Es wurde erfolgreich zur Datenbank verbunden.<br>";
}
else
{
    die('Fehler! Datenbank gibt es nicht');
}

if(@mysql_select_db($mysql_db))
{
   echo "Es wurde erfolgreich die Datenbank $mysql_db ausgewaehlt.<br>";
}
else
{
    die('Fehler! Datenbank gibt es nicht');
}
mysql_query("INSERT INTO test (nachname, mailadresse, textnachricht) VALUES('$nachname','$mailadresse','$textnachricht')");
    mysql_close(); 
?>

guestbook.php:
PHP:
<?
$mysql_user ='DB Name';
$mysql_pw = 'DB PW';
$mysql_host ='localhost';
$mysql_db = 'DB';
?>

Wo liegt mein Fehler, dass die Daten aus dem Formular nicht in die Datenbank reingeschrieben werden?

Grüße
 
Zuletzt bearbeitet:
Hi,

das liegt daran, dass deine Variablen einfach leer sind. Nimm beispielsweise statt $nachname die Superglobale $_POST['nachname'].
 
ja klar. dummer fehler von mir.
Ich hab jetzt einfach folgendes vor die query geschrieben:
$nachname = isset($_POST['nachname']) ? $_POST['nachname'] : '';

und jetzt geht es.
Danke für den Tipp.

Jetzt nur noch 1 Frage. Wie kann ich es machen, dass wenn ein Feld im Formular nicht ausgefüllt ist, dass dann ein Fehler kommt.
Also wenn jetzt zum Beispiel jemand keinen Namen eingetragen hat und er auf Abschicken geht, kommt eine Meldung, dass nicht alle Felder ausgefüllt worden sind.
Wie mach ich sowas?

Grüße
 
Sers,

für dein Problem gibts 2 Lösungungen eine hat dir Loomes bereits gezeigt. Die andere wäre die PHP Variable auto_globals auf on zu stellen (UNSICHER!).
Das macht man aber heutzutage nicht mehr.

Ich bevorzuge bei solchen Sachen immer eine redeklaration der Variablen:

PHP:
$nachname = $_POST['nachname'];
$mailadresse = $_POST['mailadresse'];
$textnachricht = $_POST['textnachricht'];

anschließend arbeite ich mti den normalen Variablen weiter. Dies hat den netten Nebeneffekt, dass wenn man eine PTB, z.B. Zend, einsetzt die Variablenverfolgung funktioniert.
 
thx. ich hab jetzt deinen Befehl genommen. Ist glaube ich besser als meine lange Lösung^^

Aber die Frage mit den leeren Feldern bleibt trotzdem.
 
ich habe mir das gerade eine Weile angeschaut und auch rumprobiert, Aber entweder es bringt nichts, oder es kommt immer ein Fehler.

Hier mal ein Versuch von mir:
PHP:
<?
include "guestbook.php";
if($res_id = @mysql_connect($mysql_host, $mysql_user, $mysql_pw))
{
   echo "Es wurde erfolgreich zur Datenbank verbunden.<br>";
}
else
{
    die('Fehler! Datenbank gibt es nicht');
}
if (empty($nachname)) {
    echo "Bitte füllen sie alle Felder aus.";
}
else(@mysql_select_db($mysql_db))
{
   echo "Es wurde erfolgreich die Datenbank $mysql_db ausgewaehlt.<br>";
}
else
{
    die('Fehler! Datenbank gibt es nicht');
}
$nachname = isset($_POST['nachname']) ? $_POST['nachname'] : '';
$mailadresse = isset($_POST['mailadresse']) ? $_POST['mailadresse'] : '';
$textnachricht = isset($_POST['textnachricht']) ? $_POST['textnachricht'] : '';
mysql_query("INSERT INTO test (nachname, mailadresse, textnachricht) VALUES('$nachname','$mailadresse','$textnachricht')");
    mysql_close(); 
?>

Hat folgende Fehlermeldung zur Folge:
Parse error: syntax error, unexpected '{' in /users/designers-place/www/RnB Code/gb.php on line 15

EDIT: Habs nun doch noch hinbekommen nach langem Veruschen.
Hier meine Lösung:
PHP:
<?
include "guestbook.php";
$nachname = $_POST['nachname'];
$mailadresse = $_POST['mailadresse'];
$textnachricht = $_POST['textnachricht'];  
  mysql_connect("localhost",
  "DB","PW");
  mysql_select_db("DB");
  
if (empty($nachname) || empty($mailadresse) || empty($textnachricht)) {
    echo "Bitte gehen Sie <a href=\"javascript:history.back();\">zur&uuml;ck</a> und f&uuml;llen Sie alle Felder aus!";
}
	else
	{
		mysql_query("INSERT INTO test (nachname, mailadresse, textnachricht) VALUES('$nachname','$mailadresse','$textnachricht')");
    mysql_close();
	echo "Vielen Dank für ihren Eintrag.";
	}
?>
 
Zuletzt bearbeitet:
Versuchs mal so:
PHP:
<?
include "guestbook.php";
if($res_id = @mysql_connect($mysql_host, $mysql_user, $mysql_pw))
{
   echo "Es wurde erfolgreich zur Datenbank verbunden.<br>";
}
else
{
    die('Fehler! Datenbank gibt es nicht');
}
if(@mysql_select_db($mysql_db))
{
   echo "Es wurde erfolgreich die Datenbank $mysql_db ausgewaehlt.<br>";
}
else
{
    die('Fehler! Datenbank gibt es nicht');
}
$nachname = isset($_POST['nachname']) ? $_POST['nachname'] : '';
$mailadresse = isset($_POST['mailadresse']) ? $_POST['mailadresse'] : '';
$textnachricht = isset($_POST['textnachricht']) ? $_POST['textnachricht'] : '';

if ( empty( $nachname ) || empty( $mailadresse ) || empty( $textnachricht ) )
{
    echo "Bitte füllen sie alle Felder aus.";
}
else
{
    mysql_query("INSERT INTO test (nachname, mailadresse, textnachricht) VALUES('$nachname','$mailadresse','$textnachricht')");
    mysql_close(); 
    echo 'Erfolgsmeldung';
}
?>
 
Habs inzwischen gerade schon hinbekommen.

Hier nochmal meine Lösung

PHP:
<?
include "guestbook.php";
$nachname = $_POST['nachname'];
$mailadresse = $_POST['mailadresse'];
$textnachricht = $_POST['textnachricht'];  
  mysql_connect("localhost",
  "DP","PW");
  mysql_select_db("DP");
  
if (empty($nachname) || empty($mailadresse) || empty($textnachricht)) {
    echo "Bitte gehen Sie <a href=\"javascript:history.back();\">zur&uuml;ck</a> und f&uuml;llen Sie alle Felder aus!";
}
	else
	{
		mysql_query("INSERT INTO test (nachname, mailadresse, textnachricht) VALUES('$nachname','$mailadresse','$textnachricht')");
    mysql_close();
	echo "Vielen Dank für ihren Eintrag.";
	}
?>

Ist ja eigentlich genau das gleiche, wie dein Vorschlag, nur habe ich jetzt das mit dem Text mit der Datenbank verbunden etc weggelassen.
Danke für deine Hilfe

Grüße
 
Zurück