Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как отредактировать сразу несколько строк в табли 
:(
    Опции темы
Igor_CH
Дата 22.8.2006, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 20.3.2005

Репутация: нет
Всего: нет



Id   Id_kat  k1  k2
1    1      5    2
2    1      1    3
3    1      5    4
4    1      3    3
5    1      2    6


Из базы вывел, получил пять строк по два значения которые надо поменять (k1 и k2).

А как теперь сделать UPDATE  сразу во всех строках?
Для одной понятно:
Код

$sql_insert = "UPDATE raspis SET 
        k1 = ".$k1.", 
        k2 = ".$k2." 
        WHERE `kurs` = '".$_GET['ID_kurs']."' ;";


PM MAIL   Вверх
Darhazer
Дата 22.8.2006, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 28.9.2005
Где: HellCity (Sofia, Bulgaria)

Репутация: 3
Всего: 29



Тебе нужно чтото типа:
Код
$sql_insert = "UPDATE raspis SET 
        k1 = k2+k1,
        k2 = k1,
        k1 = k2 - k1

Сейчась пробую и напишу точно...

P.S.
Не много ошибся, но этого давно не делал /в общеем класическая задача - поменят значения двух var без третой/
Код
$sql_insert = "UPDATE raspis SET 
        k1 = k2 + k1,
        k2 = k1 - k2,
        k1 = k1 - k2"



Это сообщение отредактировал(а) Darhazer - 22.8.2006, 17:46


--------------------
I'm a wheel, I'm a wheel, I can roll, I can feel
But you can't stop me turning
'Cause I'm the sun, I'm the sun, I can move, I can run
But you'll never stom me burning
PM MAIL WWW ICQ YIM   Вверх
Igor_CH
Дата 23.8.2006, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 20.3.2005

Репутация: нет
Всего: нет



Не совсем понял, а как это работает. 
Мне же надо понять к1 и к2 под своим ID.
сейчас:
Id   Id_kat  k1  k2
1        1       5    2
2        1       1    3
3        1       5    4
4        1       3    3
5        1       2    6

а потом например:
Id   Id_kat  k1  k2
1        1       8    1
2        1       5    1
3        1       9    2
4        1       8    4
5        1       7    1
PM MAIL   Вверх
ewolf
Дата 23.8.2006, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 15.8.2006
Где: г. Москва

Репутация: 2
Всего: 18



Идея состоит в том, чтобы поменять значения двух переменных, не вводя третьей вспомогательной. Это возможно, так как значения твоих переменных - числа.
Дело в том, что SQL последовательно выполняет команды, описанные в разделе SET

По строкам описание:

k1 = k1 + k2  переменная k1 хранит сумму двух переменных 
k2 = k1 - k2  переменная k2 становится равной k1, так как имеем по-сути такое выражение k2 = (k1+k2) - k2 = k1 
k1 = k1 - k2  учитывая предыдущие операции, имеем k1 = (k1+k2) - ((k1 + k2) - k2) = k2 


PM MAIL ICQ   Вверх
Darhazer
Дата 23.8.2006, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 28.9.2005
Где: HellCity (Sofia, Bulgaria)

Репутация: 3
Всего: 29



Igor_CH
видимо я не понял твой вопрос
С моем кодом из
Id   Id_kat  k1  k2
1        1       5    2
2        1       1    3
3        1       5    4
4        1       3    3
5        1       2    6
получиш
Id   Id_kat  k1  k2
1        1       2    5
2        1       3    1
3        1       4    5
4        1       3    3
5        1       6    2

Нелзя сделать UPDATE несколько строк если значения, которые будеш записивать, будут разние, и нельзя их записать в виде f=x+y


--------------------
I'm a wheel, I'm a wheel, I can roll, I can feel
But you can't stop me turning
'Cause I'm the sun, I'm the sun, I can move, I can run
But you'll never stom me burning
PM MAIL WWW ICQ YIM   Вверх
Igor_CH
Дата 23.8.2006, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 20.3.2005

Репутация: нет
Всего: нет



не получается smile
Одно и тоже:
Id   Id_kat  k1  k2
1        1       2    1
2        1       2    1
3        1       2    1
4        1       2    1
5        1       2    1

Добавлено @ 10:54 
упс не заметил ответа выше.

Так есть какой то выход? может цикл пустить?

Получается много раз водить, это я на примере 5 строк показал, а поправде их 5 по 25 и того 625 раз вводить и нажимать кнопку сохранить! это ж вечность.

Наверно надо тогда не UPDATE а REPLACE INTO, тогда ID теряю
PM MAIL   Вверх
PARROT
Дата 23.8.2006, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 3
Всего: 50



У меня сделано так:
Код

while(list($idx,$val) = each($ar))
{
        mysql_query("UPDATE base_2 SET b_2="{$ar[$idx]}" WHERE id=$idx")or die(mysql_error());
}

Код

<form method=post>
<?
$old = mysql_query("SELECT id_b,id,b_2 FROM base_2");
while($row2 = mysql_fetch_row($old)) {

 echo "<input type=text name=ar[".$row2[0]."] value='$row2[2]'  maxlength=40 size=48><br/>";
}
?>
<input type=submit name=set value=редактировать>
</form>


Добавлено @ 11:23 
Получаем массив данных, делим их на ключ->значение и записываем.


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Igor_CH
Дата 23.8.2006, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 20.3.2005

Репутация: нет
Всего: нет



Ошибка: Parse error: parse error, unexpected '{' in w:\home\...... 
в строке:
Код

mysql_query("UPDATE raspis SET k="{$ar[$idx]}" WHERE id=$idx")or die(mysql_error());

PM MAIL   Вверх
skyboy
Дата 23.8.2006, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



если $ar[$idx] - число, а не строка, то надо убрать соседствующие кавычки. Если - строка, то поставить одинарные кавычки. 
PM MAIL   Вверх
Igor_CH
Дата 23.8.2006, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 20.3.2005

Репутация: нет
Всего: нет



число , убираем кавычки получаем такую ошибку:
Warning: Variable passed to each() is not an array or object in w:\home.....
в строке
Код

while(list($idx,$val) = each($ar))

PM MAIL   Вверх
PARROT
Дата 23.8.2006, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 3
Всего: 50



Код

mysql_query('UPDATE raspis SET k='".$ar[$idx]."' WHERE id='.$idx.') or die(mysql_error());


Это сообщение отредактировал(а) PARROT - 23.8.2006, 15:09


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Igor_CH
Дата 23.8.2006, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 20.3.2005

Репутация: нет
Всего: нет



PARROT с этой ошибкой разобрались.

Следующая Warning: Variable passed to each() is not an array or object in w:\home.....
в строке:
Код

 while(list($idx,$val) = each($ar)) 

 

PM MAIL   Вверх
PARROT
Дата 23.8.2006, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 3
Всего: 50



Сложно гадать когда не можешь проверить. У меня было со строкой и было с числом, но второе я не могу найти.

Добавлено @ 15:13 
И такая ошибка была у меня, тут кроется как раз в первой ошибке, попробуйте поиграть с запросом и его кавычками, в разных вариациях. 
Печатайте запрос:
Код

while(list($idx,$val) = each($ar))
{
echo "UPDATE raspis SET k='{$ar[$idx]}' WHERE id=$idx";
mysql_query("UPDATE raspis SET k='{$ar[$idx]}' WHERE id=$idx")or die(mysql_error());
}



--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Igor_CH
Дата 23.8.2006, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 20.3.2005

Репутация: нет
Всего: нет



Код:
Код

<?php
$db_server = "localhost";
$db_name = "";
$db_username = "";
$db_password = "";
function db_connect()
{

    global $db_server;
    global $db_username;
    global $db_password;
    global $db_name;

    $con = mysql_connect($db_server,$db_username,$db_password);
    if (!(mysql_select_db($db_name,$con)))
    {
        show_error();
    }

    return $con;
}

        $con = db_connect();
        
    global $SmbIt;
    if (!isset($SmbIt)){

       ?>
<form name="Edit" method="POST">
<table>
<tr><td valign=top>
<?php
$old = mysql_query("SELECT id_R,k FROM raspis");
while($row2 = mysql_fetch_row($old)) {

 echo "<input type=text name=ar[".$row2[0]."] value='$row2[1]'  maxlength=10 size=10><br>";
}
?>
    </td>
</tr>                                        
<tr>
    <td>
<input type="submit" Name="SmbIt" value="Обновить инфо &raquo;&raquo;&raquo;">
    </td>
</tr>
</table>
    </form>

<?php
 } else {
        


while(list($id_Rx,$val) = each($ar))
{
     mysql_query("UPDATE raspis SET k='$ar[$idx]' WHERE id_R=$id_Rx")or die(mysql_error());
}

        
    }

?>


БД:
Код

CREATE TABLE `raspis` (
  `id_R` bigint(20) NOT NULL auto_increment,
  `k` bigint(20) NOT NULL default '0',
  `n` bigint(20) NOT NULL default '0',
  PRIMARY KEY  (`id_R`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 PACK_KEYS=0 AUTO_INCREMENT=12 ;

-- 
-- Дамп данных таблицы `raspis`
-- 

INSERT INTO `raspis` VALUES (1, 1, 1);
INSERT INTO `raspis` VALUES (2, 2, 1);
INSERT INTO `raspis` VALUES (3, 3, 1);
INSERT INTO `raspis` VALUES (4, 4, 1);
INSERT INTO `raspis` VALUES (5, 5, 1);
INSERT INTO `raspis` VALUES (6, 1, 1);
INSERT INTO `raspis` VALUES (7, 2, 1);
INSERT INTO `raspis` VALUES (8, 3, 1);
INSERT INTO `raspis` VALUES (9, 4, 1);
INSERT INTO `raspis` VALUES (10, 5, 1);
INSERT INTO `raspis` VALUES (11, 1, 1);


PM MAIL   Вверх
-=Ustas=-
Дата 23.8.2006, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 17
Всего: 69



Igor_CH, я что то не врубаюсь, что ты хочешь сделать? Что н ачто поменять?


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0707 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.