2009-11-23 68 views
0

OK,我會保持這個短,我可以..基於數據庫記錄/調用的動態變量 - 幫助?

我想爲我的用戶營造一個真正可擴展的環境,因此讓他們..
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>"; 
    } 

}

////////////////////////////////////////////// ////////////////////////////////////////////

OK,正如你所看到的,我將選擇命名爲選項名稱,這樣我就可以使用該名稱再次調用下一個腳本中的值。

result.php

好了,到reasemble數據集和結果匹配到發佈的數據,我再次做了幾個電話,首先得到的所有數據。

////////////////////////////////////////////// ////////////////////////////////////////////

$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]." | ";} 
    } 
} 

///////////////////////////////////////////////// /////////////////////////////////////////

OK,下至問題...

在form.php的

,我張貼動態創建的值,基本上是由管理員用戶。

比方說他們創造一個選項「foo」的,並且這些值「foo1」,「foo2的」,「foo3」(在管理區域)

form.php的通過交叉構建選擇引用的兩個表,名稱選擇,然後進行填充(沒有什麼是預先定義的)

則終端用戶到達在前端的形式,並且上發佈的形式,他們選擇了「foo3」

result.php首先沒有任何東西_REQUEST(記得我們沒有什麼可以定義的),直到它重建了可能已經發布的可能的變量。 然後我使用foreach來運行所有存儲的選項名稱,然後創建動態變量...
$varnval = $_REQUEST[$option_name];

然後我過濾掉沒有被貼有名字..
if(!$varnval | $varnval=="select"){}

現在

...

本地我得到的值「foo3」沒問題,但不是在網絡服務器。然後我注意到,當使用本地php(Xampp)值甚至不需要定義$ var = $ _ POST ['var'];它仍然會工作....調試時很煩人!但是,無論如何,這個腳本都會起作用。

我在$varnval $_REQUEST之後放置了一個echo,但沒有顯示。

在我看來,$_REQUEST沒有得到變量,無論是因爲解析還是因爲我錯過了一些東西。

我花了好幾天的時間研究這個問題,嘗試了很多不同的方法,但所有的主題都無處可尋。

也許我想不可能的,但我覺得必須有創建一組單獨從數據庫記錄變量的方式(約不是相反,因爲大多數的搜索似乎產生)

這是我的在這裏第一篇文章,所以我道歉,如果它是在錯誤的地方!

我感謝你在任何幫助

回答

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

希望有所幫助的數組。