好的,我会尽可能地保持这个......
我正在尝试为我的用户创建一个真正可扩展的环境,因此允许他们使用。
1.定义一个新选项(dshop_options_name)
2.定义选项值(dshop_options_values)
数据库中的单独表格
这是为了允许分配不同的值,也可以任意组合 好的,脚本分为两部分。表单页面和结果页面
form.php(使用POST)
首先我需要根据分配给产品的选项动态创建下拉列表,然后运行dshop_options_values表以获取分配给该选项的任何值
/////////////////////////////////////////////// ///////////////////////////////////////////
$prod_prop_name=mysql_query("SELECT * FROM `dshop_options_name`");
$prod_prop_name_array= array();
while($data9=mysql_fetch_array($prod_prop_name)) {
$prod_prop_name_array[]=$data9;
}
foreach($prod_prop_name_array as $rowNum => $data9) {
$prod_prop_id=$data9[0];
$prod_prop_title=$data9[1];
$prod_prop_attri=mysql_query("SELECT * FROM `dshop_options_values` WHERE `prod_id`='".$selected_product."' AND `attri_name`='".$prod_prop_title."' ORDER BY `attri_value` ASC ");
$prod_prop_attri_array= array();
while($data10=mysql_fetch_array($prod_prop_attri)) {
$prod_prop_attri_array[]=$data10;
}
if(!$prod_prop_attri_array){}
else{
echo"<div class='left'>";
echo"$prod_prop_title\n";?>
<select name='<? echo $prod_prop_title?>'>
<option value="select">Select</option>
<?php
foreach($prod_prop_attri_array as $rowNum => $data10){
$itemname=$data10[2];
$itemvalue=$data10[3];
$itemprice=$data10[4];
if($itemprice<="0"){
echo"<option value='".$itemvalue."'>".$itemvalue."</option>\n";
}
else{
echo"<option value='".$itemvalue."'>".$itemvalue." - ".$currency_type.$itemprice."</option>\n";
}
}
echo"</select></br></br></div>";
}
}
/////////////////////////////////////////////// ///////////////////////////////////////////
好的,正如您所看到的,我将select命名为选项名称,这样我就可以使用该名称再次调用下一个脚本中的值。
result.php
好的,为了重新整理数据集并将结果与发布的数据相匹配,我再次做几次调用以获取所有数据。
/////////////////////////////////////////////// ///////////////////////////////////////////
$prod_prop_name=mysql_query("SELECT * FROM `dshop_options_name`");
$prod_prop_name_array= array();
while($data9=mysql_fetch_array($prod_prop_name)) {
$prod_prop_name_array[]=$data9;
}
foreach($prod_prop_name_array as $rowNum => $data9){
$option_id=$data9[0];
$option_name=$data9[1];
$varnval=$_REQUEST[$option_name];
echo"$varnval"; // did we get a result?
$results = array();
if(!$varnval | $varnval=="select"){}
else{
$results[] = $option_name."-".$varnval;
$optpricesum_query=mysql_query("SELECT * FROM `dshop_options_values` WHERE `attri_name`='".$option_name."' AND `attri_value`='".$varnval."'");
$optpricesum_result=mysql_fetch_array($optpricesum_query);
$optpricesum=$optpricesum_result[4];
}
if(!$varnval | $varnval=="select"){}
else{
for ($i=0;$i<=0;$i++){$options.=$results[$i]." | ";}
}
}
/////////////////////////////////////////////// ///////////////////////////////////////////
好的,直到问题......
在form.php中,我发布了一个动态创建的值,主要由admin用户发布。
让我们说他们创建了一个选项“Foo”,值为“foo1”,“foo2”,“foo3”(在管理区域中)
form.php通过交叉引用两个表来构建选择,命名选择然后填充它(没有预先定义)
然后最终用户到达前端的表单并在发布表单时,他们选择了“foo3”
result.php起初没有_REQUEST
(记住我们没有任何定义),直到重建可能已发布的可能的vaiables。
然后我使用foreach运行存储的所有选项名称,希望然后创建动态变量...
$varnval = $_REQUEST[$option_name];
然后我过滤了未张贴的名字。
if(!$varnval | $varnval=="select"){}
现在...
在本地我得到值“foo3”没问题,但在网络服务器上没有。然后我注意到当使用本地php(Xampp)值时甚至不需要定义$ var = $ _ POST ['var'];它仍然会工作....调试时很烦人!!但是无论如何都表明脚本会起作用。
我在echo
之后放置了$varnval $_REQUEST
,但没有显示任何内容。
在我看来,$_REQUEST
没有得到变量,要么是因为解析,要么是因为我错过了一些东西。
我花了几天时间研究这个问题,尝试了许多不同的方法,但所有线程都无处可去。
也许我正在尝试不可能的事情,但我觉得必须有一种方法可以单独从数据库记录中创建一组变量(而不是像大多数搜索似乎产生的那样)
这是我在这里的第一篇文章,所以如果它在错误的地方,我道歉!
我提前感谢您的任何帮助
答案 0 :(得分:0)
您应首先检查'register_globals'是否已启用,以便$ _REQUEST工作;我宁愿不使用那个超全局变量,而是使用$ _GET或$ _POST代替(取决于你的表单设置)。
供您选择;最好将它们存储为数组:
<select name="myoption[]">
<option name="1" value="1">One</option>
<option name="2" value="2">Two</option>
</select>
在PHP中将返回一个可以使用
获取的数组print_r($myoption);
希望有所帮助。