[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Класс работы с БД
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
dr.nomore
Свернутый текст
Кстати, я как-то заглядывал в сырец по архивированию и не сразу, но позже сообразил что в скриптовых языках нормальных методов чтения файлов быть не может.

Нашел на vb в кодах извлечения тумбов из разных форматов, в частности из psd (фотошоп). На тот момент Адоба отчаявшись наладить отображение тубмов в Винде попросту ликвидировала их представление, но оставила в файлах, причем независимо от настроек самой проги. Ну вот, берешь из документации о формате файла все полезные структуры, в частности:

Private Type PSDHEADER
Signature As String * 4
Version As Integer
Reserved(0 To 5) As Byte
Channels As Integer
rows As Long
Columns As Long
Depth As Integer
Mode As Integer
ColorModeData As Long
End Type

' и вперде. Вот смотрите как в нее все читается:

Dim ph As PSDHEADER

hFile = FreeFile()
Open psdFileName For Binary Access Read Lock Write As #hFile

' Get the file header
Get #hFile, 1, ph
' готово, можно ковырять
ph.Version = ToLittleEndianI(ph.Version)
dr.nomore
Цитата (Invis1ble @ 30.11.2013 - 16:09)
я вижу в html "placeholder="10 знаков" maxlength="10"" и делаю вывод, что тебе надо посчитать длину текста в символах. mb_strlen для этого подходит.

Но там же было написано про целое. Из целого о 10 знаках не узнаешь. То, что там написано - оно уже написано и измерять его не надо.
dr.nomore
Цитата
в функции mb_* вообще-то можно передать любую кодировку


У нас и числа теперь в тексте кодировке подвергаются?

Про это "отображение" я несколько раз читал и ни разу ничего не понял. Кроме того что творец таблицы определяет ограничения для отображения значений которые очевидно берутся из ограничений интерфейса.

Ну вот, если парсер сам воткнул 10, значит 10, логично. Что, конечно, не означает как я понимаю возможности записать туда 9 миллиардов.


dr.nomore
Цитата (Aeq @ 30.11.2013 - 16:12)
я если честно сдаюсь уже писать ответы на все тезисы dr.nomore. скучно уже стало..

Забейте. Кроме нас тут все равно никого.

Я все понимаю, конечно, но факт в том, что такие классы сами по себе и редко кто возьмется их юзать, поскольку выучить sql гораздо полезнее чем изучать очередную рамку.
Aeq
цифры в скобках у интов нужны исключительно для выравнивания по правому краю чисел при выводе моноширинным шрифтом.

про mb_* я писал в отношении строк
Цитата
Длина строки из 10 символов может быть померена с учетом заданной кодировки. Которая 1) может не совпадать с кодировкой данных из БД


в отношении чисел
Цитата
2) число это не последовательность символов.

естессно mb_* функции нафиг не нужны
Aeq
Цитата (dr.nomore @ 30.11.2013 - 16:38)
Цитата (Aeq @ 30.11.2013 - 16:12)
я если честно сдаюсь уже писать ответы на все тезисы dr.nomore. скучно уже стало..

Забейте. Кроме нас тут все равно никого.

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

я никогда и не предлагал юзать этот класс не зная sql. надо будет даже в ридми так и написать, что сначала идите учить sql
dr.nomore
Цитата
цифры в скобках у интов нужны исключительно для выравнивания по правому краю чисел при выводе моноширинным шрифтом.


А, точно, для консоли. Ну наконец-то разобрался. Спасибо.
Aeq
Цитата (dr.nomore @ 30.11.2013 - 16:55)
Цитата
цифры в скобках у интов нужны исключительно для выравнивания по правому краю чисел при выводе моноширинным шрифтом.


А, точно, для консоли. Ну наконец-то разобрался. Спасибо.

! laugh.gif
Aeq
dr.nomore
вот лучше предложите вариант, как в пхп организовать фильтрацию интов перед сохранением в базу, в плане кол-ва байтов, т.е. tinyint, smallint, int, bigint. Как лучше написать фильтр в пхп, или лучше просто ловить эксепшн из БД если выходит за границы и переводить его в удобочитаемом виде пользователю? что скажете?
Invis1ble
Aeq
делать запрос (с возможной установкой коннекта) и ловить ексешпн по идее гораздо более затратная операция, чем сразу провести валидацию smile.gif

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Aeq
Цитата (Invis1ble @ 30.11.2013 - 17:10)
Aeq
делать запрос (с возможной установкой коннекта) и ловить ексешпн по идее гораздо более затратная операция, чем сразу провести валидацию smile.gif

согласен, но у мистера dr.nomore вероятно свое видение. хочу его услышать. это первое. второе: т.к. больше склоняюсь к фильтрации до запроса в БД - интересно услышать как лучше реализовать такой фильтр, в пхп имеем инт который зависит от ОСи 32/64 бита, а в мускуле объявлен tinyint, как будем его фильтровать? нужно 2 решения, одно silent, т.е. по-тихому урезает значение до 1байта, второе - эксепшен если выходит за рамки, т.к. в зависимости от ситуации оба решения имеют право на существование
Aeq
кстати, я написал тесты для основных методов схемы. не писал тесты на разные фильтры, но есть тест на то что они запускаются )) вобщем юзать уже можно. В ближайшее время напишу описание с примерами. А пока нет доков с примерами, суть понять можно по следующему коду:
# вариант с выборками заранее
$trees = $schema->tree()->limit(10)->fetchAll(); # берем 10 деревьев
$schema->fruit()->refs($trees)->fetchAll(); # получаем все фрукты этих деревьев
$schema->tree_extra()->refs($trees)->fetchAll(); # получаем 1-к-1 расширенной инфы о деревьях
# выводим все что получили

foreach ($trees as $tree) {
echo $tree->name, '<br>';
echo $tree->tree_extra->height, '<br>';
foreach ($tree->fruit as $fruit) {
echo $fruit->name, '<br>';
}
}


# вариант с выборками на лету
$tree = $schema->tree->get(1); # берем дерево
echo $tree->name, '<br>';
echo $tree->tree_extra()->height, '<br>'; # выбираем расширенные данные 1-к-1 для вывода высоты
foreach ($tree->fruit() as $fruit) # выбираем фрукты и сразу выводим
{
echo $fruit->name, '<br>';
}

# создание и сохранение
$fruit = $schema->fruit->create(); # создаем фрукт
$fruit->name = 'new fruit'; # устанавливаем имя фрукта
$fruit->save(); # сохраняем фрукт в БД

echo $fruit->id, '<br>'; # идентификатор сохраненного фрукта установлен автоматически

$fruit->name = 'new fruit updated'; # меняем имя фрукта
$fruit->save(); # снова сохраняем уже с новым именем

все что после -> выпадает в автокомплите в IDE, включая имена полей у строк после выборок с fetchAll. проверял в NetBeans, и зная PhpStorm могу утверждать что там тоже с этим все ок.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.