[ 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 | 51
Bydlisko: Internet
NapísalOffline : 09.03.2009 20:43 | spracovane + ukladanie dát do db

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: 4110
Témy: 30 | 30
Bydlisko: Brno
NapísalOffline : 09.03.2009 20:52 | spracovane + ukladanie dát do db

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 | 66
Bydlisko: Nové Zámky
NapísalOffline : 09.03.2009 20:52 | spracovane + ukladanie dát do db

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: 1772
Témy: 35 | 35
Bydlisko: BA - WESTSIDE
NapísalOffline : 09.03.2009 21:04 | spracovane + ukladanie dát do db

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 | 51
Bydlisko: Internet
Napísal autor témyOffline : 09.03.2009 21:07 | spracovane + ukladanie dát do db

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 | 66
Bydlisko: Nové Zámky
NapísalOffline : 09.03.2009 21:53 | spracovane + ukladanie dát do db

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 | 51
Bydlisko: Internet
Napísal autor témyOffline : 09.03.2009 22:14 | spracovane + ukladanie dát do db

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: 4110
Témy: 30 | 30
Bydlisko: Brno
NapísalOffline : 10.03.2009 14:05 | spracovane + ukladanie dát do db

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 | 51
Bydlisko: Internet
Napísal autor témyOffline : 10.03.2009 15:15 | spracovane + ukladanie dát do db

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ý: 20.11.17
Príspevky: 531
Témy: 34 | 34
Bydlisko: Bratislava
NapísalOffline : 10.03.2009 15:20 | spracovane + ukladanie dát do db

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ý: 12.06.17
Príspevky: 1408
Témy: 28 | 28
Bydlisko: Bratislava
Vek: 36
NapísalOffline : 10.03.2009 15:33 | spracovane + ukladanie dát do db

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 10 (64bit) CPU: INTEL Core i5-4440 GPU: ASUS ATI R9280X RAM: Kingston 8GB DDR3 1600MHz MB: MSI B85-G43 Gaming HDD: Seagate 1TB HDD Barracuda SSD: SAMSUNG 120GB HDD 840 EVO CASE: COOLERMASTER N400
Mobil: OS: Android 4.4.2 Model: LG G2 D802 16GB
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 | 51
Bydlisko: Internet
Napísal autor témyOffline : 10.03.2009 17:07 | spracovane + ukladanie dát do db

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: 4110
Témy: 30 | 30
Bydlisko: Brno
NapísalOffline : 10.03.2009 17:55 | spracovane + ukladanie dát do db

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 | 51
Bydlisko: Internet
Napísal autor témyOffline : 10.03.2009 19:03 | spracovane + ukladanie dát do db

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ý: 20.11.17
Príspevky: 531
Témy: 34 | 34
Bydlisko: Bratislava
NapísalOffline : 10.03.2009 21:12 | spracovane + ukladanie dát do db

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
 [ Príspevkov: 15 ] 


spracovane + ukladanie dát do db



Podobné témy

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

ukladanie dát z hry

v PHP, ASP

14

121

30.08.2014 19:40

bqoqyq

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

Ukladanie dat v opere

v Sieťové a internetové programy

1

288

30.07.2009 11:35

marzo

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

Samsung Galaxy Mini ukladanie dát

v Smartfóny a tablety

1

396

06.10.2012 13:07

Marko125

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

416

27.03.2014 21:56

Kamahl

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

ukladanie

v Operačné systémy Microsoft

1

187

29.12.2009 11:22

raf

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

Ukladanie nastavení

v Ostatné programy

0

138

18.12.2010 13:27

mhdsim

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

Ukladanie textu

v JavaScript, VBScript, Ajax

4

385

27.11.2009 20:35

DjLefo

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

ukladanie do knižníc

v Operačné systémy Microsoft

1

156

29.11.2009 1:46

mmichalll

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

gmail - ukladanie obrázkov

v Služby a webstránky

3

293

31.05.2009 13:38

walther

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

Ukladanie pod seba

v PHP, ASP

5

174

16.08.2016 18:08

chrono

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

Rýchle ukladanie obrázkov

v Grafické programy

1

1144

06.12.2009 21:22

erikoo

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

LG KC550 ukladanie

v Mobilné zariadenia

0

479

11.03.2009 16:52

uniqat

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

Ukladanie volitelnych poli

v Databázy

0

194

26.04.2012 23:04

Jojko001

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

Ukladanie hesiel HELP!!!

v Ostatné programy

3

554

29.03.2009 11:35

void

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

ukladanie súboru v IE

v PHP, ASP

10

364

18.07.2008 10:04

p360t

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

Ukladanie formularu do suboru

v Delphi, Visual Basic

2

335

15.04.2010 12:28

coldak



© 2005 - 2017 PCforum, edited by JanoF