Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][JavaScript][PHP] Zapisywanie checkboxów, Problem z zapisywaniem checkboxów do bazy danych
BuzekxD
post 20.05.2013, 15:31:08
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 20.05.2013

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


Witajcie,
mam pewien problem. Zapewne się już z nim spotkaliście, bo widziałem, że jest częsty. Mam problem z zapisywaniem checkboxów do bazy danych, aby po ich zaznaczeniu były one na stałe zaznaczone (najlepiej na wszystkich komputerach jakie się połączą), a nie po odświeżeniu znowu były puste. Jestem kompletnie zielony co do MySQL, w html się bawię i rozumiem(nie tworze) JS. Google używałem. Ten temat pisze po 6 dniach poszukiwań, gdzie znajdowałem niepełne skrypty, pomoce dla innych, albo zupełnie coś odbiegającego od tematu. Nie wiem co jeszcze mogę powiedzieć. Przejdę już do sedna.

Tutaj jest część, która jest wprowadzona w body.
  1. <form name="myform"><table>
  2. <tr><td><input TYPE="checkbox" NAME="atak1" TITLE="Zaznacz wszystkie" VALUE="X" onClick="atak1_elements(true,3)"><a>1</a> <input TYPE="checkbox" NAME="atak2" TITLE="Zaznacz wszystkie" VALUE="X" onClick="atak2_elements(true,3)"><a>2</a></td><td colspan="3"><center><a>Zaznacz wszystko</a></center></td></tr>
  3. <tr><td><input TYPE="checkbox" NAME="atak1" TITLE="Odznacz wszystkie" VALUE="O" onClick="atak1_elements(false,3)"><a>1</a> <input TYPE="checkbox" NAME="atak2" TITLE="Odznacz wszystkie" VALUE="O" onClick="atak2_elements(false,3)"><a>2</a></td><td colspan="3"><center><a>Odznacz wszystko</a></center></td></tr>
  4. <tr><td><input type="checkbox" name="atak1" value="1">1 <input type="checkbox" name="atak2" value="1">2</td></tr>
  5. <tr><td><input type="checkbox" name="atak1" value="1">1 <input type="checkbox" name="atak2" value="1">2</td></tr>
  6. <tr><td><input type="checkbox" name="atak1" value="1">1 <input type="checkbox" name="atak2" value="1">2</td></tr>
  7. </table></form>


Działają jeszcze tutaj 2 identyczne skrypty od zaznaczania i odznaczania wszystkiego (publiczne, nie mojego autorstwa):
[JAVASCRIPT] pobierz, plaintext
  1. function atak1_elements(is_checked, checkboxs_count){
  2. for ( i=0 ; i < checkboxs_count + 99 ; i++ ){
  3. if (is_checked){
  4. document.forms[0].atak1[i].checked=true;
  5. }
  6. else{
  7. document.forms[0].atak1[i].checked=false;
  8. }
  9. }
  10. }
[JAVASCRIPT] pobierz, plaintext

[JAVASCRIPT] pobierz, plaintext
  1. function atak2_elements(is_checked, checkboxs_count){
  2. for ( i=0 ; i < checkboxs_count + 99 ; i++ ){
  3. if (is_checked){
  4. document.forms[0].atak2[i].checked=true;
  5. }
  6. else{
  7. document.forms[0].atak2[i].checked=false;
  8. }
  9. }
  10. }
  11.  
[JAVASCRIPT] pobierz, plaintext


Nie mam bladego pojęcia, jak to zrobić, szukanie nic nie dało, dlatego proszę was o pomoc.

Z góry dzięki.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
morthan
post 21.05.2013, 12:02:59
Post #2





Grupa: Zarejestrowani
Postów: 50
Pomógł: 4
Dołączył: 15.06.2010

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


Piszę z głowy więc kod będzie do sprawdzenia.

  1. <input class='element0' TYPE="checkbox" NAME="atak2[0]" TITLE="Zaznacz wszystkie" VALUE="1" >
  2. <input class='element1' TYPE="checkbox" NAME="atak2[1]" TITLE="Zaznacz wszystkie" VALUE="1" >
  3. <input class='element2' TYPE="checkbox" NAME="atak2[2]" TITLE="Zaznacz wszystkie" VALUE="1" >
  4. <input class='element3' TYPE="checkbox" NAME="atak2[3]" TITLE="Zaznacz wszystkie" VALUE="1" >
  5. <input class='element4' TYPE="checkbox" NAME="atak2[4]" TITLE="Zaznacz wszystkie" VALUE="1" >
  6. <input class='element5' TYPE="checkbox" NAME="atak2[5]" TITLE="Zaznacz wszystkie" VALUE="1" >


Dla zapisu.

  1. foreach($_POST['atak2'] AS $key => $value){
  2. // jakaś tam obsługa typu:
  3. if($key === 2 ){
  4. // zapis do bazy jakiejś wartości
  5. }
  6. }


Dla odczytu (zakładam że dane masz tyciągnięte z bazy w array)

  1. foreach($slownik AS $key => $value){
  2. echo '<input TYPE="checkbox" NAME="atak2['.$key.']" TITLE="Zaznacz wszystkie" VALUE="'.$value.'"';
  3. if($zapisaneDane[$key])
  4. echo ' checked="checked" ';
  5. echo ' >';
  6. }


albo:

  1. <script type="">
  2. $(document).ready(function(){
  3. var table = new Array();
  4. <?php
  5. foreach($zapisaneDane AS $key => $value){
  6. echo "table[$key] = $value";
  7. }
  8. echo "var max = count($zapisaneDane )";
  9. ?>
  10. for (var i=0; i<max; i++)
  11. {
  12. $('input.element'+i).prop('checed',true);
  13. }
  14. });


Coś w ten deseń.
Dla js loop polecam zernąć tu:
  1. <a href="http://stackoverflow.com/questions/9329446/for-each-in-a-array-how-to-do-that-in-javascript" target="_blank">http://stackoverflow.com/questions/9329446...t-in-javascript</a>
Go to the top of the page
+Quote Post
BuzekxD
post 22.05.2013, 20:56:01
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 20.05.2013

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


Jeśli dobrze rozumiem, to albo tamte 2 kody php, albo ten jeden html. Ani tak ani tak nie działa, przy php bez roznicy, a w html wywala blad, ze nie czyta "<".
Dodam, że nie mam pojęcia jak skonfigurować MySQL(jak pisałem, jeszcze się z tym nie spotkałem), może jakaś tabela, czy coś tego typu.
Na chwile obecną starcza mi serwer w domu na osobnym PC z użyciem programu Webserv. Do bazy loguje się z użyciem phpMyAdmin.
Dopiero teraz zauważyłem, że ten skrypt do zaznaczania, wywala jakiś błąd, choć działa... Jednak nie zmienia to faktu, że to wyżej nie działa/coś źle robię, ponieważ testowałem to bez tego skryptu.

Nadal poszukuje pomocy ;/
Go to the top of the page
+Quote Post
gitbejbe
post 23.05.2013, 13:49:48
Post #4





Grupa: Zarejestrowani
Postów: 516
Pomógł: 63
Dołączył: 27.08.2012

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


Zapisujesz do bazy danych jakieś wartości tych checkboxów. Powiedźmy, że jesli checkbox jest zaznaczony to w bazie danych posiada wartość "1".
Przy włączeniu strony pobierasz najpierw z bazy danych wartości tych checkboxów i sprawdzasz, które mają wartość "1". Możesz to zrobić w warunku

  1. if($row['jakis_checkbox_z_bazy']) == 1)
  2. {
  3. echo '<input type="checkbox" name="nazwa" checked>'.
  4. }

to tak na szybko. Najwygodniej byłoby oczywiście walnąc to w pętle z odpowiednimi warunkami

Ten post edytował gitbejbe 23.05.2013, 13:57:21
Go to the top of the page
+Quote Post
BuzekxD
post 23.05.2013, 14:33:04
Post #5





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 20.05.2013

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


No tak, ale mam zrobić jakaś tabel, cokolwiek? Zapewne tak, a ja nawet nie wiem jak ;/
A uwzględniłeś może, że u mnie działa skrypt, który operuje checkboxami z taka sama nazwa, bo z tego co zgaduje musi być inna a wtedy to nie działa ;/
Go to the top of the page
+Quote Post
gitbejbe
post 24.05.2013, 06:31:19
Post #6





Grupa: Zarejestrowani
Postów: 516
Pomógł: 63
Dołączył: 27.08.2012

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


no to kolega @morthan pięknie przedstawił Tobie rozwiązanie.

Może prościej byłoby Ci coś poradzić, gdybyś napisać co w ogóle chcesz osiągnąć. Do czego ma być ten formularz ? co chcesz za jego pomocą zrobić ? To, że checkboxy mają być zaznaczone to już wiemy...
Go to the top of the page
+Quote Post
BuzekxD
post 27.05.2013, 20:29:26
Post #7





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 20.05.2013

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


Mam 2 kolumny checkboxow (w tabeli). Używając 2 skryptów (podanych w temacie), zaznaczam je i odznaczam wszystkie (czyli tak jakby zaznacz wszystko w emailu). Chciałbym, aby po odświeżeniu strony, checbkoxy sie nie resetowały i opcjonalnie były takie same na wszystkich innych komputerach, ale powtarzam, że to opcjonalnie.

//edit
Mówisz, że przedstawił pięknie, mógłbyś mi połączyć to co on zrobił (bo mi nie działa jak robię) a ja to potem przekleję z head do head, z body do body i to co do bazy to do bazy.

sprawdziłem juz pare razy...
wywala błąd tu:
foreach($slownik AS $key => $value){
i tu:
foreach($_POST['atak2'] AS $key => $value){

Ten post edytował BuzekxD 24.05.2013, 17:45:51
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 04:17