Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: przekazanie zmiennych w Array - problem
Forum PHP.pl > Forum > PHP
infor946
Mam formularz form.html którym przesyłałem sporo danych do strony przetw.php i wszystko działa bez zarzutu, ale następnie musiałem stronę przetw.php umieścić w jako ramke w stronie zcal.php, a więc w formularzu zmieniłem adres z przetw.php na zcal.php i dodałem w zcal php taki oto kod.

  1. <?php
  2.  
  3. $keys=array_keys($_GET);
  4. foreach($keys as $key){
  5. $zm=$zm."&$key={$_GET[$key]}";
  6. }
  7. $zm=substr($zm,1,strlen($zm)-1);
  8.  
  9. echo "<frame src=przetw.php?".$zm.">";
  10.  
  11. ?>


i w tym przypadku zmienne nie będące tablicami przekazywane są poprawnie, natomiast zmienne tablicowe przekazją wartość "Array"

zmieniłem nieco kod na:
  1. <?php
  2.  
  3. $keys=array_keys($_GET);
  4. foreach($keys as $key){
  5. if(is_array($_GET[$key])){
  6. for($i=0;$i<count($_GET[$key]);$i++){
  7. $zm=$zm."$key={$_GET[$key][$i]}";
  8. }
  9. }else{
  10. $zm=$zm."&$key={$_GET[$key]}";
  11. }
  12. }
  13. $zm=substr($zm,1,strlen($zm)-1);
  14.  
  15. echo "<frame src=przetw.php?".$zm.">";
  16.  
  17. ?>


ale teraz też nie jest tak jakbym chciał - tzn nie jest dokładnie tak jakbym przesłał bezpośrenido z formularza zmieną zm1[], zawierającą wiele wartości z pola multiple select.

jak to rozwiązać ?
pomóżcie
kszychu
Nie rozumiem po co tak kombinujesz z tymi indeksami? Nie można prościej:
  1. <?php
  2. foreach($_GET as $indeks => $wartosc)
  3.  $zm .= "&{$indeks}={$wartosc}";
  4. ?>
infor946
no można ale to nie rozwiązuje mojego problemu, ze zmiennymi tablicowymi.
kszychu
hmmm, w sumie można by się bawić w rozpoznawanie, czy zmienna to tablica, jeśli tak to ilo wymiarowa itp. Bez rekurencji ani rusz. Ale może prościej byłoby serializować te tablice przed wysłaniem?
infor946
juz rozwiązałem przy sprawdzaniu trzeba było dodać "[]" czyli całe rozwiązanie:

  1. <?php
  2.  
  3. foreach($_GET as $indeks => $wartosc){
  4. if(is_array($wartosc)){
  5. for($i=0;$i<count($wartosc);$i++){
  6. $zm.="&".$indeks."[]=".$wartosc[$i];
  7. }
  8. }else{
  9.  $zm .= "&{$indeks}={$wartosc}";
  10. }}
  11.  
  12.  
  13. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.