Autor | Zpráva | ||
---|---|---|---|
dadada Profil * |
#1 · Zasláno: 15. 7. 2011, 10:55:52
Ahoj, mám kod na počet shlédnutí článků.
$edit_hod = MySQL_Query("UPDATE clanky SET count = count + 1 WHERE id = '".$_GET["id"]."' "); když zadám adresu: www.mujweb.cz/index.php?page=clanek&id=3 tak mi to Shlédnutí jede krásně po jednom jenže když zadám adresu: www.mujweb.cz/clanek/3/ tak mi první shlédnutí napíše 1, další shlédnutí už 12 a takhle se tam přičítá jiný čísla |
||
Str4wberry Profil |
#2 · Zasláno: 15. 7. 2011, 11:14:36
Co je v
$_GET["id"] na stránce www.mujweb.cz/clanek/3/ ?
|
||
dadada Profil * |
#3 · Zasláno: 15. 7. 2011, 11:26:30
ID článku (3)
|
||
Jozin Profil |
#4 · Zasláno: 15. 7. 2011, 11:36:57 · Upravil/a: Jozin
dadada:
Str4wberry tím určitě chtěl říct, jestli to víš jistě... zkus si to vypsat. Případně sem připojit obsah .htaccess |
||
dadada Profil * |
#5 · Zasláno: 15. 7. 2011, 11:41:11
$sql = MySQL_Query("SELECT * FROM clanky WHERE id = '".$_GET["id"]."' "); $row = MySQL_Fetch_Array($sql); $edit_hod = MySQL_Query("UPDATE clanky SET count = count + 1 WHERE id = '".$_GET["id"]."' "); ... .. . .htaccess RewriteRule ^clanek/(.*) index.php?strana=clanek&id=$1 |
||
Jozin Profil |
#6 · Zasláno: 15. 7. 2011, 11:43:47
dadada:
A zkoušel sis vypisovat samotné $_GET['id'], aby sis ověřil, že je tam 3? To sem ti psal před chvilkou... Já se domnívám, že tam není 3, ale 3/. Je to jen má domněnka, ale zkus si to vypsat: <?php var_dump($_GET); |
||
dadada Profil * |
#7 · Zasláno: 15. 7. 2011, 11:51:45
Ano, máš pravdu je tam skutečně 3/, dá se toho nějak zbavit toho lomítka?
|
||
Jozin Profil |
#8 · Zasláno: 15. 7. 2011, 11:55:00
dadada:
Jsou dvě možnosti: 1) upravíš htaccess 2) přetypuješ Já se nerad hrabu do htaccess, protože tam vyždycky udělám nějakou chybu, takže pro mě by bylo lepší udělat přetypování: <?php $id = (int) $_GET['id']; s tím, že máš i ošetřený vstup, když ti někdo zadá blbost, tak v proměnné $id bude 0, takže stačí testovat $id jestli není větší než nula, tak přesměrovat/vypsat (na) chybu. |
||
dadada Profil * |
#9 · Zasláno: 15. 7. 2011, 12:02:10
pořád mi to přičítává nesmysly
if (isset($_GET["id"])){ $id = (int) $_GET['id']; $sql = MySQL_Query("SELECT * FROM clanky WHERE id = '$id' "); $row = MySQL_Fetch_Array($sql); $edit_hod = MySQL_Query("UPDATE clanky SET count = count + 1 WHERE id = '$id' "); ... .. . echo"$id"; } v echu už mi to vypisuje pouze 3 |
||
Str4wberry Profil |
#10 · Zasláno: 15. 7. 2011, 17:12:28
Tak asi bude chyba ještě někde jinde.
|
||
dadada Profil * |
#11 · Zasláno: 15. 7. 2011, 17:47:20
No ono, ikdyž udělám:
$edit_num = MySQL_Query("UPDATE clanky SET count = count + 1 WHERE id = '3' "); tak to počítá nesmysly. Teď taky nechápu, když sem si odendal z .htaccess, že se mi bude doplňovat na konci lomítko, že se mi pořád doplňuje RewriteRule ^clanek/(.*) index.php?strana=clanek&id=$1 zadám www.mujweb.cz/clanek/3 a doplní se mi www.mujweb.cz/clanek/3/ |
||
Str4wberry Profil |
#12 · Zasláno: 15. 7. 2011, 18:01:06
Počítá nesmysly. Tím myslíš, že se ve výpisu neobjevují odpovídající čísla, nebo do databáze ukládají neočekávané hodnoty?
|
||
dadada Profil * |
#13 · Zasláno: 15. 7. 2011, 19:40:36
Ukládaj se neočekávaný čísla, při každým reloadu stránky by se mělo k číslu přičíst 1, nyní se přičítá pokaždý jiný číslo
|
||
Marek88 Profil |
#14 · Zasláno: 15. 7. 2011, 20:35:22
dadada:
A nemáš ten dotaz na přičítání v nějakém cyklu? Buď sem dej celý kod nebo zkus dát těsně před dotaz echo "přičítám jedna" nebo třeba: $dotaz = "UPDATE clanky SET count = count + 1 WHERE id = $id"; echo $dotaz."<br>"; $edit_num = MySQL_Query($dotaz); Prostě abys viděl, co se tam opravdu děje... |
||
dadada Profil * |
#15 · Zasláno: 15. 7. 2011, 20:54:50
Marek88:
echo mi vypíše UPDATE videos SET count = count + 1 WHERE id = 3 |
||
okolojdouci Profil * |
#16 · Zasláno: 15. 7. 2011, 21:28:11
Jakého typu je sloupec id? Tipnul bych, že je to nějaký varchar.
|
||
dadada Profil * |
#17 · Zasláno: 15. 7. 2011, 22:07:42
Teďkon to beru z videích, kde taky zaznamenávám shlédnutí.
CREATE TABLE IF NOT EXISTS `videos` ( `id` int(20) NOT NULL auto_increment, `date` text, `nazev` text, `section` text NOT NULL, `url` text NOT NULL, `count` varchar(50) NOT NULL, `author` int(11) NOT NULL default '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0 AUTO_INCREMENT=4 ; |
||
panther Profil |
#18 · Zasláno: 15. 7. 2011, 22:09:32
dadada:
sloupec count je varchar, proč? Má to být int, vkládáš do něj integer.
|
||
dadada Profil * |
#19 · Zasláno: 15. 7. 2011, 22:23:46
ano, správně tam má být int, nic méně vliv nato nemá.
|
||
Str4wberry Profil |
#20 · Zasláno: 16. 7. 2011, 13:09:02
Jestli chceš problém vyřešit, asi budeš muset uvést více kódu z problematické stránky. Co jsi sem poslal se zdá být v pořádku.
|
||
dadada Profil * |
#21 · Zasláno: 16. 7. 2011, 13:49:10
Dobrá, tak etda ještě jednou.
videa.php <?php if (isset($_GET["id"])){ item("Detail videa"); $id = (int) $_GET['id']; $sql = MySQL_Query("SELECT * FROM videos WHERE id = '$id' "); $row = MySQL_Fetch_Array($sql); if (MySQL_Num_Rows($sql)>0){ $edit_num = MySQL_Query("UPDATE videos SET count = count + 1 WHERE id = '$id' "); $sql_section = MySQL_Query("SELECT * FROM sections WHERE id = '".$row["section"]."' "); $row_2 = MySQL_Fetch_Array($sql_section); $sql_user = MySQL_Query("SELECT * FROM users WHERE id = '".$row["author"]."' "); $row3 = MySQL_Fetch_Array($sql_user); echo"......"; echo"<tr><td height=\"20\" width=\"50\"><strong>Zobrazeno:</strong></td><td>".$row["count"]."x</td></tr>"; echo"......"; } else { echo error("Toto video nebylo nalezeno!"); } } ?> .htaccess # nastavení Options -Indexes # verze bez www > s www RewriteEngine On Options +FollowSymlinks RewriteCond %{HTTP_HOST} ^muj-web.com$ RewriteRule (.*) http://www.muj-web.com/$1 [R=301,QSA,L] # doplneni lomitek na konci adresy RewriteCond %{REQUEST_URI} !\.[[:alnum:]]+$ RewriteRule ^(.+[^/])$ /$1/ [R=301] RewriteRule ^detail-videa/(.*) index.php?strana=videa&id=$1 struktura tabulky CREATE TABLE IF NOT EXISTS `videos` ( `id` int(20) NOT NULL auto_increment, `date` text, `nazev` text, `section` text NOT NULL, `url` text NOT NULL, `count` int(11) NOT NULL, `author` int(11) NOT NULL default '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0 AUTO_INCREMENT=4 ; Jakmile zadám http://www.muj-web.com/index.php?strana=videa&id=3 - přičítá se po jednom Jakmile zadám http://www.muj-web.com/detail-videa/3/ - přičítá se mi pokaždý jiný číslo |
||
Radovan789 Profil * |
#22 · Zasláno: 16. 7. 2011, 15:12:49
Co tohle:
RewriteRule ^detail-videa/(.*) index.php?strana=videa&id=$1 Přepsat na: RewriteRule ^detail-videa/(.*)/$ index.php?strana=videa&id=$1 |
||
dadada Profil * |
#23 · Zasláno: 16. 7. 2011, 16:15:58
Radovan789:
Teďkon to pokaždý přičítá po 2 místo po 1 a to ikdyž dám adresu http://www.muj-web.com/index.php?strana=videa&id=3 |
||
Radovan789 Profil * |
#24 · Zasláno: 16. 7. 2011, 16:56:32
Člověk prostě na dálku nezjistí včem je problém, vše co máš dělat ti vysvětlil Jozin a Marek88.
Ten co jsem ti poradil v .htaccess v žádném případě nemůže mít vliv na tuhle adresu: http://www.muj-web.com/index.php?strana=videa&id=3 Je potřeba si udělat v kódu pořádek a kontrolovat si vstupy, výstupy a všechny MySQL příkazy. |
||
pcmanik Profil |
#25 · Zasláno: 16. 7. 2011, 20:48:41
dadada:
Mas ten stlpec dufam typu INT, naviac v dotaze nepouzivaj '$id' ale len $id, ak je to teda typu int. |
||
Lamicz Profil |
#26 · Zasláno: 17. 7. 2011, 11:50:03
dadada:
Nauč se prosímtě SQL JOINy. BTW sázím na "velice kvalitní" RS pro herní klany... |
||
Časová prodleva: 13 let
|
0