1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Probleme mit Insert im Formular

  • Tobias0508
  • 29. Oktober 2007 um 12:59
  • Unerledigt
  • Tobias0508
    3
    Tobias0508
    Mitglied
    Punkte
    50
    Beiträge
    9
    • 29. Oktober 2007 um 12:59
    • #1

    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

  • Ringding
    11
    Ringding
    Mitglied
    Reaktionen
    12
    Punkte
    1.237
    Beiträge
    244
    • 29. Oktober 2007 um 14:29
    • #2

    Vielleicht fehlt einfach das COMMIT.

  • Tobias0508
    3
    Tobias0508
    Mitglied
    Punkte
    50
    Beiträge
    9
    • 29. Oktober 2007 um 14:40
    • #3

    COMMIT??? davon hab ich bisher noch nichts gelesen o_0

    wo muss das denn hin.. bzw wofür ist das überhaupt? Ist denn der Rest vom Code richtig?

  • Paulchen
    1
    Paulchen
    Gast
    • 29. Oktober 2007 um 15:18
    • #4

    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?

  • Tobias0508
    3
    Tobias0508
    Mitglied
    Punkte
    50
    Beiträge
    9
    • 29. Oktober 2007 um 15:47
    • #5

    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.

  • Paulchen
    1
    Paulchen
    Gast
    • 29. Oktober 2007 um 15:53
    • #6
    Zitat von Tobias0508

    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();
    Zitat von Tobias0508

    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.

  • Tobias0508
    3
    Tobias0508
    Mitglied
    Punkte
    50
    Beiträge
    9
    • 29. Oktober 2007 um 16:38
    • #7

    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.

  • Tobias0508
    3
    Tobias0508
    Mitglied
    Punkte
    50
    Beiträge
    9
    • 29. Oktober 2007 um 18:52
    • #8

    ich find den fehler einfach nicht o_o das kann doch nicht sein.. * auf tastatur hau*

  • jimbeam
    11
    jimbeam
    Mitglied
    Reaktionen
    11
    Punkte
    1.201
    Beiträge
    204
    • 29. Oktober 2007 um 22:07
    • #9

    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.....

  • Tobias0508
    3
    Tobias0508
    Mitglied
    Punkte
    50
    Beiträge
    9
    • 29. Oktober 2007 um 22:14
    • #10

    es passiert immernoch nichts :frowning_face: :frowning_face: :frowning_face: mit var_export test ich mal.

  • heli1
    1
    heli1
    Mitglied
    Punkte
    5
    Beiträge
    1
    • 30. Oktober 2007 um 11:14
    • #11

    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')");
    }
  • Tobias0508
    3
    Tobias0508
    Mitglied
    Punkte
    50
    Beiträge
    9
    • 30. Oktober 2007 um 13:35
    • #12

    danke :grinning_face_with_smiling_eyes: genau das war es :) *freu*

  • Tobias0508
    3
    Tobias0508
    Mitglied
    Punkte
    50
    Beiträge
    9
    • 1. November 2007 um 15:20
    • #13

    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

  • Tobias0508
    3
    Tobias0508
    Mitglied
    Punkte
    50
    Beiträge
    9
    • 1. November 2007 um 23:26
    • #14

    keiner nen tipp? :frowning_face:

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

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

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung