Need Help - Variablenübergabe in PHP-Ausdrücken

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

  • Need Help - Variablenübergabe in PHP-Ausdrücken

    Ich möchte eine Reihe von einheitlich benannten Eingabefeldern systematisch durchgehen (while-Schleife),
    aber ich weiß leider nicht, wie man einen regulären Ausdruck (Befehl) in PHP mit einer Variablen kombiniert?!

    Soll ungefähr so aussehen, bpsw.:
    $montag_von_ID=$_POST['montag_von_ID'];

    wobei ID eine Variable sein soll ! So, wie es jetzt dasteht, wird ID natürlich nicht als Variable behandelt!

    Ich dachte mir, es könnte mit eval klappen (gibt es auch in JScript):

    eval('$montag_von_'.$ID)= ...

    Was aber nicht klappt?! Wieso? Was mache ich falsch? Irgendwie check ich die eval-Fkt eh noch net so ganz...

  • #2
    Re: Need Help - Variablenübergabe in PHP-Ausdrücken

    die antwort auf deine frage findest du unter http://www.php.net/manual/de/languag...s.variable.php

    aber überleg dir mal, ob arrays nicht die bessere wahl wären ...


    btw: ist das so schwer, eine frage im richtigen forum zu stellen?
    die thematik ist doch von "scriptgesuch" meilenweit entfernt ...
    *verschieb*
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Den selben Gedanken hatte ich auch das erste Mal, als ich Daten aus POST bzw. GET-Arrays dynamisch auslesen wollte.
      Der Ansatz ist eigentlich ganz gut, aber du kannst im Namen des HTML-Input-Elements deines Forumlars auch zwei eckige Klammern hinten dranhaengen, also so: <input type="text" name="daten[]">
      Wenn das Skript anschließend beispielsweise per POST versendet wird (*lol* die gute alte Post) ist $_POST["daten"] ein Array. Du kannst also wirklich mehrere input-Felder so nennen (auch multiple select-Elemente funktionieren so) und der Inhalt wird hintereinander in diesem Array gespeichert.

      Dein Ansatz mit dem dynamischen Variablennamen ist allerdings falsch:
      PHP-Code:
      eval('$montag_von_'.$ID)= 
      müsste wohl eher heißen

      PHP-Code:
      eval("$montag_von_".$ID."=\"wert\""); 
      eval() braucht vollstaendingen PHP-Code, der dann an den Parser geschickt wird, also richtige Anweisungen die mit einem Semikolon enden und nicht nur Teile davon.

      Kommentar


      • #4
        Aber das ist doch ein generelles Problem, oder? Ich meine, was macht man denn, wenn man z.B. ne Variable per <form>-ular übergeben will? So in dem Stil:

        <form name="form1" method="post" action="machwas.php?druckmisch=$watisdat">

        Wobei in der Datei machwas.php die Variable $druckmisch zur Verfügung stehen soll, die wiederum dem Inhalt der bereits def. Variable $watisdat entsprechen soll... So funzt das nicht, aber wie funzt es denn?

        Kommentar


        • #5
          Apropos <form>, wieso kann ich in der action eigentlich keine arrays übergeben? Ich hab das mal versucht, so in etwa


          <form name="form1" method="post" action="machwas.php?druckmisch=montag_von_[1]">

          Und in machwas.php stand dann halt:

          $honk=$_POST['montag_von_[1]'];
          echo $honk;

          ^ Geht aber nicht! montag_von_[1] wird als montag_von_ 1 interpretiert?! Wieso? Weshalb? Gibt es doch eine Möglichkeit, arrays zu übergeben und dann mit ihnen zu arbeiten?


          Und zu der eval-Geschichte:

          Danke für den Link, aber so richtig schlau bin ich auch nicht daraus geworden. Sagen wir mal, ich möchte eine variable Variable, die sich
          $montag_von_ID nennt, benutzen... wobei sich die ID ständig ändert (zum Bsp hochgezählt wird)... So und nun möchte ich das Ganze auch noch mit einem geposteten Formular verknüpfen, undzwar so:

          $montag_von_ID= $_POST['montag_von_ID'];

          Wie müsste da jetzt die eval-Geschichte dazu aussehen?

          eval("$montag_von_$ID= $_POST['montag_von_$ID']");

          funzt ja nun net...?! =/

          Kommentar


          • #6
            machwas.php?druckmisch=montag_von_[1]
            Was soll denn der Schrott hier ... ist die Variable ein Array ... oder der Wert ... denk doch mal nach ... !
            carpe noctem

            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

            Kommentar


            • #7
              Heisst das jetzt, ich hätte machwas.php?druckmisch[]=montag_von_[1] schreiben müssen...? Oder wie soll ich das nu verstehen? Sorry, ich sitz schon ne ganze Weile am Code und irgendwie steh ich mächtig auf dem Schlauch im Moment... X/

              Kommentar


              • #8
                Aber dann wiederum, $honk=$_POST['montag_von_[1]'];
                funktioniert ja genauso wenig.... ?! ( in der Datei machwas.php)

                Kommentar


                • #9
                  carpe noctem

                  [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                  [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                  Kommentar


                  • #10
                    Jungchen, jetzt mal ganz sachte, ja?
                    Du machst jetzt erstma diese ekligen eckigen Klammern um die 1 bei dieser Montagsvariable weg, ok?

                    Ich meinte mit den eckigen Klammern das nur so:

                    <input type="text" name="daten[]" value="test1">
                    <input type="text" name="daten[]" value="test2">

                    Wenn man sowas als Inhalt eines HTML-Formulars verschicken wuerde, waere $_POST["daten"] ein Array aus den Werten "test1", "test2". Jetzt verstanden worauf das hinauslaeuft?

                    Mach das am besten nur mit Formularen die mit POST abgesendet werden.

                    Und das:

                    PHP-Code:
                    eval("$montag_von_$ID$_POST['montag_von_$ID']"); 
                    kann auch nicht funktionieren. Du musst $-Zeichen entwerten, wenn sie eine Variable im ausgefuehrten Code werden sollen und nicht entwerten wenn fuer sie deren Inhalt im ausgefuehrten Code eingesetzt werden soll.
                    Demnach sieht das dann so aus:

                    PHP-Code:
                    eval("\$montag_von_".$ID."= $_POST['montag_von_".$ID."']"); 
                    $ID muss jetzt irgendeine dynamische Zaehlvariable sein.

                    Btw: du musst auch mal deinen Sachverhalt erklaeren, also sagen wo _genau_ dein Problem liegt und was _genau_ du machen willst. Nur so koennen wir dir helfen oder ueberhaupt erstmal dein Problem erfassen.
                    Bis jetzt weiß ich von dir nur, dass eine Variable mit dynamischen Namen erzeugen willst, naemlich mit sich veraendernder Nummer hinten dran.

                    Kommentar


                    • #11
                      Eckige Klammern funktionieren grundsätzlich auch beim GET ... nur
                      machwas.php?druckmisch=montag_von_[1]
                      weist der Variablen druckmisch den Wert "montag_von_[1]" zu ... oder irgendwas in der Art ...

                      machwas.php?druckmisch=1&amp;montag_von[]=blah würde ein Array "montag_von" erstellen ... allerdings nur wenn register_globals aktiviert ... da dieses aber im Normalfall nicht ist ... $_GET["montag_von"][1] ...
                      carpe noctem

                      [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                      [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                      Kommentar


                      • #12
                        warum nicht das hier ?

                        PHP-Code:

                        $x 
                        'hallo';
                        $y 'du da';

                        $
                        $x $y;

                        echo 
                        'was sagst '.$hallo.'zu ?';

                        // ergibt dann "was sagst du dazu" 
                        ist doch huebsch, so ein doppeltes $$ ...
                        geh zu lixlpixel phpsnippets.de fuer php code zum runterladen

                        Kommentar

                        Lädt...
                        X