[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ajax и вывод значений из базы данных
l@pteff
здравствуйте, помогите разобраться: есть форма заказа:


<form method="post" action="../php/script.php">
<input
id="good1" name="good1" type="hidden" value="Товар1"><a href="#">Товар1</a></input>
<input
type="submit" id="subm1" class="basket" value="" title="Добавить в корзину"/><br>

<input
id="good2" name="good2" type="hidden" value="Товар2"><a href="#">Товар2</a></input>
<input
type="submit" id="subm2" class="basket" value="" title="Добавить в корзину" /><br>

<input
id="good3" name="good3" type="hidden" value="Товар3"><a href="#">Товар3</a></input>
<input
type="submit" id="subm3" class="basket" value="" title="Добавить в корзину" /><br>

<span
id="total"> </span>


затем немного ajax


$(function() {
$('#total').slideUp();
$(':submit').click(function(e) {
e.preventDefault();
var obj = $(this);
ajax_sum(obj);
});

function ajax_sum(obj) {
var sd = obj.prev().val();
$.post('../php/script.php', {good2:sd}, function(data) {
if (data.length>0) {
$('#total').html(data).show();
}
}
)
}

}
);


скрипт обработки script.php:


$good = $_POST['good2'];

$query = mysql_query("select type_good, price_good from goods where type_good LIKE '%$good%'");

$row = mysql_fetch_assoc($query);
echo '<table><tr><td>'.$row['type_good'].'</td><td>'.$row['price_good'].'</td></tr></table>';


При нажатии на кнопку "Добавить в корзину" значение инпута, соответствующего этой кнопке отправляется в бд, где есть столбцы type_good (название товара) и price_good (его цена). Если соответствие найдено, в <span id="total"> помещается название товара и цена.
У меня при нажатии на второй сабмит возвращается название и цена первого товара из списка а не второго, да и проверял дамп массива $row, выглядит так:

Цитата

[type_good] => Товар1 [price_good] => цена


как добиться соответствия? заранее благодарю



Спустя 8 минут, 21 секунда (4.05.2011 - 21:17) alex12060 написал(а):
Вот это:

<input type="submit" id="subm3" class="basket" value="" title="Добавить в корзину" /><br>


У тебя встречается 3 раза, поэтому скрипт не понимает, что ему брать, поэтому, по умолчанию, он берет 0 элемент, соответствующий этому сабмиту.

Но меня смущает твое объявление, по-идее, все должно быть нормально. Может, в БД что-то не то?

Спустя 14 минут, 29 секунд (4.05.2011 - 21:31) l@pteff написал(а):
а как подправить? не прописывать же для каждого сабмита отдельный скрипт... wink.gif

Спустя 11 минут, 14 секунд (4.05.2011 - 21:42) l@pteff написал(а):
вряд ли это из-за БД, например при таком php
 
if ($query)
$a=mysql_result($query, 1, 'type_good');
$b=mysql_result($query, 1, 'price_good');

echo '<table><tr><td>'.$a.'</td><td>'.$b.'</td></tr></table>';

после щелчка на любом из сабмитов выведет Товар2 цена

Спустя 59 секунд (4.05.2011 - 21:43) l@pteff написал(а):
наверняка косяки в аяксе

Спустя 6 минут, 39 секунд (4.05.2011 - 21:50) Evilsoul написал(а):
однозначно аякс косой

Спустя 3 минуты, 23 секунды (4.05.2011 - 21:53) Evilsoul написал(а):
вообще не знаю где ты такое достал но это ужас, данные передаются через амперсанд как гет параметры...
вообще держи читай, объяснять долго...
в данном примере всё ок, только с кроссбраузерностью в ИЕ проблема, хотя твой вариант ни один браузер корректно не поддержит, погугли, решишь быстро...

Спустя 23 часа, 50 минут, 50 секунд (5.05.2011 - 21:44) l@pteff написал(а):
исправил ajax так

$(function() {
$('#total').slideUp();
$('.basket').click(function(e) {
e.preventDefault();
var obj=$(this).prev().val();
$.ajax({
type: "post",
url: "../php/script.php",
data: obj,
success: function(html){
$("#total").html(html).show();
}
}
);

});
});


изменил php-скрипт:

$good1=addslashes($_POST['good1']);
$good2=addslashes($_POST['good2']);
$good3=addslashes($_POST['good3']);
$good4=addslashes($_POST['good4']);
$good5=addslashes($_POST['good5']);


$query = mysql_query("select type_good, price_good from goods where type_good LIKE '$good2'");

$row = mysql_fetch_assoc($query);
echo '<table><tr><td>'.$row['type_good'].'</td><td>'.$row['price_good'].'</td></tr></table>';

но при нажатии на субмит ничего не выводится... если без аякса, то выводится Товар2 и цена, как и нужно. Переменная obj в php вроде бы передаётся, где в таком случае может быть ошибка?

Спустя 1 час, 23 секунды (5.05.2011 - 22:44) Лена написал(а):
А вы проверяли при аяксе данные в php-скрипт вообще доходят?
print_r($_POST); делали?

Если там данные есть, в принимающем скрипте:
success: function(html){
alert(html);
$("#total").html(html).show();
}

окно с возвращенными данными выскакивает?

var obj отправляется не пустая?

Спустя 10 часов, 19 минут, 3 секунды (6.05.2011 - 09:04) l@pteff написал(а):
при аяксе возвращает пустой массив sad.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.