Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - exkalibr

Stran: 1 ... 15 16 [17] 18 19 ... 25
241
Vývoj / Re:Dotaz na řešení pomocí SQL
« kdy: 21. 02. 2020, 17:54:06 »
Jedinej smysl by mělo vrátit takovýho člověka s post_id NULL. To by Ti ale už mělo napovědět, že chceš listovat uživatele, a k nim přiřazovat posty. Tedy něco jako
"Dej mi uživatele, který buďto napsali post, anebo maj id=5, a k nim dej ten případnej post"Tedy "primární" tabulka, to první v SELECTU (to je jen takovej myšlenkovej konstrukt, ne, že by první tabulka v selectu měla nějakej reálnej význam) tedy budou uživatelé.To, že tam je "případnej" znamená, že uživatel může (postovatel) a nemusí (autor) mít žádnej post, takže použiješ ne INNER,ale....

... když nebudeš dál vědět, tak se zeptej dál. :-)

Já vůbec nemám šajnu jak to sestavit.

242
Vývoj / Re:Dotaz na řešení pomocí SQL
« kdy: 21. 02. 2020, 17:50:14 »
Ještě k
"První příspěvek se tedy už nebude ukládat do tabulky posts (příspěvky ve foru), ale jen do topics (témata diskusí)."
To bych nedoporučoval. Protože pak budeš mít problém např. když budeš chtít vyhledávat ve všech příspěvcích.Daleko lepší je i první příspěvek nechat v postech, ale nějak si ho speciálně označit. Tak můžeš jak pracovat s topicy a posty
odděleně, tak i najednou.

Tahle situace nehrozí. Chci to mít striktně oddělené, protože články, které píšu já jako autor webu jsou něco úplně jiného než příspěvky běžných uživatelů, kteří nemají právo zakládat a psát články. Jde tam i o to, že moje články mají mnohonásobně vyšší hodnotu a důležitost než samotné komentáře. Pro mě je s tím spojena přehlednost. V phpmyadminu kliknu na tabulku a vidím všechny moje články, které mohu snadno zazálohovat, než když bych je měl hledat mezi desítkami komentářů.

243
Vývoj / Re:Dotaz na řešení pomocí SQL
« kdy: 21. 02. 2020, 15:56:52 »
Zkus UNION  :)

Jak to myslíte?
SELECT t.uid as poster FROM topics as t
WHERE t.uid=$poster_id
UNION
SELECT p.id as poster FROM posts as p
WHERE p.topic_id=$id AND p.id=$poster_id
ORDER BY City;


while ($row = $forum_db->fetch_assoc($result)) {
   $posts_id[] = $row['poster_id'];
}

Nebo něco jiného. Vaše odpověď je příliš abstraktní a nenasměrovala mě. Něvím ohledně čeho a jaké použití máte na mysli.
Ano, tak jsem to myslel.

To si myslím že nemohu udělat, protože když vybírám všechny uživatele, kteří v tabulce posts jsou evidováni, že přispěli do daného tématu, tyto data jsou jiné, než data z tabulky users. Není tam kompatibilita. Jediná kombatibilita je mezi u.id a p.uid ...

244
Vývoj / Re:Dotaz na řešení pomocí SQL
« kdy: 21. 02. 2020, 15:50:50 »
Můj pokus zjednodušeně:
Kód: [Vybrat]
SELECT u.email, p.id, p.poster_id
FROM posts AS p
INNER JOIN users AS u ON u.id = p.poster_id
OR u.id =5
WHERE u.id =5
ORDER BY p.id
LIMIT 0 , 30
Problém je klauzule WHERE. Zatímco mám FROM posts AS p, WHERE odkazuje na tabulku users.

Jak to opravit?

245
Vývoj / Re:Dotaz na řešení pomocí SQL
« kdy: 21. 02. 2020, 00:51:35 »
Asi jsem na to přišel. Mám teď něco takového:

Kód: [Vybrat]
SELECT u.email, u.url, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, u.avatar, u.avatar_width, u.avatar_height, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.message, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online
FROM posts AS p
INNER JOIN users AS u ON u.id = p.poster_id
OR u.id =5
INNER JOIN groups AS g ON g.g_id = u.group_id
LEFT JOIN online AS o ON ( o.user_id = u.id
AND o.user_id !=1
AND o.idle =0 )
WHERE u.id =5
ORDER BY p.id
LIMIT 0 , 30

Ale nevrací mi to žádný výsledek. Nevíte proč?

246
Vývoj / Re:Dotaz na řešení pomocí SQL
« kdy: 21. 02. 2020, 00:11:47 »
Zkus UNION  :)

Jak to myslíte?
SELECT t.uid as poster FROM topics as t
WHERE t.uid=$poster_id
UNION
SELECT p.id as poster FROM posts as p
WHERE p.topic_id=$id AND p.id=$poster_id
ORDER BY City;


while ($row = $forum_db->fetch_assoc($result)) {
   $posts_id[] = $row['poster_id'];
}

Nebo něco jiného. Vaše odpověď je příliš abstraktní a nenasměrovala mě. Něvím ohledně čeho a jaké použití máte na mysli.

247
Vývoj / Re:Dotaz na řešení pomocí SQL
« kdy: 20. 02. 2020, 23:25:45 »
ja bych nemenil chovani ukladani prispevku do jejich tabulky, jen bych kazdy uplne novy topic
ulozil do nove samostatne tabulky s id odpovidajicicho prispevku v prispevcich.
pak bych jen projel tabulku topic a vylistoval topicy a pro kazdy topic uz pak jen podle id dohledat dalsi prispevky.

Díky za odpověď. Nevím jestli jsem vás pochopil, protože tabulka topic tam existuje, jestli jsem vás pochopil správně (?) tak právě s tím co říkáte.

248
Vývoj / Dotaz na řešení pomocí SQL
« kdy: 20. 02. 2020, 18:46:13 »
Používám Wamp 2.4, PHP 5 a Mysql 5.0. Používám jedno forum stažené z netu, které jsem trochu předělal. Původní verze pracovala takto - po rozkliknutí fora, se zobrazí příspěvky. Tzn. první příspěvek je vlastně "topic"/téma, které založil uživatel. Toto teď předělávám, tak, že při vytváření "diskuse" se vlastně nezakládá diskuse, ale nový článek (pod kterým pak budou komentáře). První příspěvek se tedy už nebude ukládat do tabulky posts (příspěvky ve foru), ale jen do topics (témata diskusí).

Teď nevím jestli sem mohu vložit přímo PHP kód, což by pro mě bylo jednodušší než generovat konkrétní SQL příkazy. Snad pochopíte oč mi jde. Jde mi o SQL příkazy, které pracují na prohlížení tématu (diskuse). Se změnou, kterou jsem udělal, se po rozkliknutí diskuse nezobrazí nic a má se zobrazit článek bez komentářů (žádné zatím nebyly přidány).

Původní navržení pro zobrazení diskuse pracuje takto:
Řádek 306
Kód: [Vybrat]
$query = array(
'SELECT' => 'p.id',
'FROM' => 'posts AS p',
'WHERE' => 'p.topic_id='.$id,
'ORDER BY' => 'p.id',
'LIMIT' => $forum_page['start_from'].','.$forum_user['disp_posts']
);
Říká: Vyber všechny záznamy s posts.id, k tomu topicu, který chci prohlédnout... Či-li má vybrat určitý počet komentářů se zadaným topic.id ... Pak se dotaz sestaví a provede. Do pole posts_id se uloží idéčka těch postů.

Kód: [Vybrat]
while ($row = $forum_db->fetch_assoc($result)) {
$posts_id[] = $row['id'];
}

A teď se dostávám k tomu klíčovému s čím potřebuju poradit. Jestliže existuje alespoň jedno idéčko, pak se provede další SQL dotaz:

Kód: [Vybrat]
$query = array(
'SELECT' => 'u.email, u.title, u.url, u.location, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, u.avatar, u.avatar_width, u.avatar_height, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online',
'FROM' => 'posts AS p',
'JOINS' => array(
array(
'INNER JOIN' => 'users AS u',
'ON' => 'u.id=p.poster_id'
),
array(
'INNER JOIN' => 'groups AS g',
'ON' => 'g.g_id=u.group_id'
),
array(
'LEFT JOIN' => 'online AS o',
'ON' => '(o.user_id=u.id AND o.user_id!=1 AND o.idle=0)'
),
),
'WHERE' => 'p.id IN ('.implode(',', $posts_id).')',
'ORDER BY' => 'p.id'
);

Z tabulky users se vyberou nějaké uživatelské informace jako email, title - název uživatele, avatar.
Z tabulky posts se vybere idéčko příspěvku, poster as username, id odesilatele, message - samotný text příspěvku, datum odeslání.
Z tabulky group se vybere funkce jakou plní uživatel (moderátor, správce, admin, uživatel).
WHERE - to platí pro všechny idečka z daného seznamu.

Napadá vás, jak tento příkaz modifikovat, aby v něm byly zahrnuty také data od uživatele, který napsal článek? Tj. od autora článku.

Opakuji, že původně autor diskuse byl v prvním příspěvku, což teď není, když první příspěvek začíná až od prvního komentujícího uživatele. ID autora už znám.

Jinak na řádku 124, existuje tento SQL příkaz na dohledání informací o topicu, a tam se to dohledává právě podle $id čísla topicu (t.id). ID autora je t.uid as poster_id.

Kód: [Vybrat]
$query = array(
'SELECT' => 't.uid as poster_id, t.subject, t.desc_x, t.article as message, t.hide_smilies, t.posted, t.edited, t.first_post_id, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, u.username',
'FROM' => 'topics AS t',
'JOINS' => array(
array(
'INNER JOIN' => 'forums AS f',
'ON' => 'f.id=t.forum_id'
),
array(
'INNER JOIN' => 'users AS u',
'ON' => 'u.id=t.uid'
),
array(
'LEFT JOIN' => 'forum_perms AS fp',
'ON' => '(fp.forum_id=f.id AND fp.group_id='.$forum_user['g_id'].')'
)
),
'WHERE' => '(fp.read_forum IS NULL OR fp.read_forum=1) AND t.id='.$id.' AND t.moved_to IS NULL'
);


249
Vývoj / Re:SQL: Rozdíl mezi INNER JOIN a LEFT JOIN
« kdy: 19. 02. 2020, 20:07:30 »
To je pravda, já už myslel, že bych to měl uvést za INNER JOIN users AS u ... to byl hloupý dotaz. Taky obvykle používám slovo záznam pro řádek.

250
Vývoj / Re:SQL: Rozdíl mezi INNER JOIN a LEFT JOIN
« kdy: 19. 02. 2020, 19:35:59 »
A co když chci přidat záznamy z tabulky users, ale ne všechny. Protože users jsou mimojiné i nastavení z profilu uživatele aj. a mě zajímá např. jen emailová adresa uživatele (email), skupina (group) ve které je zařazen, datum registrace (registered), avar (číslo obrázku).

SELECT t.uid, t.subject, t.desc_x, t.article, t.hide_smilies, t.first_post_id, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, s.user_id AS is_subscribed
FROM topics AS t

INNER JOIN forums AS f
ON f.id=t.forum_id

INNER JOIN users AS u ON u.id=t.uid

LEFT JOIN forum_perms AS fp
ON (fp.forum_id=f.id AND fp.group_id=1)

LEFT JOIN subscriptions AS s
ON (t.id=s.topic_id AND s.user_id=2)

WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=17 AND t.moved_to IS NULL

251
Vývoj / SQL: Rozdíl mezi INNER JOIN a LEFT JOIN
« kdy: 19. 02. 2020, 18:13:35 »
Zdravím,
na jednom internetovém foru jsou fora uložená v tabulce forums. Jednotlivé diskuse (témata) pod daným forumem jsou uložená v tabulce topics. Ještě je tam tabulka forum_perms, která udává jaké má uživatel privilégia, zda smí přispívat do diskuse, prohlížet forum apod. Taky je tam tabulka subscriptions, odkud se dá zjistit zda uživatel chce sledovat danou diskusi. Na stránce s diskusí se před zobrazením diskuse provádí tento SQL příkaz (pro přehlednost rozděleno na víc řádků):

SELECT t.uid, t.subject, t.desc_x, t.first_post_id, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, s.user_id AS is_subscribed
FROM topics AS t

INNER JOIN forums AS f
ON f.id=t.forum_id

LEFT JOIN forum_perms AS fp
ON (fp.forum_id=f.id AND fp.group_id=1)

LEFT JOIN subscriptions AS s
ON (t.id=s.topic_id AND s.user_id=2)

WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=17 AND t.moved_to IS NULL

Zajímá mě proč se jednou používá INNER JOIN a podruhé LEFT JOIN.

252
Server / Re:Freehosting s SSL zdarma
« kdy: 14. 02. 2020, 13:13:59 »
Tak v ceníku Endora jsem našel cenu za doménu .cz 219,- bez DPH a perioda 1 rok. No ale já myslel, že cena se uvádí za měsíc, tak to není moc.

Je ale fakt, že jsem našel levnější doménu: wedos.cz má 145 Kč za rok, ale zase levnější hosting je za 33 Kč/měsíc (39,93 Kč/měsíc s DPH).

Takže asi to vemu na Endoře.

253
Server / Re:Freehosting s SSL zdarma
« kdy: 14. 02. 2020, 11:13:04 »
Tak asi to zikum, ale musel bych si tedy koupit doménu, jenže kde koupit pokud možno českou doménu co nejlevněji?

Ještě ale když se podívám na Endoru tak tam mají hosting jen za 14 Kč:

Plus - Doporučujeme pro běžné projekty
* bez vložené reklamy
* 10 GB místa pro web
* 500 MB místa pro e-maily
* 100 GB traffic
* SSL certifikát zdarma
14 Kč měsíčně

Ještě chci co nejlevnějši doménu. Taky by mě zajímalo, když si koupím doménu, budou někde na internetu zveřejněny moje osobní informace kdo ji koupil?

254
Server / Re:Freehosting s SSL zdarma
« kdy: 13. 02. 2020, 20:27:19 »
To jsem zkoušel, ale mají tam chybu. FF 49, to neurobí správně. V Chromu to funguje.

255
Server / Re:Freehosting s SSL zdarma
« kdy: 13. 02. 2020, 18:42:58 »
Díky za podrobný návod. Mě se to zobrazovalo v jiných barvách tak jsem radioboxy neviděl. Teď OK. Jenže 3. krok mám:

Konfigurace domém
[Webhosting]
Prosím zkontrolujte výběr domény a případná rozšíření, která jsou k dispozici.

Registrační období: 1 Rok/y             Hosting:         [Má hosting]

Správa DNS
[
Externí DNS mohou zvýšit rychlost Vašich stránek v zahraničí a zároveň poskytují redundanci.
ZDARMA! / 1 Rok/y
]

TAKHLE TO CHÁPU ŽE JE TO NA JEDEN ROK A VYBRAT VÍC NEJDE.

KLIKL JSTE NA TO [KONTROLA] JAKO JÁ? MĚ SE OTEVŘE STRÁNKA KDE MI NABÍZÍ DOMÉNU 2. ÚROVNĚ POD doménou .tk!

Stran: 1 ... 15 16 [17] 18 19 ... 25