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

Форум MySQL

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

 

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

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

тема: Обновить сразу несколько позиций в MySql
 
 автор: D.A.N_visator   (03.05.2008 в 18:21)   письмо автору
 
 



Как обновить сразу столько позиций из базы сколько их есть?
Пишу название колонок, и пишу автоматом столько строк, сколько их есть и заполняю поля инфой.
А вот чтоб при нажатии кнопки сейв все записывалось никак не сделать..помогите пожалуйста!


echo "<table width=300 border=0 cellspacing=0 cellpadding=0><form method=post action=?l=tablita>
 
  
    ";

$queryx="SELECT * FROM `spsc_tavary` ORDER BY tovar ASC"; 
$usr=mysql_query($queryx); 
if(!$usr) exit ();

echo"
<tr>
<td></td>
<td><div align=center>nazvanie tovara</div></td>
<td><div align=center>kolicestvo</div></td>
<td><div align=center>nalicie</div></td>
</tr>"; 

while($row=mysql_fetch_array($usr))
{
$id = $row['id'];
$tovar= $row['tovar'];
$nazvanie = $row['nazvanie'];
$kolicestvo= $row['kolicestvo'];


echo"
<tr>
<td><input type=text size=25 name=tovar value='".$tovar."' ></td>
<td><input type=text size=10 name=nazvanie value=$nazvanie  ></td>
<td><input type=text size=10 name=kolicestvo value=$kolicestvo ></td>
</tr>
"; 


}

echo"
<tr>
<td><input type=submit name=save value=save></td>
</tr>
</form></table>";

   
 
 автор: sim5   (03.05.2008 в 19:33)   письмо автору
 
   для: D.A.N_visator   (03.05.2008 в 18:21)
 

Можно связать имена полей с id записей, при получении массива будете знать поле, номер записи, ну и значение его ествественно.

   
 
 автор: Gangster   (03.05.2008 в 19:47)   письмо автору
 
   для: D.A.N_visator   (03.05.2008 в 18:21)
 

Здравствуйте. Вот пример обновления записи в таблице:
$query = "Update таблица SET поле1 = 'значение1', поле2 = 'значение2', поле3 = 'значение3' where поле1 = 'значение1' "; при простом обновлении без параметра условие не обязательно (where поле1 = 'значение1' ";).

   
 
 автор: D.A.N_visator   (03.05.2008 в 21:35)   письмо автору
 
   для: Gangster   (03.05.2008 в 19:47)
 

я знаю как обновлять, незнаю как обновить сразу несколько полей таблицы
вот с делитом пример есть:
DELEtE FROM table WHERE id IN (1, 3, 5,...,20)

а вот с апдейтом не нашёл

я пробовал связать поля с идом но не получилось...

   
 
 автор: sim5   (04.05.2008 в 01:44)   письмо автору
 
   для: D.A.N_visator   (03.05.2008 в 21:35)
 


<?
echo "<input type=\"text\" name=\"tovar_".$id."\" value=\"".$tovar."\" /> 
<input type=\"text\" name=\"nazvanie_"
.$id."\" value=\"".$nazvanie."\" /> 
<input type=\"text\" name=\"kolicestvo_"
.$id."\" value=\"".$kolicestvo."\" />"

foreach (
$_POST as $key => $val) {
  
$k explode('_'$key);
  print 
$k[0].' - '.$k[1].' - '.$val.'<br>'//это то и кому обновить
}

А в форме, к тому же, не могут содержаться несколько полей с одним именем, если только это не массив.

   
 
 автор: D.A.N_visator   (04.05.2008 в 16:17)   письмо автору
 
   для: sim5   (04.05.2008 в 01:44)
 

spasibo poprobuiu

   
 
 автор: D.A.N_visator   (04.05.2008 в 20:56)   письмо автору
 
   для: D.A.N_visator   (04.05.2008 в 16:17)
 

Объясните пожалуйста для непонятливых как это вставить в апдейт?



if(isset($_POST['salveaza']))
{

foreach ($_POST as $key => $val) { 
  $k = explode('_', $key); 
  print $k[0].'_'.$k[1].' - '.$val.'<br>'; //&#253;&#242;&#238; &#242;&#238; &#232; &#234;&#238;&#236;&#243; &#238;&#225;&#237;&#238;&#226;&#232;&#242;&#252; 



$sq44 = ("UPDATE `spsc_tovary` SET

`tovar` =  '$val',
........



WHERE  `id`='".$k['1']."'   "); 


if(!mysql_query($sq44)) 
 
exit (mysql_error()); 


}

   
 
 автор: sim5   (05.05.2008 в 02:31)   письмо автору
 
   для: D.A.N_visator   (04.05.2008 в 20:56)
 

Вы странный ей богу. Я вам написал пример получения id ключа и значения для его полей через print. Это не более чем пример, а вы пытаетесь вставить все это в свой код, включая и print, и <br>? А вообще вопрос встречный. Например, у вас на странице будет вывод 30 товарных позиций, и вы внесете изменения только в пяти из них, и тогда вы тоже будете производить обновление для всех 30 позиций?

   
 
 автор: D.A.N_visator   (05.05.2008 в 20:08)   письмо автору
 
   для: sim5   (05.05.2008 в 02:31)
 

>а вы пытаетесь вставить все это в свой код

а что я по вашему должен делать? мне ж надо решить проблему.

   
 
 автор: AVS   (05.05.2008 в 20:16)   письмо автору
 
   для: sim5   (05.05.2008 в 02:31)
 

А как тогда узнать, какие товары изменил пользователь? Я сейчас делаю похожую задачу. Мне надо так же одновременно обновить несколько товаров. Можно конечно сделать так, чтобы обновление произвонилось только для одного товара (для каждого своя кнопка), но это неудобно. Я тоже хочу построить один большой запрос на обновления всех товаров одновременно (к примеру, не более 30).

   
 
 автор: D.A.N_visator   (05.05.2008 в 20:35)   письмо автору
 
   для: AVS   (05.05.2008 в 20:16)
 

nu i kak uspehi?

   
 
 автор: AVS   (05.05.2008 в 20:42)   письмо автору
 
   для: D.A.N_visator   (05.05.2008 в 20:35)
 

На сколько я знаю, синтаксис UPDATE не позволяет обновить сразу несколько конкретных строк. Придется все таки по отдельной кнопке на каждый товар ставить. А выполнять 30 запросов на обновление каждого - я считаю это непривильным.

   
 
 автор: sim5   (06.05.2008 в 03:10)   письмо автору
 
   для: AVS   (05.05.2008 в 20:16)
 

А давайте по 50 и поразмышляем. У вас электронный магазин, а это большие отличия от магазина по улице Такой-то. Что у вас должно быть в качестве информации о товаре?
1. Название товара.
2. Призводитель товара (необязательный пункт, но если вы пожелаете разметить свои товары в Яндекс маркет, то он потребуется).
4. Краткое описание товара.
5. Дополнительное (полное описание товара). Так же могут быть, например, инструкции по применению товара.
6. Характеристики товара (например, видеокарты, но - разных производителей, марки и прочее).
7. Цена товара.
8. Возможно оптовая цена товара.
9. Скидка на товар.
10. Количество товара на складе.
12. Сколько продано.
13. Рейтинг товара среди покупателей.
14. Отзывы покупателей о товаре.
15. Дата добавления товара.
16. Фото (либо несколько фото - малое, среднеее, большое).
17. Статус товара: показывать или нет товар на странице. Товар может временно отсутствовать и вы скрываете его. Но можно срывать 50/50, то есть он не скрыт, его просто нельзя положить в корзину, но можно сделать предварительную заявку на него. Или его нельзя положить в корзину, но посетителю важна информация о нем. Значит полей статуса может быть уже два, а не одно.

Не обязательно все это должно быть, что вам нужно, вам виднее, но многое из этого у вас будет несомненно. А теперь давайте размышлять, что из этого списка выгодно обновлять группой. Выбрав некую категорию товаров, вы получаете полный их список (либо постраничной навигацией) со всеми этими полями, причем, фото не выводится, а указывается наличие их, или нет, а так же не выводятся описания товаров. И в этом списке можно изменить статус товара (чекбоксы), скидку (а скидка возможна на группы товаров), ну может быть и цену товаров, количество на складе. ВСЕ. А вот название товара, производитель, описания, добаление и изменение фото... все это лучше производить отдельно и для одного товара, например щелкнув по названию товара, делать переход на другую страницу (или открывать новое окно), где вы можете редактировать всю информацию о товаре, включая перенос товара из одной категории в другую (смена родителя). Здесь обновление будет только для одного id, а из таблицы для многих id, но "легкие". Так удобнее, и не ради того, что вы заботитесь о загруженности MySQL своими запросами, а просто так удобнее выводить и редактировать данные.

   
 
 автор: elenaki   (06.05.2008 в 10:08)   письмо автору
 
   для: sim5   (06.05.2008 в 03:10)
 

я делала обновление группы товаров, но только продажной цены. выбирается группа, в поле
"Наценка" ставится %, нажимается кнопка и всем товарам выбранной группы продажная цена
увеличивается на процент наценки. а остальные изменения - фотки, описания, наличие - это
в каждой позиции индивидуально.

   
 
 автор: D.A.N_visator   (06.05.2008 в 19:21)   письмо автору
 
   для: elenaki   (06.05.2008 в 10:08)
 

Спасибо Sim5, подкинули идею!

   
Rambler's Top100
вверх

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