schning: Variablen auslesen?!?

hallo

Ich versuche gerade Variablen aus einem mit post gesendetem Formular,
auszuwerten bzw zu ueberpruefen welche der variablen Inhalte besitzten!ich weiss nur nicht wie ich da am besten reliesiere!

$capuSweat=$_POST['anzahlcs'];
$fllsweat=$_POST['anzahlfs'];
$fllshirt=$_POST['anzahlfsh'];
$fllsnol=$_POST['anzahlfsl'];
$vest=$_POST['anzahlves'];
$cap=$_POST['anzahlcap'];
$keyo=$_POST['anzahlkeyo'];
$keys=$_POST['anzahlkeys'];
$sb=$_POST['anzahlsb'];
$coo=$_POST['anzahlcoo'];

wie finde ich herraus welche der variablen inhalte besitzen ?

danke fuer eure hilfe mfG schning

  1. lass doch einfach alle variablen mal miit "echo" ausgeben ... dann weißt du's

    cu krüml

    1. Hallo!

      lass doch einfach alle variablen mal miit "echo" ausgeben ... dann weißt du's

      Von empty(), isset(), is_array(), strlen() und count() hältst Du nichts?

      Beste Grüße
      Viennamade

      1. oder so ;-)
        kennst du dich mit javascript aus? @viennamade

        cu krüml

    2. hi kruemel

      ja aber meine frage besteht aber darin, wie ich ueber "alle" Variablen laufen kann? und dann sehe welche mit werten gefuellt sind!

      mfg schning

  2. Moin,

    hallo

    Ich versuche gerade Variablen aus einem mit post gesendetem Formular,
    auszuwerten bzw zu ueberpruefen welche der variablen Inhalte besitzten!ich weiss nur nicht wie ich da am besten reliesiere!

    Ich verstehe die Frage nicht ganz. Aber ich verwende zum Auslesen der Variablen immer folgenden Code:

    \\     define ('AllowGET', 1);
        define ('AllowPOST', 2);
        # hier wird definiert, welcher Zugriff erlaubt wird
        define ('Access', AllowGET | AllowPOST); # Sowohl POST als auch GET erlaubt

    # hier werden alle Parameter eingelesen:
        $MeineErsterParam = GetParamValue('Erster');
        $ZweiterParam = GetParamValue('Zweiter)';
        # ...

    .
        .
        .

    function GetParamValue($name)
        {
            if ((Access & AllowGET) == AllowGET)
                if (isset($_GET[$name]))
                    return $_GET[$name];

    if ((Access & AllowPOST) == AllowPOST)
                if (isset($_POST[$name]))
                    return $_POST[$name];
        }
    ///

    Auf diese Weise kann man dynamisch anpassen, woher die Variablen kommen dürfen: POST, GET oder beidem. Kann man natürlich auf Cookies erweitern.

    wie finde ich herraus welche der variablen inhalte besitzen ?

    \\ if (isset($Variable)) # is gesetzt
    ///

    Gruß,
    KonRad -

  3. Hello,

    $capuSweat=$_POST['anzahlcs'];
    $fllsweat=$_POST['anzahlfs'];
    $fllshirt=$_POST['anzahlfsh'];
    $fllsnol=$_POST['anzahlfsl'];
    $vest=$_POST['anzahlves'];
    $cap=$_POST['anzahlcap'];
    $keyo=$_POST['anzahlkeyo'];
    $keys=$_POST['anzahlkeys'];
    $sb=$_POST['anzahlsb'];
    $coo=$_POST['anzahlcoo'];

    wie finde ich herraus welche der variablen inhalte besitzen ?

    Durch Umstapeln in andere Variablen jedenfalls nicht. Das ist unsinn und kostet nur Speicherplatz.

    Das POST-Array ist IMMER angelegt, wenn das Script startet. Also darf man es mit foreach() auch abfragen:

    <?php  ### list_post_vars.php ###

    foreach($_POST as $key => $val)
    {
      if (is_array($val))
      {
        echo "<b>[$key]</b> ist ein Array<br>\n";
      }
      else
      {
        echo "<b>[$key]</b> ".((strlen(trim($val))>0)?"enhält den Wert <b>$val</b>":'ist leer')."<br />\n";
      }
    }

    ?>

    Und hier ein kleines Formular zum Absenden:

    <form action="list_post_vars.php" method="post" enctype="multipart/form-data">

    <p>Vorname: <input type="text" name="Vorname" size="30" /></p>
      <p>Nachname: <input type="text" name="Nachname" size="30" /></p>
      <p>Alter: <input type="text" name="Alter" size="10" /></p>
      <p>Geschlecht weiblich: <input type="radio" name="geschlecht" value="weiblich" />
                    männlich: <input type="radio" name="geschlecht" value="m&auml;nnlich" />
                    unbekannt: <input type="radio" name="geschlecht" value="unbekannt" /></p>

    <p><input type="submit" name="btn[speichern]" value="speichern" /></p>
    </form>

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Moin,

      Durch Umstapeln in andere Variablen jedenfalls nicht. Das ist unsinn und kostet nur Speicherplatz.

      Du kannst ja die Werte im $_POST-Hash danach leeren, wenn Du willst. Aber Unsinn ist das ganz bestimmt nicht, es beschleunigt den Zugriff nämlich.

      Gruß,
      KonRad -

      1. Hello,

        Durch Umstapeln in andere Variablen jedenfalls nicht. Das ist unsinn und kostet nur Speicherplatz.

        Du kannst ja die Werte im $_POST-Hash danach leeren, wenn Du willst. Aber Unsinn ist das ganz bestimmt nicht, es beschleunigt den Zugriff nämlich.

        hahaha, guter Witz.

        Du meinst also die Zuweisung und das Löschen kosten keine Zeit?

        Und wieviele Mikrosekunden unterschiedlich ist denn der Zugriff auf ein Arrayelement gegenüber dem Zugriff auf eine skalare Variable?

        Poste doch mal bitte Deine Messergebnisse

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Hello,

          sowas lässt mir ja immer keine Ruhe! Hier die Ergebnisse:

          Skalar:   1095013426.03 - 1095013424.79 = 1.23594403267
          Array:    1095013537.79 - 1095013535.83 = 1.96358895302

          Skalar:   1095013591.03 - 1095013589.83 = 1.1999168396
          Array:    1095013623.33 - 1095013621.38 = 1.94824004173

          Array:    1095013649.7 - 1095013647.74 = 1.95849680901
          Skalar:   1095013680.01 - 1095013678.8 = 1.21215987206

          <?php  ### make_skalar_var.php ###

          function getmicrotime()
          {
             list($usec, $sec) = explode(" ",microtime());
             return ((float)$usec + (float)$sec);
          }
          #--------------------------------------------------------------------------

          $start = getmicrotime();

          $ausgabe = '';
          $eingabe1 = 'A';
          $eingabe2 = 'C';
          $eingabe3 = 'B';
          $eingabe4 = ' ';
          $count = 0;
          $startx = 0;
          $stopx = 100000;

          for($count = $startx;$count < $stopx;$count++)
          {
            $ausgabe .= $eingabe1;
            $ausgabe .= $eingabe3;
            $ausgabe .= $eingabe2;
            $ausgabe .= $eingabe4;
          }

          $stop = getmicrotime();

          Echo "$stop - $start = ".($stop-$start)."<br />\n";

          Echo $ausgabe;
          ?>

          --------------------------------------------------------------------------------------

          <?php  ### make_array_var.php ###

          function getmicrotime()
          {
             list($usec, $sec) = explode(" ",microtime());
             return ((float)$usec + (float)$sec);
          }
          #--------------------------------------------------------------------------

          $start = getmicrotime();

          $_data['ausgabe'] = '';
          $_data['eingabe'][1]='A';
          $_data['eingabe'][2]='C';
          $_data['eingabe'][3]='B';
          $_data['eingabe'][4]=' ';
          $_data['count'] = 0;
          $_data['start'] = 0;
          $_data['stop'] = 100000;

          for($_data['count']=$_data['start'];$_data['count']<$_data['stop'];$_data['count']++)
          {
            $_data['ausgabe'] .= $_data['eingabe'][1];
            $_data['ausgabe'] .= $_data['eingabe'][3];
            $_data['ausgabe'] .= $_data['eingabe'][2];
            $_data['ausgabe'] .= $_data['eingabe'][4];
          }

          $stop = getmicrotime();

          Echo "$stop - $start = ".($stop-$start)."<br />\n";

          Echo $_data['ausgabe'];
          ?>

          ------------------------------------------------------------------------------------

          Bei 100000 Zugriffen über mehrstufige Arrays dauert das dann tatsächlich länger.
          Man beachte bitte, dass ich für die For-Schleife Arrays benutzt habe.
          Die unterschiedlichen Werte habe ich benutzt, damit nicht vielleicht aus versehen ein Befehlspuffer die Klamotten einfach speichert...

          Der Server ist ein alter Athlon 500 mit 128MB und PHP 4.3.8

          Jetzt würde ich gerne noch die objektorientierte Lösung sehen *gg*

          Harzliche Grüße aus http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
        2. Moin,

          hahaha, guter Witz.

          Du meinst also die Zuweisung und das Löschen kosten keine Zeit?

          Doch -- /ich/ würde nicht löschen.

          Und wieviele Mikrosekunden unterschiedlich ist denn der Zugriff auf ein Arrayelement gegenüber dem Zugriff auf eine skalare Variable?

          Nicht Array, Hashtable. Das ist ein Unterschied.

          Poste doch mal bitte Deine Messergebnisse

          Habe ich nicht -- sind wahrscheinlich vollkommen irrelevant kleine Werte. Aber ich bin immer an den /theoretisch/ optimalen Methoden interessiert.

          Gruß,
          KonRad -

          1. Hello,

            Nicht Array, Hashtable. Das ist ein Unterschied.

            PHP hat weder Arrays noch Hashtables, auch wenn die ihre verketteten mehrdimenssionelen Listen "Arrays" nennen. Es sind Baumstrukturen. Insofern ist die Indizierung tatsäächlich nonsens, da immer die Kette durchlaufen werden muss. Allerdings muss bei vielen Skalaren auch ggf. jedesmal die  gesamte Variablentabelle (bis zum treffer) durchlaufen werden.

            Du hast ja gesehen, ebi 100.000 Schleifendurchläufen, die etwa jeweils 10 Arrayzugriffen entsprechen, also 1.000.000 Zugriffen, macht das eine Differenz von ca. 0,8Sekunden.
            Entspricht also tatsächlich 0,8mySec (ich krieg das 'Mü' hier nicht rein)

            Habe ich nicht -- sind wahrscheinlich vollkommen irrelevant kleine Werte. Aber ich bin immer an den /theoretisch/ optimalen Methoden interessiert.

            Ob Einzelvariablen nun optimaler sind, ist auch noch fraglich.
            Da "Arrays" in PHP keine geschlossenen Speicherbereiche sind, ist natürlich der Zeiotgewinn beim Kopieren auch dahin. Ob man nun die Einzelvariablen zusammentragen muss, oder erst die Einsprungreferenz in die Kette finden muss, um die dann abzulaufen... da wird das "Array" wohl auch verlieren. Muss ich Dir ja leider recht geben.

            Aber aufgeräumter ist so ein Script mit Arrays schon. Und das ist für mich "optimale Methode"

            Harzliche Grüße aus http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
    2. Moin!

      Durch Umstapeln in andere Variablen jedenfalls nicht.

      Fürwahr!

      Das ist unsinn und kostet nur Speicherplatz.

      Dem möchte ich fast widersprechen. Wenn der Programmierer wegen der programmpflegebezogenen Sicht eine größere Übersichtlichkeit wünscht, dann kann ihm genau das löblich erscheinen, was bei einer performormancebezogenen Sicht des Teufels ist.
      Warum ich also nur "fast" widerspreche ist, weil eine so absolute Aussage nicht nützlich erscheint.

      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,

        Das ist unsinn und kostet nur Speicherplatz.
        Dem möchte ich fast widersprechen. Wenn der Programmierer wegen der programmpflegebezogenen Sicht eine größere Übersichtlichkeit wünscht, dann kann ihm genau das löblich erscheinen, was bei einer performormancebezogenen Sicht des Teufels ist.
        Warum ich also nur "fast" widerspreche ist, weil eine so absolute Aussage nicht nützlich erscheint.

        Arrays liefern doch aber den besseren Überblick. natürlich nur, wenn man die Daten sinnvoll bündelt.

        Dann kann man die

        • mit einer Anweisung wegschreiben
        • mit einer Anweisung sortieren
        • mit einer Anweisung kopieren
        • mit einer Anweiseung löschen
        • muss sie nicht suchen sondern kann Schleifen nutzen
          usw.

        Arrays benötigen natürlich von Haus aus mehr Speicherplatz als Skalare. Aber so meinte ich das nicht. Ich amüsiere mich nur immer über die Leute, die erstmal alle POST-Vars in Skalare überführen (ohne die Postvars zu lsöchen) um dann damit nichts anderes zu tun, als man auch mit der Postvar hätte machen können.

        Warum soll ich ein Stripslashes auf jede Skalare Variable einzeln anwenden (weil ich mal wieder vergessen ahbe, die Magic_quotes im Server für das Verzeichnis auszuschalten), wenn ich auch array_map() dafür verwenden kann (rekursiv eingesetzt natürlich!)?

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau