|
Бесплатные PHP скрипты - форум техподдержки |
Форум техподдержки WR-Скриптов на php. Обсуждаем: основы программирования на PHP 5 - 7 версий, различные подходы к написанию скриптов на php 7 без MySQL. А также WR-скрипты: бесплатные доски объявлений, скрипты форумов, Гостевые книги, Каталог ссылок, Галерея, Фотоальбом, Счётчики, Рассылки, Анекдот и другие. Принимаются пожелания для новых версий. Сообщите какой скрипт нужен для Вашего сайта, постараемся найти или реализовать. Скачать скрипты можно бесплатно. Вместе мы сделаем бесплатные php скрипты лучше и доступнее!
|
| Сегодня: 22.11.2024 - 00:03:02 Модернизация скрипта знакомствОбъявление - 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(), но тем не менее... Как предложил Михаил:
Цитата: - это то, что доктор прописал Прям то, че надо! Ну ил по-Вашему: Цитата:Можно вставлять порядок чисел как в 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
| |
|