2011-08-29 53 views
0

我試圖檢查表中的特定值(購物車結帳),然後顯示基於這些值的拾取日期。所以如果我訂購的產品有一個聖誕節代碼,只會顯示一個聖誕節日曆。或者如果我點了聖誕節的東西,謝謝客戶會得到一個聖誕節和感恩節的日曆。操縱字符串信息和正則表達式。 php

這裏是代碼(我很確定我不會這樣做的正確方法。)我試圖綁定到一個現有的購物車模板系統..所以我不能做直接查詢。

<?php 
foreach($this->rows as $i => $row){ 

if(preg_match("/thanks/",$row->dates)) { $thanks ='thanks';}else {$thanks = '';} 
if(preg_match("/xmas/",$row->dates)) { $xmas ='xmas';}else {$xmas = '';} 
if(preg_match("/newyears/",$row->dates)) { $newyears ='newyears';}else {$newyears = '';} 

$mydates=$thanks.$xmas.$newyears; 


//print_r($mydates); 

} 

?> 

<?php 
if(preg_match("/xmas/",$mydates)) { ?> 
<tr><td class="key">mylabel</td><td>myselect box</td></tr> 
<?php }?><?php 
<?php 
if(preg_match("/thanks/",$mydates)) { ?> 
<tr><td class="key">mylabel</td><td>myselect box</td></tr> 
<?php }?> 
<?php 
if(preg_match("/newyears/",$mydates)) { ?> 
<tr><td class="key">mylabel</td><td>myselect box</td></tr> 
<?php }?> 

print_r返回正確的值,但是上面只顯示購物車中物品的一個(第一個)選擇。

說聖誕節和謝謝的人的命令。那麼print_r返回xmasthanks ,如果他們爲了感恩print_r返回謝謝

html看起來像一列中的正常選擇框。他們應該像印刷品一樣顯示,但是隻能顯示購物車中的最後一種商品類型,所以如果你先訂購聖誕物,然後再謝謝第二,那麼只能選擇感恩節。

+0

你可以發佈'print_r'的結果和該腳本的html輸出(至少相關部分)嗎? –

+0

爲什麼標記爲正則表達式? – NullUserException

回答

0

嗯..這樣的東西應該可以工作 - 我相信別人有一個更容易和更好的方式,雖然。儘量避免簡單匹配的preg函數。 strstr甚至strpos似乎都可以在這裏正常工作。

如果您不需要它來創建整個表格,只需取出表格的開始和結束行即可。 - 實際上,現在我想到了,你可以很容易地將兩個循環合併爲一個。

<?php 

    $datecodes = array(); 
    foreach($this->rows as $i => $row){ 

    if(strstr($row->dates, 'thanks')) { $datecodes[] = 'thanks';} 
    if(strstr($row->dates, 'xmas')) { $datecodes[] = 'xmas';} 
    if(strstr($row->dates, 'newyears')) { $datecodes[] = 'newyears'; } 

    } 




    if((is_array($datecodes)) && (count($datecodes) > 0)){ 

    $out .= '<table>'; 

    foreach($datecodes as $code){ 

     $out .= '<tr>'; 

     switch($code){ 

      case 'thanks': 
       $out .= '<td class="key">Thanksgiving</td><td>'; 
       //Display Thanksgiving Calendar 
       $out .= '</td>'; 
      break; 

      case 'xmas': 
       $out .= '<td class="key">Xmas</td><td>'; 
       //Display Xmas Calendar 
       $out .= '</td>'; 
      break; 

      case 'newyears': 
       $out .= '<td class="key">New Years</td><td>'; 
       //Display New Years Calendar 
       $out .= '</td>'; 
      break; 
     } 

     $out .= '</tr>'; 

    } 

    $out .= '</table>'; 

    echo $out; 
    } 
    else{ 
    echo 'No Holiday Orders Found'; 

    } 
?>