Передача данных с русскими буквами в ссылке

Статус
Закрыто для дальнейших ответов.

Nordway

Active Member
Регистрация
06.08.2007
Сообщения
41
В уже готовой БД есть несколько столбиков, имя одного из которых rubrika. Там для каждой записи хранится одна запись: или Покупка мебели или Ремонт квартир и т.д.
Ну и значит есть два файла: index.html и view.php

В index.html на javascript реализовано выпадающее меню(список). Вот один из кусков ссылки в выпадающем меню:
Код:
<A class="navlink2" href="" onmouseover="LinkDivOver();window.status='';return true" onmouseout="LinkDivOut();window.status=''">Ремонт квартир</A></td>
в href прописываю следующее: view.php?rubrika=Ремонт квартир

соответственно в view.php пишу так:

Код:
$select = mysql_query("SELECT name, adres FROM firm WHERE rubrika = " . $_GET['rubrika']);
while ($toped = mysql_fetch_array($select))
{
...
}
т.е. теоретически дожно работать так: пользователь выбирает любой подраздел (например Ремонт квартир). По ссылке переходит на view.php где уже код делает запрос в базу с условием где rubrika = ремонт квартир (в нашем примере).

На практике же получается так:
загружаю index.html выбираю меню и там выбираю под-меню Ремонт квартир ну и соотв. перемещаюсь на view.php с ошибкой
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\***\***\***\view.php on line 15

Подозреваю что не правильно делаю ссылку, а также неправильно сделано получение данных из index.html в view.php

Так вот вопрос:)) как правильно это сделать?:)
 

~FisHBonE~

Well-Known Member
Регистрация
23.05.2005
Сообщения
136
$rubrika = urldecode($_GET['rubrika']; //преобразовываем url-формат в нормальный текст
$rubrica = mysql_real_escape_string($rubrica); //не забывайте прослешивать запросы :)
 

Nordway

Active Member
Регистрация
06.08.2007
Сообщения
41
$rubrika = urldecode($_GET['rubrika']; //преобразовываем url-формат в нормальный текст
$rubrica = mysql_real_escape_string($rubrica); //не забывайте прослешивать запросы :)
как я понял это должно быть в view.php
пробовал сделать таким образом:

Код:
$rubrika = urldecode($_GET['rubrika']);
$rubrika = mysql_real_escape_string($rubrika);
$select = mysql_query("SELECT name, adres FROM `firm` WHERE rubrika = " . $rubrika);
while ($toped = mysql_fetch_array($select))
{
...
}
ошибка таже... подскажите как прально использовать то что вы написали:)
 

Alterbit

Well-Known Member
Регистрация
10.05.2005
Сообщения
78
судя по всему у вас ошибко в запросе. напишите так:
Код:
$select = mysql_query("SELECT name, adres FROM `firm` WHERE rubrika = " . $rubrika) or die(mysql_error());
будут отображацо ошибки SQL, станет понятней что к чему. тут скорей всего строковый параметр нужно поставить в ковычки

Код:
... WHERE rubrika = '" . $rubrika ."'";
во-вторых, разные браузеры, могут по разному отсылать строку на сервер, некоторые просто url-кодируют, некоторые преобразуют в utf-8. так что нужно делать проверку.

лучше завести еще одно числовое поле (INT, PRIMARY KEY или UNIQUE), и делать выборку по нему (и соответственно в ссылках его указывать), будет намного проще, быстрей и надежней.
 

Nordway

Active Member
Регистрация
06.08.2007
Сообщения
41
Спасибо, получилось, с синтаксисом был косяк, а именно в паре кавычек)
 

Slam

Новичок
Регистрация
07.10.2007
Сообщения
1
тоже возникла ошибка:
Warning: mysql_fetch_array():
supplied argument is not a valid MySQL result resource in E:\RPG_Portal\AppServ\www\guestbook\core\guest_book.php on line 18
Вот файл guest_book.php:
[codebox]
<?php
include 'conf/config.php'; // сдесь логин, пасс, подключение к БД и переменная $mess_per_page
include 'template.php'; // сдесь ф-ция build_table()
// Определяем общее число сообщений в БД
$result = mysql_query("SELECT * FROM gb");
$posts = mysql_num_rows($result);
// Получаем значение page
$page = $_GET['page'];
$page = intval($page);
// Номер, с которого выводим сообщения
$start = $page * $mess_per_page - $mess_per_page;
// Выбираем $mess_per_page сообщений начиная с $start
$result = mysql_query("SELECT * FROM gb LIMIT $start , $mess_per_page");
// В цикле переносим результаты запроса в массив $postrow
while ($postrow[] = mysql_fetch_array($result));
//mysql_free_result($result);
for($i = 0; $i < $mess_per_page; $i++)
{
$login = $postrow[$i]['login'];
$date = $postrow[$i]['date'];
$text = $postrow[$i]['text'];
if ($login!="" and $date!="" and $text!="")
{
echo build_table($login, $date, $text);
}
}
?>[/codebox]
это скрипт гостевой книги, именно этот файл выводит записи гостевухи из БД.
второй день уже мучаюсь :(
 

ZitosS_32

Совесть
Регистрация
12.03.2006
Сообщения
852
Так вы пытаетесь сделать постраничный вывод?
 
Статус
Закрыто для дальнейших ответов.
Верх Низ