|
|
|
| Что-то никак не соображу приличного решения.
Есть у меня HTML-файл, в котором есть картинка (<img>). Картинка на самом деле не картинка, а php-скрипт, строящий график. Чтобы этот график построить, мне надо знать кучу параметров. В основной файл я их передаю GET-ом, а вот дальше надо их отдать скрипту-картинке. И тут затык. Заново формировать строку GET-параметров? Так строка будет километровая. Через сессию не пойдёт, потому что у пользователя может быть одновременно открыто несколько таких страниц, отличающихся только GET-параметрами. Лезет в голову всякая экзотика, но наверняка же можно как-то грамотно сделать. Как? | |
|
|
|
|
|
|
|
для: Киналь
(05.04.2012 в 17:19)
| | А подключить в основном скрипте "скрипт-картинку" (или вообще поместить этот код в основной скрипт) почему нельзя? | |
|
|
|
|
|
|
|
для: confirm
(05.04.2012 в 17:30)
| |
<html>
<body>
В текущем квартале мы добились существенных успехов. Вот основные показатели:
<img src="graph.php">
Спасибо за внимание!
</body>
</html>
|
Файл graph.php генерирует png-изображение и отдаёт его в выходной поток с соответствующим заголовком. Для конкретики — это библиотека JpGraph.
Если я ничего не путаю, то включить скрипт-картинку сюда не получится. | |
|
|
|
|
|
|
|
для: Киналь
(05.04.2012 в 17:38)
| | Я так понял, что это выдает код основной страницы? Тогда почему не получиться, если в самом ее начале выполнять отрисовку графика? В примере ничего не создается, но принцип тот же самый:
<?
if(isset($_GET['im'])) {
header('Content-type:image/gif');
echo file_get_contents('http://www.softtime.biz/dataimg_books/php56original.gif');
exit;
}
?>
<html>
<body>
В текущем квартале мы добились существенных успехов. Вот основные показатели:
<img src="?im">
Спасибо за внимание!
</body>
</html>
| Какая разница какой вы скрипт вызываете, только если отдельный, значит он сам по себе рулит, а если родителя, то выполнили по запросу и выход. | |
|
|
|
|
|
|
|
для: confirm
(05.04.2012 в 17:47)
| | Красиво, я бы не догадался. Но, каюсь, я слишком упростил пример. Более полно он выглядит так:
<html>
<body>
В <?=$_GET['kvartal_number']?> квартале мы добились существенных успехов. Вот основные показатели:
<img src="graph.php">
Спасибо за внимание!
Вы можете посмотреть отчёт за другой квартал:
<form>
<input type='text' value='<?=$_GET['kvartalnumber']?>'>
<input type='submit'>
</form>
</body>
</html>
|
То есть форма для задания GET-параметров находится в этом же файле, и значения полей нужно сохранять. А если сделать так, как вы предлагаете, то в основном файле доступа к GET-параметрам не будет. | |
|
|
|
|
|
|
|
для: Киналь
(05.04.2012 в 17:59)
| | У вас что, и изначально передается картинка, но пустой? Ведь пока не будут переданы параметры для нее, какой смысл в:
<img src="graph.php">
Спасибо за внимание!
Вы можете посмотреть отчёт за другой квартал:
<form>
...
| ? | |
|
|
|
|
|
|
|
для: confirm
(05.04.2012 в 18:02)
| | Изначально дефолтные значения. Ну там, текущий квартал, например. Главное, что в процессе работы мне надо и картинке отдать номер квартала, и на странице его написать. | |
|
|
|
|
|
|
|
для: Киналь
(05.04.2012 в 18:05)
| | Все равно нет проблем, по моему.
<?
if(isset($_GET['im'])) {
$im = imagecreate(10,10);
switch($_GET['c']) {
case 0: $c = imagecolorallocate($im, 0,0,255);
break;
case 1: $c = imagecolorallocate($im, 0,255,0);
break;
case 2: $c = imagecolorallocate($im, 255,0,0);
}
imagefill($im, 0, 0, $c);
header('Content-type: image/gif');
imagegif($im);
imagedestroy($im);
exit;
}
$color = isset($_GET['color']) ? $_GET['color'] : 0;
?>
<html>
<body>
В текущем квартале мы добились существенных успехов. Вот основные показатели:
<img src="?im&c=<?php echo $color;?>" />
Спасибо за внимание!
</body>
</html>
<form>
<input type="radio" name="color" value="1" checked="checked" /> Color 1
<input type="radio" name="color" value="2" /> Color 2
<input type="submit" value="Send" />
</form>
|
| |
|
|
|
|
|
|
|
для: confirm
(05.04.2012 в 18:36)
| |
<img src="?im&c=<?php echo $color;?>" />
|
То есть заново выстраивать строку GET-запроса. Именно этого я и хотел избежать, у меня параметров — штук сорок, много похожих, запутаться легко. | |
|
|
|
|
|
|
|
для: Киналь
(05.04.2012 в 18:46)
| | Ну иначе никак, кроме как через сессию.
Похожих это как, не именем же? 40 это не так и много.
Почему при разборе параметров вы не путаетесь, а при вставке их в url запутаетесь? | |
|
|
|
|
|
|
|
для: confirm
(05.04.2012 в 18:50)
| | Именно что именем. Два массива по 16 элементов, ну и по мелочи. Разбираю их в цикле. Ну и в двух местах запутаться проще, чем в одном)
Вроде выкрутился: вставил graph.php в отдельный iframe, и сабмит формы идёт прямо туда. Картинка нужные параметры получает, в форме они сохраняются, больше пока ничего и не требуется. Только iframe смущает, но поскольку продукт специализированный и пользователей у него «по пальцам пересчитать», можно на это не обращать внимания.
Тем не менее спасибо за отклик! | |
|
|
|
|
|
|
|
для: Киналь
(05.04.2012 в 19:08)
| | Проверить массив можно и без цикла, а превратить массив в строку запроса тоже можно без всяких телодвижений http_build_query($_GET). | |
|
|
|
|
|
|
|
для: confirm
(05.04.2012 в 19:17)
| | Вот с этого стоило начать)) Не знал об этой функции. Решение с iframe мне уже понравилось по другим причинам, но ваш способ буду на всякий случай иметь в виду, спасибо! | |
|
|
|
|
|
|
|
для: Киналь
(05.04.2012 в 19:27)
| | Так вопрос же был не как превратить массив в нечто, а о том как бы передать. | |
|
|
|
|
|
|
|
для: confirm
(05.04.2012 в 19:34)
| | Да, действительно. Что-то я совсем «нюх потерял») Что ж, вроде разобрался. | |
|
|
|
|
|
|
|
для: Киналь
(05.04.2012 в 17:19)
| | А данные которые вы хотите передавать в картинку вы как получаете? Если вы можете их получить в скрипте, который выводит HTML, то почему бы вам не получить их сразу в скрипте, который строит картинку? Например вы передаете в картинку номер квартала, а картинка - это же скрипт... Ну вот в нем и извлеките требуемые данные по этому кварталу. | |
|
|
|
|
|
|
|
для: Sfinks
(05.04.2012 в 21:56)
| | Нет, данные приходят из формы. Да вроде уже год работает как надо, спасибо) | |
|
|
|