Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]Dostęp do tablicy przekazanej jako parametr pola hidden
Jarod
post
Post #1





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


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"
}


Ten post edytował J4r0d 10.02.2007, 10:56:43


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
strife
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

Ostrzeżenie: (0%)
-----


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!


--------------------
Go to the top of the page
+Quote Post
Jarod
post
Post #3





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


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().


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
strife
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

Ostrzeżenie: (0%)
-----


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. ?>


--------------------
Go to the top of the page
+Quote Post
Jarod
post
Post #5





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


@strife: dokładnie przekleiłem Twój przykład. Dostaję false i nic więcej.

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

Ten post edytował J4r0d 10.02.2007, 11:35:56


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
strife
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

Ostrzeżenie: (0%)
-----


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!


--------------------
Go to the top of the page
+Quote Post
Jarod
post
Post #7





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


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..

Ten post edytował J4r0d 10.02.2007, 11:48:45


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
Cienki1980
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

Ostrzeżenie: (0%)
-----


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 )


--------------------
404
Go to the top of the page
+Quote Post
strife
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
Jarod
post
Post #10





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


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)


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
strife
post
Post #11





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

Ostrzeżenie: (0%)
-----


  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.


--------------------
Go to the top of the page
+Quote Post
Jarod
post
Post #12





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


Moja nieuwaga. Dziękuje panowie za pomoc.


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 16:56