【问题标题】:change dropdown from array to check box将下拉列表从数组更改为复选框
【发布时间】:2011-01-15 00:55:38
【问题描述】:

我想从下拉列表更改为复选框,我想更改它,因为我想首先选择数组中的列表,然后通过复选框存储到数据库之前可以选择,所以下拉脚本如下

<?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>

但是不起作用,我需要显示其他相关的代码吗?

感谢有人帮忙,不胜感激

更新: ok post第一个显然不太明显,所以我将添加错误问题

错误是 致命错误:在第 21 行调用 C:\xampp\htdocs\test\do.php 中未定义的方法 st_exchange_conv::convert()

第 21 行是$st-&gt;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();
}

为什么我要将它从下拉菜单更改为复选框? 因为通过复选框列表我将能够选择我检查的哪些是数据库的入口,然后对我来说似乎并不简单,我正在寻求一些帮助

【问题讨论】:

  • 请注明“不起作用”! php代码有错误吗?还是 HTML 输出不正确/有效?
  • 好的,我已经更新了,请看一下,谢谢西蒙
  • 你的新错误意味着它找不到转换方法....是你的类中定义的吗?
  • 嗨 CarpeNoctumDC,对不起,如果我能理解正确,st_exchange_conv::convert() 已经在类中定义,使用下拉所有数据/列表存储到数据库工作正常,然后我尝试将其更改为复选框列表,这意味着我想过滤我检查过的那些是数据库的入口。但我需要向某人学习如何做到这一点,谢谢你的好意和帮助。

标签: php arrays checkbox drop-down-menu


【解决方案1】:

您尚未删除开始的&lt;select&gt; 标签。

但是您删除了&lt;submit&gt; 按钮。

您将name 从“from”更改为“from[]”。

编辑:添加后:

使用下拉列表,您只能为from 选择一个值。现在您将其更改为复选框,因此能够选择多个条目。这导致在do.php 的脚本中接收到数组from[]。您的函数无法以任何方式处理数组或多项选择。

您必须重新设计do.php,将您的表单改回下拉列表或使用比例按钮。

【讨论】:

  • 尽管我将它的名称从“from[]”改为“from”。但仍然错误,但感谢您的帮助,再次感谢
  • 感谢您抽出宝贵时间为这个 Simon,我确实是第二次更新,希望您在完全阅读完我要找的内容后有任何想法,再次感谢。
  • 就像我说的:你的函数convert()不能处理数组作为参数$from的输入。我真的不明白你为什么要使用复选框而不是比例按钮?!
  • 嗨西蒙,我不再使用下拉菜单,因为它会将所有数据存储在列出的数组中,但我想将数据从列出的数组中存储到数据库中,基于从复选框中选中它,是否使用单选按钮可以修理它?谢谢
猜你喜欢
  • 2013-07-12
  • 2017-08-29
  • 2020-09-22
  • 1970-01-01
  • 2018-06-17
  • 2016-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多