Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (3) [1] 2 3  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Корзина для интернет магазина
alsmev  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 19
Пользователь №: 36368
На форуме: 12 лет, 3 месяца, 19 дней
Карма:




Здравствуйте! Помогите пожалуйста решить проблему..

Есть корзина интернет магазина cart.php

session_start();


if (!isset($_SESSION['basket'])) {
$_SESSION['basket'] = array();
}


if(isset($_GET['id']) && mysql_result(mysql_query("SELECT COUNT(*) FROM `tovar` WHERE `id`='".intval($_GET['id'])."'"), 0) == 1) {
$id = intval($_GET['id']);
$count = isset($_POST['count'])? intval($_POST['count']) : 1; // если юзер выбрал количество - записываем, иначе - количество = 1
$_SESSION['basket'][$id]=$count; // ключ - айдишник товара, значение - количество товара

}
$listIds = array_keys($_SESSION['basket']); // получаем массив ключей (т.е. айдишников товаров)

if (count($listIds) > 0) {
$sql = "SELECT * FROM `tovar` WHERE `id` IN (".implode(',', $listIds).")";
$result=mysql_query($sql);
while($res = mysql_fetch_assoc($result)) {
$price_all = $res['price'] * $_SESSION['basket'][$res['id']]; // второй параметр - ранее записанное количество товара
echo "</br></br><h1>".$res['price']."</h1>";
echo "Полная цена (цена на количество): {$price_all}";
}
}
else {
echo 'Товаров в корзине нет';
}



Далее мы переходим на форму заказа zakaz.php

echo '<form action="zakaz.php?act=ok" method="post">
ФИО<br/>
<input type="text" name="name" maxlength="120" value=""/><br/>
Телефон<br/>
<input type="text" name="tel" maxlength="50" value=""/><br/>
Электронная почта<br/>
<input type="text" name="mail" maxlength="120" value=""/><br/>
Город<br/>
<input type="text" name="city" maxlength="120" value=""/><br/>
<input type="submit" class="ibutton" value="Ок" />'
;



После нажатия кнопки ОК данные фильтруются и добавляются в базу:

$name=mysql_real_escape_string(htmlspecialchars(trim($_POST['name'])));

$tel=mysql_real_escape_string(htmlspecialchars(trim($_POST['tel'])));

$mail=mysql_real_escape_string(htmlspecialchars(trim($_POST['mail'])));

$city=mysql_real_escape_string(htmlspecialchars(trim($_POST['city'])));



mysql_query("INSERT INTO `zakaz` SET `name`='$name', `tel`='$tel', `mail`='$mail', `city`='$city';") or die(mysql_error());



$id_zakaz = mysql_insert_id();




И тут возникает такая проблема, мне нужно еще добавить в таблицу "zakaz_tovar" id и колличество всех выбранных пользователем товаров.

Я делаю так:
$id_tovar = $_SESSION['basket'][$id];
$count = $_SESSION['basket'][$id]=$count;
mysql_query("INSERT INTO `zakaz_tovar` SET `id_zakaz`='$id_zakaz', `id_tovar`='$id_tovar', `count`='$count';") or die(mysql_error());

Но в базу ничего не заносится..
Что я не так делаю?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
alsmev  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 19
Пользователь №: 36368
На форуме: 12 лет, 3 месяца, 19 дней
Карма:




Я так понял у меня неверный запрос. Помогите его исправить, заранее спасибо!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 6466
Пользователь №: 35718
На форуме: 12 лет, 5 месяцев, 25 дней
Карма: 208




все поля в таблице varchar?
$name=mysql_real_escape_string(trim($_POST['name']));
$tel=mysql_real_escape_string(trim($_POST['tel']));
$mail=mysql_real_escape_string(trim($_POST['mail']));
$city=mysql_real_escape_string(trim($_POST['city']));

echo $query="INSERT INTO `zakaz` (`name`,`tel`,`mail`,`city`) VALUES( '$name', '$tel', '$mail', '$city');"

$res=mysql_query($query) or die(mysql_error());

$id_zakaz = mysql_insert_id();

покажите эхо запроса


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
alsmev  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 19
Пользователь №: 36368
На форуме: 12 лет, 3 месяца, 19 дней
Карма:




эти данные заносятся правильно.. Проблема со вторым запросом..

$id_tovar = $_SESSION['basket'][$id];
$count = $_SESSION['basket'][$id]=$count;
mysql_query("INSERT INTO `zakaz_tovar` SET `id_zakaz`='$id_zakaz', `id_tovar`='$id_tovar', `count`='$count';") or die(mysql_error());
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
OleKh  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 753
Пользователь №: 32032
На форуме: 13 лет, 1 месяц, 10 дней
Карма: 18




чтобы проверить в чем проблема, можно заменить переменные на опр.значения, выполнить запрос и посмотреть в базе добавлились значения или нет, например
mysql_query("INSERT INTO `zakaz_tovar` SET `id_zakaz`='1', `id_tovar`='2', `count`='3'");


вообще странно как сработал запрос, разве ";" там место после city?
mysql_query("INSERT INTO `zakaz` SET `name`='$name', `tel`='$tel', `mail`='$mail', `city`='$city';") or die(mysql_error());
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
alsmev  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 19
Пользователь №: 36368
На форуме: 12 лет, 3 месяца, 19 дней
Карма:




mysql_query("INSERT INTO `zakaz_tovar` SET `id_zakaz`='1', `id_tovar`='2', `count`='3'");

работает отлично....

а вот

$id_tovar = $_SESSION['basket'][$id];
$count = $_SESSION['basket'][$id]=$count;
mysql_query("INSERT INTO `zakaz_tovar` SET `id_zakaz`='$id_zakaz', `id_tovar`='$id_tovar', `count`='$count';") or die(mysql_error());

нивкакую не хочет(( в поле id_tovar добавляет Array, а в поле count вообще пустоту..
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
OleKh  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 753
Пользователь №: 32032
На форуме: 13 лет, 1 месяц, 10 дней
Карма: 18




$id = intval($_GET['id']);

после $count можно добавить и посмотреть что в переменных

var_dump ($id_tovar);
var_dump ($count );
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 6466
Пользователь №: 35718
На форуме: 12 лет, 5 месяцев, 25 дней
Карма: 208




Цитата
эти данные заносятся правильно

alsmev, сорь я не вглядывался :)
я еще подумал куда делись числовые поля которые вы пихаете как строки

в поле id_tovar добавляет Array

смею предположить что у вас и есть массив идентификаторов товаров, а не один идентификатор товара

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

трудно?

$query="INSERT INTO `zakaz_tovar` SET `id_zakaz`=$id_zakaz, `id_tovar`=$id_tovar, `count`=$count;"


а если у вас товаров много, то необходимо собирать многострочный INSERT
надеюсь, всю кучу товаров вы не хотите запихать в одно поле...
___
а вообще конечно при таком уровне знаний, рановато вам браться "за корзины"


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
alsmev  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 19
Пользователь №: 36368
На форуме: 12 лет, 3 месяца, 19 дней
Карма:




ну да правильно, в таблицу zakaz_tovar нужно добавить массив с id и колличеством товаров, где ключевое поле id товара, надеюсь правильно объяснил
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
OleKh  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 753
Пользователь №: 32032
На форуме: 13 лет, 1 месяц, 10 дней
Карма: 18




тут в сессионную переменную добавляется количество товара
$_SESSION['basket'][$id]=$count; // ключ - айдишник товара, значение - количество товара


а тут, id товара присваивается кол-во товара
$id_tovar = $_SESSION['basket'][$id];


тут тоже самое, но присваивается переменной count
$count = $_SESSION['basket'][$id]=$count;
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
alsmev  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 19
Пользователь №: 36368
На форуме: 12 лет, 3 месяца, 19 дней
Карма:




OleKh, не понял вас
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 6466
Пользователь №: 35718
На форуме: 12 лет, 5 месяцев, 25 дней
Карма: 208




alsmev, для начала надо грамотно организовать БД.
Потом еще надо писать кучу проверок на наличие товара на складе, на резерв товара на время оформления заказа.

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


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
alsmev  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 19
Пользователь №: 36368
На форуме: 12 лет, 3 месяца, 19 дней
Карма:




Valick, я только учусь.. уже второй день мучаюсь с этой проблемой..
сам скрипт магазина уже почти готов, осталось доделать оформление заказа и помелочи исправить баги и добавить некоторые доработки..
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
OleKh  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 753
Пользователь №: 32032
На форуме: 13 лет, 1 месяц, 10 дней
Карма: 18




alsmev, что-то конкретно не понятно или вообще всё ? )

Цитата
в поле id_tovar добавляет Array, а в поле count вообще пустоту


PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
alsmev  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 19
Пользователь №: 36368
На форуме: 12 лет, 3 месяца, 19 дней
Карма:




я ведь написал)
в таблицу zakaz_tovar нужно добавить массив с id и колличеством товаров, где ключевое поле id товара..


$id_tovar = $_SESSION['basket'][$id];
$count = $_SESSION['basket'][$id]=$count;
mysql_query("INSERT INTO `zakaz_tovar` SET `id_zakaz`='$id_zakaz', `id_tovar`='$id_tovar', `count`='$count';") or die(mysql_error());

нивкакую не хочет(( в поле id_tovar добавляет Array, а в поле count вообще пустоту..
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (3) [1] 2 3  Ответ в темуСоздание новой темыСоздание опроса