IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Zamezení aktualizace hodnot prázdnými hodnotami

V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Stivko
Člen
Avatar
Stivko:10.4.2020 21:56

Zdravím,

Mam PHP soubor na uploadování hodnot do databáze. Nejprve do inputu nechám zobrazit původní hodnoty z databáze a po odeslání se nová data, která jsou v inputu, přepíšou. Problémem však je pokud uživatel zadá prázdné hodnoty. Ty se pak uloží do databáze a v záznamu je prázdná kolonka.

Zkusil jsem: Napadlo mě přepsat SQL query tak, aby mi přepsalo jen hodnoty, které nejsou prázdné. Napsal jsem to takto:

UPDATE users SET  user_name = :user_name, user_email
 = :user_email, user_password = :user_password, date_edit = :date_edit WHERE user_id = :user_id AND * != ' ';

Přidal jsem tam druhou podmínku, kde všechno * nesmí být prázdné. Bohužel se tento zápis zdal jako chybný.

*Hodnoty s dvojtečkou na začátku slouží k nabindování hodnot skrze PDO class, tam nehledejte chybu

Chci docílit: Chci, aby se uživateli v databází nepřepsali hodnoty tam, kde zadá prázdnou kolonku. Tedy aktualizovat jen hodnoty, jenž nejsou prázdné. Dalo by se to vyřešit poměrně jednoduše přímo v PHP pomocí podmínek, ale raději bych využil kombinaci několika funkcí / příkazu jazyka SQL a nezatěžoval tak PHP script.

Děkuji za rady

Odpovědět
10.4.2020 21:56
Nikdy není pozdě začít s něčím novým
Avatar
Odpovídá na Stivko
Michal Štěpánek:11.4.2020 17:40

Toto bych řešil už při odeslání formuláře kontrolou vyplnění potřebných dat. Je nesmysl poslat údaje na server a pak teprve zjišťovat, jestli jsou správné...

Nahoru Odpovědět
11.4.2020 17:40
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Jan Stodůlka
Tvůrce
Avatar
Jan Stodůlka:12.4.2020 21:14

Pokud jen nechceš přepsat hodnoty pokud nic nezadá, pak použij IFNULL.
https://www.w3schools.com/…l_isnull.asp

STIVKO: Zde bych doplnil. Nikdy nesmíte věřit tomu co je vám posláno na server. Kontroly musíte primárně provádět na serveru. Jako bonus pro lepší ovládání uživatelů můžete kontroly zduplikovat na klientu (např. pomocí javascriptu). Není totiž problém klientské kontroly obejít a aplikaci podhodit špatnou kombinaci hodnot.

Nahoru Odpovědět
12.4.2020 21:14
Nechodím do hospody, protože doma programuji.
Avatar
Stivko
Člen
Avatar
Odpovídá na Jan Stodůlka
Stivko:13.4.2020 10:13

Díky. Kontroly na serveru jsou samozřejmostí. Chtěl jsem to ale trochu vyšperkovat i v samotném SQL

Nahoru Odpovědět
13.4.2020 10:13
Nikdy není pozdě začít s něčím novým
Avatar
Barbora Stojanová:20.4.2020 0:38

Zkus isnull ;)

 
Nahoru Odpovědět
20.4.2020 0:38
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.