在 ajax 上使用 mysql 上的条件值设置背景颜色

Posted

技术标签:

【中文标题】在 ajax 上使用 mysql 上的条件值设置背景颜色【英文标题】:set background color on ajax with condition value on mysql 【发布时间】:2021-03-11 23:51:24 【问题描述】:

我只想在 mysql 数据中显示 2 种颜色的按钮和状态状态 如果状态 = 1 ,按钮颜色 = 绿色 如果状态 = 2 ,按钮颜色 = 红色

这是我的按钮代码

<?php
           $query1 = mysqli_query($connect,"SELECT * FROM smt WHERE no <= 15");
           while ( $data=mysqli_fetch_array($query1))
              $nostation = $data['no'];
              $namastation = $data['name'];
              $status = $data['status'];
               ?>

                      <div class='col-xs-2-2'>
                          <form method='post'>
                            <input type="hidden" value="2" id="status_<?=$nostation;?>" name="status">
                             <button type="submit" id="button_<?=$nostation;?>" data-id="<?=$nostation;?>" style="width:140px; height:75px; margin : 2px; border-radius:10%;"><b style="font-size:15px; color: #fff; font-family:Calibri;"><?php echo $namastation ?></b></button>
                          </form>
                      </div>
              <?php  ?>

这是我的 js 颜色代码,现在我可以为所有按钮设置颜色,没有状态值的条件。任何人都可以帮助我吗?

<script type="text/javascript">
  $(document).ready(function()
   $("[id^=button_]").css("background-color", "Red");
 );
</script>

这是我的 ajax 代码,用于设置具有自动生成 ID 的多个按钮

<script>
$(document).ready(function()           //when DOM is Ready.
$("[id^=button_]").click(function ()   //when Button is Clicked.
    var id = $(this).data('id');       // Get the ID of the button that was clicked on.
    var status = $("#status_"+id).val();   // value from `input` which is connected the clicked button.
   // console.log(id+"---"+name);
    $.ajax(                          // AJAX request
        url: 'coba1.php',            // send request to server.
        method: 'POST',               // method is POST.
        data:                        //data which is sent to server.      
            id: id,status: status
        ,
        function (data)     //success function called.
          // alert success data.
        
    );
);

);

我如何添加代码以根据条件设置按钮颜色?

【问题讨论】:

您正在将所有以button_ 开头的按钮ID 设置为红色,您期望什么?使用.each 循环遍历您的集合并相应地设置颜色......或者更好的是,已经在 CSS 的外部样式表上分配了 CSS。 @StackSlave 是的,我设置了 id,因为它有多个按钮,我必须将按钮 id 设置为使用 while 函数自动递增。我尝试使用 php-css 使用 if 条件设置颜色,但它只需刷新页面即可工作.. @akutok 我看到一个紧密的卷曲布鲁斯“”你想在这里实现什么?? 为什么刷新页面会起作用?我没有看到任何 $_POST$_GET$_SESSION 变量。在将任何内容发送到浏览器之前,您需要知道 PHP 在服务器上执行。当页面加载时,服务器和浏览器代码都会重新执行。请记住这一点并学习使用XMLHttpRequest 对不起我在其他文件中的 $_POST .. 那是向数据库发布一个值,其中表 id (nostation) 与 id="button_=$nostation;?>" 相同.. 它的工作使用 ajax 无需刷新页面,只需单击按钮即可.. 【参考方案1】:

您可以使用.each 循环遍历您的表单,然后检查status 输入是否具有值12,这取决于addClass redgreen。此外,在此处添加您从 db 获得的状态值,即:&lt;input type="hidden" value="&lt;?=$status;?&gt;" id="status_&lt;?=$nostation;?&gt;" name="status"&gt; `

演示代码

//loop through each form
$("form").each(function() 
  //find status value if 2 add class red or green
  $(this).find("input[name=status]").val() == 2 ? $(this).find("[id^=button_]").addClass("red") : $(this).find("[id^=button_]").addClass("green")
)
.red 
  background-color: red;


.green 
  background-color: green;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class='col-xs-2-2'>
  <form method='post'>
    <input type="hidden" value="2" id="status_1" name="status">
    <button type="submit" id="button_1" data-id="1" style="width:140px; height:75px; margin : 2px; border-radius:10%;"><b style="font-size:15px; color: #fff; font-family:Calibri;">Abc</b></button>
  </form>
</div>
<div class='col-xs-2-2'>
  <form method='post'>
    <input type="hidden" value="1" id="status_2" name="status">
    <button type="submit" id="button_2" data-id="2" style="width:140px; height:75px; margin : 2px; border-radius:10%;"><b style="font-size:15px; color: #fff; font-family:Calibri;">Xyz</b></button>
  </form>
</div>
<div class='col-xs-2-2'>
  <form method='post'>
    <input type="hidden" value="2" id="status_3" name="status">
    <button type="submit" id="button_3" data-id="3" style="width:140px; height:75px; margin : 2px; border-radius:10%;"><b style="font-size:15px; color: #fff; font-family:Calibri;">Mno</b></button>
  </form>
</div>

此外,您可以使用 php 代码执行相同操作,只需检查 $status 值并将值 redgreen 分配给某个变量,然后将此变量添加到按钮 class 即:

<?php
//yourcodes ..
$toadd;
while ($data = mysqli_fetch_array($query1)) 
    $nostation = $data['no'];
    $namastation = $data['name'];
    $status = $data['status'];
    //check status
    if ($status == 2) 
        $toadd = "red"; //assign value
        
     else 
        $toadd = "green";
    
?>

          <div class='col-xs-2-2'>
             <form method='post'>
                <input type="hidden" value="2" id="status_<?=$nostation; ?>" name="status">
                //pass same value inside button class
               <button type="submit" class="<?=$toadd; ?>" id="button_<?=$nostation; ?>" data-id="<?=$nostation; ?>" style="width:140px; height:75px; margin : 2px; border-radius:10%;"><b style="font-size:15px; color: #fff; font-family:Calibri;"><?php echo $namastation; ?></b></button>
            </form>
          </div>
 <?php
 ?>

并且只需使用 css :

 .red 
  background-color: red;


.green 
  background-color: green;
 

【讨论】:

什么不起作用?你有什么错误吗?请详细说明

以上是关于在 ajax 上使用 mysql 上的条件值设置背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

jquery ajax上的Textarea没有发送到mysql,只是输入字段

AJAX/PHP 向服务器发送值

在值等于 Yes 的工作表中使用 VLOOKUP 进行条件格式设置

面试不用背作为一个CRUD工程师,你必须要知道的MySQL知识

进行ajax调用时如何正确处理链接上的href值?

将裁剪的图像发送到数据库 ajax 在客户端和服务器上的 PHP