andi_b: variablenname in variable speichern (dynamische variablen)

moin,
habe gerade das problem einer (halbwegs) generischen auswerung von formularen. jetzt habe ich schon mit freude 'dynamische variablen' nachgelesen, womit folgende möglich ist:

$vari = "test";
$$vari = "na wo bin ich denn?";
//$test == "na wo bin ich denn?"

jetzt möchte ich aber gern den ganzen spass rückwärts, um einen variablenname mit der existenz einer tabellenspalte zu vergleichen.

pseudo: if(exist(table.$nameDerVariable)){
 //einfügen
}else{
 //spalte anlegen
}

ist das schlüssig? und geht das denn?

danke freunde der 7-tage woche ;)

andi

  1. Moin!

    Du weisst, das die übergebenen Werte der Formuare in $_GET[] oder $_POST[], also  bereits in je einem Array gespeichert sind? Die kannst Du mit den üblichen Methoden für Array's abfragen.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
    1. Hello,

      [...]

      Du weisst, das die übergebenen Werte der Formuare in $_GET[] oder $_POST[], also  bereits in je einem Array gespeichert sind? Die kannst Du mit den üblichen Methoden für Array's abfragen.

      Was allerdings ein Submitbutton als Spalte in einer DB zu suchen hat, das entzieht sich meiner momentanen Vorstellungskraft.

      Es gibt get_defined_vars() und das kann man dafür bestimmt nutzen.
      Da könnte man dann alle Variablen mit einem bestimmten Präfix suchen oder solche, die zu einem bestimmten Array gehören. Das ist meine bevorzugte Methode.

      Man nennt sowas auch Datenbündelung. Diese ermöglicht dann ganz bequem die Datenbindung zwischen verschiedenen Medien und Zeitabschnitten.

      <input type="text" name="data[vorname]" size="30">
      <input type="text" name="data[nachname]" size="30">
      <input type="text" name="data[alter]" size="3">
      <input type="radio" name="ctrl[gender]" value="male">
      <input type="radio" name="ctrl[gender]" value="female">
      <input type="radio" name="ctrl[gender]" value="unknown">

      <input type="submit" name="btn[speichern]" value="Speichern">

      Wenn man sich da dann später die Postdata anschaut

      echo "<pre>";
      print_r($_POST);
      echo "</pre>";

      dann sieht man den Nutzen sehr schnell.

      die Unterscheidung zwischen ctrl[] und data[] liegt darin, dass Data direkt abgespeichert werden können, während Controls i.d.R. nur das weitere Verhalten des Scriptes steuern oder übersetzt werden müssen, also vordefinierte Datenwerte (die dann normalisiert werden müssten) referenzieren.

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      1. Moin!

        Was allerdings ein Submitbutton als Spalte in einer DB zu suchen hat, das entzieht sich meiner momentanen Vorstellungskraft.

        Wenn Du diesem einen Name gibst, dann wird der Name und der Wert des angeklickten übertragen. Anhand des Submit- Buttons können dann verschiedene Aktionen gestartet werden.

        Wer sagt, daß Du dies in eine DB eintragen musst?

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        --
        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
        1. Hello,

          Was allerdings ein Submitbutton als Spalte in einer DB zu suchen hat, das entzieht sich meiner momentanen Vorstellungskraft.

          Wenn Du diesem einen Name gibst, dann wird der Name und der Wert des angeklickten übertragen. Anhand des Submit- Buttons können dann verschiedene Aktionen gestartet werden.

          Hier gings ja um die automatische Auswertung von Formularen. Meine Aussage sollte darauf hinweisen, dass Formulare üblicherweise mehr übertragen, als nur Datenwerte.

          Eien DB-Tabelle aus den Namen der HTTP Name:Value Paare anzulegen, ahlte ich ohnehin für etwas gewagt.

          Aber zu Übungszwecken ist schließlich (fast) alles erlaubt.

          Liebe Grüße aus http://www.braunschweig.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen