|
|
|
| Помогите, пожалуйста разобраться в чём моя ошибка. Уже второй день бьюсь и никак не найду ошибку... Мне нужно, чтобы зайдя на страничку терминов сразу же выводились термины на букву А (алфавит русский). Далее по запросу-щелчку на букве алфавита - данные.
Проблема в том, что по щелку на букве всё правильно выводится, а по-умолчанию у меня почему-то выводится всё содержание базы на все буквы
Вот сам код:
<table width=100% cellspacing=0 cellpadding=5>
<tr><td align=center>
<a href=terms.php?url=<?=urlEncode('А')?>>А</a>
<a href=terms.php?url=<?=urlEncode('Б')?>>Б</a>
<a href=terms.php?url=<?=urlEncode('В')?>>В</a>
<hr>
</td></tr>
<tr><td>
<?
// Обрабатываем урл
$url = urlDecode($_GET['url']);
// Если главная стр Терминов, то выводим всё по букве А (умолчание)
if(!isset($url)) { $query = mysql_query("SELECT * FROM terms WHERE word LIKE 'A%'");
if ($query)
{
while($fetch = mysql_fetch_array($query))
{
// Выводим слово
echo "<p><b>".$fetch['word']."</b> — ";
// Выводим определение
echo nl2br($fetch['body'])."</p>";
}
}else echo"Ошибка при обращении к блоку терминов";
}else {
$letter = "$url";
$query = mysql_query("SELECT * FROM terms WHERE word LIKE '$letter%'");
if ($query){
while($fetch = mysql_fetch_array($query)){
// Выводим слово
echo "<p><b>".$fetch['word']."</b> — ";
// Выводим определение
echo $fetch['body'];
echo "</p>";
}
}
}
|
| |
|
|
|
|
|
|
|
для: sirop
(13.10.2005 в 14:25)
| | Что-то никто не отзывается :(
вот этот запрос
if(!isset($url)) { $query = mysql_query("SELECT * FROM terms WHERE word LIKE 'A%'");
|
Если в урле не присутствует переменная url, то делаем выборку из базы terms где в столбце word слова начинаются на букву А.
Но почему-то у меня делает выборку всех слов.... и на А, и на букву Б, и на букву В и т.д.
Что я делал не так?
Помогите, плиз! | |
|
|
|
|
|
|
|
для: sirop
(13.10.2005 в 14:25)
| | Это локальный хост или сервер? | |
|
|
|
|
|
|
|
для: cheops
(13.10.2005 в 23:29)
| | Это локальный (Денвер-2) | |
|
|
|
|
|
|
|
для: sirop
(13.10.2005 в 14:25)
| | Наверное, тот мой код оказался загадкой для всех :)
Подскажите, а как тогда можно изменить его, но чтобы смысл вывода данных остался. У меня не получается никак :( | |
|
|
|
|
|
|
|
для: sirop
(14.10.2005 в 11:47)
| | у вас ошибка вот тут:
<?
// Обрабатываем урл
$url = urlDecode($_GET['url']);
// Если главная стр Терминов, то выводим всё по букве А (умолчание)
if(!isset($url)) { $query = mysql_query("SELECT * FROM terms WHERE word LIKE 'A%'");
?>
|
переменная $url к моменту проверки получается определена
попробуйте так:
<?
// Если главная стр Терминов, то выводим всё по букве А (умолчание)
if(!isset($url))
{ $query = mysql_query("SELECT * FROM terms WHERE word LIKE 'A%'");
.... //тут весь код
}
else
{
// Обрабатываем урл
$url = urlDecode($_GET['url']);
//тут выводим выбранную букву
}
?>
|
| |
|
|
|
|
|
|
|
для: Loki
(14.10.2005 в 12:42)
| | Loki, действительно, как я мог не заметить, что $url я ввожу перед проверкой.
Я изменил, как Вы подсказали, но теперь почему-то данные по-умолчанию не выводятся вообще никакие. А если по ссылке на любой букве алфавита из общего меню - работает, как и надо. | |
|
|
|
|
|
|
|
для: sirop
(14.10.2005 в 13:23)
| | Можете взять свой исходный код, но заменить
<?
if(!isset($url)) { $query = mysql_query("SELECT * FROM terms WHERE word LIKE 'A%'");
?>
|
на
<?
if(empty($url)) { $query = mysql_query("SELECT * FROM terms WHERE word LIKE 'A%'");
?>
|
| |
|
|
|
|
|
|
|
для: Loki
(14.10.2005 в 14:26)
| | Что-то и с empty($url) ничего не вышло. Странно, по идее всё должно работать.
Пока лучшим выходом для себя думаю сделать ссылку на страничку вместо http://test1.ru/terms.php сделать http://test1.ru/terms.php?url=%C0 (принудительно вывести всё на "А"... или по-умолчанию вывести другое что-то. Буду таки пробовать найти причину. Может это мой локальный глюк? | |
|
|
|
|
|
|
|
для: sirop
(14.10.2005 в 17:02)
| | Да нет, это подход неправильный.
Вообще эту переменную нужно проверять перед тем как скармливать mysql, а то все это может плохо кончится.
Попробуйте так:
<?
if(!isset($url))
{
$url="A";
}
else
{
$url = urlDecode($_GET['url']);
}
?>
|
Вроде тут-то уж негде запутаться:)
ну и проверить на предмет одинарных кавычек | |
|
|
|
|
|
|
|
для: Loki
(14.10.2005 в 17:34)
| | Фух, мне этот код уже сниться скоро будет...
Вот таблица:
CREATE TABLE 'terms' (
'id' tinyint(4) NOT NULL auto_increment,
'word' tinytext NOT NULL,
'body' text NOT NULL,
PRIMARY KEY ('id')
) MyISAM ;
INSERT INTO 'terms' VALUES (1, 'Абразивный инструмент', 'Инструмент, изготовленный из абразивных материалов. Выпускается в виде шлифовальных кругов, брусков, лент и т. д.');
INSERT INTO 'terms' VALUES (32, 'Балясины', 'Элементы ограждающих конструкций лестниц, балконов, террас, поддерживающие перила.');
INSERT INTO 'terms' VALUES (46, 'Вальма', 'Скат шатровой крыши, имеющий треугольную форму и расположенный с торцовой стороны здания.');
|
А вот сам код со всеми изменениями:
<a href=terms.php?url=<?=urlEncode('А')?>>А</a>
<a href=terms.php?url=<?=urlEncode('Б')?>>Б</a>
<a href=terms.php?url=<?=urlEncode('В')?>>В</a>
<?
// Если в адресе нет переменной url,
// то выводим всё на "А"
if(!isset($url)){
$url="A";
}
// Если буква задана, то на искомую букву
else {
$url = urlDecode($_GET['url']);
}
$query = mysql_query("SELECT * FROM terms WHERE word LIKE '$url%'");
if ($query){
while($fetch = mysql_fetch_array($query))
{
// Выводим слово
echo "<p><b>".$fetch['word']."</b> — ";
// Выводим определение
echo $fetch['body'];
echo "</p>";
}
}
?>
|
страница http://test1.ru/terms.php открывается без содержания (только меню-алфавит)
а все страницы с запрошенной буквой открываются нормально
Попробуйте кто-нить у себя, что-то у меня никак... | |
|
|
|
|
|
|
|
для: sirop
(14.10.2005 в 19:08)
| | У вас тут
стоит английская А:)
поставил русскую и все заработало;) | |
|
|
|
|
|
|
|
для: Loki
(14.10.2005 в 20:41)
| | Ура!!! Действительно, заработало
Loki, преогромнейшее спасибо!!! Я бы сам не додумался б до такого. Вы настоящий мастер | |
|
|
|