Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: php nie przekazuje danych z tablicy
Forum PHP.pl > Forum > Przedszkole
bigart
problem :

kod html
  1. <form action=show.php method=post>
  2. <input type=checkbox name=lista[] value=grzesztonosz>
  3. <input type=checkbox name=lista[] value=szczyzyslaw>
  4. <input type=checkbox name=lista[] value=brzeczyszczykiewicz>
  5. <input type=submit>
  6. </form>
  7. </body>
  8. </html>


kod php
  1. <?php
  2.  
  3. $lista[]=$HTTP_POST_VARS['lista[]'];
  4.  
  5. $limit=count($lista)-1;
  6.  
  7. echo $limit;
  8.  
  9. ?>


po zaznaczeniu wszytkich checkboxów wartość jest 0 a powinna być 3
podobnie jak zaznacze 1 lub 2 ... no i oczywiscie jak nic nie zaznacze:P
nie wiem co jest grane ? moze musze cos doinstalowac? ten kod powinien dzialac ...

prosze o pomoc
babejsza
  1. <?php
  2. $lista=$_POST['lista'];
  3. ?>
siemakuba
1. zapomnij jak najszybciej o czymś takim jak $HTTP_POST_VARS - zapszyjaźnij się z $_POST

2. $lista[] - nawet jak wszystko inne będzie super świetnie działać, to w takim układzie jak pokazałeś zmienna tablicowa $lista będzie miała zawsze 1 element. Tym elementem będzie tablica ze zmiennymi.

3. Do zmienntch POST/GET przekzywanych jako tablice nie odwołujesz się tak: $_POST['zmienna[]'], tylko $_POST['zmienna']

4. HTML - wartości atrybutów podawaj w cudzysłowie! Nie name=lista[] ale name="lista[]". To się tyczy oczywiście wszystkich atrybutów, nie tylko name.

pozdr.
bigart
  1. <form action="show.php" method="post">
  2. <input type="checkbox" name="lista" value="grzesztonosz">
  3. <input type="checkbox" name="lista" value="szczyzyslaw">
  4. <input type="checkbox" name="lista" value="brzeczyszczykiewicz">
  5. <input type="submit" value="Wybierz">
  6. </form>
  7. </body>
  8. </html>


  1. <?php
  2.  
  3. $lista = new Array();
  4. $lista=$_POST['lista'];
  5.  
  6. $limit=count($lista)-1;
  7.  
  8. echo $limit;
  9.  
  10. ?>


tak tez niestety nie działa ... wynik 0
Luciano
wytnij linijke $line = new array()

w htmlu wszedzie gdzie masz name="lista" daj name="lista[]"

a w php na samej gorze w celach DEBUGERSKICH daj
print_r($_POST);die();

aby sie dowiedziec czy faktycznie nic nie zwracac czy cos sknociles w kodzie
Xathloc
Przede wszystkim zamiast
  1. <?php
  2. $lista = new Array();
  3. ?>


powinno być

  1. <?php
  2. $lista = array();
  3. ?>
bigart
usunalem co napisales i dodalem ta linijke co napisales

wynik jest taki(przy zaznaczeniu 1,2,3 checkboxów) :

Array ( [lista] => brzeczyszczykiewicz )
Xathloc
Cytat(bigart @ 20.10.2006, 10:54:02 ) *
usunalem co napisales i dodalem ta linijke co napisales

wynik jest taki(przy zaznaczeniu 1,2,3 checkboxów) :

Array ( [lista] => brzeczyszczykiewicz )


Na co ja patrzyłem happy.gif
Checkbox to nie radiobutton, każdy musi mieć unkalną nazwę. Inaczej otrzymasz to co teraz, ostatni element o danej nazwie.
bigart
jestem laikiem ... dokladnie nie wiem o co Tobie chodzi ...mozesz przyblizyć ?
kszychu
@bigart: w formularzu, jako nazw pól użyj lista[], czyli
<input type="checkbox" name="lista[]" value="szczyzyslaw">

ale póżniej w php zastosuj taką konstrukcję:
$lista = $_POST['lista'];

i powinno działać.
bigart
dokładnie mam tak jak napisałeś i caly czas jest źle ... chyba mam cos zwalone w konfiguracji serwera ... tylko nie mam pojecia jak to naprawic... to samo dziala innym bez problemu a u mnie jest lipa
Xathloc
  1. <form action="show.php" method="post">
  2. <input type="checkbox" name="lista_1" value="grzesztonosz">
  3. <input type="checkbox" name="lista_2" value="szczyzyslaw">
  4. <input type="checkbox" name="lista_3" value="brzeczyszczykiewicz">
  5. <input type="submit" value="Wybierz">
  6. </form>
  7. </body>
  8. </html>

Ale w wyniku nie otrzymasz tablicy tylko zmienne:
$_POST['lista_1'], $_POST['lista_2'], $_POST['lista_3']
zmienne te można oczywiście przerobić w prosty sposób na tablicę, ale to już zależy od dalszych zastosowań.

Cytat(bigart @ 20.10.2006, 11:08:01 ) *
jestem laikiem ... dokladnie nie wiem o co Tobie chodzi ...mozesz przyblizyć ?

W takim wypadku proponuję poczytać na temat HTML/php, bo zanim zaczniesz coś pisać warto przynajmniej posiąść podstawową wiedzę.
kszychu
@Xathloc: gwoli ścisłości: konstrukcja z lista[] jest jak najbardziej poprawna i MUSI działać. Gdyby robić to tak, jak pokazałeś, to w wielu miejscach natrafiło by się na wiele problemów.

@bigart: pokaż co wyświetla Ci phpinfo();
bigart
php Core
Directive Local Value Master Value
allow_call_time_pass_reference On On
allow_url_fopen On On
always_populate_raw_post_data Off Off
arg_separator.input & &
arg_separator.output & &
asp_tags Off Off
auto_append_file no value no value
auto_globals_jit On On
auto_prepend_file no value no value
browscap no value no value
default_charset no value no value
default_mimetype text/html text/html
define_syslog_variables Off Off
disable_classes no value no value
disable_functions no value no value
display_errors On On
display_startup_errors Off Off
doc_root no value no value
docref_ext no value no value
docref_root no value no value
enable_dl On On
error_append_string no value no value
error_log no value no value
error_prepend_string no value no value
error_reporting 2039 2039
expose_php On On
extension_dir /usr/local/lib/php5/20051025:/usr/local/lib/php5/20051025:/usr/local/lib/php:/usr/lib/php5/20051025:/usr/lib/php5/20051025 /usr/local/lib/php5/20051025:/usr/local/lib/php5/20051025:/usr/local/lib/php:/usr/lib/php5/20051025:/usr/lib/php5/20051025
file_uploads On On
highlight.bg #FFFFFF #FFFFFF
highlight.comment #FF8000 #FF8000
highlight.default #0000BB #0000BB
highlight.html #000000 #000000
highlight.keyword #007700 #007700
highlight.string #DD0000 #DD0000
html_errors On On
ignore_repeated_errors Off Off
ignore_repeated_source Off Off
ignore_user_abort Off Off
implicit_flush Off Off
include_path .:/etc/php:/usr/local/share/php5:/usr/local/share/php5:/usr/local/share/php:/usr/share/php5:/usr/share/php5:/usr/share/php .:/etc/php:/usr/local/share/php5:/usr/local/share/php5:/usr/local/share/php:/usr/share/php5:/usr/share/php5:/usr/share/php
log_errors Off Off
log_errors_max_len 1024 1024
magic_quotes_gpc On On
magic_quotes_runtime Off Off
magic_quotes_sybase Off Off
mail.force_extra_parameters no value no value
max_execution_time 30 30
max_input_time 60 60
open_basedir no value no value
output_buffering no value no value
output_handler no value no value
post_max_size 8M 8M
precision 12 12
realpath_cache_size 16K 16K
realpath_cache_ttl 120 120
register_argc_argv On On
register_globals Off Off
register_long_arrays On On
report_memleaks On On
report_zend_debug On On
safe_mode Off Off
safe_mode_exec_dir no value no value
safe_mode_gid Off Off
safe_mode_include_dir no value no value
sendmail_from no value no value
sendmail_path /usr/sbin/sendmail -t -i /usr/sbin/sendmail -t -i
serialize_precision 100 100
short_open_tag On On
SMTP localhost localhost
smtp_port 25 25
sql.safe_mode Off Off
track_errors Off Off
unserialize_callback_func no value no value
upload_max_filesize 2M 2M
upload_tmp_dir no value no value
user_dir no value no value
variables_order EGPCS EGPCS
xmlrpc_error_number 0 0
xmlrpc_errors Off Off
y2k_compliance On On
zend.ze1_compatibility_mode Off Off
Xathloc
Cytat(kszychu @ 20.10.2006, 11:25:07 ) *
@Xathloc: gwoli ścisłości: konstrukcja z lista[] jest jak najbardziej poprawna i MUSI działać. Gdyby robić to tak, jak pokazałeś, to w wielu miejscach natrafiło by się na wiele problemów.

Jakich problemów? 0_o
1. zazwyczaj znam ilość checkboxów, które mają być w tablicy
2. jeśli chcę generować tablicę zamiast ją zdefiniować, wystarczy dodać w pętli te elementy, które zawierają w kluczu określony ciąg znaków
bigart
dziekuje za pomoc ...
php5 jest skopany
zainstalowalem php4 i dziala
jarrod
Cytat(Xathloc @ 20.10.2006, 11:21:01 ) *
  1. <form action="show.php" method="post">
  2. <input type="checkbox" name="lista_1" value="grzesztonosz">
  3. <input type="checkbox" name="lista_2" value="szczyzyslaw">
  4. <input type="checkbox" name="lista_3" value="brzeczyszczykiewicz">
  5. <input type="submit" value="Wybierz">
  6. </form>
  7. </body>
  8. </html>

Ale w wyniku nie otrzymasz tablicy tylko zmienne:
$_POST['lista_1'], $_POST['lista_2'], $_POST['lista_3']
zmienne te można oczywiście przerobić w prosty sposób na tablicę, ale to już zależy od dalszych zastosowań.
W takim wypadku proponuję poczytać na temat HTML/php, bo zanim zaczniesz coś pisać warto przynajmniej posiąść podstawową wiedzę.


O czym ty człowieku piszesz? A jeśli będziesz chciał zrobić checkboxy na podstawie ilości wpisów w bazie to co wówczas??

~Xathloc
Array ( [lista] => brzeczyszczykiewicz )
pojawiło ci się dlatego, bo w formularzu nie było tablicy name="lista[]" i został użyty ostatni zaznaczony checkbox.
kszychu
@jarrod: czytajże uważnie wcześniejsze posty!
Xathloc
Cytat(jarrod @ 20.10.2006, 12:47:02 ) *
O czym ty człowieku piszesz? A jeśli będziesz chciał zrobić checkboxy na podstawie ilości wpisów w bazie to co wówczas??

Zgadzać się ze mną nie musisz, ale jesli chcesz dyskutować to zmień ton!
A wątek tyczy przesyłania zmiennych z formularza, a nie generowania formularzy.
Zresztą kompletnie nie rozumiem, na czym polega twój problem z wygenerowaniem checkbox'ów blink.gif
kszychu
Dość! Zamykam.
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.