Datensatz löschen geht nur manchmal

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datensatz löschen geht nur manchmal

    Hallo Leute,

    zunächst mal meinen Status: ich bin ein ziemlicher PHP-Anfänger :-(
    Ich habe eine Telefonliste gestrickt, die eigentlich nichts weiter macht als Daten aus einer MySQL-DB nach Eingabe von Suchkriterien aufzulisten. Klappt auch prima.
    Nun möchte ich hier auch Daten ändern bzw. löschen.

    Das Löschen ist mein Problem.
    Ich habe hinter jedem angezeigten Datensatz einen Link gesetzt (ähnlich wie in phpMyAdmin), der eine Javascript-Funktion aufruft, die nochmals Nachfragt ob wirklich gelöscht werden soll oder nicht. Wenn ja, dann startet diese Funktion mittels window.location ein PHP-Script welches nichts anders macht als mit Hilfe der übergebenen Parameter den entsprechenden Datesatz zu löschen.

    Der Aufruf über window.location deshalb, damit keine neue (leere) Webseite eingeblendet wird.

    Lasse ich das ganze lokal laufen, funktioniert es wie gewünscht. Pack ich es auf einen Server, der auch schon mal anderweitig beschäftigt ist, geht es mal, mal wieder nicht. Wobei das "nicht" überwiegt.

    Auch wenn das Löschen nicht funktioniert hat, es gibt keinerlei Fehlermeldung, das Programm macht ganz normal weiter.
    Gibt es sowas wie Timingprobleme?
    Könnte mir auch gut vorstellen das ich irgend etwas grundsätzliches im Programmaufbau für diese Problem falsch mache. Aber was??? :-(

    Wäre Dankbar für einen Schubs in die richtige Richtung...

    hier noch in Auszügen das Script:
    Die Anzeige des Datensatzes

    <td ><a href='javascript: DSdelete($ID, \"$NN\");'><img width='16' height='16' src='b_drop.png' alt='Löschen' title='Löschen von $NN' border='0'></a></td>";

    Die Javascript-Funktion die das Löschen starten soll

    function DSdelete(VID,VNN)
    {
    klick=confirm("Soll der Eintrag zu " + VNN +" wirklich gelöscht werden?");
    if (klick==true)
    {
    var loc="TelefonDSdel.php?order=L&ID=" + VID;
    window.location=loc;
    window.location.reload();
    }
    }

    das PHP-Lösch-Script

    <?php
    if ($order=='L')
    {
    mysql_connect("localhost","root");
    $sqlstatement="Delete from telefonliste where ID=$ID Limit 1";
    $result=mysql_db_query('Telefon',$sqlstatement);
    }
    ?>
    <script language="Javascript">history.back();window.location.reload()</script>
    Zuletzt geändert von Jogi; 29.06.2006, 20:22.

  • #2
    mal funktionierts mal nicht klingt schon ein wenig schräg. kann es vielleicht sein, dass irgendeine falsche id mitgetragen wird? hast du die id einträge in den links mal mit denen in der db verglichen? vielleicht liegt schon im aufbau ein fehler, so dass díe referenzierung des zu löschenden eintrages schon falsch ist... solltes dir an manchen stellen mal die mitgeschleife id und das sql-statement mit echo ausgeben lassen und überprüfen, ob das ankommt, was du erwartest...
    **********
    arkos
    **********

    Kommentar


    • #3
      erstmal vielen Dank das du dir "meinen" Kopf machst :-)

      also ich meine die ID müsste stimmen, in der Statusleiste sehe ich den Aufruf des Scriptes inklusive Parameter und da stimmt es

      die Ausgabe der Variablen innerhalb des Löschscriptes ist mir nicht gelungen, es wird ja kein neues Fester aufgemacht bzw. es geht so schnell das ich nichts sehe

      Kommentar


      • #4
        dann kommentiere doch erstmal deine letzte zeile aus:
        Code:
        <!--script language="Javascript">history.back();window.location.reload()</script-->
        damit du in ruhe debuggen kannst.
        **********
        arkos
        **********

        Kommentar


        • #5
          Vielleicht ist die Löschseite.php im Browser-Cache??

          Kommentar


          • #6
            frage am rande, weil ich es wirklich nicht weiß:

            wir ne seite mit parameterübergabe überhaupt ausm cache gezogen?
            **********
            arkos
            **********

            Kommentar


            • #7
              Kommentier mal den gesamten Code des Löschscriptes aus und schreib folgendes rein
              PHP-Code:
              error_reporting(E_ALL);
              var_dump($order);
              echo 
              '<br />';
              var_dump($ID);
              exit; 
              Werden die Inhalte der Vars geprintet oder kommt ne Fehlermeldung vonwegen undefinierte Variable ? Falls zweiters dann hast du ein Problem mit den register_globals.
              Gruss

              tobi
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                @arkos
                ich würde meinen das PHP-Parameter komplett neu gelesen werden.
                denn lokal, auf ner guten Maschine, klappt es immer.
                Auch mit geänderten Variablen.

                @tobi
                Danke für den Tipp, kann es leider erst morgen ausprobieren
                werde über das Ergebniss berichten
                Zuletzt geändert von Jogi; 29.06.2006, 20:24.

                Kommentar


                • #9
                  hallo,

                  habe heute mit Tobis's Tipp mir die Variablen anzeigen lassen, die kommen korrekt rüber

                  weil es ja so sein soll

                  weil das nicht der Grund ist

                  Kommentar


                  • #10
                    Hat schon jemand register_globals geschrieben? (dh für diesen Thread), sonst ist tcpip für diesmal der erste.

                    Ja hat schon jedmand geschrieben, und ausserdem ist der Fehler ja "sporadisch".

                    Nächste Idee: dass durch diese Konstruktion mit window.location=.. und window.reload() der window.location= Befehl manchmal abgebrochen wird. Braucht es nach window.location= überhaupt ein window.reload()? In selfhtml steht davon nichts.
                    Zuletzt geändert von tcpip; 30.06.2006, 09:08.

                    Kommentar


                    • #11
                      das reload() mache ich um die Anzeige Datensätze aufzufrischen, denn jetzt ist (sollte) ja einer weniger...

                      Kommentar


                      • #12
                        Original geschrieben von Jogi
                        das reload() mache ich um die Anzeige Datensätze aufzufrischen, denn jetzt ist (sollte) ja einer weniger...
                        Warum machst du das über solche Javascript-Basteleien - anstatt einfach im Lösch-Script anschließend erneut die DS auszulesen und anzuzeigen.

                        Bzw. warum nicht beides gleich in einem Script?

                        Code:
                        wenn(id zum löschen übergeben) {
                           lösche datensatz;
                        }
                        zeige alle datensätze an;
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          oder mal was janz neues mit ajax )) scheinst ja eh n freund von javascript zu sein.
                          **********
                          arkos
                          **********

                          Kommentar


                          • #14
                            wenn ich den Löschteil in die Javascript-Funktion packe, passiert so rein gar nix.
                            Wenn ich PHP richtig verstehe, muß es ja auch durch den PHP-Interpreter auf dem Server, und da beim Aufruf der internen Javascript-Funktion die Seite nicht neu geladen wird, geht' so wohl nicht.
                            Ich fürchte ja auch das ich beim Programmaufbau irgendwas grundsätzliches falsch gemacht habe...

                            Kommentar


                            • #15
                              Original geschrieben von Jogi
                              das reload() mache ich um die Anzeige Datensätze aufzufrischen, denn jetzt ist (sollte) ja einer weniger...
                              Was wird überhaupt reloaded? doch sicher was in location steht, und das ist der
                              delete Befehl.

                              PS das Du den reload machen WILLST, war schon klar. Aber vielleicht will reload() nicht dasselbe.. Ich würde das jedenfalls als eine verdächtige Stelle für Das Fehlverhalten deines Anliegens betrachten, und mangels besserer, klarer Vorstellungen dem inzwischen jedenfalls mal nachgehen... Aber du kannst schon dagegen opponieren...
                              Zuletzt geändert von tcpip; 30.06.2006, 10:53.

                              Kommentar

                              Lädt...
                              X