调试下拉菜单并在同一页面上显示用户表单输入

时间:2014-10-03 14:27:50

标签: php html forms input

大家早上好:

如果有些人能够就我正在开发的基于网络的文件规划系统给出一些指示,我将不胜感激。我在一家处理记录管理的政府机构内部工作。我们与代理机构内的其他各个部门合作,帮助他们制定文件计划,使其符合有关记录保留的联邦法律和法规。我们目前正在使用Access数据库,每个部门都会下载以输入各种文件夹的名称,然后分配某些其他特征。我的部门想要从Access平台转移到适当的基于Web的应用程序。我有广泛的背景,在MySQL,SQL Server等中构建SQL db用于分析目的。并且,我在过去几年中偶尔使用PHP,所以我不是一个noobie,但我也不是专家,所以我可以使用一些帮助来解决一些代码。

以下是该系统需要如何工作的概述。用户将在文本框中输入文件夹名称,然后通过从一系列下拉框中进行选择,为文件夹指定其他特征。他们是:

媒体类型:纸张,DVD / CD,软盘,其他 分类类型:未分类,机密,秘密,绝密 处置:与子系列相同

最后三个很容易。我成功编写了while和mysql_fetch_arrays以从db中的表中检索它们并显示为下拉选项。

现在这是第一个棘手的部分。用户必须分配组,文件系列和子文件系列,其中组是最高级别,文件系列是下一级别,子文件系列是最精细的。这看起来像Group 100 Admin Files --->文件系列101人事档案--->子文件系列101-01 Supervisor Review文件。在子文件系列表中有715个选项。当前的Access数据库要求用户单击所有715个排列以查找相关的子文件系列,这是Access数据库的最大抱怨。因此,为了帮助新系统中的用户,我想使用一系列相关的下拉菜单,以便用户可以从最高级别开始进行选择,然后只选择该组的文件系列来填充中级。然后使用仅与先前文件系列选择相关联的子文件系列填充底层。我也能够让它发挥作用。

但这是我的两个问题。我需要能够在同一页面上显示用户的选择,就像购物车一样,用户可以在其中编辑或删除文件夹名称和基础选择。我在我的index.php脚本中有一个include语句,它打算这样做,但它不起作用。当用户点击提交时,它会在新页面中显示用户输入,我真的需要将其显示在与表单相同的页面上...最好是在表单的右侧。我的第二个问题是当用户点击提交并且浏览器转到新页面以显示用户输入时,它会正确显示除子文件系列之外的所有用户输入/选择。它不显示子文件系列,而只显示中级选项的副本:文件系列。这是它应该是什么样子

文件名:Folder1 媒体类型:DVD / CD 分类类型:绝密 处置类型:与子系列相同 组名称:100个管理文件 文件系列:101人事档案 子文件系列:101-01主管审查文件

这是有缺陷的输出

文件名:Folder1 媒体类型:DVD / CD 分类类型:绝密 处置类型:与子系列相同 集团名称:100 档案系列:101 子档案系列:101

这是我的代码。请原谅任何小的印刷错误。我必须手动转录此代码,因为它在不同的服务器上。如果有小错误,他们可能不会导致我需要解决的问题。感谢大家提供的任何指示。我知道我的代码看起来可能对本网站上所有老咸的开发人员都有点粗鲁和业余,所以对我很温柔。 :)

index.php

<html xmlns="http://www.w3.org/1999/xhtml">
<head profile="http://gmpg.org/xfn/11">

<head>
<title>File Entry</title>
<script type = "text/javascript" src="jquery-1.5.2.min.js"></script>
<style type ="text/css">
body {

        font-family:arial;
        color:#010DF;

}

form select{
            padding:5px;
            border:1px solid:#aaa;
            border-radius:4px;
            width:400px;
}

form label{
            font-size:12px;
            font-weight:bold;
}

</style>
<script type="text/javascript">
$(document).ready(function(){
        load_options('','Group');
});


function load_options(id,index){
        $("#loading").show();
        if(index=="FileSeries"){
                $("#SubFileSeries").html('<option value="">Select SubFileSeries</option>');
                }
                $.ajax({
                            url: "ajax.php?index=+index+"&id="+id,
                            complete: function(){$("#loading").hide():},
                            success: function(data) {
                                $("#"+index).html(data);
                        }

                })

}

</script>
</head>
<body>

<div style="width:2000px; margin: auto; padding-top:100px;">

<form action="SendUserSelectionsToArray.php" method="post">

<p>Folder Name: <input type = "text" name = "Foldername1"/></p>

<p><label>Select Media type</label>

<?php

mysql_connect('localhost','fakename1','fakepassword1') or die("Connection Failed");
mysql_select_db('csc') or die("Connection Failed");

$query = "SELECT media_type FROM Media";
$result = mysql_query($query);
?>

<select name="selectMediaType1">
<?php

while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
?>



<option value = "<?php echo $line['media_type'];?>"> <?php echo $line['media_type'];?></option>

<?php
}
?>

</select>
</p>

<p><label>Select Media type</label>

<?php

mysql_connect('localhost','fakename1','fakepassword1') or die("Connection Failed");
mysql_select_db('csc') or die("Connection Failed");

$query = "SELECT classification_type FROM Classification";
$result = mysql_query($query);
?>

<select name="classificationType1">
<?php

while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
?>



<option value = "<?php echo $line['classification_type'];?>"> <?php echo $line['classification_type'];?></option>

<?php
}
?>

</select>
</p>

<p><label>Select Media type</label>

<?php

mysql_connect('localhost','fakename1','fakepassword1') or die("Connection Failed");
mysql_select_db('csc') or die("Connection Failed");

$query = "SELECT dispostion_type FROM disposition";
$result = mysql_query($query);
?>

<select name="dispositionType1">
<?php

while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
?>



<option value = "<?php echo $line['disposition_type'];?>"> <?php echo $line['disposition_type'];?></option>

<?php
}
?>

</select>
</p>

<p><label>Select Group</label></p>
<p><select name="Group1" id="Group" onchange="load_options(this.value, 'FileSeries');"><option value="">Select Group</option>
</select></p>
&nbsp;&nbsp;&nbsp;

<p><label>Select File Series</label></p>
<p><select name="FileSeries1" id="FileSeries" onchange="load_options(this.value, 'SubFileSeries');"><option value="">Select File Series</option>
</select></p>
&nbsp;&nbsp;&nbsp;

<p><label>Select Sub File Series</label></p>
<p><select name="SubFileSeries1" id="SubFileSeries"><option value="">Select Group</option>
</select></p>

<img src="loader.gif" id="loading" align="absmiddle" style="display:none'"/>

<p>input type = "submit" id="sendtoarray" value="Submit and Enter Another Folder/></p>

</form>
</div>
</body>
</html>

<?php

include('SendUserSelectionsToArray.php');

?>

ajax.php

<?php

    class AJAX {

                private $database = NULL;
                private $_query = NULL;
                private $_fields = array();
                private $_index = NULL;
                const DB_HOST = 'localhost';
                const DB_USER = 'fakeuser1';
                const DB_PASSWORD = 'fakepassword1';
                const DB_NAME = 'csc';

                public function __construct() {
                        $this -> db_connect();
                //initiate database connection
                            $this->process_data();
                    }

                //Connect to database

                private function db_connect(){
                    $this->database = mysql_connect(self::DB_HOST, self::DB_USER, self::DB_PASSWORD);
                                if($this->database) {
                                        $db = mysql_select_db(self::DB_NAME, $this-> database);
                                        } else {
                                                echo mysql_error();die;
                                            }
                                    }

                                private function process_data(){
                                    $this->_index=($_REQUEST['index'])?$_REQUEST['index']:NULL;
                                    $id = f($_REQUEST['id'])?$_REQUEST['id']:NULL;
                                    switch($this->_index) {

                                    case 'Group':
                                            $this->_query = "SELECT * FROM groups";
                                            $this->_fields = array('id,'group_display_title');

                                            break;

                                    case 'FileSeries':
                                            $this->_query = "SELECT * FROM file_series WHERE group_id=$id";
                                            $this->_fields = array('file_series_id','file_series_name');

                                            break;

                                    case 'SubFileSeries':
                                            $this->_query = "SELECT * FROM sub_file_series WHERE file_series_id=$id";
                                            $this->_fields = "array('file_series_id','sub_file_series_name');

                                            break;

                                    default:  break;

                                    }
                                    $this->show_result();

                                    }

                                    public function show_result() {

                                        echo '<option value="">Select'.$this->_index.'</option>";

                                        $query = mysql_query($this->_query);
                                        while($result = mysql_fetch_array($query)){
                                                $entity_id = $result[$this->fields[0]];
                                                $enity_name = $result[$this->_fields[1]];
                                                echo "<option value='$entity_id'>$enity_name</option>";

                                                }

                                            }

                                        }

                                        $obj = new AJAX;

?>

senduserselectionstoarray.php

<html>
<h1>User Inputs</h1>

<?php

    $userselection = array(
        'Foldername1' => $_POST['Foldername1'],
        'selectMediaType1' => $_POST['selectMediaType1'],
        'selectClassificationType1' => $_POST['Foldername1'],
        'selectDispositionType1' => $_POST['selectClassificationType1'],
        'Group1' => $_POST['Group1'],
        'FileSeries1' => $_POST['FileSeries1'],
        'SubFileSeries1' => $_POST['SubFileSeries1'],   

    foreach($userselection1 as $userSelectionArrayDisplay1)  {

        echo "$userSelectionArrayDisplay1<br />";

        }

?>

</html>     

1 个答案:

答案 0 :(得分:0)

如果您不希望数据显示在新页面上,您可以使用输入框作为按钮并调用javascript函数在div中显示数据,该div可以在右侧下拉列表。

<input type="button" value="Submit" onclick="yourFunction()">

当您使用类型为#34的输入框时,请提交&#34;它默认为渲染新页面。 要让您的javascript函数向右显示数据,它将如下所示:

function yourFunction() { 
  //#tableWrapper is the id of the div that you insert the table with the data into
  var displayData = document.getElementById("tableWrapper");
  displayData.innerHTML = "<table><tr><td>...."; //Put the data here
}

至于下拉问题。您可以执行以下三个下拉菜单Group,FileSeries和SubFileSeries。您可以禁用最后两个,并且在选择组时,您可以使用正确的数据填充FileSeries下拉列表,依此类推。请阅读此问题以获得一个好例子:By selecting from dropdown, enable another dropdown

希望这有帮助。