Probleme mit Insert im Formular

  • Hallo,

    beschäftige mich seit kurzem mit PHP und SQL und bin nun auf folgendes Problem gestoßen. Ich habe 3 Eingabefelder aber sobald ich auf Speichern klicke wirden die Daten nicht in meiner Datenbank übernommen und finde den Fehler einfach nicht.. Hier mal der Code:

    <html>
    <head>
    <title>Krankenhaus</title>
    </head>
    <body>
    <div align="center">
    <?php include ("config.php");
    $sqlstatement= "SELECT * FROM arzt";

    if ($result=mysql_query($sqlstatement))
    {

    print "<table border=\"1\" cellspacing=\"5\" cellpadding=\"3\">\n";

    print "<tr><th>ID</th><th>Name</th><th>Durchwahl</th><th>Pieper</th></tr>\n";
    while ($dataset = mysql_fetch_array($result)) {
    print "<tr>";
    print "<td>".$dataset['id']."</td>";
    print "<td>".$dataset['name']."</td>";
    print "<td>".$dataset['durchwahl']."&nbsp;"."</td>";
    print "<td>".$dataset['pieper']."&nbsp;"."</td>";
    print "</tr>\n";
    }
    $count = mysql_num_rows($result);
    print "<tr><td colspan = \"9\">";
    print "Es wurden $count Datensätze gefunden.";
    print "</td></tr>\n";
    print "</table>\n";
    }

    ?>
    <?php
    include("config.php");
    if(isset($_POST['speichern']))
    {
    $name=$_POST['name'];
    $durchwahl=$_POST['durchwahl'];
    $pieper=$_POST['pieper'];

    mysql_query("INSERT INTO arzt(id,name,durchwahl,pieper)
    VALUES(1,'$name','$durchwahl','$pieper')");
    }
    else {
    echo'
    <form action="'. $PHP_SELF .'" method="POST" >
    Name: <input type="text" name="name"><br>
    Durchwahl: <input type="text" name="durchwahl"><br>
    Pieper: <input type="text" name="pieper"><br>
    <input type="submit" value="Daten hinzufügen" value="speichern"><input type="reset">
    </form>';


    }
    ?>
    </div>
    </body>
    </html>

    und der Code von meiner config.php ist:

    <?php

    $dbserver ="localhost";
    $dbuser ="root";
    $dbpasswd ="";


    if(!@mysql_connect($dbserver,$dbuser,$dbpasswd)) {
    echo("Es konnte keine Verbindung aufgebaut werden");
    die(); // Script beenden
    }

    $dbname = "patient";

    if(!mysql_select_db($dbname)) {
    die("Konnte Datenbank nicht benutzen");
    }

    ?>


    hoffentlich kann mir da einer eben helfen :) danke schonmal im voraus

  • Was ist denn in der Tabelle "Arzt" PRIMARY KEY? id? Wenn ja, gibt's schon einen Arzt mit ID 1?

    Gibt mysql_error() irgendeine Fehlermeldung aus, wenn du es unmittelbar nach mysql_query() ausführst?

  • mysql_query("INSERT INTO arzt(id,name,durchwahl,pieper)
    VALUES(1,'$name','$durchwahl','$pieper')");
    mysql_error();


    war das richtig da? wenn ja, dann krieg ich keine Fehlermeldung. Meine Tabelle Arzt sieht so aus:

    CREATE TABLE arzt (
    id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL,
    durchwahl INTEGER NOT NULL,
    pieper INTEGER NOT NULL,
    PRIMARY KEY(id)
    );

    und habe in der selbigen txt. datei schon 2 Einträge gemacht:

    INSERT INTO arzt(id,name,durchwahl,pieper)
    VALUES (1,'Erdas',256,0256),
    (2,'Doolittle',654,0654)
    ;

    die Werte kann auch sehen bei der Ausgabe.

  • mysql_query("INSERT INTO arzt(id,name,durchwahl,pieper)
    VALUES(1,'$name','$durchwahl','$pieper')");
    mysql_error();


    war das richtig da?

    Grundsätzlich schon, aber mysql_error() gibt dir einen String zurück. Gib den mit echo aus, also schreib

    Code
    echo mysql_error();

    INSERT INTO arzt(id,name,durchwahl,pieper)
    VALUES (1,'Erdas',256,0256),
    (2,'Doolittle',654,0654)
    ;

    Da hast du den Wert 1 schon vergeben für das Attribut "id". In deinem INSERT versuchst du nun, diesen Wert nochmal zu vergeben, und das geht nicht, weil "id" Primärschlüssel ist.

  • also mein Insert sieht nun so aus:

    INSERT INTO arzt(name,durchwahl,pieper)
    VALUES ('Erdas',256,0256),
    ('Doolittle',654,0654)
    ;


    das echo hab ich davor geschriebn aber sobald ich auf den button klickt lädt kurz irgendwas und das wars auch schon. es kommt keine Fehlermedlung und die Daten will er nicht reinschreibn.

  • Du könntest noch versuchen nachdem du deinen Insert-Befehlt ausführst ein

    PHP
    mysql_query("COMMIT");

    machen.

    Und sonst musst du den Code besser debuggen. Die Variablen einzeln ausgeben, var_export kann dir helfen!
    Und das echo mysql_error() musst du nach dem ausführen des befehls machen!

    Paddys, hm.....

  • du solltest hier statt 2 mal value zu schreiben, name="speichern" schreiben :)

    Code
    <input type="submit" value="Daten hinzufügen" value="speichern"><input type="reset">

    sonst wird das hier nie ausgeführt :)

    Code
    if(isset($_POST['speichern']))
    {
    $name=$_POST['name'];
    $durchwahl=$_POST['durchwahl'];
    $pieper=$_POST['pieper'];
    
    
    mysql_query("INSERT INTO arzt (name,durchwahl,pieper) VALUES ('$name','$durchwahl','$pieper')");
    }
  • ich bin es schon wieder o_0
    Also hab den Button geändert und in der Tabelle "Arzt" funktioniert nun auch alles aber wollte das selbe bei "patienten" machen und dort funktioniert es nicht.

    Hier der Code
    <html>
    <head>
    <title>Krankenhaus</title>
    </head>
    <body>
    <div align="center">
    <?php include ("config.php");
    $sqlstatement= "SELECT patienten.id,patienten.name,patienten.strasse,patienten.kvn,patienten.aufnahme,
    patienten.entlassung,ort.ort,krankenkasse.namek
    FROM ((patienten INNER JOIN ort
    ON patienten.ort_id=ort.id)
    INNER JOIN krankenkasse
    ON patienten.krankenkasse_id=krankenkasse.id)
    ";

    if ($result=mysql_query($sqlstatement))
    {

    print "<table border=\"2\" cellspacing=\"1\" cellpadding=\"3\">\n";

    print "<tr><th>ID</th><th>Name</th><th>Strasse</th><th>KVN</th><th>Aufnahme</th><th>Entlassung</th><th>Ort</th><th> Krankenkasse</th></tr>\n";
    while ($dataset = mysql_fetch_array($result)) {
    print "<tr>";
    print "<td>".$dataset['id']."</td>";
    print "<td>".$dataset['name']."</td>";
    print "<td>".$dataset['strasse']."&nbsp;"."</td>";
    print "<td>".$dataset['kvn']."&nbsp;"."</td>";
    print "<td>".$dataset['aufnahme']."&nbsp;"."</td>";
    print "<td>".$dataset['entlassung']."&nbsp;"."</td>";
    print "<td>".$dataset['ort']."&nbsp;"."</td>";
    print "<td>".$dataset['namek']."&nbsp;"."</td>";
    print "</tr>\n";
    }
    $count = mysql_num_rows($result);
    print "<tr><td colspan = \"9\">";
    print "Es wurden $count Datensätze gefunden.";
    print "</td></tr>\n";
    print "</table>\n";

    }

    if(isset($_POST['speichern']))
    {
    $name=$_POST['name'];
    $strasse=$_POST['strasse'];
    $kvn=$_POST['kvn'];
    $aufnahme=$_POST['aufnahme'];
    $entlassung=$_POST['entlassung'];

    mysql_query("INSERT INTO patienten(name,strasse,kvn,aufnahme,entlassung)
    VALUES('$name','$strasse','$kvn','$aufnahme','$entlassung')");
    echo mysql_error();
    }
    else {
    echo'
    <form action="'. $PHP_SELF .'" method="POST" >
    <font size=+1><br><br>Name:<br> <input type="text" name="name"><br>
    Strasse:<br><input type="text" name="strasse"><br>
    KVN:<br> <input type="text" name="kvn"><br>
    Aufnahme:<br><input type="text" name="aufnahme"><br>
    Entlassung:<br><input type="text" name="entlassung"><br><br>
    <input type="submit" value="Daten hinzufügen"
    <input type="hidden" value="1" name="speichern">
    <input type="reset"></font>
    </form>';


    }
    ?>
    </div>
    </body>
    </html>

    Meine Tabelle sieht so aus:

    CREATE TABLE patienten (
    id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL,
    strasse VARCHAR(255) ,
    kvn VARCHAR(255) ,
    aufnahme DATETIME ,
    entlassung DATETIME ,
    ort_id VARCHAR(255) ,
    krankenkasse_id INTEGER ,
    PRIMARY KEY(id)
    );

    Wenn ich nun einen neuen Namen eingebe, dann sieht man ihn einfach nicht. Wenn ich aber nun den sqlstatement in "SELECT *FROM patienten"; änder, dann seh ich meine Eingaben bei "name" aber ich benötige ja zwei Inner Joins für den Ort und Krankenkassennamen ( hab ich namek genannt sonst hat er es nie ausgegebn)

    die beiden Tabellen sehen so aus:

    CREATE TABLE ort (
    id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    plz VARCHAR(255) NOT NULL,
    ort VARCHAR(255) NOT NULL,
    PRIMARY KEY(id)
    );

    und:

    CREATE TABLE krankenkasse (
    id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    namek VARCHAR(255) NOT NULL,
    strasse VARCHAR(255) NOT NULL,
    ort VARCHAR(255) NOT NULL,
    PRIMARY KEY(id)
    );


    danke schonmal

Jetzt mitmachen!

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