PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variablen nicht als String sondern als Variable an $_GET[]/$_POST


nickinami
15.08.2007, 14:44:23
Hallo,
sicherlich werdet ihr euch fragen wie man nur so eine frage stellen kann. aber ich weiß es halt nicht:

Also ich habe eine php site, und will per GET Variablen an diese übergeben.
Das ganze soll recht dynamisch sein:

daher hatte ich vor das etwa so zu tun


$counter=12
$variable="Username"+counter

if ($_GET[$variable]) ...



kann so etwas irgendwie funktionieren, oder ist so etwas überhaupt möglich?

Das Problem ist, dass die Seite eine Anzahl von Variablen übergeben bekommt, diese
ist aber noch unbestimmt. Kann man so etwas überhaupt handeln?

danke im voraus
nicki

rambi
15.08.2007, 15:14:08
Aus meiner Wühlkiste..

<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);


function mk_url($filename,$params=array(),$seperator='&amp;',$fragment='')
{
$url = $filename;
$i = 0;
if(!empty($params))
{
$url .= '?';
foreach($params as $key => $value)
{
if(!empty($i)) $url .= $seperator;
$url .= urlencode($key).'='.urlencode($value);
$i++;
}
}
if(!empty($fragment)) $url .= '#'.urlencode($fragment);
return $url;
}


$params=array();
$params['name'] = 'willi';
$params['site'] = 'logout';
$params['land'] = 'de';

$url = mk_url($_SERVER['SCRIPT_NAME'],$params,'&','anker');
// echo htmlentities($url);

?>
<a href="<?php echo $url ?>">Der Link</a>

Indyk
15.08.2007, 15:15:56
a) würde ich darauf achten das die url nicht länger als 255 zeichen lang wird, das kann sie nämlich nicht
b) kannst du durch verändern das globalen variable die url nicht verändern? $_GET ist ein globales assoziatives array welches sich aus den url parametern zusammensetzt.

und ich habe glaube ich nicht ganz verstanden was du vorhast.
Natürlich kannst du die user id übergeben und auf der "anderen" seite einen case für jede id einzelnd. oder was möchtest du?

wenn du viele daten übergeben möchtest würde ich auf $_POST zurückgreifen.

Nachtrag
Ich sehe rambi hat dich besser verstanden (- ;

rambi
15.08.2007, 16:36:08
Ich sehe rambi hat dich besser verstanden
Das muß sich erst noch erweisen :-)

nickinami
16.08.2007, 08:25:53
genau genommen ist es so, dass ich von einer seite mit JavaScript komme, die generiert eine URL, daher funktioniert erstmal nur GET, wenn JavaScript auch für POST Daten übergeben kann, dann sagt mir bitte wie...

diese URL enthält dann halt die daten, über eine bestimmte anzahl von Elementen auf der Site, aber eben diese Anzahl steht noch nicht fest, daher wäre es schön, ein php script zu haben, welches sich an der URL orientiert und sagt, so diesmal sinds halt nur 2datensätze und nächstesmal 5

@Indyk aber gut, dass du das mit der FQDN sagst, da hätte ich gar nicht dran gedacht, also wenn es beim GET bleibt muss ich ja demzufolge so oder so die Anzahl beschränken!

@rambi danke für den code, sehr cool, aber wenn ich ihn richtig verstanden habe generiert er die URL, leider wollte ich die URL entgegen nehmen und aus ihr etwas lesen.

rambi
16.08.2007, 09:42:28
wenn JavaScript auch für POST Daten übergeben kann, dann sagt mir bitte wie...
Die modernen Browser können alle mit JS XMLHttpRequests absestzen, sowohl Get, als auch Post. Allerdings NUR zum Server, von dem aus die Seite geladen wurde..
Das nennt sich dann Ajax.

Ansonsten verstehe ich dein Problem nicht, $_GET kennst du ja schon....
Das kannst du mit foreach durchlaufen und hast damit alle Parameter am Haken...

OT:
@Indyk dachte ich mir doch, dass da irgendwas nicht koscher ist ;_)

Indyk
16.08.2007, 10:12:44
also mann kann mit javascript ganz easy formulare verschicken bzw. post?
es gibt die methode "submit()" hat den selben effekt wie der button. und mit genug hidden feldern wirst du sicherlich auch deine daten rüberschicken können.
Darüberhinaus hast du da auch die möglichkeit den array zu serialisieren*, also in einen string umzuwandeln den du dann in einem einzigen hidden feld unterbringen kannst.

und wenn du bei $_GET bleibst, dann hat rambi für dich schon die foreach schleife erwähnt die arbeit unabhängig von der größte jedes element eines arrays ab.

alternativ kann man auch eine nicht schicke forschleife machen in dem du die elemente von $_GET per count() ermittelst und dir dann die schlüssel mit array_keys geben lässt also sowas:

if(count($_GET)){
$keys = array_keys($_GET);
for($i=0;$i<count($_GET);$i++){
$arr[$i] = $_GET[$keys[$i]];
}
}


damit könntest du alle mit get übergebenen parameter in $arr speichern. Aber wie gesagt mit "foreach" ist es viel schöner (- ;

*serialize()
http://de.php.net/manual/de/function.serialize.php