Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Вопросы по сайту

Ответить
Настройки темы
Вопросы по сайту

Аватара для pasha4ur

Ветеран


Сообщения: 2764
Благодарности: 315


Конфигурация

Профиль | Отправить PM | Цитировать


Всем привет.
Первый раз увидел этот раздел и был приятно удивлен (даже очень), потому что последние месяца 4 я этим стал заниматься/учить.
Я делаю сайт на диплом в техникуме (почти сделал) и есть пару вопросов:
вот они

-------
How to bypass iCloud lock on Apple iPad 2, 3, 4,
Air, mini and Pro


Отправлено: 17:38, 06-06-2007

 

Аватара для pasha4ur

Ветеран


Сообщения: 2764
Благодарности: 315

Профиль | Отправить PM | Цитировать


Спасибо попробую.
Цитата:
а еще лучше использовать полностью css
Я пробовал. Вверху код даже есть, но почему-то в Интернет Эксплоуере не пашет, а в Опере и ФФ пашет

-------
How to bypass iCloud lock on Apple iPad 2, 3, 4,
Air, mini and Pro


Отправлено: 15:56, 07-06-2007 | #11



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для pasha4ur

Ветеран


Сообщения: 2764
Благодарности: 315

Профиль | Отправить PM | Цитировать


Хотел еще спросить.
Я сделал «типа» гостевую книгу. РНР просто выбирает в таблицу записи из БД, но со временем эта таблица становиться до неприличия длинной.
Как можно сделать, чтоб все делилось на страницы 1, 2, 3…. Намекните, только очень сильно

-------
How to bypass iCloud lock on Apple iPad 2, 3, 4,
Air, mini and Pro


Отправлено: 13:18, 10-06-2007 | #12


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


В запросе к базе данных добавляешь ограничение:
"SELECT * FROM `guestbook` ORDER BY `time` DESC LIMIT 0 , 20"
Начало расписывать не буду.
ORDER BY `time` - сортировка по колонке time
DESC - в обратном порядке
LIMIT 0, 20 - ограничить выдаваемый результат двадцатью строками, начиная с нулевой.
Если по страницам, то вместо 0 пишешь, например, $_GET['page']*20. Соответственно, строка, с которой надо начинать выборку будет определяться как "номер страницы * 20 (записей на страницу)". Второе число после LIMIT прямо так и пишется - 20.
Ну, а как генерировать ссылки на страницы, надеюсь, догадаешься. Если нет, то я помогу догадаться. Но лучше - подумай сам)))

Отправлено: 14:37, 10-06-2007 | #13


Аватара для pasha4ur

Ветеран


Сообщения: 2764
Благодарности: 315

Профиль | Отправить PM | Цитировать


Да надо подумать, как для следующей страницы выборку делать
Цитата:
начинать выборку будет определяться как "номер страницы * 20 (записей на страницу)
Тогда для следующей начнется с 40.
Наверное, что-то такое
<a href="1.php?<?php $page?>">2</a>
$page_st=$page*2+1;
$page_en=$page*2+20;
"SELECT * FROM `guestbook` ORDER BY `time` DESC LIMIT '$page_st' , '$page_en'"

Что-то Limit не фурычит
Warning: odbc_exec(): SQL error: [Microsoft][Драйвер ODBC Microsoft Access] Ошибка синтаксиса в предложении ORDER BY., SQL state 37000 in SQLExecDirect in z:\home\proba.ru\www\html\q.php on line 153

$q=odbc_exec($connect_id, "Select * from book ORDER BY Dat DESC LIMIT 0, 20");

До добавления Лимит фурычило

Последний раз редактировалось pasha4ur, 10-06-2007 в 18:42.


Отправлено: 18:21, 10-06-2007 | #14


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


pasha4ur, что ж ты сразу не сказал, что у тебя какой-то там MS Access? Я-то для MySQL писал)) Странно, конечно, что Access не весь SQL держит.
Цитата:
Ошибка синтаксиса в предложении ORDER BY., SQL state 37000
А точка там откуда взялась?

Цитата:
Тогда для следующей начнется с 40.
Значит надо добавить "-1" в нужном месте.

Цитата:
"SELECT * FROM `guestbook` ORDER BY `time` DESC LIMIT '$page_st' , '$page_en'"
Нет, ну не $page_en, а 20. Это показывает не конечный номер строки, а количество строк от начала выборки.
И, пожалуй, даже и не DESC. А то самое старое сообщение наверху окажется...

Цитата:
<a href="1.php?<?php $page?>">2</a>
Ничего не понял... Что тут происходит?))

Ну, всё равно, раз не хочет работать с лимитом. Тогда попробуем сделать выборку на все строки и разобрать их скриптом.
Например так (предполагаю, что скрипт называется guestbook.php и передаются параметры вида guestbook.php?page=2):
PHP код: Выделить весь код

$post_on_page=20// определяем, сколько записей на страницу выводить

$q odbc_exec($connect_id"Select * from book ORDER BY Dat DESC"); // шлём запрос к БД на всю таблицу
$num_rows считать_количество_строк($q); // в MySQL это было mysql_num_rows($q). В ахсексе не знаю.
$row_start = ($_GET['page']-1) * $post_on_page// начальная строка будет определяться как номер страницы (начиная с нуля - поэтому ставим "-1") умножить на количество постов на страницу

for ($i $row_start$i < ($row_start $post_on_page); $i++)  // может неоптимально, но всё же. Циклом проходим по строкам, которые будут выводиться. В $i записывается номер текущей строки
  
{
  
$result=mysql_fetch_assoc($q); // опять же, как в ахсексе - не знаю. Разбиваем строку. Т.е. в $result будет содержаться массив.
  
echo "<p><b>".$result['autor']."</b><br />".$result['message']."</p><hr />"// выводим сообщение в нужном нам виде. Предполагается, что autor и message - это столбцы из базы данных. Они были внесены в массив предыдущей командой. Тегами по вкусу можно разбавить.
  
}

// после цикла все сообщения со страницы выведены. Теперь список страниц внизу сделаем. Можно и перед сообщениями ещё. Если делаем и там, и там, то можно записать вывод в переменную, а потом два раза её использовать.

$num_pages $num_rows $post_on_page// определяем, сколько страниц можно получить при таком количестве сообщений. Наверное, надо округлить вверх, но я не помню функцию.
for ($i 1$i <= $num_pages$i++)  // для каждой страницы своя ссылка будет. По поводу сравнения сомневаюсь - то ли строго меньше, то ли меньше-равно.
  
{
  echo 
"$nbsp;<a href='guestbook.php?page=$i'>$i</a>"// проще простого
  


Ну и всё, пожалуй. На работоспособность не проверял. Будут ошибки - сообщи, попробую поправить.

UPD: Ой, какая красивая разноцветная картинка получилась. Гламурненько =^_^=
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:14, 10-06-2007 | #15


Аватара для pasha4ur

Ветеран


Сообщения: 2764
Благодарности: 315

Профиль | Отправить PM | Цитировать


Попробую. Я тут еще и в нете интересную гостевую книгу нашел. Вот только форма для отправки сообщений сбоку и когда переносишь её вниз, она перестает работать. Как-нибудь потом и с ней разберусь

-------
How to bypass iCloud lock on Apple iPad 2, 3, 4,
Air, mini and Pro


Отправлено: 20:21, 10-06-2007 | #16


Аватара для pasha4ur

Ветеран


Сообщения: 2764
Благодарности: 315

Профиль | Отправить PM | Цитировать


Цитата:
<?php
define("CONNECTION_STRNG", "DBQ=C:\\WebServers\\home\\dip.ru\\www\\data\\Quest.mdb; DRIVER={Microsoft Access Driver (*.mdb)};");
// Підключення до бази даних
$connect_id = odbc_connect(CONNECTION_STRNG, "", "");
$page=settype($page, 'integer');
if(!$connect_id)
echo "Ошибка соединения с базой данных...";
$post_on_page=5;
$q=odbc_exec($connect_id, "Select * from book ORDER BY Dat DESC");
$num_rows = odbc_num_rows($q);
$row_start = ($_GET['page']-1) * $post_on_page;
for ($i = $row_start; $i < ($row_start + $post_on_page); $i++)
{
odbc_fetch_into($q, $result);
//do{
if (odbc_fetch_row($q)){
echo"<tr><td align=center><font face=verdana size=1>".$result['3']."</font></td>";
echo"<td align=center><font face=verdana size=2>".$result['1']."</font></td>";
echo"<td align=justify><font face=verdana size=2>".$result['2']."</font></td></tr>";
}
//}
//while (odbc_fetch_row($q) and $i < ($row_start + $post_on_page));
}

$num_pages = $num_rows / $post_on_page;
echo ("<tr><td colspan=2 align=center>");
for ($j = 1; $j <$num_pages; $j++)
{
echo "$nbsp;<a href='Q.php?page='$j''>'$j'</a>";
}
echo ("</td></tr></table>");
echo "<br>num_rows ".$num_rows."";
echo "<br>row_start ".$row_start."";
echo "<br>num_pages ".$num_pages."";
echo "<br>page ".$page."";
?>

Что получаем.
1 Постоянно выводятся одни и теже записи, независимо от № страницы (ну так по коду и получается)

2 Ссылки не создаются

3 В конце у меня выводятся переменные:
num_rows -1
row_start 0
num_pages -0.2
page 1
Пояснение к ошибке: odbc_num_rows() will return the number of rows in an ODBC result. This function will return -1 on error. For INSERT, UPDATE and DELETE statements odbc_num_rows() returns the number of rows affected. For a SELECT clause this can be the number of rows available.
Note: Using odbc_num_rows() to determine the number of rows available after a SELECT will return -1 with many drivers.
Как давно я английский переводил . Ну типа эта ф-ция с СЕЛЕКТ со многими драйверами не фурычит

-------
How to bypass iCloud lock on Apple iPad 2, 3, 4,
Air, mini and Pro


Отправлено: 09:41, 11-06-2007 | #17


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


pasha4ur, у тебя нет русской документации к PHP? В описании к функции написано:
"odbc_num_rows() возвращает количество столбцов в ODBC-результате. Эта функция возвращает -1 при ошибке. Для операторов INSERT, UPDATE и DELETE odbc_num_rows() возвращает количество задействованных рядов. Для оператора SELECT это может быть количество доступных рядов.
Примечание: использование odbc_num_rows() для определения количества доступных рядов после SELECT возвращает -1 со многими драйверами."
Я не понял - MS Аccess какой-то особенный? По сути, эта функция может вернуть всё, что угодно. Может, на MySQL можно?)) А то как-то слишком тяжело...

Что там ещё:
Цитата:
Описание
bool odbc_fetch_row (resource result_id [, int row_number])
Если odbc_fetch_row() прошла успешно (ряд был), возвращается TRUE. Если рядов больше нет, возвращается FALSE.
odbc_fetch_row() извлекает ряд данных, который был возвращён функцией odbc_do() / odbc_exec(). После вызова odbc_fetch_row() доступ к полям этого ряда осуществляется с помощью odbc_result().
Если row_number не специфицирован, odbc_fetch_row() попытается извлечь следующий ряд результирующего набора. Вызовы odbc_fetch_row() с и без row_number можно смешивать.
Для прохода по результату более одного раза можно вызывать odbc_fetch_row() с row_number 1, а затем продолжать выполнение odbc_fetch_row() без row_number для просмотра результата. Если драйвер не поддерживает извлечение рядов по номеру, параметр row_number игнорируется.
Т.е. odbc_fetch_row() просто переключает указатель на другую строку. Затем нужно использовать odbc_result()

Цитата:
Описание
string odbc_result (resource result_id, mixed field)
Возвращает содержимое поля.
field может быть целым числом, содержащим номер столбца нужного вам поля; либо строкой, содержащей имя поля. Например:
$item_3 = odbc_result ($Query_ID, 3);
$item_val = odbc_result ($Query_ID, "val");
Первый вызов odbc_result() возвращает значение третьего поля текущей записи результата запроса. Второй вызов функции odbc_result() возвращает значение поля, имя которого "val", текущей записи результата запроса. Возникает ошибка, если параметр номера столбца для этого поля меньше единицы или превосходит количество столбцов (или полей) в текущей записи. Аналогично ошибка возникает, если поле имеет имя, которое не является именем поля запрашиваемой таблицы.
Индексы полей начинаются с 1. В зависимости от того, данные каких столбцов возвращаются (binary или long), см. odbc_binmode() и odbc_longreadlen().
Бррр...


Цитата:
1 Постоянно выводятся одни и теже записи, независимо от № страницы (ну так по коду и получается)
Совсем я не понимаю odbc. Что-то далеко от меня. Придётся разгребать тебе самому=(
п.2 и 3 вытекают из п.1

Может быть на phpclub.ru что-нибудь есть.

Отправлено: 12:14, 11-06-2007 | #18


Аватара для pasha4ur

Ветеран


Сообщения: 2764
Благодарности: 315

Профиль | Отправить PM | Цитировать


Да блин ОДБС.
Ох бы я его разработчикам ...
МуСкл просто в технаре не обясняли (нам там вообще ничего не объясняют), а я уже все по диплому сделал . Преподша сказала, что если разгребешь ОДБС, то МуСкл покажется тебе сказкой.
Ладно спрошу у еще одного знающего человека

-------
How to bypass iCloud lock on Apple iPad 2, 3, 4,
Air, mini and Pro


Отправлено: 12:59, 11-06-2007 | #19


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Цитата:
Преподша сказала, что если разгребешь ОДБС, то МуСкл покажется тебе сказкой.
Ох, как она права...

Отправлено: 14:23, 11-06-2007 | #20



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Вопросы по сайту

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Доступ к сайту PHANTOM777 Вебмастеру 7 16-08-2008 16:04
Нужен совет по сайту seriousman Вебмастеру 2 10-04-2008 22:08
поиск по сайту на PHP Vlad Drakula Вебмастеру 5 02-04-2008 11:30
PROXY-сервера ---- вопросы, вопросы, вопросы Galosh Хочу все знать 2 09-07-2003 00:57
Поиск по сайту lehha Вебмастеру 10 25-12-2002 07:13




 
Переход