Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Dostęp do tablicy przekazanej jako parametr pola hidden
Forum PHP.pl > Forum > Przedszkole
Jarod
Plik index.php:
  1. <?php
  2. (...)
  3. $korekta = array(array('a'=>'1', 'b'=>'2', 'c'=>'3'),array('d'=>'4', 'e'=>'5','f'=>'6'));
  4.  
  5. echo '<form action="index.php" method="post">';
  6. echo '<input type="hidden" name="Korekta[]" value="'.$korekta.'" />';
  7. echo '<div class="nawigacja"><input type="image" src="img/wroc.gif" /></div>';
  8. echo '</form>';
  9.  
  10.  
  11. (...)
  12. ?>

Przekazuję w formularzu tablicę $korekta do $Korekta[]. Jak teraz odczytać przekazne dane? Nie mogę się do niej dostać. var_dump wyrzuca:
Kod
array(1) {
  [0]=>
  string(5) "Array"
}
strife
Chyba najszybciej zrobisz to poprzez serialize" title="Zobacz w manualu php" target="_manual ..
  1. <?php
  2. // ... 
  3. echo '<input type="hidden" name="Korekta[]" value="'.serialize( $korekta ) .'" />';
  4. // ...
  5. ?>

A potem odczytujesz poprzez unserialize" title="Zobacz w manualu php" target="_manual i masz swoją tablicę. Możesz także przelecieć tą tablicę - foreach" title="Zobacz w manualu php" target="_manual i dodać kilkanaście pól typu hidden.

Pozdrawiam!
Jarod
Cytat(strife @ 10.02.2007, 11:00:43 ) *
Chyba najszybciej zrobisz to poprzez serialize" title="Zobacz w manualu php" target="_manual ..
  1. <?php
  2. // ... 
  3. echo '<input type="hidden" name="Korekta[]" value="'.serialize( $korekta ) .'" />';
  4. // ...
  5. ?>

A potem odczytujesz poprzez unserialize" title="Zobacz w manualu php" target="_manual i masz swoją tablicę.


Serialize poszło elegencko. Natomiast nie mogę tego z powrotem odczytać nawet jak przepuszczę przez unserialize().
strife
Z biegu trochę to napisałem, z unserialize nie za bardzo jest to mądre rozwiązanie, zrób drugim sposobem który Ci napisałem, czyli poprzez pętle. Mimo wszystko masz tutaj rozwiązanie ...

  1. <?php
  2. $korekta = array(array('a'=>'1', 'b'=>'2', 'c'=>'3'),array('d'=>'4', 'e'=>'5','f'=>'6'));
  3.  
  4. echo '<form action="?" method="post">';
  5. echo '<input type="hidden" name="Korekta" value=''. serialize( $korekta ) .'' />';
  6. echo '<div class="nawigacja"><input type="image" src="img/wroc.gif" /></div>';
  7. echo '<input type="submit" />';
  8. echo '</form>';
  9. echo '<pre>';
  10. var_export( unserialize( stripslashes( $_POST['Korekta'] ) ) );
  11. ?>
Jarod
@strife: dokładnie przekleiłem Twój przykład. Dostaję false i nic więcej.

Edit: Oczywiście zamieniłem ? na index.php
strife
Cytat(J4r0d @ 10.02.2007, 11:35:19 ) *
@strife: dokładnie przekleiłem Twój przykład. Dostaję false i nic więcej.

Edit: Oczywiście zamieniłem ? na index.php

Niemożliwe, może nie naciskasz submit'a dlatego masz false ? W każdym bądź razie pewniejszą metodą i lepszą jest wysłanie tego poprzez więcej inputów. Przykładowo:

  1. <?php
  2. // ...
  3. $array = array(1 => 'a', 2 => 'b', 3 => 'c' );
  4. foreach( $array as $key => $value )
  5. {
  6. echo '<input type="hidden" name="test[' . $key . ']" value="' . $value . '" />';
  7. }
  8. // ...
  9. ?>


Pozdrawiam!
Jarod
Naciskam. Jak zastosuje unserialize to mam false. Jak zrobie coś takiego:
  1. <?php
  2. echo '<pre>';
  3. $korekta = ($_POST['Korekta']);
  4. var_dump ($korekta);
  5. echo '</pre>';
  6. ?>

to zwraca mi:
Kod
string(18) "a:2:{i:0;a:3:{s:1:"


a powinno zrwócić
Kod
a:2:{i:0;a:3:{s:1:"a";s:1:"1";s:1:"b";s:1:"2";s:1:"c";s:1:"3";}i:1;a:3:{s:1:"d";s:1:"4";s:1:"e";s:1:"5";s:1:"f";s:1:"6";}}



Edit: Wwalić to. Jak się do tego dostać poprzez foreach zamiast serialize/unserialize? Bo mój przykład z foreach nie działa..
Cienki1980
Serialize() tworzy problem przez to że ma znaki " .. i html się wysypuje.

CO do foreacha do strife podał formularz a podczas obierania wyświetl sobie co przychodzi z POST'a ( mówie o przykładzie strifa )
strife
Cytat(Cienki1980 @ 10.02.2007, 11:52:58 ) *
Serialize() tworzy problem przez to że ma znaki " .. i html się wysypuje.

Dokładnie, ale czegoś nie rozumiem, bo mi ten przykład działa jak nie użyje "

  1. <?php
  2. $korekta = array(array('a'=>'1', 'b'=>'2', 'c'=>'3'),array('d'=>'4', 'e'=>'5','f'=>'6'));
  3.  
  4. echo '<form action="?" method="post">';
  5. echo '<input type="hidden" name="Korekta" value=''. serialize( $korekta ) .'' />';
  6. echo '<input type="submit" />';
  7. echo '</form>';
  8. echo '<pre>';
  9. var_export( $_POST );
  10. ?>


A coś takiego co Ci wyświetla ?

Cytat
Edit: Wwalić to. Jak się do tego dostać poprzez foreach zamiast serialize/unserialize? Bo mój przykład z foreach nie działa..

No ale gdzie jest ten Twój przykład, wklej go to spróbujemy go poprawić winksmiley.jpg
Jarod
Przykład żywcem wycięty ze skryptu:
  1. <?php
  2. $korekta = array(array('a'=>'1', 'b'=>'2', 'c'=>'3'),array('d'=>'4', 'e'=>'5','f'=>'6'));
  3.  
  4. echo '<form action="index.php" method="post">';
  5. echo '<input type="hidden" name="Korekta" value="'.serialize($korekta).'" />';
  6. echo '<input type="submit" name="submit" value="Wyślij" />';
  7. echo '</form>';
  8. echo '<pre>';
  9. var_dump (unserialize(stripslashes($_POST['Korekta'])));
  10. echo '</pre>';
  11. die();
  12. ?>


Wynik:
Kod
bool(false)
strife
  1. <?php
  2. echo '<input type="hidden" name="Korekta" value="'.serialize($korekta).'" />';
  3. ?>


  1. <?php
  2. echo '<input type="hidden" name="Korekta" value=''. serialize( $korekta ) .'' />';
  3. ?>


Widzisz różnicę, chodzi o " ... Zresztą już to napisał Cienki1980 smile.gif
Cytat
Serialize() tworzy problem przez to że ma znaki " .. i html się wysypuje.
Jarod
Moja nieuwaga. Dziękuje panowie za pomoc.
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.