php
  • mysql
  • 2014-09-03 119 views 0 likes 
    0

    我目前正在一個點/獎勵系統,我面臨的問題是我查詢數據庫是這樣的;PHP - 嘗試更新多個MySQL值基於如果複選框被選中

    $result = mysqli_query($con,"SELECT * FROM users WHERE usertype='group_two' ORDER BY 
    points DESC"); 
    while($row = mysqli_fetch_array($result)) { 
    echo "<li class='select-area'><label><span>" . $row['firstname'] . "</span>"; 
    echo "<span>" . $row['lastname'] . "</span>"; 
    echo "<span>" . $row['points'] . "</span><span><input type='checkbox' 
    name='receipient_id' 
    value=" . $row['id'] ." /></span></label></li>"; 
    } 
    

    此列出了能夠接收點的用戶,工作正常,但如果我選擇多個用戶只發送指向最後一個檢查用戶,在這裏我想它送分給所有檢查用戶。

    我的更新查詢如下;

    $update_query="UPDATE users u1 JOIN users u2 
    ON u1.id = '$sender_id' AND u2.id= receipient_id 
    SET u1.points = '$sender_updated_points', 
    u2.points = '$receiver_updated_points';"; 
    

    是否有任何特定的技巧,我錯過了使用複選框選擇多行進行更新?我一直在搜索大約16個小時。

    回答

    0

    你可以給複選框的name財產像

    <input type='checkbox' name='receipient_id[]' value=" . $row['id'] ." /> 
                 ^
    

    這樣,當與選擇的複選框的形式發送到PHP腳本中,變量數組:$_POST['receipient_id']將包含的數字數組與所選複選框的值相對應,索引爲0,1,2等。

    $_POST['receipient_id'][0]將是第一個選中的複選框的值,$_POST['receipient_id'][1]將是第二個選中的複選框的值,依此類推。

    +0

    不幸的是,當試圖這樣我得到這不會讓我發送錯誤指向該ID。 – Eddie 2014-09-03 05:51:22

    +0

    你有什麼錯誤? – Jenz 2014-09-03 05:52:04

    +0

    它觸發了這個;如果(isset($ _GET ['receivingient_id'])==('invalid')) { echo「您選擇了一個無效的ID」; } – Eddie 2014-09-03 05:57:00

    0

    你可以試試嗎?

    如果你想發送的多值應在數組名=「receipient_id」來命名=「receipient_id []」上查詢

    $update_query="UPDATE users u1 JOIN users u2 
        ON u2.id= u1.receipient_id 
        SET u1.points = '$sender_updated_points',u2.points = '$receiver_updated_points' 
        where u1.id = '$sender_id';"; 
    
    0

    建議我這是怎麼用於相同作爲條件你我卻用它來刪除從數據庫中讀取

    首先在你的多個數據while..loop - 有的名稱爲數組

    <input type="checkbox" id="updcbx" name="updcbx[]" value="'.$row['id'].'"/> 
    

    比你的PHP投稿,您可以用這樣的代碼

    if(isset($_POST['submit'])) 
    { 
        if (is_array($_POST['updcbx'])) 
        { 
         foreach($_POST['updcbx'] as $upd) 
         { 
          $update[$upd] = $upd; 
          $sql = "UPDATE TABLE SET FIELD = 'value' WHERE id = '$delete[$upd]'"; 
          mysql_query($sql); 
         } 
        } 
    } 
    

    希望這有助於你:)

    相關問題