Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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: PHP,práce s databází

Aktivity
Avatar
Odpovídá na Kit
Neaktivní uživatel:8.8.2012 8:24

jasně,chápu :D

....btw. pořád mi červená že není definován index

Odpovědět
8.8.2012 8:24
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:8.8.2012 9:33

Co znamená "pořád mi červená"? Indexy do cca 1000 záznamů obvykle nejsou nutné.

Nahoru Odpovědět
8.8.2012 9:33
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:8.8.2012 9:39

že to je červené :D
ok až bude 1000 záznamů tak napíšu :D

Nahoru Odpovědět
8.8.2012 9:39
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:8.8.2012 9:43

Ale _co_ je červené?

Nahoru Odpovědět
8.8.2012 9:43
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Neaktivní uživatel:8.8.2012 9:45

Kolem toho je červený rámeček (podobný tomuto - #FF746A) který hlásí

[vykřičník] Není definován žádný index!
Nahoru Odpovědět
8.8.2012 9:45
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Kit:8.8.2012 9:48

Kolem _čeho_ je červený rámeček? Mně to nikdy nic takového nedělá ani když mám milióny řádek bez indexu.

Nahoru Odpovědět
8.8.2012 9:48
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:8.8.2012 11:15

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

Nahoru Odpovědět
8.8.2012 11:15
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:8.8.2012 11:19

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().

Nahoru Odpovědět
8.8.2012 11:19
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Kit
Kit:8.8.2012 11:20

Vidím, že značka <br> byla redakčním systémem interpretována.

Nahoru Odpovědět
8.8.2012 11:20
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:8.8.2012 11:25

Nebo mám ještě nápad :D
Bylo by hodně složitý kdyby se automaticky na konec každého řádku přidala ta značka pro odřádkování ?

Nahoru Odpovědět
8.8.2012 11:25
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:8.8.2012 11:42

Nerozumím. Děláš to snad jinak? Hlavně to nestrkej do databáze. tam to nepatří.

Nahoru Odpovědět
8.8.2012 11:42
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:8.8.2012 12:20

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

Nahoru Odpovědět
8.8.2012 12:20
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:8.8.2012 12:22

Ty jsi asi nečetl můj příspěvek o funkci nl2br(), že?

Nahoru Odpovědět
8.8.2012 12:22
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:8.8.2012 12:29

ok jdu googlit :D

Nahoru Odpovědět
8.8.2012 12:29
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:8.8.2012 12:33

ok mám tam textarea name="vtip"
a do scriptu toto:

$zadani = $_POST['vtip']
$vtip = nl2br($zadani);
......

takže takto ?

Nahoru Odpovědět
8.8.2012 12:33
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:8.8.2012 12:36

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))
Nahoru Odpovědět
8.8.2012 12:36
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:8.8.2012 12:38

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";
}
Nahoru Odpovědět
8.8.2012 12:38
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:8.8.2012 12:39

ahá :D
...co znamená DESC LIMIT 10 ?

Nahoru Odpovědět
8.8.2012 12:39
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:8.8.2012 12:39

Hlavně to nestrkej do databáze. Kolikrát musím psát, že to tam nepatří?

Nahoru Odpovědět
8.8.2012 12:39
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:8.8.2012 12:40

co tam nemám strkat,co tam nepatří ??

Nahoru Odpovědět
8.8.2012 12:40
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:8.8.2012 12:40

DESC - od nejnovějších ke starším
LIMIT 10 - prvních deset.

Nahoru Odpovědět
8.8.2012 12:40
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:8.8.2012 12:45

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.

Nahoru Odpovědět
8.8.2012 12:45
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:8.8.2012 12:45

ok dík =)

Nahoru Odpovědět
8.8.2012 12:45
Neaktivní uživatelský účet
Avatar
martinkobelka
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
martinkobelka:8.8.2012 12:50

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 ;)

 
Nahoru Odpovědět
8.8.2012 12:50
Avatar
Odpovídá na martinkobelka
Neaktivní uživatel:8.8.2012 12:53

o čem to mluvíš ? v jakých programech ?
pořádně si přečti můj první příspěvek ;)
http://vtipy.bobikpage.cz

Nahoru Odpovědět
8.8.2012 12:53
Neaktivní uživatelský účet
Avatar
martinkobelka
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
martinkobelka:8.8.2012 13:01

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.

 
Nahoru Odpovědět
8.8.2012 13:01
Avatar
Kit
Tvůrce
Avatar
Odpovídá na martinkobelka
Kit:8.8.2012 13:12

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.

Nahoru Odpovědět
8.8.2012 13:12
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na martinkobelka
Neaktivní uživatel:8.8.2012 13:30

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...

Nahoru Odpovědět
8.8.2012 13:30
Neaktivní uživatelský účet
Avatar
martinkobelka
Tvůrce
Avatar
Odpovídá na Kit
martinkobelka:8.8.2012 13:31

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.

 
Nahoru Odpovědět
8.8.2012 13:31
Avatar
Kit
Tvůrce
Avatar
Odpovídá na martinkobelka
Kit:8.8.2012 13:38

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.

Nahoru Odpovědět
8.8.2012 13:38
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
martinkobelka
Tvůrce
Avatar
martinkobelka:8.8.2012 13:48

ok, já jsem jenom myslel, že by se mohl naučit něco nového.

 
Nahoru Odpovědět
8.8.2012 13:48
Avatar
Kit
Tvůrce
Avatar
Odpovídá na martinkobelka
Kit:8.8.2012 13:53

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íč.

Nahoru Odpovědět
8.8.2012 13:53
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:8.8.2012 13:54

stejně nechápu na co zvlášť tabulku na kategorie ?

Nahoru Odpovědět
8.8.2012 13:54
Neaktivní uživatelský účet
Avatar
martinkobelka
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
martinkobelka:8.8.2012 13:58

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.

 
Nahoru Odpovědět
8.8.2012 13:58
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:8.8.2012 14:02

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.

Nahoru Odpovědět
8.8.2012 14:02
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
martinkobelka
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
martinkobelka:8.8.2012 14:10

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í.

 
Nahoru Odpovědět
8.8.2012 14:10
Avatar
Kit
Tvůrce
Avatar
Odpovídá na martinkobelka
Kit:8.8.2012 14:10

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.

Nahoru Odpovědět
8.8.2012 14:10
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Kit:10.8.2012 15:09

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.

Nahoru Odpovědět
10.8.2012 15:09
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:10.8.2012 15:34

No napřed se podívám na ty databáze :)

Nahoru Odpovědět
10.8.2012 15:34
Neaktivní uživatelský účet
Avatar
Odpovídá na Kit
Neaktivní uživatel:10.8.2012 15:34

No napřed se podívám na ty databáze :)

Nahoru Odpovědět
10.8.2012 15:34
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:10.8.2012 15:46

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ř.

Nahoru Odpovědět
10.8.2012 15:46
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:10.8.2012 15:51

Ok
...mám další dotaz :)
Když chci udělat jak je třeba tu -
itnetwork.cz/in­dex.php?art=stran­ka tak to se dělá jak ? přes GET ?

Nahoru Odpovědět
10.8.2012 15:51
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:11.8.2012 9:42

Už nic,už jsem to vygooglil (asi po půl hodině) :D
dělá se to přes get a switch

Nahoru Odpovědět
11.8.2012 9:42
Neaktivní uživatelský účet
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 43 zpráv z 93.