Diskuze: PHP,práce s databází
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 43 zpráv z 93.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


Co znamená "pořád mi červená"? Indexy do cca 1000 záznamů obvykle nejsou nutné.
že to je červené 
ok až bude 1000 záznamů tak napíšu 
Kolem toho je červený rámeček (podobný tomuto - #FF746A) který hlásí
[vykřičník] Není definován žádný index!
pak pošlu fotku,teď bych potřeboal poradit jak odřádkovaat...
<br> nejede
\n nejede
další způsoby už neznám,a myslím,že by taky nefungovaly
Odřádkování v HTML se dělá značkou <br>, ale často je lepší členit pomocí <p>
Pokud jen potřebuješ "\n" převést na <br>, tak na to je v PHP funkce nl2br().
Nebo mám ještě nápad 
Bylo by hodně složitý kdyby se automaticky na konec každého řádku
přidala ta značka pro odřádkování ?
Nerozumím. Děláš to snad jinak? Hlavně to nestrkej do databáze. tam to nepatří.
no na vkládání vtipu mám textarea,ale když odřádkuju tak to HTML nepozná a klidně si vš píše na jeden řádek
Ty jsi asi nečetl můj příspěvek o funkci nl2br(), že?
ok mám tam textarea name="vtip"
a do scriptu toto:
$zadani = $_POST['vtip']
$vtip = nl2br($zadani);
......
takže takto ?
né jinak to mám...mám to dát před real escape nebo až za to ?
$kategorie = mysql_real_escape_string($_POST['kategorie']);
$vtip = mysql_real_escape_string($_POST['vtip']);
if (mysql_query("INSERT INTO dbvtipy (kategorie, vtip) VALUES ('$kategorie','$vtip')",$spojeni))
Ne. Vtipy máš přece v databázi.
<?php
$vypis = mysql_query("SELECT vtip FROM dbvtipy WHERE kategorie='ostatni' ORDER BY Datum DESC LIMIT 10",$spojeni);
while($radek=mysql_fetch_assoc($vypis)) {
echo "<p>",nl2br( htmlspecialchars($radek['vtip'])),"</p>\n";
}
Hlavně to nestrkej do databáze. Kolikrát musím psát, že to tam nepatří?
DESC - od nejnovějších ke starším
LIMIT 10 - prvních deset.
Zjednodušeně: Do databáze nesmí přijít žádná značka HTML. Funkce nl2br() vytváří HTML značku <br>, použiješ ji až při výběru dat z databáze.
Vytvoř jednu tabulku, ve které budeš mít kategorie, a druhou, ve které budeš mít vtipy.
tabulka pro kategorie může být třeba
create table kategorie(
id tinyint auto_increment primary key,
nazev varchar(30)
)
tabulku pro vtipy třeba
create table vtipy(
id int auto_increment primary key,
kategorie int,
obsah text
)
a přečti si něco o spojování tabulek v databázi. http://www.linuxsoft.cz/article.php?…
A ještě jeden tip ti dám. Když neumíš pořádně pracovat z databází, nesnaž se s ní hned programovat. Nejdřív se nauč pořádně pracovat s databází (třeba pomocí adminer nebo phpmyadmin nebo příkazová řádka), a až potom se snaž databázi používat ve svých programech.
ps : když myslím nauč se pracovat s databází, nemyslím tím jedno
odpoledne, ale třeba týden nebo měsíc 
o čem to mluvíš ? v jakých programech ?
pořádně si přečti můj první příspěvek 
http://vtipy.bobikpage.cz
Databáze nemusí být netně využita jen v programech. Databáze může být třeba seznam žáků ve škole s jejich prospěchem a známkami.
Normalizaci jsem chtěl nechat na později, abych Dana nezahltil, když s tím předevčírem začal. Prozatím stačí 1NF.
Místo další tabulky s názvy kategorií stačí datový typ ENUM. Ovšem i na to je dost času.
Názvy tabulek doporučuji volit v jednotném čísle.
Nejlepší je spustit si MySQL v terminálu a projít si to třeba takto:
http://www.youtube.com/watch?…
Je toho víc dílů. Možná se dá totéž najít i pro MySQL, ale neměl jsem
potřebu to hledat.
to vím,ale já odpovídal na toto:
A ještě jeden tip ti dám. Když neumíš pořádně pracovat z databází,
nesnaž se s ní hned programovat. Nejdřív se nauč pořádně pracovat s
databází (třeba pomocí adminer nebo phpmyadmin nebo příkazová řádka), a
až potom se snaž databázi používat ve svých programech.
..já chtěl pomoct s těma vtipama,tak jsem nechápal proč sem taháš programy...
datový typ enum je sice dobrý, ale jen pokud bude seznam kategorií statický. Pokud bude seznam kategorií dynamický, je mnohem jednoduší přidávat další kategorie, když jsou zvlášť v jedné tabulce, než když je typ enum.
DanVitek nyní řeší, jak se naučit pracovat s jednou DB tabulkou. Nepleť mu hlavu se zbytečnou další tabulkou s kategoriemi, která nijak nepřispívá ke zlepšení schématu. V tuto chvíli může přidávat kategorie tak, jak se mu zrovna bude hodit.
ok, já jsem jenom myslel, že by se mohl naučit něco nového.
Správně normalizovaná tabulka ve 3NF by byla rozšířena vlastně jen o primární klíč id:
CREATE TABLE vtip(
id int auto_increment primary key,
kategorie varchar(30),
vtip text
);
id je potřebné pro správnou identifikaci při manipulaci se
záznamy. Zpravidla každá tabulka obsahuje id jako primární
klíč.
stejně nechápu na co zvlášť tabulku na kategorie ?
když chceš vypsat seznam kategorií, nebo vytvořit dynamicky formulář pro výběr kategorie, tak jednoduše vypíšeš z té tabulky název. Když chceš přidat kategorii, tak jednoduše přidáš do tabulky řádek, a tvoje scripty se postarají samy o ostatní, a nemusíš nic předělávat.
Je hodně případů, ve kterých je výhodné mít samostatnou tabulku
kategorie. Ve tvém případě není potřebná.
Jde o to, že když postupně smažeš všechny vtipy o blondýnkách, zmizí
ti i kategorie 'blondýnky'. Záleží teď na tom, zda ti to vadí nebo ne.
Pokud to vadí (a takových případů je hodně), je nutné udělat další
tabulku kategorie tak, jak popsal martinkobelka.
Databáze je mocný nástroj. Normálně se i menu, v tvém případě seznam kategorií generuje z databáze. Pro tento případ je třeba lepší mít v jedné tabulce seznam kategorií.
Výpis seznamu kategorií:
SELECT DISTINCT kategorie FROM vtip;
Kategorii přidá tak, že napíše název kategorie a nový vtip.
Uznávám, že pro větší množství vtipů (>1000) by to nebylo zrovna efektivní, ale to teď neřešíme.
Ještě taková pomůcka: Datová struktura se dá zapsat nejen do databáze, ale i do XML. Ve chvíli, kdy v XML podvědomě uděláme vnořenou strukturu, v SQL bychom měli udělat další tabulku.
Nefunguje to vždy, relace M:N se takto dělají hůř, ale za zkoušku to stojí. Minimálně tím autor datového modelu získá nový pohled na data a na vlastní uvažování. Ideálně jsou tato schémata mezi sebou převoditelná.
Také jsem zkusil do databáze ukládat XML a JSON. Ano, za jistých okolností to může porušovat 1NF - je potřeba na to dát pozor. S výsledkem jsem byl velmi spokojen.
XML je také dobré znát. Vypadá podobně jako HTML, ale na rozdíl od něj značky přímo vyjadřují, co je uvnitř.
Ok
...mám další dotaz 
Když chci udělat jak je třeba tu -
itnetwork.cz/index.php?art=stranka tak to se dělá jak ? přes GET ?
Už nic,už jsem to vygooglil (asi po půl hodině) 
dělá se to přes get a switch
Zobrazeno 43 zpráv z 93.