PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : übergabe von array in URL


N'Koto Zinde
08.07.2007, 23:24:55
Hallo,

ich habe folgenden Code, der einfach nicht funktionieren will:

if($_REQUEST[auf]) {
$_REQUEST[offen] = unserialize(stripslashes(urldecode($_REQUEST[offen])));
$offen = array_push($_REQUEST[offen], $_REQUEST[auf]);
}
else {
$offen = array();
}

$array = urlencode(serialize($offen));

echo "<a href='?offen=$array&auf=11'>klick</a>";

es soll passieren:
$offen ist ein array
bei aufruf des links soll die zahl in der Variablen "auf" an das Array angefügt werden.

die methode wie ich den array mit übergebe habe ich hierher: http://www.selfphp.de/forum/showthread.php?t=10034

leider klappt es nicht, es kommt folgender fehler:
Warning: array_push() [function.array-push]: First argument should be an array

kann mir da jemand helfen?

meikel (†)
09.07.2007, 00:15:06
kann mir da jemand helfen?
Warum nutzt Du dafür keine Session?

N'Koto Zinde
09.07.2007, 18:19:15
hab ich probiert und führt zum selben ergebnis, kann mir nun ein helfen oder nicht?

Socrates
09.07.2007, 19:56:01
Abend!
Ich hätte da mal eine Frage! Und zwar ist es eigentlich möglich, $_REQUEST so:

<?php
echo $_REQUEST[auf];
?>

statt so:

<?php
echo $_REQUEST['auf'];
?>

zu schreiben? Habe im Manual leider nichts genaueres dazu gefunden.
Jedoch habe ich etwas zu der Funktion push_array() gefunden. Und dort steht das gleiche, wie auch deine Fehlermeldung besagt:
Anmerkung: array_push() gibt eine Warung aus, wenn das erste Argument kein Array ist. Dies unterscheidet sich vom Verhalten von $var[], welches ein neues Array erzeugt.
Also ist dein $_REQUEST[offen] kein array, was heißen kann, dass du es falsch abfragst, denn wenn $offen ein Array sein soll, muss $_REQUEST['offen'] ein Mehrdimensionales Array sein, da $_REQUEST selbst schon ein Array ist. Richtig? So kannst du einerseits überprüfen, ob deine Schreibweise richtig ist, ob du das Array richtig abfragst oder ob $offen überhaupt ein Array ist.

Noch eine kleine Anmerkung. Im Manual wird zudem empfohlen, dass wenn man nur einen Wert, in deinem Fall den Wert aus dem Link, anfügen will, es besser sei die Form array[]= dafür zu verwenden. Auszug hier zu sehen:
Anmerkung: Wenn Sie array_push() verwenden, um ein Element an ein Array anzuhängen, ist es besser $array[] = zu benutzen, da dies den zusätzlichen Aufwand vermeidet, eine Funktion aufzurufen
Nachlesen kannst du das alles nochmal hier: http://de3.php.net/array-push
MfG, Andy

N'Koto Zinde
09.07.2007, 20:30:13
ist ja schön und gut, aber was kann ich dagegen tun?

meikel (†)
09.07.2007, 23:24:06
hab ich probiert und führt zum selben ergebnis,
Aha. Also bei mir funktioniert das:
script1.php
session_start();
$_SESSION['mein_array'] = array(1,2,3,4,5);
printf('<a href="script2.php?%s">Klick</a>',
SID);

script2.php
session_start();
if (isset($_SESSION['mein_array']))
print_r($_SESSION['mein_array']);
else
print 'Mist';

kann mir nun ein helfen oder nicht?
Ob man das kann, hängt von Deiner Auffassungsgabe ab.

N'Koto Zinde
12.07.2007, 23:02:47
ich hab eine lösung des problems gefunden, zwar nicht wie vorgeschlagen, aber es funktioniert. trotzdem danke. gruß.

vt1816
13.07.2007, 08:51:31
ich hab eine lösung des problems gefunden, ...

Und wie sieht die Lösung aus? Nur mal so frag, falls andere hier mal das gleiche oder ein ähnliches Problem haben.