Script abbrechen und re-directen ?

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

  • Script abbrechen und re-directen ?

    Hi,

    ich bin neu hier und dachte jetzt schreib ich meine erste Nachricht ..naja und gleich eine Frage...

    Also bin noch ein echter noewbie im PHP -Bereich, komme vom Screendesgin Flash usw, also nicht lachen wenn sich das jetzt blöd anhört:

    Ich habe eine kleine mysql Datenbank, welche ich über eine admin.php Seite updaten kann. Wenn diese Admin Seite ohne ACTION aufgerufen wird wird das Formular zum ändern angezeigt. soweit so gut. nun habe ich in so einem Form mehrere Submit buttons und frag denen Ihren Namen ab, also if (bnt_ok) {dann mach ne mysql_query usw...weiterhin wird dann ein kleiner Text wie "ÄÄnderungen gespeichert" ausgeben und NICHT das Form welches man bekommt ohne ACTION.

    Ok...klappt alles jettz will ich das so ändern, daß die Leute nicht mehr diese "Änderungen gespeichert Meldungen bekommen" sondern wieder dahn zurück kommen wo sie herkamen. Sprich diese Admin seite kann man von verschiedene Links auf meiner Seite erreichen.

    Mein Ziel ist es also: Die Adminseite zu starten (kein PRoblem), den Referer zu speichern (kein PRoblem) und bei klick auf Änderungen OK oder sonstwo, die gleiche Seite nochmal zu starten, wieder den Button abfrgane (wie bisher ja auch) die SQL DB aktualisiren und JETZ aber nicht das Script weiterabarbeiten sondern auf due URL des Referers zu wechseln...geht das ?

    meine button abfrage fängt so an und soll dann halt abbrechen nach dem Update:

    if (bnt_ok) {
    $sql_q="DIE QUERY HALT";
    $sql_cmd=mysql_query(...);
    ...

    habe schon probiert mit ECHO ein kleines Javascript welches document.location.href setzt einzubauen, klappt nicht wirklich...einene Header mit Location: senden hat auch nicht geklapt (das wird einfach ignoriert, wobei ich mit Hadern aber eh noch nix zu tun hatte)..tja und jetzt frage ich mich ob das überhaupt möglich ist ein script währends es läuft zu "redirecten oder ob man das Verhalten nur über Varibalen die entweder global/session seitig gespeichert wewrden oder als Query_string übergeben werden, steuern kann.
    ..oder habe ich da das script schon total falsch aufgebaut wen ich so einen Fal lhabe ? Ich mein ees macht ja auch keinen Sinn die Update Funktion für SQL in jede Seite zu schriben von der ich kommen könnte und dann DORT ausführen zu lassen (nach dem redirect durch den Referer),oder ?

    Vielen Dank für Eure Hilfe und Mühe

    Ray

    [Editiert von rayden5_ am 28-02-2002 um 09:28]

  • #2
    also abbrechen kannst du ein Skript mit exit(); der Redirect geht über header, aber nur wenn noch keine Ausgabe (echo oder HTML) stattgefunden hat, ansonsten mußt du Javascript nehmen!

    gruss

    Kommentar


    • #3
      Hi MoRtAlan,

      thx für Die Antwort, meni Script fängt so an:

      PHP-Code:
      <? 
              if ($PHP_SELF != "/index.php" || $news_admin ==0) { DIE; }; ?>
      <?

      if($delete_ok) {
          
          $sql_string="DELETE from NEWS WHERE news_id=$ID";
          mysql_query($sql_string);

      ?>
              <table class="border" cellpadding="0" cellspacing="0" width="645">
              <tr>
              <td colspan="6" class="top" align="center">.: Datenbank erfolgreich aktualisiert :.</td>
              </tr>
      ..naja wenn ich dann nach meiner Query diesen Header mache dürft er doch die Table nichtmehr anzeigen sondern die neue Seite besuichen und das macht er eben nicht

      Ray

      Kommentar


      • #4
        hmmm weiterleiten kannst auch mit <meta http-equiv="refresh" content="0; URL=wohinauchimmer.php">
        wobei der content-wert die sekunden angibt die gewartet wird.

        aber meinst du vielleicht eher sowas:

        Code:
        <?
          if($schickmich=="Anfrage senden")
          {
            //entsprechende sql-abfrage
            $sql="select....";
            $rs=mysql_query($sql);
            if($rs)
              {
                $msg="&Auml;nderungen wurden gespeichert";
              }
            else
              {
                $msg="Fehler beim Schreiben in der Datenbank";
              }
          }
        ?>
        <!-- HTML-Teil mit dem/den Formular/en //-->
        <? echo $msg; ?>
        <form action="<? echo $php_self; ?>" method="post">
          <input type="text" name="bla" value="blubber">
          <!-- usw. //-->
          <input type="submit" name="schickmich" value="Anfrage senden">
        </form>
        solang die variable "schickmich" nicht gesetzt ist bzw. nicht "Anfrage senden" als Inhalt hat, wird die sql-abfrage nicht ausgeführt, sondern nur das formular angezeigt.

        mit dem klick auf den submit button wird das selbe dokument aufgerufen $schickmich hat den wert "Anfrage senden", sql wird ausgeführt, $msg wird je nachdem ob die anfrage erfolgreich war oder nicht ein wert zugewiesen und als anzeige erhält der user das formular wies immer schon war plus drüber die meldung über erfolg/misserfolg seiner bemühungen.

        oder hab ich dein "begehr" jetzt falsch verstanden?

        Kommentar


        • #5
          Einfach mit html
          ?>
          <meta http-equiv="refresh" content="4; url=<?php echo $PHP_SELF?>">
          <?php

          Mit content = XX bestimmst du die Anzahl der Sekunden die gewartet werden soll bevor die Weiterleitung erfolgt.
          [font=comic sans ms]ups, never mind,
          it´s just me[/font]

          Kommentar


          • #6
            Ups, da war White Mountain schneller
            [font=comic sans ms]ups, never mind,
            it´s just me[/font]

            Kommentar


            • #7
              Re,

              ich krieg langsam nch die Krise Also daß mit dem meta refresh ist genau daß was ich eigentlich brauch:

              Ich laß also meine Datenbank aktualiseren und dann kommt der Refresh, soch leider meckert der Browser immer von wege er kann das formular nicht erneut versenden bzw ich müßte die Daten nochmal neu schiceken, was in einer Endlosschleife endet. Ist auch lgisch durch meinen Klick auf OK wird das form ja verschickt und in die SQL BAse eingetragen *seufz*....

              Header kann ich auch nicht verwenden da ich bereits meine Header HMTL geprinted habe bis er mal die Table mit diesem Form öffnet..ist also auch nicht möglich..

              Scheint als ob ich in meinem Fall wohl irgendwas anderes machen muß

              Oder hat noch Jemand eine Andere Idee ? Diese Meta-Refresh wäre ideal wenn nicht ein Form wäre welches ich 1 klick vorher abschicke

              Danke
              Ray

              Kommentar


              • #8
                na das is klar, dass er da meckert - du schickst damit das formular ja noch mal ab.
                warum machst es net wie oben beschrieben?

                Kommentar


                • #9
                  So, ganz langsam.

                  <?php
                  /** aktion wenn Formular abgeschickt wurde **/
                  if($send) {
                  echo "Formular abgeschickt<br/>Sie werden in 5 Sekunden weitergeleitet";
                  ?>
                  // hier jetzt die Weiterleitung
                  <meta http-equiv="refresh" content="5; url=<?php echo $PHP_SELF ?>">
                  <?php
                  } // ende if $send


                  /* hier steht das formular, falls es noch nicht ausgefüllt wurde */
                  echo "<form method=\"POST\" action=\"$PHP_SELF\">";
                  // Formularfelder stehen hier

                  echo "<input type="\SUBMIT\" name=\"send\" value=\"Abschicken\">"; // der Submitbutton !

                  ?>

                  Der Submitbutton trägt den Namen "send"
                  Wird er betätigt erfolgt oben die Reaktion in der if-Abfrage. Diese fragt ob $send ? Wenn ja, gibt sie ne Meldung aus und leitet nach 5 Sekunden weiter, wobei hier die Weiterleitung so eingestellt ist daß das gleiche Script nochmal aufgerufen wird.
                  Funktioniert hier bei mir, also sollte es auch bei dir funktionieren

                  [font=comic sans ms]ups, never mind,
                  it´s just me[/font]

                  Kommentar


                  • #10
                    du kannst auch ...

                    ... am Anfang des Skripts (also bevor das erste Zeichen HTML an den Browser geht) ob_start(); ausführen - Das verhindert, dass echos etc. direkt an den Browser geschickt werden; die Ausgaben werden in einem Puffer zwischengespeichert.

                    Fehlt die die Variable dann sagst du ob_end_clean(); (Ausgabepuffer leeren) und die(header('Location: formular.php')); (Weiterleitung)

                    ansonsten ob_endflush(); - damit wird der Inhalt des Ausgabepuffers an den Browser geschickt und der Puffer geleert.
                    mein Sport: mein Frühstück: meine Arbeit:

                    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                    Kommentar


                    • #11
                      @Raphael,

                      also ich habs jetzt nochmal so gemacht wie du ir das Beispiel gepostet hast und den meta-tag per cut&Paste eingefügt, jetzt klappts . Hab mich wohl irgendiw vertan beim ersten mal, ich hatte glaub content="0" url="xx" geschrieben und übersehen daß da nochn ; usw reinmuß.

                      THX

                      RAy

                      Kommentar

                      Lädt...
                      X