Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Aktualizowanie kilku checkboxów poprzez foreach
casperii
post
Post #1





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Witam panowie, mam kod , który ma za zadanie po array_key_exsist polecieć foreachem wszystkie zaznaczone checkboxy i jeżeli w bazie mam 1 to robi 0 , jeżeli mam 0 to robi 1.

  1. $odbieram = $_POST['plik'];
  2. if(isset($odbieram)){
  3. foreach ($odbieram as $cos=>$value){
  4. $sprawdz = mysql_query("SELECT * FROM `files` WHERE `plik` = '".$value."'") or die(mysql_error());
  5. $sprawdzam=mysql_fetch_array($sprawdz,MYSQL_ASSOC);
  6. $wyciagam = $sprawdzam['onof'];
  7.  
  8. if($wyciagam=='1'){
  9. $zapisuje = '0';
  10. }else{
  11. $zapisuje = '1';
  12. }
  13.  
  14.  
  15. $aktualizuje = ("UPDATE `files` SET `onof` = '".$zapisuje."' WHERE `plik` = '".$value."'") or die (mysql_error());
  16. $wykonuje_aktualizuje = mysql_query($aktualizuje);
  17. if($result_upd){
  18. print 'skonfigurowałem:'.$value.'<br>';
  19. }
  20. }
  21. }else{
  22. print('Komunikat jeżeli nie wybrano nic');
  23. }


  1. <form...
  2. ...
  3. zapytanie do bazy w celu sprawdzenia czy checkbox mam zaznaczony
  4. print('<input type="checkbox" name="plik[]" value="'.$row['plik'].'"');if($row['onof']){print('checked="checked"');}print('>'.$row['plik'].'<br>');
  5. ..
  6. </form>


Niestety powyższy kod jakoś dziwnie działa. zaptaszkuje zapisze to 1 zapisuje drugi nie zapisuje. Albo jak mam np 2 checkboxy zaznaczone i 1 odznacze to mi odznacza wszystkie checkboxy.

Ten post edytował casperii 17.09.2015, 09:05:58
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
KsaR
post
Post #2





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


casperii, moj kod robi to co twoj..
Obkomentuje go:
  1. if (isset($_POST['plik'])) # istnieje w tablicy $_POST klucz plik.
  2. foreach ($_POST['plik'] as $v) # więc przeglądamy wartosci wyslanych post-ów.
  3. (false!==mysql_query("UPDATE `files` SET `onof`=IF(`onof`='0','1', '0') WHERE `plik` = '".$v."'")) #czy "skonfigurowalo", oraz zapytanie do bazy, w ktorym jesli `onof` mialo 0 da mu 1 inaczej pozostawi 0.
  4. ? print('skonfigurowałem:'.$v.'<br>') # jesli wyzszy warunek dal prawde
  5. :exit(mysql_error()); # jesli nie dal prawdy.
  6. else echo 'Komunikat jeżeli nie wybrano nic'; # $_POST['plik']; nie istnieje, (klucz).

Aha, ten if ale w zapytaniu zastepuje te liniki:
  1. $sprawdz = mysql_query("SELECT * FROM `files` WHERE `plik` = '".$value."'") or die(mysql_error());
  2. $sprawdzam=mysql_fetch_array($sprawdz,MYSQL_ASSOC);
  3. $wyciagam = $sprawdzam['onof'];
  4.  
  5. if($wyciagam=='1'){
  6. $zapisuje = '0';
  7. }else{
  8. $zapisuje = '1';
  9. }

Czyli troche inaczej jednak:
powinno byc zamiast:
IF(`onof`='0','1', '0')
W zapytaniu, tak:
IF(`onof`='1','0', '1')
Wtedy moj kod zrobi dokladnie to co twoj, z tym że dodatkowo zadziala mu ten komunikat ze skonfigurowano, jak i komunikat bledu (IMG:style_emoticons/default/tongue.gif)

Ten post edytował KsaR 17.09.2015, 18:02:49
Go to the top of the page
+Quote Post

Posty w temacie


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: 15.10.2025 - 16:13