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

Форум MySQL

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

 

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

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

тема: Помогите убрать коллизию
 
 автор: kaoz   (30.03.2006 в 09:26)   письмо автору
 
 

Исходные данные: В таблице REQUESTS расположено N записей, причем id у них может
идти не по порядку (могли удаляться записи). N - неизвестное число.

СТРУКТУРА БД
            --REQUESTS-------
          ->[id][name][extra]
          | -xx--xxxx--xxxxx-
          ^ -----------------
          |
          ^-<-<-<-<-<-
                     |
                     |
--OFFERS-----------------------
[id][price][extra][id_requests]
-xx--xxxxx--xxxxx-------xx-----
-------------------------------


Задача: Сделать для каждой записи из REQUESTS
"INSERT INTO offers
VALUES (DEFAULT, $_POST[price], $_POST[price], $_POST[requests_id]);"

Порядок действий:
1. Подключаюсь к базе;
2. Запрашиваю данные таблицы REQUEST;
2. Делаю fetch_array в цикле, в котором вывожу таблицу расположенную между комментаторами;

// HTML код
<form name="add_offer" method="post" action="xxx.php">
<table border='0' cellspacing='1' cellpadding='3'>
<!-- !!!Эта часть HTML повторяется для каждой записи!!! -->
  <tr>
    <td> [name]   </td>
    <td> [extra]  </td>
    <td> <input name=price type=text value= size=8></td>
    <td> <input name=extra type=text value= size=30></td>
    <td> <input name=request_id type=hidden value=[id]></td>
  </tr>
<!-- !!!Эта часть HTML повторяется для каждой записи!!! -->
</table>
<input name="submit" type="submit" value="Сделать предложение">
</form>


Подскажите пожалуйста, каким образом мне записывать поле name, чтобы
я потом смог вытащить их из $_POST и занести в таблицу offers без ошибок.

   
 
 автор: Trianon   (30.03.2006 в 10:22)   письмо автору
 
   для: kaoz   (30.03.2006 в 09:26)
 

<?
while($row=array_fetch($res))
{
 
?>
<form name="add_offer" method="post" action="xxx.php"> 
<table border='0' cellspacing='1' cellpadding='3'> 
<!-- !!!Эта часть HTML повторяется для каждой записи!!! --> 
  <tr> 
    <td> [<? echo $row['name']; ?>]   </td> 
    <td> [<? echo $row['extra']; ?>]  </td> 
    <td> <input name=price[<? echo $row['id']; ?>] type=text value= size=8></td> 
    <td> <input name=extra[<? echo $row['id']; ?>] type=text value= size=30></td> 
  </tr> 
<!-- !!!Эта часть HTML повторяется для каждой записи!!! --> 
<?
}
</
table
<
input name="submit" type="submit" value="Сделать предложение"
</
form
?>

   
 
 автор: kaoz   (30.03.2006 в 10:53)   письмо автору
 
   для: Trianon   (30.03.2006 в 10:22)
 

разве можно в хтмл массивы указывать???

даже если можно, как я их из $_POST потом вытащю если я незнаю их ID (соответственно их номера ячеек массива)...?

   
 
 автор: Trianon   (30.03.2006 в 11:20)   письмо автору
 
   для: kaoz   (30.03.2006 в 10:53)
 

Можно и нужно. Примерно так.
<?
$querylist 
= array();
if(isset(
$_POST['price']))
{
    foreach(
$_POST['price'] as $id => $price)
    {
         
$extra $_POST['extra'][$id]
         
$querylist[]  = "UPDATE $table (price,extra) VALUES('$price', '$extra') WHERE id = $id";
    }
}
foreach(
$querylist as $query
    
mysql_query($query);
?>

   
 
 автор: kaoz   (30.03.2006 в 11:27)   письмо автору
 
   для: Trianon   (30.03.2006 в 11:20)
 

а зачем вот это:

<td> [<? echo $row['name']; ?>]</td> 
<td> [<? echo $row['extra']; ?>]</td> 


[ ][ ]
??

   
 
 автор: Trianon   (30.03.2006 в 11:30)   письмо автору
 
   для: kaoz   (30.03.2006 в 11:27)
 

Я думал - для наглядности. Не нужно - уберите.
Правда я не рискнул бы такую таблицу вслепую заполнять.

   
 
 автор: kaoz   (30.03.2006 в 11:33)   письмо автору
 
   для: Trianon   (30.03.2006 в 11:30)
 

в смысле всепую?

перед занесением в бд ясное дело обрабатываю данные, или вы ни это имеет ввиду?

   
 
 автор: kaoz   (30.03.2006 в 11:37)   письмо автору
 
   для: kaoz   (30.03.2006 в 11:33)
 

не могли бы вы прокоментировать ваш код?

   
 
 автор: Trianon   (30.03.2006 в 11:48)   письмо автору
 
   для: kaoz   (30.03.2006 в 11:33)
 

А... зачем квадратные скобки? Незачем. Они у Вас были - я и оставил :)))
Могу, конечно. Прокомментировать первый или второй фрагмент?

   
 
 автор: kaoz   (30.03.2006 в 11:57)   письмо автору
 
   для: Trianon   (30.03.2006 в 11:48)
 

=)

второй

   
 
 автор: Trianon   (30.03.2006 в 12:26)   письмо автору
 
   для: kaoz   (30.03.2006 в 11:57)
 

<? 
$querylist 
= array();   // сюда мы будем складывать запросы к БД на изменение записей.
if(isset($_POST['price']))   // если в форме встретились данные по ценам
{  // ожидается, что будет два массива с ценами и с экстрами 
   // оба массива параллельно проиндексированы первичными ключами от таблицы
   //  в которой нам придется вносить изменения. 
   //  Если это не так - логику ключей можно и нужно исправить
    
foreach($_POST['price'] as $id => $price)   // для каждого price[]-элемента формы
       // берем индекс массива в качестве ключа 
       // и значение поля формы в качестве цены
    

         
$extra $_POST['extra'][$id]; // из параллельного массива экстр - вытаскиваем значение экстры 
           // формируем очередной запрос на изменение в таблице $table 
           //  в записи с id равным ключу
           // полей price и extra на значения взятые из полей формы
           // строку запроса добавляем в список запросов. 
         
$querylist[]  = "UPDATE $table (price,extra) VALUES('$price', '$extra') WHERE id = $id"
    } 

foreach(
$querylist as $query// выполняем каждый запрос в списке.
    
mysql_query($query); 
?>

   
 
 автор: kaoz   (30.03.2006 в 13:13)   письмо автору
 
   для: Trianon   (30.03.2006 в 12:26)
 

огромное спасибо =)

   
Rambler's Top100
вверх

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