Бесплатные PHP скрипты - форум техподдержки

Бесплатные PHP скрипты - форум техподдержки

Форум техподдержки WR-Скриптов на php. Обсуждаем: основы программирования на PHP 5 - 7 версий, различные подходы к написанию скриптов на php 7 без MySQL. А также WR-скрипты: бесплатные доски объявлений, скрипты форумов, Гостевые книги, Каталог ссылок, Галерея, Фотоальбом, Счётчики, Рассылки, Анекдот и другие. Принимаются пожелания для новых версий. Сообщите какой скрипт нужен для Вашего сайта, постараемся найти или реализовать. Скачать скрипты можно бесплатно. Вместе мы сделаем бесплатные php скрипты лучше и доступнее!

Главная сайта бесплатных php скриптовГлавная сайта   ПоискПоиск  
Сегодня: 22.11.2024 - 00:03:02
Страницы:  1  2  3  4  ... 7

Модернизация скрипта знакомств

Объявление - WR-Scriptы в UTF-8 кодировке

Активно обновляю скрипты и перевожу их в UTF-8 кодировку. Список перекодированных php скриптов доступен на главной странице сайта. Скачивайте скрипты и устанавливайте на свой сайт! В ближайшее время обновлю каталог знакомств, форум Про, фотоальбом, доски объявлений лайт и ЛЮКС.

На форуме, пожалуйста, пишите что модернизировать в скриптах в первую очередь. Постараюсь исправить большую часть пожеланий!
Планирую продолжить работы весь 2023 год.

АвторСообщение

Георгий

Г
Участник форума

Еще раз приветствую всех!
Есть еще такая задача, подсказывайте, кто знает?
Как извлечь $dt[0] из последней анкеты, или его значение из последней строки базы?
Нужно сделать $dt[0]++ при добавлении следующей анкеты,
тогда все анкеты будут по порядку - это будет полезнее!
И не надо будет использовать рандомный $key
Не делать же отдельный счетчик count() с записью в отдельный файл...
Михаил, выручайте! Как нам обратиться к $dt[0] последней анкеты, при добавлении новой?
С уважением, Георгий

Сообщение # 13 19.10.08 - 18:18:41

Maksir

M
Участник форума

Георгий, ничего не поять... что вам надо. Но из первой строки мне послышался вопрос про - "как узнать данные последней анкеты..."

Допустим, переменная $line содержит массив строк вашей базы данных анкет. Каждая строка этого массива, это данные нового пользователя. Следовательно, $line[0] Будет всегда соотвествовать первому зарегистрировавшемуся, т.е. первой анкете. А, $line.., где каждый новый пользователь по числу возростания - эти данные пересчитывает и выводит цыкл. Тело цыкла заключен в фигурные скобки. Цыкл прекращает пересчитывать строки массива, когда достигает своего опофеоза. То есть, - кончаются строки, цыкл возвращает falsh, Но, последние полученные данные остаются в памяти.
Короче, за фигурными скобками этого цыкла, переменная $dt[0] будет всегда соотвествовать последней строке в вашей БД анкет.

Сообщение # 14 19.10.08 - 22:24:23

Дима

Д
гость

я тут тоже кое что начал модернизировать вот http://lovesky.sk6.ru//meeting/index.php?event=addform изменил цель знакомства

Сообщение # 15 20.10.08 - 01:13:45

WR

W
Участник форума

Дима, а почему в цели 3 раза флирт ?

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

а вот Maksir придлагает верное решение - обращаться к последней строке в БД - это и будет последняя размёщенная анкета.

Сообщение # 16 20.10.08 - 04:30:20

Георгий

Г
Участник форума

Приветствую, Maksir и Михаил!
Правильно Михаил заметил, если переместить первую анкету вниз, тогда отсчет пойдет повторно.
Тогда надо искать максимальное значение ключа из всех анкет и прибавлять 1 при добавлении следующей анкеты.
Пусть анкеты перемещаются или удаляются, старое значение ключей не будет использоваться.
Допустим, запускаем изначально скрипт, в базе одна анкета с ключом 100001
Нужно, чтоб при добавлении следующей анкеты считывался ключ анкеты и к нему добавлялась единичка.
Есть анкета 100001, следующая будет 100002 и т.д.
Если анкеты перемещаются - перемещается вся строка, вместе с ключом же.
значит надо вычислять максимальное значение ключа и к нему прибавлять единицу.
Это возможно сделать?

Цитата:

а вот Maksir придлагает верное решение - обращаться к последней строке в БД - это и будет последняя размёщенная анкета

А как обратиться к последней строке? Как-то это делается с помощью Fseek(),
но последняя строка пустая, надо к предыдущей.
С уважением, Георгий

Сообщение # 17 20.10.08 - 22:14:06

Maksir

M
Участник форума

Георгий, пустой строки в базе не должно быть. Если строка пустая, то её нужно стереть.
Если скрипт дописывает пустую строку, то, возьмём во внимаение мой предидущий пост, переменная $line[$i].
В цикле пишим:

Код:


if ($dt[0]!=0) {
$dt="$dt[0]";
}

Таким образом, переменная $dt сохранит последнее значение непустой строки.
Конечно, есть и другие способы, но этот самый простой.

Сообщение # 18 21.10.08 - 00:48:58

WR

W
Участник форума

Георгий, возможно такое сделать. По такому алгоритму работает панель администратора в доске объявлений при добавлении рубрики/раздела.

Сделать могу. Насколько это нужно? Давайте подумаем что такая нумерация нам даст - какие будет плюсы и минусы.

Я вижу, что при добавлении анкеты нужно считывать весь файл с анкетами в память, запускать поиск наибольшего по каждой строке. При кол-ве анкет 10 штук - это быстро, а если в базе 1000 анкет? - 2-4 секунды будет работать этот поиск.

Из плюсов - легко сослаться на анкету с любого сайта - нужно только знать свой номер по порядку и ссылка можно будет сделать вида: index.php?anketa=1001.

Ещё идеи какие будут?

Сообщение # 19 21.10.08 - 04:45:11

Георгий

Г
Участник форума

Если в базе больше тысячи анкет - больше вероятность создания одинакового ключа,
вот основной минус, не будем при этом углубляться в теории вероятностей,
они всегда там - где их не ждешь.
Насчет скорости обработки приведу цитату из форума softtime:

Цитата:

за сотые доли секунды обработал файл в 205884 строк (более 5Мб)

речь идет о такой же обработке файла такой же структуры.
Не нужно обрабатывать весь массив, только значения ключей,
не думаю что обработка одного элемента массива займет столько времени.

Из еще идей - очень лишние поля: логин и пароль
По сути, они создавались,как я понял для реализации будующих возможностей...
но прогресс как всегда не спит.
Сейчас удобнее генерить логин с паролем в ссылку и отправлять на мыло пользователю,
чтоб тот по ссылке заходил в редактирование анкеты.
Поле логина я сразу убрал из формы, сделав в блоке добавления $login=$name;
теперь оно записывает одно и тоже значение в dt[1] и dt[3],
конечно это пока временно, чтоб не сдвигать всю структуру массива,
но в итоге лучше будет последнее.
В любом случае, если у пользователей будут одинаковые имена - ключи и пароли будут разные.
Пароль генерить, может чем-нить типа tempnam(); но оно для имен файлов, не очень подходит,
может есть другие похожие функции, чтоб файл не создавать.
Ну и в заключении в меню сделать ссылки "мужчины" "женщины",
жмякая по которым отображались бы толкько соответствующие анкеты.
Вместо страницы со случайной анкетой, лучше сделать последних n-анкет.
Можно сделать блок Vip-анкет, которые будут отображаться впереди всех,
но эта опция должна быть за дополнительную плату
С уважением, Георгий

Сообщение # 20 21.10.08 - 17:55:54

Maksir

M
Участник форума


Цитата:

Если в базе больше тысячи анкет - больше вероятность создания одинакового ключа

Чё-то я не понял, каким образом?
Пересчёт строк файла, это не индексы.. или я неправильно понял?

Если вам нужны индексы, то возьмите в дополнительное поле при регестрации, где-то в конце строки БД допишите ещё одно поле. И вставьте генерируемую при регистрации переменную. Например, в эту ячейку можно вставить метку Unix. Или, если такая метка уже существует в БД, то ещё проще. Удобно тем, что - порядок состава чисел практически не меняется, очень компактно. В то же время, этот порядок чисел хранит точную дату регистрации до секунды. Вероятность того, что эти данные могут совпасть ещё с кем-то в момент регистрации, такой возможности нет. Сервер определяет время процесса в последовательности, один за другим.

Но можно пойти и другим путём. Можно вставлять порядок чисел как в SQL При этом, нужно организовать ряд проверок при редактировании анкет или удалении. В принципе, и это не сдложно.

Сообщение # 21 22.10.08 - 18:31:22

Георгий

Г
Участник форума


Цитата:

Чё-то я не понял, каким образом?

Ключ генерируется mt_rand(), это конечно круче чем rand(), но тем не менее...
Как предложил Михаил:

Цитата:
index.php?anketa=1001
- это то, что доктор прописал
Прям то, че надо!
Ну ил по-Вашему:
Цитата:
Можно вставлять порядок чисел как в SQL

Короче, чтоб вместо:

Код:
51018|name|login|email|и т. д.|||
83755|name2|login2|email2|и т. д.|||
25427|name3|login3|email3|и т. д.|||
40113|name4|login4|email4|и т. д.|||

Было:

Код:
10001|name|login|email|и т. д.|||
10002|name2|login2|email2|и т. д.|||
10003|name3|login3|email3|и т. д.|||
10004|name4|login4|email4|и т. д.|||

Собственно, вот.

Сообщение # 22 22.10.08 - 23:05:26

Георгий

Г
Участник форума

Пришлось проверку MIME-типов сделать через условие, с проверкой загружаемого файла.
Иначе этот блок обругивается на анкету без фото.

Сообщение # 23 22.10.08 - 23:06:19

Maksir

M
Участник форума

Георгий, если делать как в SQL. То при добавлении анкеты, в самом блоке нужно прикрутить счётчик, который бы вычислял последний ID и прибавлял к нему 1, именно на тот момент когда происходит добавление анкеты. Дальше, можно делать что хошь... Всё будет, как в SQL.

Сообщение # 24 23.10.08 - 23:35:14
не получают сообщения :Предыдущая темаСледующая тема: Постраничная навигация
Страницы:  1  2  3  4  ... 7

Сообщение
Имя E-mail
Сообщение

Нажмите на точку возле имени для обращения к участнику

Смайлы:

Ещё смайлы
Эмодзи
         
Защитный код: (введите цифры, которые на синем фоне)
Ответ на вопрос: (Какой сейчас год?)
   
WR-Счётчик
Powered by WR-Forum Professional © 2.3 UTF-8 beta версия