Поиск в БД

xpycteamset
На сайте с 05.10.2009
Offline
129
562

Вопрос в следующем.

Есть virtuemart и есть не существующие категории.

Думаю через запрос в БД понять существует ли ID категории или нет.

Если ID есть все хорошо. Если нет то либо 404 выдавать либо 301.

Запрос получился у меня такой, а вот как дальше быть?

$db->query( "SELECT * FROM #__{vm}_category WHERE '%$category_id%' OR sname LIKE '%$category_id%'");

xpycteamset
На сайте с 05.10.2009
Offline
129
#1

По идее вроде правильно но ошибка Resource id #136 😒

$zaprosid = "SELECT * FROM `xxx_xx_category` WHERE `category_id` LIKE '%$category_id%'";
mysql_query($zaprosid) or die (mysql_error());
$resultid = mysql_query($zaprosid);
echo $resultid;
Gerga
На сайте с 02.08.2015
Offline
94
#2

xpycteamset, это не ошибка. Результат работы функции mysql_query необходимо обработать функцией mysql_fetch_array или любой другой работающей с результатами запросов.

mysql-fetch-array

Оптимизайка
На сайте с 11.03.2012
Offline
396
#3
xpycteamset:
"SELECT * FROM #__{vm}_category WHERE '%$category_id%' OR sname LIKE '%$category_id%'"

Вон из профессии!

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
xpycteamset
На сайте с 05.10.2009
Offline
129
#4

Оптимизайка, не ругайся, я только познаю ))

А теперь по теме.

$zaprosid =  "SELECT * FROM `###_##_category` WHERE `category_id` = '$category_id'";
mysql_query($zaprosid) or die (mysql_error());
$result = mysql_query($zaprosid);
while ($row = mysql_fetch_array($result)) {
printf ("ID: %s ", $row[0]);
}

теперь нормально выводит артикул.

И как я понимаю надо условие добавить если есть артикул в базе то хорошо ничего не делаем.

А если нету то то делаем 404 ошибку.

Как это записать 😕


while ($row = mysql_fetch_array($result)) {
echo 'id';

Если id есть в базе то выводится, если нету, то как вывести то что нету?

$row[0] - это и есть артикул.

VHS
На сайте с 28.09.2007
Offline
142
VHS
#5

Ты в цикле хочешь делать 404 ошибку? )))

Результат запроса можно представить в виде таблицы выборки.

while ($row = mysql_fetch_array($result)) {

Это цикл по данной таблице, каждая итерация обрабатывает 1 строку

Т.е. $row[0] - это в любом случае некое значение, скорее всего нужно сравнить это значение с пустой строкой ( if($row[0]=='') ).

xpycteamset
На сайте с 05.10.2009
Offline
129
#6

Родил такие строки

$zaprosid = "SELECT * FROM jos_vm_category WHERE category_id = '$category_id'";

mysql_query($zaprosid) or die (mysql_error());

$result = mysql_query($zaprosid);

while ($row = mysql_fetch_array($result)) {

if ($row[0] < 0) {

header('HTTP/1.x 404 Not Found');

}

}

Осталось понять куда этот код вставить, так как если if ($row[0] > 0) то прекрасно отдает 404 ошибку. А если if ($row[0] < 0) . То по всей видимости не успевает дойти до него. Вставляют в shop.browse.php (Virtuemart 1)

Но места не найду куда его 😒

---------- Добавлено 30.12.2015 в 14:30 ----------

Вообщем сделал так (может криво и руки оторвать, но проблема висела два два года и никто не мог/не хотел делать)

Вставил в shop.browse.php

$zaprosid =  "SELECT * FROM ###_##_category WHERE category_id = '$category_id'";

mysql_query($zaprosid) or die (mysql_error());
$result = mysql_query($zaprosid);
while ($row = mysql_fetch_array($result)) {
if ($row[0] == $category_id) {
header('HTTP/1.x 200 OK');
// echo $category_id;
// print_r ($row);
}
//echo $row[0];
}

А выше него написал header('HTTP/1.x 404 Not Found');

Теперь если категории нет 404 если есть 200.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий