Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 表格提交不起作用_Php_Javascript_Html - Fatal编程技术网

Php 表格提交不起作用

Php 表格提交不起作用,php,javascript,html,Php,Javascript,Html,我有一张桌子,可以打印出所有可用的摄像机。它使用表单来更改这些设置。问题是表单只更新条目中的最后一个摄影机。换言之,如果我更改表单并点击应用列表中的最后一个摄影机,它将工作。如果我更改此列表中任何其他摄影机的窗体,它将更改该摄影机,使其具有与列表中最后一个摄影机相同的设置。据我所知,任何价值观都没有问题 很抱歉,这里的垃圾堆很长,但由于无法缩小问题的范围,我认为应该包括大部分: // Dont allow direct linking defined('_JEXEC') or die('Dire

我有一张桌子,可以打印出所有可用的摄像机。它使用表单来更改这些设置。问题是表单只更新条目中的最后一个摄影机。换言之,如果我更改表单并点击应用列表中的最后一个摄影机,它将工作。如果我更改此列表中任何其他摄影机的窗体,它将更改该摄影机,使其具有与列表中最后一个摄影机相同的设置。据我所知,任何价值观都没有问题

很抱歉,这里的垃圾堆很长,但由于无法缩小问题的范围,我认为应该包括大部分:

// Dont allow direct linking
defined('_JEXEC') or die('Direct Access to this location is not allowed.');
//get current user
$user =& JFactory::getUser();
// get a reference to the database
$db = &JFactory::getDBO();

$query_camera_name = "SELECT camera_id, camera_name, camera_status, camera_quality, camera_hash, camera_type FROM #__cameras WHERE user_id=".$user->id." AND camera_status!='DELETED'";
$db->setQuery($query_camera_name);
//get number of cameras so we can build the table accordingly
$db->query();
$num_rows = $db->getNumRows();
// We can use array names with loadAssocList.
$result_cameras = $db->loadAssocList();


if (isset($_POST['apply_changes'])) {

    //process changes to camera options     
    $camera_id = $_POST['camera_id'];
    $camera_status = check_input($_POST['camera_status']);
    $camera_name = check_input($_POST['camera_name'], "You entered an empty camera name. Enter another name and apply changes.");
    $camera_quality = check_input($_POST['camera_quality']);

    $query_insert_camera = 'UPDATE `#__cameras` SET `camera_status` ="'.$camera_status.'", `camera_name` ="'.$camera_name.'", `camera_quality` ="'.$camera_quality.'" WHERE `camera_id`='.$camera_id;
    $db->setQuery($query_insert_camera);
    $db->query();
    header("location: " . $_SERVER['REQUEST_URI']);
}

echo "<html>";
echo "<head>";


<link href="dashboard/webcam_widget.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
function oncameraSubmit(camera_id)
{
    document.active_cameras.camera_id.value = camera_id;
    return confirm('Apply changes?');
}


</script>
<?php


echo "</head>";
echo "<body>";


if (!isset($result_cameras))
{
   //TODO 
}
else 
{

    if ($num_rows == 0)
    {           
        echo '<b><i><center>You currently have no cameras setup.  Add a Camera below.</center></i></b>';
    }
    else
    {
        ?>
        <form name="active_cameras" action="<?php htmlentities($_SERVER['REQUEST_URI']); ?>" method="POST">
        <input type="hidden" name="camera_id" value="" />
        <table id="webcam-table">
        <thead>
            <tr>
                <th>Camera Type</th>
                <th>Name</th>
                <th>Quality</th>
                <th>Status</th>
                <th>Camera Actions</th>
            </tr>
        </thead>
        <tbody>
<?php
        for($i=0;$i<$num_rows;$i++)
        {

            //camera_status
            if ($result_cameras[$i]["camera_status"] == "ENABLED")
            {
                $enabled_option =  "value='ENABLED' selected='selected'"; 
                $disabled_option = "value='DISABLED'";
            }
            else
            {
                $enabled_option =  "value='ENABLED'";
                $disabled_option = "value='DISABLED' selected='selected'";
            }

            //camera_quality
            if ($result_cameras[$i]["camera_quality"] == "HIGH")
            {
                $high_option =  "value='HIGH' selected='selected'"; 
                $medium_option = "value='MEDIUM'";
                $mobile_option =  "value='MOBILE'";
            }
            else if ($result_cameras[$i]["camera_quality"] == "MEDIUM")
            {
                $high_option =  "value='HIGH'";
                $medium_option = "value='MEDIUM' selected='selected'";
                $mobile_option =  "value='MOBILE'";
            }
            else if ($result_cameras[$i]["camera_quality"] == "MOBILE")
            {
                $high_option =  "value='HIGH'";
                $medium_option = "value='MEDIUM'";
                $mobile_option =  "value='MOBILE' selected='selected'";
            }
            else
            {
                //TODO proper logging
            }

            //camera_type
            if ($result_cameras[$i]["camera_type"] == "WEBCAM")
            {
                $webcam =  "value='WEBCAM' selected='selected'"; 
                $axis = "value='AXIS'";
                $other =  "value='IPCAM'";
            }
            else if ($result_cameras[$i]["camera_type"] == "AXIS")
            {
                $webcam =  "value='WEBCAM'";
                $axis = "value='AXIS' selected='selected'";
                $other =  "value='IPCAM'";
            }
            else if ($result_cameras[$i]["camera_type"] == "IPCAM")
            {
                $webcam =  "value='WEBCAM'";
                $axis = "value='AXIS'";
                $other =  "value='IPCAM' selected='selected'";
            }
            else
            {
                //TODO 
            }

?>

            <tr>
                <td>
                    <select name="camera_type">
                    <option <?php echo $webcam; ?>>Webcam</option>
                    <option <?php echo $axis; ?>>AXIS</option>
                    <option <?php echo $other; ?>>Other</option>
                    </select>
                </td>
                <td>
                <input type="text" size="32" maxlength="64" name="camera_name" value="<?php echo $result_cameras[$i]["camera_name"]; ?>" />
                </td>
                <td>
                    <select name="camera_quality">
                    <option <?php echo $high_option; ?>>High</option>
                    <option <?php echo $medium_option; ?>>Medium</option>
                    <option <?php echo $mobile_option; ?>>Mobile</option>
                    </select>
                </td>
                <td>
                    <select name="camera_status">
                    <option <?php echo $enabled_option; ?>>Enabled</option>
                    <option <?php echo $disabled_option; ?>>Disabled</option>
                    </select>
                </td>
                <td>
                    <input type="submit" name="apply_changes" value="Apply" onClick="javascript:return oncameraSubmit(<?php echo $result_cameras[$i]["camera_id"]; ?>);"/>
                </td>
            </tr>

            <?php
        }
        echo "</tbody>";
        echo "</table>";
        echo "</form>";
    }
}

表单元素名称冲突。当您定义表单元素(例如“camera_status”)两次时,您将只收到帖子中的最后一个值


使用表单数组表示法,例如:camera_status[]或更好的camera_status[$id]。然后您的PHP代码将接收数组作为POST数据,您将能够一次更新所有内容。

看起来您有多个同名HTML元素。因此,您希望在发布表单时返回一个值数组

这样看来,它可能会有所帮助


或者,扩展oncameraSubmit,使其将所有数据存储在一个隐藏的输入字段中,而不仅仅是id。然后在更新数据库时,使用这些隐藏字段。

最简单的方法是发出x更新查询,其中x是数组元素的数量。或者,看看我的最后一段——如果你这样做,你只能发布一个更新。