| | |
| Stránka: 1 z 1
| [ Príspevkov: 15 ] | |
Autor | Správa |
---|
Registrovaný: 04.12.07 Prihlásený: 05.11.15 Príspevky: 347 Témy: 51 Bydlisko: Internet | Napísal pa3ck: 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:
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 ...
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 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.
|
|
Registrovaný: 26.02.08 Prihlásený: 24.05.13 Príspevky: 372 Témy: 66 Bydlisko: Nové Zámky |
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...
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 Bydlisko: BA - WESTSIDE | Napísal p360t: 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. |
|
Registrovaný: 04.12.07 Prihlásený: 05.11.15 Príspevky: 347 Témy: 51 Bydlisko: Internet | Napísal autor témy pa3ck: 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
|
|
Registrovaný: 26.02.08 Prihlásený: 24.05.13 Príspevky: 372 Témy: 66 Bydlisko: Nové Zámky |
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
|
|
Registrovaný: 04.12.07 Prihlásený: 05.11.15 Príspevky: 347 Témy: 51 Bydlisko: Internet | Napísal autor témy pa3ck: 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 ??
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 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.
|
|
Registrovaný: 04.12.07 Prihlásený: 05.11.15 Príspevky: 347 Témy: 51 Bydlisko: Internet | Napísal autor témy pa3ck: 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
|
|
Registrovaný: 04.04.07 Prihlásený: 27.06.21 Príspevky: 532 Témy: 35 Bydlisko: Bratislava | Napísal djsulo: 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 |
|
Registrovaný: 29.10.07 Prihlásený: 27.10.23 Príspevky: 1395 Témy: 30 Bydlisko: Bratislava |
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 |
|
Registrovaný: 04.12.07 Prihlásený: 05.11.15 Príspevky: 347 Témy: 51 Bydlisko: Internet | Napísal autor témy pa3ck: 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 ?
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 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.
|
|
Registrovaný: 04.12.07 Prihlásený: 05.11.15 Príspevky: 347 Témy: 51 Bydlisko: Internet | Napísal autor témy pa3ck: 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;
|
|
Registrovaný: 04.04.07 Prihlásený: 27.06.21 Príspevky: 532 Témy: 35 Bydlisko: Bratislava | Napísal djsulo: 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 |
|
| Stránka: 1 z 1
| [ Príspevkov: 15 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Ukladanie dat v opere v Sieťové a internetové programy | 1 | 464 | 30.07.2009 11:35 marzo | | ukladanie dát z hry v PHP, ASP | 14 | 399 | 30.08.2014 19:40 bqoqyq | | Samsung Galaxy Mini ukladanie dát v Smartfóny a tablety | 1 | 696 | 06.10.2012 13:07 Marko125 | | [Java] Konstruktory a ukladanie dat pre jednotlive objekty v Assembler, C, C++, Pascal, Java | 10 | 2061 | 26.03.2018 0:40 Miso122 | | c++ sqlite alebo xml pre ukladanie velkeho mnozstva dat v Assembler, C, C++, Pascal, Java | 5 | 433 | 09.07.2018 8:12 BX | | Kde kupit spracovane sladkovodne ryby? v Jedlo, pitie a varenie | 13 | 1930 | 07.11.2018 6:28 ujo zigo | | Chcem dať môj JS projekt na github, ako tam dať obrázky? v Ostatné | 10 | 1034 | 27.03.2014 21:56 Kamahl | | ukladanie v Operačné systémy Microsoft | 1 | 449 | 29.12.2009 11:22 raf | | Ukladanie nastavení v Ostatné programy | 0 | 338 | 18.12.2010 13:27 mhdsim | | Ukladanie textu v JavaScript, VBScript, Ajax | 4 | 550 | 27.11.2009 20:35 DjLefo | | LG KC550 ukladanie v Mobilné zariadenia | 0 | 659 | 11.03.2009 16:52 uniqat | | zlé ukladanie titulkov v Ostatné programy | 8 | 473 | 23.11.2019 15:10 mimush | | Ukladanie hesiel HELP!!! v Ostatné programy | 3 | 754 | 29.03.2009 11:35 void | | ukladanie do knižníc v Operačné systémy Microsoft | 1 | 335 | 29.11.2009 1:46 mmichalll | | Ukladanie pod seba v PHP, ASP | 5 | 383 | 16.08.2016 18:08 chrono | | gmail - ukladanie obrázkov v Služby a webstránky | 3 | 452 | 31.05.2009 13:38 walther |
| 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
|
|