Автор Тема: Как да дебъгна това?  (Прочетена 4833 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

KarBorAtoR

  • Full Member
  • ***
  • Благодарности
  • -Казани: 3
  • -Получени: 1
  • Публикации: 182
Как да дебъгна това?
« -: 02 Януари 2011, 15:32:42 »
Здравейте  :) !
Значи,... прецаках си базата данни и затова я направих наново (mcf),но щом се опитам да заредя форума в index.php ми искарва ето тази грешка ...Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\mcf\index.php on line 13.
Въпросът ми е как да дебъгна в този случай,защото пробвах да пиша echo mysql_error(); и print_r(); но не ми се показва нищо.. .

Благодаря !

federer_11

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 0
  • -Получени: 1
  • Публикации: 931
  • ULTRAS LEVSKI
Re: Как да дебъгна това?
« Отговор #1 -: 02 Януари 2011, 16:10:46 »
На foreach първият параметър е празна/грешна променлива.
(x)HTML, CSS, PHP, MySQL, XML, WML, JavaScript (jQuery)

KarBorAtoR

  • Full Member
  • ***
  • Благодарности
  • -Казани: 3
  • -Получени: 1
  • Публикации: 182
Re: Как да дебъгна това?
« Отговор #2 -: 02 Януари 2011, 16:53:02 »
Хм,ами отново рагледах кода ама не виждам защо така показва,че променливата несъществува или е грешна във foreach от index.php.Ето всъщност какво имам на 11 ред
Ако някой има идея как да дебъгна нека сподели  :)


Код: PHP
  1. foreach ($groups as $v)
  2. {
  3.     $rs=run_q('SELECT name,cat_id,`desc` FROM cat WHERE active=1 AND group_cat_id='.$v['group_cat_id']);
  4.     echo '<div class="group_cat"><p>'.$v['name'].'</p>';
  5.     while ($row=mysql_fetch_assoc($rs))
  6.     {
  7.         echo '<div class="cat"><a href="topic.php?id='.$row['cat_id'].'">'.$row['name'].'</a><p>'.$row['desc'].'</p></div>';
  8.     }
  9.     echo '</div>';
  10. }
« Последна редакция: 14 Април 2015, 23:24:20 от Avalanche »

echeveria

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 72
  • -Получени: 93
  • Публикации: 4836
Re: Как да дебъгна това?
« Отговор #3 -: 02 Януари 2011, 17:10:10 »
.$v['name'] ако е поле от таблицата няма как да стане :)
Днес Печатарите използват парите за да купят мозъците на онези, които ги превъзхождат, за да ги накарат да им служат и така да се превърнат в жертва на посредствеността. Това ли е причината, поради която ги наричате благо?
<iframe src="http://www.corbindavenport.com/ubuntu/widget.html" style="width:

KarBorAtoR

  • Full Member
  • ***
  • Благодарности
  • -Казани: 3
  • -Получени: 1
  • Публикации: 182
Re: Как да дебъгна това?
« Отговор #4 -: 02 Януари 2011, 17:36:18 »
Всъщност наистина имам name във group_cat както и в cat.Тогава какво трябва да направя зада дебъгна  ????

echeveria

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 72
  • -Получени: 93
  • Публикации: 4836
Re: Как да дебъгна това?
« Отговор #5 -: 02 Януари 2011, 17:39:01 »
.$v['name'] махни ['name'] !
Днес Печатарите използват парите за да купят мозъците на онези, които ги превъзхождат, за да ги накарат да им служат и така да се превърнат в жертва на посредствеността. Това ли е причината, поради която ги наричате благо?
<iframe src="http://www.corbindavenport.com/ubuntu/widget.html" style="width:

KarBorAtoR

  • Full Member
  • ***
  • Благодарности
  • -Казани: 3
  • -Получени: 1
  • Публикации: 182
Re: Как да дебъгна това?
« Отговор #6 -: 02 Януари 2011, 17:52:17 »
Махнах го но отново ми искарва тази грешка ..
Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\mcf\index.php on line 11 :(

echeveria

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 72
  • -Получени: 93
  • Публикации: 4836
Re: Как да дебъгна това?
« Отговор #7 -: 02 Януари 2011, 17:57:52 »
$groups какво е това. Самия код не изглежда нормален. Тази променлива трябва да е масив а най вероятно не е!
Днес Печатарите използват парите за да купят мозъците на онези, които ги превъзхождат, за да ги накарат да им служат и така да се превърнат в жертва на посредствеността. Това ли е причината, поради която ги наричате благо?
<iframe src="http://www.corbindavenport.com/ubuntu/widget.html" style="width:

KarBorAtoR

  • Full Member
  • ***
  • Благодарности
  • -Казани: 3
  • -Получени: 1
  • Публикации: 182
Re: Как да дебъгна това?
« Отговор #8 -: 03 Януари 2011, 00:42:19 »
Всъщност наистина трябва да е масив.... зада не обяснявам направо ще покажа кода ако някой забележи нередности от който можеби ми искарва тази грешка... нека сподели  :).Пак искам да кажа че си бях прецакал базата с данни затова я няправих наново и след това ми излезе тази грешке... преди я нямах.

index.php



Код: PHP
  1. <?php
  2. include &#39;functions.php&#39;;
  3. my_header(&#39;Начало&#39;);
  4. db_init();
  5. $rs=run_q(&#39;SELECT name,group_cat_id FROM group_cat WHERE active=1&#39;);
  6. while ($row=mysql_fetch_assoc($rs))
  7. {
  8.     $groups[]=$row;
  9. }
  10. foreach ($groups as $v)
  11. {
  12.     $rs=run_q(&#39;SELECT name,cat_id,`desc` FROM cat WHERE active=1 AND group_cat_id=&#39;.$v&#91;&#39;group_cat_id&#39;]);
  13.    echo &#39;<div class="group_cat"><p>&#39;.$v&#91;&#39;name&#39;].&#39;</p>&#39;;
  14.    while ($row=mysql_fetch_assoc($rs))
  15.     {
  16.         echo &#39;<div class="cat"><a href="topic.php?id=&#39;.$row&#91;&#39;cat_id&#39;].&#39;">&#39;.$row&#91;&#39;name&#39;].&#39;</a><p>&#39;.$row&#91;&#39;desc&#39;].&#39;</p></div>&#39;;
  17.    }
  18.     echo &#39;</div>&#39;;
  19. }
  20.  
  21. footer();
  22. ?>
  23.  
« Последна редакция: 03 Януари 2011, 10:29:21 от echeveria »

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 190
  • Публикации: 3624
Re: Как да дебъгна това?
« Отговор #9 -: 03 Януари 2011, 05:54:47 »
Много ми хареса въпроса ти - " Как да дебъгна кода  си". Малко хора си дават сметка, че без да умееш да дебъгваш , няма как да се научиш да пишеш дори и прости приложения.
Затова призовам всички чакалчета - научетете се сами да правите логиката в приложенията си и сами да  откривате грешките в тях.
В случая при теб, проблема идва от туй, че не влизат желаните стойности от базата в масива, който мислиш че  си създал или масива не е такъв какъвто трябва да бъде  :)
1. Допускам, че "run_q" e  функция написана и извикана коректно от 'functions.php' файла.
2.Този урок аз не съм го гледал, ще напиша кода до foreach и искам да постнеш резултата.
3.Задал съм две основни дебъг логики, както и дефинирам "$groups", като празен масив в началото - (не е необходимо в случая, но в много други ситуации е препоръчително )
4. Научи се също така да коментираш кода си (за предпочитане на английски), по този начин следиш логиката и става четим за останалите.
Код: PHP
  1. [code]
  2. include &#39;functions.php&#39;;
  3. my_header(&#39;Начало&#39;);
  4. db_init();
  5. $groups = array();
  6. $rs=run_q(&#39;SELECT name,group_cat_id FROM group_cat WHERE active=1&#39;);
  7. if(!$rs) {
  8. }
  9. while ($row=mysql_fetch_assoc($rs))
  10. {
  11.     $groups=$row;
  12. }
  13. if(!is_array($groups)) {
  14.     die(&#39;$goups is not array&#39;);
  15. }
  16. foreach ($groups as $key => $value) {
  17.     echo "Key is: <strong>".$key."</strong> Value is:<strong>".$value."</strong><br />";
  18. }
« Последна редакция: 03 Януари 2011, 10:28:24 от echeveria »
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

KarBorAtoR

  • Full Member
  • ***
  • Благодарности
  • -Казани: 3
  • -Получени: 1
  • Публикации: 182
Re: Как да дебъгна това?
« Отговор #10 -: 03 Януари 2011, 12:22:06 »
Благодаря ти много  :)
В момента вече не ми искарва грешка....  :)

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 190
  • Публикации: 3624
Re: Как да дебъгна това?
« Отговор #11 -: 03 Януари 2011, 13:40:21 »
В крайна сметка, разбра ли откъде идваше грешката и защо ?
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

KarBorAtoR

  • Full Member
  • ***
  • Благодарности
  • -Казани: 3
  • -Получени: 1
  • Публикации: 182
Re: Как да дебъгна това?
« Отговор #12 -: 03 Януари 2011, 14:23:52 »
Можеби тук (не съм 100% сигорен) ...

#
while ($row=mysql_fetch_assoc($rs))
#
{
#
   $groups[]=$row;
#
}

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 190
  • Публикации: 3624
Re: Как да дебъгна това?
« Отговор #13 -: 03 Януари 2011, 15:12:29 »
Направи дебъг на "$groups" , със  и без квадратни скоби и ще разбереш каква е разликата.
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

KarBorAtoR

  • Full Member
  • ***
  • Благодарности
  • -Казани: 3
  • -Получени: 1
  • Публикации: 182
Re: Как да дебъгна това?
« Отговор #14 -: 03 Януари 2011, 15:44:08 »
 :) Точно там и се съмнявах и аз