|
|
|
| Очень нужна ВАша помощь,начинающей но не тупой и безнадежной программистки.
Задача.В PHP скрипте есть нескольеко однотипніх функцияй вида-
public function get_my_list(){
$dict = Array(
"02" => Array("filename"=>"02.png","x"=>36, "y"=>40, "width"=>406, "height"=>303),
"01" => Array("filename"=>"01.png","x"=>0, "y"=>0, "width"=>400, "height"=>300),
"08" => Array("filename"=>"08.png","x"=>15, "y"=>15, "width"=>358, "height"=>296),
"07" => Array("filename"=>"07.png","x"=>17, "y"=>147, "width"=>248, "height"=>174),
"06" => Array("filename"=>"06.png","x"=>12, "y"=>8, "width"=>308, "height"=>291),
"05" => Array("filename"=>"05.png","x"=>13, "y"=>15, "width"=>404, "height"=>302),
"1004" => Array("filename"=>"04.png","x"=>163, "y"=>14, "width"=>343, "height"=>307)
);
return $dict;
}
И в итоге -несколько тысяч изображений ,да еше в в десятке похожих функций в одном файле php который серьезно разростается в обьеме .
Подскажите направление для того чтобы организовать хранение и выдачу массивов в базе данных.
Очень прошу.Я начинаю осваивать премудрости,но без помоши знающих никак не обойтись. | |
|
|
|
|
|
|
|
для: olgavip
(21.02.2010 в 10:31)
| | А ЗАЧЕМ $dict = Array () держать в функции ???
Как передать массив в MySQL --в цикле | |
|
|
|
|
|
|
|
для: oliss
(21.02.2010 в 11:02)
| | Так сделан Рабочий скрипт который я усовершенствую -фреймворк+JS+PHP .Он полностью рабочий.Не использует базу,все картинки надо прописывать именно сдесь-эту фунrцию использует JS для вывода списка изображений и последуюшего выбора hash.action='get_my_list'; Я же не смогу переписать весь код только index.js занимает 500 кб.
Разве нельзя сделать функция get_my_lis () { вывод массивов из базы в переменную $dict -
return $ dist }
Не нарушая обшего сторения ВСЕГО СКРИПТА
Мне надо улучшить только хранение 1000 записей в этой функции, чтобы в переменную $dict выводилось из базы | |
|
|
|
|
|
|
|
для: olgavip
(21.02.2010 в 10:31)
| | структура выдаваемых массивов у них одинаковая или разные?
В принципе, можно просто создать по таблице для каждой из этих функций,
CREATE TABLE `images`
(
`id` INT(11) NOT NULL DEFAULT NULL AUTO_INCREMENT ,
`filenane` VARCHAR(100) NOT NULL,
`x` INT(11) NOT NULL,
`y` INT(11) NOT NULL,
`width` INT(11) NOT NULL,
`height` INT(11) NOT NULL,
PRIMARY KEY(`id`);
);
|
А затем перебросить содержимое примерно так (код не проверен):
<?
$dict = array
(
//...определение данных
);
$names = array('id', 'filename', 'x', 'y', 'width', 'height');
$sql = 'INSERT INTO `images` (`id`, `filename`, `x`, `y`, `width`, `height`) VALUES ';
$separator = "\r\n";
foreach($dict AS $id => $inrow)
{
$outrow = array();
foreach($names as $key)
{
if($key == 'id')
$outrow[] = (int)$id;
else
$outrow[] = !isset($inrow[$key] ? 'NULL' :
(is_string($inrow[$key]) ? ( "'".mysql_real_escape_string($inrow[$key]) . "'") :
(is_float($inrow[$key]) ? ((float) $inrow[$key]) : ((int) $inrow[$key])
)
);
}
$sql .= "$separator (" .implode(',',$outrow) .")\r\n"
$separator = ",";
}
$res = mysql_query($sql) or die("Error in <pre>$sql</pre>" . mysql_error());
|
Выборку можно будет выполнять запросом SELECT * FROM `images` с условиями по вкусу.
mysql_fetch_assoc() будет возвращать строки с той же структурой фактически ( только поле id добавится, и данные будут в виде строк.) | |
|
|
|
|
|
|
|
для: Trianon
(21.02.2010 в 11:25)
| | Структура выдаваемых массивов у них полностью одинаковая .Я наверное может не правильно и вопрос сформулировала-очень извиняюсь.Мне надо возвратить переменную $dict в тойже структуре (как до переделки) после вызова из JS скрипта hash.action='get_my_list'; только чтобы function get_my_list(){
$dict = Array(
//Убираем 1000 строк записей вида ( "01" => Array("filename"=>"01.png","x"=>12, "y"=>8, "width"=>308, "height"=>291), ..............."1000" => Array("filename"=>"1000.png","x"=>17, "y"=>147, "width"=>248, "height"=>174),итд)
// Вместо этого обрашаемся к базе и выводим из базы массивы и возвращаемся как и ранее
);
return $dict;
Чтоб данные в переменной $dict возвратильси также как и ранее (Без вывода из базы). | |
|
|
|
|
|
|
|
для: olgavip
(21.02.2010 в 11:53)
| |
<?
function get_my_list()
{
$names = array('id' =>'key', 'filename'=>'', 'x' =>'int', 'y'=>'int', 'width'=>'int', 'height'=>'int');
$sql = "SELECT * FROM `images` ORDER BY `id` ";
$res = mysql_query($sql) or die("Error in $sql" .mysql_error());
for($dict = array(); $row = mysql_fetch_assoc($res);)
{
foreach($names as $name => $type)
{
$val = $row[$name];
switch($type)
{
case 'key': $outrow = array(); $key = $val; break;
case 'int': $outrow[$key] = (int) $val; break;
case 'float': $outrow[$key] = (float) $val; break;
case '': $outrow[$key] = "$val"; break;
}
}
$dict[$key] = $outrow;
}
return $dict;
}
|
| |
|
|
|
|
|
|
|
для: Trianon
(22.02.2010 в 00:24)
| | Уважаемый Trianon -благодарю за вашу отзывчивость и так нужную мне помощь .Вы очень помогли мне.Спасибо .Буду пробовать ,внедрять и анализировать.
Настоящие мужчины БЫЛИ _ЕСТЬ_И БУДУТ.
Поздравляю ВСЕХ МУЖЧИН С ДНЕМ ЗАЩИТНИКОВ ОТЕЧЕСТВА 23 ФЕВРАЛЯ. | |
|
|
|
|