DifferentSpirit: Daten aus Formular in Datenbank

Hallo allerseits,
ich habe eben mit einem Tutorial einen PHP-Quelltext geschrieben, um Daten aus einem Formular in eine SQL-Datenbank zu übernehmen. Aber irgendwie funktioniert es nicht... :-(

So, wie ich es verstanden habe, sollte das ganze so ausschauen:

<?php

error_reporting(E_ALL);
    include 'config.php';
    // Konfigurationsdatei laden
    @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR
        die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());
    mysql_select_db(MYSQL_DATABASE) OR
        die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());
    $sql = "SELECT
                ID,
                Name,
                Vorname,
                email
            FROM
                News
            ORDER BY
                ID ASC;";

$sql="tu was;mach dies";
    $sqls = array("tu was", "mach dies", "und das");
    foreach($sqls as $sql) {
        $result = mysql_query($sql) OR die(mysql_error());
    }

$sql=CREATE TABLE News
(
    ID     INT AUTO_INCREMENT PRIMARY KEY,
    Name VARCHAR(30),
    Vorname VARCHAR(40),
    email VARCHAR(50)
);

$sql=INSERT INTO News
    (Titel,Inhalt,Datum,Autor)
 VALUES
    ('$_NAME',
     '$_VORNAME',
     '$_EMAIL');

$result = mysql_query($sql) OR die(mysql_error());
    echo "News in der Datenbank:<br />\n";
    if(mysql_num_rows($result)) { // gucken ob was im Query drinsteckt
        while($row = mysql_fetch_assoc($result)) {
            echo $row['Datum']." > ".$row['Titel']."<br />\n";
        }
    } else {
        echo "Es sind keine News in der Datenbank vorhanden<br />\n";
    }

?>

in config.php habe ich folgendes geschrieben:

<?php

error_reporting(E_ALL);
    define('MYSQL_HOST',     'localhost');
    define('MYSQL_USER',     'progman');
    define('MYSQL_PASS',     'foobar');
    define('MYSQL_DATABASE', 'db24543253');

?>

*sorry, dass ich so viel poste, aber ich weiß wirklich nicht, wo der Fehler ist*

Kann mir jemand sagen, was falsch ist?? Wäre super, wenn mir jemand, trotz dem langen Post, helfen könnte! Und wenns nur ansatzweise ist...

LG DifferentSpirit

  1. wie ist die fehler/warn meldung.

    p.s.
    meineserachtens ist es sinnvoller die confic mit require(file); einzubinden, da ja das script ohne die defines gar keine chance hat abgearbeitet zu werden.

    mfg uwe

    1. Es kommt keine Meldung ... Es passiert einfach nix ... Es wird weder etwas abgespeichert oder sonst was...

      1. echo $begrüßung;

        Es kommt keine Meldung ... Es passiert einfach nix ...

        Erzeuge mal eine Datei, die

        <?php
        phpinfo(4);
        ?>

        enthält. Rufe diese auf und schau mal, was unter Local Value in den Zeilen

        display_errors
        display_startup_errors

        steht. Eigentlich sollte beides (zumindest beim Entwickeln) auf On stehen.

        echo "$verabschiedung $name";

  2. Moin!

    So, wie ich es verstanden habe, sollte das ganze so ausschauen:

    Naja, so richtig PHP verstanden hast du noch nicht.

      
    
    > <?php  
    >   
    >     error_reporting(E_ALL);  
    >     include 'config.php';  
    >     // Konfigurationsdatei laden  
    >     @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR  
    >         die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());  
      
    // Nimm das @ vorne weg. Das unterdrückt dir die PHP-Fehlermeldung - und bei Fehlersuchen ist das ganz schlecht. Kein Skript sollte das @ benötigen, alle auftretenden Fehler sollten auf normalem Weg abgefangen und behandelt werden - wie beispielsweise ja hier mit dem die()-Befehl.  
      
    
    >     mysql_select_db(MYSQL_DATABASE) OR  
    >         die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());  
    >     $sql = "SELECT  
    >                 ID,  
    >                 Name,  
    >                 Vorname,  
    >                 email  
    >             FROM  
    >                 News  
    >             ORDER BY  
    >                 ID ASC;";  
      
    // Hier definierst du die Variable $sql.  
      
    
    >     $sql="tu was;mach dies";  
      
    // Hier überschreibst du die Variable $sql mit was anderem - etwas, das jedenfalls kein SQL-Befehl ist.  
      
    
    >     $sqls = array("tu was", "mach dies", "und das");  
      
    Das sind alles auch keine SQL-Befehle.  
      
    
    >     foreach($sqls as $sql) {  
      
    // Hier überschreibst du die oben schon zweimal beschriebene Variable $sql wieder, diesmal nacheinander mit allen Inhalten aus dem Array $sqls.  
      
    
    >         $result = mysql_query($sql) OR die(mysql_error());  
      
    // Und hier schickst du die ganzen Nicht-SQL-Befehle dann zur Datenbank - kann nicht funktionieren!  
      
    
    >     }  
    >   
    >     $sql=CREATE TABLE News  
    > (  
    >     ID     INT AUTO_INCREMENT PRIMARY KEY,  
    >     Name VARCHAR(30),  
    >     Vorname VARCHAR(40),  
    >     email VARCHAR(50)  
    > );  
      
    // Oh, die Variable $sql schon wieder - der Versuch, ihr einen String mit einem SQL-Befehl zuzuweisen, scheitert an den fehlenden Anführungszeichen zu Beginn und Ende - PHP müßte dir dafür eigentlich eine Fehlermeldung ausgeben.  
      
    // Abgesehen davon: Neue Tabellen legt man üblicherweise EINMAL an, beispielsweise in einem Installationsskript. Ein "CREATE TABLE" in einem Skript wird deshalb nur beim ersten Mal problemlos funktionieren und danach immer die Fehlermeldung der Datenbank ausgeben, dass die Tabelle schon existiert.  
      
    
    >     $sql=INSERT INTO News  
    >     (Titel,Inhalt,Datum,Autor)  
    >  VALUES  
    >     ('$_NAME',  
    >      '$_VORNAME',  
    >      '$_EMAIL');  
      
    // Und erneut wird die Variable $sql überschrieben - würde sie zumindest, wenn auch hier Anführungsstriche stünden. Das dürfte PHP auch anmeckern.  
      
    
    >     $result = mysql_query($sql) OR die(mysql_error());  
      
    // Wenigstens das Fehlerabfangen ist eingebaut - finde ich gut, da weiß man wenigstens, ob und was die Datenbank zu meckern hat.  
      
    
    >     echo "News in der Datenbank:<br />\n";  
    >     if(mysql_num_rows($result)) { // gucken ob was im Query drinsteckt  
      
    // Wenn du in deiner Datenbank zuletzt ein INSERT gemacht hast, kannst du an dieser Stelle keine Datensätze abfragen und ausgeben. Dazu müßtest du den SQL-Befehl SELECT benutzen.  
      
    
    >         while($row = mysql_fetch_assoc($result)) {  
    >             echo $row['Datum']." > ".$row['Titel']."<br />\n";  
    >         }  
    >     } else {  
    >         echo "Es sind keine News in der Datenbank vorhanden<br />\n";  
    >     }  
    >   
    > ?>  
    
    

    in config.php habe ich folgendes geschrieben:

      
    
    > <?php  
    >   
    >     error_reporting(E_ALL);  
    >     define('MYSQL_HOST',     'localhost');  
    >     define('MYSQL_USER',     'progman');  
    >     define('MYSQL_PASS',     'foobar');  
    >     define('MYSQL_DATABASE', 'db24543253');  
    >   
    > ?>  
    
    

    Die Idee, die Datenbank-Logindaten als Konstanten zu definieren, finde ich gut.

    *sorry, dass ich so viel poste, aber ich weiß wirklich nicht, wo der Fehler ist*

    Wie gesagt: Fehlermeldungen bräuchtest du. Die mußt du irgendwie einschalten.

    - Sven Rautenberg

    --
    My sssignature, my preciousssss!
    1. *grins*
      Ich sehe, dass es doch nicht so einfach ist, wie ich vermutet habe ... Werd wohl alles noch mal überarbeiten, danke für deine Hilfe!

      Werd mich wohl noch mal dieses WE hinsetzen müssen, damit das nächste Woche hier in der Arbeit läuft ...

      LG DifferentSpirit