Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z checboxem
Forum PHP.pl > Forum > PHP
polibode
Moj problem polega na tym , że nie wiem gdzie są zaznaczone checboxy
Chcę zapisać ustawienia, jakie checboxy nacisnalem i za nastepnym razem je widziec, jest to mozliwe do dokonania?
sobstel
jesli chcekbox nie jest zaznaczony to odpowiedniej zmiennej nie ma w tablicy $_POST, weic wystarczy sprawdzic poprzez issset" title="Zobacz w manualu PHP" target="_manual
militis
  1. <?php
  2.  
  3. setcookie([nazwa inputa], [1-zaznaczony, 0-niezaznaczony], [czas]);
  4.  
  5. ?>


a pozniej:

  1. <?php
  2.  
  3. if ($_COOKIE['nazwa inputa']==1)
  4.  $nazwa_inputa=' checked';
  5. else 
  6.  unset($nazwa_inputa);
  7.  
  8.  
  9. echo('<input type=checkbox name=\"nazwa inputa\" value=\"wartosc\" ' . $nazwa_inputa . >);
  10.  
  11. ?>
polibode
inputow mam dwa , jeden to tekst, i wszystko z nim ok, chodzi o nazwe raportu a a drugi miał byc typu checbox , ale przez to , ze nie dziala w tej postaci, uzywam typu=text i wpisuje 1 sad.gif. chodzi o czywiscie o pozniejsze zapamietanie tych ustawien (odczytanie zapisanych , modyfikacja i zapisanie)
  1. <?
  2. echo &#092;"<form action=\"index.php?page=prawa_uzytkownika_show&\".SID. method=\"POST\">\";
  3. ?>
  4. <?
  5. $line = @file ('data/uzytkownicy_raporty/'.$pracownik.'_lista_raportow.dat');
  6. foreach ($line as $value)
  7. {
  8. $str = explode ('=', trim($value));
  9. ?>
  10. <tr>
  11. <td class=log align=right><input type=\"text\" name=\"raport[]\" value=\"<? echo $str[0]; ?>\" size=\"80\" readonly></td>
  12. <td class=log align=center><input type=\"text\" name=\"udostepnienie[]\" value=\"<? echo $str[1]; ?>\" size=2></td></tr>
  13. <?
  14. }
  15. ?>


chodzi o to , ze nie chce wpisywac 1-ynki np ze jest zaznaczone czyli pola typy=checbox
Jesli go uzyje to mi w tej postaci nie wykrywa czy jest ustawione i nie robi ptaszka
militis
Checkboxa zaznacza dopisek checked w <input> a nie zadne jedynki.

Jezeli natomiast chcesz wyciagnac informacje o tym czy checkbox jest zaznaczony czy nie, to sluzy do tego:

  1. <?php
  2.  
  3.  
  4. if (isset($_POST['nazwa_checkboxa']))
  5. $box = 'zaznaczony';
  6. else 
  7. $box = 'niezaznaczony';
  8.  
  9.  
  10. echo($box);
  11.  
  12. ?>
polibode
to ja wiem , ze chocked, ale chodzi mi o to , ze pewne checboxy zostały ustawione juz wczesniej, zapisane w pliku
Teraz je odczytuje, no i wlasnie jak odczytac, zeby byly zaznaczone, wedlug mojego schematu, zeby ponownie moc cos zmienic
militis
  1. <?
  2. echo '<form action=\"index.php?page=prawa_uzytkownika_show&' . SID . '\" method=\"POST\">';
  3. ?>
  4.  
  5. <?
  6. $line = @file ('data/uzytkownicy_raporty/' . $pracownik . '_lista_raportow.dat');
  7. foreach ($line as $value)
  8. {
  9. $str = explode ('=', trim($value));
  10.  
  11. if ($str[1] == 'on')
  12.    $str[1] = 'checked';
  13. else
  14.    unset ($str[1]);
  15.  
  16. ?>
  17.  
  18. <tr>
  19. <td class=log align=right><input type=\"text\" name=\"raport[]\" value=\"<?= $str[0]; ?>\" size=\"80\" readonly></td>
  20. <td class=log align=center><input type=\"checkbox\" name=\"udostepnienie[]\" <?= $str[1]; ?> size=2></td></tr>
  21.  
  22. <?
  23. }
  24. ?>
polibode
pięknie dziękuję!!
Mam jeszcze problem z zapisywaniem .
Jest 10 checboxów.
chodzi o to , że jak włącze np 7 checboxa a mam wlaczone 1,2,3 to on mi zapisze , ze mam wlaczone 1,2,3,4. Natomiast nie 7 sad.gif
Oto moje zapisywanie do pliku tego co ty zrobiles wczesniej , za co ci dziekuje
  1. <?php
  2.  
  3. if($_POST['ustawione_prawa'])
  4. {
  5.     $rap = $_POST['raport'];
  6.     $dostep   = $_POST['udostepnienie'];
  7.     $ilosc = count($rap);
  8. if($f = fopen('data/uzytkownicy_raporty/'.$pracownik.'_lista_raportow.dat', 'w+'))
  9.      {
  10.          for($i=0;$i<$ilosc;$i++)
  11.          {     
  12.            if(!isset($dostep[$i])) $dostep = 'off';
  13.            fwrite($f, $rap[$i].&#092;"=\".$dostep[$i].\"n\")
  14.          }
  15.          fclose($f);
  16.          echo 'Prawa dla użytkownika '.$pracownik.' zostały ustawione'; echo &#092;"<br>\";
  17.      }
  18. }
  19.  
  20. ?>


Chciałbym tylko dopowiedzieć, ze dziwnie sie zachowuje wogole odczytywanie tablicy udostpenienie[]
Otóz jesli wyswietlam
  1. <?php
  2.  
  3. if($_POST['ustawione_prawa'])
  4. {
  5. $rap = $_POST['raport'];
  6. $dostep  = $_POST['udostepnienie'];
  7. $ilosc = count($rap);
  8.  for($i=0;$i<$ilosc;$i++)
  9. { echo $dostep[$i]; echo &#092;"<br>\"; }
  10.  
  11. ?>

no to jak juz wczesniej wspomniałem widze on dla 1,2,3,4 sad.gif
militis
Wklej kawalek skryptu z formularza, ktory go generuje bo z samego skryptu przetwarzajacego dane z forma nic nie wywnioskuje.
polibode
oto moj kod, nie wiem dlaczego tak zapisuje , ta tagblica udostepnienie sie jakos tak ustawia , ze zawsze ustawione są od pierwszego indeksu (tzn jesli gdzies poustawiam w linijkach dajmy na to 7 checkboxow to i tak ma wpisane ustawione od pierwszego indeksu), wiem ,z e to jest znany problem, ale na chiny nie wiem dlaczego to tutaj jest
  1. <?
  2.  
  3. if (!session_is_registered ('uzytk_'))
  4.   session_register ('uzytk_');
  5.  
  6. if (!isset($_SESSION['uzytk_']))  
  7.     $_SESSION['uzytk_'] = $_POST[&#092;"uzytkownik\"];
  8.  
  9. $pracownik = $_SESSION['uzytk_'];
  10.  
  11.  
  12. if($_POST['ustawione_prawa'])
  13. {
  14.     $rap = $_POST['raport'];
  15.     $dostep   = $_POST['udostepnienie'];
  16.     $ilosc = count($rap);
  17.     //     for($i=0;$i<$ilosc;$i++)
  18.     //{ echo $dostep[$i]; echo \"<br>\"; }
  19.      
  20.      
  21.      if($f = fopen('data/uzytkownicy_raporty/'.$pracownik.'_lista_raportow.dat', 'w+'))
  22.      {
  23.          for($i=0;$i<$ilosc;$i++)
  24.          {
  25.              
  26.              //if($dostep == null) $dostep = 'off';
  27.              fwrite($f, $rap[$i].&#092;"=\".$dostep[$i].\"n\");
  28.              //echo $dostep[$i]; echo \"<br>\";
  29.          }
  30.          fclose($f);
  31.          echo 'Prawa dla użytkownika '.$pracownik.' zostały ustawione'; echo &#092;"<br>\";
  32.      }
  33.      
  34. }
  35. else
  36.     { ?>
  37.  
  38.             <center>
  39.             <table class=first border=\"0\" cellspacing=\"1\" cellpadding=8>
  40.             <tr>
  41.                 <td colspan=2 class=log align=center>
  42.                 <b>Wybierz raporty dla użytkownika: <font color=lightgreen><? echo $pracownik; ?></font></b>
  43.                 </td>
  44.             </tr>
  45.             <tr>
  46.                 <td class=log align=center>Raport</td><td class=log>Ustaw prawo</td>
  47.             </tr>
  48.                 <?
  49.                 echo '<form action=\"index.php?page=prawa_uzytkownika_show&' . SID . '\" method=\"POST\">';
  50.                 ?>
  51.  
  52.                 <?
  53.                 $line = @file ('data/uzytkownicy_raporty/' . $pracownik . '_lista_raportow.dat');
  54.                 foreach ($line as $value)
  55.                 {
  56.                     $str = explode ('=', trim($value));
  57.  
  58.                     if ($str[1] == 'on')
  59.                        $str[1] = 'checked';
  60.                     else
  61.                        unset ($str[1]);
  62.                        //$str[1] = 'off';
  63.                     ?>
  64.  
  65.                     <tr>
  66.                         <td class=log align=right><input type=\"text\" name=\"raport[]\" value=\"<?= $str[0]; ?>\" size=\"80\" readonly></td>
  67.                         <td class=log align=center><input class=check type=\"checkbox\" name=\"udostepnienie[]\" <?= $str[1]; ?> size=2></td>
  68.                     </tr>
  69.  
  70.                     <?
  71.                 }
  72.                 ?>
  73.  
  74.             <tr>
  75.                 <td class=log colspan=\"3\" align=\"center\">
  76.                  <INPUT type=\"submit\" name=\"ustawione_prawa\" value=\"Ustaw prawa\">
  77.                 </td>
  78.             </tr>
  79.             </TABLE>
  80.             </FORM>
  81.             </td>
  82.             </tr>
  83.             </table>
  84.  
  85. <?}
  86.     ?>
  87. <br>
  88. <table class=menu cellspacing=1px border=0>
  89. <tr>
  90. <td class=menu>
  91. <?
  92. echo &#092;"<form class=menu action=\"index.php?page=prawa_uzytkownika&\".SID. method=\"POST\">\";
  93. ?>
  94. <input type=submit name=\"new_data\" value=\"Wybierz użytkownika\">
  95. </form>
  96. </td>
  97. <td class=menu>
  98. <?
  99. echo &#092;"<form class=menu action=\"index.php?page=login&\".SID. method=\"POST\">\";
  100. ?>
  101. <input type=submit name=\"new_data\" value=\"Panel administratora\">
  102. </form>
  103. </td>
  104. </tr>
  105. </table>
  106.  
  107. </center>
militis
Hm nie wiem... Napisalem sobie prosty skrypcik zeby sprawdzic czy takie cos dziala tak jak chcesz

  1. <?
  2.  
  3. if ($_POST) {
  4. $a = $_POST['udostepnienie'];
  5. for ($i=0; $i<5; $i++) {
  6. echo($a[$i] . '<BR>');
  7. }//endfor
  8. }//endif
  9.  
  10. '<form action=' . $_SERVER['PHP_SELF'] . ' method=post>' .
  11. '1 <input type=checkbox name=udostepnienie[] value=1><BR>' .
  12. '2 <input type=checkbox name=udostepnienie[] value=2><BR>' .
  13. '3 <input type=checkbox name=udostepnienie[] value=3><BR>' .
  14. '4 <input type=checkbox name=udostepnienie[] value=4><BR>' .
  15. '5 <input type=checkbox name=udostepnienie[] value=5><BR>' .
  16. '6 <input type=checkbox name=udostepnienie[] value=6><BR>' .
  17. '7 <input type=checkbox name=udostepnienie[] value=7><BR>' .
  18. '<input type=submit value=ok>' .
  19. '</form>'
  20. );
  21.  
  22. ?>


No i jak zaznacze np 1,2,3,7, to taki tez wynik dostaje, wiec u mnie wszystko gra. Porównaj skrypty i znajdz ew. błąd u siebie.
nospor
@militis u ciebie też indexuje od 0. U ciebie natomiast widać wartość, po której można odczytać wlasciwy index

@polibode musisz więc nadawać wartość dla checkbox, która będzie równa indexowi checkbox'a i na tej podsrawie bedziesz wiedzial, którego chceckboxa zaznaczono
militis
Cytat(nospor @ 2005-05-21 09:48:50)
@militis u ciebie też indexuje od 0. U ciebie natomiast widać wartość, po której można odczytać wlasciwy index

No dobrze, ale tu nie chodzilo chyba o indexowanie nie? Poza tym doskonale wiem że indeksuje od 0, skoro petle zaczynam od $i=0.
nospor
@militis polibode napisał:
Cytat
tzn jesli gdzies poustawiam w linijkach dajmy na to 7 checkboxow to i tak ma wpisane ustawione od pierwszego indeksu)
więc chyba mu chodzilo o indexowanie
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.