Loading...
LenaB avatar LenaB 112 Точки

[Homework] Fast Track PHP/MySQL

Отварям тема за домашните за курса. Ще слагам линкове към темите за обсъждане на различните домашни.

Понеже съм онлайн и току-що гледах първата лекция (доста приятно поднесена от лектора) може ли някой от присъствалите да уточни трябва ли да се праща някакъв файл за първата лекция (Въведение в XAMPP – PHP MySQL уеб програмиране)?

В профила ми излиза поле за изпращане на файл, но след преглед на задачите не виждам нищо за изпращане.

Тагове:
17
PHP Web Development Basics
neda.v.veleva avatar neda.v.veleva 4 Точки

Здравейте, колеги. Въпреки, че срока за предаване на домашното за Работа с форми всеоще се боря с един проблем. Качвем кода на целия проект, за да можете да се запознаете с идеята. Идеята беше да е ООП и затова е малко мацаница, но да кажем, че това в момента не  ми е толкова голям проблем. Ето кода. Та проблема е, че нещо не мога да се преборя с UPDATE на данни от базата /файл - friends_list.php/. Имам бутон edit, който взима id-то на избрания от нас човек, на който ще променяме данните. Правим SELECT, за да вземем всички данни на въпросния човек и да попълним формата с неговите данни...До тук добре и тук нещо не ми се получават нещата. Някъде тук нещо бъркам. Идеята ми е като се submit-не формата да се направи UPDATE и толкова. Опитах какво ли не, но не се получава. Исках и да мога да използвам една и съща форма и за запис и за редакция, но тогава пък от всякъде се разпищява за несъществуващи променливи. Много ще съм благодарна ако някой може да ми помогне. 

0
RoYaL avatar RoYaL Trainer 6848 Точки

Здравей, пиша от телефона, така че има голям шанс да съм недогледал нещо. Разгледах кода ти, и продължавам да поддържам мнението, че не трябва да имаш стотици ифове в една страница,  още повече пък нестнати. Кийп ит симпъл. Условието ти Иф Пост е нестнато в условието Иф Гет Едит > 0, а екшъна на формата не добавя този гет параметър ?едит=1. Или го добави в екшъна или изкарай проверката, защото иначе няма как да влезеш в нея.

Това поне е основата на проблема, за който питаш.

От тук нататък ще си позволя да коментирам кода като цяло.

1. isset($var) > 0 няма да доведе до очаквания от теб резултат. Това ще евалюира експрешъна isset($var) до TRUE, което е 1 и съответно 1 > 0 ВИНАГИ. Т.е. дори и $var = 0; isset($var) ще върне true. Ако искаш да проверяваш за сетната променлива и за стойност, ще трябва на два пъти if(isset($var) && $var > 0)

2. Класът ти FormValidation:

2.1. Не би трябвало да има такова име. Името трябва да е име на обект, на съществително. Validation е процес. 

2.2. Прави прекалено много неща - прави конекция към базата, валидира формата, инсъртва, генерира HTML, етс. Нарушава SRP. 

3. HTML-а в friends_list.

3.1. Както вече споменах твърде много условия. По принцип NetBeans подчертава кодс повече от 1 нестнато условие и казва "Too many nested blocks. It's good practice to introduce a new function"

3.2. Формата - не е хубаво да мешаш РНР и HTML. Особено пък HTML-а да е в ECHO. ТАка губиш autocomplete-а на ИДЕ-то за HTML, както и четимостта. Да не говорим, че всичко е в лилаво, вместо таговете да са оцветени по един начин, атрибутите по друг и т.н.

3.3. Формата - Условията в нея. До колокто виждам според зависимост от пола генерираш различен HTML-а. Който всъщност не е много различен? Единствено ID-та и VALUE-та са MALE или FEMALE. Тогава просто можеше там където има динамичен контест да сложиш $edit_info['gender'], вместо да пишеш условия.

 

4. Цитат (вече не пиша от телефона) "Исках и да мога да използвам една и съща форма и за запис и за редакция"

- НЕ! :) Не искаш. Както казах за класа за валидацията. Нарушаваш принципа на това - едно нещо да прави ЕДНО НЕЩО :) Ако едно нещо правиш две или повече неща - значи правиш нещо грешно. Ако искаш да спестиш код - го правиш In favor of readibility. Но ако спестяваш код и същевременно readibility-то спада - значи няма нужда от това. Писането на код не е толкова expensive процес. Четенето и едитването му - обаче е. Ако едно нещо прави сто неща, то представи си колко IF-ове ще имаш за това. Ако друг трябва да ти чете кода и да оправи нещо, ще трябва да разбере точно заради кой иф, се влиза там.

Има случаи, в които кодът трябва да се пести - за да няма повтаряемост или за да се чете по-добре, но това да правиш един код да прави много неща не е сред тях.

Например, ако имаш много условия и ако едно от тях не се покрие искаш да върнеш FALSE, тогава наистина е по-добре да спестиш код вместо да пишеш много условия. (Цикъл + 1 ИФ)

2
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.