Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Счетчик шагов в XML парсире
 
 автор: UnlikeAO   (23.06.2010 в 14:07)   письмо автору
 
 

Здравствуйте! Ниже приведен код парсера. Моя задача- распихать картинки по контейнерам <div> и каждому контейнеру присвоить уникальный id, в данном случае DragBox1 DragBox2 DragBox3......
Я сделал функцию, которая при каждом вызове, возвращает на 1 больше. function give_contener_name. Если запихнуть её в обычный цикл, то все работает, но тут не хочет.
Подскажите пожалуйста, как правельно реализовать такую нумерацию?
Заранее спасибо!


 <?
 
 
   $count_cont
=1;
     
$count_items=0;
 
  function 
give_contener_name(&$count_cont) {
   return 
$count_cont++;
   }
 
   function 
give_img_name(&$count_img) {
   return 
$count_img++;
   }
 
  function 
start_element($parser$element_name$element_attrs) {
   switch (
$element_name) {
     case 
'ITEM':
       echo 
'<div class="DragBox" id="Item';
       echo  
give_contener_name($count_cont);
       echo 
'">';
      
       break;
     case 
'IMG':
       echo 
'<div style="float:left;">';
       echo 
'<img src="'.$element_attrs['LINK'].'" class="pics">';
       break;
   }
 
 
  }
 
  function 
end_element($parser$element_name) {
   switch (
$element_name) {
     case 
'ITEM':
       echo 
'</div>';
       break;
     case 
'IMG':
       echo 
'</div>';
       break;
   }
  }
 
 
  function 
character_data($parser$data) {
   
//echo htmlentities($data);
   
echo $data;
  }
 
  
$parser xml_parser_create();
  
xml_set_element_handler($parser'start_element''end_element');
  
xml_set_character_data_handler($parser'character_data');
 
  
$fp fopen('chbooks.xml''r')
     or die (
"Cannot open keyword-data.xml!");
    
  
    
  while (
$data fread($fp4096)) {
    
   
xml_parse($parser$datafeof($fp)) or
     die(
sprintf('XML ERROR: %s at line %d',
         
xml_error_string(xml_get_error_code($parser)),
         
xml_get_current_line_number($parser)));
    
  }
 
 
  
xml_parser_free($parser); 
  
?>

  Ответить  
 
 автор: Trianon   (23.06.2010 в 14:27)   письмо автору
 
   для: UnlikeAO   (23.06.2010 в 14:07)
 

function start_element($parser, $element_name, $element_attrs) {
   switch ($element_name) {
     case 'ITEM':
       echo '<div class="DragBox" id="Item';
       echo  give_contener_name($count_cont); 


Указанное обращение выполняется к локальной (внутри функции start_element) переменной. Нестатической при том.

  Ответить  
 
 автор: UnlikeAO   (23.06.2010 в 14:33)   письмо автору
 
   для: Trianon   (23.06.2010 в 14:27)
 

Хорошо, я делаю переменную global допустим, global $count_cont;
все равно не работает! Вы можете подсказать мне решение?

  Ответить  
 
 автор: Trianon   (23.06.2010 в 14:42)   письмо автору
 
   для: UnlikeAO   (23.06.2010 в 14:33)
 

Вы внутри этой функции пишете global? И не работает? С трудом верится.

  Ответить  
 
 автор: UnlikeAO   (23.06.2010 в 14:50)   письмо автору
 
   для: Trianon   (23.06.2010 в 14:42)
 

аааа, надо внутри функции писать глобал!! А я снаружи пишу. Ну вот видите, можете же объяснять когда хотите)) Шутка. Спасибо большое! Написал global внутри, все работает. Правда не знал, никогда глоб. переменные не объявлял раньше.

  Ответить  
 
 автор: Trianon   (23.06.2010 в 16:18)   письмо автору
 
   для: UnlikeAO   (23.06.2010 в 14:50)
 

Если прочли в моем предложении каждое слово, а не только слово "локальный", то тоже смогли бы сразу

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования