php
  • mysql
  • 2016-08-08 2 views 0 likes 
    0

    私のコードでは、mysqlの行が表示され、最後に日付を入力してから挿入しますそれをデータベースに格納します。チェックボックスの行ごとに入力を個別に更新するようにする方法を理解できません。その行のチェックボックスをPHPでクリックした場合の入力値の取得方法

    $i = 0; 
    while($row = $result->fetch_assoc()) { 
        echo "<div class='row'> 
        <div class='col-md-10 col-offset-1'> 
        <tr> 
        <td> 
        <input type='checkbox' name='chk1[$i]' value='".$row['customerid']."' /> " .$row['firstname']." ".$row['lastname']. 
        "</td> 
        <td>" . 
        $row['phonenumber']. 
        "</td> 
        <td>" .$row['brand']. 
        "</td> 
        <td>" .$row['stock']. 
        "</td> 
        <td>" .$row['shoename']. 
        "</td> 
        <td>" .$row['size'].$row['width']. "</td>"; 
        echo "<td><input name='backorder' type='date'/></td> 
        <td id='comments'>" .$row['comment']. "</td> 
        </div> 
        </div>"; 
    $cid[$i] = $row['customerid']; 
    $i++; 
    } 
    

    したがって、私はこれを下に更新するとすべてがうまく更新されますが、データベースのすべての行にはバックオーダーの値が同じになります。

    if(isset($_POST['chk1'])) { 
        foreach($_POST['chk1'] as $cid[$i]) { 
         $chk1[] = array($cid[$i]); 
         if(!empty($chk1)) { 
    
          //include("email.php"); 
          $sql = "SELECT * FROM shoes WHERE customerid =" .$cid[$i]; 
          $result = $conn->query($sql); 
    
          if ($result->num_rows > 0) { 
           // output data of each row 
           while($row = $result->fetch_assoc()) { 
            $texting = $row['texting']; 
            $name = $row['firstname']; 
            $email = $row['email']; 
            $provider = $row['provider']; 
            $brand = $row['brand']; 
            //$sql must be in this loop in order to execute all checkboxes. 
    
            $sql = "UPDATE shoes SET ordered=CURDATE(), backorder='backorder' WHERE customerid=".$cid[$i]; 
    
    +0

    入力がチェックされているかどうかを確認し、チェックボックスのIDとajaxの値を比較し、チェックされた値を100%でないものに変更するだけでよいので、回答に入れなかったと思うかもしれません。 – brad

    +0

    行ごとにフォームがあるので、すべての行に独自の送信ボタンがあります。または、javascriptとajaxを使用してその行から値を抽出し、残りのフォームではなく、その値のみをサーバーに送信します。 –

    答えて

    0

    SQLは、そのフィールドの更新に静的な文字列値を送信します。

    $sql = "UPDATE shoes SET ordered=CURDATE(), backorder='backorder' WHERE customerid=".$cid[$i];値に変数を使用するために更新する必要があります。「backorder」という文字列は、更新された値の値になります。

    +0

    私はそれをバックオーダー[backorder []とバックオーダー[$ i]に入れました。これを可能にする別の方法があると思いますか?私は書式提出の前にforeachをやろうとしていましたが、プロセスは空の変数から引き抜こうとしているようです。 –

    関連する問題