[solved] Php/mysql

Moin zusammen!

Ich bin dabei mich etwas weiter in die PHP/MYSQL Materie einzuarbeiten.

Nun hab ich ein wenig mit einem Beispiel von
http://www.galileocomputing.de/openbook/php4/kapf.htm#t25
herumexperimientiert.

Aber: ES FUNKTIONIERT NICHT! :P

PHP:
<?php
   if ($gesendet)
   {
      $db = mysql_connect();

      $sqlab = "insert personen";
      $sqlab .= "(name, vorname, personalnummer,";
      $sqlab .= " gehalt, geburtstag) values ";
      $sqlab .= "('$na', '$vn', $pn, $ge, '$gt')";

      mysql_db_query("firma", $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);
   }
?>
</head>

<body>
Geben Sie einen vollständigen Datensatz ein und senden Sie das 
Formular ab:
<form action = "tmp.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ätze <a href="uf07.php">anzeigen</a>
</body>
</html>

Innerhalb des Programmes wird zunächst festgestellt, ob es sich um den ersten Aufruf handelt oder um eine weitere Eingabe. Dazu wird dem Absende-Button ein Name gegeben (hier: gesendet). Als Folge dieser Namensgebung existiert ab dem zweiten Aufruf des Programmes die Variable $gesendet. Zu Beginn des Programmes wird mit Hilfe der Abfrage if ($gesendet) festgestellt, ob die Variable $gesendet existiert:.

Irgendwie scheint's bereits an der Stelle zu hängen!
Ich werd' Wahnsinnig! 8o

Ein
PHP:
<?php
   if ($gesendet)
   {  echo "YO"; } ?>
gibt auch nichts aus, egal wie oft ich auf den Senden-Button hämmere.

Hilfe!

Rein theoretisch müsste doch AUF JEDENFALL eine der beiden oberen Fehlermeldungen erscheinen, wenn ich einfach nur auf Absenden klicke, oder nicht?
 
register_globals on heist das zauberwort

schau mal hier dich in der thread suche um vor paar tagen hatte einer genau das selbe problem :)
 
Dein Server hat vermutlich (glücklicherweise) Register_Globals auf "aus" gestellt.
http://de.php.net/Register_Globals
Das bedeutet, du kannst übergebene Variablen nicht mit $varname sondern mit $_REQUEST['varname'] abfragen.
Änder das in deinem Konzept, dann wirst du auch in Zukunft keine Probleme kriegen.
Register_Globals wird (zum Glück) immer häufiger ausgeschaltet.
Mit aktivierten Register_Globals sehen zwar die Scripte einfacher aus, aber man reißt damit sehr (!) häufig Sicherheitslücken in Scheunentorgröße auf.
Außerdem solltest du Nutzereingaben immer erst mit mysql_escape verarbeiten, weil sonst jemand Schadcode einschleusen könnte.
http://de.php.net/manual/de/function.mysql-escape-string.php

PHP:
<?php
   if (isset($_REQUEST['gesendet']))
   {
      $db = mysql_connect();

      $sqlab = "insert personen";
      $sqlab .= "(name, vorname, personalnummer,";
      $sqlab .= " gehalt, geburtstag) values ";
      $sqlab .= "('" . mysql_escape_string($_REQUEST['na']) . "', '" . mysql_escape_string($_REQUEST['vn']) . "', " . ((int) $_REQUEST['na']) . ", " . (0 + $_REQUEST['ge']) . ", '" . mysql_escape_string($_REQUEST['gt']) . "')";

      mysql_db_query("firma", $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);
   }
?>

Probier's mal so ...

mfg, metax.

edit: Ok, mal wieder zu spät.
Entweder sollte ich schneller Tippen oder kürzere Antworten schreiben :/
 
Zurück
Oben