Страницы .shtml и .php, включая виртуальные и работающие проблемы с PHP - PullRequest
0 голосов
/ 29 ноября 2011

У меня странная проблема. Это может быть связано с сервером, но я не знаю, что искать.

У меня есть страница .php с несколькими виртуальными включениями:

<?php virtual ("nav.shtml"); ?>

... повсюду. У меня также есть парсер, который отображает данные XML в виде таблицы.

Парсер работает со стандартом:

 <?php include ('parser.php'); ?>

... однако, если у меня виртуальное значение выше включенного, парсер не работает. Или, по крайней мере, он не "найдет файл", однако, файл есть и работает над виртуальным, отображая его нормально ...

Например, это работает:

<?php include ('parser.php'); ?>
<?php virtual ('file.shtml'); ?>

Это не:

<?php virtual ('file.shtml'); ?>
<?php include ('parser.php'); ?>

Я что-то здесь упускаю?

Вот код страницы index.shtml:

<?php virtual ("nav.shtml"); ?>
     <div id="sortabletable">
                      <table id="myTable" class="tablesorter">
                        <thead>
                          <tr>
                            <th>Subject</th>
                            <th>Committee</th>
                            <th>Witness</th>
                            <th>Date</th>
                            <th>Bill</th>
                            <th>Link</th>
                          </tr>
                        </thead>
                        <tbody>
                            <?php include('parser.php'); ?>
                        </tbody>
                      </table>
                    </div>
     <?php virtual ("footer.shtml"); ?>

Вот код парсера:

<?php 
$xml_file = "test.xml"; 

$xml_subject_key = "*TESTIMONIES*CONGRESS*SUBJECT"; 
$xml_committee_key = "*TESTIMONIES*CONGRESS*COMMITTEE"; 
$xml_witness_key = "*TESTIMONIES*CONGRESS*WITNESS"; 
$xml_date_key = "*TESTIMONIES*CONGRESS*DATE"; 
$xml_bill_key = "*TESTIMONIES*CONGRESS*BILL"; 
$xml_link_key = "*TESTIMONIES*CONGRESS*LINK"; 

$congress_array = array(); 

$counter = 0; 
class xml_story{ 
    var  $subject, $committee, $witness, $date, $bill, $link; 
} 

function startTag($parser, $data){ 
    global $current_tag; 
    $current_tag .= "*$data"; 
} 

function endTag($parser, $data){ 
    global $current_tag; 
    $tag_key = strrpos($current_tag, '*'); 
    $current_tag = substr($current_tag, 0, $tag_key); 
} 

function contents($parser, $data){ 
    global $current_tag, $xml_subject_key, $xml_committee_key, $xml_witness_key, $xml_date_key, $xml_bill_key, $xml_link_key, $counter, $congress_array; 
    switch($current_tag){ 
        case $xml_subject_key: 
            $congress_array[$counter]->subject = $data; 
            break; 
        case $xml_committee_key: 
            $congress_array[$counter]->committee = $data; 
            break; 
        case $xml_witness_key: 
            $congress_array[$counter]->witness = $data; 
            break; 
        case $xml_date_key: 
            $congress_array[$counter]->date = $data; 
            break; 
        case $xml_bill_key: 
            $congress_array[$counter]->bill = $data; 
            break; 
        case $xml_link_key: 
            $congress_array[$counter]->link = $data; 
            $counter++; 
            break; 
    } 
} 

$xml_parser = xml_parser_create(); 

xml_set_element_handler($xml_parser, "startTag", "endTag"); 

xml_set_character_data_handler($xml_parser, "contents"); 

$fp = fopen($xml_file, "r") or die("Could not open file"); 

$data = fread($fp, filesize($xml_file)) or die("Could not read file"); 

if(!(xml_parse($xml_parser, $data, feof($fp)))){ 
    die("Error on line " . xml_get_current_line_number($xml_parser)); 
} 

xml_parser_free($xml_parser); 

fclose($fp); 

 // A simple for loop that outputs our final data. 
 //echo sizeof($congress_array);
for($x=0; $x<count($congress_array); $x++){ 
    echo "<tr><td scope='row'>" . $congress_array[$x]->subject . "</td>";  
    echo "<td>" . $congress_array[$x]->committee . "</td>"; 
    echo "<td>" . $congress_array[$x]->witness . "</td>"; 
    echo "<td>" . $congress_array[$x]->date . "</td>"; 
    echo "<td>" . $congress_array[$x]->bill . "</td>"; 
    echo '<td><a href="'. $congress_array[$x]->link .'"><img src="download-icon.png" width="20" height="20" alt="' . $congress_array[$x]->subject . '"/></a></td></tr>'; 
} 
?>

Ответы [ 2 ]

0 голосов
/ 04 декабря 2011

Если вы используете Виртуальные и Включенные в некоторых случаях, вам нужно будет разделить включаемый код и запустить его в верхней части файла .shtml.Затем вывод включает в себя, где вам нужен выход.Работал на мою проблему.

Спасибо!

0 голосов
/ 29 ноября 2011

"Не найдет файл" ... какой файл?XML?Shtml?

Не видя ваш код ( кашель ), я могу только догадываться, что ваш .SHTML включает в себя некоторый исполняемый PHP, который расстраивает вещи ...

Но без публикациизакодировать все, что мы можем сделать, это угадать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...