Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 15 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
spracovane + ukladanie dát do db

Registrovaný: 04.12.07
Prihlásený: 05.11.15
Príspevky: 347
Témy: 51
Bydlisko: Internet
Príspevok NapísalOffline : 09.03.2009 20:43

Zdravím vás, chcem sa na vás nieco opýtať:

Robím jeden väčší projek a neviem si s jednou vecickou poradit.
Tato stranka bude o clánkoch a pod ...
V nej chcem mat, aby bolo hlasovanie clánkov podla hviezdiciek.
Uvazoval som dost dlho, ako to spojazdnit, no prisiel som iba na jeden nápad, ale nvm ci je to mozné.
Tu vám dám jeden necelý riadok s DB:

spracovane + ukladanie dát do db

V tomto obrázku by som vám chcel vysvetlit stĺpec "hlasoval".
V nom sa nachádzajú ID uzivatelov, ktorí hlasovali.
A otázočka - je nieco také mozné ?
Ak áno - aký typ stĺpca mam vybrať a ako bude taký script na spracovanie a ulozenie dat vyzerat ?
Napr. je prihlasený uzívatel s ID 57 a teraz ako urobit skript, ktorý skontroluje, ci uzivatel s ID 57 nachádza v tomto riadku a stĺpci spomedzi týchto císiel ...


Offline

Čestný člen
Čestný člen
spracovane + ukladanie dát do db

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 09.03.2009 20:52

Ja by som vytvoril tabulku trebars hlasy a do nej ukladal ID uzivatela, ktory hlasoval, a ID clanku, za ktory hlasoval.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 26.02.08
Prihlásený: 24.05.13
Príspevky: 372
Témy: 66
Bydlisko: Nové Zámky
Príspevok NapísalOffline : 09.03.2009 20:52

no dat sa to da...typ mozes dat text..ale moc to neodporucam...lebo toto iste sme mali aj my na jednom portale..a ked v tej ankete zahlasuje dajme tomu 500-1000 ludi a ked ma php stale rozoberat a kontrolovat ci ten a ten uzivatel uz nehlasoval je to dost blbe a vytazujuce (aspon moj nazor z vlastnych skusenosti) unas sa to neosvedcilo...radsej spravit zvlast tabulku kde budes mat id(auto_increment) id_anketa id_user popripade dalsi stlpec hlas alebo to mozes dat aj inde neviem cim to presne hodnotis ci cislom alebo ako...


Offline

Skúsený užívateľ
Skúsený užívateľ
spracovane + ukladanie dát do db

Registrovaný: 30.05.06
Prihlásený: 08.10.14
Príspevky: 1756
Témy: 35
Bydlisko: BA - WESTSIDE
Príspevok NapísalOffline : 09.03.2009 21:04

Jednoznačne to dať do samostatnej tabuľky, toto odporuje už prvej normálnej forme, atribúty majú byť atomické.







_________________
A. S. Tanenbaum píše:
The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice.
Offline

Užívateľ
Užívateľ
spracovane + ukladanie dát do db

Registrovaný: 04.12.07
Prihlásený: 05.11.15
Príspevky: 347
Témy: 51
Bydlisko: Internet
Príspevok Napísal autor témyOffline : 09.03.2009 21:07

Ale iba chcem vediet, ci sa da urobit v takom prípade ako je na obrázku - ze v jednom riadku a v jednom stlpci sa daju zapisat vsetky ID userov a kontrolovat ich. Nemusia byt hlasi(alebo kto hlasoval) v jednej tabulke s clankami .... len ci proste sa to da a ako ich oddelit... napr tie cisla: 2, 57, 6, 21 ... su jednotlive ID, a ja neviem spracovat na to jedno cislo


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 26.02.08
Prihlásený: 24.05.13
Príspevky: 372
Témy: 66
Bydlisko: Nové Zámky
Príspevok NapísalOffline : 09.03.2009 21:53

ako som pisal dat sa to da ale nieje to vobec dobre...
Kód:

function hlas($mojeID,$anketa)
{
$select=mysql_fetch_array(mysql_query("SELECT hlas FROM tabulka WHERE id_anketa='".$anketa."' LIMIT 1"));
$temp=split(",",$select["hlas"]);
        for ($i=0;$i<count($temp)-1;$i++)
        {
                if ($temp[$i]==$mojeID) return true;
        }
return false;
}


bolo to narychlo pisane lebo mam robotku snad som sa nepomylil :) ale rozhodne to neodporucam takto to riesit...radsej tu dalsiu tabulku


Offline

Užívateľ
Užívateľ
spracovane + ukladanie dát do db

Registrovaný: 04.12.07
Prihlásený: 05.11.15
Príspevky: 347
Témy: 51
Bydlisko: Internet
Príspevok Napísal autor témyOffline : 09.03.2009 22:14

ale podla toho, co som pochopil, ma byt tabulka s nazvom hlasovanie a stlcpe -->id a hlasovali ... nic ine nie ? A v to "hlasovali" bude na tom pricnipe nie ?

alebo ta tabulka bude obsahovat to iste, ale kazdy klik sa bude zapisvat do noveho riadku a podla toho upravovat ??


Offline

Čestný člen
Čestný člen
spracovane + ukladanie dát do db

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 10.03.2009 14:05

Kazdy hlas by mal mat vlastny riadok. Stlpce taketo:
id_hlasu: myslim, ze nastavit primarny kluc je povinnost, preto tento stlpec. Ale nevyuzijes ho
id_clanku: ID clanku za ktory uzivatel hlasoval
id_uzivatela: ktory uzivatel hlasoval
hodnota_hlasu: pokial budes moct zvolit pri hlasovani aj hodnotu hlasu (trebars 5 hviezdiciek, 3 hviezdicky atd), sprav aj takyto stlpec

Vsetky hlasy zvoleneho clanku budes vyberat pomocou SELECT * FROM hlasy WHERE id_clanku = $id_clanku.
Pri kazdom hlasovani sa v tabulke vytvori novy riadok.


Offline

Užívateľ
Užívateľ
spracovane + ukladanie dát do db

Registrovaný: 04.12.07
Prihlásený: 05.11.15
Príspevky: 347
Témy: 51
Bydlisko: Internet
Príspevok Napísal autor témyOffline : 10.03.2009 15:15

no, ale ked bude tolko dat v sql a bude v nich vyberat a pod. nebude to pomalé ?
Podla mna tamto je setrnejsie...(ale ja som zba zaciatocnik php, tak sa mi to vidi)
Ten druhý sposob by som mal zvladnut(aspon dufam) ked niec nebudem vediet, spytam sa ;)


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.04.07
Prihlásený: 27.06.21
Príspevky: 532
Témy: 35
Bydlisko: Bratislava
Príspevok NapísalOffline : 10.03.2009 15:20

nebude to pomale, nastavis tym stlpcom id_... indexy.







_________________
CPU: AMD Phenom II 940 QUAD X4 BE AM2+, chladic: Arctic Cooling Freezer 64 Pro, RAM: 4GB DDR2 800MHz PC6400, MB: M2N-E SLI, VGA: RX 4870 GAINWARD HD4870 1GB, HDD: WD 1TB, Zdroj: CORSAIR 750W TX
Offline

Skúsený užívateľ
Skúsený užívateľ
spracovane + ukladanie dát do db

Registrovaný: 29.10.07
Prihlásený: 27.10.23
Príspevky: 1395
Témy: 30
Bydlisko: Bratislava
Príspevok NapísalOffline : 10.03.2009 15:33

Tak ako pise vacsina, mat do v jednom stlpci poskladane je zle. Spravne riesenie je mat to vo zvlastnej tabulke. Ak bude vela hlasov a das to do jedneho stlpca, hrozi ti ze ti to pretecie. Ak to uz ale tak musis mat, tak kontrola ci clovek hlasoval ma vyzera takto
Kód:
SELECT count(id) FROM tabulka WHERE id = $id_clanku AND hlasoval LIKE '%,'.$user_id.'%'

Ak ti to selectne 1, tak hlasoval, ak 0, tak nehlasoval. Nema vyznam srotit to v php.
Update zaznamu pri hlasovani bude potom vyzera takto
Kód:
UPDATE tabulka SET hlasoval = hlasoval + ','.$user_id WHERE id = $id_clanku







_________________
PC: OS: Windows 11 (64bit) CPU: AMD Ryzen 5 3600 GPU: ASUS TUF RTX3060Ti 8GB RAM: 16GB DDR4-3200MHz Kingston Fury MB: ASUS TUF Gaming B550M WIFI SSD: 1000GB PCIe M.2 NVME
Mobil: Xiaomi POCO F2 PRO
Offline

Užívateľ
Užívateľ
spracovane + ukladanie dát do db

Registrovaný: 04.12.07
Prihlásený: 05.11.15
Príspevky: 347
Témy: 51
Bydlisko: Internet
Príspevok Napísal autor témyOffline : 10.03.2009 17:07

takze na takom principe to pojde co?

Kód:
$sql = "SELECT Count(*) as pocet FROM hlasovanie WHERE id_clanok='$id_clanok' AND id_user='$id_user' ";
$result = mysql_query($sql, $connect);
while ($vypis=mysql_fetch_array($result))
{
$abc = $vypis["pocet"];


if ($abc == "1"):
echo"Ľutujeme, ale už ste hodnotili tento návod";

elseif ($abc == "0"):
echo"tu bude pokracovanie dalej ....";

endif;




btw
Kód:
hlasoval LIKE '%,'.$user_id.'%'
je tu zbytocne nie ? napr. hlasoval user s ID 12, tak automaticky nezahlasuje user s ID 112 nie ?


Offline

Čestný člen
Čestný člen
spracovane + ukladanie dát do db

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 10.03.2009 17:55

id_user a id_clanok su zrejme integery, takze nepouzivaj uvodzovky. Mozno to ide aj s nimi, neviem.
Inak while staci vynechat, kludne len takto:
Kód:
$vypis=mysql_fetch_array($result);


ad LIKE: keby si precital pozorne jeho prispevok, zistil by si, ze pisal o situacii, aku si nacrtol v 1.prispevku - IDcka oddelene ciarkami.


Offline

Užívateľ
Užívateľ
spracovane + ukladanie dát do db

Registrovaný: 04.12.07
Prihlásený: 05.11.15
Príspevky: 347
Témy: 51
Bydlisko: Internet
Príspevok Napísal autor témyOffline : 10.03.2009 19:03

takze nieco som vytvoril, typ stlpcov este nieje nastavený, ale zhodnotte ho a nejake chybicky mensie mi upravte:
Kód:
$id_clanok = 103; //proste s session vycitam ID clanku
$id_user = 56; //proste s session vycitam ID uzivatela
$znamka = addslashes($_GET['znamka']);



 if ($znamka == "1" || $znamka == "2" || $znamka == "3" || $znamka == "4" || $znamka == "5" ):{ //keby nahodov sa niekto odvazil prepisat cislo s prehliadaca na nejake pismeno a pod ...


$sql = "SELECT Count(*) as pocet FROM hlasovanie WHERE id_clanok='$id_clanok' AND id_user='$id_user' ";
$result = mysql_query($sql, $connect);
while ($vypis=mysql_fetch_array($result))
{
$abc = $vypis["pocet"];

//ochrana, ci nehlasuje 2x
if ($abc == "1"):{
echo"Ľutujeme, ale už ste hlasovali.";
}

elseif ($abc == "0"):{




//aka bude hodnota v premenej get(znamka) taka bude v premennej "hodnota", ine cislo by sa tam nemalo dostat, predchadzajuca podmienka by ho nemala pustit
if ($znamka == "1"):
$hodnota = 1;

elseif ($znamka == "2"):
$hodnota = 2;

elseif ($znamka == "3"):
$hodnota = 3;

elseif ($znamka == "4"):
$hodnota = 4;

elseif ($znamka == "5"):
$hodnota = 5;
else: echo"Ľutujeme, ale nemôžte hlasovať";    //keby nieco ;)
endif;




$zapis = "INSERT INTO hlasovanie (id_clanok, id_user, hodnota) VALUES ('$id_clanok', '$id_user', '$hodnota')";
mysql_query($zapis, $connect);
echo "Ďakujeme za vaše hodnotenie";


}

else:{
echo"Ľutujeme, ale nemôžte hlasovať";   }    //keby nieco ;)
endif;
 


}




else:{
echo"Ľutujeme, ale nemôžete hlasovať";}   //tu ked niekto prepise hodnotu, malo by mu toto vypisat
endif;





Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.04.07
Prihlásený: 27.06.21
Príspevky: 532
Témy: 35
Bydlisko: Bratislava
Príspevok NapísalOffline : 10.03.2009 21:12

zistenie ci nehlasoval by som skor urobil asi takto, ten while cyklus tam mas uplne zbytocny
Kód:
$sql = "SELECT Count(*) as pocet FROM hlasovanie WHERE id_clanok='$id_clanok' AND id_user='$id_user' ";
list($abc) = mysql_fetch_array(mysql_query($sql, $connect));
//ochrana, ci nehlasuje 2x
if ($abc == "1"):{
echo"Ľutujeme, ale už ste hlasovali.";
}







_________________
CPU: AMD Phenom II 940 QUAD X4 BE AM2+, chladic: Arctic Cooling Freezer 64 Pro, RAM: 4GB DDR2 800MHz PC6400, MB: M2N-E SLI, VGA: RX 4870 GAINWARD HD4870 1GB, HDD: WD 1TB, Zdroj: CORSAIR 750W TX
Odpovedať na tému [ Príspevkov: 15 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Ukladanie dat v opere

v Sieťové a internetové programy

1

464

30.07.2009 11:35

marzo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ukladanie dát z hry

v PHP, ASP

14

399

30.08.2014 19:40

bqoqyq Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Samsung Galaxy Mini ukladanie dát

v Smartfóny a tablety

1

696

06.10.2012 13:07

Marko125 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. [Java] Konstruktory a ukladanie dat pre jednotlive objekty

v Assembler, C, C++, Pascal, Java

10

2061

26.03.2018 0:40

Miso122 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. c++ sqlite alebo xml pre ukladanie velkeho mnozstva dat

v Assembler, C, C++, Pascal, Java

5

433

09.07.2018 8:12

BX Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Kde kupit spracovane sladkovodne ryby?

v Jedlo, pitie a varenie

13

1930

07.11.2018 6:28

ujo zigo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Chcem dať môj JS projekt na github, ako tam dať obrázky?

v Ostatné

10

1034

27.03.2014 21:56

Kamahl Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ukladanie

v Operačné systémy Microsoft

1

449

29.12.2009 11:22

raf Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ukladanie nastavení

v Ostatné programy

0

338

18.12.2010 13:27

mhdsim Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ukladanie textu

v JavaScript, VBScript, Ajax

4

550

27.11.2009 20:35

DjLefo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. LG KC550 ukladanie

v Mobilné zariadenia

0

659

11.03.2009 16:52

uniqat Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. zlé ukladanie titulkov

v Ostatné programy

8

473

23.11.2019 15:10

mimush Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ukladanie hesiel HELP!!!

v Ostatné programy

3

754

29.03.2009 11:35

void Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ukladanie do knižníc

v Operačné systémy Microsoft

1

335

29.11.2009 1:46

mmichalll Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ukladanie pod seba

v PHP, ASP

5

383

16.08.2016 18:08

chrono Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. gmail - ukladanie obrázkov

v Služby a webstránky

3

452

31.05.2009 13:38

walther Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra