Помощник
|
не слишком ли тупо? |
kalpak44
|
Сообщение
#1
|
||
|
|
||
|
|||
alexdrob |
1.9.2011, 4:01;
Ответить: alexdrob
Сообщение
#2
|
|
строки 4,5 - устаревшие функции, возможно в новых версиях пхп вообще не будет работать, и они медленные, используйте mysqli или PDO
строки 7,8 можно заменить так [PHP]$cat = isset($_GET['cat']) ? (int) $_GET['cat'] : 1;[/PHP] строка 12, если не менять строки 7,8 то тут будет sql injection строки с 17 по 47, это по урокам Попова? зачем использовать do ... while? проще while ... эти же строки - у вас в цикле запрос, это не очень хорошо, объедините первый запрос ос вторым - так будет 1 запрос. или в первом используйте group_concat с группировкой для того что бы получить строку id через запятую - так будет два запроса. У вас же их будет столько сколько раз выполнится цикл + 1. хм... сразу не досмотрел, там ещё один запрос в цикле ) так как 4 утра, в логике разбиратся не хочу, но это плохо) сделайте одни или 2мя запросами вывод, но точно не запросы в цикле. строка 54 - нет гарантии что переменная есть, используйте проверку как и с cat. 56 - так как у вас выборка по условию, то лучше используйте count(`id`) или count(1) intval() - медленнее чем (int) если поправите 56 строку то 61 не нужна 65 строка - странная логика, если 0 или < 0 не проще заменить одной проверкой if ($page < 1) или if ($page <= 0) ? 65, 66 строки можно заменить вот так, хотя по сути быстрей работать думаю не станет тут, а может даже медленней. [PHP]$page = $page < 1 ? 1 : ($page > $total) ? $total : $page;[/PHP] какой смысл в коде с 73 по 83 строку не понял, зачем сначала создавать массив а потом в цикле for пробегать по нему ещё раз? ну и дальше особо не разбирался, что бросается в глаза - это то что любой из переменных что вы выводите в строке 97 - может не быть. у вас явно выключено отображение ошибок и предупреждений, иначе их могло быть много в вашем коде. для чего нужны строки 39 и 101 не понял :) |
|
|
alexdrob |
1.9.2011, 4:02;
Ответить: alexdrob
Сообщение
#3
|
|
|
|
|
kalpak44
|
Сообщение
#4
|
|
через них я хотел вывести из таблицы content строки title(в начале ставил метки в таблицу затем вытаскивал по этим меткам потом обнулял метки - в голову другое не пришло), но только у которых id = content_id из таблицы rubric content и так чтобы эти строки (title) выводильсь постранично по х на страницу
|
|
|
alexdrob |
1.9.2011, 15:25;
Ответить: alexdrob
Сообщение
#5
|
|
омг, сейчас не 4 утра :D но я ещё больше запутался :) ну поставили вы метки, а в этот же момент ещё какой то человек открывает сайт, другой раздел, и там метки стали, и что выведется?) или наоборот уберутся местки, если два человека открыли сайт, один раздел, то первый скрипт сбросит метки а второй не найдёт меток. такой подход не верен.
советую прочитать про left, right join. у вас тут вообще всё одним запросом по идеи можно вытащить, максимум 2мя что бы один не нагромождать вложенными запросами. уберите колонку metka вообще. вы что хотите? выбрать категорию для каждой статьи? тогда выбираете всё из таблицы rubric_content с условием rubric_id = $cat и объединяете таблицу с двумя другими с помощью join'ов. или же, объединяете только два таблицы, рубрики и rubric_content выбираете всё из неё, потом делаете запрос для выборки всех статей. с другой стороны, у вас же будет одно имя рубрики, так как фильт по ид рубрики, значит можно отдельно выбрать заголовок рубрики, и отдельно объединить таблицы rubric_content и content. 1 способ будет 1 запрос 2 и 3 способы - 2 запроса и не каких меток. |
|
|
kalpak44
|
Сообщение
#6
|
|
|
если бы знал как эт сделать ((( я пхп начал изучать ток пару недель назад, извиняюсь за тупость, но есмогли ли бы чуть по подробнее про join'ы?
|
|
|
||
|
Текстовая версия | Сейчас: 26.4.2024, 7:29 |