Ankündigung

Einklappen
Keine Ankündigung bisher.

Uebergabe von Variablen

Einklappen

Neue Werbung 2019

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

  • Uebergabe von Variablen

    Hallo erstmal. Ich bin schon fast am Verzweifeln, da ich es irgendwie nicht hinbekomme, Variablen ueber mehrere Scripte hin zu uebergeben. Im ersten Formular kann man den Newstext selektieren (per Radio-Input), den man bearbeiten moechte. Die ID wird korrekt uebergeben (Variable $auswahl). Dabei wird das naechste Formular aufgerufen, in dem dann der Text, Topic, Name etc steht. Das ist auch soweit richtig. Ich poste mal den Code:

    news_aendern2.php
    Code:
    <?php session_start();
    include("dbconnect.php");
    $abfrage = 	"SELECT *
    		FROM test
    		WHERE news_id='$auswahl'";
    $ergebnis = mysql_query ($abfrage, $connection);
    $row = @ mysql_fetch_array($ergebnis);
    if($row["forum"] != "") { $check = " checked=\"checked\""; } else { $check = ""; }
    [...]
    <input type=\"checkbox\" name=\"link\" value=\"ja\"".$check.">
    [...]
    Die Input-Checkbox (Teil eines Formulars) soll jetzt den Wert "ja" uebergeben, wenn sie selektiert ist und nichts uebergeben , wenn die Checkbox nicht aktiviert ist. Das wird auch noch korrekt aus der DB ausgelesen (in Spalte "forum" soll der Link rein), da mir angezeigt wird, ob in Spalte "forum" ein Eintrag steht oder nicht. Dementsprechend ist die Checkbox vorselektiert oder nicht. Jetzt kommt das eigentliche Problem (bzw. vermute ich das es da liegt) Variablen wie $topic, $name, $email und $news_text wurden richtig uebergeben:

    news_aendern3.php
    Code:
    <?php
    session_start();
    if($link != "") 
    {
    [...]
    diverse Operationen die nur gehen sollen, wenn die Checkbox aktiviert wurde...
    $forum = "hier steht der Forum-Link drin";
    [...]
    $_SESSION['forum'] = "$forum";
    $_SESSION['topic'] = "$topic";
    $_SESSION['name'] = "$name";
    $_SESSION['email'] = "$email";
    $_SESSION['news_text'] = "$news_text";
    Header("Location:http://www.feral-fires.com/admin/news_aendern.php");
    if($link == "") {
    $_SESSION['forum'] = "";
    Header("Location:http://www.feral-fires.com/admin/news_aendern.php");
    } else {
    $_SESSION['topic'] = "$topic";
    $_SESSION['name'] = "$name";
    $_SESSION['email'] = "$email";
    $_SESSION['news_text'] = "$news_text";
    $_SESSION['forum'] = "";
    Header("Location:http://www.feral-fires.com/admin/news_aendern.php");
    }
    }
    ?>
    Bei dem oben genannten Code-Schnipsel sollte eigentlich folgendes passieren: Wenn der Wert fuer $link aus dem vorhergehende Formular mit Hilfe der Checkbox richtig uebergeben wurde (Wert "ja"), dann soll er die Variable fuer $forum richtig fuellen (mit dem entsprechenden Link). Wenn die Variable $link nicht gesetzet ist (inaktive Checkbox), soll er mir bei $forum nix reinschreiben. Das kuriose ist jetzt aber folgendes: wenn ich im Formular news_aendern2.php den Haken in der Checkbox lasse, dann bleibt die Variable $forum leer und wir demnach im nachfolgenden php-Script aus der DB geloescht. Aber eigentlich sollte das doch genau andersrum gehen?! Und wenn ich den Haken wegnehme bzw keinen setze, dann ist in Formular news_aendern3.php Schluss und ich bekommen nen grauen Bildschirm...

    Tja und abschliessend der Vollstaendigkeit halber noch das Script, das dann letztendlich die Daten in der DB updaten soll:

    Code:
    <?php
    session_start();
    $id = $_SESSION['news_id'];
    $forum = $_SESSION['forum'];
    $topic = $_SESSION['topic'];
    $name = $_SESSION['name'];
    $news_text = $_SESSION['news_text'];
    $email = $_SESSION['email'];
    
    include("dbconnect.php");
    include("datum.php");
    $aendern =	"UPDATE test 
    		 SET topic = '$topic', 
    		 name = '$name', 
    		 email = '$email',
    		 news_text = '$news_text',
    		 forum = '$forum' 
    		 WHERE news_id = '$id'";
    $update = mysql_query($aendern);
    session_destroy();
    Header("Location:formular_news_aendern1.php");
    ?>
    Tja wie gesagt, irgendwie werden da Variablen nicht richtig uebergeben und ich weiss nicht mehr was ich noch probieren soll. Da ich mich mit PHP nicht so super auskenne, kann es natuerlich sein das ich Fehler auch einfach uebersehe, da ich zu keiner Loesung komme.

    Vielleicht macht sich jemand die Muehe und schaut sich mal meine Code-Schnipsel an. Ich waere auf jeden Fall dankbar fuer Hilfe jeder Art.

    mfG Kalle


  • #2
    Re: Uebergabe von Variablen

    Zitat von Kalle76
    Hallo erstmal. Ich bin schon fast am Verzweifeln, da ich es irgendwie nicht hinbekomme, Variablen ueber mehrere Scripte hin zu uebergeben.
    Nutze Sessions. Genau dafür wurden sie erfunden.

    ## EDIT für die Forensuche
    falsche Antwort, da der OP ja schon Sessions nutzt.

    Kommentar


    • #3
      Ja, das hab ich versucht wuerde ich sagen. Denn eigentlich steht da ja session_start(); etc drin. Aber das will nicht so wie ich will, schliesslich sollen ja die Variablen nur fuer diesen einen Eintrag in der Session gesetzt werden und danach im letzten Script (news_aendern.php) mit session_destroy(); wieder geloescht werden so das alle Variablen wieder leer sind. Hmm ansonsten weiss ich nicht, was an meiner Session-Variante falsch ist.

      Kommentar


      • #4
        Zitat von Kalle76
        Ja, das hab ich versucht wuerde ich sagen. Denn eigentlich steht da ja session_start(); etc drin.
        Jou. Guck Dir mal das Beispiel an:
        http://test.php-help.info/session-3/
        Quelltext und Belegung von $_SESSION wird mit angezeigt.

        Aber das will nicht so wie ich will, schliesslich sollen ja die Variablen nur fuer diesen einen Eintrag in der Session gesetzt werden und danach im letzten Script (news_aendern.php) mit session_destroy(); wieder geloescht werden so das alle Variablen wieder leer sind.
        Dagegen hilft:
        Code:
        $_SESSION = array();

        Kommentar


        • #5
          Hallo,
          Code:
          Header("Location:http://www.feral-fires.com/admin/news_aendern.php");
          Kann es sein, daß es daran liegt, daß Du die Variablen gar nicht übertragen hast -Nur so eine Idee-
          Die session-Funktion schließt ja nicht aus, daß die Variablen trotzdem vorher übergeben werden müssen, wenn ich das richtig sehe

          M.E. dürfte das dann so aussehen:
          Code:
          Header("Location:http://www.feral-fires.com/admin/news_aendern.php?forum='$forum&topic='$topic'... etc");
          Vielleicht liege ich falsch, aber das war meine erste Überlegung...

          kamalo

          Kommentar


          • #6
            Hmm naja, eigentlich sollte es ja mit Sessions ohne diese Parameter gehen, denn so kann ich z.B. keine langen Text uebergeben ($news_text). Ich glaube da gibt es ein Limit, wieviele Zeichen man so uebergeben kann. Da bin ich allerdings nicht sicher. Hab das nur gemerkt als ich das so versucht habe mit dem Newstext.

            Kommentar


            • #7
              Zitat von meikel
              Zitat von Kalle76
              Ja, das hab ich versucht wuerde ich sagen. Denn eigentlich steht da ja session_start(); etc drin.
              Jou. Guck Dir mal das Beispiel an:
              http://test.php-help.info/session-3/
              Quelltext und Belegung von $_SESSION wird mit angezeigt.

              Aber das will nicht so wie ich will, schliesslich sollen ja die Variablen nur fuer diesen einen Eintrag in der Session gesetzt werden und danach im letzten Script (news_aendern.php) mit session_destroy(); wieder geloescht werden so das alle Variablen wieder leer sind.
              Dagegen hilft:
              Code:
              $_SESSION = array();
              Hmm, kann es sein, das ich noch eine Session-ID uebergeben muss, damit das dann eindeutig funktioniert? Ansonsten versuche ich gerade dein Beispiel zu verstehen. :wink: Allerdings steht da soviel drin , was ich im Moment nicht so ganz verstehe. Daher verwirrt mich das alles ein wenig.

              Kommentar


              • #8
                Hmm ich habe den Fehler jetzt zumindest schonmal eingegrenzt. Der muesste auf alle Faelle in news_aendern3.php liegen bei der IF-Schleife, wenn ich das so richtig sehe. Denn ich hab noch ein gleiches Script, das aehnlich funktioniert zum Eintragen von News. Wenn ich news_eintragen1.php ausfuehre, dann erkennt er wunderbar ob der Haken gesetzt wurde und ein Link erzeugt werden sollen, bzw ob da kein Haken ist und dementsprechend kein Link hin soll. Eigentlich ist das fast gleich aufgebaut, bis auf die If-Schleife. Bei News eintragen geht es, bei News aendern nicht.

                Kommentar


                • #9
                  Re: Uebergabe von Variablen

                  Ich beantworte noch mal:
                  Zitat von Kalle76
                  Jetzt kommt das eigentliche Problem (bzw. vermute ich das es da liegt) Variablen wie $topic, $name, $email und $news_text wurden richtig uebergeben:

                  news_aendern3.php
                  Code:
                  <?php
                  session_start();
                  if($link != "") 
                  
                  # ...
                  
                  Header("Location:http://www.feral-fires.com/admin/news_aendern.php");
                  ?>
                  1. Wo wird $link gesetzt?
                  2. wie übergibst Du bei header() session_name und session_id, damit die Session auch dann wieder aufgenommen werden kann, wenn der Client keinen Keks haben wollte?
                  3. wie stellst Du sicher, daß nach header das Session File geschrieben wird, wenn der Client "weg ist"?

                  Zu 2.+3.:
                  Code:
                  session_write_close();
                  Header("Location:http://www.feral-fires.com/admin/news_aendern.php?" . SID);
                  exit();

                  Kommentar


                  • #10
                    Zitat von Kalle76
                    Hmm, kann es sein, das ich noch eine Session-ID uebergeben muss, damit das dann eindeutig funktioniert?
                    Siehe den anderen Text, den ich gerade eben geschrieben hatte.
                    Ansonsten versuche ich gerade dein Beispiel zu verstehen. :wink: Allerdings steht da soviel drin , was ich im Moment nicht so ganz verstehe. Daher verwirrt mich das alles ein wenig.
                    Das gibt sich. <g>

                    Kommentar


                    • #11
                      Erstmal Danke fuer deine Hilfe.

                      zu 1.) $Link wird vom vorhergehenden Formular mit einer Checkbox uebergeben. Dafuer brauch ich ja eigentlich keine Session. Muesste auch so gehen mit 'post' wenn ich mich da nicht irre.

                      zu 2. und 3.) Ja du hast Recht. Da muss ich wohl noch ne SID anhaengen. Ich dachte eigentlich, das der automatisch die Session wieder aufnimmt mit session_start();

                      Kommentar


                      • #12
                        Zitat von Kalle76
                        zu 1.) $Link wird vom vorhergehenden Formular mit einer Checkbox uebergeben.
                        Stell register_globals auf Off und nutze $_POST['link'].

                        Ich dachte eigentlich, das der automatisch die Session wieder aufnimmt mit session_start();
                        Nur dann, wenn der Client den Cookie annimmt. Wenn der keinen haben will und session.use_trans_sid = 0 ist, "ist die Session weg".

                        Kommentar


                        • #13
                          Code:
                          if($link != "") 
                          { 
                          ...
                          if($link == "") 
                          { 
                          ...
                          } else { 
                          } 
                          }
                          Ok dank deiner Hilfe funzt jetzt glaub ich alles soweit. Hab auch rausgefunden warum teilweise Variablen garnicht registriert wurden bzw. ne graue Seite erschien. Wenn man sich die Schleife da oben so betrachtet, kann das ja auch nix werden. Das schliesst sich ja schon gegenseitig irgendwie aus. Von daher lief das Script immer ins "Leere".

                          Kommentar

                          Lädt...
                          X