Variablen auslesen?!?
schning
- php
0 krüml0 Viennamade0 krüml
0 schning
0 Konrad L. M. Rudolph0 Tom
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
lass doch einfach alle variablen mal miit "echo" ausgeben ... dann weißt du's
cu krüml
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
oder so ;-)
kennst du dich mit javascript aus? @viennamade
cu krüml
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
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 -
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ä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
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 -
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
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
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 -
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
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®
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
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