« 1 2 »
Autor Zpráva
peteo
Profil
samotným úvodom - som už starší ročník, kedysi odchovaný spectrami a didaktikmi, takže skúsenosti mám v basicoch a podobne (no dnes už nie).
Nakoľko som neporozumel mysql (fakt proste neberiem to názvoslovie), pomohlo mi php (tomu ako tak, čo potrebujem, rozumiem (preboha, kto mi česky/slovensky vysvetlí funkciu preg?)).

Prevádzkujem stránky (obsahovo zaujímavé, grafika asi nič moc, za to ma nebičujte), ktoré vyzerajú, akoby fungovali na spracovávaní databázy (Čo to je?).
ale - všetko riešim cez php pomocou spracovávania textových súborov v php.
cca 130000 záznamov (asi 3 milióny pojmov) i pri vyhľadávaní server zvládne za 200 milisekúnd (no v štarte to bolo 10x toľko, ba i viac, človek sa chybami učí).
zaujímalo by ma, aké výhody mi prináša mysql oproti php pri spracovávaní veľkého množstva informácií.

pravdepodobne pomocou php simulujem mysql, ale zatiaľ som nenašiel zrozumiteľný text na pochopenie mysql (prečo to niekto neurobí fakt zrozumiteľne?).

teda - pokiaľ je na spracovanie takého množstva informácií výhodnejšie mysql, kde nájdem fakt zrozumiteľné návod na mysql.
je výhodnejšie používanie databázy na spracovanie dát ako php? v čom?

vďaka.
Sir Tom
Profil
peteo:
MySQL umožňuje ukladání dat v databázi. Databázi si můžeš představit jako velikou knihovnu. Knihovna obsahuje jednotlivé publikace, a svazky knih. Navíc každá kniha má uložené další informace o sobě: žánr, název, autora, rok vydání, vydavatelství, ...
Databáze umí například z této ohromné knihovy vybrat pouze knížky, které mají stejný rok vydání. Nebo umí vybrat všechny autory, kteří napsali alespoň jednu knihu v knihovně. A další...

Dobrý návod je http://www.linuxsoft.cz/mysql/.
Joker
Profil
peteo:
Máte zdá se trochu zmatek v těch pojmech.
Takže:
PHP = skriptovací jazyk pro psaní skriptů na straně serveru (jejichž výsledkem pak typicky je HTML dokument)
Databáze = Jednak způsob uložení dat (můžu mít data v souborech, nebo v databázi) a jednak jakási entita, respektive množina těch dat.
SŘBD, Systém Řízení Báze Dat = Aplikace, která umožňuje práci s databází (databáze jsou ty informace a mohou je číst nebo měnit skrze SŘBD). Někdy se termínem databáze označuje spojení databáze ve smyslu uložených dat a SŘBD.
MySQL = SŘBD vyvíjený společností MySQL AB.

Dá se tedy říct, že MySQL je jeden z databázových systémů. MySQL a PHP se každý věnují úplně něčemu jinému a nejsou záměnné (respektive v PHP je možné napsat databázový systém, ale vesměs k tomu není důvod).

je výhodnejšie používanie databázy na spracovanie dát ako php? v čom?
Tak v první řadě máte jasně definovaný způsob manipulace s daty (to právě zařídí databázový systém), místo abyste si ho musel celý vyrábět sám.
Pro jednoduché operace Vám to možná přijde nastejno (definuji název souboru, nějaký formát uložení a pak volám otevření souboru a čtení souboru, versus definuji databázové tabulky a pak posílám SELECT dotaz), ale jakmile byť jen trochu vykročíme z triviálních operací třeba k třídění a seskupování, začne rozdíl být dost viditelný.

Navíc třeba MySQL funguje už řadu let a používá postupy jejichž funkčnost byla ověřená časem, zatímco Vy si vyrobíte svůj algoritmus na koleni a teprve časem budete vychytávat chyby.
Mimochodem, to hledání Vám úplně nefunguje, udělal jsem třeba pár testů s Amy Winehouse (shodou okolností se mi zobrazila v náhodných výsledcích a její jméno je docela dobře použitelné). Že by se to vyhledávání chytlo třeba na zkomolené „Amy Weinhaus“ jsem ani neočekával, ale že třeba na "Amy" to najde stovky výsledků jako třeba A2, A3 atd. už mě trochu udivilo.

Dál bude databáze výrazně rychlejší, protože 200ms na jednoduchý SELECT z 130 tisíc záznamů je pro databázi neskutečně pomalé, o 2 sekundách ani nemluvě. Váš přístup funguje v podstatě díky tomu, že ten web má jen malou návštěvnost.

Mimochodem, neskutečně mě otravoval ten box s informací proč je na stránce reklama, který částečně překrývá obsah a pokaždé jsem ho musel kliknutím zavřít. Okořeněno tím, že na titulní stránce snad ani žádná reklama není.
Takže reakce po asi pěti odkliknutích: „Já sakra vím, proč se na stránky dávají reklamy! Proč mi to pořád cpete?!“
peteo
Profil
Joker:

učinil som pokusy s mysql a odradilo ma hneď niekoľko vecí.
priznávam, že nie príliš podrobne som s zaoberal touto problematikou, ,ale čo ma teda odradilo:
- nakoľko spracovávam text, odradila ma dĺžka textové ho poľa (255 znakov)
- pri hľadaní záznamu som neobjavil možnosť hľadať v samotnom zázname (napr v reťazci 2000 znakov reťazec o 5 znakoch), došiel som len k tomu, že záznam možno nájsť iba celý (teda dotaz dlhý 2000 znakov).
- úplne vedľa som v odkazoch, vôbec som nepochopil, ako sa v mysql robia (v reťazci o 2000 znakoch je 15 odkazov, ži už na foto alebo text).

beriem, že som celú logiku mysql vôbec nepochopil, hoci jej poslanie mi je jasné.

ad vyhľadávanie: viete, koľko slov obsahuje slovo amy (videl ste sám) - a preto je tam selektor - presne / sufix / prefix/ ....

s tým boxom ste mali smolu, objavuje sa tam 2x za hodinu na 2 minúty (návšteva v nesprávny čas).

čo sa týka návštevnosti, zatiaľ máte pravdu, web sa sťahoval (poskytovateľ priestoru skončil, a ja som nemal doménu 2. rádu, takže začínam, čo sa týka návštevnosti, od začiatku).

ale ide mi skôr o to mysql.
Tak zatiaľ som sa pustil do čítania odkazu Sira Toma.
Joker
Profil
peteo:
- nakoľko spracovávam text, odradila ma dĺžka textové ho poľa (255 znakov)
Toto není pravda, pro textová pole existuje několik datových typů a největší z nich (LONGTEXT) pojme až text zabírající 4GB paměti. Takový rozsah textového pole určitě nebudete potřebovat.

S tím omezením na 255 znaků asi myslíte typ VARCHAR, ale i tam byl ten limit zrušený ve verzi 5.0.3. Od té verze to ovšem s velikostí je složitější, protože stále platí, že maximální velikost celého řádku je 64kB, takže závisí na tom jaké jiné sloupce v tabulce jsou, navíc dnes hlavní kódování UTF-8 je vícebajtové, takže 1 znak není 1 bajt.
V každém případě pokud chcete nějakých 2000 znaků, máte MySQL 5.0.3 nebo novější a takový sloupec chcete v tabulce mít jen jeden, VARCHAR to zvládne.

Pro uložení delších textů slouží TEXT a odvozené typy (MEDIUMTEXT, LONGTEXT).

- pri hľadaní záznamu som neobjavil možnosť hľadať v samotnom zázname (napr v reťazci 2000 znakov reťazec o 5 znakoch)
LIKE a procenta (procenta mají význam „cokoliv“. Kdybyste chtěl hledat znak procenta, musíte ho napsat dvakrát za sebou).
SELECT popis FROM tabulka WHERE popis LIKE "%nos%"
by našel popis „nos“, stejně jako třeba „nosítka“, „nánosy“, nebo jakýkoliv text obsahující „nos“. Uvedením těch procent jen na jedné straně můžete navíc určit, že daný text musí být na začátku nebo na konci textu.

- úplne vedľa som v odkazoch, vôbec som nepochopil, ako sa v mysql robia (v reťazci o 2000 znakoch je 15 odkazov, ži už na foto alebo text).
Tomuhle nerozumím. MySQL odkazy nijak neřeší.
peteo
Profil
Joker:
odkazy:

momentálne používam spracovanie textu už s html tagmi, napr. :

Mománd, Abdul Ahad</span><br><span>Abdul Achad Mohmand</span></h1><div class="pobr"><img src="images/momand-abdul-ahad.gif"><br>Abdul Ahad Mománd</div><div class="tobr">● <a href="spresne.php?book=&dotaz=Afganistan">Afganistan</a><br>* 1. 1. 1959 (Sarda, provincia Ghazní)<br>astronaut, 208. človek vo vesmíre.<br>Let na <a href="spresne.php?book=&dotaz=Sojuz TM-6">Sojuz TM-6</a> (štart), <a href="spresne.php?book=&dotaz=Sojuz TM-5">Sojuz TM-5</a> (pristátie).</div>
no a k tomu samozrejme existujú relevantné zápisy:

Afganistan</span><br><span>De'Afghánistán islamí daulat (paštúnsky)</span><br><span>د افغانستان اسلامي دول (paštúnsky)</span><br><span>Doulate eslámíje Afghánestán (dárijsky)</span><br><span>دولت اسلامی افغانستان (dárijsky)</span><br><span>Islamský štát Afganistan</span><br><span>Doulate pádišáhije Afghánistán (perzsky)</span><br><span><small><img ...

Sojuz TM-6</span></h1>● <a href="spresne.php?book=&dotaz=ZSSR">ZSSR</a><br> 29. 8. 1988 - 7. 9. 1988.<br>Posádka <a href="spresne.php?book=&dotaz=Ljachov, Vladimir Afanasjevič">V. A. Ljachov,</a> <a href="spresne.php?book=&dotaz=Mománd, Abdul Ahad">A. A. Mománd</a> (Afganistan), <a href="spresne.php?book=&dotaz=Poljakov, Valerij Vladimírovič">V. V. Poljakov</a>.

Sojuz TM-7</span></h1>● <a href="spresne.php?book=&dotaz=ZSSR">ZSSR</a><br> 26. 11. 1988 - 27. 4. 1989.<br>Posádka <a href="spresne.php?book=&dotaz=Volkov, Alexandr Alexanrovič">A. A. Volkov</a>, <a href="spresne.php?book=&dotaz=Krikaljov, Sergej Konstantinovič">S. K. Krikaljov</a>, <a href="spresne.php?book=ch&dotaz=Chrétien, Jean-Loup Jacques Marie">J. L. Chrétien</a> (<a href="spresne.php?book=&dotaz=Francúzsko">Francúzsko</a>).

Na čo mám a ako odkazovať z prvého záznamu na záznamy ostatné (obrázok je spracovávaný scriptom)?

Jeden stĺpec mi rozhodne stačiť nebude, budú minimálne 2, skôr viac.
Joker
Profil
peteo:
Jeden stĺpec mi rozhodne stačiť nebude, budú minimálne 2, skôr viac.
Rozhodně.
Minimálně samotné to heslo (nadpis) musí být samostatný sloupec a text musí být taky samostatný sloupec. A pak ještě nějaký identifikátor.

Jinak odkazy mohou být přímo v tom textu. Ten vztah mezi články, tzn. odkud kam se odkazuje, by se dal evidovat další tabulkou, kde by byly dva sloupce, id článku odkud se odkazuje a id článku kam se odkazuje.
peteo
Profil
Joker:
to znamená že musím ešte vytvoriť tabuľku, kde bude identifikátor "Mománd, Abdul Ahad" a neznámy počet stĺpcov, v ktorých budú odkazy (ich identifikátory)?

no nezdá sa mi to veru jednoduchšie.
z toho potom vyplýva, že budem potrebovať ďalšiu tabuľku s obrázkami , ktoré tiež po kliknutí vedú na odkaz, takže ku obrázkom ešte ďalšiu tabuľku s odkazmi?

a zrazu mám z jedného riadka najmenej 4 tabuľky.
a keď do jednej z ich zabudnem niečo zapísať, tak je to v háji?

a toto mi má zjednodušiť prácu?

ak sa mýlim, prosím, opravte ma.
Joker
Profil
peteo:
to znamená že musím ešte vytvoriť tabuľku, kde bude identifikátor "Mománd, Abdul Ahad" a neznámy počet stĺpcov, v ktorých budú odkazy (ich identifikátory)?
Ne.
Jak jsem psal, budou tam dva sloupce.
Řekněme, že IDčka budou: Mománd, Abdul Ahad = 1, Afganistan = 2, Sojuz TM-5 = 3, ZSSR = 4
Tak odkazy budou:
1 | 2
1 | 3
3 | 4
Například (Mománd, Abdul Ahad odkazuje na Afghánistán a Sojuz TM-5 a Sojuz TM-5 odkazuje na SSSR)

z toho potom vyplýva, že budem potrebovať ďalšiu tabuľku s obrázkami
To si nejsem úplně jistý proč.

zrazu mám z jedného riadka najmenej 4 tabuľky.
Naproti tomu dokážete reálně využít daleko víc vztahů mezi těmi daty, než teď.

Samozřejmě můžete mít prostě jednu tabulku se třemi sloupci id | heslo | text a bude to taky, akorát nepostihnete spoustu potenciálně využitelných vztahů.

Pro zajímavost, jakým způsobem byste v té stávající verzi realizoval níže uvedené úlohy?
- Hledat řetězec jen v nadpisu hesla (ne v textu).
- K určitému heslu získat seznam všech hesel, na která se z něj odkazuje.
- K určitému heslu získat seznam všech hesel, odkud se na něj odkazuje.
peteo
Profil
aha.
takže mám tabuľku

1 | Mománd, Abdul Ahad | Afganistan [1 | 2], bla bla Sojuz TM-5 [1 | 3] ...
2 | Afganistan | ...
3 | Sojuz TM-5 | ZSSR [3 | 4] ...
4 | ZSSR | ...

vôbec si neviem predstaviť tú konštrukciu, ako by malo vyzerať (nie príkazy), proste nechápem princíp toho odkazovania. Teraz mám jednoduché <a href=....> priamo v tom zázname, čo tam teda bude miesto <a href=....>?

uniká mi nejako význam, prečo mám tvoriť x tabuliek, keď sa mi takto zvyšuje možnosť chyby.
keď zabudnem do niektorej niečo zapísať (kozmonaut poletí ďalší let a nevytvorím 1 | 136256 (lebo mi pribudne 136256 záznam "Dragon 623"), tak sa proste na ten záznam nedostanem. (a nezískam teda ani spätnú väzbu).

čiste technický problém:
to bude server pracovať so štyrmi otvorenými databázami súčasne?
keď si predstavím, že už teraz mám vyše milióna odkazov, tak si neviem predstaviť, ako bude pracovať keď otvorí tabuľku so 136256 záznamami (to číslo som si vycucal z prsta), ktorá bude obsahovať kopec textu (takže na spracovanie asi bude náročná) a k tomu ešte tabuľku s odkazmi (iba s číslami, teda asi menej náročná), ale i tak.

teraz mám cca 30 zdrojových súborov s dátami a keď ich dám do jednej tabuľky, tak nestúpne čas ne vyselektovanie potrebného záznamu?

ďalej nerozumiem, keď mám teda 136256 záznamov a chcem editovať ZSSR (nie záznam 4), tak sa zbláznim, kým ho nájdem, lebo ID je pre mňa hľadať menej pohodlné ako "ZSSR".

ad
Hledat řetězec jen v nadpisu hesla (ne v textu). - uvažoval som i o tejto alternatíve vyhľadávania, ale mám tam index (kde sú práve iba nadpisy), technicky v tom problém nevidím, jednotlivé záznamy sú konštruované tak, že sa z nich dajú vyselektovať iba názvy.
K určitému heslu získat seznam všech hesel, na která se z něj odkazuje - podobne, ako predchádzajúce, z konštrukcie záznamov sa dajú vyselektovať.
K určitému heslu získat seznam všech hesel, odkud se na něj odkazuje - o tomto som uvažoval (pre kontrolu spätných odkazov) a priznám sa, jednoduché riešenie som nenašiel.
Joker
Profil
peteo:
vôbec si neviem predstaviť tú konštrukciu, ako by malo vyzerať (nie príkazy), proste nechápem princíp toho odkazovania. Teraz mám jednoduché <a href=....> priamo v tom zázname, čo tam teda bude miesto <a href=....>?
Tak to si zase nerozumíme, tohle MySQL vůbec neřeší. Způsob odkazování si musíte vyřešit v datech anebo v PHP.
Jestli chcete mít natvrdo uvnitř textu <a href="něco">, tak tam budete mít tohle.
Anebo můžete zvolit nějaké pokročilejší řešení, třeba nějak [page:SSSR]Sovětský Svaz[/page], tak to pak bude řešit PHP, ale zase to není záležitost MySQL.

keď zabudnem do niektorej niečo zapísať (kozmonaut poletí ďalší let a nevytvorím 1 | 136256 (lebo mi pribudne 136256 záznam "Dragon 623"), tak sa proste na ten záznam nedostanem.
No tohle dělat ručně nemá moc smysl. Šlo by napsat PHP skript, který projde články, najde v nich ty správné odkazy a z nich vytahá vazby do databáze.

to bude server pracovať so štyrmi otvorenými databázami súčasne?
Ne.
Budou to tabulky v jedné databázi. Čili skript otevře databázové připojení, zavolá dotaz a ten pak pracuje s jednou nebo několika tabulkami.

teraz mám cca 30 zdrojových súborov s dátami a keď ich dám do jednej tabuľky, tak nestúpne čas ne vyselektovanie potrebného záznamu?
Jestli teď máte 200 milisekund, očekával bych zrychlení tak o řád.

keď mám teda 136256 záznamov a chcem editovať ZSSR (nie záznam 4), tak sa zbláznim, kým ho nájdem, lebo ID je pre mňa hľadať menej pohodlné ako "ZSSR".
Proč? Pokud si na editaci vyrobíte nějaký formulář, může být jedno jak ta data najde, ne?
A jinak záznamy v databázi můžete vyhledávat podle čehokoliv, nejen podle identifikátoru.
Jen bych varoval před tím identifikovat článek podle jeho nadpisu, například: zobraz.php?nadpis=Nadpis.
peteo
Profil
hm.
takže nakoniec predsa len vytiahnuté dáta musím spracovávať v php (aby sa to vôbec zobrazilo, ošetriť odkazy, ošetriť vyťahanie údajov do čoho tabuľky/databázy? etc.)

to bude server pracovať so štyrmi otvorenými databázami súčasne?“
Ne.
Budou to tabulky v jedné databázi. Čili skript otevře databázové připojení, zavolá dotaz a ten pak pracuje s jednou nebo několika tabulkami.


tu asi zlyháva chápanie (moje) terminológie: databáza nie je tabuľka a naopak?
Čo si teda mám predstaviť pod databázou a čo pod tabuľkou?
ako môžu byť v databázi dve rôzne tabuľky (tak z tohto mám chaos), predsa nemôžem spojiť mak a cesto len tak halabala, keď chcem makovník (v ktorom sú jedno od druhého pekne oddelené, nechcem makové cesto).

Pokud si na editaci vyrobíte nějaký formulář, může být jedno jak ta data najde, ne?
No predpokladám, že existujú už nejaké hotové rozhrania, ako s databázou komunikovať (veď priamo v apache je administrácia - tá neslúži na editovanie?

Pokiaľ tomu teda rozumiem (akože nie), tak napred si musím urobiť skripty na editovanie, potom skript na vytvorenie x ďalších tabuliek (relácií?) a mať na pamäti, že po každej zmene nechať všetko spracovať aby to bolo tiptop (alebo aby to vôbec fungovalo). A to všetko bez toho, aby som vedel, čo vlastne majú robiť.

Nové dáta môžem zadávať i ofline? to potom musím nahrávať celú databázu znova na server?

No priznám sa, zatiaľ to na mňa pôsobí skôr odstrašujúco.
Načo sú mi rýchlo získané dáta, keď ich potom zasa musím spracovávať.

Mám pocit, že to asi zle chápem, ospravedlňujem sa.
Sir Tom
Profil
peteo:
Dáváš moc konkrétních otázek, v tom mém odkazu je to vše vysvětleno. Konkrétně rozdíl mezi databází a tabulkou nalezneš v článku 4: http://www.linuxsoft.cz/article.php?id_article=744. Doporučuji si to nejdřív přečíst a teprv poté (pokud ti něco bude nejasné) se ptát.
peteo
Profil
Sir Tom:

asi to bude lepšie, máte pravdu.
No som z toho vystrašený už teraz.

Zatiaľ sa mi to zdá zložitejšie a nepochopiteľnejšie čím ďalej tým viac, i keď spočiatku také bolo i php (a kedysi hooodne dávno i programovanie vôbec, ale to boli časy basicov a pascalov).
No i tak mám obavu, že sa k tejto téme asi budem musieť vrátiť, ale až po prečítaní vami doporučenej literatúry.

Ďakujem za trpezlivosť.
Joker
Profil
peteo:
Viz Sir Tom, na diskusi můžeme řešit konkrétní problémy, ale základy je mnohem lepší a rychlejší si nastudovat z nějaké učebnice.

Ale ještě k jedné věci:
takže nakoniec predsa len vytiahnuté dáta musím spracovávať v php
Ano, o tom jsem už mluvil: Databáze je doplněk, nikoliv náhrada PHP.
Představte si to jako technologii uložení, tak jako máte teď soubory. Když máte data v souborech, taky je pak musíte nějak zpracovat.

Databáze slouží k získání dat. Vy pak ta data chcete ještě nějakým způsobem prezentovat, což ale databázi už nezajímá.
A kde je výhoda oproti souborům?
Všimněte si, že při použití souborů to získání dat neznamená jen otevřít a načíst soubor. Nejspíš to funguje tak, že otevřete soubor a pak máte nějaký PHP skript, který čte záznamy, nějak s nimi pracuje, případně otevírá další soubory a dotahuje z nich další data… a teprve na konci tohohle procesu jsou data, která chcete. A pak následuje další kód, který podle těch dat vyrobí stránku.

Máte tedy soubory jako úložiště a nad nimi PHP kód, který z nich vydoluje potřebná data. Když se podíváte na můj první příspěvek zde, ten PHP kód pro vydolování dat je vlastně takový Váš primitivní SŘBD.
No a právě tohle by databáze nahradila: Soubory (tedy úložiště) a ten kód pro získání dat.
Představte si třeba, že byste chtěl dodělat fulltextové vyhledávání (tj. aby se hledání snažilo najít nejen přesnou shodu v textu, ale i významovou shodu, jako třeba „fotbal“ - „kopaná“).
Jak byste to v tom stávajícím systému udělal? Asi byste v PHP naprogramoval skript, který z obsahu vytahá klíčová slova, uloží, která slova se vyskytují v kterém článku, …prostě byste do toho Vašeho systému doprogramoval nějakou lepší či horší implementaci fulltextového vyhledávání. De facto byste rozšířil svůj SŘBD o nový způsob práce s daty.
Jak byste to udělal v databázi? Prostě byste řekl databázi, že chcete fulltextově hledat podle daného sloupce. (Samozřejmě by to musela být databáze která to umí, v MySQL to jde)
Čili de facto při použití databáze převezmete už hotový a vyzkoušený (a standardizovaný) systém pro práci s daty, místo abyste si od začátku programoval svůj vlastní.
peteo
Profil
Sir Tom:

takže som to prešiel a pochopil som (dúfam, i keď viem že slovko pochopil je asi nadhodnotené) význam databáz (dobré pre pochopenie, ako to funguje, ale nie [aspoň pre mňa], ako s tým pracovať).
Teda:

keďže mi to už myslí pomalšie, potreboval by som nejaké príklady komunikácie s databázou prostredníctvom php.
mám manuál, ktorý obsahuje príkazy php na prácu s mysql (vyjadrujem sa správne, alebo aspoň zrozumiteľne?).
Potreboval by som (lepšie povedané bol by som vďačný za) odkazy na nejaké konkrétne príklady, kde pomocou php spracovávam dáta, ktoré už mám a pomocou php ich viem (dúfam) ošetriť tak, aby som ich mohol vložiť do databázy a ďalej s nimi pracovať.
V podstate mi ide o to, aby som nemusel pracovať s nejakým databázovým editorom (ako to nazvať?), ale mal možnosť už mnou uložené dáta spracovať do databázy, teda vytvoriť si skripty, ktoré vytvoria základnú databázu (čo bude fuška) a ktoré umožnia jej aktualizáciu spracovaním dát v rovnakom zdrojovom formáte (opäť spracovaným pomocou php).

Stručne:

existuje nejaký manuál formou step to step na prácu s datábazami pomocou php? (napr jakpsatveb.cz je perfektný na prácu v html, css a pod.).
A niečo podobné hľadám i pre prácu s databázami prostredníctvom php. (príklady, možnosť vyskúšať si, vidieť, čo to robí), trebárs aj od pripojenia sa, vytvorenia, databázy, tabuliek, vkladanie záznamov (jednotlivo, hromadne), úpravu záznamov, prezentáciu záznamov, selekciu, vyhľadávanie a pod .
Snáď mi niekto rozumie.

Ďakujem.
tiso
Profil
peteo: pomohlo by, ak by si uviedol čo za dáta máš teraz, a v akej forme. Z tvojho príkladu v [#6] mi to nie je jasné. Tvoje zdrojové dáta sú HTML? Máš aj nejakú inú formu?
peteo
Profil
tiso:
Dáta sú fakticky v txt súbore ako je v [#6], na začiatku s neúplným html kódom (doplneným potom php skriptom), v súboroch a-z + pár súborov pre špeciálne znaky a číslice, galériu a pod.
radené sú abecedne, jeden riadok jeden záznam.
názov ošetrený tagmi <h1>, obrázky na rozklinutie obalené tagom <small> (inde nepoužívaným a ošetreným v css). obrázky bez rozkliknutia (vzorce a pod.) nie sú obalené tagom <small> (potreboval som ich nejako rozlíšiť, podobne používam i tag <del> pre zneviditeľnenie).
názov môže byť viacnásobný, napr. v zázname:
afghánština</span><br><span>paštština</span><br><span>paštó</span></h1>● východoiránsky jazyk, úradný jazyk v Afganistane.<br>Používa sa aj severozápadnom <a href="spresne.php?dotaz=Pakistan">Pakistane</a>, Iráne a indickom Kašmíre.
kde položky názvu sú oddelené tagom <span>.

vo finále je výpis doplnený o chábajúce tagy <hr><h1><span> na začiatku a celý záznam obalený do divu.
jednotivé tagy sú formátované v css.

takže i rozsiahle záznamy napr s tabuľkou sú v jednom riadku:
ukážka zdrojového kódu dát (editor na diskusii to neskusne)
tiso
Profil
Takže tvoje dáta sú rozdelené na knihy a galériu. Záznamy v knihách majú svoj názov a popis, názvov môže byť viacero, sú to aliasy. Ak by som to mal modelovať ako dátové tabuľky, riešil by som to takto:
books(id, type, letter)
terms(id, book_id, name, description)
aliases(id, term_id, book_id, alias)
images(id, book_id, name, filename)
Toto je taký základ. Návrh sa dá samozrejme vylepšovať, rozširovať. K jednotlivým záznamom si môžeš napríklad pridať čas poslednej editácie, viacslovné názvy by sa mohli dať vyhľadať pod každým začiatočným písmenom slov z názvu (John Doe vs. Doe John), ku knihám pridať informácií koľko obsahuje záznamov a podobne.

Ako literatúru odporúčam starší seriál o PHP, databázam sa venuje od dielu 34.
peteo
Profil
tiso:
well, vďaka, tak idem študovať ďalej.
peteo
Profil
Takže:

na compe mám:
Easy PHP 12.1:
PHP 5.4.6
Apache 2.4.2
MyAQL 5.5.27
Xdebug 2.2.1

všetko z inštalácie apache.

A teraz:

php súbory, v ktorých mám skripty, sú v adresári
c:/easy/www/cotoje
a samotná už založená databáza v adresári
c:/easy/mysql/data/cotoje //databaza sa vola cotoje a je založená cez administráciu, zatiaľ bez tabuliek

keď spustím z formulárom odoslaných dát v central.php
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<br><br>Pripojiť sa:
<?php
$host =$_GET["host"]; //127.0.0.1
$uziv =$_GET["uziv"]; //root
$pass =$_GET["pass"]; //""
$host =$_GET["dabf"]; //cojeto
mysql_connect("host", "uziv", "pass");
mysql_select_db("dabf");
?>
</body>
</html>
hlási:
Notice: Undefined index: pass in C:\EasyPHP-5.3.3.1\www\cotoje\central.php on line 10

Warning: mysql_connect() [function.mysql-connect]: php_network_getaddresses: getaddrinfo failed: Není znám žádný takový hostitel. in C:\EasyPHP-5.3.3.1\www\cotoje\central.php on line 12

Warning: mysql_connect() [function.mysql-connect]: [2002] php_network_getaddresses: getaddrinfo failed: Není znám žádný ta (trying to connect via tcp://host:3306) in C:\EasyPHP-5.3.3.1\www\cotoje\central.php on line 12

Warning: mysql_connect() [function.mysql-connect]: php_network_getaddresses: getaddrinfo failed: Není znám žádný takový hostitel. in C:\EasyPHP-5.3.3.1\www\cotoje\central.php on line 12

Warning: mysql_select_db() [function.mysql-select-db]: [2002] Pokus o připojení selhal, protože připojená strana v časovém int (trying to connect via tcp://localhost:3306) in C:\EasyPHP-5.3.3.1\www\cotoje\central.php on line 13

Warning: mysql_select_db() [function.mysql-select-db]: Pokus o připojení selhal, protože připojená strana v časovém intervalu řádně neodpověděla, nebo vytvořené připojení selhalo, protože neodpověděl připojený hostitel. in C:\EasyPHP-5.3.3.1\www\cotoje\central.php on line 13

Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in C:\EasyPHP-5.3.3.1\www\cotoje\central.php on line 13


Hľadám a hľadám riešenie a nenachádzam.
Ďakujem za pomoc.
Kcko
Profil
peteo:
Domluv se s někým kdo Ti to přijde ukázat naživo. Jak se založí databáze, jak s navrhne tabulka , pak základní operace a pak to půjde samo. Myslím, že by se tu někdo kdo má čas našel, nebo si to hod do práce a zakázek, obětuj pár stovek, bude to ku prospěchu věci. Ani u Tebe nemusí nikdo fyzicky sedět, připojíte se k sobě pomocí např. TeamVieweru.
peteo
Profil
to by bolo fajn a najlepšie.
kto kedy máte cestu okolo Sainsburry v Belfaste?
nightfish_
Profil *
peteo:
skript v [#21] načítá údaje pro přihlášení k databázi z URL (tedy z proměnné $_GET) - vzhledem k tomu, že ty údaje jsou pořád stejné, tak je to: 1) zbytečné 2) nebezpečné 3) načítá je do proměnných $host, $uziv, $pass a $host, které pak dál nikde nepoužíváš
takže vymaž řádky 8 až 11 a dále použij:
mysql_connect("127.0.0.1", "root", "");
mysql_select_db("cojeto");
peteo
Profil
nightfish:
nechápem prečo, ale takto ([#24]) to funguje.
Pôvodný úmysel bol ten, že do formulára sa načítavajú údaje z ďalšieho externého súboru s prihlasovacími dátami.
Takže to nechávam natvrdo v zápise
mysql_connect("127.0.0.1", "root", "");
mysql_select_db("cojeto");

a idem pokračovať v štúdiu.
Ďakujem.
shaggy
Profil
peteo:
Pôvodný úmysel bol ten, že do formulára sa načítavajú údaje z ďalšieho externého súboru s prihlasovacími dátami.
Do formulára? To nie je formulár. A prenášať prihlasovacie údaje cez $_GET je tá najväčšia možná zvrhlosť, na bezpečnosť si nemyslel? Veď by tie prihlasovacie údaje každý videl.

+ ako ti už povedali, inicializuješ premenné, ktoré nikde nepoužívaš (okrem toho, že $host napĺňaš dvakrát, vždy s inými dátami). Mal by si sa najprv naučiť základy php, keď sa chceš púšťať do niečoho zložitejšieho. Toto:
mysql_connect("host", "uziv", "pass");
si totižto mal zapísať takto:
mysql_connect($host, $uziv, $pass);
Amunak
Profil
Nepoužívejte mysql_* funkce, jsou zastaralé a někdy v budoucnu zmizí z PHP. Lépe mysqli_*.
peteo
Profil
shaggy:
som ja ale trdlo.
triviálna chyba v zápise spôsobí fatálnu chybu v programe.

Amunak:
mám za posledné tri dni chaos v hlave.
všetci tu (no dobre, väčšina) majú dotazy na problémy s mysql, a vy mi tu zrazu vybafnete (nie myslené v zlom) niečo o mysqli.
A keď mysqli dám do googlu, 99% odkazov vedie na mysql.
Ale našiel som Seriál na Programujte.com

Pre mňa osobne je najlepšie sa učiť (staršia hlava už, niš sa nedá robiť) krok za krokom, takže ideálne sú pre mňa príklady[#19] a to asi pre mysqli nenájdem.
Amunak
Profil
peteo: mysqli je vylepšená verze funkcí mysql. Funkce jsou skoro stejné, jen se povinně předává identifikátor připojení.
$link = mysqli_connect($host, $uziv, $pass, "cojeto");
$result = mysqli_query($link, "SELECT * ...");
peteo
Profil
Amunak:
No sláva, tak keď pochopím mysql (už sa to pomaly darí, je to síce samé aha! a kruci, tak ako to je?, ale pomaličky to ide), tak potom ľahko prejdem na mysqli, nie?
už mám posťahovanej toľko dokumentácie o mysql, že to ani pravda nie je.
Ale začína sa mi to trocha objasňovať, troška sa mi motali dokopy sql a php mysql funkcie, ale už som sa z toho vysomáril (som vôbec netušil že tie funkcie sú vlastne akýsi prekladač sql).
No nič, lúskam, skúšam.

Na mňa sa musí lopatisticky, to je najjednoduchšie.
« 1 2 »

Vaše odpověď

Mohlo by se hodit

Příspěvky nesouvisející s webem budou odstraněny.

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: