Jacek Kowalski
2019-09-19 51eea1c5e113e25683109b3544d847ee0668d921
inwentaryzacja/make.php
@@ -1,63 +1,71 @@
<?php
$title = 'Inwentaryzacja - rozpoczęcie';
include('design/top.php');
include('../includes/config.php');
include('../includes/db2.php');
$fields = array('tytul', 'autor', 'miejsce', 'rok', 'wydawnictwo');
require('../includes/config.php');
require('../includes/PDOO.php');
$data = sql::query('SELECT * FROM `ksiazki` WHERE `wycofana`=\'0\' ORDER BY `regal` ASC, `polka` ASC, `rzad` ASC');
try {
   $fields = array('tytul', 'autor', 'miejsce', 'rok', 'wydawnictwo');
$fp = fopen('list.xml', 'w');
fwrite($fp, '<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE inwentaryzacja [
<!ENTITY % quot "&#34;">
<!ENTITY % amp "&#38;">
<!ENTITY % lt "&#60;">
<!ENTITY % gt "&#62;">
<!ELEMENT inwentaryzacja (lokalizacja)*>
<!ELEMENT lokalizacja (ksiazka)*>
<!ATTLIST lokalizacja
   id   ID   #IMPLIED
   regal   CDATA   #IMPLIED
   polka   CDATA   #IMPLIED
   rzad   CDATA   #IMPLIED>
<!ELEMENT ksiazka (tytul | autor | miejsce | rok | wydawnictwo)*>
<!ATTLIST ksiazka
   id   ID   #IMPLIED
   status   CDATA   #IMPLIED>
<!ELEMENT tytul (#PCDATA)>
<!ELEMENT autor (#PCDATA)>
<!ELEMENT miejsce (#PCDATA)>
<!ELEMENT rok (#PCDATA)>
<!ELEMENT wydawnictwo (#PCDATA)>
]>
<inwentaryzacja>
');
   $PDO = PDOO::Singleton();
$lastplace = NULL;
   $st = $PDO->query('SELECT * FROM `ksiazki` WHERE `wycofana`=\'0\' ORDER BY `regal` ASC, `polka` ASC, `rzad` ASC');
while( ($entry = sql::fetchone($data)) !== FALSE ) {
   if($lastplace != $entry['regal'].'/'.$entry['polka'].'/'.$entry['rzad']) {
      if($lastplace !== NULL) {
         fwrite($fp, '</lokalizacja>'."\n");
   $fp = fopen('list.xml', 'w');
   if($fp === FALSE) {
      throw new Exception('Otwarcie pliku inwentaryzacja/list.xml nie powiodło się.');
   }
   fwrite($fp, '<?xml version="1.0" encoding="utf-8" ?>
   <!DOCTYPE inwentaryzacja [
   <!ENTITY % quot "&#34;">
   <!ENTITY % amp "&#38;">
   <!ENTITY % lt "&#60;">
   <!ENTITY % gt "&#62;">
   <!ELEMENT inwentaryzacja (lokalizacja)*>
   <!ELEMENT lokalizacja (ksiazka)*>
   <!ATTLIST lokalizacja
      id   ID   #IMPLIED
      regal   CDATA   #IMPLIED
      polka   CDATA   #IMPLIED
      rzad   CDATA   #IMPLIED>
   <!ELEMENT ksiazka (tytul | autor | miejsce | rok | wydawnictwo)*>
   <!ATTLIST ksiazka
      id   ID   #IMPLIED
      status   CDATA   #IMPLIED>
   <!ELEMENT tytul (#PCDATA)>
   <!ELEMENT autor (#PCDATA)>
   <!ELEMENT miejsce (#PCDATA)>
   <!ELEMENT rok (#PCDATA)>
   <!ELEMENT wydawnictwo (#PCDATA)>
   ]>
   <inwentaryzacja>
   ');
   $lastplace = NULL;
   while($entry = $st->fetch()) {
      if($lastplace != $entry['regal'].'/'.$entry['polka'].'/'.$entry['rzad']) {
         if($lastplace !== NULL) {
            fwrite($fp, '</lokalizacja>'."\n");
         }
         fwrite($fp, '<lokalizacja id="m_'.$entry['regal'].'_'.$entry['polka'].'_'.$entry['rzad'].'" regal="'.$entry['regal'].'" polka="'.$entry['polka'].'" rzad="'.$entry['rzad'].'">'."\n");
         $lastplace = $entry['regal'].'/'.$entry['polka'].'/'.$entry['rzad'];
      }
      fwrite($fp, '<lokalizacja id="m_'.$entry['regal'].'_'.$entry['polka'].'_'.$entry['rzad'].'" regal="'.$entry['regal'].'" polka="'.$entry['polka'].'" rzad="'.$entry['rzad'].'">'."\n");
      $lastplace = $entry['regal'].'/'.$entry['polka'].'/'.$entry['rzad'];
      fwrite($fp, '<ksiazka id="k'.$entry['id'].'">'."\n");
      foreach($fields as $key) {
         fwrite($fp, '<'.$key.'>'.htmlspecialchars($entry[$key]).'</'.$key.'>'."\n");
      }
      fwrite($fp, '</ksiazka>'."\n");
   }
   fwrite($fp, '<ksiazka id="k'.$entry['id'].'">'."\n");
   foreach($fields as $key) {
      fwrite($fp, '<'.$key.'>'.htmlspecialchars($entry[$key]).'</'.$key.'>'."\n");
   if($lastplace !== NULL) {
      fwrite($fp, '</lokalizacja>'."\n");
   }
   fwrite($fp, '</ksiazka>'."\n");
}
if($lastplace !== NULL) {
   fwrite($fp, '</lokalizacja>'."\n");
}
fwrite($fp, '</inwentaryzacja>'."\n");
   fwrite($fp, '</inwentaryzacja>'."\n");
?>
@@ -70,5 +78,10 @@
</form>
<?php
}
catch(Exception $e) {
   echo '<p style="color:red">Wystąpił błąd: '.$e->getMessage().'</p>';
}
include('design/bottom.php');
?>