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 :: Голосование с помощью GD Library

 PHP.SU

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


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

> Описание: Получилось не то что задумывалось:)
Rus88
Отправлено: 17 Марта, 2010 - 12:46:25
Post Id



Гость


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


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

[+]


Всем привет, Подскажите где ошибка, получилось не то что задумалось, хотя ошибок никаких не выдает, но непонятная картина стоит, заранее благодаренУлыбка

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <html>
  3. <head>
  4. <title>Polling</title>
  5. <head>
  6. <body>
  7. <h1>Выбор лучшего программиста</h1>
  8. <form action="showpoll.php" method="post">
  9. <input type="radio" name="vote" value="Rustam">Rustam<br>
  10. <input type="radio" name="vote" value="Bill Geits">Bill Geits<br>
  11. <input type="radio" name="vote" value="Dmitriy Chernov">Dmitriy Chernov<br>
  12. <input type="submit" value="Показать результаты">
  13. </form>
  14. </body>
  15. </html>
  16.  


PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if(isset($_REQUEST['vote'])){$vote = $_REQUEST['vote'];}
  4. //Часть 1
  5. if(!$db_conn = @mysql_connect(localhost,root,root))
  6. {
  7. echo "Could not connect to db<br>";
  8. }
  9.  
  10. @mysql_select_db("poll");
  11. if(!empty($vote))
  12. {
  13. $vote = addslashes($vote);
  14. $query = "update poll_results set num_votes = num_votes + 1 where candidate = '$vote'";
  15. if(!($result = @mysql_query($query)))
  16. {
  17. echo "Could not connect to db";
  18. }
  19. }
  20. $query = "select * from poll_results";
  21. if(!($result = mysql_query($query)))
  22. {
  23. echo "Could not connect to db";
  24. }
  25. $num_votes = mysql_num_rows($result);
  26. $total_votes = 0;
  27. while($row = mysql_fetch_object($result))
  28. {
  29. $total_votes += $row->num_votes;
  30. }
  31. mysql_data_seek($result,0);
  32.  
  33. //Часть 2
  34. $width = 500;
  35. $left_margin = 50;
  36. $right_margin = 50;
  37. $bar_height = 40;
  38. $bar_spacing = $bar_height/2;
  39. $font = "aricyr.ttf";
  40. $title_size = 16;
  41. $main_size = 12;
  42. $small_size = 12;
  43. $text_indent = 10;
  44. $x = $left_margin + 60;
  45. $y = 50;
  46. $bar_unit = ($width -($x+$right_margin))/100;
  47. $heigth = $num_candidates *($bar_height +$bar_spacing)+50;
  48.  
  49. //Часть 3
  50. $image = ImageCreate($width,$heigth);
  51. $white = ImageColorAllocate($image,255,255,255);
  52. $blue = ImageColorAllocate($image,0,64,128);
  53. $black = ImageColorAllocate($image,0,0,0);
  54. $pink = ImageColorAllocate($image,255,78,243);
  55. $text_color = $black;
  56. $percent_color = $black;
  57. $bg_color = $white;
  58. $line_color = $black;
  59. $bar_color = $blue;
  60. $number_color = $pink;
  61. imagefilledrectangle($image,0,0,$width,$heigth,$bg_color);
  62. imagerectangle($image,0,0,$width-1,$heigth-1,$line_color);
  63. $title = "Poll Results";
  64. $title_dimensions = imagettfbbox($font_size,0,$font,$title);
  65. $title_length = $title_dimensions[2] - $title_dimensions[0];
  66. $title_heigth = abs($title_dimensions[7] - $title_dimensions[1]);
  67. $title_above_line = abs($title_dimensions[7]);
  68. $title_x = ($width - $title_length)/2;
  69. $title_y = ($y - $title_heigth)/2 + $title_above_line;
  70. imagettftext($image,$title_size,0,$title_x,$title_y,$text_color,$font,$title);
  71. imageline($image,$x,$y-5,$x,$heigth-15,$line_color);
  72.  
  73. //часть 4
  74. while($row = mysql_fetch_object($result))
  75. {
  76. if($total_votes > 0)
  77. $percent = intval(round($row->num_votes/$total_votes) * 100);
  78. else
  79. $percent = 0;
  80. imagettftext($image,$main_size,0,$width-30,$y+($bar_height/2),$percent_color,$font,$percent."%");
  81. if($total_votes > 0)
  82. $right_value = intval(round($row->num_votes/$total_votes) * 100);
  83. else
  84. $right_value = 0;
  85. $bar_length = $x + ($right_value * $bar_unit);
  86. imagefilledrectangle($image,$x,$y-2,$bar_length,$y+$bar_height,$bar_color);
  87. imagettftext($image,$main_size,0,$text_indent,$y+($bar_height/2),$text_color,$font,"$row->candidate");
  88. imagerectangle($image,$bar_length+1,$y-2,($x+(100 * $bar_unit)),$y+$bar_height,$line_color);
  89. imagettftext($image,$small_size,0,$x+(100*$bar_unit)-50,$y+($bar_height/2),$number_color,$font,$row->num_votes."/".$total_votes);
  90. $y=$y+($bar_height+$bar_spacing);
  91. }
  92. Header("Content-type: Image/Png");
  93. ImagePng($image);
  94. ImageDestroy($image);
  95.  
  96. ?>
  97.  
 
 Top
Champion Супермодератор
Отправлено: 17 Марта, 2010 - 13:00:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




Во-первых, не понятно о чем речь и какой сымсл несет заголовок.
Во-вторых, http://phpfaq[dot]ru/debug и основы синтаксиса php (я про вызовы mysql_connect) уже пора выучить.
 
 Top
Rus88
Отправлено: 17 Марта, 2010 - 14:08:35
Post Id



Гость


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


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

[+]


Champion пишет:
Во-первых, не понятно о чем речь и какой сымсл несет заголовок.
Во-вторых, http://phpfaq[dot]ru/debug и основы синтаксиса php (я про вызовы mysql_connect) уже пора выучить.



да нагрешил, исправил 3 ошибки теперь не могу понять, где это исправить вот сама ошибка:

CODE (html):
скопировать код в буфер обмена
  1.  
  2. Warning: mysql_data_seek() [function.mysql-data-seek]: Offset 0 is invalid for MySQL result index 3 (or the query data is unbuffered) in Z:\home\localhost\www\image\showpoll.php on line 35
  3.  
  4. Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\image\showpoll.php:35) in Z:\home\localhost\www\image\showpoll.php on line 96
  5. ‰PNG  &#65533;&#65533;&#65533; IHDR&#65533;&#65533;&#65533;&#65533;&#65533;2&#65533;&#65533;&#65533;X>4¤&#65533;&#65533;&#65533;!PLTEяяя&#65533;&#65533;&#65533;&#65533;яNу___ЯЯЯ???џџџїїїеЬP&#65533;&#65533;IDATxњнљБjѓ@†‡cф)К°F›§X„4ф¤4ф&=ґф&’6н-xлMzкQzйkv4ґсўиTєы;окя№оМ *+ё&#65533;E5Си JЈ«(Ќ®ў4єЉТи*JЈ«(Ќ®ў4єЉbAџ в*<5эN1qЫРWB4јЈвJ,ио~џ\ќ%:ЕnDxЮWОWbA—&#65533;¦sj”иѓ`УРwКаЁёъкичІЎпяCч>сЅЋNVвҐщ‘u&#65533;'r"/¬Dј пЉqЦ ±х75фЇлќ ¦Ш&ІDЏЭ(^ЅЉЖ3хкЉ Эpбг&#65533;уЛ*ъf6ҐЂ ЈgЬё,С©AOHђоЉ)Г?ыWђd`{Хв†Ч0_РЉЯL—0 «и< пЉ«®УZ¦№,АЛвё&#65533;SЄqсБДU фXЬ1ёb[лЗпWxУгдKJsё© [ :M'кЧ#z}Ц)цµ,ЃЅs*и&#65533;ЯюyЙпЫ#z}­SМЕZLS&#65533;@є2GџЅ5–ьѕ]1ўџexр#ЛЈdЭ/т›BЙ-ђ:†yЭЪ#є!цїлъ‚Х«&nѓ%ДО.‘ґ‡wўШyЖlpWЊиз»9ГЈЊ&ўьЅЩYю:_л¶ї `ГK]Я®фыє‚кЊЮqШ€¤СЫ«г°IЈ·WЗa#’FoЇЋГF$ЌЮ^‡ЌHЅЅ:‘ф^E)Ќю7џбЏA?ЄiҐ»S‚?[&#65533;&#65533;&#65533;&#65533;IEND®B`‚
 
 Top
Champion Супермодератор
Отправлено: 17 Марта, 2010 - 14:14:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




Rus88 пишет:
Offset 0 is invalid for MySQL result index 3
Тут всё написано. А почему это происходит, это как всегда можно узнать отладкой. А ошибки, которые дальше, происходят из-за этой. Если перед посылкой заоголовков вывода не будет, то там выведется картинка
 
 Top
RomAndry Администратор
Отправлено: 17 Марта, 2010 - 14:32:56
Post Id



Частый посетитель


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


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




проще говоря, уже картинку почти видно - исправь ошибки и получишь результат. =)
 
My status
 Top
JustUserR
Отправлено: 17 Марта, 2010 - 17:30:35
Post Id



Активный участник


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


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




Rus88 Добавьте буферазцию ob_start и погасите ошибки - после чего увидите некое подобие вашей картинки (Правда без нужных данных потому что SQL-запрос не сработал как нужно Улыбка - но вы уже можете пробовать править ваш код и смотреть как от этого имзенится картинка


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Rus88
Отправлено: 19 Марта, 2010 - 20:43:33
Post Id



Гость


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


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

[+]


Champion пишет:
Rus88 пишет:
Offset 0 is invalid for MySQL result index 3
Тут всё написано. А почему это происходит, это как всегда можно узнать отладкой. А ошибки, которые дальше, происходят из-за этой. Если перед посылкой заоголовков вывода не будет, то там выведется картинка



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


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB