helmuthelmut2000
Goto Top

Mit PHP Formular in DB schreiben funktioniert nicht

Hallo,

Ich habe ein Problem mit mienem ersten Formular wo ich Daten in eine
MySql DB schreiben will, kann mir da jemand helfen?

Wenn ich das Formular abschicke dann werden die Felder wieder leer gemacht
und es wird nichts in die DB geschrieben.
Weis jemand warum??

<html>
<head>
<?php
   if  (isset($gesendet))
   {
  mysql_connect();
  mysql_select_db("firma");  
  
  $sqlab  = "insert personen";  
  $sqlab .= "(name, vorname, personalnummer,";  
  $sqlab .= " gehalt, geburtstag) values ";  
  $sqlab .= "('$na', '$vn', $pn, $ge, '$gt')";  
    
  mysql_query($sqlab);
  
  $num = mysql_affected_rows();
  if ($num>0)
     echo "Es wurde 1 Datensatz hinzugef&uuml;gt<p>";  
  else
  {
     echo "Es ist ein Fehler aufgetreten, ";  
     echo "es wurde kein Datensatz hinzugef&uuml;gt<p>";  
   }
 }
?>
</head>
<body>
Geben Sie einen vollst&auml;ndigen Datensatz ein und senden Sie das formular ab:
<form action = "ud13.php" method = "post">  
    <input name="na"> Name<p>  
    <input name="vn"> Vorname<p>  
    <input name="pn"> Personalnummer  
           (eine ganze Zahl)<p>
    <input name="ge"> Gehalt  (Nachkommastellen  
           mit Punkt) <p>
    <input name="gt"> Geburtsdatum (in der  
           Form JJJJ-MM-TT)<p>
    <input type="submit" name="gesendet">  
    <input type="reset">  
</form>
Alle Datens&auml;tze <a href="ud07.php">anzeigen</a>  
</body>
</html>

Wenn mir da jemand den Fehler finden würde wäre ich sehr Dankbar.

Gruß
Helmut

Content-Key: 36421

Url: https://administrator.de/contentid/36421

Printed on: April 24, 2024 at 09:04 o'clock

Member: Dani
Dani Jul 20, 2006 at 18:21:04 (UTC)
Goto Top
Hi,
probier es mal so:
<html>
<head>
<?php

define ('MYSQL_HOST','localhost');  
define ('MYSQL_USER','BENUTZER');  
define ('MYSQL_PASS','PASSWORT');  
define ('MYSQL_DATABASE','DATENBANK');  

$db_link=mysql_connect(MYSQL_HOST,MYSQL_USER,MYSQL_PASS);
$select=mysql_select_db(MYSQL_DATABASE);

if (isset($gesendet))
{

$sql="INSERT INTO personen (name, vorname, personalnummer, gehalt, geburtstag)  
		  VALUES (NULL , '".$_POST['na']."', '".$_POST['vn']."', '".$_POST['pn']."', '".$_POST['ge']."', '".$_POST['gt']."');";  
mysql_query($sql);

$num = mysql_affected_rows();
if ($num > 0)
echo "Es wurde 1 Datensatz hinzugef&uuml;gt<p>";  
else
{
echo "Es ist ein Fehler aufgetreten, ";  
echo "es wurde kein Datensatz hinzugef&uuml;gt<p>";  
}
}
?>
</head>
<body>
Geben Sie einen vollst&auml;ndigen Datensatz ein und senden Sie das formular ab:
<form action = "ud13.php" method = "post">  
<input name="na"> Name<p>  
<input name="vn"> Vorname<p>  
<input name="pn"> Personalnummer  
(eine ganze Zahl)<p>
<input name="ge"> Gehalt (Nachkommastellen  
mit Punkt) <p>
<input name="gt"> Geburtsdatum (in der  
Form JJJJ-MM-TT)<p>
<input type="submit" name="gesendet">  
<input type="reset">  
</form>
Alle Datens&auml;tze <a href="ud07.php">anzeigen</a>  
</body>
</html>

Gruß
Dani
Member: helmuthelmut2000
helmuthelmut2000 Jul 20, 2006 at 20:35:34 (UTC)
Goto Top
Hallo,

Erstmal danke für die schnelle Antwort.
Aber das funktioniert leider auch nicht.
Also wenn ich Daten ins Formular eingebe,
und dann auf Anfrage senden gehe dann löscht
es nur meine Daten wieder raus und nichts wird in die
DB geschrieben,
Es gibt auch keine Fehlermeldung.

Woran könnte das noch liegen??

Danke.

Gruß
Helmut
Member: Dani
Dani Jul 20, 2006 at 20:41:35 (UTC)
Goto Top
Hi,
du solltest erst mal ganz oben deine Daten angeben für den MySQL Server. Danach vergewissern, dass es die Datenbank gibt. Daraufhin überprüfen, ob die Tabelle mit genau den angegebenen Spalten vorhanden ist!


Gruß
Dani
Member: helmuthelmut2000
helmuthelmut2000 Jul 20, 2006 at 20:47:37 (UTC)
Goto Top
Hallo,

Ja klar das hab ich gemacht,
Ich habe den Benutzername und das Passwort geändert.
Ich habe die dB gelöscht und auch neu angelegt und mit
<a href="ud07.php">  
anzeigen, kann ich auf die DB zugreifen.
ud07.php sieht so aus:

<html>
<body>
<?php
  mysql_connect();
  mysql_select_db("firma");  
  $res = mysql_query("select * from personen");  
  $num = mysql_num_rows($res);
  
  //Tabellenbeginn
  echo "<table border>";  
  
  //Ueberschrift
  echo "<tr><td>Lfd.  
Nr.</td><td>Name</td>";  
  echo "<td>Vorname</td>  
        <td>Personal-
nummer</td>";  
  echo "<td>Gehalt</td> <td>Geburtstag</td> </tr>";  
  
  $lf = 1;
  
  while ($dsatz = mysql_fetch_assoc($res))
  {
     echo "<tr>";  
     echo "<td>$lf</td>";  
     echo "<td>" . $dsatz["name"] . "</td>";  
     echo "<td>" . $dsatz["vorname"] . "</td>";  
     echo "<td>" . $dsatz["personalnummer"] . "</td>";  
     echo "<td>" . $dsatz["gehalt"] . "</td>";  
     echo "<td>" . $dsatz["geburtstag"] . "</td>";  
     echo "</tr>";  
     $lf = + 1;
  }            
  //Tabellenende
  echo "</table>";  
?>
</body>
</html>

Gruß
Helmut
Member: Dani
Dani Jul 20, 2006 at 20:51:17 (UTC)
Goto Top
Hi,
probier wirklich mal meins. Ich habe es grad probiert! => Es geht.


Gruß
Dani
Member: helmuthelmut2000
helmuthelmut2000 Jul 20, 2006 at 21:04:41 (UTC)
Goto Top
Hallo,

Hab ich schon, aber geht nicht.
Habe ich da ein fehler in der DB?

Gruß
Helmut

P.S. Oder liegt es an verschiedene versionen.
Ich mach das mit PHP5 und Mysql 5

Mit welchen Versionen hast du das Probiert?
Member: helmuthelmut2000
helmuthelmut2000 Jul 21, 2006 at 19:46:35 (UTC)
Goto Top
Hallo,

Jetzt hab ich das mal mit MySql4.1 versucht da geht es auch nicht.
Da gibt es doch einen Befehl den man mit reinschreibt, wo man dann
sieht in welcher Zeile der Fehler ist.
Weis den vielleicht jemand?


Gruß
Helmut
Member: Xaero1982
Xaero1982 Jul 21, 2006 at 22:12:40 (UTC)
Goto Top
Lad dir mal den MySQL Query Browser runter.
Starte die MySQL Konsole und zeig mal den dump. Also die sicherung wie deine dp aussieht.
Member: helmuthelmut2000
helmuthelmut2000 Jul 22, 2006 at 08:03:01 (UTC)
Goto Top
Hallo,

Ich habe das PHPMyadmin installiert geht das da auch?

Ich habe schon in der DB nur mit zwei Spalten das probiert,
also nur mit Name und Vorname. Das geht auch nicht.
Mich wunder nur das ich die Daten aus der DB lesen kann wenn
ich die mit PHPMyadmin reinschreibe.
Liegt es vielleicht an den Berechtigungen?
Ich habe aber alle Hacken drin also volle berechtigung.

Gruß
Helmut
Member: Dani
Dani Jul 22, 2006 at 09:13:50 (UTC)
Goto Top
Hi,
sry, ich hab dir den falschen Code gepostet! face-wink
Der hier geht:
<html>
<head>
<?php

define ('MYSQL_HOST','localhost');  
define ('MYSQL_USER','root');  
define ('MYSQL_PASS','test');  
define ('MYSQL_DATABASE','helmut');  

$db_link=mysql_connect(MYSQL_HOST,MYSQL_USER,MYSQL_PASS);
$select=mysql_select_db(MYSQL_DATABASE);

if (isset($_POST['gesendet']))  
{

$sql="INSERT INTO personen (id, name, vorname, personalnummer, gehalt, geburtstag)  
          VALUES (NULL , '".$_POST['na']."', '".$_POST['vn']."', '".$_POST['pn']."', '".$_POST['ge']."', '".$_POST['gt']."');";  
mysql_query($sql);

$num = mysql_affected_rows();
if ($num > 0)
echo "Es wurde 1 Datensatz hinzugef&uuml;gt<p>";  
else
{
echo "Es ist ein Fehler aufgetreten, ";  
echo "es wurde kein Datensatz hinzugef&uuml;gt<p>";  
}
}
?>
</head>
<body>
Geben Sie einen vollst&auml;ndigen Datensatz ein und senden Sie das formular ab:
<form action = "<? echo $PHP_SELF; ?>" method = "post">  
<input name="na"> Name<p>  
<input name="vn"> Vorname<p>  
<input name="pn"> Personalnummer  
(eine ganze Zahl)<p>
<input name="ge"> Gehalt (Nachkommastellen  
mit Punkt) <p>
<input name="gt"> Geburtsdatum (in der  
Form JJJJ-MM-TT)<p>
<input type="submit" name="gesendet">  
<input type="reset">  
</form>
Alle Datens&auml;tze <a href="ud07.php">anzeigen</a>  
</body>
</html>

Gruß
Dani
Member: helmuthelmut2000
helmuthelmut2000 Jul 22, 2006 at 19:41:50 (UTC)
Goto Top
Hallo,

Danke,

Ich komme weiter, aber mit einer neuen Fehlermeldung:

Forbidden
You don't have permission to access /< on this server.  

Apache/2.0.55 (Win32) PHP/5.1.4 Server at localhost Port 80

Sagt dir die Fehlermeldung was?
Ich habe natürlich Passwort und DB name geänder.

Gruß
Helmut
Member: Dani
Dani Jul 22, 2006 at 21:09:26 (UTC)
Goto Top
Hi,
hört sich so an, als die Datei nicht die nötigen Rechte hat. Mach mal chmod 755 DATEINAME.


Gruß
Dani
Member: helmuthelmut2000
helmuthelmut2000 Jul 23, 2006 at 10:37:53 (UTC)
Goto Top
Hallo,

Jetzt bekomme ich die Fehlermeldung:

Es ist ein Fehler aufgetreten, es wurde kein Datensatz hinzugefügt


Gibt es das noch???

Gruß
Helmut
Member: helmuthelmut2000
helmuthelmut2000 Jul 23, 2006 at 11:31:00 (UTC)
Goto Top
Hallo,

Jetzt hab ich noch folgendes Probiert.

Ich habe den Befehl
if (mysql_errno()) die ("MySQL-Error:" . mysql_error());  

nach der Zeile
mysql_query($sql);

eingefügt.

Jetzt bekomme ich die Fehlermeldung:

MySQL-Error:Unknown column 'id' in 'field list'  

Ist das richtig so??

Gruß
Helmut
Member: helmuthelmut2000
helmuthelmut2000 Jul 23, 2006 at 11:57:24 (UTC)
Goto Top
Hallo,,,,


Ich habs es funtzt.


Ich habe in der Zeile
personen (id, name, vorname...    das id entfernt,

und in der Zeile
VALUES (NULL , '".$_POST[....     das NULL  entfernt.  

Dann gehts.

Aber ist das richtig?
Was bedeutet das id und NULL braucht man das?
Muß ich da eine Spalte dafür hinzufügen?

Gruß
Helmut
Member: Xaero1982
Xaero1982 Jul 23, 2006 at 12:20:52 (UTC)
Goto Top
Also aus deinem Eingangspost lese ich, dass du schon mit DB gearbeitet hast.

Kommt mir nicht so vor :/

Du solltest schon wissen wie deine Tabelle "personen" aufgebaut ist. Ob du da nen PKey hast und wie der heißt und welchen Typ dieser hat. Vielleicht ne PersonenId die du manuell eingibst oder eine Fortlaufende .. DAS musst du wissen, deswegen bat ich dich uns mal deine Tabelle zu posten.

bzw. aus dem Post konnt ich das lesen: Mit einem PHP-Formular in eine MSSQL-DB schreiben
Member: helmuthelmut2000
helmuthelmut2000 Jul 23, 2006 at 17:48:53 (UTC)
Goto Top
Hallo,

Ja alles klar,
Jetzt weis ichs.
Ich habe immer nur mit MSSQL2000 gearbeitet.
PHPmyadmin ist total neu für mich,
aber wo du das jetzt schreibst leuchtet mirs ein.

Danke nochmal für alles.

Gruß
Helmut
Member: Xaero1982
Xaero1982 Jul 23, 2006 at 17:52:07 (UTC)
Goto Top
Fein fein .. auch wenn du noch nicht auf meine Bitte eingegangen bist.