问题描述
||
我有一个PHP表单,该表单已转储到MysqL表中。我创建了一个使用PHP从Product表中填充的数组。
查询表以获取数组的值-工作正常。
<?PHP
function getProducts ($id)
{
$sql =(\"SELECT * FROM products where products.CAT_ID = $id AND disABLED =\'NO\'\");
$result = MysqL_query($sql);
if ($result > 0)
{
$products = array();
$x=0;
while($row = MysqL_fetch_array($result))
{
$products[$x]= $row;
$x += 1;
}
return $products;
}
else return false;
}
function newProd(){
global $products;
}
?>
然后,我使用以上数组在javascript手风琴中创建标签。标签旁边是选择框。 (已删除不必要的页面元素。。)下面的HTML / PHP表单显示了上面的数组。
<?PHP include(\'includes/query.PHP\');?>
库存
<body onload=\"toggleField()\">
<div id=\"container\" class=\"container_16\">
<form name=\"form1\" id=\"form1\" action=\"insert.PHP\" method=\"post\" enctype=\"multipart/form-data\" style=\"height: inherit\">
<div id=\"Info\" class=\"grid_16\">
<fieldset>
<label id=\"Label1\">
<span class=\"Labels\">Store information</span> <br>
</label>
<div>
<label for=\"name\">
<span class=\"Labels\"> Name :</span> </label>
<input id=\"name\" name=\"name\" type=\"text\">
</div>
</fieldset>
</div>
<hr id=\"SpacePadding\">
<hr class=\"SpacePadding\">
<div class=\"clear\"></div>
<!-- Start of the Accordion Container-->
<!-- Start array,make sure Category Array isn\'t false -->
<?PHP if($categoryArray !=false):?>
<!-- create the variables for modulus -->
<!-- Start the foreach loop for the category Array -->
<?PHP $cataCounter = 0; ?>
<?PHP $closeSection = false; ?>
<?PHP foreach($categoryArray as $row):?>
<?PHP if($cataCounter % 2 == 0): ?>
<div class=\"push_1 grid_8\">
<?PHP $closeSection = false; ?>
<?PHP else: ?>
<div class=\"grid_8\">
<?PHP $closeSection = true; ?>
<?PHP endif; ?><!-- insert modulus-->
<div class=\"AccordionTitle\"><?PHP echo $row[\'CATEGORY_NAME\'];?></div>
<div class=\"AccordionContent\">
<table>
<?PHP foreach(getProducts($row[\'CAT_ID\']) as $row):?>
<tr>
<th class=\"boldLabels\"><?PHP echo $row[\'PRODUCT_NAME\'];?>
<span class=\"label\"></span></th>
<th><span class=\"Labels\">Count:</span></th>
<td>
<select name=\"selCount[]\" onChange=\"toggleField(this.value);\" class=\"ListBox\">
<option value=\"Select\">Select One</option>
<option value=\"0\">0</option>
<option value=\"1\">1</option>
<option value=\"2\">2</option>
<option value=\"3\">3</option>
<option value=\"4\">4</option>
<option value=\"5\">5</option>
<option value=\"6\">6</option>
<option value=\"7\">7</option>
<option value=\"8\">8</option>
<option value=\"9\">9</option>
<option value=\"10\">10</option>
<option value=\"Other\">Other(Specify)</option>
</select>
<input type=\"text\" name=\"otherCount[]\" class =\"ListBox\" style=\"display: none;\">
</td>
<td><span class=\"Labels\">Need:</span></td>
<td>
<select name=\"selNeed[]\" onChange=\"toggleField2(this.value);\" class=\"ListBox\">
<option value=\"Select\">Select One</option>
<option value=\"0\">0</option>
<option value=\"1\">1</option>
<option value=\"2\">2</option>
<option value=\"3\">3</option>
<option value=\"4\">4</option>
<option value=\"5\">5</option>
<option value=\"6\">6</option>
<option value=\"7\">7</option>
<option value=\"8\">8</option>
<option value=\"9\">9</option>
<option value=\"10\">10</option>
<option value=\"Other\">Other(Specify)</option>
</select>
<input type=\"text\" name=\"otherNeed[]\" class =\"ListBox\" style=\"display: none;\">
</td>
</tr>
<?PHP endforeach;?>
</table>
</div>
</div>
<?PHP if($closeSection): ?>
<div class=\"clear\"></div>
<?PHP endif; ?>
<?PHP $cataCounter += 1; ?>
<?PHP endforeach;?>
<?PHP endif;?>
<input name=\"Submit\" type=\"submit\" value=\"submit\">
</div>
</form>
<br>
</div>
<footer>
<div align=\"center\">
<ul>
<li><a href=\"#\">Home</a></li>
<li><a href=\"#\">Daily Inventory Counts</a></li>
<li><a href=\"#\">Contact System Admin</a></li>
</ul>
</div>
</footer>
</body>
提交后,我希望Product_Name进入具有相关选择选项的新表中。
(我取出了数据库连接信息。)
<?PHP
//Assign array
$SelCount = $_POST[\'selCount\'];
$SelNeed = $_POST[\'selNeed\'];
$otherNeed = $_POST[\'otherNeed\'];
$otherCount = $_POST[\'otherCount\'];
$limit = count($SelCount);
for($i=0;$i<$limit;$i++) {
$SelCount[$i] = MysqL_real_escape_string($SelCount[$i]);
$SelNeed[$i] = MysqL_real_escape_string($SelNeed[$i]);
$otherNeed[$i] = MysqL_real_escape_string($otherNeed[$i]);
$otherCount[$i] = MysqL_real_escape_string($otherCount[$i]);
if (($SelCount[$i]) !=\"Select\" ) {
$sql = (\"INSERT INTO inventory ( STORE_ID,REQUESTOR,ITEM_COUNT,ITEM_NEED,NEED_COUNT,OTHER_COUNT)
VALUES (\'$_POST[store]\',\'$_POST[name]\',\'\".$SelCount[$i].\"\',\'\".$SelNeed[$i].\"\',\'\".$otherNeed[$i].\"\',\'\".$otherCount[$i].\"\')\");
if(MysqL_query($sql,$db))
echo \"$i successfully inserted.<br/>\";
else
echo \"$i encountered an error. <br/>\";
}
}
?>
解决方法
这是我要做的:
function getProducts($id)
{
$sql = \'SELECT * FROM products where products.CAT_ID = \' . $id . \' AND DISABLED = \"NO\"\';
$result = mysql_query($sql);
if($result !== false) {
while($row = mysql_fetch_array($result)) {
$products[]= $row;
}
} else {
$products = false;
}
}
然后您可以通过以下方式将其打印出来:
if($products = getData(id)) {
foreach($products as $product) {
echo $product[\'database_field_name\'];
}
}
要查看它们全部用于调试目的,可以使用以下命令:
echo \'<pre>\' . print_r($products,true) . \'</pre>\';
另外,您必须使用以下方法来消毒7英镑:
http://php.net/manual/en/function.mysql-real-escape-string.php,如果是整数,则可能使用intval()
。
在会话中存储数据:
session_start();
$_SESSION[\'name\'] = $product[\'database_field_name\'];
然后在insert.php页面上,您可以通过以下方式读取数据:
echo $_SESSION[\'name\'];
然后,在不再需要它之后,可以将其取消设置:
unset($_SESSION[\'name\']);