Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как передать массив в MySQL?
 
 автор: olgavip   (21.02.2010 в 10:31)   письмо автору
 
 

Очень нужна ВАша помощь,начинающей но не тупой и безнадежной программистки.
Задача.В 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 который серьезно разростается в обьеме .
Подскажите направление для того чтобы организовать хранение и выдачу массивов в базе данных.
Очень прошу.Я начинаю осваивать премудрости,но без помоши знающих никак не обойтись.

  Ответить  
 
 автор: oliss   (21.02.2010 в 11:02)   письмо автору
 
   для: olgavip   (21.02.2010 в 10:31)
 

А ЗАЧЕМ $dict = Array () держать в функции ???
Как передать массив в MySQL --в цикле

  Ответить  
 
 автор: olgavip   (21.02.2010 в 11:38)   письмо автору
 
   для: 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 выводилось из базы

  Ответить  
 
 автор: Trianon   (21.02.2010 в 11:25)   письмо автору
 
   для: 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 добавится, и данные будут в виде строк.)

  Ответить  
 
 автор: olgavip   (21.02.2010 в 11:53)   письмо автору
 
   для: 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 возвратильси также как и ранее (Без вывода из базы).

  Ответить  
 
 автор: Trianon   (22.02.2010 в 00:24)   письмо автору
 
   для: 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;
}

  Ответить  
 
 автор: olgavip   (23.02.2010 в 20:58)   письмо автору
 
   для: Trianon   (22.02.2010 в 00:24)
 

Уважаемый Trianon -благодарю за вашу отзывчивость и так нужную мне помощь .Вы очень помогли мне.Спасибо .Буду пробовать ,внедрять и анализировать.
Настоящие мужчины БЫЛИ _ЕСТЬ_И БУДУТ.
Поздравляю ВСЕХ МУЖЧИН С ДНЕМ ЗАЩИТНИКОВ ОТЕЧЕСТВА 23 ФЕВРАЛЯ.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования