Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] edycja danych checkbox
Forum PHP.pl > Forum > Przedszkole
ghastblood
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
session
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>
ghastblood
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
session
  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ę wink.gif
ghastblood
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

session
Podaj przybliżony układ tabeli z MySQL w którym zapisujesz te checkboxy.
ghastblood
#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)


session
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. }
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.