Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/28: Рейтинг темы: голосов - 28, средняя оценка - 4.68
DenisKraev

php MySQL ajax корзина

01.06.2011, 18:02. Показов 5878. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Буду благодарен за помощь.
Необходимо создать упрощенную корзину покупок.

Далее показано то что есть на даннный момент.
Есть база, одна таблица tov, два столбца id, name, код показывать нет смысла, все просто.
файл index.php:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
      session_start(); 
    require_once("const.php");
    mysql_connect($dbhost,$dbuser,$dbpass) or die("Не могу соединитться с сервером");
    mysql_select_db($dbname) or die("Не могу подключить базу");     
?>
 
<!DOCTYPE HTML>
<html lang="en-US">
<head>
      <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    <title></title>
    
</head>
<body>
<a href="cart.php">Корзина</a><br>
 
<?     
  $sql='select * from tov'; 
  $rez=mysql_query($sql);
  
  while 
            ($line=mysql_fetch_array($rez))        
            {  
                    $q = $line['name'];    
                    echo $q;
 
?>
продолжение
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<script type="text/javascript">a=<? echo $line['id']; ?>;</script>
                    <script type="text/javascript">
                    var ajax=null;
                    
                    function getAjax()
                    {
                        if (window.ActiveXObject)
                            return new ActiveXObject("Microsoft.XMLHTTP");
                        else if (window.XMLHttpRequest)
                            return new XMLHttpRequest();
                        else
                        {
                            alert("Ваш браузер не поддерживает‚ AJAX.");
                            return null;
                        }
                    }
 
                    function ajaxFunction()
                    {
                        ajax=getAjax();
                        var param;
                        if (ajax != null)
                        {
                            ajax.open("POST","get.php",true);
                           
                            param="in="+encodeURI(document.getElementById(a).value);
                            ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
                            ajax.setRequestHeader("Content-length", param.length);
                            ajax.setRequestHeader("Connection", "close");
                    
                            ajax.onreadystatechange = function()
                            {
                                if(ajax.readyState==4 && ajax.status==200)
                                {
                                    document.getElementById('out').innerHTML=ajax.responseText;
                                }
                            }
                            ajax.send(param);
                        }
                    }
                    </script>
продолжение
PHP
1
2
3
4
5
6
7
8
9
10
11
                    <form name="myform">
                    <? echo("<input id=".$line['id']." type=text value=".$line["id"].">"); ?>
              
                    <input type="button" value="В корзину" onclick="ajaxFunction();" /><br><br>
                    </form>
<?
             }
?>
 
</body>
</html>
Запросом из базы выводит название и id товара, id помещается в форму, чтобы отправить для дальнейшей обработки.
Как видно яваскрипт не в отдельном файле, иначе не работает вообще.

Далее
Файл get.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
    session_start(); 
    require_once("const.php");
    mysql_connect($dbhost,$dbuser,$dbpass) or die("Не могу соединитться с сервером");
    mysql_select_db($dbname) or die("Не могу подключить базу");     
?>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
 
<?php
if (isset($_POST['in'])) 
$arr = array();
$_SESSION['arr'][] = $_POST['in'];
if (isset($_SESSION['arr']) && $_SESSION['arr'] != "") 
            {
              foreach ($_SESSION['arr'] as $id=>$value)
                {
                       $query = mysql_query("select * from tov where id='".$value."'");            
                       $num = mysql_num_rows ($query); 
                       $ar= mysql_fetch_array ($query);
                       echo "<p>" .$ar['name']. "</p>"; 
                 }
             }
?>
Тут запрос в базу по тому самому id который должен придти с index.php, создание массива и запись его в сессию, ну создание переменной для отображения ее в корзине.

И файл корзины cart.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?
session_start(); 
?>
<!DOCTYPE HTML>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script type="text/javascript" src="js/ajax.js"></script>
</head>
<body>
<a href="index.php">Магазин</a>
          <? include ("get.php") ;
               echo $q ;
            ?>  
        <p id="out"></p>
    </form>
</body>
</html>
Тут просто инклуд для отображения переменной с именем.

Дак вот проблема заключается в том что с index.php id шлется последний, то есть, есть 4 записи в базе, значит 4 товара, следовательно id 1, id 2,id 3,id 4 по нажатию на любую кнопку из 4х форм, отправляется только 4я, то есть шлется только последний id.

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

JavaScript
1
param="in="+encodeURI(document.getElementById(a).value);
Или у вас профессионалов есть свое мнение на реализацию этого.

Зранее пардон, я новичек, был бы не новичек наверное бы не спрашивал.

Так же если что то не понятно спросите я поясню, но только окажите помощь.
Спасибо

Добавлено через 1 час 41 минуту
Проблему решил.

Измененные строчки
HTML5
1
<input type="button" value="В корзину" onclick="var id= document.getElementById('<?php echo $id;?>').value; ajaxFunction(id);" />
В JS

JavaScript
1
function ajaxFunction(id)
JavaScript
1
param="in="+encodeURI(id);
А вот это удалить

JavaScript
1
<script type="text/javascript">a=<? echo $line['id']; ?>;</script>
Сам скрипт можно вынести в отдельный файл или в хед поместить, это кому как нравится.

Данный способ наиболее подходит для создания корзины на php и mysql, с использованием технологии ajax для новичков, а так же и опытным программистам. Этот способ прост и гибок.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.06.2011, 18:02
Ответы с готовыми решениями:

Корзина товаров Ajax, PHP, MySQL.
Ребята, киньте кто-нибудь спасательный круг, никак не придумаю как сделать корзину. Есть страница товаров (/catalog.php), сами товары...

Checkbox+AJAX+MYSQL+PHP
Здравствуйте. ПОмогите пожалуйста. У меня есть БД с каналами и ценами. Мне необходимо чтобы при нажатии на чекбоксе считалась сумма в диве....

как отправить строку из таблицы (php, сформированной из mysql) в контейнер ajax при нажатии на строку 2ым клик
Доброго времени суток) уважаемые программисты столкнулся со сложной задачей, даже не знаю в той ли теме формирую вопрос. Суть задачи такая:...

2
0 / 0 / 0
Регистрация: 20.10.2012
Сообщений: 32
08.11.2013, 23:29
Здравствуйте, разбираю ваш код и хочу узнать, что находится в этом файле?
Цитата Сообщение от DenisKraev Посмотреть сообщение
<script type="text/javascript" src="js/ajax.js"></script>
0
Superposition
 Аватар для Padimanskas
950 / 615 / 256
Регистрация: 27.10.2013
Сообщений: 2,083
09.11.2013, 02:19
Цитата Сообщение от Ksuha000 Посмотреть сообщение
хочу узнать, что находится в этом файле?
Судя по имени, это низкоуровневая реализация объекта XMLHttpRequest.

DenisKraev, если вы не нуждаетесь в исправлении какой-либо сложной части кода, а лишь хотите чтобы вам дали полный алгоритм, то присылайте ваши листинги в архиве, не вставляя в тело сообщения т.к. это сбивает с толку, тем более, что внимательно читают не многие. Считаю, что ваше сообщение можно сократить до предлога(или указания)
Цитата Сообщение от DenisKraev Посмотреть сообщение
Необходимо создать упрощенную корзину покупок.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.11.2013, 02:19
Помогаю со студенческими работами здесь

Вытащить переменную из цикла PHP в функцию JS, и через AJAX обратно в PHP
Здравствуйте! Моя задача сделать форму обратной связи, но не самую простую. Изначально на форме отображается список элементов, уже...

Отправить массив из php(handler, сервер) в php(ajax, клиент)
Дело вот какое: имеется база сотрудников. Клиенту в браузер выдаю список (select). При выборе пункта срабатывает событие отправки id...

Корзина на php ajax mysql
Здравствуйте! Пишу корзину для интернет-магазина, нашла пример в сети, как это можно сделать, и разбираю его. Но столкнулась с проблемой:...

Удаление данных с MySQL + Ajax + PHP
Сделал удаление данных с бд, с помощью ajax Источник http://makitweb.com/how-to-delete-record-from-mysql-table-with-ajax/ Все прекрасно...

PHP+jQuery+AJAX+JSON+MySQL
Здравствуйте!!! Помогите пожалуйста! Начала изучать ajax, понадобилось мне это в связи с написанием диплома. Мне необходимо прикрепить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru