$.post("../php/script.php", {username:name, good:obj}
если пройтись циклом по массиву $_POST
foreach ($_POST as $key=>$val)
то в нём обрабатывается пара good:obj, а как получить доступ к username:name? заранее благодарю
Спустя 2 минуты, 19 секунд (25.05.2011 - 19:45) Lenarfate написал(а):
дык видимо у тебя их и нет в ПОСТе
Спустя 4 минуты, 40 секунд (25.05.2011 - 19:49) l@pteff написал(а):
но print_r($_POST) выводит
Цитата |
[username] =>name[good] => obj |
Спустя 1 час, 8 минут, 54 секунды (25.05.2011 - 20:58) l@pteff написал(а):
вспомнил, это можно сделать так:
но как это применить в таком коде:
Выводит Нет такого пользователя
если поменять местами передаваемые параметры:
выводится Товара нет на складе
foreach ($_POST as $key=>$val) {
$a++; if ($a>1) break;
echo $key:$val;
}
но как это применить в таком коде:
foreach ($_POST as $key=>$val)
$query1 = mysql_query("select id_good from goods where type_good like '$val'");
$query11=mysql_query("select id_user from users where login like '$val'");
$number=mysql_num_rows($query1);
$number1=mysql_num_rows($query11);
if ($number==0) {exit('Товара нет на складе');}
if ($number1==0) {exit('Нет такого пользователя');}
Выводит Нет такого пользователя
если поменять местами передаваемые параметры:
$.post("../php/script.php", {good:obj, username:name}
выводится Товара нет на складе
Спустя 1 час, 10 минут, 33 секунды (25.05.2011 - 22:09) l@pteff написал(а):
т.е. получается что в каждом из запросов php-скрипта выше обрабатывается лишь значение которое было передано из аякса последним, т.о. переменная $val в обоих запросах одинаковая, отсюда по-любому срабатывает одно из условий невыполнения скрипта. Если кто знает как задействовать здесь оба передаваемых параметра, подскажите плиз
Спустя 10 часов, 22 минуты, 33 секунды (26.05.2011 - 08:31) linker написал(а):
Если $_POST содержит
[username] =>name, то код
[good] => obj
foreach($_POST as $key=>$val)должен все их вывести. Не понимаю в чём здесь проблема.
{
echo $key . ' = ' . $val;
}
Спустя 2 часа, 16 минут, 1 секунда (26.05.2011 - 10:47) pavlik написал(а):
Цитата (l@pteff @ 25.05.2011 - 17:58) |
foreach ($_POST as $key=>$val) $query1 = mysql_query("select id_good from goods where type_good like '$val'"); $query11=mysql_query("select id_user from users where login like '$val'"); $number=mysql_num_rows($query1); $number1=mysql_num_rows($query11); if ($number==0) {exit('Товара нет на складе');} if ($number1==0) {exit('Нет такого пользователя');} |
Исходя из этого, действительно foreach пробежался по всем елементам и установил указатель на последнем элементе массива.
И только потом начал выполняться остальной код
Видимо автор забыл поставить фигурные скобки просто.
Должно выглядеть так:
foreach ($_POST as $key=>$val)
{
$query1 = mysql_query("select id_good from goods where type_good like '$val'");
$query11=mysql_query("select id_user from users where login like '$val'");
$number=mysql_num_rows($query1);
$number1=mysql_num_rows($query11);
if ($number==0) {exit('Товара нет на складе');}
if ($number1==0) {exit('Нет такого пользователя');}
}
Спустя (26.05.2011 - 10:47) sergeiss написал(а):
Цитата (l@pteff @ 25.05.2011 - 21:58) |
foreach ($_POST as $key=>$val) $query1 = mysql_query("select id_good from goods where type_good like '$val'"); $query11=mysql_query("select id_user from users where login like '$val'"); $number=mysql_num_rows($query1); $number1=mysql_num_rows($query11); if ($number==0) {exit('Товара нет на складе');} if ($number1==0) {exit('Нет такого пользователя');} |
В этом коде у тебя в цикл входит только первая строка с данными, идущая после объявления цикла

Ты или в фигурные скобки заключи тело цикла, или определись, что же ты хочешь получить.
Спустя 10 часов, 28 минут, 44 секунды (26.05.2011 - 21:16) l@pteff написал(а):
я понимаю что нужны фигурные скобки но не соображу где их ставить.
Получается вот что: если сделать хотя бы так:
передав данные в таком порядке:
Выводится: Товара нет на складе
Если передать в таком порядке:
Вывод: Нет такого пользователя
почему одновременно не находятся в базе и пользователи и товары?
Получается вот что: если сделать хотя бы так:
foreach ($_POST as $key=>$val)
{
$query1 = mysql_query("select id_good from goods where type_good like '$val'");
$number=mysql_num_rows($query1);
}
if ($number==0) {exit('Товара нет на складе');}
foreach ($_POST as $key=>$val) {
$query11=mysql_query("select id_user from users where login like '$val'");
$number1=mysql_num_rows($query11);
}
if ($number1==0) {exit('Нет такого пользователя');}
передав данные в таком порядке:
{good:obj, username:name}
Выводится: Товара нет на складе
Если передать в таком порядке:
{username:name, good:obj}
Вывод: Нет такого пользователя
почему одновременно не находятся в базе и пользователи и товары?
Спустя 23 минуты, 56 секунд (26.05.2011 - 21:40) pavlik написал(а):
Цитата (l@pteff @ 26.05.2011 - 18:16) |
почему одновременно не находятся в базе и пользователи и товары? |
у тебя массив $_POST содержит 2 элемента usename и good
Кодгда ты этот массив крутишь циклом foreach:
в $val попадает 1 значение username
далее происходит запрос к бд
$query1 = mysql_query("select id_good from goods where type_good like '$val'");
и получение результата
$number=mysql_num_rows($query1);
потом ты делаешь проверку
if ($number==0) {exit('Товара нет на складе');}
Поскольку в $val содержится "name", а не "obj" естественно условие выполнится и произойдет твоя остановка выполнения скрипта с выводом сообщения "Товара нет на складе";
Спустя 12 минут, 53 секунды (26.05.2011 - 21:53) l@pteff написал(а):
Цитата |
Кодгда ты этот массив крутишь циклом foreach: в $val попадает 1 значение username |
а как сделать чтоб попадали все, а не переданное последним?
Спустя 8 минут, 20 секунд (26.05.2011 - 22:01) pavlik написал(а):
я не понимаю, а зачем использовать foreach?
Вот как-то так может?
$query1 = mysql_query("select id_good from goods where type_good like '".$_POST[good]."'");
$query11=mysql_query("select id_user from users where login like '".$_POST[username]."'");
$number=mysql_num_rows($query1);
$number1=mysql_num_rows($query11);
$errors = array();
if ($number==0) {$errors[] = 'Товара нет на складе');}
if ($number1==0) {$errors[] = 'Нет такого пользователя';}
if(count($errors))
{
$message = join(' и ', $errors); // Делаем сообщение об обнаруженных ошибках если оба неверны то будет "Товара нет на складе и Нет такого пользователя"
exit($massage);
}
Вот как-то так может?
Спустя 7 минут, 44 секунды (26.05.2011 - 22:09) l@pteff написал(а):
то что надо! спасибо за помощь