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

  Все выпуски  

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


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

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 397
от 12.07.2006, 23:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 318, Экспертов: 42
В номере:Вопросов: 2, Ответов: 8


Вопрос № 48438: Внимание-вопрос: как средствами php выполнить автозаполнение формы в интернет?...
Вопрос № 48498: Здравствуйте товаритщи эксперты!!! Возник вопрос, как из MySQL таблицы вытащить случайную запись, из получаемых по условию? Тоесть есть sql запрос "SELECT * FROM table WHERE status = 0", он возвроащает несколько записей, как вывести случайн...

Вопрос № 48.438
Внимание-вопрос: как средствами php выполнить автозаполнение формы в интернет?
Отправлен: 07.07.2006, 09:56
Вопрос задал: Ильин Игорь Анатольевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: PVS
Здравствуйте, Ильин Игорь Анатольевич!
Надо знать какой запрос отправляет каждая конкретная форма и отправлять запрос той же структуры по тому же адресу
Ответ отправил: PVS (статус: 7-ой класс)
Ответ отправлен: 07.07.2006, 10:03

Отвечает: Zysoftik
Здравствуйте, Ильин Игорь Анатольевич!

Само автозаполнение на PHP выполнить невозможно, т.к. сохранение данных и автозаполнение реализуется браузером.

Однако, можно предложить такой способ:
При заполнении форм, несекретные данные заносить в куки, а при генерации формы выводить ее уже с параметрами, вынутыми из куков.
Например, если из куков достали $login, тогда пишем

echo '<input type=text name=login value="'.$login.'">';
Ответ отправил: Zysoftik (статус: 5-ый класс)
Ответ отправлен: 07.07.2006, 13:42
Оценка за ответ: 3


Вопрос № 48.498
Здравствуйте товаритщи эксперты!!! Возник вопрос, как из MySQL таблицы вытащить случайную запись, из получаемых по условию? Тоесть есть sql запрос "SELECT * FROM table WHERE status = 0", он возвроащает несколько записей, как вывести случайную? Зранее благодарен.
Отправлен: 07.07.2006, 22:46
Вопрос задал: Антонов Никита Вячеславович (статус: 1-ый класс)
Всего ответов: 6
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Марк Крейн
Здравствуйте, Антонов Никита Вячеславович!
Нужно подсчитать кол-во полученных записей (функция mysql_num_rows()). Потом запустить настроить генератор случайных чисел, например так: (mt_srand(time()) и запустить его примерно так:
$f=mt_rand(1, $a) где $a - число записей, полученных в результате выполнения запроса.

В итоге будет сгенерировано некоторое число в промежутке от 1 до кол-ва выведенных записей. Далее следует ещё один запрос уже на вывод "случайной" записи:

select * from table where id='$f'

и его обработка соответствующими функциями php.
Ответ отправил: Марк Крейн (статус: 8-ой класс)
Ответ отправлен: 07.07.2006, 22:53

Отвечает: Cimus
Здравствуйте, Антонов Никита Вячеславович!
изначально надо узнать количество строк в таблице и их индетификатор

// id - порядковый номер записи
$zapros_count="SELECT `id` FROM `table` WHERE status = 0 ";
if(!($bdresult = @mysql_query($zapros_count , $bdlink)))
{
print 'error';
exit;
}
else
{
while($temp=mysql_fetch_assoc($bdresult))
{
$id[].=$temp['id'];//получили массив с идентификаторов
}
}
теперь надо выбрать случайную запись из возможной

$idd=$id[rand(1,count($id))];

Ну а теперь осталось получить саму запись
SELECT * FROM table WHERE id=$idd

Вот и всё ))

---------
Достичь можно любых высот !
Ответ отправил: Cimus (статус: 5-ый класс)
Ответ отправлен: 07.07.2006, 23:10
Оценка за ответ: 5

Отвечает: XMF
Здравствуйте, Антонов Никита Вячеславович!
--
все ответы потенциально неправильны...
Допустим у вас есть таблица и
id=1
id=4
id=8
--
получаете вы количество... 3 рандомите.. получам допустим 2... теперь пишим "...where id=3" и... пусто..
предлагаю так:
--------------------
1. Получаем количество строк.
2. Рендомим... получаем случайное число от 1-(количество-1)
3. Запрос: Select * from ... limit [rand], 1
=-=-=-=-=
вотъ
Ответ отправил: XMF (статус: 6-ой класс)
Ответ отправлен: 08.07.2006, 00:08

Отвечает: Stamm
Здравствуйте, Антонов Никита Вячеславович!
Сначала генерируешь случайное число от 1 до кол-ва записей:
$nom=mt_rand(1,mysql_result(mysql_query("SELECT COUNT(*) FROM table WHERE status = 0"),0,0);
А потом делаешь запрос:
"SELECT * FROM table WHERE status = 0 LIMIT $nom,1"

Приложение:

---------
Этот мир обречён на нас ©Сергей Маврин

Ответ отправил: Stamm (статус: Студент)
Ответ отправлен: 08.07.2006, 09:54
Оценка за ответ: 2

Отвечает: PVS
Здравствуйте, Антонов Никита Вячеславович!
SELECT * FROM table WHERE status = 0 order by md5(current_timestamp+id) limit 1
current_timestamp - чтобы каждый раз результат был разным, id - чтобы записи отличались, так как timestamp скорее всего будет одинаковым (если таблица не громадная)
Ответ отправил: PVS (статус: 7-ой класс)
Ответ отправлен: 10.07.2006, 10:10

Отвечает: Alexey Vilchinsky
Здравствуйте, Антонов Никита Вячеславович!
сначала вытаскиваете все записи по запросу и заталкиваете их в массив, например $ar
затем делаете
$i=rand(0,count($ar)-1);
echo $ar[$i]

---------
Делая людям добро, мы возвращаем его многократно...
Ответ отправил: Alexey Vilchinsky (статус: 10-ый класс)
Ответ отправлен: 10.07.2006, 10:12


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

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное