[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: mysql_fetch_array(): supplied argument is not a va
Гость_Андрей
Добрый день, ситуация следующая:
На главной форме имеются импуты (их 3, тип инт) по ним идет выборка из БД. Выборку по ОДНОМУ из импутов зделал (при условии что другие пусты), работает как надо.

Надо зделать выборку по двум и трем импутам. Вот здесь и выходит эта ошибка.

П.С. нужные поля в БД есть (без ошибок )))))

ВОТ код для выборки по одному (первому) полю:

if ($_POST[number_1] !=="" and $_POST[number_2] == "" and $_POST[number_3] == "")
{
$sqlAll = "select * from users where ".
"number_1='".$_POST[number_1]."' or ".
"number_2='".$_POST[number_1]."' or ".
"number_3='".$_POST[number_1]."'" ;

Работает))))

Попыталса написать для выборки по двум полям:

else if ($_POST[number_1] !=="" and $_POST[number_2] !=="" and $_POST[number_3] =="")
{
$sqlAll = "select * from users where ".
"number_1='".$_POST[number_1]."' or ".
"number_1='".$_POST[number_2]."' or ".
"number_2='".$_POST[number_1]."' or ".
"number_3='".$_POST[number_1]."' or ".
"number_2='".$_POST[number_2]."' or ".
"number_3='".$_POST[number_2]."' or ";
}




Спустя 16 минут, 25 секунд (10.11.2010 - 13:28) Sanchopansa написал(а):
$where = array();
if ($_POST['number_1']) $where[] = "`number_1`='".$_POST['number_1'];
if ($_POST['number_2']) $where[] = "`number_2`='".$_POST['number_2'];
if ($_POST['number_3']) $where[] = "`number_3`='".$_POST['number_3'];


$sqlAll = "select * from users where " . implode(' AND ', $where);

Спустя 8 минут, 24 секунды (10.11.2010 - 13:36) Guest написал(а):
то Sanchopansa:
Ошибка осталась и если честно не совсем понимаю как это работает

Спустя 4 минуты, 46 секунд (10.11.2010 - 13:41) Guest написал(а):
$resultsAll = mysql_query($sqlAll);
echo "<table border='1'>";
while ($row = mysql_fetch_array($resultsAll))
{
echo "<tr>";
echo "<td>";
echo $row["name"];
echo "<td>";
echo $row["email"];
echo "<td>";
echo $row["number_1"];
echo "<td>";
echo $row["number_2"];
echo "<td>";
echo $row["number_3"];
echo "</td>";
echo "</tr>";
}
echo "</table>";

МОЖЕТ это пможет

Спустя 8 минут, 40 секунд (10.11.2010 - 13:49) Sanchopansa написал(а):
$sqlAll = "select * from users where " . implode(' OR ', $where);

попробуй поставить OR

Спустя 6 минут, 10 секунд (10.11.2010 - 13:56) Guest написал(а):
так же))
а если не сложно распиши как код рабоатет

Спустя 8 минут, 15 секунд (10.11.2010 - 14:04) Guest написал(а):
УВАЖАЕМЫЕ Исправил всего то нда убрать OR в последней строчке))))))))))
"number_3='".$_POST[number_2]."' or ";

Спустя 28 секунд (10.11.2010 - 14:04) Guest написал(а):
и все таки КАК РАБОТАЕТ ПРИВЕДЕННЫЙ КОД интересно)

Спустя 2 минуты, 6 секунд (10.11.2010 - 14:06) Guest написал(а):
Цитата (Гость_Андрей @ 10.11.2010 - 10:11)
Добрый день, ситуация следующая:
На главной форме имеются импуты (их 3, тип инт) по ним идет выборка из БД. Выборку по ОДНОМУ из импутов зделал (при условии что другие пусты), работает как надо.

Надо зделать выборку по двум и трем импутам. Вот здесь и выходит эта ошибка.

П.С. нужные поля в БД есть (без ошибок )))))

ВОТ код для выборки по одному (первому) полю:

if ($_POST[number_1] !=="" and $_POST[number_2] == "" and $_POST[number_3] == "")
{
$sqlAll = "select * from users where ".
"number_1='".$_POST[number_1]."' or ".
"number_2='".$_POST[number_1]."' or ".
"number_3='".$_POST[number_1]."'" ;

Работает))))

Попыталса написать для выборки по двум полям:

else if ($_POST[number_1] !=="" and $_POST[number_2] !=="" and $_POST[number_3] =="")
{
$sqlAll = "select * from users where ".
"number_1='".$_POST[number_1]."' or ".
"number_1='".$_POST[number_2]."' or ".
"number_2='".$_POST[number_1]."' or ".
"number_3='".$_POST[number_1]."' or ".
"number_2='".$_POST[number_2]."' or ".
"number_3='".$_POST[number_2]."' or ";
}

or замени на and

Спустя 13 минут, 4 секунды (10.11.2010 - 14:20) Sanchopansa написал(а):
код работает так
$where = array();

создаем масив
if ($_POST['number_1']) $where[] = "`number_1`='".$_POST['number_1'];

проверяем если в поле было введено значение то добавляем запись в массив
if ($_POST['number_2']) $where[] = "`number_2`='".$_POST['number_2'];
if ($_POST['number_3']) $where[] = "`number_3`='".$_POST['number_3'];

и так для каждого полля ввода
$sqlAll = "select * from users where " . implode(' AND ', $where); 

формируем запрос
и в конечном результате запрос должен выглядеть так (если введены данные во все поля)
select * from users where `number_1`='значение_с_поля_ввода_1' AND  `number_2`='значение_с_поля_ввода_2' AND `number_3`='значение_с_поля_ввода_3' 
Быстрый ответ:

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