2011-01-07 35 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,将表单更改回下拉列表或使用比率按钮。