|
|
|
| Интересный вопрос возник, а так как я всего неделю разбираюсь в МуСКУЛе,
то решил спросить:
У меня есть база (в принципе не суть важно с чем). Возьмем к примеру поле:
fruits:
...
ананасы
бананы
киви
мандарины
апельсины
яблоки
ананасы
виноград
...
как сделать, чтобы получить алфавитные ссылки:
[url]А[/url] [url]Б[/url] В Г ... [url]Я[/url]
но ссылками были бы только те буквы, с которых начинается хотя бы
одно название в поле fruits? Причем как в примере фрукты могут идти
не по-порядку, а в разброс и повторяться несколько раз. А ссылки получались
бы вида:
<a href=page.php?bukva=А> А </a>
...
<a href=page.php?bukva=Я> Я </a>
А остальные буквы присутствовали бы по алфавиту, но ссылками не были. | |
|
|
|
|
|
|
|
для: FatBoy
(09.11.2005 в 20:43)
| | Извлечь первые буквы записей и сгруппировать их можно при помощи запроса
SELECT MID(fruits,1,1) AS fruits FROM tbl
GROUP BY fruits ORDER BY fruits
|
остаётся только вывести результаты запроса в цикле. | |
|
|
|
|
|
|
|
для: cheops
(09.11.2005 в 23:36)
| | Ну вот так и знал, что весь огород в 2 строки. Но вопрос, вернее 2:
1 как сделать все буквы ЗАГЛАВНЫЕ?
2 как в PHP вывести результат этого запроса? (я проверял запрос в MyAdmin) | |
|
|
|
|
автор: Xman (10.11.2005 в 13:22) |
|
|
для: FatBoy
(10.11.2005 в 12:58)
| | 1 strtoupper($string) | |
|
|
|
|
|
|
|
для: FatBoy
(10.11.2005 в 12:58)
| | Заглавными буквы лучше сделать уже средствами PHP при помощи функции strtoupper(). А вывести результаты можно при помощи следующего кода
<?php
// Устанавливаем содинение с базой данных
include "config.php";
// Формируем SQL-запрос
$query = "SELECT MID(fruits,1,1) AS fruits FROM tbl
GROUP BY fruits ORDER BY fruits";
// Выполняем запрос
$frt = mysql_query($query);
if(!$frt) exit(mysql_error());
// Если возвращается хотя бы одна запис - выводим
// результаты в цикле
if(mysql_num_rows($frt) > 0)
{
while($fruits = mysql_fetch_array($frt))
{
$bukva = urlencode(strtoupper($fruitsp['fruits']));
echo "<a href=page.php?bukva=$bukva>$bukva</a>";
}
}
?>
|
Для установки соединения с базой данных используется файл config.php, посмотреть содержимое которого можно в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=3803 | |
|
|
|
|
|
|
|
для: cheops
(10.11.2005 в 13:27)
| | Вот спасибо!
но по мне так уж лучше:
$bukva = strtoupper($fruits['rubrika']);
echo "<a href=page.php?bukva=".urlencode($bukva).">$bukva</a> ";
|
А все-таки не получиться сделать что-бы были все буквы алфавита?
типа:
$alfavit="АБВГДЕЁЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ";
for ($k=0; $k<32; $k++)
{
ЕСЛИ БУКВА $alfavit[$k] ЕСТЬ В ЗАПРОСЕ, то выводим
echo "<a href=page.php?bukva=".urlencode($bukva).">$bukva</a> ";
иначе выводим только echo"$alfavit[$k]";
}
|
| |
|
|
|
|
|
|
|
для: FatBoy
(11.11.2005 в 15:28)
| | Можно... но для этого лучше извлечь сначала все буквы в массив
<?php
// Устанавливаем содинение с базой данных
include "config.php";
// Формируем SQL-запрос
$query = "SELECT MID(fruits,1,1) AS fruits FROM tbl
GROUP BY fruits ORDER BY fruits";
// Выполняем запрос
$frt = mysql_query($query);
if(!$frt) exit(mysql_error());
// Если возвращается хотя бы одна запис - выводим
// результаты в цикле
if(mysql_num_rows($frt) > 0)
{
while($fruits = mysql_fetch_array($frt))
{
$bukva[] = urlencode(strtoupper($fruitsp['fruits']));
}
}
?>
|
А затем проверять наличие букв в массиве $bukva
<?php
$alfavit="АБВГДЕЁЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ";
for ($k=0; $k<32; $k++)
{
if(in_array($alfavit[$k],$bukva) echo "<a href=page.php?bukva=".urlencode($bukva).">".$alfavit[$k]."</a> ";
else echo $alfavit[$k];
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(11.11.2005 в 15:49)
| | Спасибо, после доработок все заработало. | |
|
|
|