【问题标题】:Getting an syntax error, unexpected T_STRING in select option in html,php [duplicate]出现语法错误,在 html、php 中的选择选项中出现意外的 T_STRING [重复]
【发布时间】:2014-06-10 08:18:58
【问题描述】:

您好,我有一个小项目,它将通过使用 html 中的选择选项为您提供过去 4、6、10 周的新闻。我收到语法错误,选择选项标记中出现意外的 T_STRING。我理解错误,因为我无法在打开的 php 标记中使用 php。但我不知道如何解决这个错误。任何帮助。谢谢。 这是我的代码:

<?php
$page['doctype'] = true;
$param = array_merge($_GET, $_POST);

$return = array();
if($param['aktion'] == 'edit-news')
{
    $page['register-edit-news'] = array(
    1   => array( 'Edit-News','aktiv',$page['script'],'',''),
);


if(isset($_POST['BtnSubmit']))
   {

      if(($_POST['news'])==4){

      $sql=" SELECT DISTINCT ad_news_texte.headline, ad_news.datum_archiv
FROM ad_news_texte
INNER JOIN ad_news_oe ON ad_news_texte.news_id = ad_news_oe.id_ad_news
INNER JOIN ad_news ON ad_news_oe.id_ad_news = ad_news.id
WHERE ad_news.datum_archiv
BETWEEN curdate( ) - INTERVAL DAYOFWEEK( curdate( ) ) +28
DAY AND curdate( )
";

$sql_select=mysql_query($sql);
while($row = mysql_fetch_array($sql_select)) {
  echo $row['headline'] . " " .$row['datum_archiv'] ;
  echo "<br>";
}
}


if(($_POST['news'])==10){

      $sql=" SELECT DISTINCT ad_news_texte.headline, ad_news.datum_archiv
FROM ad_news_texte
INNER JOIN ad_news_oe ON ad_news_texte.news_id = ad_news_oe.id_ad_news
INNER JOIN ad_news ON ad_news_oe.id_ad_news = ad_news.id
WHERE ad_news.datum_archiv
BETWEEN curdate( ) - INTERVAL DAYOFWEEK( curdate( ) ) +70
DAY AND curdate( )
";

$sql_select=mysql_query($sql);
while($row = mysql_fetch_array($sql_select)) {
  echo $row['headline'] . " " .$row['datum_archiv'] ;
  echo "<br>";
}
}



$html =     
'
<body bgcolor="#FFFFFF">
<table width="100%" border="0" cellspacing="0" cellpadding="0">

<tr>
<td class="welcome-page-hint">

<table width="538" cellpadding="0" cellspacing="0" border="0">
<tr>
<td>

<h3>News</h3>

<form name="UserInformationForm" method="POST" action="#">

      <select name="news">
         <option value="4" <?php if($_POST['news']=="4") echo "selected=selected"; ?>>Show news from the last 4 weeks</option>
         <option value="6" <?php if($_POST['news']=="6") echo "selected=selected"; ?>>Show news from the last 6 weeks</option>

      </select>
      <br/><br/>
      <input name="BtnSubmit" type="submit" value="Submit">
</form>

</td>
</tr>
</table>

</td>
</tr>

</table>';
$return = array(
        'status' => 1,
        'html'  => $html
    );

    echo(json_encode($return)) ;
}
?>

【问题讨论】:

  • 你需要转义你的引号。
  • 看看你代码的语法高亮,就可以清楚地看到问题了。

标签: php html select option


【解决方案1】:

您不能在 php 代码的变量中包含 php 代码。

你应该做的是转义字符串然后连接。

<option value="4" '. (($_POST['news']=="4") ? "selected=selected" : "") .'>Show news from the last 4 weeks</option>
<option value="6" '. (($_POST['news']=="6") ? "selected=selected" : "") .'>Show news from the last 6 weeks</option>

我没有尝试在其中放置一个新的 php 代码块,而是转义了字符串,使用了三元运算符,然后连接了 3 个部分。

【讨论】:

  • 嗨@Dharman 我还需要在选项选项卡中使用 If 子句吗,因为我现在没有通过单击按钮退出,我必须在选项标签中回显输出?
  • @user3702602 我不知道你为什么没有得到正确的输出,但我想这是一个单独的问题。
【解决方案2】:

您从$hmtl = ' 开始,在&lt;option value="4" &lt;?php if($_POST['news']=="4") 中关闭$_POST[' 处的单引号,这会扰乱您的HTML 和PHP 代码,因为字符串变量$html 已关闭。您需要使用; 将其关闭或使用\' 转义单引号。那应该可以解决它。

【讨论】:

  • 嗨,我做到了。 (($_POST['news']=="4") ? "selected=selected" : "") .'正如达曼所说,它可以工作但无法回显输出..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2013-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-27
相关资源
最近更新 更多