PHP Script funktioniert einfach nicht.

  • Hallo Zusammen,ich bin noch relativ neu im Bereich PHP,bin aber gerade dabei ein Formular zu erstellen,
    das über ein PHP Script alles in eine Datenbank einträgt.Aber ich habe 2 Probleme,die ich einfach nicht lösen kann.

    1.Beim Abruf des PHP Scripts wird immer die Notiz Undefined Index angezeigt.Ich habe ein Buch über PHP gelesen und meherere Scripte von Tutorials nachgeschrieben zum testen.Wieso wird diese Meldung immer nur bei mir angezeigt ? Ich habe die Notiz jetzt mit einem @ vor post weggemacht.

    2. Das eigentliche Problem,was ich habe,ist,dass immer wenn ich etwas in das Formular eingebe und auf absenden gehe, zwar ein neuer Datensatz in der Tabelle erscheint,dieser aber leer ist.Ich habe verschidene Scripte ausprobiert und das war bei allens so.
    Ich bin das Hmtl Script durchgegangen,ich kann keine Fehler erkennen
    ,beim PHP Script auch nicht und ausserdem ist meine MySQL Datenbank in Ordnung und die Namen stimmen überein.
    Localhost etc. läuft auch.Ich habe mysql_error() eingegeben und ein Debugging gemacht,hilft mir aber auch nicht weiter.


    Was mache ich falsch ? Ich bin extrem verzweifelt.:confused: Da ich noch Anfänger bin,bitte ich um eine für den Laien verständliche Antwort
    und Verweisungen zu irgendwelchen Lernseiten helfen mir auch nicht weiter,wenn ich nicht weiss,was ich falsch mache.


    [HTML] <form action="Script.php" method="post">
    Vorname : <input type="text" name="vorname" />
    Vorname : <input type="text" name="vorname" />
    <input type="submit" value="Senden" />
    </form>[/HTML]



    [PHP]$host= "localhost";
    $username= "username";
    $password= "password";
    $database="database";
    $table="tabelle";


    mysql_connect("$host", "$username","$password") or die(mysql_error());
    echo"Verbunden";
    mysql_select_db("$database") or die(mysql_error());
    echo"Datenbank gefunden";


    $mysql = "INSERT INTO $table (vorname,nachname) VALUES ('$_POST[vorname]','$_POST[nachname]')";


    if(!mysql_query($mysql))
    die(mysql_error()) ;


    echo"Daten eingetragen";


    mysql_close();[/PHP]
    Mit freundlichen Grüssen

  • Hallo und herzlichst willkommen im Forum :)


    Eine Notice zeigt eine nicht gesetzte Variable an, in deinem Fall wohl $_POST. Nach dem Absenden ist diese Meldung sicher weg, nicht?

    PHP
    if (isset($_POST)) { /*$_POST gesetzt/ Forumular absgesendet ... hier weitermachen .... Meldung verschwindet*/ }


    Und bitte fange von anfang an richtig zu maskieren.


    sieh genau hin .. weitere anführungszeichen hinzugefügt, manche gelöscht etc. :)

  • Wenn du gerade dabei bist dich einzuarbeiten, kann man auch empfehlen mysqli_ statt mysql_ zu verwenden.
    Mysqli ist die neuere Version und unterstützt alle hinzugekommenen Funktionen von MySQL 4.0 und höher.


    PHP
    //z.B.
    new mysqli("localhost", "user", "password", "database");
    
    
    
    
    //statt
    mysql_connect();


    Zitat

    New users are advised to use MySQL Improved mysqli_ functions rather than the older [replaced] mysql_ functions where applicable and subject the appropriate latest stable versions of Apache, php and MySQL, etc.

  • Und wenn wir schon dabei, sind, Tipps für die DB Verbindung zu geben, dann von mir: nutze PDO, fang gar nicht mehr erst an, das tabellenspezifisch zu machen.


    PDO ist eine Abstraktionsebene, dh mit der kannst du dich mit der gleichen Syntax in verschiedenen DB-Systemen (MySQL, SQLite, PostgreSQL, Informix, ...) einloggen. Weiterer Vorteil, wenn man es richtig nutzt, muss man sich nicht mehr so massiv in maskieren reinlesen, weil es automatisch schon einen großen Teil entschärft, wodurch SQL Injections (SEEEHR gefährlich) praktisch unmöglich werden.


    Also, guck es dir mal an: http://www.php.net/manual/de/book.pdo.php
    Würde ich dir absolut empfehlen. Kleiner Nachteil allerdings, dein Provider muss es zur Verfügung stellen, kannst ja mal bei phpinfo() nach PDO suchen und es dir ggf. nachrüsten lassen, ist enorm praktisch!

  • Oder wir bleiben auf dem Teppich und lassen einen Anfänger lieber erst einmal mit den Grundsätzen arbeiten damit er verstehen kann wie es überhaupt funktioniert, schließlich geht es in dieser Phase um das Lernen und nicht darum das alles möglichst einfach funktioniert, aber gar kein Verständnis vorhanden ist was genau passiert.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!