具有相同输入名称的表单。 POST无效

时间:2017-10-05 12:18:10

标签: php html

我在表格中输入了表格。一行显示汽车的详细信息,在其下面有另一行,其中有5个输入用于更新详细信息。

当我填写第一辆车的输入并进行POST时,它没有取字段中的值。 但是,当我填写第二辆车的输入时,它确实采用了这些值。

只有第二辆车的输入采用POST方式发送。

这可能是HTML语法错误,但我找不到它。

这就是我检查POST的方式:

if (isset($_POST["Name_OF_Input"]) && count($_POST) > 0){code for updating the car details in DB};

HTML code:

    <form action='main.php' method='POST'>

    <table class='table table-striped'>
        <tr>
            <th style='width:252px'>Car ID</th>
            <th style='width:185px'>Car Color</th>
            <th style='width:260px'>Car Manufactuer</th>
            <th style='width:252px'>Model</th>
            <th style='width:253px'>Year</th>
            <th style='width:147px'>Options</th>
        </tr>
        <tr>
            <td>65-842-99</td>
            <td>#ff0000</td>
            <td>Dacia</td>
            <td>Albero</td>
            <td>2015</td>
            <td><button class='btn btn-primary glyphicon glyphicon-pencil' value='65-842-99' onclick='show(this);return false;'></button></td>
        </tr>
        <tr value='65-842-99' id='65-842-99'>
            <td><input type='text' name='id' placeholder='Car ID'></td>
            <td><label>Car Color:</label><input type='color' name='color'></td>
            <td><select name='manufacturer'>
        <option value=''>Pick car manufacturer</option>
        <option value='Fiat'>Fiat</option>
        <option value='Mercedes'>Mercedes</option>
        <option value='Audi'>Audi</option>
        <option value='Volkswagen'>Volkswagen</option>
        <option value='Mazda'>Mazda</option>
        <option value='Honda'>Honda</option>
        <option value='Dacia'>Dacia</option>
        <option value='Lincoln'>Lincoln</option>
        <option value='Volvo'>Volvo</option>
        </select></td>
            <td><input type='text' name='model' placeholder='Car Model'></td>
            <td><input type='text' name='year' placeholder='Car Year'></td>

            <td><button type='submit' class='btn btn-info glyphicon glyphicon-floppy-disk' name='carID' value='65-842-99'></button></td>
        </tr>
        <tr>
            <td>66-815-55</td>
            <td>#0080ff</td>
            <td>Volkswagen</td>
            <td>Golf</td>
            <td>2000</td>
            <td><button class='btn btn-primary glyphicon glyphicon-pencil' value='66-815-55' onclick='show(this);return false;'></button></td>
        </tr>
        <tr value='66-815-55' id='66-815-55'>
            <td><input type='text' name='id' placeholder='Car ID'></td>
            <td><label>Car Color:</label><input type='color' name='color'></td>
            <td><select name='manufacturer'>
        <option value=''>Pick car manufacturer</option>
        <option value='Fiat'>Fiat</option>
        <option value='Mercedes'>Mercedes</option>
        <option value='Audi'>Audi</option>
        <option value='Volkswagen'>Volkswagen</option>
        <option value='Mazda'>Mazda</option>
        <option value='Honda'>Honda</option>
        <option value='Dacia'>Dacia</option>
        <option value='Lincoln'>Lincoln</option>
        <option value='Volvo'>Volvo</option>
        </select></td>
            <td><input type='text' name='model' placeholder='Car Model'></td>
            <td><input type='text' name='year' placeholder='Car Year'></td>

            <td><button type='submit' class='btn btn-info glyphicon glyphicon-floppy-disk' name='carID' value='66-815-55'></button></td>
        </tr>
    </table>
</form>

2 个答案:

答案 0 :(得分:3)

您不能使用多个字段的相同名称。

您可以使用数组

<td><input type='text' name='model[]' placeholder='Car Model'></td>
<td><input type='text' name='year[]' placeholder='Car Year'></td>

在PHP方面,您可以获取值:

$_POST['model'] // this will be an array
$_POST['year'] // this will be an array

答案 1 :(得分:0)

当您有多个具有相同名称的输入时,浏览器会将它们全部发送到服务器(按顺序)。

但是,PHP会丢弃除最后一个之外的所有内容,除非名称以[]结尾,在这种情况下,它会将一组值插入$_POST

更改名称以包含[]以及循环数组的逻辑。

<input type='text' name='model[]' placeholder='Car Model'>