2011-01-07 45 views
0

我想從下拉菜單中選擇一個複選框,我想更改它,因爲我希望首先選擇數組中的列表,然後可以通過複選框將數據存儲到數據庫之前選中下拉腳本如下從數組更改下拉框到複選框

<?php 
session_start(); 
define('DEFAULT_SOURCE','Site_A'); 
define('DEFAULT_VALUE',100); 
define('DEFAULT_STC','BGS'); 
include('class/stockconvert_class.php'); 
$st = new st_exchange_conv(DEFAULT_SOURCE); 
if(isset($_GET['reset'])) { 
    unset($_SESSION['selected']); 
    header("Location: ".basename($_SERVER['PHP_SELF'])); 
    exit(); 
} 
?> 
<form action="do.php" method="post"> 
<label for="amount">Amount:</label> 
<input type="input" name="amount" id="amount" value="1"> 
<select name="from"> 
<?php 
$stocks = $st->stocks(); 
asort($stocks); 
foreach($stocks as $key=>$stock) 
{ 
    if((isset($_SESSION['selected']) && strcmp($_SESSION['selected'],$key) == 0) || (!isset($_SESSION['selected']) && strcmp(DEFAULT_STC,$key) == 0)) 
    { 
    ?> 
    <option value="<?php echo $key; ?>" selected="selected"><?php echo $stock; ?></option> 
    <?php 
    } 
    else 
    { 
    ?> 
    <option value="<?php echo $key; ?>"><?php echo $stock; ?></option> 
    <?php 
    } 
} 
?> 
</select> 
<input type="submit" name="submit" value="Convert"> 
</form> 

和我改成複選框如下

<?php 
session_start(); 
define('DEFAULT_SOURCE','Site_A'); 
define('DEFAULT_VALUE',100); 
define('DEFAULT_STC','BGS'); 
include('class/stockconvert_class.php'); 
$st = new st_exchange_conv(DEFAULT_SOURCE); 
if(isset($_GET['reset'])) { 
    unset($_SESSION['selected']); 
    header("Location: ".basename($_SERVER['PHP_SELF'])); 
    exit(); 
} 
?> 
<form action="do.php" method="post"> 
<label for="amount">Amount:</label> 
<input type="input" name="amount" id="amount" value="1"><input type="submit" name="submit" value="Convert"> 
<?php 
$stocks = $st->stocks(); 
asort($stocks); 
foreach($stocks as $key=>$stock) 
{ 
    if((isset($_SESSION['selected']) && strcmp($_SESSION['selected'],$key) == 0) || (!isset($_SESSION['selected']) && strcmp(DEFAULT_STC,$key) == 0)) 
    { 
    ?> 
    <br><input type="checkbox" id="scb1" name="from[]" value="<?php echo $key; ?>" checked="checked"><?php echo $stock; ?> 
    <?php 
    } 
    else 
    { 
    ?> 
    <br><input type="checkbox" id="scb1" name="from[]" value="<?php echo $key; ?>"><?php echo $stock; ?> 
    <?php 
    } 
} 
?> 
</form> 

但不工作,我是否需要顯示其他相關的代碼?

感謝,如果有人幫助,感激

更新: 確定後第一顯然是不太明顯的,所以我會添加錯誤

的問題的錯誤是 致命錯誤:調用未定義的方法st_exchange_conv ::用C轉換():\ XAMPP \ htdocs中\上線路測試\ do.php 21

線21是$st->convert($from,$key,$date);

session_start(); 
if(isset($_POST['submit'])) 
{ 
    include('class/stockconvert_class.php'); 
    $st = new st_exchange_conv(DEFAULT_SOURCE); 
    $from = mysql_real_escape_string(stripslashes($_POST['from'])); 
    $value = floatval($_POST['amount']); 
    $date = date('Y-m-d H:i:s'); 
    $_SESSION['selected'] = $from; 
    $stocks = $st->stocks(); 
    asort($stocks); 

    foreach($stocks as $key=>$stock) 
    { 
     $st->convert($from,$key,$date); 
     $stc_price = $st->price($value); 
     $stock = mysql_real_escape_string(stripslashes($stock)); 
     $count = "SELECT * FROM oc_stock WHERE stock = '$key'"; 
     $result = mysql_query($count) or die(mysql_error()); 
     $sql = ''; 
     if(mysql_num_rows($result) == 1) 
     { 
      $sql = "UPDATE oc_stock SET stock_title = '$stock', stc_val = '$stc_price', date_updated = '$date' WHERE stock = '$key'"; 
     } 
     else 
     {  
     $sql = "INSERT INTO oc_stock(stock_id,stock_title,stock,decimal_place,stc_val,date_updated) VALUES ('','$stock','$key','2',$stc_price,'$date')"; 
     } 
     $result = mysql_query($sql) or die(mysql_error().'<br />'.$sql); 
    } 
    header("Location: index.php"); 
    exit(); 
} 

爲什麼我要將其從下拉菜單更改爲複選框? 因爲通過複選框列表我將能夠選擇哪些我檢查它是數據庫的入口,那麼它對我來說似乎並不簡單,我尋求一些幫助<謝謝這麼多對於你的隊友。

+0

請指定「不起作用」!在PHP代碼中是否有錯誤?或者HTML輸出不正確/有效? – Simon 2011-01-07 09:03:56

+0

好的,現在我已經更新了,請看看,謝謝Simon – omc11 2011-01-07 09:15:26

回答

0

您還沒有刪除開頭<select>標記。

但您刪除了<submit>按鈕。

您將name從「from」更改爲「from [from]」。

編輯:你的補充後:

使用你只能選擇一個from值的下拉列表。現在您將其更改爲複選框,從而可以選擇多個條目。這會導致在do.php的腳本中收到一個數組from[]。您的功能無法以任何方式處理數組或多個選擇。

您必須重新設計do.php,將表單更改回下拉列表或使用比率按鈕。