Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.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 dropdownlist返回数据_Php_Jquery_Html_Drop Down Menu - Fatal编程技术网

提交后从php dropdownlist返回数据

提交后从php dropdownlist返回数据,php,jquery,html,drop-down-menu,Php,Jquery,Html,Drop Down Menu,嘿,伙计们,我在这件事上花的时间比我原来想的要多 我这里有一段代码,其中有一个下拉列表,通过选择3个单选按钮,从sql数据库中获取数据,一切正常 当我想提交我的表格并获取所述droplist中的数据信息时,我的问题就来了。我只想把选中的单选电台和选中的项目放在submission.php中变量的单个下拉列表中,该列表位于表单的post方法之后 不管怎样,这就是我现在想要做的 <?php require "../Scripts/config.php"; // database connec

嘿,伙计们,我在这件事上花的时间比我原来想的要多

我这里有一段代码,其中有一个下拉列表,通过选择3个单选按钮,从sql数据库中获取数据,一切正常

当我想提交我的表格并获取所述droplist中的数据信息时,我的问题就来了。我只想把选中的单选电台和选中的项目放在submission.php中变量的单个下拉列表中,该列表位于表单的post方法之后

不管怎样,这就是我现在想要做的

<?php

require "../Scripts/config.php"; // database connection here
?>

<!doctype html public "-//w3c//dtd html 3.2//en">

<html>

<head>
<title>test</title>

<SCRIPT language=JavaScript>
function reload()
{

for(var i=0; i < document.form1.type.length; i++){
if(document.form1.type[i].checked)
var val=document.form1.type[i].value 
}

self.location='bob.php?type=' + val ;

}
</script>
</head>

<body>
<?Php


$tp=$_GET['type']; // getting the value from query string
if(strlen($tp) > 1){$sql="SELECT * FROM Subcategory where cat_id='$tp'";}
echo $sql;


echo "<form name=form1 id=form1 method=post action=submissions2.php>"; 
echo "<select name=Subcategory id=Subcategory value=''>Subcategory</option>"; // printing the list box select command
foreach ($dbo->query($sql) as $row){//Array or records stored in $row
echo "<option value=$row[cat_id]>$row[Subcategory]</option>"; 
/* Option values are added by looping through the array */ 
} echo "</select>";// Closing of list box

echo "<br>";
echo "<br>";
echo "<br>";

echo "
<b>Type</b>
<input type=radio name=type value='1_Cosplay' onclick=\"reload()\";>Cosplay
<input type=radio name=type value='1_Modeling' onclick=\"reload()\";>Modeling
<input type=radio name=type value='1_Zombie' onclick=\"reload()\";>Zombie
<input type=submit value=Submit> </form>";



echo "<br>";
echo "<br>";
echo "<br>";
?>


</body>

</html>
这是submissions2.php

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<script src="../Scripts/jquery-1.8.0.min.js"></script>
</head>
<body>

<?php
function filter($data) {
/*$data = trim(htmlentities(strip_tags($data)));
if (get_magic_quotes_gpc())
$data = stripslashes($data);
$data = mysql_real_escape_string($data);*/
return $data;
return $row;
}
foreach($_POST as $key => $value) {
$mydata[$key] = filter($value);
}

echo $mydata['Subcategory'];
echo "<br>";
?>

</body>
</html>

我似乎只能得到单选按钮选项。

引用所有HTML属性,如name='Subcategory',和


当然,像那样使用换行符也是一种不好的做法。使用CSS。

这里有一个一体化的解决方案。您需要更改一些引用,例如文件路径的名称/本地路径,但无论如何,它包含所有代码。我无法测试DB内容,但是如果jQuery部分中有正确的url路径,ajax就可以工作。注意,此解决方案引用自身,而不是新页面:
        // Display errors for troubleshooting
        ini_set('display_errors','1');
        error_reporting(E_ALL);

        class CategorySelector
            {
                public  function LoadSubCat()
                    {
                        // You will be subjected to an injection hack if you don't filter or encode this variable
                        // You should do PDO with prepared statements
                        $parent_cat =   htmlspecialchars($_GET['parent_cat'], ENT_QUOTES);
                        $query      =   $this->Fetch("SELECT id,subcategory_name FROM subcategories WHERE categoryID = '$parent_cat'");

                        // Uncomment this to see how this returns
                        // $this->PrintPre($query);  ?>

                        <label for="sub_cat">Sub Category</label>
                        <select name="sub_cat" id="sub_cat">
                        <?php
                        if($query !== 0) {
                                foreach($query as $row) { ?>
                            <option value="<?php echo $row['id']; ?>"><?php echo $row['subcategory_name']; ?></option>
                            <?php
                                    }
                            } ?>

                        </select>

                        <?php
                    }

                public function Form()
                    {
                        // Get rows for categories
                        $results    =   $this->Fetch("SELECT id,category_name FROM categories");

                        // Uncomment this to see how this returns
                        // $this->PrintPre($results); ?>

                    <form name="form1" id="form1" method="post">
                        <label for="parent_cat">Parent Category</label>
                        <select name="parent_cat" id="parent_cat">
                            <?php 
                            if($results !== 0) {
                                foreach($results as $row) { ?>

                            <option value="<?php echo $row['id']; ?>"><?php echo $row['category_name']; ?></option>
                            <?php   }
                            } ?>
                        </select>

                        <!-- This is a container that will load in your next menu -->
                        <div id="sub_cat_container"></div>
                        <input type="submit" name="submit" value="submit" /> 
                    </form>     
                    <?php
                    }

                public  $rowCount;

                // This is strictly a returning engine for SQL statements
                protected   function Fetch($_sql)
                    {
                        include_once('config.php');
                        // You really should do prepared statements (PDO)
                        // This way of calling sql is depricated
                        $query          =   mysql_query($_sql);
                        // Save the row count
                        $this->rowCount =   mysql_num_rows($query);
                        // If there are rows return them
                        if($this->rowCount > 0) {
                                $_array =   array();
                                // Loop through
                                while($result = mysql_fetch_array($query)) {
                                        $_array[]   =   $result;
                                    }
                            }
                        // Send back your query results for processing
                        // If no results, return false/0
                        return  (isset($_array))? $_array:0;
                    }

                protected function PrintPre($_array)
                    { ?>
                        <pre>
                        <?php print_r($_array); ?>
                        </pre>
                        <?php
                    }
            }

    // Uncomment this for testing that the AJAX is working.
    //   print_r($_REQUEST);

    // This is probably not the best way to do this all, but for sake
    // of trying to get it all to work, this whole thing will ajax to
    // itself, but if you can get it to work on this one page, you
    // can split it up into two pages.

    // Ok, so this creates a new instance of this whole system
    $builder    =   new CategorySelector();

    // If this page receives a GET request for $_GET['parent_cat'], just process it.
    // That action is to call the sub_cat dropdown menu from this object
    if(isset($_REQUEST['parent_cat']) && !empty($_REQUEST['parent_cat'])) {
            $builder->LoadSubCat();
        }
    // If there is no request, display the html page
    else {
    // You should not have space before the <!doctype>. Some browsers act funky if there is space before
    ?><!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Dependent DropDown List</title>
    <script type="text/javascript" src="jquery.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>
    <script type="text/javascript">
        // I'm not a javascript person, so this portion is kind of sloppy

        $(document).ready(function(){

            $('#parent_cat').change(function() {

            // Get value
            var ElmVal = $('#parent_cat').val();

            $.ajax({
                    // You need to reference this page in the "thispage.php" whatever this page is called
                    url:"/thispage.php?parent_cat="+ElmVal,
                    success:function(result) {
                        $("#sub_cat_container").html(result);
                }});
              });
            });

    </script>
    </head>
    <body>
        <?php 
        // Display the form.
        $builder->Form(); ?>

    </body>
    </html>
    <?php } ?>

您可能想使用AJAX。
echo "<option value='{$row['cat_id']}'>{$row['Subcategory']}</option>";
echo '<br />'.
'<br />';
        // Display errors for troubleshooting
        ini_set('display_errors','1');
        error_reporting(E_ALL);

        class CategorySelector
            {
                public  function LoadSubCat()
                    {
                        // You will be subjected to an injection hack if you don't filter or encode this variable
                        // You should do PDO with prepared statements
                        $parent_cat =   htmlspecialchars($_GET['parent_cat'], ENT_QUOTES);
                        $query      =   $this->Fetch("SELECT id,subcategory_name FROM subcategories WHERE categoryID = '$parent_cat'");

                        // Uncomment this to see how this returns
                        // $this->PrintPre($query);  ?>

                        <label for="sub_cat">Sub Category</label>
                        <select name="sub_cat" id="sub_cat">
                        <?php
                        if($query !== 0) {
                                foreach($query as $row) { ?>
                            <option value="<?php echo $row['id']; ?>"><?php echo $row['subcategory_name']; ?></option>
                            <?php
                                    }
                            } ?>

                        </select>

                        <?php
                    }

                public function Form()
                    {
                        // Get rows for categories
                        $results    =   $this->Fetch("SELECT id,category_name FROM categories");

                        // Uncomment this to see how this returns
                        // $this->PrintPre($results); ?>

                    <form name="form1" id="form1" method="post">
                        <label for="parent_cat">Parent Category</label>
                        <select name="parent_cat" id="parent_cat">
                            <?php 
                            if($results !== 0) {
                                foreach($results as $row) { ?>

                            <option value="<?php echo $row['id']; ?>"><?php echo $row['category_name']; ?></option>
                            <?php   }
                            } ?>
                        </select>

                        <!-- This is a container that will load in your next menu -->
                        <div id="sub_cat_container"></div>
                        <input type="submit" name="submit" value="submit" /> 
                    </form>     
                    <?php
                    }

                public  $rowCount;

                // This is strictly a returning engine for SQL statements
                protected   function Fetch($_sql)
                    {
                        include_once('config.php');
                        // You really should do prepared statements (PDO)
                        // This way of calling sql is depricated
                        $query          =   mysql_query($_sql);
                        // Save the row count
                        $this->rowCount =   mysql_num_rows($query);
                        // If there are rows return them
                        if($this->rowCount > 0) {
                                $_array =   array();
                                // Loop through
                                while($result = mysql_fetch_array($query)) {
                                        $_array[]   =   $result;
                                    }
                            }
                        // Send back your query results for processing
                        // If no results, return false/0
                        return  (isset($_array))? $_array:0;
                    }

                protected function PrintPre($_array)
                    { ?>
                        <pre>
                        <?php print_r($_array); ?>
                        </pre>
                        <?php
                    }
            }

    // Uncomment this for testing that the AJAX is working.
    //   print_r($_REQUEST);

    // This is probably not the best way to do this all, but for sake
    // of trying to get it all to work, this whole thing will ajax to
    // itself, but if you can get it to work on this one page, you
    // can split it up into two pages.

    // Ok, so this creates a new instance of this whole system
    $builder    =   new CategorySelector();

    // If this page receives a GET request for $_GET['parent_cat'], just process it.
    // That action is to call the sub_cat dropdown menu from this object
    if(isset($_REQUEST['parent_cat']) && !empty($_REQUEST['parent_cat'])) {
            $builder->LoadSubCat();
        }
    // If there is no request, display the html page
    else {
    // You should not have space before the <!doctype>. Some browsers act funky if there is space before
    ?><!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Dependent DropDown List</title>
    <script type="text/javascript" src="jquery.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>
    <script type="text/javascript">
        // I'm not a javascript person, so this portion is kind of sloppy

        $(document).ready(function(){

            $('#parent_cat').change(function() {

            // Get value
            var ElmVal = $('#parent_cat').val();

            $.ajax({
                    // You need to reference this page in the "thispage.php" whatever this page is called
                    url:"/thispage.php?parent_cat="+ElmVal,
                    success:function(result) {
                        $("#sub_cat_container").html(result);
                }});
              });
            });

    </script>
    </head>
    <body>
        <?php 
        // Display the form.
        $builder->Form(); ?>

    </body>
    </html>
    <?php } ?>