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

Форум PHP

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

 

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

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

тема: Несложная задача на смекалку
 
 автор: vitroot   (21.11.2007 в 10:41)   письмо автору
 
 

У меня есть таблица. Допустим, в ней всего 2(3,4,5,10,100) строки, в каждой из которых какое-либо значение, например, цифра. Напротив каждой цифры в соседних столбцах кнопка (или ссылка). Подскажите, как скрипт на странице может определить, напротив какой именно цифры нажата была кнопка(ссылка)?

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

   
 
 автор: elenaki   (21.11.2007 в 10:59)   письмо автору
 
   для: vitroot   (21.11.2007 в 10:41)
 

да... немало смекалки потребуется, чтоб понять, что вы хотите....

почему бы не дать кнопкам id, в соответствии с которым потом находить нужную запись и
удалять ее?

   
 
 автор: vitroot   (21.11.2007 в 11:07)   письмо автору
 
   для: elenaki   (21.11.2007 в 10:59)
 

Неужели я так непонятно написал? :) Вроде все ясно... Таблицы - это имеются ввиду простые HTML-таблицы, а не, например, MySQL-таблицы.
По поводу ID кнопкам можно подробней?

   
 
 автор: vitroot   (21.11.2007 в 11:11)   письмо автору
 
   для: elenaki   (21.11.2007 в 10:59)
 

А чтобы было, надеюсь, еще понятней - опишу. Вообще это все делается для корзинки магазина. Точнее это управление своей корзиной с покупками в интернет-магазине. То есть я, например, напихал в корзину всякого добра и кое-чего добавил лишнего. Я захожу по кнопке "Офромить товар" на страницу управления товарами в корзине и вижу список всех товаров, например, в виде HTML-таблицы. "Вот и тот хлам, который мне уже не нужен - убить его!" Жму на кнопочку напротив товара, и товар пропадает из корзины и, соответственно, не учитывается при оформлении товара.

   
 
 автор: Faraon   (21.11.2007 в 11:19)   письмо автору
 
   для: vitroot   (21.11.2007 в 11:11)
 

А товар положенный в корзину где хранится?

   
 
 автор: vitroot   (21.11.2007 в 11:45)   письмо автору
 
   для: Faraon   (21.11.2007 в 11:19)
 

когда покупатель кликает на ссылку "положить в корзину" в таблице MySQL автоматом создается временаая таблица с названием basket.$user['id'], которая убивается при выходе пользователя из магазина. В этой таблице и хранятся товары, которые лежит в корзине.

   
 
 автор: sim5   (21.11.2007 в 11:44)   письмо автору
 
   для: vitroot   (21.11.2007 в 11:11)
 

Даете этой кнопочке ссылку на скрипт обработки товаров корзины, с переменной del=id товара. Принмаете $_GET["del"] и удаляете этот товар из корзины.

   
 
 автор: vitroot   (21.11.2007 в 11:48)   письмо автору
 
   для: sim5   (21.11.2007 в 11:44)
 

это и так понятно. Не понятно, по каким бразом мне узнать id товара, который надо удалить. Как именно связать кнопку с id-товара?
На данный момент кратко опишу скрипт вывода товаров в ячейке-таблице корзины:

$temp_basket=mysql_query("SELECT * FROM `basket_".$users['id']."`");
if($temp_basket)
{
echo "<table>";
  for($c=0; $c < mysql_num_rows($temp_basket); $c++)
  {
   echo "<tr>";
   $f = mysql_fetch_array($temp_basket);
   echo "<td>$f[tovar]</td>
             <td>$f[sum]</td>";
   echo "</tr>";
  }
echo "</table>";

   
 
 автор: sim5   (21.11.2007 в 11:52)   письмо автору
 
   для: vitroot   (21.11.2007 в 11:48)
 

Странно как? Вы ведь предлагаете товар на страницах под их ID скорее всего, а не по названиям, значит можете скриптом контролировать какой товар (его ID) положен пользователем в корзину, и "прикрутить" такую ссылку при выводе корзины труда не составит.

   
 
 автор: Faraon   (21.11.2007 в 11:53)   письмо автору
 
   для: vitroot   (21.11.2007 в 11:48)
 

У вас в этой таблице уникальные id записи создаются ?

   
 
 автор: vitroot   (21.11.2007 в 11:58)   письмо автору
 
   для: Faraon   (21.11.2007 в 11:53)
 

ID, конечно, есть. Страница, на которой отображаются информация о товаре и ссылка на "положить в корзину" имеет в адресе, само собой ID товара. Но в таблице `temp_basket` (в БД для корзины) все товары ложаться каждый в новую строчку. Не понимаю, может и глупый. Но не буду же я создавать для каждого товара отдельный скрипт-обработчик вида buy_id.php? :)

   
 
 автор: sim5   (21.11.2007 в 12:01)   письмо автору
 
   для: vitroot   (21.11.2007 в 11:58)
 

>все товары ложаться каждый в новую строчку

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

   
 
 автор: sim5   (21.11.2007 в 11:56)   письмо автору
 
   для: vitroot   (21.11.2007 в 11:48)
 

$f[tovar] - это что, id товара или его название? Да, действительно, как предлагает Faraon, по уникальным id записей в этой таблице, тоже можно организовать удаление товара из корзины.

   
 
 автор: vitroot   (21.11.2007 в 12:00)   письмо автору
 
   для: sim5   (21.11.2007 в 11:56)
 

это я упростил немного. Это - `tovar` - это название товара, а `sum`, наример - его цена. Таким же образом хочу вставить еще одну строку с кнопкой для удаления этого товара из корзины

   
 
 автор: elenaki   (21.11.2007 в 12:03)   письмо автору
 
   для: vitroot   (21.11.2007 в 12:00)
 

не строку, а столбец в строку. строка - это товар, а столбцы - данные этого конкретного товара.
как и кнопка на удаление. в другой строке будет другой товар с другим id и другой кнопкой.

   
 
 автор: sim5   (21.11.2007 в 12:03)   письмо автору
 
   для: vitroot   (21.11.2007 в 12:00)
 

См. выше. Либо по уникальным id записей, либо добавить id товаров, и не ложить каждый в отдельную запись.

   
 
 автор: vitroot   (21.11.2007 в 12:02)   письмо автору
 
   для: sim5   (21.11.2007 в 11:56)
 

просто блин не могу догнать, как узнать, напротив какого именно ID нажата кнопка :(

   
 
 автор: sim5   (21.11.2007 в 12:06)   письмо автору
 
   для: vitroot   (21.11.2007 в 12:02)
 

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

   
 
 автор: vitroot   (21.11.2007 в 12:11)   письмо автору
 
   для: vitroot   (21.11.2007 в 12:02)
 

вроде че-то начинаю понимать...

<input type="submit" name="$ID" value="Delete">


А в обработчике уже примерно так:

DELETE FROM `basket_1` WHERE `id` = $ID


я прав?

   
 
 автор: KPETuH   (21.11.2007 в 12:14)   письмо автору
 
   для: vitroot   (21.11.2007 в 12:11)
 

типа того :)

   
 
 автор: vitroot   (21.11.2007 в 12:16)   письмо автору
 
   для: KPETuH   (21.11.2007 в 12:14)
 

таким образом, как я понимаю, вообще не обязательно даже знать ID товара, поскольку имя конепке можно задать, например, названием товара... ?

   
 
 автор: sim5   (21.11.2007 в 12:37)   письмо автору
 
   для: vitroot   (21.11.2007 в 12:16)
 

Можно и по имени, но вот бывают товары с одинаковыми именами, а таковые действительно есть, тогда как? Лучше использовать все таки уникальный ID товара.

PS. <input type="submit" name="$ID" value="Delete"> не пойдет, вам придется на каждый товар кнопку SUBMIT вешать, а потом ключи полученного массива проверять, чтобы определить ID удаляемого товара. Да и почему не использовать GET запрос, проще и ничем не хуже POST в вашем случае.

   
 
 автор: vitroot   (21.11.2007 в 12:49)   письмо автору
 
   для: sim5   (21.11.2007 в 12:37)
 

А в чем поблема повесить SUBMIT на каждый товар? Один хрен все в одной строчке цикла произойдет...
Я понимаю, конечно, можно вместо SUBMIT'а ссылку простую (например, картинкой) сделать, тогда, конечно, придется только через $_GET :)

   
 
 автор: sim5   (21.11.2007 в 12:53)   письмо автору
 
   для: vitroot   (21.11.2007 в 12:49)
 

<input type="submit" name="$ID" value="Delete"> - что вы будете получать в этом случае? Если форма, то луше оставить один SUBMIT для ее отправки, а в корзине для товаров добавить чекбоксы, например, имеющие значения ID товаров или записей в таблице корзины. Вот те что будут омечены и будут удалены, так можно за одну отпавку формы удалить несколько товаров, что лучше для вашего пользователя. Да и не мешало бы добавить кнопку удаления всего (очистка корзины).

   
 
 автор: vitroot   (21.11.2007 в 12:51)   письмо автору
 
   для: sim5   (21.11.2007 в 12:37)
 

Единственно возникнет вопрос, данные какого массива PHP обрабатывает быстрее - $_POST или $_GET? И так же, какие данные быстрее загрузит HTML - SUBMIT'ы или HREF'ы? Но, дума, эти массивы обрабатываются одинаково, так же как и загрузка ссылки либо кнопки... Если я не прав - поправьте, буду только признателен :)

   
 
 автор: Trianon   (21.11.2007 в 13:01)   письмо автору
 
   для: vitroot   (21.11.2007 в 12:51)
 

скорость обработки данных сервером в данном случае - фактор несущественный.
Хотите быструю корзину - пишите её полностью на стороне клиента - на JS.

   
 
 автор: vitroot   (21.11.2007 в 13:08)   письмо автору
 
   для: Trianon   (21.11.2007 в 13:01)
 

В дальнейшем для "модернизации" и заодно повышения скорости расчитываю добавить Ajax (который, правда, придется тоже изучить), тогда быстрее будет. "Работа с корзиной в реальном времени" :)

   
Rambler's Top100
вверх

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