Zobrazení řádků určitému okruhu – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Zobrazení řádků určitému okruhu – MySQL – Fórum – Programujte.comZobrazení řádků určitému okruhu – MySQL – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
Forest0
Stálý člen
29. 9. 2013   #1
-
0
-

Zdravím :) Chtěl bych se zeptat na jednu věcičku.

Dejme tomu, že mám v databázi 100 uživatelů a 50 názvů postav. Uživatel přijde na stránku, kde se mu ukážou všechny postavy a když na jednu klikne, přičte se mu bod. A já potřebuji, aby se mu už znovu nepřičetl bod za postavu, na kterou už klikl.

Je mi jasné, že normálně by to bylo tak, že si vytvořím tabulku třeba přičítání, tam dam sloupce nick, postava, přičteno .. přičemž sloupec přičteno by měl typ INT, kde bych nastavil po kliknutí hodnotu na 1 a pak bych udělal:

mysql_query("SELECT * FROM pricitani WHERE pricteno='0'");

Což by znamenalo, že se pak vypíšou jen postavy s hodnotou 0 (nekliknuté)

Zároveň to ale znamená (tedy alespoň podle mého názoru), že musím vytvořit 100x50 řádků v tabulce a to mi přijde jako dost masakrální :-D ... Otázka tedy zní: Nevíte někdo o nějakým elegantnějším způsobu, jak toto vyřešit? Děkuji moc.

PS. Snad jsem to napsal dost srozumitelně.

Nahlásit jako SPAM
IP: 92.62.230.–
crazy
~ Moderátor
+10
Grafoman
29. 9. 2013   #2
-
0
-

#1 Forest
tabulka pricitani aby mela user_id, a povolit kazdemu uzivateli na kazdou postavu kliknout pouze jednou, cili kdyz na ni, klikne, tak v tabulce zkontrolvat, zda jiz tak neucinil

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
Řešení
Kit+15
Guru
29. 9. 2013   #3
-
0
-
Vyřešeno Nejlepší odpověď

#1 Forest
Je to relace M:N, vytvoříš si tedy prázdnou křížovou tabulku s kombinovaným unikátním klíčem (id_nick, id_postava). Kliknutí bude znamenat vložení dvojice do tabulky. Pokud tam už bude, unikátnost nedovolí opětovný zápis.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Forest0
Stálý člen
29. 9. 2013   #4
-
0
-

#3 Kit
Se omlouvám, ale nepochopil jsem to.

Nahlásit jako SPAM
IP: 92.62.230.–
Kit+15
Guru
29. 9. 2013   #5
-
0
-

#4 Forest
Tu tabulku, která bude mít 100×50 řádek budeš mít na začátku prázdnou a bude se budovat postupně s každým kliknutím. Podruhé se ta dvojice už nepřidá, unikátní klíč to nedovolí.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Forest0
Stálý člen
29. 9. 2013   #6
-
0
-

#5 Kit
Ale nechápu ten systém, na kterém to má pracovat. Původně jsem to myslel takto:

Připojen obrázek.

A pak:

$dotaz = mysql_query("SELECT * FROM pricitani WHERE nick='Kit' AND postava='Tarzan' AND pricteno='1'");

if(mysql_num_rows($dotaz) != 0)
{
echo "Kit už klikl na postavu Tarzana xD";
}else{
echo "Ještě na ni neklikl";
}

A mně právě přijde strašně divné mít tam 3 stejné nicky kvůli třem postavám.

Nahlásit jako SPAM
IP: 92.62.230.–
Kit+15
Guru
29. 9. 2013   #7
-
0
-

#6 Forest
Jednak tam nebudou nicky, ale jen jejich ID (viz výše), ale ta tabulka bude mít v daném případě pouze jeden řádek, protože pouze Kit klikl na Tarzana. Sloupec "pricteno" je zbytečný.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Forest0
Stálý člen
29. 9. 2013   #8
-
0
-

#7 Kit
Ale "Kit" nebude jediný, co na tu postavu klikne

Nahlásit jako SPAM
IP: 92.62.230.–
Kit+15
Guru
29. 9. 2013   #9
-
0
-

#8 Forest
U ostatních máš přece nuly. Proto je zbytečné tam jejich řádky mít. Ještě na tu postavu přece neklikli, tak jim nedáš ani tu nulu, ani záznam. Na začátku ta tabulka bude prázdná.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Forest0
Stálý člen
29. 9. 2013   #10
-
0
-

#9 Kit
Ano, to chápu ;) A když tedy klikne, tak se zapíše do tabulky co? ID nicku a ID postavy? To tam ale stejně bude 100 stejných IDéček (nicků) s 50 ID (postav)

Nahlásit jako SPAM
IP: 92.62.230.–
Kit+15
Guru
29. 9. 2013   #11
-
0
-

#10 Forest
Máš snad lepší řešení? Relaci M:N jinak rozumně neuděláš. Je snad nějaký problém mít v tabulce 5000 řádek?

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Forest0
Stálý člen
29. 9. 2013   #12
-
0
-

#11 Kit
Není :) Já chtěl jen vědět, jestli je to opravdu tak nebo to jde i jinak. Děkuju :)

Nahlásit jako SPAM
IP: 92.62.230.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 8 hostů

Podobná vlákna

ZObrazeni bitmapy — založil _Radek_

C# - Zobrazení formuláře — založil Anonymní uživatel

Zobrazení obrázku — založil Anonymní uživatel

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý