Есть файл 2.php <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Лекало</title> </head> <body> <table width="100%" border="1" cellspacing="0" cellpadding="1"> <tr> <td><img src="watermark.png"></td> <td><img src="copyrs.php?v=1"></td> <td><img src="copyrs.php?v=2"></td> </tr> </table> </body> </html> и второй файл copyrs.php <?php $v=$v?$v:1; $imold=imagecreatefrompng("watermark.png"); $size=getimagesize("watermark.png"); $w=$size[0]; $h=$size[1]; if ($v==1) { $nw=$w*2; $nh=$h; } else { $nw=$w; $nh=$h*2; } $image=imagecreate($nw, $nh); $floodColor=imagecolorallocate($image,0,0,112); imagefilledrectangle($image,0,0,$width-1,$height-1,$floodColor); imagecopyresized($image,$imold,0,0,0,0,$nw,$nh,$w,$h); header("Conent-type: image/png"); imagepng($image); ?> не выводит изображение
Notice: Undefined variable: v in z:\home\localhost\www\pattern\copyrs.php on line 2 [ убрать подсказку | никогда больше не показывать ] Это предупреждение, вероятнее всего, возникает вследствие высокого уровня контроля ошибок в PHP, по умолчанию установленного в Денвере (E_ALL). Такой режим вывода ошибок является рекомендуемым и сильно помогает при отладке скриптов. Однако множество готовых скриптов требуют более низкого уровня ошибок. Вы можете установить более слабый контроль ошибок одним из следующих способов: * Впишите в скрипты строчку: Error_Reporting(E_ALL & ~E_NOTICE); Этот способ особенно удобен, если в скрипте есть один файл (конфигурационный), который подключается всеми остальными. * Рекомендуемый способ. Создайте в директории со скриптом файл .htaccess следующего содержания: php_value error_reporting 7 * Исправьте в /usr/local/php/php.ini значение error_reporting на E_ALL & ~E_NOTICE. Этот способ не является рекомендуемым и может привести к серьезным неудобствам при отладке! [Денвер: показать возможную причину ошибки] Notice: Undefined variable: width in z:\home\localhost\www\pattern\copyrs.php on line 18 Notice: Undefined variable: height in z:\home\localhost\www\pattern\copyrs.php on line 18 Warning: Cannot modify header information - headers already sent by (output started at z:\home\localhost\www\pattern\copyrs.php:2) in z:\home\localhost\www\pattern\copyrs.php on line 20
незивестная переменная v в строке 2. незивестная переменная width в строке 18. незивестная переменная height в строке 18. строка намбер ту. PHP: $v=$v?$v:1; заменить на : PHP: $v = $_GET['v']; $v=$v?$v:1; это как минимум. далее.. строка намбер 18... PHP: imagefilledrectangle($image,0,0,[b][color=red]$width[/color][/b]-1,[b][color=red]$height[/color][/b]-1,$floodColor); откуда взялись эти переменные ? строчка номер 20 по идее не нужна.
С тем кодом я разобрался, прочитал эту статью http://php5.ru/articles/image вот исходник: <?php define('GRAPH_WIDTH', 400); // ширина картинки define('GRAPH_HEIGHT', 300); // высота картинки define('GRAPH_OFFSET_TOP', 40); // отступ сверху define('GRAPH_OFFSET_LEFT', 40); // отступ слева define('GRAPH_OFFSET_RIGHT', 5); // отстут справа define('GRAPH_OFFSET_BOTTOM', 30); // отступ снизу $colors = array(0xFF0000,0x00FF00,0x0000FF, // цвета столбцов 0xFFFF00,0x00FFFF,0xFF00FF); require('data.php'); // Вот и понадобился data.php // Считаем ширину столбцов $col_width = (GRAPH_WIDTH - GRAPH_OFFSET_LEFT - GRAPH_OFFSET_RIGHT) / count($Data); // Считаем высоту столбца, соответствующего максимальному значению $col_maxheight = (GRAPH_HEIGHT - GRAPH_OFFSET_TOP - GRAPH_OFFSET_BOTTOM); // Ищем максимальное значение в массиве, соответствующее столбцу максимальной высоты $max_value = max($Data); $image = imagecreatetruecolor(GRAPH_WIDTH,GRAPH_HEIGHT) // создаем изображение... or die('Cannot create image'); // ...или прерываем работу скрипта в случае ошибки imagefill($image, 0, 0, 0xFFFFFF); // белый фон // рисуем столбцы $x = GRAPH_OFFSET_LEFT; $y = GRAPH_OFFSET_TOP + $col_maxheight; $i = 0; foreach($Data as $value) { imagefilledrectangle( // рисуем сплошной прямоугольник $image, $x, $y - round($value*$col_maxheight/$max_value), $x + $col_width - 1, $y, $colors[$i++%count($colors)] ); $x += $col_width; } // рисуем координатную ось imageline($image, GRAPH_OFFSET_LEFT - 5, GRAPH_OFFSET_TOP, GRAPH_OFFSET_LEFT - 5, $y, 0xCCCCCC); for($value=0; $value<=$max_value; $value++) { imageline($image, GRAPH_OFFSET_LEFT - 7, $Y = $y - round($value*$col_maxheight/$max_value), GRAPH_OFFSET_LEFT - 5, $Y, 0xCCCCCC); imagestring($image, 1, GRAPH_OFFSET_LEFT / 2, $Y - 4, $value, 0x000000); } // Устанавливаем тип документа - "изображение в формате PNG"... header('Content-type: image/png'); // ...И, наконец, выведем сгенерированную картинку в формате PNG: imagepng($image); imagedestroy($image); // освобождаем память, выделенную для изображения ?> вот я хотел залить данные из базы $rs=mysql_query("select name, value from graphic"); while ($data=mysql_fetch_array($rs)) { imagefilledrectangle( // рисуем сплошной прямоугольник $image, $x, $y - round($data["value"]*$col_maxheight/$max_value), $x + $col_width - 1, $y, $colors[$i++%count($colors)] ); $x += $col_width; } вместо обычного массива foreach($Data as $value), что тут не так?
udodirc Потрудитесь оформлять код с помощью соответствующих bb-кодов. Иначе быть вашей теме в разделе для блондинок.
Хорошо, буду краток, вот исходник data.php, он подключается к скрипту, который генерирует изображение $Data = array( 'Коля' => 16, 'Петя' => 14, 'Федя' => 11, 'Маша' => 17, 'Ипполит' => 8 ); вместо жестко забитого массива я хочу вставить данные из базы вот так методом: $rs=mysql_query("select name, value from graphic"); while ($data2=mysql_fetch_array($rs)) { $Data3[$data2["name"]] = $data2["value"]; } print_r($Data3)."<br>"; это все работает, но когда я подключаю data.php к скрипту, который генерирует изображение он мне пишет ошибку, то есть с жестко забитым массивом работает нормально, а вот с базой данных нет. Скрипт полностью описан здесь: http://www.php5.ru/articles/image, оттуда взят пример с жестким массивом