Avatar billede Vega Juniormester
16. marts 2019 - 23:23 Der er 7 kommentarer

Hjælp til at disable checkboxes

Hej,

Jeg har følgende kode der finder tidligere datoer i en database:

if ($stmt = $conn->prepare("SELECT `id`, `date`
          FROM `tbl_traeninger`
          WHERE `date` < CURDATE() AND hold_id = ?
          ORDER BY date DESC LIMIT 3")) {
          $stmt->bind_param("i", $hold);
          $stmt->execute();
          $stmt->bind_result($id, $date);
          while ($stmt->fetch()){
          $my_date = array(
          'id' => $id,
          'date' => date('d-m', strtotime($date)),
          );
          $dates_id[] = $id;
          $dates[] = $my_date;
          }
#        $result->close();
        }

Disse hentes ud her:
$.each(item.workouts, function (index, date) {
                  if(date.status){
                      tbody += '<td>';
                      tbody += '<label class="container"><input id="'+date.date_id+'" class="styled" type="checkbox" name="member_'+item.id+'[]" value="'+date.date_id+'" checked><span class="checkmark"></span></label>';
                      tbody += '</td>';
                    }else{
                      tbody += '<td>';
                      tbody += '<label class="container"><input id="'+date.date_id+'" class="styled" type="checkbox" name="member_'+item.id+'[]" value="'+date.date_id+'"><span class="checkmark"></span></label>';
                      tbody += '</td>';
                    }
                });

Jeg ønsker at checkbox'ene der baseret på tidligere datoerne skal være disabled uanset om de er markeret eller ej. Men jeg kan ikke lige gennemskue hvordan jeg gør det...

Er der en der kan hjælpe mig?
Avatar billede expnet Seniormester
17. marts 2019 - 00:18 #1
Henter du ikke kun dem der gamle med den kode.
Det er da det jeg forstår ud fra den sql statement, for så skal du jo bare gør sådan her

$.each(item.workouts, function (index, date) {
                  if(date.status){
                      tbody += '<td>';
                      tbody += '<label class="container"><input id="'+date.date_id+'" class="styled" type="checkbox" disabled name="member_'+item.id+'[]" value="'+date.date_id+'" checked><span class="checkmark"></span></label>';
                      tbody += '</td>';
                    }else{
                      tbody += '<td>';
                      tbody += '<label class="container"><input id="'+date.date_id+'" class="styled" type="checkbox" disabled name="member_'+item.id+'[]" value="'+date.date_id+'"><span class="checkmark"></span></label>';
                      tbody += '</td>';
                    }
                });
Avatar billede Vega Juniormester
17. marts 2019 - 00:21 #2
Nej det gør jeg ikke.

    $dates = array();
   
    if ($stmt = $conn->prepare("SELECT `id`, `date`
      FROM `tbl_traeninger`
      WHERE `date` >= CURDATE() AND hold_id = ?
      ORDER BY date LIMIT 1")) {
      $stmt->bind_param("i", $hold);
      $stmt->execute();
      $stmt->bind_result($id, $date);
      while ($stmt->fetch()){
        $my_date = array(
          'id' => $id,
          'date' => date('d-m', strtotime($date)),
        );
        $dates_id[] = $id;
        $dates[] = $my_date;
      }
#      $result->close();
    }
      if ($stmt = $conn->prepare("SELECT `id`, `date`
          FROM `tbl_traeninger`
          WHERE `date` < CURDATE() AND hold_id = ?
          ORDER BY date DESC LIMIT 3")) {
          $stmt->bind_param("i", $hold);
          $stmt->execute();
          $stmt->bind_result($id, $date);
          while ($stmt->fetch()){
          $my_date = array(
          'id' => $id,
          'date' => date('d-m', strtotime($date)),
          );
          $dates_id[] = $id;
          $dates[] = $my_date;
          }
#        $result->close();
        }
    }
Avatar billede Vega Juniormester
17. marts 2019 - 00:32 #3
Jeg henter både den kommende dato og de tre seneste datoer samtidig. Disse vises via ovenstående. Så hvis jeg bare vælger "Disabled", så er det alle...
Avatar billede expnet Seniormester
17. marts 2019 - 01:10 #4
prøv det her. har lidt svært ved at se mig ud af hvordan du henter data til dit jquery scritpt 

var NowDate = new Date();
CheckDate = (NowDate.getDate()) + '-' +((NowDate.getMonth() + 1) < 10 ? '0'+(NowDate.getMonth() + 1) : (NowDate.getMonth() + 1));

$.each(item.workouts, function (index, date) {
                  if(date.status){
                      tbody += '<td>';
                      tbody += '<label class="container"><input id="'+date.date_id+'" class="styled" type="checkbox" ' + ((date.dates.date < CheckDate )? 'disabled' : '') + ' name="member_'+item.id+'[]" value="'+date.date_id+'" checked><span class="checkmark"></span></label>';
                      tbody += '</td>';
                    }else{
                      tbody += '<td>';
                      tbody += '<label class="container"><input id="'+date.date_id+'" class="styled" type="checkbox" ' + ((date.dates.date < CheckDate )? 'disabled' : '') + ' name="member_'+item.id+'[]" value="'+date.date_id+'"><span class="checkmark"></span></label>';
                      tbody += '</td>';
                    }
                });
Avatar billede Vega Juniormester
17. marts 2019 - 01:19 #5
Det virker ikke umiddelbart.
Sender lige hele scriptet:

<script type="text/javascript">
      $(document).ready(function () {
        $("#createMember").click(function(){
          var data = $("#memberForm").serialize();
          $.post("savemember.php", {'data': data}, function(){
          });
        });

        $("#save_workouts").click(function(){
          var data = $("#myForm").serialize();
          $.post("savedata.php", {'data': data}, function(){
          });
        });
       
        $("#team").change(function () {
          var team = $("#team").val();
          $.get( "json.php", {action: "members", hold: team}, function( data ) {

            var dates = '';
            $.each(data.dates, function (index, item) {
              dates += '<th class="dynamic_date">' + item.date + '</th>';
            });

            var tbody = '';
            var myVar = 1;
            $.each(data.members, function (index, item) {
              tbody += '<tr>';
                <?php if (!$mobile) { ?> tbody += '<td style="vertical-align:middle" align="left">' + myVar++ + '</td>'; <?php } else { } ?>
                tbody += '<td style="vertical-align:middle">' + item.fornavn + ' ' + item.efternavn +'</td>';
                tbody += '<td style="vertical-align:middle">' + item.age + ' år</td>';
               
                $.each(item.workouts, function (index, date) {
                  if(date.status){
                      tbody += '<td>';
                      tbody += '<label class="container"><input id="'+date.date_id+'" class="styled" type="checkbox" name="member_'+item.id+'[]" value="'+date.date_id+'" checked><span class="checkmark"></span></label>';
                      tbody += '</td>';
                    }else{
                      tbody += '<td>';
                      tbody += '<label class="container"><input id="'+date.date_id+'" class="styled" type="checkbox" name="member_'+item.id+'[]" value="'+date.date_id+'"><span class="checkmark"></span></label>';
                      tbody += '</td>';
                    }
                });
                tbody += '<td></td>';
              tbody += '</tr>';
            });

            $(".dynamic_date").remove();
            $(dates).insertBefore("#numbers_of");
            $('#myTable tbody').html(tbody);
          }, 'json');
        });
      });
    </script>
     
    $dates = array();
   
    if ($stmt = $conn->prepare("SELECT `id`, `date`
      FROM `tbl_traeninger`
      WHERE `date` >= CURDATE() AND hold_id = ?
      ORDER BY date LIMIT 1")) {
      $stmt->bind_param("i", $hold);
      $stmt->execute();
      $stmt->bind_result($id, $date);
      while ($stmt->fetch()){
        $my_date = array(
          'id' => $id,
          'date' => date('d-m', strtotime($date)),
        );
        $dates_id[] = $id;
        $dates[] = $my_date;
      }
#      $result->close();
    }
    if ($mobile) {
          if ($stmt = $conn->prepare("SELECT `id`, `date`
          FROM `tbl_traeninger`
          WHERE `date` < CURDATE() AND hold_id = ?
          ORDER BY date DESC LIMIT 2")) {
          $stmt->bind_param("i", $hold);
          $stmt->execute();
          $stmt->bind_result($id, $date);
          while ($stmt->fetch()){
          $my_date = array(
          'id' => $id,
          'date' => date('d-m', strtotime($date)),
          );
          $dates_id[] = $id;
          $dates[] = $my_date;
          }
#        $result->close();
        }
    } else {
      if ($stmt = $conn->prepare("SELECT `id`, `date`
          FROM `tbl_traeninger`
          WHERE `date` < CURDATE() AND hold_id = ?
          ORDER BY date DESC LIMIT 3")) {
          $stmt->bind_param("i", $hold);
          $stmt->execute();
          $stmt->bind_result($id, $date);
          while ($stmt->fetch()){
          $my_date = array(
          'id' => $id,
          'date' => date('d-m', strtotime($date)),
          );
          $dates_id[] = $id;
          $dates[] = $my_date;
          }
#        $result->close();
        }
    }

    $today = new DateTime('today');

Koden er rodet, men håber det giver mening? :-/
Avatar billede Vega Juniormester
17. marts 2019 - 01:24 #6
https://ibb.co/4JcF4TK
Det er de 3 kolonner til højre jeg gerne vil have "disabled" :-)
Avatar billede expnet Seniormester
17. marts 2019 - 01:44 #7
Har sendt dig en pm
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester