Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Checkbox checked ładowany z bazy danych
Forum PHP.pl > Forum > PHP
SiganPL
Witam...
Mam taki problem który zresztą nie wiem jak opisać...


Jak z listy checkboxów zapisać do bazy danych te które były zaznaczone, a później przeglądając tą samą stronkę checki które mieliśmy zaznaczone były checked=checked a te nie zaznaczone... nie zaznaczone? A gdy zaznaczymy lub odznaczymy checki zmiany zostawały zapisywane w bazie danych?



Coś w stylu zainteresowań na fotce tongue.gif

Sporo kombinowałem z tablicami i array_diff ale ciągle napotykałem błędy (dla mnie...) nie do rozwiązania smile.gif

Moze ktos robił coś podobnego albo wie jak cos takiego zrobic?

Prosze o jakis kod... rade... o cokolwiek co mi pomoze smile.gif

Jeżeli jest to niejasne a ktos chciałby pomóc to niech pisze a ja spróbuje wytłumaczyć to bardziej po ludzku smile.gif
I przepraszam za zaśmiecanie
paxvim
To musi być checkbox ładowany z bazy danych smile.gif
Wicepsik
  1. <form method="post"><input type="checkbox" name="zainteresowania[]" value="ksiazka">
  2. <input type="checkbox" name="zainteresowania[]" value="sport">
  3. <input type="checkbox" name="zainteresowania[]" value="kuchnia">
  4. <input type="checkbox" name="zainteresowania[]" value="tv">
  5. <input type="submit"></form>


  1. print_r($_POST['zainteresowania']);
webmaniak
Witam!
Również mam problem z checkboxem. Chce żeby checkbox automatycznie się zaznaczał po sprawdzeniu czy zapytanie do bazy danych jest true-chodzi oczywiście o zmienną $pytanie.
kod tej części wygląda tak:
  1. function artykuly()
  2. {
  3. //lista artykułów
  4. echo 'Lista artykułów';
  5. ?>
  6. <table>
  7. <tr style="background:#BFBFBF;">
  8. <td> <?php echo '#';?></td>
  9. <td><input type="checkbox" name="glowny"></td>
  10. <td><?php echo 'Tytuł'; ?></td>
  11. <td><?php echo 'Data';?></td>
  12. <td><?php echo 'Kategoria';?></td>
  13. <td><?php echo 'Autor';?></td>
  14. <td><?php echo 'Opublikowany'; ?></td>
  15. <td><?php echo 'ID'; ?></td>
  16. </tr>
  17. <?php
  18. $x=0;
  19. $zapytanie = mysql_query("SELECT a.id_ar, a.id_cat, a.tresc, a.tytul, a.data, b.id, b.nazwa FROM articles a LEFT JOIN articles_categories b ON a.id_cat = b.id");
  20. $pytanie = mysql_query("SELECT opublikowane FROM articles WHERE opublikowane=true");
  21.  
  22. If ($rezltat=mysql_fetch_array($pytanie)){
  23. $_POST["pole[' $x']"]==true;}
  24.  
  25. while($wynik=mysql_fetch_array($zapytanie))
  26. {
  27. $x++;
  28. $i=0;
  29. ?>
  30. <tr>
  31. <td><?php echo $x; ?></td>
  32. <td><input type="checkbox" name="pole['<?php $x;?>']"></td>
  33. <td><?php echo stripslashes($wynik['tytul']); ?></td>
  34. <td><?php echo date("d.m.Y, H:i", $wynik['data']); ?></td>
  35. <td><?php echo $wynik['nazwa']; ?></td>
  36. <td><?php echo 'Autor';?></td>
  37. <td><?php if($rezultat=mysql_fetch_array($pytanie))
  38. {
  39. echo 'Tak';
  40. }
  41. else
  42. {
  43. echo 'Nie';
  44. }?></td>
  45. <td><?php echo $wynik['id_ar']; ?></td>
  46. </tr><?php
  47.  
  48. }
  49. ?>
  50. </table>
  51. <?php
  52. }
  53. ?>

i właśnie to mi nie działa-zaznaczenie checkboxów. Najprawdopodobniej coś namieszełem w polu name, pewnie te nawiasy też nie są prawidłowe, ale nie wiem jak się za to zabrać, jak naprawić. Będę wdzięczny za pomoc.
Danielcom
Jeśli dobrze zrozumiałem, to tutaj jest mały przykład na polach radio
Pobierasz dane z MySQL jeżeli wartość pola wynosi 1 (True) pole domyślnie jest zaznaczone.

  1. <label>Tak</label> <input type="radio" name="lista_rezerwowa" value="1" <?php if ($kursy['lista_rezerwowa'] == '1'){ ?>checked="checked"<?php } ?> />
moto0095
Jeżeli chodzi o te checked=checked to czy nie możesz wyboru zapisać w sesjach questionmark.gif
Danielcom
Może zapisać w sesji, ale jeśli później będzie chciał pobrać dane z bazy i edytować je ponownie, będzie musiał ustawiać sesje od nowa. Wydaje mi się, ze to bardziej skomplikowane a do tego zaśmieca sesje, jeśli tych pól będzie dużo.
webmaniak
Cytat(Danielcom @ 7.05.2010, 23:47:26 ) *
Jeśli dobrze zrozumiałem, to tutaj jest mały przykład na polach radio
Pobierasz dane z MySQL jeżeli wartość pola wynosi 1 (True) pole domyślnie jest zaznaczone.

  1. <label>Tak</label> <input type="radio" name="lista_rezerwowa" value="1" <?php if ($kursy['lista_rezerwowa'] == '1'){ ?>checked="checked"<?php } ?> />

Tam brakuje średnika, bez niego jest błąd, ale właściwie teraz zrobiłem to inaczej. Pierwotnie chciałem mieć dwie kolumny związane z publikowaniem. Jedna to miała być kolumna checkboxów-tu jeśli wartość jest true to powinien być checkbox zaznaczony a druga opublikowane-jeśli jest opublikowany artykuł to z wartością "tak", a jeśli nie-z wartością "nie". Chciałem w taki sposób żeby po kliknięciu w zaznaczony checkbox(czyli odznaczeniu go) zmieniała się wartość w bazie danych na false-czyli poprzez UPDATE. Ale nie wiem czemu, gdy w kolumnie opublikowane wszystko się wyświetla prawidłowo to w kolumnie z checkboxami już nie. I na odwrót. Dlatego postanowiłem zamiast tych dwóch kolumn zrobić jedną z butonami. Jeśli wartość jest true w bazie to na buttonie jest Tak. W buttonie zrobiłem to za pomocą tego kodu:
  1. <button type="button" name="button['<?php $x;?>']" onclick="<?php
  2. $pytanie=mysql_query("UPDATE 'opublikowane' 'articles' SET 'opublikowane' = '$z' 'id_ar'= $a");
  3. ?>"><?php $y;
  4. if($rezultat=mysql_fetch_array($pytanie))
  5. {
  6. if($rezultat['opublikowane']==1)
  7. {
  8. echo $y="Tak";
  9. $z=0;
  10. }
  11. else
  12. {
  13. echo $y="Nie";
  14. $z=1;
  15. }
  16. }
  17. ?></button>

teraz chciałbym żeby po kliknięciu byłą aktualizacja tej wartości w bazie, tylko nie wiem dlaczego ten kod nie działa. Teraz widzę że jest coś nie tak chyba z $z ale nie wiem jak ustawić żeby zmieniało w tabeli na przeciwną. Wtedy po odświeżeniu przycisk automatycznie zmieniałby się na 'Nie'. zmiennej $a przypisałem wartość $wynik['id_ar']-nie wiem czy dobrze. Proszę o pomoc.
tehaha
nie wiesz czemu nie działa? to odpal sobie to w przeglądarce i zobacz podgląd źródła i zobacz co masz w onclick=""
webmaniak
W onclick="" nie ma nic, ale nadal nie wiem dlaczego, gdzie szukać błędu. Widzę tylko że kod php mi nie działa-ten pierwszy.
tehaha
php działa po stronie serwera, czyli w momencie kiedy strona jest przeładowywana, po stronie przeglądarki działają takie technologie jak: javascript, ajax, biblioteka jquery, zanim zaczniesz coś pisać warto poznać podstawy podstaw
Danielcom
Cytat(webmaniak @ 8.05.2010, 08:32:28 ) *
Tam brakuje średnika, bez niego jest błąd(...)


  1. <label>Tak</label> <input type="radio" name="lista_rezerwowa" value="1" <?php if ($kursy['lista_rezerwowa'] == '1'){ ?>checked="checked"<?php } ?> />


W którym miejscu brakuje średnika ? u mnie jest dokładnie tak zrobione i śmiga bez błędów.
webmaniak
Cytat(Danielcom @ 8.05.2010, 12:55:21 ) *
  1. <label>Tak</label> <input type="radio" name="lista_rezerwowa" value="1" <?php if ($kursy['lista_rezerwowa'] == '1'){ ?>checked="checked"<?php } ?> />


W którym miejscu brakuje średnika ? u mnie jest dokładnie tak zrobione i śmiga bez błędów.

U mnie z kolei w końcowym fragmencie:
  1. <?php } ?>

mam błąd:
  1. Parse error: syntax error, unexpected '}' in ... on line 82

gdy zrobię tak:
  1. <?php ;} ?>

nie ma błędu.
kinder
ten kod
  1. print_r($_POST['id']);


wypisuje u mnie takie cos:
  1. Array ( [0] => boks [1] => tenis )


a chcialbym uzyskac same wartosci czyli tylko: boks tenis
Czy ktoś mógłby mi pomóc..
phpion
implode
  1. echo implode(', ', $_POST['id']);
kinder
tak to rozwiazalo sprawe dziekuje
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.