![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Blaga |
|
||||
![]() ЛамМер++ ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 15.11.2005 Где: г. Иркутск Репутация: 2 Всего: 4 |
Доброго времени суток!
Столкнулся с такой проблемой. Загружаю на сайт шрифты, формируются картинки с этими шрифтами. Т.к. картинки с первого раза не всегда получаются хорошие, То бишь нужно поправить размер, языки написания и проч. Так вот после этого я начинаю их редактировать. ТАм есть опция удалить картинку и шрифт вообще, если он плохой какой нить. Так вот проблема в том что какой бы я шрифт не выбрал, удаляется только последний шрифт.... если выберу два, то удалиться последние два. Как вы сами понимаете, меня такая ситуация не устраивает... В чем дело никак не могу понять. Ниже скину сам скрипт(прошу прощения за быдло-код :( )
и для примера дамп массива $_POST
Заранее большое спасибо. -------------------- |
||||
|
|||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
это по определению неправильная конструкция, невыбранные чекбоксы не передаются на сервер, соответственно даже если ты отметишь двенадцатый пункт, но не ответишь первые одинадцать, на сервере ты получишь массив с одним элементом delete[0], в то время как имена задаются подряд посмотри здесь, может в этом проблема но неправильная она даже не поэтому, а потому что передавать через форму имена файлов - потенциальная брешь в безопасности. лучше передавать только id Добавлено через 1 минуту и 43 секунды кстати, ты не выбрал ни одного на удаление |
|||
|
||||
| Blaga |
|
|||
![]() ЛамМер++ ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 15.11.2005 Где: г. Иркутск Репутация: 2 Всего: 4 |
вот заэтим у меня и выбраны все чекбоксы. а чтобы удалить я снимаю выделение.... по поводу безопасности, этот скрипт только я буду использовать, так что не вижу смысла заморачиваться в нем. с клиентской частью у меня все в порядке, а из под админа, то бишь я ничего делать не буду... ) -------------------- |
|||
|
||||
| bars80080 |
|
||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
ну фиг с безопасностью, а что с удалением?
error_reporting(E_ALL); вначале есть?
ты возможно не совсем понял, если из пяти твоих чекбоксах снять галочку со второго номера, то на выходе у тебя по определению удалится только последний элемент, т.к. придёт массив вида array('delete[]' = 'yes', 'delete[]' = 'yes', 'delete[]' = 'yes', 'delete[]' = 'yes') в котором нет обозначения элементов массива и сервер перестроит его в $_POST['delete'][0] = 'yes', $_POST['delete'][1] = 'yes', $_POST['delete'][2] = 'yes', $_POST['delete'][3] = 'yes' т.е. выкинут будет последний пятый элемент, а не второй |
||||
|
|||||
| Blaga |
|
|||
![]() ЛамМер++ ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 15.11.2005 Где: г. Иркутск Репутация: 2 Всего: 4 |
bars80080, я весь скрипт привел.... в начале есть это Error_Reporting(E_ALL^E_NOTICE);
но да не суть.... так как теперь реализовывать удаление? может быть сделать селект? типа удалить? да \ нет ? -------------------- |
|||
|
||||
| bars80080 |
|
||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
да нет, достаточно в имени чекбоксов добавить идентификатор: delete[2]
тем более что он у тебя прокручивается в цикле for
большой скрипт, не уследишь а ты уверен, что так можно соединять E_ALL^E_NOTICE ? у меня пишут, что только E_ALL|E_NOTICE |
||||
|
|||||
| teroni |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 15.5.2007 Где: Днепропетровск Репутация: 8 Всего: 22 |
Для понимания сути чекбоксов можете поиграться с такой штуковиной
При выборе значений 0 и 2 мы получаем такие данные: 1) [del] => Array ( [0] => 0 [1] => 2 ) 2) [del] => Array ( [0] => yes [2] => yes ) 3) [del] => Array ( [0] => yes [1] => yes ) То есть в первых двух случаях мы получили на сервере выбранные значения 0 и 2. А в третьем (Ваш случай) - мы получили 0 и 1, что было бы и при выборе цифр (1 и 2) либо (0 и 1). То есть такие чекбоксы Вам не подходят и надо переходить на первую либо вторую конструкцию. Добавлено через 13 минут и 20 секунд Вот bars80080, меня опередил... Правильно написал
а потом
Это сообщение отредактировал(а) teroni - 27.10.2008, 12:45 |
||||||
|
|||||||
| Blaga |
|
|||
![]() ЛамМер++ ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 15.11.2005 Где: г. Иркутск Репутация: 2 Всего: 4 |
итак, вначале я сделал с селектами, но у меня появилась еще одна проблемка.
Потом увидел ваши комменты, и сделал как вы сказали с чекбоксом.... Только вот касяк есть один... если удалять только последнюю запись то тогада все ок. А если любую другую то вместе с ней удаляется и последняя.... То есть в массиве $_POST вроде бы все строки последнего на месте, но самма запись не отображается на экране. 0 => OCR-A BT 1 => pala 3 => Tahoma 4 => vrinda 5 => Wingdings как видно запись под номером 2 удалилась. А запись под номером 5 не удалилась, но не отображается на странице... -------------------- |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
вот знаешь, как сильно влияет правильное (красивое) построение кода на ошибкоулавливаемость. вот у тебя скобки выделяюшие блоки в циклах и условиях по натыканы как получилось, в результате много чего не видно, приходится соображать
я всегда, когда беру не свой скрипт, то переделываю его в нужный мне вид, трачу несколько минут, но зато потом всё становится кристально ясно у тебя удаление и построение чекбоксов идёт в одном цикле, что очень вредно для здоровья, что кстати здесь и видно. советую разделить их. пусть будет два цикла, первый удаляет всё отмеченное, следующий заново выясняет количество существующих позиций и выносит их бр, сейчас увидел, что у тебя пару кусков кода повторяется. это к чему? |
|||
|
||||
| Blaga |
|
|||
![]() ЛамМер++ ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 15.11.2005 Где: г. Иркутск Репутация: 2 Всего: 4 |
bars80080, да я ж говорю быдло-код... писал давно очень, в неадеквате.
Я нашел в чем косяк, ведь массив у меня получается такой 0 => OCR-A BT 1 => pala 3 => Tahoma 4 => vrinda 5 => Wingdings то есть нету ключа под номером 2 А цикл этот ключ прогоняет, но так как его нет он его пропускает. поэтому последнюю строку в массиве цикл недокручивает.... мне нужно что бы массив стал таким 0 => OCR-A BT 1 => pala 2 => Tahoma 3 => vrinda 4 => Wingdings ну или еще какоенибудь решение..... -------------------- |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
это решение конечно ахтунг, но на заплатку годится:
|
|||
|
||||
| Blaga |
|
|||
![]() ЛамМер++ ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 15.11.2005 Где: г. Иркутск Репутация: 2 Всего: 4 |
bars80080, в решений есть косячок, в том что удалить можно будет только один раз. после того как уже что то удалил если пытаешься удалить снова то скрипт ведет себя опять непонятно как...
ну да ладно я уж походу тут всем мозги запарил.... :( придется юзать как есть. -------------------- |
|||
|
||||
| Blaga |
|
|||
![]() ЛамМер++ ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 15.11.2005 Где: г. Иркутск Репутация: 2 Всего: 4 |
Проблема решилась тем, что я ненужные мне шрифты добавляю в БД а в конце работы скрипта они оттуда удаляются....
Спасибо всем кто помогал. -------------------- |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |