Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как правильно сделать цикл

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Ismail
Отправлено: 29 Октября, 2012 - 18:11:21
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




Здравствуйте, есть такой скрипт:

PHP:
скопировать код в буфер обмена
  1. <?
  2.        
  3.         $db = mysql_connect("localhost",имя","пароль");
  4.         mysql_select_db("база",$db);
  5.  
  6.         $result_spisok = mysql_query("SELECT name FROM ps_product_lang WHERE id_lang='2' ORDER BY id_product LIMIT 15",$db);
  7.         $result_spisok1 = mysql_query("SELECT description_short FROM ps_product_lang ORDER BY id_product LIMIT 15",$db);
  8.         $row1 = mysql_fetch_array($result_spisok);
  9.         $row2 = mysql_fetch_array($result_spisok1);
  10.        
  11.         header('Content-Type: text/xml');
  12.        
  13.         print '<?xml version="1.0"?>' . "\n";
  14.         print "<CATALOG>\n";
  15.        
  16.         $shows = array_fill(0, 15, array('NAME' => $row1['name'],'DESCRIPTION' => $row2['description_short']));
  17.        
  18.         foreach ($shows as $show) {
  19.        
  20.         print " <PRODUCT>\n";
  21.         foreach($show as $tag => $data) {
  22.        
  23.         print " <$tag>" . htmlspecialchars($data) . "</$tag>\n";
  24.        
  25.         }
  26.        
  27.         print " </PRODUCT>\n";
  28.        
  29.         }
  30.        
  31.         print "</CATALOG>\n";
  32.  
  33. ?>



По задумке, после запроса в базу, должны выдаваться значения последних 15 значений из соответствующих полей в виде XML. У меня выдается 15 одинаковых значений. Я так понял, нужно как то запихать в цикл строку:

PHP:
скопировать код в буфер обмена
  1. array('NAME' => $row1['name'],'DESCRIPTION' => $row2['description_short'])


Подскажите, как правильно сделать? Новичок в этом совсем.
 
 Top
ingram
Отправлено: 29 Октября, 2012 - 19:09:46
Post Id



Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Июнь 2010  


Помог: 3 раз(а)




Какую то фигню написал

приверно так надо сделать:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $db = mysql_connect("localhost",имя","пароль");
  3. mysql_select_db("база",$db);
  4.  
  5. $result_spisok = mysql_query("SELECT name FROM ps_product_lang WHERE id_lang='2' ORDER BY id_product LIMIT 15",$db);
  6. $result_spisok1 = mysql_query("SELECT description_short FROM ps_product_lang ORDER BY id_product LIMIT 15",$db);
  7. print '<?xml version="1.0"?>' . "\n";
  8. print "<CATALOG>\n";
  9.  
  10. while($row1 = mysql_fetch_assoc($result_spisok) AND $row2 = mysql_fetch_assoc($result_spisok1)) {
  11.         print " <PRODUCT>\n";
  12.         // Тут выводишь то что тебе нужно      
  13.         print " </PRODUCT>\n";
  14. }
  15.  
  16. print "</CATALOG>\n";
  17.  

(Отредактировано автором: 29 Октября, 2012 - 19:10:39)

 
 Top
Ismail
Отправлено: 29 Октября, 2012 - 19:14:30
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




мне надо передать заголовок файла, делаю это строкой:

header('Content-Type: text/xml');

при использовании WHILE появляется ошибка, удаляю заголовок - ошибка исчезает. Поэтому и придумал это белиберду, что выше у меня...

Может и с WHILE получится сделать, а я не так делал?

Подскажите.
 
 Top
ingram
Отправлено: 29 Октября, 2012 - 19:18:25
Post Id



Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Июнь 2010  


Помог: 3 раз(а)




Кусочек отсюда http://www.php.su/functions/?header
Цитата:
Помните, что header() обязана вызываться до отправки любого вывода: нормальными ли тэгами HTML, пустыми строками в файле или из PHP. Очень частой ошибкой является чтение кода функциями include() или require(), или другой функцией доступа к файлу, и наличие пробелов или пустых строк, которые выводятся до вызова header(). Та же проблема возникает при использовании едингого PHP/HTML-файла.


While тут не при чем, вы где то делаете вывод до header()
 
 Top
Ismail
Отправлено: 29 Октября, 2012 - 19:21:27
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




... но где?

PHP:
скопировать код в буфер обмена
  1. <?
  2.  
  3.         // Читаем базу
  4.    
  5.         $db = mysql_connect("localhost","имя","пароль);
  6.         mysql_select_db("база",$db);
  7.  
  8.         $result_spisok = mysql_query("SELECT name,description_short FROM ps_product_lang WHERE id_lang='6' ORDER BY id_product",$db);
  9.         $result_spisok1 = mysql_query("SELECT quantity,price FROM ps_product ORDER BY id_product",$db);
  10.  
  11.         header('Content-Type: text/xml');
  12.         echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<CATALOG>\n";
  13.        
  14.        
  15.         while ($row1 = mysql_fetch_array($result_spisok) and ($row2 = mysql_fetch_array($result_spisok1))) {
  16.                
  17.         echo "<PRODUCT>\n";
  18.         echo "<NAME>" . $row1['name'] . "</NAME>\n";
  19.         echo "<DESCRIPTION>" . $row1['description_short'] . "</DESCRIPTION>\n";
  20.         echo "<PRICE>" . $row2['quantity'] . "</PRICE>\n";
  21.         echo "<QUANTITY>" . $row2['price'] . "</QUANTITY>\n";
  22.         echo "</PRODUCT>\n";
  23.        
  24.         }
  25.        
  26.         echo "</CATALOG>\n";           
  27. ?>
 
 Top
ingram
Отправлено: 29 Октября, 2012 - 19:30:23
Post Id



Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Июнь 2010  


Помог: 3 раз(а)




Ты этот файл напрямую запускаешь? Или подключаешь куда то?

Вот таким макаром у меня хедер отрабатывает:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. // Читаем базу
  4.  
  5. //$db = mysql_connect("localhost","имя","пароль");
  6. //mysql_select_db("база",$db);
  7.  
  8. //$result_spisok = mysql_query("SELECT name,description_short FROM ps_product_lang WHERE id_lang='6' ORDER BY id_product",$db);
  9. //$result_spisok1 = mysql_query("SELECT quantity,price FROM ps_product ORDER BY id_product",$db);
  10.  
  11. header('Content-Type: text/xml');
  12. echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<CATALOG>\n";
  13.  
  14. /*while ($row1 = mysql_fetch_array($result_spisok) and ($row2 = mysql_fetch_array($result_spisok1))) {
  15. echo "<PRODUCT>\n";
  16. echo "<NAME>" . $row1['name'] . "</NAME>\n";
  17. echo "<DESCRIPTION>" . $row1['description_short'] . "</DESCRIPTION>\n";
  18. echo "<PRICE>" . $row2['quantity'] . "</PRICE>\n";
  19. echo "<QUANTITY>" . $row2['price'] . "</QUANTITY>\n";
  20. echo "</PRODUCT>\n";
  21. }*/
  22.  
  23. echo "</CATALOG>\n";
  24. ?>

(Добавление)
И еще, перед открытием тега "<?php" не должно быть ни пробелов, ни чего либо еще.
 
 Top
Ismail
Отправлено: 29 Октября, 2012 - 19:50:28
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




Запускаю напрямую, вбиваю прямой адрес до файла.

Закомментировал строки для проверки? Проверил,выдало:

PHP:
скопировать код в буфер обмена
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <CATALOG>
  3. </CATALOG>


Как и должно было..

Расскоментировал, выдал:

PHP:
скопировать код в буфер обмена
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <CATALOG>
  3. </CATALOG>


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

Спасибо большое, пойду разбираться дальше! )
 
 Top
ingram
Отправлено: 29 Октября, 2012 - 19:52:08
Post Id



Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Июнь 2010  


Помог: 3 раз(а)




Поставь header('Content-Type: text/xml'); в начало скрипта.
 
 Top
Ismail
Отправлено: 29 Октября, 2012 - 19:58:00
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




Сделал. В исходном коде страницы:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <CATALOG>
  4. <PRODUCT>
  5. <NAME>iPod Nano</NAME>
  6. <DESCRIPTION><p>New design. New features. Now in 8GB and 16GB. iPod nano rocks like never before.</p></DESCRIPTION>
  7. </PRODUCT>
  8. <PRODUCT>
  9. <NAME>iPod shuffle</NAME>
  10. <DESCRIPTION><p>iPod shuffle, the world


А на самой странице выводит:


В общем, проблема была при выдергивании значений. Спасибо )
Прикреплено изображение (Нажмите для увеличения)
1.jpg

(Отредактировано автором: 29 Октября, 2012 - 20:23:10)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Если скрипт не работает »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB