ronny: wie schleifen machen?

hallo, ich habe eine liste mit geburtsjahren

<select name="select">
    <option<?PHP echo $jahrcheck ; ?> 1933</option>
    <option<?PHP echo $jahrcheck ; ?> 1934</option>
    <option<?PHP echo $jahrcheck ; ?> 1935</option>
    <option<?PHP echo $jahrcheck ; ?> 1936</option>
    <option<?PHP echo $jahrcheck ; ?> 1937</option>
    <option<?PHP echo $jahrcheck ; ?> 1938</option>
    <option<?PHP echo $jahrcheck ; ?> 1939</option>
    <option<?PHP echo $jahrcheck ; ?> 1940</option>
    ........
    <option<?PHP echo $jahrcheck ; ?> 1990</option>
    <option<?PHP echo $jahrcheck ; ?> 1991</option>
    <option<?PHP echo $jahrcheck ; ?> 1992</option>
  </select>

dann habe ich eine variable mit dem richtigen jahr

$jahr = 1991
und das wort selected

$jahrcheck = "selected ";

ich will es lösen, das nun das richtige jahr im formular gleich selected ist.

der code dafür würde dann quasi so aussehen

<option <?PHP echo $jahrcheck1 ; ?> 1991</option>

es geht mit if

if ($HTTP_SESSION_VARS[jahr] == "1991"):
$jahrcheck1 = "selected";
endif;

aber da müsst ich ewig viel code schreiben,außerdem müsste ich noch jahrcheck durchnummerieren,  gibt es da nicht was besseres?

danke

ronny

wie kann ich nun eine schleife bauen, die prüft welches jahr die variable hat und dann eben genau im richtigen feld das selected reinsetzt?

  1. hallo, ich habe eine liste mit geburtsjahren

    <select name="select">
        <option<?PHP echo $jahrcheck ; ?> 1933</option>
        <option<?PHP echo $jahrcheck ; ?> 1934</option>
        <option<?PHP echo $jahrcheck ; ?> 1935</option>
        <option<?PHP echo $jahrcheck ; ?> 1936</option>
        <option<?PHP echo $jahrcheck ; ?> 1937</option>
        <option<?PHP echo $jahrcheck ; ?> 1938</option>
        <option<?PHP echo $jahrcheck ; ?> 1939</option>
        <option<?PHP echo $jahrcheck ; ?> 1940</option>
        ........
        <option<?PHP echo $jahrcheck ; ?> 1990</option>
        <option<?PHP echo $jahrcheck ; ?> 1991</option>
        <option<?PHP echo $jahrcheck ; ?> 1992</option>
      </select>

    dann habe ich eine variable mit dem richtigen jahr

    $jahr = 1991
    und das wort selected

    $jahrcheck = "selected ";

    ich will es lösen, das nun das richtige jahr im formular gleich selected ist.

    der code dafür würde dann quasi so aussehen

    <option <?PHP echo $jahrcheck1 ; ?> 1991</option>

    es geht mit if

    if ($HTTP_SESSION_VARS[jahr] == "1991"):
    $jahrcheck1 = "selected";
    endif;

    aber da müsst ich ewig viel code schreiben,außerdem müsste ich noch jahrcheck durchnummerieren,  gibt es da nicht was besseres?

    danke

    ronny

    wie kann ich nun eine schleife bauen, die prüft welches jahr die variable hat und dann eben genau im richtigen feld das selected reinsetzt?

    Ein bischen dumm?

    Das ist meine Meinung dazu.

    Grüße,

    Wolfram

    1. hi wolfram,

      <img src="/images/14.gif" border="0" alt="">

      Das ist meine Meinung dazu.

      lies dir mal die regeln hier im forum durch. da ist die rede von menschlichen umgang miteinander.

      gruß
      Ilja

      1. Hello,

        wieso? Ist dumm sein den unmenschlich?

        Ist doch die höchste Form der Erkenntnis: Ich weiß, dass ich nichts weiß.

        Das Schlimm ist, je mehr man weiß, desto bewusster wird einem dass.

        Manche Fragen kann man nicht mehr beantworten, weil die Antwort so komplex wäre, dass der Andere einem nicht bis zur Hälfte zuhören würde und die einfache Antwort, die er erwartet, so falsch ist, dass einem vor seiner eigenen Lüge schaudern würde.

        Ronny muss über das "Du bist wohl ein bisschen dumm?" also keinesfalls beleidigt sein. ER ist NUR ein BISSCHEN dumm. Der Poster des Pics aber über alle Maßen.

        Grüße

        Tom

        1. hi,

          wieso? Ist dumm sein den unmenschlich?

          dumm sein und etwas nicht wissen sind in meinen augen zwei verschiedene dinge. wenn jemand etwas nicht weiß, impleziert das nicht automatisch, dass man auch dumm ist. insofern war das statement auch falsch.

          zum anderen geht es nicht darum, wie dumm oder intelligent man ist oder was menschlich ist und was nicht. schließlich sind beleidigungen auch etwas menschliches und trotzdem sind sie hier nicht erwünscht. und der kommentar war in meinen augen erstens überflüßig und zweitens beleidigend.

          Ist doch die höchste Form der Erkenntnis: Ich weiß, dass ich nichts weiß.

          wenn du weißt, dass du nichts weißt, dann weißt du ja schon mal etwas, nämlich das du nichts weißt. und somit ist auch dieser schluß falsch.

          Manche Fragen kann man nicht mehr beantworten, weil die Antwort so komplex wäre, dass der Andere einem nicht bis zur Hälfte zuhören würde und die einfache Antwort, die er erwartet, so falsch ist, dass einem vor seiner eigenen Lüge schaudern würde.

          kann so sein, trotzdem kein grund für beleidigungen

          Ronny muss über das "Du bist wohl ein bisschen dumm?" also keinesfalls beleidigt sein.

          was er muss und was nicht ist nicht unsere sache, wenn du wissen willst, wie er es aufgefasst hat, frag ihn.

          Ilja

          1. Hello,

            was er muss und was nicht ist nicht unsere sache, wenn du wissen willst, wie er es aufgefasst hat, frag ihn.

            Deine Antwort entbehrt jeden Charms, dafür aber nicht einer gewissen proletarischen Agressivität. *wow*

            Da kann man die Power des Absolutisten spüren - oder?

            Grüße

            Tom

            1. hi Tom,

              wenn du mich auf ein bier einlädst, können wir gerne über gott und die welt philosophieren. ansonsten sind wir uns beide einig, beleidungen habe hier im forum nichts zu suchen, egal wie man es drehen will

              Ilja

              1. Hello,

                wenn du mich auf ein bier einlädst, können wir gerne über gott und die welt philosophieren. ansonsten sind wir uns beide einig,

                Gute Idee, ich hol mir jetzt eins. Eigentlich müsste ich ja an meiner "Universalfunktion" weiterarbeiten. Aber die guten Ideen kann man eben nicht erzwingen.
                Wenn Du rechtzeitig vorbei kommst, sind noch genügend Hefeweizen da *gg*

                beleidungen habe hier im forum nichts zu suchen, egal wie man es drehen will

                Dem kann ich nichts hinzufügen.

                Grüße

                Tom

    2. ey was bist du für ein typ?

      du leidest wohl an selbstüberschätzung, naja zum glück weißt du ALLES!!

      gruß
      ronny

      1. Hallo Ronny,

        ey was bist du für ein typ?

        du leidest wohl an selbstüberschätzung, naja zum glück weißt du ALLES!!

        Nö aber er liest ein Manual.
        Und kauft sich ein Buch bevor er so etwas  fragt.
        TomIRL

        1. hi,

          Nö aber er liest ein Manual.
          Und kauft sich ein Buch bevor er so etwas  fragt.

          mache ich, bzw. hab ein buch ( sogar recht dick ;) )

          aber woher soll ein anfänger alle zusammenhänge und möglichkeiten des programmierens kennen ? glaub mir, die seiten mit schleifen und kotroll strukturen sind aufgeschlagen und liegen auf meinen schoß, aber so richtig kapiert hab ich es noch nicht.

          aber trotzdem kann man anworten ohne vielleicht beleidigend zu werden. ich wette es gäbe dinge, da müsste er nachschlagen bzw würde sich die haare raufen weil er nicht drauf kommt, ich würde deswegen aber nicht solche grafiken verwenden ! !

          na egal, sinnlose disk. es gibt nunmal leider gottes menschen die von 12 bis mittag denken wenn es umgangsformen geht..

          ciao

          ronny

          1. Sieh mal lieber zu dass Du Deine Sache da verstehst.
            Ist nämlich nicht schwer.
            Siehe meine andere Antwort.

    3. Herzlichen Glückwunsch Wolfram Hüttermann, sie sind die erste richtig kompetente Person hier in Sachen Überheblichkeit, weit und breit...
      Solche Schlaumeiereien an Fragesteller sind schon selten....
      Super Hilfe, Kompliment....

      <img src="/images/14.gif" border="0" alt="">
      Das ist meine Meinung dazu.
      Grüße,
      Wolfram

    4. Hi,

      <img src="/images/14.gif" border="0" alt="">

      Das ist meine Meinung dazu.

      etwas radikal, hm?
      <img src="http://codecamp.net/graphics/unhoeflich.gif" border="0" alt="">

      @ronny

      Wenn du weißt mit welchem Jahr die Schleife beginnt und mit welchem sie aufhört kannst Du es ja mal hiermit versuchen:

      http://de3.php.net/manual/en/control-structures.php

      als Beispiel:

      for($i=1980;$i<=2003;$i++) {
        echo "<option value="$i"".selected($i).">$i</option>";
      }

      dann schreibst Du dir noch ne Funktion, nämlich selected(), mit der du überprüfen kannst ob $i == $_SESSION['jahr'] ist, z.B. so:

      function selected($i) {
        echo ($i == $_SESSION['jahr']) ? ' selected="selected"' : '';
      }

      Gruß,
      small-step

      1. Hi,

        als Beispiel:

        for($i=1980;$i<=2003;$i++) {
          echo "<option value="$i"".selected($i).">$i</option>";
        }

        dann schreibst Du dir noch ne Funktion, nämlich selected(), mit der du überprüfen kannst ob $i == $_SESSION['jahr'] ist, z.B. so:

        function selected($i) {
          echo ($i == $_SESSION['jahr']) ? ' selected="selected"' : '';

        danke, es gibt sie noch, die guten helferlein ;)

        dein vorschlag hat mich auf den richtigen weg gebracht. sicherlich ne möglichkeit, auch die dinge der anderen helfer können vielleicht zum ziel führen, aber ich habe es mir jetzt so zusammengebastelt.

        <?php
        //for schleife test

        ?>
        <select name="tag" id="tag">
        <?php
        $jahr = 1931;

        for($i=1933;$i<=1992;$i++) {
         $select = "";
          if ($i == $jahr)
        {$select = "selected";}
        echo "<option $select>".$i."</option>";
        }

        ?>
        </select>

        mir geht es darum, erstmal dinge zu schreiben die ich verstehe und das habe ich verstanden.*gg* mit komplexeren sachen kann ich mich später rumschlagen :)

        dein ansatz hat mir die richtung gewiesen. mehr wollte ich nicht. danke

        ronny

  2. Hallo,

    if ($HTTP_SESSION_VARS[jahr] == "1991"):

    Du solltest besser $_SESSION verwenden.

    aber da müsst ich ewig viel code schreiben,außerdem müsste ich noch jahrcheck durchnummerieren,  gibt es da nicht was besseres?

    Es gibt Arrays.
    http://www.php.net/manual/de/language.types.array.php

    wie kann ich nun eine schleife bauen, die prüft welches jahr die variable hat und dann eben genau im richtigen feld das selected reinsetzt?

    Es gibt Schleifen.
    http://www.php.net/manual/de/control-structures.php

    Gruesse,

    Thomas

  3. Oh Mann,

    <option value=""></option>
    Sieht die Option vielleicht so aus?
    Dann sachon mal was von arrays gehört?
    Nein?

    Wo kommen denn die Daten her aus ner Datenbank?
    Wie schreibt man Daten in ein Array?
    $arr[]=$var;
    Was macht man dann?
    Man wertet das Array aus.
    Wie wertet man das Array aus?
    Vorzugsweise mit einer foreach () Schleife.
    Ja Schleife lieber Tom! (nur für Insider)

    foreach ($arr as $key=>$value){}

    Noch Fragen?

    Viele Grüße TomIRL

    1. Hello,

      <select name="data[jahr][]">

      <option value=""></option>
      Sieht die Option vielleicht so aus?
      Dann sachon mal was von arrays gehört?
      Nein?

      Wo kommen denn die Daten her aus ner Datenbank?
      Wie schreibt man Daten in ein Array?
      $arr[]=$var;
      Was macht man dann?
      Man wertet das Array aus.
      Wie wertet man das Array aus?
      Vorzugsweise mit einer foreach () Schleife.
      Ja Schleife lieber Tom! (nur für Insider)

      Hab Dich erwischt *gg* Stimme Dir aber zu.

      foreach ($arr as $key=>$value){}

      und die Frage mit dem "wie vorbelegen?"

      $default ist das Array der anzuzeigenden Vorbelegungen. Der Key des Wertes wird in der DB abgespeichert. =array(5=>"1975";7=>"1977";...)

      $db_value ist der Wert aus dem Datenbankfeld.

      foreach ($default as $key => $val)
      {
        $val=htmlentities($val);
        $selected="";
        if ($db_value = $key)
        {
          $selected=" selected";
        }
        echo "<option value="$key"$selected >$val</option>";
      }

      Versuch es mal so. Ich hoffe, ich habe keinen fehler drin

      Grüße

      Tom

      1. Hello,

        $db_value ist der Wert aus dem Datenbankfeld.

        foreach ($default as $key => $val)
        {
          $val=htmlentities($val);
          $selected="";

        if ($db_value == $key) ## vielleicht sogar ===

        {
            $selected=" selected";
          }
          echo "<option value="$key"$selected >$val</option>";
        }

        War noch ein Fehler drin.

        Hättest Du aber sicher auch selber gesehen.

        Tom

      2. <select name="data[jahr][]">

        Vorrausgesetzt die Daten sind so!

        Keine Ahnung.
        Ich habs auch wirklich allgmein gehalten.
        Tom

        1. Hello,

          <select name="data[jahr][]">

          Vorrausgesetzt die Daten sind so!

          Keine Ahnung.
          Ich habs auch wirklich allgmein gehalten.

          Nee, das habe ich nun nicht gemeint. Ich wollte ronny darauf hinweisen, dass er für sein Dialogelement keinen Rückgabenamen vereinbart hatte. Was nützt ihm das Select-Element, wenn er den Rückgabewert nicht auffängt in seinem Script.  Der würde dann ohne "name= " irgendwo mitten im Request-String stehen und von PHP ignoriert werden.

          name="data[jahr][] als Name fürht dazu, dass das Ergenis der Auswahl im Select-Objekt im Script dann später in

          $_POST["data"]["jahr"][0]
           ..
           $_POST["data"]["jahr"][n]

          erscheint. Die Abgrenzug und Bindung von Formularfeldern in

          [data] gegenüber [ctrl] dür Buttons und Entscheidungen hat sich bewährt. Alle an die DB gebundenen Daten finden sich dann in [data] und können rein meschanisch mit wenigen Zeilen in einer Schleife (!) abgearbeitet werden. Dafür kann man sich polymorphe Funktionen schreiben, die für 90% der Anwendungsfälle passen. Eine komplexe Webanwednung lässt sich dadurch mit wenigen Zeilen und einer schlauen include-Datei (oder auch Klasse) erledigen.

          Grüße

          Tom