我如何从while循环中将数据带到外部?

时间:2013-09-06 09:17:52

标签: php while-loop

我在while循环中有一组数据。当我在循环中回显它们时,循环数据与此类似。

if ( !empty($rows) ) {  
    // bind variables to prepared statement
    mysqli_stmt_bind_result($stmt, $userId, $days, $opentime, $closetime, $closestate);

    while (mysqli_stmt_fetch ($stmt)) {     

        echo '<pre>', print_r("$days - $opentime - $closetime - $closestate").'</pre>';

    }
}

数据:

Monday - 06.00 PM - 06.00 PM - 0 
Tuesday - 05.00 PM - 06.00 PM - 0
Wednesday - 05.00 PM - 05.00 PM - 0  
Thursday - 05.00 PM - 05.00 PM - 0   
Friday - 03.00 PM - 04.00 PM - 0  
Saturday - 03.00 PM - 03.00 PM - 0   
Sunday - 03.00 PM - 02.00 PM - 0

在while循环中,我想分隔这样的数据..

$monOpen = // monday open time
$monClose = // monday close time
$monNo = // closed day 

$tueOpen = // Tuesday open time
$tueClose = // Tuesday close time
$tueNo = // closed day 

.............
and so on for 7 days..

为什么我需要这样做,从while循环外部使用这些值。

从while循环外部我有一些下拉列表和这样的复选框 -

我的选择框 -

<select name="tuesday-open" class="text2">
    <option>Open</option>
    <?php for($i = 1; $i <= 24; $i++): ?>
        <option value="<?php echo date("h.i A", strtotime("$i:00")); ?>" <?php if(isset($_POST['tuesday-open']) && $_POST['tuesday-open']==(date("h.i A", strtotime("$i:00")))) echo ' selected="selected"'; ?>><?php echo date("h.i A", strtotime("$i:00")); ?></option>
    <?php endfor; ?>
</select>

我的复选框 -

<input type="checkbox" name="tuesday-closed" <?php if(isset($_POST['tuesday-closed'])) echo "checked";?> /> closed

所以我想在选择框和属性selected=selectedchecked的复选框中显示提取值。

任何想法都将受到高度赞赏,也欢迎另一种方式。 谢谢。

2 个答案:

答案 0 :(得分:4)

正如Ben建议的那样,将它们添加到一个数组中,以便稍后在代码中引用它们。

while (mysqli_stmt_fetch ($stmt)) {    
    $result[$days] = array(
        'open' => $opentime,
        'close' => $closetime,
        'state' => $closestate
    );
}

echo $result['Monday']['open']; // 06.00 PM

要使用select进行此操作,您可以将选择与当前值进行比较。 您需要格式化$i以使其与数据库条目相媲美

<select name="monday-open">
    <?php for($i = 0; $i <= 23; $i++): ?>
        <option<?php echo ($i == $result['Monday']['open'] ? ' selected="selected"' : '');?>><?php echo $i; ?></option>
    <?php endfor; ?>
</select>

答案 1 :(得分:2)

试试这个

while (mysqli_stmt_fetch ($stmt)) 
{    
  $result[$days] = $opentime.' - '.$closetime.' - '.$closestate
}
print_r($result);