Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Offline
Offline
Z nejakého neznámeho dôvodu sa fórum správa, akoby som bol prihlásený 3krát. Po odoslaní jedného príspevku sa odošlo trikrát :)
EDIT. Tak toto je zaujímavé. Predtým som tu videl svoje 3 prísevky a teraz vidím iba 1 !
Offline
↑ BakyX:
Netuším čím to je, ale občas se stává, že je uživatel přihlášený vícekrát. Všechny jeho příspěvky se pak dočasně zdvojí/ztrojí/… Myslím, že stačí odhlásit se a přihlásit se, vše by pak mělo být v pořádku.
Offline
Zdravím..Z nejakého neznámeho dôvodu ma to po kliknutí na Hlavnú stránku hodí do http://www.g2server.cz/. Čo s tým ?
Offline
Zdravím, večer se mi to sem už nechtělo dávat...
Dana se pochlubila, ale příspěvek večer nebyl vidět, teď už je...
Offline
↑ janca361:
Vím o tom, byl jsem u toho. Nevím ale jak to řešit, nevím, čím je to způsobené. Pro vysvětlení: v kódu fóra je to zhruba takto:
(V tabulce online jsou informace o tom, kdo je přihlášen.)
Vyhledej uživatele v tabulce online a výsledek hledání ulož do proměnné pun_user; …(kód, který podle mě nemůže změnit proměnnou pun_user)… Jestliže v proměnné pun_user je informace o tom, že nebyl nalezen žádný záznam o uživateli v tabulce online, vlož do tabulky online záznam o uživateli.
Toto je jediné místo, kde se provádí vložení řádku do tabulky online. A včera, když tu byla Dana třikrát, jsem se do tabulky online podíval a Dana v ní byla třikrát.
Přidal jsem na to místo nějaké vypisování informací do logu, takže příště snad budu mít víc informací o tom, co se tam děje. Pokud bys to chtěla sama řešit, ozvi se Lukeemu, možná ti dá přístupová práva jako mně :-).
Edit: To, že máš vidět jen 19 stránek je tím, že si necháváš zobrazovat 50 příspěvků na stránku, my máme 38 stránek (to jen pro ostatní, abych vysvětlil tvůj obrázek). To, že nevidíš poslední příspěvky, je způsobené tím, že Dany příspěvky byly ztrojené, takže poslední příspěvky byly odsunuty na další stránky, na které se ale není možné dostat.
Offline
↑ Pavel Brožek:
Díky za nabídku, myslím si, že by to bylo více škody než užitku ;)
Offline
pavle, není možné dát do kódu test na duplicitu? promiň za nepřesnosti, třeba to tak kódované není (s vysokou pravděpodobností není) , jenom myšlenka :
mějme dvourozměrné pole znaků, kde první rozměr je pořadový index člena (nový se dává na první prázdný index) a ve druhé složce je nick
pak mějme nově připojeného uživatele. Stejně musí kód zjistit, jaké je první prázdné místo - tak to při tomto zjišťování na neprázdnost druhého rozměru si jej rovnou i přečíst a porovnat s tím řetězcem, který se snaží na seznam dostat? V případě shody se nový požadavek o zápis samozřejmě zahodí, a případně shodí nějakou výjimku.
Snad jsem to napsal aspoň trochu pochopitelně, třeba tě to inspiruje
Offline
↑ frank_horrigan:
Díky za snahu pomoct.
Předpokládám, že tím dvourozměrným polem znaků myslíš něco jako tu tabulku online (to místo, kam se ukládá informace o online uživatelích).
Stejně musí kód zjistit, jaké je první prázdné místo
V kódu se vůbec nezjišťuje jaké je první prázdné místo, při snaze uložit záznam do databáze se prostě databázi řekne „vlož takovýto řádek do tabulky“ a databáze už se postará o to, aby se to někam uložilo. Ta tabulka online nemá jedinečný klíč, takže není vůbec nutné při vkládání záznamu procházet existující záznamy.
Ale stejně – kontrola na duplicitu už v kódu je. Pokud je uživatel v tabulce online už uveden, vůbec by se program neměl dostat na řádek, kde se do tabulky uživatel vkládá.
Jediná možnost, jak si dokážu vysvětlit, proč se uživatel vloží do tabulky online víckrát, je, že se skript spustí víckrát, spuštěné skripty se vykonávají současně a než stihne některý zapsat uživatele do tabulky online, tak ostatní už načtou informace z tabulky online, kde ale ještě uživatel uveden není.
Offline
↑ Lukee:
Nastavil jsem teď v tabulce online jméno uživatele jako unikátní, takže při snaze vložit tam duplicitní záznam to vyhodí chybu a záznam se nevloží. Snad se to tím vyřeší.
Offline
↑ Pavel Brožek:
jj, tím dvojrozměrným polem znaků jsem myslel tabulku - první rozměr je index, na jaké pořadí se zapíše nick, a druhý rozměr samotný nick.
Ale samozřejmě, pokud to tak nefunguje (nejsem databázař, nikdy jsem problematiku databází pořádně nepochopil, což je způsobeno tím, že jsem to nikdy nepotřeboval), a funguje to jednodušeji, tedy (moje představa) voláním nějaké API funkce, která se postará o všechno potřebné, tak to pak ano. Samozřejmě takovéto funkce bývaj málokdy chybné, takže tam problém hledat netřeba.
Jinak mně napadlo, není možné nějak zamezit (pokud více instancí není nezbytně nutné provádět) spuštění jiné instance skriptu, pokud se stále provádí původní? Jednoduchá představa - udělat globální boolku, na spuštění skriptu jí otestovat, pokud false tak nastavit, a při ukončení skriptu ji nastavit opět na false a tím umožnit další volání toho skriptu odjinud? Nebo takto tímhle způsobem nelimitovat celý skripty (který má asi i jiné věci na práci), ale vytvořit tímto způsobem funkci, která bude mít za úkol pouze spravovat tabulku online, tedy asi toto: pokud user není uveden jako online, uveď ho jako online, jinak nedělej nic a skonči)
Nebo jak napadlo Lukeeho - testovat při vypisování, zda už daný nick nebyl vypsán. Ale díky tomu, že (jestli jsem to správně pochopil), nejen že jsou uvedení dvojmo, trojmo, ale také jejich příspěvky jsou dvojité, trojité, takže problém bude asi hlubší
Offline
↑ frank_horrigan:
To řešení s přepínačem mimo skript by bylo příliš složité.
Kdyby nepomohlo ↑ toto: (což ale téměř jistě pomůže), tak zkusím přímo v sql příkazu podmínit vložení nového řádku.
Offline