ID übernehmen

  • Hallo,
    ich habe eine Online Schule und habe das Problem, dass wenn man ein Begleiter (elfe) bekommt, dafür eine neue Tabelle in der DB angelegt ist. Dort wird auch alles eingetragen, aber nicht mit der ID die man schon bestitzt.
    Beispiel: Du bist ID 4 (in Tabelle users) und bekommst nach der Prüfung die Elfe und die hat in der Tabelle elfe aber die ID 7. Dabei soll sie auch ID 4 haben.

    Hier mal der PHP Code, wenn man das Formular abschickt.

    <?php
    if($_POST['action'] == "send") {
    if(checkstring($_POST['elfe']) && checkstring($_POST['elfe_name'])) {
    mysql_query("INSERT INTO elfe (elfe, elfe_name) VALUES ('".$_SESSION['login']."', '".zahl($_POST['id'])."')");
    mysql_query("UPDATE elfe SET elfe = '".umbruch($_POST['elfe'])."', elfe_name = '".umbruch($_POST['elfe_name'])."' WHERE id = '".$_SESSION['login']."'");
    mysql_query("UPDATE users SET timestamp = '".(time()+24*60*60)."', hexengrad = hexengrad-'1' WHERE id = '".$_SESSION['login']."'");
    ?>

  • ist die ID in der Elfen-Tabelle als auto-increment gekennzeichnet?

    Wenn ja: Nimm das raus und trag bei der "Elfenerstellung" die Benutzer-ID als Elfen-ID ein.

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Danke, ich habe das auto-increment rausgenommen, so dass er jetzt die ID nicht weiter führt. Ich hab jetzt aber das Problem, dass er sobald man auf den Button klickt und er das in die Tabelle elfe einträgt, die ID 0 ist.
    Er übernimmt die ID aus users nicht.
    Kann mir wer helfen?

    PHP
    <?php
      if($_REQUEST['action'] == "send") {
      if(checkstring($_REQUEST['elfe']) && checkstring($_REQUEST['elfe_name'])) {
      mysql_query ("INSERT INTO elfe (id) VALUES (users WHERE id = '".$_SESSION['login']."', '".zahl($_REQUEST['id'])."')");
         mysql_query("INSERT INTO elfe (elfe, elfe_name) VALUES ('".umbruch($_REQUEST['elfe'])."', '".umbruch($_REQUEST['elfe_name'])."')");
         mysql_query("UPDATE elfe SET elfe = '".umbruch($_REQUEST['elfe'])."', elfe_name = '".umbruch($_REQUEST['elfe_name'])."' WHERE id = '".$_SESSION['login']."'");
        ?>

    Einmal editiert, zuletzt von synaptic (27. Februar 2010 um 13:22) aus folgendem Grund: php-codetags ergänzt! bitte benutze die entsprechenden tags, um deinen code lesbarer zu gestalten

  • wie sieht denn deine elfentabelle genau aus?
    du hast da 3 query-strings für einen eintrag wenn ich des so richtig sehe...
    solltest dich mal mit den sql-grundlagen auseinandersetzen...

    Code
    insert into table (col1, col2, col3) values(valForCol1, valForCol2, valForCol3);

    du machst erst nen insert dann noch nen insert, dann nen update
    verrate mir mal wieso...!

  • Richtig debuggen
    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL); und ini_set("display_errors", true);
    3. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    4. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
    5. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    6. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    7. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    8. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

  • Bei NetBeans IDE kannst du debuggen, aber leider fängt der bei mir immer am Anfang des Scriptes an. Auch wenn ich breakpoints setzte