2012-04-12 161 views
0

我有一個變量持有一個表的結構,我想在表內添加php代碼。我試着將代碼語句添加到變量中,然後獲取表格中的變量數據,但我認爲不可行,那麼做什麼是正確的方式。PHP將一個條件語句分配給一個變量?

$table='<table border="1" cellspacing="0" cellpadding="0"><tr> 
     <td width="638" valign="top">**ADD CODE HERE**</td></tr> 
     </table>'; 
echo $table; 

這裏是我想列裏面添加代碼:

if($_SESSION['Mmsg']['Mreg-err']) 
    { 
     echo '<div class="err">'.$_SESSION['Mmsg']['Mreg-err'].'</div>'; 
     unset($_SESSION['Mmsg']['Mreg-err']); 
    }  
if($_SESSION['Mmsg']['Mreg-success']) 
    { 
     echo '<div class="success">'.$_SESSION['Mmsg']['Mreg-success'].'</div>'; 
     unset($_SESSION['Mmsg']['Mreg-success']); 
    } 

我已經嘗試添加$通知中的代碼,然後添加

$notification='if($_SESSION['Mmsg']['Mreg-err']) 
    { 
    echo '<div class="err">'.$_SESSION['Mmsg']['Mreg-err'].'</div>'; 
     unset($_SESSION['Mmsg']['Mreg-err']); 
    }  
    if($_SESSION['Mmsg']['Mreg-success']) 
     { 
     echo '<div class="success">'.$_SESSION['Mmsg']['Mreg-success'].'</div>'; 
     unset($_SESSION['Mmsg']['Mreg-success']); 
     }'; 

' . $notification . '

內表如:

$table='<table border="1" cellspacing="0" cellpadding="0"><tr> 
      <td width="638" valign="top">' . $notification . '</td></tr> 
      </table>'; 
echo $table; 

但是不可能,有沒有辦法做到這一點?我是一個新手

+1

爲什麼是不可能的?任何錯誤?看起來像缺少分號 – 2012-04-12 15:40:54

+0

解析錯誤:語法錯誤,意外T_STRING – 2012-04-12 15:44:17

+2

不要執行多行分配/回聲。改爲使用[HEREDOC](http://php.net/heredoc)。你也在'$ table = ...'行末尾缺少';'。 – 2012-04-12 15:44:27

回答

3

編輯添加您的取消設置...

if($_SESSION['Mmsg']['Mreg-err']) 
    $notification = '<div class="err">'.$_SESSION['Mmsg']['Mreg-err'].'</div>'; 
if($_SESSION['Mmsg']['Mreg-success']) 
    $notification = '<div class="success">'.$_SESSION['Mmsg']['Mreg-success'].'</div>'; 

unset($_SESSION['Mmsg']['Mreg-err']); 
unset($_SESSION['Mmsg']['Mreg-success']); 

$table='<table border="1" cellspacing="0" cellpadding="0"><tr> 
     <td width="638" valign="top">' . $notification . '</td></tr> 
     </table>'; 
echo $table; 
+0

謝謝,這工作 – 2012-04-12 16:35:25

1

你可以把你想要的內容查找到$通知變量?

var $notification=""; // is 'var' idiomatic PHP? Not used it much lately. 
    if($_SESSION['Mmsg']['Mreg-err']) 
    { 
     $notification= '<div class="err">'.$_SESSION['Mmsg']['Mreg-err'].'</div>'; 
     unset($_SESSION['Mmsg']['Mreg-err']);  
    } 
    if($_SESSION['Mmsg']['Mreg-success']) 
    { 
     $notification = $notification . '<div class="success">'.$_SESSION['Mmsg']['Mreg-success'].'</div>'; 
     unset($_SESSION['Mmsg']['Mreg-success']); 
    } 

    $table='<table border="1" cellspacing="0" cellpadding="0"><tr>    <td width="638" valign="top">' . $notification . '</td></tr>    </table>';  
    echo $table; 

但是,有幾件事對我來說似乎很奇怪。

首先,爲什麼有一個單獨的會話變量的錯誤或成功的消息?爲什麼不有$_SESSION['Mmsg']['Mreg-outcome']?那麼你不需要像那樣切換。

您還需要echo桌子嗎?爲什麼不只是有可用的$notification變量的頁面,然後有表做了這樣的事在頁面:

<table><tr><td>$notification</td></tr></table> 

最後,你最好不要使用該表比表格中顯示其他任何東西數據或者你會讓小貓哭泣。它看起來很可疑,好像您可能計劃將其用於頁面格式化。

1
<?php 
    // snipped code 
    $table='<table border="1" cellspacing="0" cellpadding="0"><tr> 
      <td width="638" valign="top">' . $notification . '</td></tr> 
      </table>' 
    echo $table; 
    // snipped code 
?> 

這可以寫成這樣:

<?php 
    // snipped code 
?> 
<table border="1" cellspacing="0" cellpadding="0"> 
    <tr> 
     <td width="638" valign="top"><?=$notification?></td> 
    </tr> 
</table> 
<?php 
    // snipped code 
?> 

乾淨多了,不是嗎?

if語句也有其他語法,我發現更容易遵循。

<?php 
// snipped code 
if($_SESSION['Mmsg']['Mreg-err']) 
{ 
echo '<div class="err">'.$_SESSION['Mmsg']['Mreg-err'].'</div>'; 
    unset($_SESSION['Mmsg']['Mreg-err']); 
}  
if($_SESSION['Mmsg']['Mreg-success']) 
    { 
    echo '<div class="success">'.$_SESSION['Mmsg']['Mreg-success'].'</div>'; 
    unset($_SESSION['Mmsg']['Mreg-success']); 
    } 
// snipped code 
?> 

這可以寫成:現在

<?php 
// snipped code 
?> 

<?php if($_SESSION['Mmsg']['Mreg-err']): ?> 
    <div class="err"><?=$_SESSION['Mmsg']['Mreg-err']?></div> 
    <?php unset($_SESSION['Mmsg']['Mreg-err']); ?> 
<?php endif; ?> 
<?php if($_SESSION['Mmsg']['Mreg-success']): ?> 
    <div class="success"><?=$_SESSION['Mmsg']['Mreg-success']?></div> 
    <?php unset($_SESSION['Mmsg']['Mreg-success']); ?> 
<?php endif; ?> 

<?php 
// snipped code 
?> 

,如果發生任何錯誤,這將是更易於調試和跟蹤。

+0

是否有某種在線語法格式化爲PHP?使代碼更具可讀性? – 2012-04-12 15:48:48

+1

有PHPLint:http://www.icosaedro.it/phplint/ 這是一個代碼驗證程序。我不確定它格式化代碼。任何文本編輯器都可以做到。我認爲TextMate,Sublime,Eclipse等都可以做格式化。 – 2012-04-12 15:56:00

0

你在做什麼是完全正確的,只是你沒有正確地賦值給通知變量。這應該現在工作。

if($_SESSION['Mmsg']['Mreg-err']) 
{ 
    $notification= '<div class="err">'.$_SESSION['Mmsg']['Mreg-err'].'</div>'; 
    unset($_SESSION['Mmsg']['Mreg-err']);  
} 
if($_SESSION['Mmsg']['Mreg-success']) 
{ 
    $notification = $notification . '<div class="success">'.$_SESSION['Mmsg']['Mreg-success'].'</div>'; 
    unset($_SESSION['Mmsg']['Mreg-success']); 
} 

$table='<table border="1" cellspacing="0" cellpadding="0"><tr><td width="638" valign="top">' . $notification . '</td></tr></table>';  
echo $table; 
0

你的問題不清楚。我試圖猜測什麼是您的問題,試試這個:

$table='<table border="1" cellspacing="0" cellpadding="0"><tr> 
     <td width="638" valign="top">' . htmlentities($notification) . '</td></tr> 
     </table>'; 
echo $table; 

看看,如果這個工程

相關問題