0

以下は、複数の行で1つの列の値を変更しようとしているコードですが、少し行き詰まっています。

ファイル 1 :

<form name="update-location" method="post" action="recibos_location_update.php">

<div align="right"><button type="submit">Actualizar Estado</button></div>
<hr />

<ul>
    <?php
        $get_logs = mysql_query("SELECT * FROM recibos ORDER BY id DESC");
        while ($logs = mysql_fetch_array($get_logs)){

        $serial = $logs['serial'];
        $check = $logs['location'];
        $problem = $logs['problem'];
    ?>

    <li class="<?php 
        if ($check == $location1){echo 'recibos-container-shop-li';}
        if ($check == $location2){echo 'recibos-container-haji-li';}
        if ($check == $location3){echo 'recibos-container-return-li';} ?>">

        <?php echo $serial . " | " . $logs['model'] . " | " . $problem; ?>

        <div align="right">
            <?php
                if ($check != 'Returned'){
            ?>
                <input type="hidden"  name="serial[]" value="<?php echo $serial; ?>" />
                <select name="location">
                    <option <?php if ($check == $location1){echo 'selected';} ?> value="<?php echo $location1; ?>" style="background: #fff8bf;">Mobils Calfont</option>
                    <option <?php if ($check == $location2){echo 'selected';} ?> value="<?php echo $location2; ?>" style="background: #ffc1bf;">Haji Jorda</option>
                    <option <?php if ($check == $location3){echo 'selected';} ?> value="<?php echo $location3; ?>"style="background: #ecffbf;">Devuelto</option>
                </select>
            <?php
            }
            else {
                echo "<i><font color='#5e8029'>Devuelto</font></i>";
            }
            ?>
        </div>
    </li>
    <?php } ?>
</ul>

ファイル 2

<?php
include "connect.php";
include "links.php";


foreach($_POST["serial"] as $serial){

    $location = $_POST['location'];
    echo $location . " " . $serial . "<br>";
}
mysql_query("UPDATE recibos SET location='$location' WHERE serial='$serial'");

//header("Location: " . $_SERVER['HTTP_REFERER']);

?>

そして、私が得ている出力は次のとおりです。

Haji 900005
Haji 900004
Haji 900002

ただし、3 つの出力行すべてについて、3 つの選択ボックスの名前が異なるため、異なる名前を付ける必要があります。

私が必要とするのは、プロセスフォームが選択ボックスオプションに含まれる値ですべての行を更新することです。

4

2 に答える 2

0

html

<select name="location[]">

php

foreach($_POST["serial"] as $k=> $serial){

    $location = $_POST['location'][$k];
    mysql_query("UPDATE recibos SET location='$location' WHERE serial='$serial'");
}
于 2013-04-11T07:15:25.923 に答える
0
foreach($_POST["serial"] as $serial){

    $location = $_POST['location'];
    echo $location . " " . $serial . "<br>";
    mysql_query("UPDATE recibos SET location='$location' WHERE serial='$serial'");//update
}
//    mysql_query("UPDATE recibos SET location='$location' WHERE serial='$serial'");
于 2013-04-11T06:36:01.513 に答える