Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Основы PHP...

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Открыть новую тему     Написать ответ в эту тему

CCKeeper



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Всем привет!
 
Мне сказали, что тут мне окажут помощь и дадут ответы даже на самые глупые вопросы. =)
 
Очень вас прошу, не отсылайте меня на разные учебники и тому подобное! Ну не могу я понять то, что там написано! Может быть, я туповат, не знаю, но тем не менее...
 
У меня есть несколько вопросов, на которые хотелось бы получить ответы:
1) Как в ПХП сделать рандомайзер? То есть, случайное число от 1 до 100, допустим? Какой оператор использовать?
2) Как на ПХП сделать таймер или часы, но только, чтобы значение их отображалось и МЕНЯЛОСЬ каждую секунду. После истечения таймера, допустим, если он отсчитал 3 минуты, когда его значение выставилось 0:00 скрипт совершал действие, например, обновлял страницу?
3)Как получить значение из кукис в переменную?
 
Я понимаю, вопросы глупые и тупые, но я - абсолютный чайник в ПХП. Идеи есть, а вот умений - нету =(
 
Буду очень признателен, если поможете!




Замечание за "ПХП" вместо PHP в названии. — Svarga.

Всего записей: 72 | Зарегистр. 28-12-2003 | Отправлено: 03:38 28-12-2003 | Исправлено: Svarga, 12:28 31-12-2003
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CCKeeper

Цитата:
1) Как в ПХП сделать рандомайзер? То есть, случайное число от 1 до 100, допустим? Какой оператор использовать?  

http://www.php.net/rand
$number=rand(1,100);

Цитата:
2) Как на ПХП сделать таймер или часы, но только, чтобы значение их отображалось и МЕНЯЛОСЬ каждую секунду.  

Это работа не для php
http://forum.ru-board.com/topic.cgi?forum=31&topic=4257#1

Цитата:
После истечения таймера, допустим, если он отсчитал 3 минуты, когда его значение выставилось 0:00 скрипт совершал действие, например, обновлял страницу?  

Для этого достаточно в head написать:

Код:
<meta http-equiv=refresh content="5; url='/page.htm'">

Переход на другую страницу через 5 секунд

Цитата:
3)Как получить значение из кукис в переменную?  

$value=$_COOKIE['имя_куки'];
установить:
http://www.php.net/manual/en/function.setcookie.php

Код:
<?php
$value = 'что то тут';
setcookie ("TestCookie", $value);
setcookie ("TestCookie", $value,time()+3600);  /* действует в течение часа */
setcookie ("TestCookie", $value,time()+3600, "/~user/", ".example.com", 1); /* в течение часа, для директории /~user и домена .example.com только через защищенное соединение https*/
?>  


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 03:44 28-12-2003 | Исправлено: Cheery, 03:49 28-12-2003
CCKeeper



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Спасибо за быструю помощь! Сейчас пойду разбираться!
 
не мог бы ты мне в асю стукнуть?

Всего записей: 72 | Зарегистр. 28-12-2003 | Отправлено: 03:49 28-12-2003
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CCKeeper

Цитата:
не мог бы ты мне в асю стукнуть?

Сорри, не занимаюсь такими вещами по асе. На будущее - для подобных личных вопросов есть ПМ. Вопросы по поводу реализации кода - только в форуме.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 03:50 28-12-2003
Advanced_Guest



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CCKeeper
 
первое что запомни - PHP серверный язык, а не клиентский.
 
 
это значит, что любые действия выполняються на сервере, а ты получаешь только результат в виде HTML (если точнее, то вид может быть любой, вплоть до картинок или word документов, но это имхо пока сложно)
 
поэтому это:

Цитата:
 
2) Как на ПХП сделать таймер или часы, но только, чтобы значение их отображалось и МЕНЯЛОСЬ каждую секунду. После истечения таймера, допустим, если он отсчитал 3 минуты, когда его значение выставилось 0:00 скрипт совершал действие, например, обновлял страницу?
 

невозможно.
это нужен JavaScript.
 
 

Цитата:
 
1) Как в ПХП сделать рандомайзер? То есть, случайное число от 1 до 100, допустим? Какой оператор использовать?
 

например так:

Код:
 
<?php
echo rand ( 1, 100);
?>
 

 
 

Цитата:
3)Как получить значение из кукис в переменную?

 
вот так ставят:

Код:
 
<?php
$value = 'something from somewhere';
setcookie ("TestCookie", $value);
setcookie ("TestCookie", $value,time()+3600);  /* expire in 1 hour */
setcookie ("TestCookie", $value,time()+3600, "/~rasmus/", ".example.com", 1);
?>
 

 
вот так читают:

Код:
 
<?php
$value = $_COOKIE["TestCookie"];
echo $value;
?>
 

 
Добавленно:
Cheery
мдя, долго я писал


----------
The Abyss - UO, LA2, Ботва, BSFG

Всего записей: 2446 | Зарегистр. 14-04-2002 | Отправлено: 03:59 28-12-2003 | Исправлено: Advanced_Guest, 04:01 28-12-2003
CCKeeper



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Спасибо за БЫСТРУЮ и ПОЛЕЗНУЮ инфу, ребята!
 
Буду задавать вопросы, по мере появления!
 
Спасибо еще раз!

Всего записей: 72 | Зарегистр. 28-12-2003 | Отправлено: 04:04 28-12-2003
CCKeeper



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Это снова я!
Теперь у мення пара вопросов по БД MySQL:
1 - У меня отдельная колонка - id. На ней стоит флаг индекса и автоинкремента. Как сделать так, чтобы при уудалении, допустим, записи с id==5, записи "сдвигались" наверх, то есть шестая сталла пятой, седьмая - шестой и т.д...
2 - при регистрации пользователей я хочу сделать так, чтобы их логины состояли только из латинских букв, начинались и заканчивались НЕ на пробел. Как мне это сделать?
 
Заранее спасибо!
 
Добавлено
Вот! Еще! Вспомнил перед сном!
 
3 - как сделать проверку на пользователя в онлайне? у меня есть свои соображения, но они ОЧЕНЬ корявы =(

Всего записей: 72 | Зарегистр. 28-12-2003 | Отправлено: 08:37 30-12-2003
Ghost_in

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
3 Создай файл (базу) в который будешь записывать айпишники юзеров и их время появление на сайте, скажем если пользователь проявлял активность в последнии 10 мин считается что он он-лайн.
1.,2.,3. Вообще-то подобных примеров в инете предостаточно...  
(помогу за деньги найти эти примеры в инете)

Всего записей: 15 | Зарегистр. 25-12-2003 | Отправлено: 10:26 30-12-2003
Ashotovich



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1 - а зачем так извращаться? Хотя, если шибко приспичило...
 
Запоминаем id удаляемой записи как переменную $id1. После ее удаления делаем такую штуку (привожу для PHP):

Код:
 
$result=mysql_query("SELECT id FROM tablename WHERE id>$id1");
while ($row=mysql_fetch_row($result))
   {
       $id2=$row[0];
       mysql_query("UPDATE tablename SET id=($id2-1) WHERE id=$id2");
   }
mysql_free_result($result);
 

 
Добавлено

Цитата:
если пользователь проявлял активность в последнии 10 мин считается что он он-лайн

И кем же это считается? mySQL? Или прикажете установить на стороне сервера специальную мега-утилиту, которая будет отслеживать обращения к базе, да еще с учетом авторизации на PHP (а как еще пользователей различать? Каждому выдавать личный mySQL-аккаунт? )?
 
Подобные проверки могут осуществляться лишь весьма "криво" - на страницах устанавливается миниатюрный iframe, который с промежутком в несколько секунд посылает на сервер запрос, записывая в таблицу время, id пользователя и id его сессии. Потом администратор обрабатывает эту таблицу и вычисляет - кто когда и насколько приходил в базу. Если это можно назвать "онлайн", то с боооольшой натяжкой.

Всего записей: 37 | Зарегистр. 22-12-2003 | Отправлено: 11:15 30-12-2003
IntenT



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
CCKeeper

Цитата:
1 - У меня отдельная колонка - id. На ней стоит флаг индекса и автоинкремента. Как сделать так, чтобы при уудалении, допустим, записи с id==5, записи "сдвигались" наверх, то есть шестая сталла пятой, седьмая - шестой и т.д...  

 
НИКОГДА НИГДЕ БОЛЬШЕ ТАКОГО НЕ ГОВОРИ!
Объясню 1 раз.
Поля (а не колонки, кстати) с автоинкрементом для того и придумывались, чтобы значения в этом поле значения были уникальными, и не менялись при удалении/добавлении новых записей.
ДЛя чего это надо?? ДЛя того, чтобы гарантировать целоствность РЕЛЯЦИОННОЙ базы данных. Что такое реляционная БД? Это когда одна таблица логически ссылается на другую, посредстром значений в индексцых полях. Таблицы имеют взаимосвязи ("реляции").  
Теперь представь, что будет с твоей БД, скажем их 2-х таблиц, если ты сделаешь то, что хотел?
 
tbl_month
id  | name
------------
1   | Jan
2   | Feb
3   |Mar
 
tbl_events
id  |  month_id  | description
----------------------------------
1   |  2             | Some descr
 
Таблица tbl_month - поле id - автоинкремент, уникальное.
Таблица tbl_events по полю month_id ссылается на соотв. значение таблицы tbl_month.
Сейчас, поле month_id ссылается на запись, содержашую значение "Feb".
Что будет, есл ты сделаешь то что хотел -  поле month_id будет ссылаться на запись, содержашую значение "Mar".
 
Надеюсь, понятно объяснил?
 
 
Добавлено
Ashotovich

Цитата:
$result=mysql_query("SELECT id FROM tablename WHERE id>$id1");  
while ($row=mysql_fetch_row($result))  
   {  
       $id2=$row[0];  
       mysql_query("UPDATE tablename SET id=($id2-1) WHERE id=$id2");  
   }  
mysql_free_result($result);  
 

А ты не давай мягко говоря сомнительных советов. Тем более с таким кодом.
хинт. Сколько будет запросов к БД, если в таблице 10000 записей?

Всего записей: 1584 | Зарегистр. 16-12-2001 | Отправлено: 11:48 30-12-2003 | Исправлено: IntenT, 11:57 30-12-2003
Ashotovich



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хехе. Каков вопрос - таков ответ. Я ж написал в начале - "извращение".
 
Кстати, а чем плох код? Что, есть еще какой-то способ обновления множества значений поля в таблице окромя перебора всех строк?

Всего записей: 37 | Зарегистр. 22-12-2003 | Отправлено: 12:06 30-12-2003
IntenT



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ashotovich

Цитата:
Кстати, а чем плох код? Что, есть еще какой-то способ обновления множества значений поля в таблице окромя перебора всех строк?  

Представь себе, есть.
показываю
UPDATE tablename SET id=id-1

Всего записей: 1584 | Зарегистр. 16-12-2001 | Отправлено: 12:31 30-12-2003
Ghost_in

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
И кем же это считается? mySQL? Или прикажете установить на стороне сервера специальную мега-утилиту, которая будет отслеживать обращения к базе, да еще с учетом авторизации на PHP (а как еще пользователей различать? Каждому выдавать личный mySQL-аккаунт? )?  

 
Различаем пользователей, при помощи уникльных идентификаторов, которые запихиваем в куки... При появлении нового пользователя, мы его айпишник и ид и время появления пишем в файл, скрипт который выводит "кто в онлайн", читает файл и выводит  например "5 пользователей он-лайн". При чем здесь mySQL-аккаунт, вы головой или ж думаете? Сессии-то нафига придумали? А инфу о пользователях - можно хранить и в БД.... (при чем здесь аккаунты? )

Всего записей: 15 | Зарегистр. 25-12-2003 | Отправлено: 12:44 30-12-2003
Ashotovich



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ghost_in
 

Цитата:
При появлении нового пользователя, мы его айпишник и ид и время появления пишем в файл, скрипт который выводит "кто в онлайн", читает файл и выводит  например "5 пользователей он-лайн".  

 
Хехе. А как будем определять, что он ушел в оффлайн?
 
Добавлено
Да, насчет "обращений к базе" признаю, погорячился - вопрос был не об этом.
Видимо, следовало спросить о "специальной мега-утилите, которая будет отслеживать создание/удаление файлов сессий".

Всего записей: 37 | Зарегистр. 22-12-2003 | Отправлено: 12:53 30-12-2003
IntenT



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ashotovich

Цитата:
Хехе. А как будем определять, что он ушел в оффлайн

Элементарно.
При каждом запуске скрипта
1) удаляем запись из базы для зашедшего пользователя (даже если он первый раз зашел)
2) добавляем запись в базу для зашедшего пользователя с НОВЫМ ВРЕМЕНЕМ
3) УЖАЛЯЕМ ВСЕ ЗАПИСИ у которых timestamp меньне текушего минус какой-то период (3-5 минут).
 
Получаем в таблице только тех юзеров, кто запускал скрипт не ранее 3-5 минут назад.

Всего записей: 1584 | Зарегистр. 16-12-2001 | Отправлено: 13:17 30-12-2003
Ashotovich



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
3) УДАЛЯЕМ ВСЕ ЗАПИСИ у которых timestamp меньне текушего минус какой-то период (3-5 минут).

 
Хм. Толково. Был неправ.

Всего записей: 37 | Зарегистр. 22-12-2003 | Отправлено: 13:25 30-12-2003
CCKeeper



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
IntenT
 
Спасибо! Я представил, что будет твориться с таблами, если менять ид...  
Спасибо ещще раз...
 
Насчет статус онлайн.
Я думал сделать так. Встроить в чат скрипт, который, опираясь на логин и пасс из кукисов, добавляет в запись юзера в отдельную ячейку время проверки. Если там уже было время проверки, то оно обновляется. А потом (вставить код в профиль юзера) просто проверять интервал между нынешнем временем и временем проверки. Если разрыв, скажем, 3 минуты, то юзер в оффлайне.
 
А вот у меня ламерский вопрос! Как вставить в конкретную запись, в конкретную ячейку конкретное значение?  
 
Спасибо за то, что отвечаете на мои глупые вопросы!

Всего записей: 72 | Зарегистр. 28-12-2003 | Отправлено: 00:50 31-12-2003
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CCKeeper

Цитата:
А вот у меня ламерский вопрос! Как вставить в конкретную запись, в конкретную ячейку конкретное значение?  

зависит от того, что ты определяешь как "конкретную".. по какому условию.
UPDATE table SET column=value WHERE column=another_value
http://www.mysql.com/doc/ru/UPDATE.html
если вставить новую запись, то  
http://www.mysql.com/doc/ru/INSERT.html

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:52 31-12-2003 | Исправлено: Cheery, 00:59 31-12-2003
CCKeeper



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
вот допустим, как в коде выразить:
в запись с id 123 в колонку с именем abc вставить значение x вместо того, что было раньше...
 
Я просто не совсем понимаю вот эти структуры... INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
        [INTO] tbl_name [(col_name,...)]
        VALUES (expression,...),(...),...

Всего записей: 72 | Зарегистр. 28-12-2003 | Отправлено: 01:25 31-12-2003
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CCKeeper

Цитата:
Я просто не совсем понимаю вот эти структуры...

Смотри всегда ниже - там есть примеры. [что то тут] означает необязательные параметры.

Цитата:
в запись с id 123 в колонку с именем abc вставить значение x вместо того, что было раньше...  

UPDATE table_name SET abc='x' WHERE id=123


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 02:15 31-12-2003
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Компьютерный форум Ru.Board » Интернет » Web-программирование » Основы PHP...


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru