Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RFpro.ru: Программирование на PHP


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

vladisslav
Статус: 5-й класс
Рейтинг: 1060
∙ повысить рейтинг »
Волков Алексей aka Lupo
Статус: 5-й класс
Рейтинг: 371
∙ повысить рейтинг »
Палян Александр Михайлович
Статус: 6-й класс
Рейтинг: 309
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / PHP

Номер выпуска:1194
Дата выхода:23.01.2010, 01:00
Администратор рассылки:Товарищ Бородин, Модератор
Подписчиков / экспертов:642 / 198
Вопросов / ответов:1 / 1
IRC-канал по теме:#php

Вопрос № 176087: Здравствуйте, эксперты. У меня к вам два вопроса. 1. Возможно ли сделать так, чтобы при запросе одной страницы происходило перенаправление на другую и в перенаправлении указывалось с какой страницы произошел переход. Например, есть стр...



Вопрос № 176087:

Здравствуйте, эксперты.

У меня к вам два вопроса.
1. Возможно ли сделать так, чтобы при запросе одной страницы происходило перенаправление на другую и в перенаправлении указывалось с какой страницы произошел переход.
Например, есть страница about.php, содержащая скрипт обработки БД, но на сайте ссылки выполнены в виде fam_imya.php, но таких страниц не существует на сервере, а при их вызове происходит перенаправление на about.php и зависимости от имени страницы с которой произошло перенаправление выводиться нужная информация о человеке.
2. В файле about.php делаю запрос к БД с информацией о людях. Структура БД и код запроса приведена в приложении.
При выполнении строчки
$query = "SELECT * FROM bd_name WHERE team LIKE 'basket' ORDER BY reserved_4 ASC LIMIT 0,30";
выводится только первые 10 строк из таблицы без сортировки по reserved_4. По всем остальным полям сортировка проходит без помех, но как бы я не сортировал все равно выво дится всего 10 строк вместо 30. Даже если я напишу:
$query = "SELECT * FROM bd_name WHERE 1" и $query = "SELECT * FROM bd_name выводится только первые 10 строк.

В поле reserved_4 информация представлена в виде строк "01#12#", "02#11#", "03#14#", "04#10#" и т.д. цифра1#цифра2#. При выборке и сортировке в PhpMyAdmin всё сортируется верно и выводится нужная информация, а при копировании запроса в php-файл при выполнении происходит сбой.
Поля
`description_2` text collate utf8_unicode_ci NOT NULL,
`description_3` text collate utf8_unicode_ci NOT NULL,
`reserved_1` text collate utf8_unicode_ci NOT NULL,
`reserved_2` text collate utf8_unicode_ci NOT NULL,
`reserved_3` text collate utf8_unicode_ci NOT NULL,
пока не заполнены и оставлены на будущее.
Поле
`blood_type` text collate utf8_unicode_ci NOT NULL,
заполнено не у всех людей.

Отправлен: 17.01.2010, 00:31
Вопрос задал: Puma, Практикант
Всего ответов: 1
Страница вопроса »


Отвечает Волков Алексей aka Lupo, 5-й класс :
Здравствуйте, Puma.
По первому вопросу: логичнее всего использовать .htaccess со строками

RewriteEngine on
RewriteRule ^([a-zA-Zа-яА-Я]+)_([a-zA-Zа-яА-Я]+)\.php? about.php?fam=$1&imya=$2 [L]

(как-то так, проверьте сами регулярное выражение)

это перенаправит запрос по ссылке вида fam_imya.php на скрипт about.php с передачей GET-строки: about.php?fam=lalala&imya=lblblb

по второму вопросу: дело явно в содержимом, а не в запросе к базе; возможно, даже в выводе его в виде html.

чтобы убедиться, что проблема не в запросе, посмотрите html source или выведите временно в начале вывода в браузер echo"<plaintext>"; это запретит браузеру выполнение html и позволит нам увидеть ВЕСЬ вывод.


-----
Всё, что есть хорошего в жизни - либо незаконно, либо аморально, либо ведёт к ожирению...

Ответ отправил: Волков Алексей aka Lupo, 5-й класс
Ответ отправлен: 18.01.2010, 13:14

Оценка ответа: 3
Комментарий к оценке:
Спасибо за ответ.

Проверил с помощью echo"<plaintext>". На экране появился обычный html-код. Ниже привожу его кусок с форматированием, так он выводится слитно без пробелов и переводов строк:
<table>
<tr>
<td>ds</td>
<td>Имя</td>
<td>Фото</td>
<td>Дата рождения</td>
</tr>

SELECT * FROM perfchars LIMIT 0,100<br>
Resource id #4<br>
<tr>
<td></td> <!--вот здесь должна выводиться строка из поля reserved_4, но она не выводится, при запросе на выборку только этого поля приходит пустой ответ, именно поэтому я подумал, что проблема именно в php-коде, т.к. при запросе через phpMyAdmin все нормально выводиться -->
<td>Наталья Бесман</td>
<td><img src="/pics/nataliya_besman.jpg&quo t;></td>
<td>1990-09-08</td>
</tr>
<tr>
<td></td>
<td>Илья Горюнов</td>
<td><img src="/pics/ilya_goryunov.jpg"></td>
<td>1988-02-10</td>
</tr>
<!-- и т.д. ровно 10 строчек, без каких-либо ошибок, при вставке этого кода в отдельный html-файл, все прекрасно выводиться в браузер -->
</table>

При запросе
$query = "SELECT reserved_4 FROM bd_name LIMIT 0,100";
$sql = mysql_query($query) or die ("Query failed: " . mysql_error() . " Actual query: " . $query);;
while ($ds = mysql_fetch_object($sql))
{
$res_4 = $ds -> reserved_4;

echo "<br>";
echo "$res_4";
echo "<br>";

}
Выводятся лишь символы <br>: <br><br><br><br><br>& lt;br><br><br><br> и т. д.
При вставке запроса в phpMyAdmin все равботает.
Не могу понять.

Все запросы писал по инструкции с сайта: http://www.opennet.ru/base/dev/pl_sql_select.txt.html

Я думаю, может быть попробовать какую-то другую функцию вместо mysql_fetch_object для обработки результатов запроса.

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 258713 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.13 от 28.12.2009

    В избранное