基于数据库记录/召回的动态变量 - 帮助?

时间:2009-11-23 00:19:08

标签: php dynamic variables

好的,我会尽可能地保持这个......

我正在尝试为我的用户创建一个真正可扩展的环境,因此允许他们使用。
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."&nbsp;-&nbsp;".$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没有得到变量,要么是因为解析,要么是因为我错过了一些东西。

我花了几天时间研究这个问题,尝试了许多不同的方法,但所有线程都无处可去。

也许我正在尝试不可能的事情,但我觉得必须有一种方法可以单独从数据库记录中创建一组变量(而不是像大多数搜索似乎产生的那样)

这是我在这里的第一篇文章,所以如果它在错误的地方,我道歉!

我提前感谢您的任何帮助

1 个答案:

答案 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);

希望有所帮助。