从数据库获取的数据,但此表项的ID未显示

时间:2018-01-31 08:54:21

标签: php html forms

您好我已经更新了我的问题,很容易向您解释我的问题。好的,好的, 我想要的是什么,我怎么了? 我编写了一个产品表单,我需要getcatlist.php来帮助我从sql数据库中获取价值并在产品页面中显示,产品表单快照 product form image

产品表单代码

    <section class="main-section">
    <article class="prod-item">
        <h3>Product Form</h3>
        <form action="addproducts.php" method="get" name="product_form">    
            <section class="select-box">
                <label for="category">Category</label>
                <?php   require_once("getcatlist.php"); ?>  
                <input type="hidden" name="cat_id" value="<?php echo $_GET['cat_id']; ?>" >
            </section>

        </form> 
    </article>
</section>

我在产品表单页面中的javascript用于创建查询字符串代码

<script type="text/javascript">
    function showCategory(str)
    {   
        document.product_form.action="addproducts.php?cat_id="+str;             
    }       
</script>

** getcallist.php页面代码从数据库中获取数据并在select标签中显示**

<?php 

error_reporting(E_ALL ^ E_NOTICE);   

require_once("../data_connect.php");
$error_msg = "";
$cat_id = "";
$catsql = "SELECT Cat_id,CategoryName FROM category order by Cat_id asc; ";
$cat_query = mysqli_query($connect,$catsql);
$numrows = mysqli_num_rows($cat_query);
$cat_id = $_GET['cat_id'];
    if($numrows == 0)
    {
        $error_msg= "No Categories Found";
    }
    else{
                echo "<select name=\"category\" id=\"category\" onchange=\"showCategory(this.value)\" >"; 
                echo "<option value=\"null\">Select your category</option>";
        while($catrow = mysqli_fetch_assoc($cat_query))
            {
                if ($catrow['Cat_id'] == $cat_id){
                    echo "<option value=\"".$catrow['Cat_id']."\" selected=\"selected\">".$catrow['CategoryName']."</option>";
                }
                else{
                                echo "<option value=\"".$catrow['Cat_id']."\">".$catrow['CategoryName']."</option>";
                }
            } 
                echo "</select>";
    }
 ?>

这是我的ajax代码,当我点击下拉列表时移动到另一个页面

    <script type="text/javascript">
        /**/$(document).ready(function(){
            $("#category").change(function(){
                var code = $(this).val();

                if(code == 1)
                {
                    $('.main-section').load('addconsoles.php');

                }
                else if(code == 2)
                {
                    $('.main-section').load('addaccessories.php');
                }
                else if(code == 3)
                {
                    $('.main-section').load('addgames.php');
                }
            });
        });

</script>

好吧我想创建一个类别列表的查询字符串,当我点击下拉列表中的任何类别选项时,它不会在url中显示任何内容。这是我面临的一个大问题,当我尝试在php oop类中设置并获取值时(在产品表单页面中需要),它将不会设置并在回显时获取。 请帮我解决这个问题,谢谢

1 个答案:

答案 0 :(得分:1)

我认为您对HTML表单的工作方式有些误解。

您所获得的代码将无法按预期工作,因为您已在表单中定义两次 {<}> < - >> - 一旦在您创建的隐藏字段中,再次当您通过JavaScript更改窗体的操作方法时。但是,当您的JavaScript运行时,它会修改&#34;操作&#34;字符串,但隐藏字段不会更改,并且当您提交表单时,浏览器将从隐藏字段中提交值,并忽略您手动添加到&#34;操作&#34;方法。这只是这种情况下的默认行为,以解决您创建的歧义。

因此,如果在首次加载页面时,cat_id中没有值(看起来很可能,请查看您的代码),那么cat_id的值不会发送到服务器表格提交时。

但是,我上面描述的所有代码实际上都是不必要的。您可以直接使用下拉列表的值作为cat_id。只需更改&#34;名称&#34; <select>的参数,如下所示:

echo '<select name="cat_id" id="category">'; 

将使cat_id参数更改为提交表单时下拉列表的选定值中的任何值。

您不需要&#34; showCategory&#34;功能,或隐藏的领域。

所以表格可以是

<form action="addproducts.php" method="get" name="product_form">    
  <section class="select-box">
    <label for="category">Category</label>
    <?php   require_once("getcatlist.php"); ?>  
  </section>
</form>

没有隐藏字段,&#34; showCategory&#34; JavaScript函数可以完全删除。

N.B。从这段代码看来你似乎无法提交这个&#34; addproducts&#34;形成服务器。目前尚不清楚您是否在其他地方有其他一些控制此问题并基于其他事件触发的JavaScript,和/或您是否需要添加&#34;提交&#34;按钮到表单。无论哪种方式,在您提交表单之前都不会向服务器发送任何内容,或者为用户提供导致表单的方式。

我希望这很有用,如果您仍然发现任何不清楚的地方,请发表评论。