Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

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

 

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

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

тема: массивы. обновление таблицы
 
 автор: kid_a   (03.06.2008 в 14:29)   письмо автору
 
 

$upid[] Array ( [0] => 1 [1] => 2 )//id таблицы 
$pole[] Array ( [0] => id [1] => pole1 [2] => pole2 ) //поля таблицы 
$arv[]  Array ( [0] => 1 [1] => a1 [2] => b1 [3] => 2 [4] => a2 [5] => b2 ) //значения в input text (=поля таблицы*кол-во id)


в данном случае запроса будет 2:

update $table set $pole[0]=$arv[0], $pole[1]=$arv[1], $pole[2]=$arv[2]  where id=$upid[0] для id=1
update $table set $pole[0]=$arv[3], $pole[1]=$arv[4], $pole[2]=$arv[5]  where id=$upid[1] для id=2


как выполнить это в цикле (динамич. массивы)?

   
 
 автор: olejek   (03.06.2008 в 15:27)   письмо автору
 
   для: kid_a   (03.06.2008 в 14:29)
 

Однозначно, нужно делать массив $arv многомерным:
<?
$arv 
= Array (array(1'a1''b1'),
              array(
2'a2''b2'));
?>

Тогда если два других массива будут иметь вид:
<?
$upid 
= Array (12);//id таблицы 
$pole = Array ('id''pole1''pole2'); //поля таблицы 
?>

то можно так обновлять записи:
<?
foreach ($arv as $key => $arv_val)
    {
    
$query_string "update $table set $pole[0]=$arv_val[0]$pole[1]=$arv_val[1]$pole[2]=$arv_val[2]  where id=$upid[$key]";
    }
?>

   
 
 автор: kid_a   (03.06.2008 в 15:35)   письмо автору
 
   для: olejek   (03.06.2008 в 15:27)
 

спасибо,
но дело в том, что массивы формируются динамически,
заранее не знаю, сколько полей и соотв. значений нужно перечислить в запросе. запуталась в циклах.
единственное: кол-во формируемых текстовых полей=число id*число полей в таблице (тоже беру из запроса).

   
 
 автор: olejek   (03.06.2008 в 16:00)   письмо автору
 
   для: kid_a   (03.06.2008 в 15:35)
 

Ну, тогда можно так:
<?
foreach ($arv as $key => $arv_val)
    {
    if (
count($arv_val))
    
$query_string "update $table set ";
    foreach (
$arv_val as $k => $v)
        {
        
$query_string .= "$pole[$k]=$v";
        if (
$k count($arv_val)-1)    //если поле не последнее, добавляем запятую
            
$query_string .= ', ';
        }
    
$query_string .= " where id=$upid[$key]";
    }
?>

   
 
 автор: kid_a   (04.06.2008 в 07:17)   письмо автору
 
   для: olejek   (03.06.2008 в 16:00)
 

большое спасибо.

   
Rambler's Top100
вверх

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