PHP - вопросы с реализацией некоторых задач.

Автор evil_elf, 10 Лютий 2010, 22:44:09

Попередня тема - Наступна тема

evil_elf

Здраствуйте.Есть такая вот штука тыц. (необходима несложная регистрация).Собственно, стоит задача сделать аналог этой "фичи" ("мои задачи).Почти всё я уже накодил, но осталось несколько проблем:

- немогу пометить нужные чекбоксы, чтобы они отмечались помеченными при обновлении страницы (данные берутся из БД)
- проблемы со сменой даты и календарём, пометкой текущей даты

Исходники и sql-файл базы прилагаются.Помогите, кто чем может...

З.Ы.Зарегал ещё один профиль, юзайте.Логин=пароль: test123123

I.g.I

Что значит при обновлении страницы?
Проблемы со сменой даты? Какие? Гадать все должны что там используется для смены даты календаре \ пометке текущей даты?

Качать исходники как-то не охота...

evil_elf

В базе хрянятся данные, какая галочка на какой задаче активирована.Собственно, надо эти данные вытащить из базы и при формировании страницы учесть (т.е. сделать активными).

Не поленись посмотреть оригинал, и поймёшь, о чём я :) Включая календарь.Риальне, долго описывать эти все нюансы... :(

З.Ы.Исходников там понты, и быдлокода не сильно много, так что не боись, разберёшся :)

Edd.Dragon

#3
Цитата: evil_elf від 10 Лютий 2010, 22:44:09- немогу пометить нужные чекбоксы, чтобы они отмечались помеченными при обновлении страницы (данные берутся из БД)
В смысле? пользователь расставил чекбоксы, они засабмитились в базу, а уже после этого ты их не можешь выставить (<input type="checkbox"  checked="checked" />)?



Добавлено: 10 Лютий 2010, 23:00:06

Цитата: evil_elf від 10 Лютий 2010, 22:59:17Не поленись посмотреть оригинал, и поймёшь, о чём я  Включая календарь.Риальне, долго описывать эти все нюансы...
А значит рыться в исходниках - не долго? Кому помощь нужна?  ???

Добавлено: 10 Лютий 2010, 23:03:14

Цитата: evil_elf від 10 Лютий 2010, 22:59:17так что не боись, разберёшся
Не правильный подход. Ответ напрашивается сам собой:

Бери в руки Гугль, ищи - не боись, разберёшся.
Заметь - 100% совет. На себе проверял не раз. Время конечно порой отнимает, но таки - не боись, разберешься. С теми же чекбоксами совсем не пойму, в чем затык то справочник/хелп порыть? Или проблема в чем-то другом? ))

evil_elf

#4
ЦитатаВ смысле? пользователь расставил чекбоксы, они засабмитились в базу, а уже после этого ты их не можешь выставить (<input type="checkbox"  checked="checked" />)?

В том то и суть, что надо вытянуть из базы занесённые туда ранее данные о чекбоксе и дописать эту самую строку checked рядом с нужным чекбоксом нужной задачи

ЦитатаА значит рыться в исходниках - не долго? Кому помощь нужна?
Мне нужна.Но обьяснить внятно и чётко займёт действительно больше времени, нежели если ты посмотришь...Проверено.Темболее, объяснять весь механизм взаимодействия словами намного сложнее, чем просто посмотреть на него в работе..

З.Ы. Я с гуглом и бубном уже 3й день пляшу, и что то всё никак...

Зарегал логин\пароль: test123123
Смотрите :)

Edd.Dragon

Цитата: evil_elf від 10 Лютий 2010, 23:03:28В том то и суть, что надо вытянуть из базы занесённые туда ранее данные о чекбоксе и дописать эту самую строку checked рядом с нужным чекбоксом нужной задачи
Эм... А в чем проблема то? Ты ж целый сайт накодил, а не можешь написать "если флажок выставлен, то дописать checked="checked"?
Что-то я вообще запутался... Как тогда сайт написался без понимания того, как писать на php и что тогда тебе конкретно объяснить?

evil_elf

#6
Я не сайт писал, а модуль к нему, по аналогии с оригиналом. (На правах рекламы: хотя есть и самописные небольшие проекты).Проблема в том, что я туплю.Глянь исходник, в конце engine.php увидишь большой блок кода, который и отвечает за вывод чекбоксов и прочей лабуды.Там аж 4 файла:  css, интерфейс работы с бд и добавление задачи.Нам нужно смотреть\править лишь один, engine.php.Вот потому и говорю, что с разборкой кода траблов небудет.

При нажатии на чекбокс в БД пихается дата и ID задачи, к которой принадлежит чекбокс.При повторном нажатии - удаляется.Собственно, надо эти данные как то сопоставить при самой отрисовке страницы и отмечать чекбоксы, которые уже есть в БД.

Календарь - обьяснять нечего.Залогиньтесь (логин и пароль см. выше) и всё узрите :)

Осталось сделать лишь эти доработки, потом я внедрю сей код в реальный проект.Но вот эти самые доработки мне никак и не даются, а нащяльникэ требуют сдавать проект :)

З.Ы.Дизайн в сорцах никакой, ибо он там лишь для наглядности

Edd.Dragon

#7
Цитата: evil_elf від 10 Лютий 2010, 23:11:57При нажатии на чекбокс в БД пихается дата и ID задачи, к которой принадлежит чекбокс.При повторном нажатии - удаляется.Собственно, надо эти данные как то сопоставить при самой отрисовке страницы и отмечать чекбоксы, которые уже есть в БД.
Ню? "Отрисовываем" очередную задачу на странице

echo '<p><input type="checkbox" name="task1" value="task1 (ID = '.$taskId.')"';
if(findTaskInList($taskId) === true) echo ' checked="checked"';
echo ' />прочее_бла-бла-бла</p>';


Внутри findTaskInList подразумевается либо запрос к базе, который возвращает из таблицы задач задачу с таким ID (или ничего, если такой нет), либо же перебор по ранее загруженному из базы в память массиву задач в поисках нужного ID. Это уж как тебе удобнее и оптимальнее.



evil_elf

#8
Дык пробовал уже такие условия ставить.У меня там аццкие вложенные циклы, так что как то не получалось внедрить туда нужный код: он или рисовал лишнего, или рисовал не всё %)

Собственно, перепробовал уже несколько методов, включая изменение логики вывода в броузер.В идеале было бы круто, чтобы добрая фея ткнула пальцем в мой говнокод и сказала: "допиши это тут и будет тебе счастье".А то у меня уже на этой почве развивается когнитивный диссонанс

Edd.Dragon

Не, ну путаницу с циклами то уже отлаживай. ))
А фразу "если галочка в базе есть, то приписать А, а если нет - то Б" никак иначе не скажешь. Надо глянуть в базе (или массиве) - есть ли. Ответ на это - да или нет. И в зависимости от ответа приписать или не приписать. Элементарно и однозначно. Других решений нет )) Я потому и удивился.

А чтобы с циклами и условиями не путаться - делай больше функций, разделяй код логически. Т.е. вот например вынеси в функцию код, который принимает ID-шник, а возвращает либо ''checked="cheked"', либо пустую строку ''.

Тогда в дизе будет

<input type="checkbox" '.getTaskChecked($taskId).' name="'.getTaskName($taskId).'" />';

В этой строке уже никак не запутаешься. Не запутаться внутри каждой из указанных функций тоже проще


evil_elf

getTaskChecked() - JS? Я в нём не силён... :( Ладно, спасибо и на этом...

Edd.Dragon

Цитата: evil_elf від 10 Лютий 2010, 23:34:09getTaskChecked() - JS?
Эм... Это то тут при чем??
getTaskChecked() - это ТОБОЙ написанная на php в этом же файле функция, которая смотрит в базе/массиве тасков есть ли там запись с указанным ID. Если есть - возвращает строку 'checked="checked"', если нету - возвращает '' (пустую строку).

evil_elf

Ааа...Чёрт, к ночи мосх тупит %)
Там ещё и ID и дата таска генерятся по-ракальски :))