X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

Открыть тему
Тема закрыта
> Передать массив из скрипта в скрипт
lousx
lousx
Topic Starter сообщение 9.6.2010, 5:07; Ответить: lousx
Сообщение #1


Есть скрипт, читающий csv, отбирающий нужные из него значения в зависимости от запроса и формирующий 3 массива, на основе выбранных данных, которые (массивы данных) используются для рисования графика. График рисуется другим скриптом.
Задача заключается в том, чтобы передать сформированные массивы из одного скрипта в другой.

Массивы формируются только в том случае, если в выпадающих списках выбраны начальная и конечная даты.

Первый скрипт:
[PHP]<?
require_once("str_getcsv.php"); //для php < 5.3
require_once ('jpgraph.php');
require_once ('jpgraph_line.php');

require_once ('jpgraph_scatter.php');
require_once ('jpgraph_regstat.php');

//функции для построения списков
function day_options($current) {
$r = "";
for ($i = 1; $i <= 31; $i++) {
$s = $i == $current ? " selected" : "";
$r .= "<option value=\"{$i}\"{$s}>{$i}</option>";
}
return $r;
}
function month_options($current) {
$month_names = array("Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек");
$r = "";
for ($i = 1; $i <= 12; $i++) {
$s = $i == $current ? " selected" : "";
$r .= "<option value=\"{$i}\"{$s}>" . $month_names[$i - 1] . "</option>";
}
return $r;
}
function year_options($current) {
$r = "";
$year = date("Y");
for ($i = 0; $i <= 5; $i++) {
$y = $year - $i;
$s = $y == $current ? " selected" : "";
$r .= "<option value=\"{$y}\"{$s}>{$y}</option>";
}
return $r;
}
//читаем параметры
$start_day = 0 + (array_key_exists("start_day", $_GET) ? $_GET["start_day"] : 0);
$start_month = 0 + (array_key_exists("start_month", $_GET) ? $_GET["start_month"] : 0);
$start_year = 0 + (array_key_exists("start_year", $_GET) ? $_GET["start_year"] : 0);
$end_day = 0 + (array_key_exists("end_day", $_GET) ? $_GET["end_day"] : 0);
$end_month = 0 + (array_key_exists("end_month", $_GET) ? $_GET["end_month"] : 0);
$end_year = 0 + (array_key_exists("end_year", $_GET) ? $_GET["end_year"] : 0);

//определяем необходимость обработки данных
$start = $start_day && $start_month && $start_year;
$end = $end_day && $end_month && $end_year;

//необходимая обработка данных
$page_content = "";
if ($start || $end) {
//день и масяц - двузначные числа
$s_start_day = "" . $start_day; while (strlen($s_start_day) < 2) { $s_start_day = "0{$s_start_day}"; }
$s_start_month = "" . $start_month; while (strlen($s_start_month) < 2) { $s_start_month = "0{$s_start_month}"; }
$s_end_day = "" . $end_day; while (strlen($s_end_day) < 2) { $s_end_day = "0{$s_end_day}"; }
$s_end_month = "" . $end_month; while (strlen($s_end_month) < 2) { $s_end_month = "0{$s_end_month}"; }
//выводим начало и конец
if ($start) { $page_content .= "Начало: {$s_start_day}.{$s_start_month}.{$start_year}<br />"; }
if ($end) { $page_content .= "Конец: {$s_end_day}.{$s_end_month}.{$end_year}<br />"; }
//обработка данных
$start_date = "{$s_start_day}.{$s_start_month}";
$end_date = "{$s_end_day}.{$s_end_month}";
$do_add = ($start) ? false : true; //флаг добавления
$contents = file_get_contents("test.csv"); //читаем csv как текст
$items = explode("\n", str_replace("\r", "", $contents)); //преобразуем текст в массив строк
$data = array();


foreach ($items as $value) { //работаем построчно (для каждой строки)
$adata = str_getcsv($value); //парсим csv
if (!$do_add) { $do_add = substr($adata[0], 0, 5) == $start_date; } //при снятом флаге: если строка соответствует первой дате - устанавливаем флаг
if ($do_add) {
$do_add = substr($adata[0], 0, 5) != $end_date; //при установленном флаге: если строка соответствует второй дате - снимаем флаг
if (!$do_add) { break; }
}
if ($do_add) { //если флаг установлен - добавляем данные из текущей строки
$data1[] = $adata[0];
$data2[] = $adata[1];
$data3[] = $adata[2];
}




}
}
unset($items);
unset($contents);








?>


<form >
<select name="start_day"><option></option><? print(day_options($start_day)) ?></select>
<select name="start_month"><option></option><? print(month_options($start_month)) ?></select>
<select name="start_year"><option></option><? print(year_options($start_year)) ?></select> <br />
<select name="end_day"><option></option><? print(day_options($end_day)) ?></select>
<select name="end_month"><option></option><? print(month_options($end_month)) ?></select>
<select name="end_year"><option></option><? print(year_options($end_year)) ?></select> <br />
<input type="submit" target = "mainFrame" />
</form>


<? if ($page_content != "") { print($page_content); } ?>



<img src="work.php?datexx=data1&date=data2&dateff=data3">





<?php print_r ($data2);


?>

[/PHP]



Второй скрипт:[PHP]<?php
require_once ('jpgraph.php');
require_once ('jpgraph_line.php');

require_once ('jpgraph_scatter.php');
require_once ('jpgraph_regstat.php');



$datexx = $_GET["datexx"];
$date = $_GET["date"];
$dateff = $_GET["dateff"];

print_r ($date);
print_r ($dateff);

//echo $datexx;


$timer = new JpgTimer();
$timer->Push();

// Create the graph. These two calls are always required
$graph = new Graph(800,500);
$graph->SetScale("textlin");

$graph->SetMargin(40,20,20,90);

$graph->title->Set("Timing a graph");
$graph->footer->right->Set('Timer (ms): ');
$graph->footer->right->SetFont(FF_COURIER,FS_ITALIC);
$graph->footer->SetTimer($timer);

// Create the linear plot
$lineplot=new LinePlot($date);

$lineplot2=new LinePlot($dateff);

// Add the plot to the graph
$graph->Add($lineplot);
$graph->Add($lineplot2);

$graph->xaxis->title->Set("X-title");
$graph->yaxis->title->Set("Y-title");

$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);

$lineplot->SetColor("blue");
$lineplot->SetWeight(2);

$lineplot2->SetColor("orange");
$lineplot2->SetWeight(2);

$graph->yaxis->SetColor("red");
$graph->yaxis->SetWeight(2);
$graph->SetShadow();

//$datax = $gDateLocale->GetShortMonth();

$graph->xaxis->SetTickLabels($datexx);
$graph->xaxis->SetLabelAngle(90);
$graph->xaxis->SetLabelMargin(5);
$graph->xaxis->SetTextLabelInterval(3); //интервал через который показываются xaxis надписи
//$graph->xaxis->SetTextTickInterval(3,5); // интервал отметок axis



// Display the graph
$graph->Stroke();
?>[/PHP]
Посоветовали в первом добавить: <img src="work.php?datexx=data1&date=data2&dateff=data3">
А во втором:
$datexx = $_GET["datexx"];
$date = $_GET["date"];
$dateff = $_GET["dateff"];

Проверяю - переменные пусты.


--------------------
Этот хостинг хостинг уже 2 года служит мне. (Для России | Для Украины)
Я пользуюсь только этой тизеркой и этим попандером и кликандером.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Witu
Witu
сообщение 9.6.2010, 8:55; Ответить: Witu
Сообщение #2


быть такого не может
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
сообщение 9.6.2010, 10:09; Ответить: ZhukV
Сообщение #3


У тя в скрипте бог знает что творится:
Во-первых, как так ты делаеш?
$contents = file_get_contents("test.csv"); //читаем csv как текст
$items = explode("\n", str_replace("\r", "", $contents)); //преобразуем текст в массив строк

А не проще:
[PHP]
$file = file("test.csv");
[/PHP]
А что вот это такое:
$adata = str_getcsv($value); //парсим csv

А не проще воспользоватся функцией:
fgetcsv?

(lousx @ 9.6.2010, 08:07) *
Задача заключается в том, чтобы передать сформированные массивы из одного скрипта в другой.

Либо вариант, тот, который те посоветовали, либо в прямо в $_GET передавать массив, либо делать формат ЧПУ, либо передавать по параметры по сессии и куках.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
lousx
lousx
Topic Starter сообщение 9.6.2010, 11:26; Ответить: lousx
Сообщение #4


(HTMLandPHP @ 9.6.2010, 11:55) *
быть такого не может

Зачем писать набор слов. Наверное потому, что ничего не понимаешь и просто набиваешь сообщения?



(ZhukV @ 9.6.2010, 13:09) *
Во-первых, как так ты делаеш?

Разбиваем по строкам для поиска по дате.


(ZhukV @ 9.6.2010, 13:09) *
А что вот это такое:

[PHP]if (!function_exists('str_getcsv')) {
function str_getcsv($input, $delimiter = ",", $enclosure = '"', $escape = "\\") {
$fiveMBs = 5 * 1024 * 1024;
$fp = fopen("php://temp/maxmemory:$fiveMBs", 'r+');
fputs($fp, $input);
rewind($fp);

$data = fgetcsv($fp, 1000, $delimiter, $enclosure); // $escape only got added in 5.3.0

fclose($fp);
return $data;
}
}[/PHP]


--------------------
Этот хостинг хостинг уже 2 года служит мне. (Для России | Для Украины)
Я пользуюсь только этой тизеркой и этим попандером и кликандером.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Witu
Witu
сообщение 9.6.2010, 13:00; Ответить: Witu
Сообщение #5


lousx, о да я не знаю
при <img src="work.php?datexx=data1&date=data2&dateff=data3">

вот эти значения

$datexx = $_GET["datexx"];
$date = $_GET["date"];
$dateff = $_GET["dateff"];

пустыми быть не могут
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
сообщение 9.6.2010, 14:36; Ответить: Apay
Сообщение #6


lousx, прежде чем строчить жалобы, надо разобраться в том, что люди дело пишут, косяк у вас.

если work.php обрабатывается браузером как картинка
(lousx @ 9.6.2010, 08:07) *
<img src="work.php?datexx=data1&date=data2&dateff=data3">

то всякие
(lousx @ 9.6.2010, 08:07) *
[PHP]print_r ($date);
print_r ($dateff);[/PHP]
не будут отображаться, т.к. это текст а не графика
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
lousx
lousx
Topic Starter сообщение 9.6.2010, 14:57; Ответить: lousx
Сообщение #7


Всё только подковыривать могут. Белорусы все такие? Или только на это форуме?
Ни кто на вопрос так и не ответил.
Всё дело в том, что передаются не массивы а строки.


--------------------
Этот хостинг хостинг уже 2 года служит мне. (Для России | Для Украины)
Я пользуюсь только этой тизеркой и этим попандером и кликандером.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Witu
Witu
сообщение 9.6.2010, 15:01; Ответить: Witu
Сообщение #8


массивы передаются вот так


?date[]=234&date[]=123
имеено date[] означает что вы передаете массив с названием DATE ключем [] и значением =
вопрос нужно было задать правильно

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) [Exchanger Store] Скрипт обменника валют
15 RubiSoft 7557 17.11.2020, 14:03
автор: RubiSoft
Открытая тема (нет новых ответов) Нужен простой скрипт выставления ставок в Яндекс.Директ
1 taxi2008 301 12.11.2020, 3:14
автор: Coffee
Открытая тема (нет новых ответов) Порекомендуйте скрипт clickunder/popunder
6 Mansurka 400 26.10.2020, 20:00
автор: EvilGomel
Открытая тема (нет новых ответов) Сделаю вам сайт или скрипт
13 littleАnt 4293 26.10.2020, 19:11
автор: littleАnt
Открытая тема (нет новых ответов) Скрипт новостей
1 paradyne 396 31.8.2020, 12:22
автор: miketomlin


 



RSS Текстовая версия Сейчас: 24.11.2020, 19:05
Дизайн