【问题标题】:Send the change date into the next page URL PHP HTML将更改日期发送到下一页 URL PHP HTML
【发布时间】:2022-11-22 01:21:23
【问题描述】:

我是 PHP 和 HTML 的新手,正在尝试以下操作。下面的 html 代码显示数据库中的数据并将日历添加为行。日历默认显示当前日期。更改时,应在 url 中传递更改日期。

<?php
    include 'connect.php';
    ?>
    
    
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Update Clients</title>
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/css/bootstrap.min.css">
        <script src="/scripts/snippet-javascript-console.min.js?v=1"></script>
    </head>
    
    <body>
        <div class="container my-5">
            <table class="table">
                <thead>
                    <tr>
                        <th scope="col">id</th>
                        <th scope="col">Name</th>
                        <th scope="col">Start Date</th>
                        <th scope="col">Interest</th>
                        <th scope="col">Date</th>
                        <th scope="col">Days</th>
                    </tr>
                </thead>
                <tbody>
                    <?php
                    $sql = "SELECT id, name, DATE_FORMAT(startDate, '%Y-%m-%d') AS startDate, interest, (SELECT COUNT(1) FROM clientdata c WHERE clientId = id) AS days
                    FROM `clients` WHERE now() BETWEEN startdate and enddate ORDER BY id";
                    $result = mysqli_query($con, $sql);
                    if ($result) {
                        while ($row = mysqli_fetch_assoc($result)) {
                            $id = $row['id'];
                            $name = $row['name'];
                            $startdate = $row['startDate'];
                            $interest = $row['interest'];
                            $days = $row['days'];
                            $todaydate = date("Y-m-d");
                            echo ' <tr>
                            <th scope="row">' . $id . '</th>
                            <td>' . $name . '</td>
                            <td>' . $startdate . '</td>
                            <td>' . $interest . '</td>
                            <td> <input type="date" id = "changeDate" value=' . $todaydate . '></input></td>
                            <td>' . $days . '</td>
                            <td> 
                                <button class="btn btn-primary" onchange="myFunction()"><a href="insertClientData.php?id='.$id.'&name='.$name.'&todaydate='. $todaydate .'" class="text-light"> Update </a></button>
                            </td>
                        </tr>';
                        }
                    }
                    ?>
                </tbody>
            </table>
        </div>
        <div class="container my-5">
            <table> <tr>
                    <button class="btn btn-primary my-3"><a href="main.php" class="text-light"> Home Page </a></button>
                </tr>
                </table>
                </div>
    </body>
  </html>

需要在日期字段中显示今天的日期,当点击更新 URL 时需要找到新选择的日期。更新按钮应与所选日期一起传递

<button class="btn btn-primary" onchange="myFunction()"><a href="insertClientData.php?id=.$id.&name=.$name.&todaydate=. $todaydate" class="text-light"> Update </a></button>

【问题讨论】:

  • 问题:“insertClientData.php”是做什么的? (插入?/更新?)——我想是更新操作,如果是这样,哪个数据字段将被更新?
  • 虽然它说更新,但我正在插入数据。我只是选择 id、name 和 date 字段并插入到另一个表中。 @肯李
  • 我假设您将在 [ClientData] 表中插入一条记录,设置 id=$Id, name=$name 和 todaydate=[picked_date] ? (如果我的假设有误,请纠正我)——我(或其他志愿者)需要这些细节来给你一个准确的答案。
  • 正是@KenLee。这就是我想做的。如果未选择,则应选择当前日期。

标签: php html mysql


【解决方案1】:

当您提交表单时,您需要使用“GET”方法将每一行包含在表单元素中,参数将被编码到页面,并且可以通过 url 参数访问变量。

我不确定您为什么尝试在底部加入 href 链接。如果你想在 URL 中传递其他信息,你可以使用隐藏的输入字段来自动填充你的循环。

<?php
include 'connect.php';
?>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Update Clients</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/css/bootstrap.min.css">
<script src="/scripts/snippet-javascript-console.min.js?v=1"></script>
</head>

<body>
<div class="container my-5">
  <table class="table">
    <thead>
      <tr>
        <th scope="col">id</th>
        <th scope="col">Name</th>
        <th scope="col">Start Date</th>
        <th scope="col">Interest</th>
        <th scope="col">Date</th>
        <th scope="col">Days</th>
      </tr>
    </thead>
    <tbody>
      <?php
      $sql = "SELECT id, name, DATE_FORMAT(startDate, '%Y-%m-%d') AS startDate, interest, (SELECT COUNT(1) FROM clientdata c WHERE clientId = id) AS days
                    FROM `clients` WHERE now() BETWEEN startdate and enddate ORDER BY id";
      $result = mysqli_query( $con, $sql );
      if ( $result ) {
          while ( $row = mysqli_fetch_assoc( $result ) ) {
              $id = $row[ 'id' ];
              $name = $row[ 'name' ];
              $startdate = $row[ 'startDate' ];
              $interest = $row[ 'interest' ];
              $days = $row[ 'days' ];
              $todaydate = date( "Y-m-d" );
              echo ' 
                    <form action="" enctype="multipart/form-data" method="get">
                    <tr>
                            <th scope="row">' . $id . '</th>
                            <td>' . $name . '</td>
                            <td>' . $startdate . '</td>
                            <td>' . $interest . '</td>
                            <td> <input type="date" id = "changeDate" value=' . $todaydate . '></input></td>
                            <td>' . $days . '</td>
                            <td> 
                                <button type="submit" class="btn btn-primary"></button>
                            </td>
                     </tr>
                     </form>
                     ';
          }
      }
      ?>
        <br>

    </tbody>
  </table>
</div>
<div class="container my-5">
<table>
<tr>
  <button class="btn btn-primary my-3">
  <a href="main.php" class="text-light"> Home Page </a>
  </button>

【讨论】:

    【解决方案2】:

    由于您只想通过 GET 调用 PHP(insertClientData.php),因此我删除了 PHP 代码并以纯 HTML 和 JS 的形式为您提供示例。 (理解代码后可以通过添加PHP语句进行修改)

    诀窍是使用 jquery closestfind 通过 classes 定位行的数据(在本例中为 xid、xname 和 changeDate),然后通过 window.location.href 调用 PHP

    所以代码是

    <script
      src="https://code.jquery.com/jquery-1.12.4.js"
      integrity="sha256-Qw82+bXyGq6MydymqBxNPYTaUXXq7c8v3CwiYwLLNXU="
      crossorigin="anonymous"></script>
    
    <table border=1> 
    <tr>
    <th class=xid scope="row">123</th>
    <td class=xname>Mary Roberson</td>
    <td><input type="date" class = "changeDate" value='2022-11-22'></input></td>
    <td>
    <button class="btn btn-primary">Update</button>
    </td>
    
    <tr>
    <th class=xid scope="row">333</th>
    <td class=xname>Peter Pen</td>
    <td><input type="date" class = "changeDate" value='2022-11-22'></input></td>
    <td>
    <button class="btn btn-primary">Update</button>
    </td>
    
    </table>
    
    
    <script>
    $('.btn-primary').click(function(){
    
      var xdate=($(this).closest('tr').find('.changeDate').val());
      var xid=($(this).closest('tr').find('.xid').text());
      var xname=($(this).closest('tr').find('.xname').text());
    
      window.location.href="insertClientData.php?id="+ xid+ "&name="+ xname+ "&todaydate="+ xdate;
    });
    </script>
    

    请尝试一下,你会发现它应该可以正常工作,然后你可以通过在适当的地方添加PHP语句来修改它

    【讨论】:

      猜你喜欢
      • 2012-04-03
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      相关资源
      最近更新 更多