使用PHP在MySQL中使用DATE RANGE填充选择框

时间:2015-03-07 20:23:49

标签: php mysql mysqli

我有一个包含两个日期的表格,包括开始日期和结束日期。我无法弄清楚的是如何填充一个包含从开始日期到结束日期的所有日期的选择框。

我的代码是

$stmt = $mysqli->prepare("SELECT `eventStart` `eventEnd` FROM $tbl_events WHERE eventName = '$eventID'");
$stmt->execute();
$stmt->bind_result($name);
while ($stmt->fetch()){
    echo "<option value='$name'>$name</option>";
}
$stmt->close();

它有效,但它只填充第一个日期;我在网上搜索过,但无法找到解决问题的方法。

2 个答案:

答案 0 :(得分:0)

<?php
    // $aResults = $stmt->fetch_all(); or $stmp->fetch_array();
    // Ensure your results look great to your liking before continuing.
    $aResults = array( 2001, 2002, 2003, 2004, 2005, 2006 );
    $iCountResults = count( $aResults );
    echo "<select>";

    for( $i = 0; $i < $iCountResults; ++$i )
    {
        echo '<option value="' . $aResults[ $i ] . '">' . $aResults[ $i ] . '</option>';
    }
    echo "</select>";
// $stmt->close();
?>

答案 1 :(得分:0)

$startdate_options = array();
$enddate_options = array();

$stmt = $mysqli->prepare("SELECT `eventStart` `eventEnd` FROM $tbl_events WHERE eventName = '$eventID'");

$stmt->execute();
$stmt->bind_result($startdate_val, $enddate_val);

while ($stmt->fetch()){
    $startdate_options[] = $startdate_val;
    $enddate_options[] = $enddate_val;
}

$stmt->close();

// from this point it really should be in another file

// startdate values render
echo '<select name="startdate" class="startdate">';
foreach ($startdate_options as $startdate)
{
    echo "<option value='$startdate'>$startdate</option>";
}
echo '</select>';

//enddate values render
echo '<select name="enddate" class="enddate">';
foreach ($enddate_options as $enddate)
{
    echo "<option value='$enddate'>$enddate</option>";
}
echo '</select>';

//另请注意,这不是非常MVC,为了便于阅读,您不应该在相同的源文件或相同的类或相同的程序流中执行SQL语句,业务逻辑和呈现html。实际上你应该只通过你的&#34;模板引擎&#34; $ startdate_options和$ enddate_options数组(更像是作为返回值或作为类成员而不是作为全局变量)

希望我能帮到你。