Jump to content

[SOLVED] Not receiving data from array


Cep

Recommended Posts

Hello,

I am using a modified XML parser to read in some custom XML data. The script should then take this data and output it into an HTML file displayed on the users screen.

The problem I am having is that I am getting no record data at all, just a repeat of the template that the code should produce.

I know this must have something to do with my two for loops but I am unsure why, logically for each key in the first array $record there will be another array $arr as its value and then the second loop will loop through $arr to get the record information.

Here is my code,

[code=php:0]
<?php
$arr = array();
$record = array();
$flag = "";
$count = 0;

$pagestart= "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<head>
<title>Professional Development Courses Introductory</title>
<style type='text/css'>
<!--
body, table {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10pt
}

.ctext {
font-family: Verdana, Arial, Helvetica, sans-serif;
text-align: center;
}

.str {
font-weight: bold;
}


.sml {
font-size: 8pt;
}

.lrg {
font-size: 12pt;
}

.red {
color: red;
}

.white {
color: #FFFFFF;
}
// -->
</style>
</head>
<body>
<div align='center'>";




function opening_element($parser, $element) {

  global $flag;
  $flag = $element;

}

function character_data($parser, $data) {

  global $flag;
  global $arr;
  global $count;
  global $record;

  switch($flag) {
    case "record":
          $count = 1;
          break;
    case "/record":
    case "myData":
    case "/myData":
    case "":
            break;
    default:
            $arr[$count] = $flag."~".$data;
            $count++;

            if ($count==13) {
              $record[] = $arr;
              $arr = array();
            }
            break;
  }

}

function closing_element($parser, $element) {

  global $flag;
  $flag = "";

}

$parser = xml_parser_create();
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, false);
xml_set_element_handler($parser, "opening_element", "closing_element");
xml_set_character_data_handler($parser, "character_data");

$document = file("default.xml");

foreach ($document as $line) {
  xml_parse($parser, $line);
}

xml_parser_free($parser);

echo $pagestart;

foreach ($record as $arr) {

        for ($z = 1; $z <= 12; $z++) {

            $value = $arr[$z];

            $from_date = "";
            $title = "";
            $start_time = "";
            $speaker = "";
            $group = "";
            $v_address = "";
            $objectives = "";
            $content = "";
            $attend = "";
            $speaker = "";
            $fees = "";

            if($value!="~") {
                  //echo "line {$count}: {$value}<br />";
                  //$count++;

                  $split = explode("~", $value);

                  switch ($split[0]) {
                          case "from_date":
                              $from_date = $split[1];
                              break;
                          case "title":
                              $title = $split[1];
                              break;
                          case "start_time":
                              $start_time = $split[1];
                              break;
                          case "end_time":
                              $end_time = $split[1];
                              break;
                          case "speaker":
                              $speaker = $split[1];
                              break;
                          case "group":
                              $group = $split[1];
                              break;
                          case "v_address":
                              $venue = $split[1];
                              break;
                          case "objectives":
                              $objectives = $split[1];
                              break;
                          case "content":
                              $content = $split[1];
                              break;
                          case "attend":
                              $attend = $split[1];
                              break;
                          case "speaker":
                              $speaker = $split[1];
                              break;
                          case "fees":
                              $fees = $split[1];
                              break;
                  }

                  // Check content for hash breaks
                  $hashes = substr_count($content, "#");

                  if ($hashes > 0) {
                      $fragments = explode("#", $content);

                      for ($i = 0; $i <= $hashes; $i++) {

                          switch ($i) {
                                case 0:
                                      $content = $fragments[$i]."<ul>";
                                      break;
                                case $hashes:
                                      $content .= "</ul>".$fragments[$i];
                                      break;
                                default:
                                      $content .= "<li>".$fragments[$i]."</li>";
                                      break;
                          }
                      }
                  }
            }

            $row = "<table>
                          <tr>
                              <td>
                                  <table border='1' align='center'>
                                          <tr>
                                              <td>
                                                  <span class='str lrg'>PROFESSIONAL DEVELOPMENT COURSES INTRODUCTORY</span>
                                              </td>
                                          </tr>
                                  </table>
                                  <br />
                                  <table border='1'align='center'>
                                          <tr>
                                              <td>
                                                  <span class='str'>{$title}</span>
                                              </td>
                                          </tr>
                                  </table>
                                  <br />
                                  <table border='1'align='center'>
                                          <tr>
                                              <td>
                                                  <span class='str lrg'>WHO SHOULD ATTEND</span>
                                                  {$attend}
                                                  <br />
                                                  <br />
                                              </td>
                                          </tr>
                                  </table>
                                  <br />
                                  <br />
                                  <br />
                                  <br />
                                  <span class='str'>OBJECTIVES</span>
                                  <br />
                                  {$objectives}
                                  <br />
                                  <br />
                                  <br />
                                  <br />
                                  <span class='str'>COURSE PROGRAMME</span>
                                  <br />
                                  {$content}
                                  <br />
                                  <br />
                                  <br />
                                  <br />
                                  <br />
                                  <span class='str'>CPD HOURS - &#63;</span>
                                  <hr />
                              </td>
                          </tr>
                  </table>";

                  echo $row;
        }
}
$pageend = "</div></body></html>";

echo $pageend;
?>
[/code]

And here is a sample of my XML.

[code]
<?xml version="1.0"?>
<myData>
<record>
<from_date>20/02/2007</from_date>
<title>mongo</title>
<start_time>2.00pm</start_time>
<end_time>5.00pm</end_time>
<speaker>BT</speaker>
<group>ATS</group>
<v_address>home</v_address>
<objectives>The course will aim to make participants aware of pidgeons.</objectives>
<content>The course will review developments and planning points under the following headings:#moo#cow#jumpers#no more detials.</content>
<attend>everyone.</attend>
<speaker>boom town</speaker>
<fees>Full Members No Charge Non Members 80 plus VAT</fees>
</record>
<record>
<from_date>07/03/2007</from_date>
<title>har har</title>
<start_time>2.00pm</start_time>
<end_time>5.00pm</end_time>
<speaker>AGU</speaker>
<group>ATS</group>
<v_address>mars</v_address>
<objectives>The course will aim to make participants aware of pidgeons.</objectives>
<content>The course will review developments and planning points under the following headings:#moo#cow#jumpers#no more detials.</content>
<attend>everyone.</attend>
<speaker>lady penelope.</speaker>
<fees>Full Members No Charge Non Members 80 plus VAT</fees>
</record>
<record>
<from_date>15/03/2007</from_date>
<title>ja ja gabor</title>
<start_time>2.00pm</start_time>
<end_time>5.00pm</end_time>
<speaker>AGU</speaker>
<group>ATS</group>
<v_address>loony</v_address>
<objectives>The course will aim to make participants aware of pidgeons.</objectives>
<content>The course will review developments and planning points under the following headings:#moo#cow#jumpers#no more detials.</content>
<attend>everyone.</attend>
<speaker>the white rabbit.</speaker>
<fees>Full Members No Charge Non Members 80 plus VAT</fees>
</record>
</myData>
[/code]
Link to comment
https://forums.phpfreaks.com/topic/31499-solved-not-receiving-data-from-array/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.