Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: php widzi tablicę jako napis Array
Forum PHP.pl > Forum > Przedszkole
php programmer
Witam mam formularz
  1. <tr><td>zainteresowania</td><td>
  2. <label><input type="checkbox" name="hobby[]" value="motoryzacja" />motoryzacja</label><br />
  3. <label><input type="checkbox" name="hobby[]" value="internet" />internet</label><br />
  4. <label><input type="checkbox" name="hobby[]" value="komputery" />komputery</label><br />
  5. <label><input type="checkbox" name="hobby[]" value="biznes" />biznes</label><br />
  6. <label><input type="checkbox" name="hobby[]" value="książki" />książki</label><br />
  7. <label><input type="checkbox" name="hobby[]" value="sport" />sport</label><br />
  8. <label><input type="checkbox" name="hobby[]" value="gry komputerowe" />gry komputerowe</label><br />
  9. <label><input type="checkbox" name="hobby[]" value="zdrowie" />zdrowie</label><br />
  10.  
  11. <label><input type="checkbox" name="hobby[]" value="moda" />moda</label><br />
  12. <label><input type="checkbox" name="hobby[]" value="film" />film</label><br />
  13. <label><input type="checkbox" name="hobby[]" value="turystyka" />turystyka</label><br />
  14. <label><input type="checkbox" name="hobby[]" value="uroda" />uroda</label><br />
  15. <label><input type="checkbox" name="hobby[]" value="myzyka" />myzyka</label><br />
  16. <label><input type="checkbox" name="hobby[]" value="dom i rodzina" />dom i rodzina</label><br />
  17. <label><input type="checkbox" name="hobby[]" value="zwierzeta" />zwierzeta</label><br />
  18. <label><input type="checkbox" name="hobby[]" value="kuchnia" />kuchnia</label><br />
  19. <label><input type="checkbox" name="hobby[]" value="nauka" />nauka</label><br />
  20.  
  21. <label><input type="checkbox" name="hobby[]" value="komórki" />komórki</label><br /></td><td></td></tr>


i teraz jak w php wezmę
  1. <?php
  2. echo $_POST['hobby'][0]
  3. ?>
to pokazuje mi literę A
  1. <?php
  2. echo $_POST['hobby'][1]
  3. ?>
to pokazuje mi literę r
itd
dlaczego nie mam dostępu do tablicy
nospor
bo twoja tablica to hobby a nie zainteresowania laugh.gif
php programmer
to była tylko literówka w tutaj,
ale w programie jest hobby :|
AxZx
tablice wyswiewtla sie przez print_r
a nie echo
revyag
Dostęp do poszczególnych elemetów jest taki:
  1. <?php
  2. foreach($_POST["hobby"] as $hob) {
  3. echo $hob;
  4. }
  5. ?>
php programmer
Cytat(revyag @ 2005-11-18 11:40:08)
Dostęp do poszczególnych elemetów jest taki:
  1. <?php
  2. foreach($_POST["hobby"] as $hob) {
  3. echo $hob;
  4. }
  5. ?>

Invalid argument supplied for foreach()

hm a moze trzeba użyć jakiś specjalny enctype w przypadku przysyłania tablic ?

Może ktoś wie coś na ten temat?
revyag
No tak trudno się domyślić ? Jak nie zaznaczysz nic to pewnie że będzie wywalało error.
Wystarczy dodać jeden warunek.
  1. <?php
  2. if(isset($_POST["hobby"]) && !empty($_POST["hobby"])) {
  3. foreach($_POST["hobby"] as $hob) {
  4. echo $hob.'<br />';
  5. }
  6. }
  7. ?>
php programmer
nie to nie to

  1. <?php
  2.  
  3. if(isset($_POST["hobby"]) && !empty($_POST["hobby"])) {
  4. foreach($_POST["hobby"] as $hob) echo $hob.'<br />';
  5. } else echo 'nie ma takiej tablicy';
  6.  
  7. ?>


jak nic nie zaznacze to napisze, ze nie ma takiej tablicy
a jak cos zaznaczee to dalej taki bład:
Invalid argument supplied for foreach() i

dodam jeszcze że na boku zrobiłem sobie mały skrypcik testowy
  1. <form method="post">
  2. <input type="checkbox" name="test[]" value="ok 2">
  3. <input type="checkbox" name="test[]" value="ok 1">
  4. <input type="submit">
  5. </form>
  6. <? echo $_POST['test'][0]; ?>


i działa bez zarzutu, a może smarty mi coś psuje (bo ten problemowy jest napisany w smarty)?
revyag
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. </head>
  4. <?php
  5. if(isset($_POST["submit"]) && !empty($_POST["submit"])) {
  6. if(isset($_POST["hobby"]) && !empty($_POST["hobby"])) {
  7. foreach($_POST["hobby"] as $hob) {
  8. echo $hob.'<br />';
  9. }
  10. }
  11. }
  12. ?>
  13. <form action="" method="post">
  14. <label><input type="checkbox" name="hobby[]" value="motoryzacja" />motoryzacja</label><br />
  15. <label><input type="checkbox" name="hobby[]" value="internet" />internet</label><br />
  16. <label><input type="checkbox" name="hobby[]" value="komputery" />komputery</label><br />
  17. <label><input type="checkbox" name="hobby[]" value="biznes" />biznes</label><br />
  18. <label><input type="checkbox" name="hobby[]" value="książki" />książki</label><br />
  19. <label><input type="checkbox" name="hobby[]" value="sport" />sport</label><br />
  20. <label><input type="checkbox" name="hobby[]" value="gry komputerowe" />gry komputerowe</label><br />
  21. <label><input type="checkbox" name="hobby[]" value="zdrowie" />zdrowie</label><br />
  22. <input type="submit" name="submit" value="subm">
  23. </form>
  24. </body>
  25. </html>
php programmer
Cytat(AxZx @ 2005-11-18 11:38:13)
tablice wyswiewtla sie przez print_r
a nie echo

nic to nie dało
użycie print_1 także daje napis Array

ps. kod re.. jest dobry najwidoczniej smarty mi cos kaszani

  1. <tr><td>{$hobby_1}{#hobby#}</td><td>
  2. {html_checkboxes name="hobby" values=$hobby_values selected=$hobby_3 output=$hobby_output separator="<br />"}</td><td>{$hobby_2}</td></tr>
nospor
panowie, tutaj ewidentnie zmienna $_POST['hobby'] jest napis array a nie tablica i dlatego nie dziala foreach.
Wprwadzilem se formularz co podał autor i u mnie jest ok. Domyslam sie wiec, ze problem moze jest w tym, iz nie pokazano nam całego formularza i gdzieś tam jest jeszcze jakis blad.
@php programmer pokaz nam caly formualrz od słowa <form ... poczawszy s konczywszy na </form>
php programmer
ok problem polegał na tym, że najpier form szedł do formularza
sprawdzającego, a potem ten formularz sprawdzający
w pętli for przekazywał wszystkie post w ukrytych polach
do właściwiego skryptu odbierającego,
a że checkboxy były jako talica wiec nie mogly byc przekazane jak zywkłe ukryte pole,

matko straciłem na to 3 godziny sad.gif
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.