Autor | Zpráva | ||
---|---|---|---|
Duchaplny Profil |
Zdravím,
vytváram jednoduché fórum a narazil som na 2 problémy. Pri každom príspevku užívateľa by som chcel viesť jeho celkový počet príspevkov. Okno s príspevkami, kde chcem viesť ten počet, vyzerá nejak takto (miesto údajov v úvodzovkách sú pravé údaje): "Meno" | "Názov vlákna" Príspevky: "počet" | Dátum registrácie: "dátum" | "TEXT príspevku" Bydlisko: "bydlisko" | id | id_prispevku | id_uzivatela 1 | 1 | 1 2 | 1 | 3 3 | 2 | 1 4 | 3 | 1 Ako by som toto docielil v SQL ? V inej tabuľke ukľadám stĺpec "zobrazenia", ktorý v podstate funguje tak, že ak dám zobraziť tému, tak sa počet zobrazení zvýši o +1: if (isset($temaID)) {mysql_query ("UPDATE forum SET zobrazenia=zobrazenia +'1' WHERE id='$temaID'", $GLOBALS["result"]);} |
||
Someone Profil |
#2 · Zasláno: 24. 3. 2012, 12:43:18
1. $sql = mysql_query("SELECT COUNT(*) FROM prispevky WHERE prispevky.id_uzivatela = '1'"); $celkem = mysql_result($sql,0); echo $celkem; |
||
Duchaplny Profil |
#3 · Zasláno: 24. 3. 2012, 12:47:24
Someone:
1. toto rieši situáciu pre jedného užívateľa, ktorému "natvrdo" zadám ID. Ostatní sa počet svojich príspevkov nedozvedia = zlé riešenie. 2. s COOKIES som ešte nerobil, ale mrknem na to. |
||
Someone Profil |
Duchaplny:
1. Proč by se ostatní nedozvěděli svůj počet příspěvků? edit: Předpokládám, že se jedná o přihlášené uživatele. Stačí při přihlášení uložit Id uživatele do session a pak pozměnit SQL na: $sql = mysql_query("SELECT COUNT(*) FROM prispevky WHERE prispevky.id_uzivatela = '".$_SESSION['id_uzivatele']."'"); |
||
Duchaplny Profil |
Someone:
nn, takto to viem urobiť aj ja, ale to nie je to, čo chcem. Na tomto fóre máš pod menom link na "Profil" a predstav si, že pod ním by každý mal počet príspevkov. Keby som to riešil cez $_SESSION, tak by si mal rovnaký počet príspevkov ako každý užívateľ, pretože by si u všetkých videl ten svoj. Ja práve chcem, aby to zobrazovalo každému užívateľovi jeho vlastný počet bez ohľadu na to, či je online abo offline. Napr.: Someone | [#4] - Zasláno.... Profil | Počet príspevkov: 376 | "TEXT" Duchaplny | [#5] - Zasláno.... Profil | Počet príspevkov: 124 | "TEXT" |
||
Someone Profil |
Jména musíš nějak vypisovat, pokud budeš mít 2 tabulky: 1 s uživateli a jednu s příspěvky tak ty uživatele musíš nějak vypsat:
Tabulka s uživateli ID | USERNAME ------------------- 1 | Someone 2 | Duchaplny Tabulka s příspěvky ID_PRISPEVKU | ID_UZIVATELE ------------------- 1 | 1 2 | 1 3 | 2 while ($vysledek=mysql_fetch_assoc(mysql_query("SELECT * FROM uzivatele"))) { echo "Jmeno: ".$vysledek['username']; $pocet_prispevku = mysql_result(mysql_query("SELECT COUNT(*) FROM prispevky WHERE prispevky.id_uzivatele='".$vysledek['id']."'"),0); echo "Počet příspěvků: ".$pocet_prispevku; } |
||
Duchaplny Profil |
#7 · Zasláno: 24. 3. 2012, 13:17:03
Someone:
j vidíš, toto ma nenapadlo dať to do while. Díky moc. btw: k tej 2. COOKIES sa dajú vypnúť, čo sa mi moc nepozdáva. Nenapadá ťa ešte iné riešenie ? |
||
Someone Profil |
#8 · Zasláno: 24. 3. 2012, 13:20:07
To je stejný problém jako s počítadlem přístupů, nemůžeš to udělat podle IP, protože více lidí může mít stejnou IP, takže přijdeš o nějaké přístupy, zase na druhou stranu někdo může promazávat COOKIES takže tam zase budeš mít nějaké ty přístupy navíc. Počítat přístupy jen registrovaných je taky nevyhovující. Takže to chce najít nějaký ten kompromis. Já osobně používám cookies, ale to už je na tobě co použiješ.
|
||
Duchaplny Profil |
ja som premýšľal nad stĺpcom DATETIME a funkciou
now() , ale je to +ďalší stĺpec a príde mi to trochu zbytočné..
Popremýšľam ešte nad tými COOKIES, príp. to skúsim v testovacej prevádzke. Ide hlavne o to, aby ten počet tak rapídne nestúpal pri držaní jednej klávesy. |
||
Duchaplny Profil |
#10 · Zasláno: 25. 3. 2012, 10:22:21
[#6] Someone
mám tu taký problém s tým scriptom. Skúšal som priamo ten tvoj a spraví mi to, že sa mi stránka snaží načítať obsah, ale nenačíta, akoby bola zacyklená. Neviem, či je to chyba servera alebo chyba v tom scripte, ale nefunguje mi to. Keď som to skúšal iným spôsobom ( while , endwhile ), tak som dosiahol počet príspevkov, ale pre všetkých užívateľov bez nejakého rozumného rozdelenia, takže opäť náraz do steny.
|
||
Bubák Profil |
#11 · Zasláno: 25. 3. 2012, 10:48:35
Pak je tu ještě problém s Chrome, protože si stránky (články) přednačítá.
|
||
Someone Profil |
#12 · Zasláno: 25. 3. 2012, 10:57:04
Duchaplny:S tím jsem měl taky problém a k mému údivu to způsobovalo to, že jsem v mysql_fetch_assoc neměl proměnnou ale rovnou celé query. Zkus to takto:
$uzivatele_sql = mysql_query("SELECT * FROM uzivatele"); while ($vysledek=mysql_fetch_assoc($uzivatele_sql)) { echo "Jmeno: ".$vysledek['username']; $prispevky_sql = mysql_query("SELECT COUNT(*) FROM prispevky WHERE prispevky.id_uzivatele='".$vysledek['id']."'"); $pocet_prispevku = mysql_result($prispevky_sql,0); echo "Počet příspěvků: ".$pocet_prispevku; } |
||
Duchaplny Profil |
Bubák:
Chrome nepoužívam. Idem cez FF, keď všetko dorobím, mrknem to ešte v IE a v Opere. Someone: j toto už funguje bez zacyklenia. Akurát mi to vypíše opäť všetkých vedľa seba. Takže príklad by vyzeral následovne: Someone | [#4] - Zasláno.... Profil | Počet príspevkov: 376, 124 | "TEXT" Duchaplny | [#5] - Zasláno.... Profil | Počet príspevkov: 376, 124 | "TEXT" |
||
Someone Profil |
#14 · Zasláno: 25. 3. 2012, 11:32:41
|
||
Duchaplny Profil |
#15 · Zasláno: 25. 3. 2012, 12:06:49
Someone:
možno to mám len zle rozvrhnuté, bo tam toho mám viac.. ukážeš mi pls celý script ? |
||
Someone Profil |
<?php $uzivatele_sql = mysql_query("SELECT * FROM uzivatele"); echo " <table style='text-align: center; font-family: cursive;'> <tr style='background: #d3d3d3;'> <td>Uživatel</td> <td>Počet příspěvků</td> </tr> "; while ($vysledek=mysql_fetch_assoc($uzivatele_sql)) { echo " <tr> <td>".$vysledek['username']."</td> "; $prispevky_sql = mysql_query("SELECT COUNT(*) FROM prispevky WHERE prispevky.id_uzivatele='".$vysledek['id']."'"); $pocet_prispevku = mysql_result($prispevky_sql,0); echo " <td>".$pocet_prispevku."</td> </tr> "; } echo "</table>"; ?> |
||
Duchaplny Profil |
#17 · Zasláno: 25. 3. 2012, 15:01:11
Someone:
mal som predsa len zle rozvrhnuté.. díky moc, už to funguje.. |
||
Časová prodleva: 12 let
|
0