За последние 24 часа нас посетили 19676 программистов и 1656 роботов. Сейчас ищут 1464 программиста ...

Не работает скрипт

Тема в разделе "Вопросы от блондинок", создана пользователем udodirc, 29 апр 2008.

  1. udodirc

    udodirc Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    111
    Симпатии:
    0
    Есть файл 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);

    ?>
    не выводит изображение
     
  2. +Sten+

    +Sten+ Активный пользователь

    С нами с:
    27 авг 2007
    Сообщения:
    978
    Симпатии:
    0
    Запусти напрямую картинку и смотри ошибки.
     
  3. udodirc

    udodirc Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    111
    Симпатии:
    0
    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
     
  4. udodirc

    udodirc Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    111
    Симпатии:
    0
    Первый раз работа.с графикой, кто нибудь скиньте рабочий исходник допустим графиков
     
  5. neyr00n

    neyr00n Активный пользователь

    С нами с:
    29 ноя 2007
    Сообщения:
    106
    Симпатии:
    0
    незивестная переменная v в строке 2.
    незивестная переменная width в строке 18.
    незивестная переменная height в строке 18.

    строка намбер ту.
    PHP:
    1. $v=$v?$v:1;
    заменить на :

    PHP:
    1.  
    2. $v = $_GET['v'];
    3. $v=$v?$v:1;
    это как минимум.


    далее.. строка намбер 18...

    PHP:
    1. imagefilledrectangle($image,0,0,[b][color=red]$width[/color][/b]-1,[b][color=red]$height[/color][/b]-1,$floodColor);
    откуда взялись эти переменные ?

    строчка номер 20 по идее не нужна.
     
  6. udodirc

    udodirc Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    111
    Симпатии:
    0
    С тем кодом я разобрался, прочитал эту статью 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), что тут не так?
     
  7. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    udodirc
    Потрудитесь оформлять код с помощью соответствующих bb-кодов. Иначе быть вашей теме в разделе для блондинок.
     
  8. udodirc

    udodirc Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    111
    Симпатии:
    0
    Хорошо, буду краток,
    вот исходник 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, оттуда взят пример с жестким массивом