Anna: PHP variable dauerhaft speichern!!!

Hallo Selfmania :D,

Problembeschreibung:
Ich versuche momentan ein Script zu schreiben mit dem ich durch ein Listenfeld Zahlen in eine Variable speicher und sie einer if Funktion zuweist.

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" name="abschicken>"

<select name="zahlen" onchange="abschicken.submit()">
<option>1</option>
...
<option>10</option>
</select>

Nun kommt jetzt eine Variable in der ich den Wert gerne so lange speichern will bis ich ein neuen Wert aus der Liste auswähle.

<?php

$variable=$_POST['zahlen'];

Was muss ich jetzt genau machen das diese Variable den Wert konstant behält bis ich einen neuen Wert auswähle. Ich hoffe mir kann jemand helfen.

Gruß

Anna

  1. <select name="zahlen" onchange="abschicken.submit()">
    <option>1</option>
    ...
    <option>10</option>
    </select>

    Und welche Option hat das selected Attribut?
    das sollte deine ganze Problemlage beantworten.

    PS.
    Prüfe, ob $_POST Variablen überhaupt existieren, bevor du sie verwendest.

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
    1. Hallo,

      Und welche Option hat das selected Attribut?
      das sollte deine ganze Problemlage beantworten.

      Kannst du das mal bitte näher erleutern mit dieser Option!?

      Prüfe, ob $_POST Variablen überhaupt existieren, bevor du sie verwendest.

      Ja ein Wert bekomm ich ja,
      ich will es ja so programmieren

      IF(!isset($_POST['zahlen']))
      {
      $variable=1;
      }

      Das aus dem Grund, weil man ja erst was auswählen muss damit die Variable einen Wert hat.

      else
      {
      $variable=$_POST['zahlen'];

      }

      Das funktioniert so weit, aber wenn ich das Script neu lade ist in der Variablen ja nicht mehr die Zahl drin die man gewählt hat.

      Ich habe nämlich eine Blättern-Funktion indem die Zahl beim nächsten Scriptladen die Anzahl der gezeigten Zeilen angeben soll, z.B.

      Ich wähle 5 aus

      dann kommen 5 Zeilen pro Seite, wenn ich aber jetzt insgesamt 10 Zeilen habe kann ich die nächsten Datensätze aufrufen, deshalb ist es wichtig das die Variable den Wert behält.

      Gruß

      Anna aus Würzbug :D

      1. Und welche Option hat das selected Attribut?
        das sollte deine ganze Problemlage beantworten.

        Kannst du das mal bitte näher erleutern mit dieser Option!?

        In einem Selectfeld sollte es immer einen Defaultwert geben.
        Das hat streng genommen damit zu tun, dass ein User nicht unterscheiden kann, ob der angezeigte Wert auch von ihm aktiv selektiert wurde, oder nur zufällig der erste Eintrag von unselektierten Optionen ist.

        HTML
        <option value="someval" selected>Some Label</option>
        XHTML
        <option value="someval" selected="selected">Some Label</option>

        In deiner Logik
        schreibe die Optionen in einer Schleife.
        prüfe jeweils ob value == $_POST['feldname']
           Schreibe das selected, wenn wahr

        mfg Beat

        --
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
        Der Valigator leibt diese Fische
        1. Hallöchen,

          In einem Selectfeld sollte es immer einen Defaultwert geben.
          Das hat streng genommen damit zu tun, dass ein User nicht unterscheiden kann, ob der angezeigte Wert auch von ihm aktiv selektiert wurde, oder nur zufällig der erste Eintrag von unselektierten Optionen ist.

          HTML
          <option value="someval" selected>Some Label</option>
          XHTML
          <option value="someval" selected="selected">Some Label</option>

          In deiner Logik
          schreibe die Optionen in einer Schleife.
          prüfe jeweils ob value == $_POST['feldname']
             Schreibe das selected, wenn wahr

          Des Hilft mir doch schon mal um einiges weiter, vielen Dank :)
          werds gleich mal ausprobieren.

          Gruß Anna

  2. Mahlzeit Anna,

    Nun kommt jetzt eine Variable in der ich den Wert gerne so lange speichern will bis ich ein neuen Wert aus der Liste auswähle.

    <?php

    $variable=$_POST['zahlen'];

    Was muss ich jetzt genau machen das diese Variable den Wert konstant behält bis ich einen neuen Wert auswähle.

    Das passiert ganz von alleine - die Variable behält solange ihren Wert, bis Du ihr einen neuen zuweist oder sie entfernst ... längstens natürlich bis zum Ende der Laufzeit des PHP-Skripts.

    Wenn es Dir um eine Speicherung darüber hinaus geht, solltest Du Dich über die verschiedenen Speicherorte bzw. -methoden informieren:

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  3. Hi,

    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" name="abschicken>"
    <select name="zahlen" onchange="abschicken.submit()">

    was für ein Objekt ist "abschicken", und was macht dessen submit()-Methode?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo Cheatah,

      <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" name="abschicken>"
      <select name="zahlen" onchange="abschicken.submit()">

      was für ein Objekt ist "abschicken", und was macht dessen submit()-Methode?

      Abschicken ist name Name beim form-Tag und abschicken.submit() aktiviert ein virtuellen Submitbutton ohne ihn zu drücken, sprich automatisch.

      Also ist jetzt vielleicht en bisl komisch ausgedrückt aber im Prinzip hab ich des so verstanden.

      Gruß Anna

      1. Abschicken ist name Name beim form-Tag und abschicken.submit() aktiviert ein virtuellen Submitbutton ohne ihn zu drücken, sprich automatisch.

        Dann wärs aber sinnvollerweise window.abschicken bzw. document.abschicken - oder aber document.getElementsByName('abschicken')[0]

        In jedem Fall hast du aber das Problem, dass eine name-Wert nicht dokumentweit eindeutig sein muss.

        1. Hallo,

          Ja mhh, dass Problem ist ja ich bin Anfängerin in Java, hat jemand ne idee wie ich dass auch ohne session machen kann oder sollte ich dafür session verwenden. Bei Sessions ist halt das Problem, dass ich ja nur einen Wert dauerhaft haben will und es ist halt auch en großer aufwand (finde ich) weil ich es halt net so gut kann :(

          Kann mir jemand einen Tipp geben wie ich meine Problemstellung lösen kann, auch wenns nur ein Tutorial ist das auf meinen Fall bezogen ist.
          Im Internet habe ich auch net wirklich was gefundne, ich bin zufällig auf dieses Forum gestoßen also wäre wirklich sehr nett :)

          Ach sorry fürs TUFU, ja ich habe die Regeln gelsesen :P

          Gruß Anna

          1. Mahlzeit Anna,

            Ja mhh, dass Problem ist ja ich bin Anfängerin in Java,

            Das macht nichts - schließlich handelt es sich ja um ein Javascript-Problem.

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        2. Mahlzeit suit,

          Abschicken ist name Name beim form-Tag und abschicken.submit() aktiviert ein virtuellen Submitbutton ohne ihn zu drücken, sprich automatisch.

          Dann wärs aber sinnvollerweise window.abschicken bzw. document.abschicken - oder aber document.getElementsByName('abschicken')[0]

          Mitneffen - deutlicher sinnvoller wäre "http://de.selfhtml.org/javascript/sprache/objekte.htm#this@title=this.http://de.selfhtml.org/javascript/objekte/elements.htm#form@title=form.http://de.selfhtml.org/javascript/objekte/forms.htm#submit@title=submit();" ...

          MfG,
          EKKi

          --
          sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
          1. Mitneffen - deutlicher sinnvoller wäre "http://de.selfhtml.org/javascript/sprache/objekte.htm#this@title=this.http://de.selfhtml.org/javascript/objekte/elements.htm#form@title=form.http://de.selfhtml.org/javascript/objekte/forms.htm#submit@title=submit();" ...

            Das ist die Deluxe-Variante :p - meinen zusätzlichen Hinweis mit dem nicht dokumentweit eindeutigen Name-Attribut hast du ja hoffentlich gelesen :)

      2. Hi,

        Abschicken ist name Name beim form-Tag

        nein, das ist "abschicken", nicht "Abschicken". Der Unterschied ist vergleichbar mit dem zwischen "abschicken" und "bbschicken".

        und abschicken.submit() aktiviert ein virtuellen Submitbutton ohne ihn zu drücken, sprich automatisch.

        Nein, dazu müsste zunächst einmal ein JavaScript-Objekt namens "abschicken" existieren, welches das Formular namens "abschicken" referenziert. Dies ist per se nicht gegeben - das wäre auch fatal. Und ja, im IE *ist* es fatal.

        Also ist jetzt vielleicht en bisl komisch ausgedrückt aber im Prinzip hab ich des so verstanden.

        Globale JavaScript-Objekte entstehen nicht magisch aus dem luftleeren Raum. Außer im IE und einigen Browsern, die dessen Fehler nachahmen.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes