SunSet
24.08.2009 - 21:53
Помогите, пожалуйста, с вот этим скриптом, который сам писал.
PHP |
<?php include ("../../blocks/base.php"); if (isset($_GET['id'])) {$id = $_GET['id']; } if (!isset($id) OR empty($id)) {$id = 1; } $maximum = mysql_query ("SELECT MAX(`id`) FROM `articles` WHERE cat=1",$db); /* проверяем максимум */
$prov = mysql_query ("SELECT `cat` FROM `articles` WHERE id=`$id`",$db);
if ($prov ==1) { $titles = mysql_query ("SELECT `title`,`meta_d`,`meta_k` FROM articles WHERE id=$id",$db); $tut = mysql_fetch_array($titles); }
else { $titles = mysql_query ("SELECT `title`,`meta_d`,`meta_k` FROM articles_cat WHERE cat=1",$db); $tut = mysql_fetch_array($titles); }
|
Второй день с ним маюсь, решил переделать, но всеравно не получается.
Вот табличка, с которой все вытягивается.
Проблема в том, что как с таблички видно, в запросе может не существовать id, тогда ей значение присваивается 1. Тут все понятно.
Но из следующей строчки:
PHP |
$prov = mysql_query ("SELECT `cat` FROM `articles` WHERE id=`$id`",$db); |
выбирается cat и проверяется, если она равно 1 = то делаем то-то, если нет, то другое. Но дело в том, что в этой проверке может и вообще никакого результата не быть, как видно в таблице, нету id=4 и нету к нему cat, то чтоб выводилось сообщение какоето, а то ошибку возвращает на эту строку, поскольку в таблице пусто на этот запрос.
И если есть какието грамматические ошибки - прошу поправить. Не всегда разбираюсь где нужно применить "=", а где "==".
Спустя 36 минут, 43 секунды (24.08.2009 - 21:30) DeeKeiD написал(а):
PHP |
$res = mysql_query("SELECT `cat` FROM `articles` WHERE id = '".$id."'",$db); if(!$res) { die ('записи в базе не существует'); } else { .. } |
?
Спустя 2 минуты, 28 секунд (24.08.2009 - 21:33) kirik написал(а):
SunSetТы долго будешь
одни и те же ошибки допускать?
Спустя 9 минут, 39 секунд (24.08.2009 - 21:42) SunSet написал(а):
DeeKeiDЩас проверю
kirikТак пробовал через
mysql_result, сразу ошибку выбивает
Спустя 7 минут, 45 секунд (24.08.2009 - 21:50) SunSet написал(а):
DeeKeiD
Не работает, сообщения 'записи в базе не существует' не выводится если даже специально id=4 поставить.
Спустя 2 минуты, 57 секунд (24.08.2009 - 21:53) DeeKeiD написал(а):
PHP |
$res = mysql_query("SELECT * FROM `articles` WHERE `id` = '".$id."'",$db); $row = mysql_fetch_array($res); $prov_id = $row[id]; if(!$prov_id) { die ('error'); } else { echo 'success'; } |
или
PHP |
$res = mysql_query("SELECT * FROM `articles` WHERE `id` = '".$id."'",$db); $row = mysql_fetch_array($res); $prov_id = $row[id]; if(empty($prov_id)) { die ('error'); } else { echo 'success'; } |
Спустя 6 минут, 44 секунды (24.08.2009 - 22:00) SunSet написал(а):
DeeKeiDЕсли отсечь кусок моего кода, который за этим запросом идет - то работает, правда $row[id]; поменял на $row[cat];, поскольку мне нужно с cat сравнивать, а не с id.
Сейчас постараюсь под свой код подстроить
Спустя 9 минут, 22 секунды (24.08.2009 - 22:09) SunSet написал(а):
DeeKeiD
Подскажи еще одно.. вот есть структура if else, читал что можно несколько if использовать и упускать else, а этот else может внутрь себя включать (if else)?
Просто ж мне потом если в запросе существует чтото, я вытягиваю число категории и нужно его сравнивать ,если оно равно 1 то делаю нужное, а если не равняется то ошибку.
Спустя 4 минуты, 11 секунд (24.08.2009 - 22:13) DeeKeiD написал(а):
PHP |
if($a == $b) { $ab = 2; $cd = 5; if($ab == $cd) { // действие } else { // действие } } else { $ab = 25; $cd = 22; if($ab != $cd) { // действие } else { // действие } } |
както так
вобще if else это логика - если 1 = 2 тогда то и т.д.
Спустя 17 минут, 35 секунд (24.08.2009 - 22:31) SunSet написал(а):
DeeKeiDНемного "подкрутил"
скрипт, теперь работает так ак надо
Большое спасибо, помог.
Вот
PHP |
<?php include ("../../blocks/base.php"); if (isset($_GET['id'])) {$id = $_GET['id']; } if (!isset($id)) {$id = 1; } $maximum = mysql_query ("SELECT MAX(`id`) FROM `articles` WHERE cat=1",$db); /* проверяем максимум */
$res = mysql_query("SELECT * FROM `articles` WHERE `id` = '".$id."'",$db); $row = mysql_fetch_array($res); $prov_id = $row[cat]; if(!$prov_id) { $titles = mysql_query ("SELECT `title`,`meta_d`,`meta_k` FROM articles_cat WHERE cat=1",$db); $tut = mysql_fetch_array($titles); } if ($row[cat] !=1) { $titles = mysql_query ("SELECT `title`,`meta_d`,`meta_k` FROM articles_cat WHERE cat=1",$db); $tut = mysql_fetch_array($titles); } else { $titles = mysql_query ("SELECT `title`,`meta_d`,`meta_k` FROM articles WHERE id=$id",$db); $tut = mysql_fetch_array($titles); }
|
Еще осталось приделать вывод новости согласно нужному титлу, но то думаю сам смогу сделать
_____________
... и помните! Каким бы ни был PHP, главное - чтобы он был защищенным! :) (PHP с Анфисой Чеховой)