Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] edycja danych checkbox
ghastblood
post
Post #1





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


Witam,

Jak mogę edytować dane zawarte w checkboxie. tzn przy dodawaniu danych do mysql zaznaczam checkboxy i dodaje dane do mysql i jak chciał bym edytować potem dane to wczytuje formularz i dane z mysql do odpowiednich inputów

  1.  
  2. $checked = '';
  3.  
  4. if($r['konk_id'] == $r1['zawody_konkurencje_id'])
  5. {
  6. $checked = 'checked="checked"';
  7. }
  8.  
  9. echo '<td><input type="checkbox" name="konkurencja['.$r['konk_id'].']" value="'.$r['konk_id'].'" '.$checked.'> - ' . $r['konk_name'] . '</td>';
  10.  


w taki sposób zaznaczam checkboxy
w jaki sposób mogę dodawać nowe rekordy i usuwać tzn

  1.  
  2. if($danemysql == $zaznaczony_checkbox){
  3.  
  4. } else {
  5. dodaje rekord do mysql
  6. }
  7.  
  8. if($danemysql == $odzaznaczony_checkbox){
  9. usuwa rekord
  10. }
  11.  


mniej więcej o to mi chodzi
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
session
post
Post #2





Grupa: Zarejestrowani
Postów: 112
Pomógł: 22
Dołączył: 11.04.2010
Skąd: Tarnów

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


Mamy jakiś formularz HTML5:
  1. /*--- Session Code ---*/
  2. <form action="" method="post">
  3. <fieldset id="check">
  4. <label for="nazwaid">Jakaś nazwa</label>
  5. <input type="checkbox" name="nazwa" id="nazwaid" value="1">
  6. <input type="submit" value="Wyślij">
  7. </fieldset>
  8. </form>

W bazie MySQL pole na jednoznakowy int (wartość 0 albo 1) o nazwie np. "check"
PHP:
  1. /*--- Session Code ---*/
  2. // Sprawdzenie, czy checkbox zaznaczony:
  3. if(isset($_POST['nazwa'])&&$_POST['nazwa']==1){
  4. $check=1;
  5. }else{$check=0;}
  6. // Zapytanie MySQL:
  7. $query=mysql_query("insert into `tabela` set `id`=NULL, `check`='".$check."'");
  8. // Ewentualnie UPDATE jeśli to jest edycja

Wróćmy do formularza:
  1. /*--- Session Code ---*/
  2. <?php
  3. $checked='';
  4. // Połączenie z MySQL i wybór bazy
  5. $query=mysql_query("select `check` from `tabela` where `id`='".$id."' limit 1");
  6. $result=mysql_fetch_assoc($query);
  7. if($result['check']==1){
  8. $checked='checked="checked"';
  9. }
  10. ?>
  11. <form action="" method="post">
  12. <fieldset id="check">
  13. <label for="nazwaid">Jakaś nazwa</label>
  14. <input type="checkbox" <?php echo $checked; ?> name="nazwa" id="nazwaid" value="1">
  15. <input type="submit" value="Wyślij">
  16. </fieldset>
  17. </form>


Ten post edytował session 12.05.2013, 14:34:24
Go to the top of the page
+Quote Post
ghastblood
post
Post #3





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


Dzięki za kod ale nie o to mi chodzi

napisałem na szybko taki kodzik

  1. <?php
  2. //Konkurencja id
  3. $a = array(1,2,3,4);
  4. //Zawodnik konkurecna
  5. $b = array(1,2);
  6.  
  7. foreach($a as $r)
  8. {
  9. $checked = '';
  10. foreach($b as $r1)
  11. {
  12. if($r == $r1)
  13. {
  14. $checked = 'checked="checked"';
  15. }
  16. }
  17. echo '<input type="checkbox" value="'.$r.'" name="konkurencja['.$r.']" '.$checked.'>';
  18. }
  19. ?>
  20.  


Raczej tu wszystko jest jasne checkbox 1 i 2 będą checked a 3 i 4 unchecked.

chodzi mi o to że jeżeli zaznaczę checkbox gdzie $r = 3 to dodaje mi rekord do $b(tu oczywiście będzie mysql) ale jeżeli odznaczę checkbox gdzie $r = 2 a on występuje w $b to go usuwa z mysql
Go to the top of the page
+Quote Post
session
post
Post #4





Grupa: Zarejestrowani
Postów: 112
Pomógł: 22
Dołączył: 11.04.2010
Skąd: Tarnów

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


  1. <?php
  2. //Konkurencja id
  3. $a = array(1,2,3,4);
  4. //Zawodnik konkurecna
  5. $b = array(1,2);
  6.  
  7. foreach($a as $r){
  8. $checked = '';
  9. if(!in_array($r,$b)){
  10. if(isset($_POST['konkurencja'][$r])){
  11. $checked = 'checked="checked"';
  12. $b[]=$r;
  13. }
  14. }else{$checked = 'checked="checked"';}
  15. }
  16. foreach($b as $k=>$v){
  17. if(!isset($_POST['konkurencja'][$r])){
  18. unset($b[$k]);
  19. }
  20. }
  21. ?>

Może troche rozjaśniłem Ci sytuację (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
ghastblood
post
Post #5





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


Wybacz ale jestem chyba wyjątkowo głupi bo pomimo że rozumiem kod i znam funkcje w nim to nie wiem gdzie powinny być zapytania do mysql

Go to the top of the page
+Quote Post
session
post
Post #6





Grupa: Zarejestrowani
Postów: 112
Pomógł: 22
Dołączył: 11.04.2010
Skąd: Tarnów

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


Podaj przybliżony układ tabeli z MySQL w którym zapisujesz te checkboxy.
Go to the top of the page
+Quote Post
ghastblood
post
Post #7





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


#zawody_konk_id#zawody_id#user_id#zawody_konkurencje_id
#1#8#1#10

raczej to jest jasne już

zawody_konk_id = ID rekordu Auto Increment
zawody_id = identyfikator zawodów
user_id = identyfikator użytkownika
zawody_konkurencje_id = identyfikator konkurencji (pobiera po id nazwę konkurencji)


Go to the top of the page
+Quote Post
session
post
Post #8





Grupa: Zarejestrowani
Postów: 112
Pomógł: 22
Dołączył: 11.04.2010
Skąd: Tarnów

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


Po użyciu skryptu, który podałem wyżej otrzymujemy "czystą" tablice $b w której są tylko zaznaczone checkboxy, pobierzmy do tego dotychczasowe "zaznaczenia":
  1. $query=mysql_query("select `zawody_konk_id` from `tabela` where `user_id`='".$user_id."'");
  2. $actual=array();
  3. while($result=mysql_fetch_assoc($query)){
  4. if(!in_array($result['zawody_konk_id'],$b)){
  5. $query=mysql_query(); //Tutaj usunięcie z bazy wpisu o ID: $result['zawody_konk_id'] / ewentualnie update
  6. }else{$actual[]=$result['zawody_konk_id'];}
  7. }

To teraz jeszcze dopisywanie nowych:
  1. foreach($b as $v){
  2. if(!in_array($v,$actual)){
  3. $query=mysql_query(); // Tutaj dodawanie nowego wpisu lub update
  4. }
  5. }
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.09.2025 - 17:34