我目前正在尝试创建一个带有下拉列表的表单,该表单使用while循环从数据库填充自己.然后表单将用户的输入提交到我的数据库中的表中.为此,我使用的是while循环隐藏输入以标记下拉列表中填充的选项,然后我将使用该输入插入到我的数据库中.
问题: 如果我为隐藏输入编写代码,我的while循环不会循环,但它会在注释掉输入代码之后执行.
我的代码摘录:
<html>
<head><link rel="stylesheet" type="text/css" href="style.css" /></head>
<body>
<?PHP //include("AdminNav.php");?>
<form action="<?PHP echo $_SERVER['PHP_SELF']?>" name="AddSub" method="POST">
<table border="1">
<tr>
<td>Category: </td>
<td>
<select name="category">
<?php
include("cxn.inc");
if($_SESSION['Auth']=="Yes" && $_SESSION['Type']=="Admin")
{
$userid=$_SESSION['UserId'];
$branch="0";
$getcat="SELECT id,Category FROM Categories WHERE Business=$userid && Branch=$branch";
$cat=mysqli_query($cxn,$getcat) or die (mysqli_error($cxn));
while($row=mysqli_fetch_assoc($cat))
{
$catid=$row['id'];
echo"<option value=$row[Category]>$row[Category]</option>";
//echo"<input type='hidden' name='catid' value='$catid' />";<--This is the line
}
}
else if ($_SESSION['Auth']=="Yes" && $_SESSION['Type']=="Sub")
{
$userid=$_SESSION['UserId'];
$branchquery="SELECT id FROM Branch WHERE Bizid=$userid ";
$getbranch=mysqli_query($cxn,$branchquery) or die(mysqli_error($cxn));
$num=mysqli_num_rows($getbranch);
if($num>0)//Get Branch Details if Branches exist
{
$resultbranch = mysqli_fetch_assoc($getbranch);
$branch=$resultbranch['id'];
$getcat="SELECT id,Category FROM Categories WHERE Business=$userid && Branch=$branch";
$cat=mysqli_query($cxn,$getcat) or die (mysqli_error($cxn));
while($row=mysqli_fetch_assoc($cat))
{
$catid=$row['id'];
echo"<option value=$row[Category]>$row[Category]</option>";
//echo"<input type='hidden' name='catid' value='$catid' />";
}
}
else if($num==0)//Get just the User(Admin) Details if No branches exist
{
$resultbranch = mysqli_fetch_assoc($getbranch);
$branch=$resultbranch['id'];
$getcat="SELECT id,Category FROM Categories WHERE Business=$userid";
$cat=mysqli_query($cxn,$getcat) or die (mysqli_error($cxn));
while($row=mysqli_fetch_assoc($cat))
{
$catid=$row['id'];
echo"<option value=$row[Category]>$row[Category]</option>";
//echo"<input type='hidden' name='catid' value='$catid' />";
}
}
}
?>
</select>
</td>
</tr>
<tr>
<td>SubCategory:</td>
<td><input type="text" name="subcategory" maxlength="50" size="30" required="required" /></td>
</tr>
<tr>
<td>
<input type="submit" name="addsub" value="Submit" />
</td>
<td>
<?PHP
if(isset($success))
{
echo"$success";
}
else if(isset($error))
{
echo"$error";
}
?>
</td>
</tr>
</table>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我桌子的摘录:
---------------------------------------------
| Id | Business | Branch | Category |
---------------------------------------------
| 155 | 5 | 0 | Test1 |
---------------------------------------------
| 156 | 5 | 0 | Test2 |
---------------------------------------------
| 157 | 5 | 0 | Test3 |
---------------------------------------------
| 158 | 5 | 0 | Test4 |
---------------------------------------------
Run Code Online (Sandbox Code Playgroud)
问题的细节
当该行被注释掉时,下拉列表用Test 1,2,3,4填充自己,但是当我添加它时,它只显示Test1.Further,当我测试表单(通过提交它)时,它插入到table分类"Test1"但它插入id 158(属于'Test4'类别.
任何善良的灵魂都能指出我的错误以及我能做什么/应该做些什么来纠正它?也欢迎提出改进编码的建议.
谢谢!
编辑(解决方案) 正如其他任何人遇到同样的问题,我所做的是编辑我的处理代码中的一行代码
$catid=$row['id'];
Run Code Online (Sandbox Code Playgroud)
至
$catid=$_POST['category'];
Run Code Online (Sandbox Code Playgroud)
该解决方案的功劳归于Corbin
| 归档时间: |
|
| 查看次数: |
232 次 |
| 最近记录: |