<MyRusakov.ru />

Создание крупного проекта на Java с нуля

Создание крупного проекта на Java с нуля

Данный курс научит Вас создавать крупные проекты на Java грамотно и быстро. В курсе Вы увидите создание большой и сложной программы на Java абсолютно с нуля.

В начале курса у нас будет только идея, а в конце готовый продукт, который можно использовать в практических целях.

В рамках упражнений курса Вы параллельно со мной будете создавать свою большую программу на Java, что даст Вам необходимую практику, после которой для Вас уже не будет разницы, какого размера создавать программы.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Форум сайта MyRusakov.ru

Вывод количества заметок в категории
14.07.2012 08:44:04 Вывод количества заметок в категории Сообщение #1
ac-40-6.0

ac-40-6.0

Эксперт

Эксперт

Дата регистрации:
29.06.2012 02:02:06

Сообщений: 88

Создал таблицы, написал код.
Итог: рановато Вам такое писать.
Причина такого итога: уже третий раз пишу рабочий код.

Этот полностью проверен на все возможные ошибки с перебором запросов до сотни.

[listn]<?php
error_reporting(E_ALL);
$bd = mysql_connect('localhost', 'root', '');//эти параметры заданы по умолчанию, их можно не менять
$basa = 'mybase';//имя базы данных, а не таблицы, вводить по буквам под диктовку
mysql_select_db($basa, $bd);
echo '<p><b>Меню</b></p>';
for($cat=1; $cat<=4; $cat++){
$row = mysql_query("SELECT `id` FROM `data` WHERE `cat`='$cat'", $bd);//выбираемые значения вводить также по символам сверяясь с PhpMyAdmin
$con = mysql_num_rows($row);//эта переменная отвечает за количество категорий
$sel = mysql_query("SELECT `value` FROM `categories` WHERE `cat`='$cat'",$bd);//выбираем значения по ЧИСЛОВОМУ индексу
$c = mysql_fetch_assoc($sel);//эта в ответе за значение категории
echo $c['value'], ' - ', $con, '<br/>';
}
?>[/listn]


Как сказал наш сенсей:
Если не поняли, значит, изучайте SQL, похоже, что Вы основ ещё не знаете даже. Здесь помогают учиться, а не пишут готовые функции и скрипты.

Учитесь.
Профиль Ответить
15.07.2012 13:13:43 Вывод количества заметок в категории Сообщение #2
Default

Default

Эксперт

Эксперт

Дата регистрации:
12.06.2012 15:20:27

Сообщений: 102

Начнем с таблиц, чтобы было все понятно: 1 - я таблица categories, хранит в себе id - уникальный индефикатор и title - название категории

id_||_title_____|
_1_||_Авто______|
_2_||_Мото______|
_3_||Марки авто_|

Вторая таблица data, хранит в себе id - уникальный индефикатор, id_title - хранит в себе id заметки(по умолчанию в этом поле выставите 0, чтобы если для данной ктегори не было заметок, то выводилось бы 0 а не пустота)и comm - собственно сама заметка

id_||id_title||.comm................|
.1.||..2.....||Мото_дня.............|
.2.||..2.....||Красный_байк.........|
.3.||..1.....||Авто_года............|
.4.||..3.....||toyota...............|
.5.||..2.....||Мото на лето.........|
.6.||..3.....||Волга................|
.7.||..3.....||BMW_.................|
.8.||..1.....||км\ч у УАЗа..........|
.9.||..1.....||Проходимость у камаза|
10.||..2.....||.Цены на мото........|

Понятно, что в поле id_title вставляется id категории при добавлении новой заметки и все что надо было сделать это выбрать в цикле общее число id в таблице data, где id_title равен той или иной категории, вот как это получилось у меня

<?php
// устанавливаем соединение в БД
include_once "conf.php";
// запрос на выборку из таблици categories
$sql = mysql_query ("Select id, title, num_comm From categories";
// проверка
if(!$sql)exit(mysql_error());
// добавляем выбранное в ассосционный массив и выводим пока есть записи в БД
while ($result = mysql_fetch_assoc($sql)){
echo "<p><a href = 'cat.php?id=".$result['id']."'>";
echo $result['title'];
echo "</a>";
echo " - ";
// подключаемся к таблицне data, где лежат заметки к категориям где номер заметки равен текушей id категории
$sql_2 = mysql_query("Select count(id) From data WHERE id_title = '".$result['id']."'";
// проверяем подключение, если нет, то выводим ошибку
if(!$sql_2)exit(mysql_error());
// получаем число записей
$total = mysql_result($sql_2,0);
// выводим число
echo $total['id'];
echo "</p>";
// увеличиваем счетчик на 1 после каждого раза
$i++;
}
?>

не уверен, что хороший вариант в цикле подключаться к БД и делать какую-то выборку, но все же код работает, потому что полностью его у себя проверил. Код написан грубо, без проверок, так что хотя бы по минимум при выводе из таблице записи пропустите через функцию strip_tags() или htmlspecialchars(), проверок много не бывает.
P.S. можно сделать по другому, например, в таблице categories добавить еще одно поле в которое будет изменяться на +1 к текушей записи при добавлении новой заметки и выберать уже все с одной таблице, но нужно менять код в админской панели, но не заостряйте на этом внимание, вам этого будет достаточно, а когда уже поймете, то сможете "вертеть" код так, как вам будет удобно.
Профиль Ответить
15.07.2012 14:01:15 Вывод количества заметок в категории Сообщение #3
Default

Default

Эксперт

Эксперт

Дата регистрации:
12.06.2012 15:20:27

Сообщений: 102

Михаил, выше в моем коде, а именно в цикле идет каждый раз запрос в таблицу, ладно записей всего 3-ри, а если их 100, то не упадет ли скорость вывода?
Профиль Ответить
15.07.2012 14:04:18 Вывод количества заметок в категории Сообщение #4
Default

Default

Эксперт

Эксперт

Дата регистрации:
12.06.2012 15:20:27

Сообщений: 102

ac-40-6.0, а если у Вас записей в таблице с категориями не 4, а 10, то Вы каждый раз будете менять число в цикле?
Профиль Ответить
15.07.2012 17:42:44 Вывод количества заметок в категории Сообщение #5
ac-40-6.0

ac-40-6.0

Эксперт

Эксперт

Дата регистрации:
29.06.2012 02:02:06

Сообщений: 88

Нафига?
Перед запуском цикла прописываем:

$number = mysql_query("SELECT max(`cat`) FROM `categories`", $db);
$numb = mysql_fetch_assoc($number);
$num = $numb['max(`cat`)'];


В условии цикла даём $cat <= $num.
Всё!
Можно через while, но с ним я ещё путём не работал.
P.S. ко мне на Вы не надо. Я не страдаю ни манией величия, ни раздвоением личности на личности страдающие раздвоением личности вкупе с шизофренией.
Профиль Ответить
16.07.2012 01:08:56 Вывод количества заметок в категории Сообщение #6
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Да, при большом количестве записей быстродействие может упасть.
Профиль Ответить
16.07.2012 13:20:53 Вывод количества заметок в категории Сообщение #7
Default

Default

Эксперт

Эксперт

Дата регистрации:
12.06.2012 15:20:27

Сообщений: 102

но а для вот таких малых задач код себя оправдывает?
Профиль Ответить
16.07.2012 15:42:08 Вывод количества заметок в категории Сообщение #8
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Конечно, для подобных задач можно не беспокоится о таких вещах.
Профиль Ответить