использовать файл file_put_contents создать HTML-файл с PHP MySQL - PullRequest
0 голосов
/ 21 апреля 2011

Когда я попытался использовать созданный html-файл file_put_contents с php mysql, у меня возникли некоторые проблемы. мой код, как показано ниже, некоторые ошибки произошли в первой строке эха. Нужна помощь. спасибо.

Я получаю ошибку

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

В этой строке

$php = "echo '<div class=\"title\">'.htmlspecialchars($row['title'],UTF-8).'</div><br />';

Вот остаток моего кода

header('Content-type:text/html; charset=utf-8');
set_time_limit(30);
require_once dirname(__FILE__) . '/conn.php'; 
mysql_select_db("ba_10978243",$handle_db5);
$result = @mysql_query("SELECT title,content,date FROM new_heelp Order By date DESC LIMIT 15");
while ($row = @mysql_fetch_array($result))
{  
$php = "echo '<div class=\"title\">'.htmlspecialchars($row['title'],UTF-8).'</div><br />';//echo wrong in this line : Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
    $data = date(\"w j n Y H:i:s\", $row['date']);
    echo '<div class=\"date\">'.$data.'</div>';
    if(!empty($row['content'])){ 
      echo '<div class=\"content\">'.$row['content'].'</div>';
    }";
}
file_put_contents("$article_20100421_132.html", $php);
?>

Ответы [ 3 ]

8 голосов
/ 21 апреля 2011

Это довольно уродливый код. И вы создаете строки, содержащие синтаксис PHP, которые затем сохраняются в файле HTML? Не собираюсь на работу.

<?php
set_time_limit( 30 );

require_once( dirname( __FILE__ ) . '/conn.php' ); 
mysql_select_db( 'ba_10978243' , $handle_db5 );

$result = @mysql_query( 'SELECT `title , `content` , `date` FROM `new_heelp` ORDER BY `date` DESC LIMIT 15' );

if( !$result || mysql_num_rows( $result )>0 ){
  echo 'ERROR: No SQL Rows Returned.';
}else{
  $output = array();
  $rowTpl = '<div class="title">%s</div><br/><div class="date">%s</div>%s';
  while( $r = @mysql_fetch_array( $result ) ){
    $output[] = sprintf( $rowTpl ,
                  htmlspecialchars( $row['title'] , ENT_COMPAT , 'UTF-8' ) ,
                  date( 'w j n Y H:i:s' , $row['date'] ) ,
                  ( !empty( $row['content'] ) ? $row['content'] : '' ) );
  }
  file_put_contents( "{$article}_20100421_132.html" , implode( "\n" , $output ) ); # NOTE: $article is not declared anywhere above this line
?>

Краткое описание проблем в вашем коде:

  • Вы используете header() для установки Content-Type, когда в этом нет необходимости - создаваемый вами HTML-файл не будет наследовать эту информацию, а если этот PHP-скрипт ничего не выводит в браузер, он является избыточным.
  • Дважды проверьте Имя таблицы в вашем SQL - действительно ли это "heelp"?
  • В цикле while() вы заменяете значение $php в каждом цикле, поэтому только последние значения будут перенесены на страницу.
  • Ваша строка, которую вы используете для установки $php, содержит код PHP, который в HTML-файле ничего не будет делать.
  • Вы избегаете двойных кавычек, когда окружены одинарными кавычками - Избыточный
  • Вы используете переменную в имени нового файла HTML, которая не объявлена ​​где-либо выше этой строки, что вызовет проблемы.
4 голосов
/ 21 апреля 2011

Множество проблем в вашем коде.Самые яркие из них перечислены ниже.

"echo '<div class=\"title\">'.htmlspecialchars($row['title'],UTF-8).'</div><br />';
----------------------------^

Вы открываете свое утверждение двойной кавычкой ", но закрываете ее одинарной кавычкой '.Просто закройте его двойной кавычкой.

$php = "e....";

Вы переопределяете значение переменной $php в цикле.Вам нужно объединить его

$php .= "...";

Вы подавили ошибки в своей команде запроса.Как вы узнаете, если что-то пойдет не так?Используйте оператор @ разумно.

@mysql_query....

Из того, что я вижу, вы делаете беспорядок в вашей строке, потому что пытаетесь поместить код PHP в текстовый файл (возможно, включить его позже или проверить его?)Есть более чистые способы изготовления вашей струны.Облегчает чтение.Мы можем помочь вам, если вы дадите более подробную информацию о том, что вы пытаетесь сделать.

3 голосов
/ 21 апреля 2011

Исправить:

 Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

Измените строку сэмпла, чтобы включить заключительную заключительную цитату:

 $php = "echo '<div class=\"title\">'.htmlspecialchars($row['title'],UTF-8).'</div><br />'";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...