Баси мистиката...

4 отговора 107 прегледа
#1

Баси мистиката...

Направих си едно форумче ей тука и всичко си работи като слънце. Докато се появи един топик /*с ид 13 се падна, баси не съм суеверен, ама май ще стана */, който се държи по-различно от другите. По принцип имам брояч колко пъти е четена всяка тема, който се задейства съвсем просто - една променлива се инкрементира при всяко повикване на темата /*или рефреш съответно */. Е, това навсякъде работи, само че при тая тема не?! Някакви идеи???

Ето фрагменти от кода:


$query="select * from topics where topic_id='$the_topic'";
$kresult=mysql_db_query("$DB","$query");
if(empty($topic_id)){
echo "empty topic_id";
}

if($kresult){

while($row=mysql_fetch_array($kresult)){
$seen=$row["seen"];
$seen++;


и тука си ги вкарвам в базичката:

$zaqvka="replace into topics (topic_id, author, title, txt, comments, seen, posted_at) values ('$id', '$author', '$tit', '$content', '$comments', '$seen', '$posted_at')";
$noneed=@mysql_query("$zaqvka");


Не поствам целия код, защото е ужасно грозен, нямах време нито да обособя, каквото мога във функции, нито да прокоментирам. Но тия извадки са достатъчни да се разбере как работи специално тоя аспект. Темата, за която ви казвам в момента е най-отгоре във форумчето. Не се увеличава броя прочитания и тва е


I want to walk into the lights

Отговор
в отговор на voyager #2

Re: Баси мистиката...

Ami i az sam imal podobni anomalii, no s drug ID :>>> ( [линк] )
pak ima vryzka s 13 :_))

Sega na temata:
Sloji kontrolni izvadki, za da sledish vsqka edna promenliva kak se dviji red po red
nai veche sled uvelichavane na broq na zaqvkite ( dali vyobshte vyrti nagore )

Ako vsichko ostanalo vyrvi bez greshka ..... :--)) qvno tuk se e zapynalo neshto.
Oshte, probvai za tozi 13-ti rekord da promenish drugo pole, zashtoto moje vyobshte da ne zapisvash nishto v sql-a !!! Ako mySQL-a ti se e zaql za 13-ti record .... Iztrii go, i go dobavi nanovo i vsichko trqbva da se opravi.

Explore your world
Отговор
в отговор на voyager #3

Re: аз да си кажа :)

Ама що изобщо трабва да го правиш във PHP като една едничка заявка ти стига?

(като оставим грешките ти в PHP-то за друг път)

Стъпка по стъпка:

Ако прафилно те разбирам искаш следното:
Имаш таблица

topics(topic_id, seen, .....)

Искаш да направиш seen++ за всеки ред в, който topic_id='$topic_id'

UPDATE topics SET seen = seen + 1 WHERE topic_id = '$topic_id';

Просто и ясно.
Забележи, че не прехвърляш абосолютно никакви данни между MySQL и PHP

Разбира се можеш след като го изпълниш да провериш:

if (mysql_affected_rows($res) == 0)
{
/* Нещо няма таквиз записи в таблицата и може да искаш да INSERT */
}


Е има и други начини естествено :)

salle.online.bg/sig
Отговор
в отговор на salle #4

Re: аз да си кажа :)

:)
UPDATE topics SET seen = seen + 1 WHERE topic_id = '$topic_id';
zvu4i dosta razumno. :) Oba4e prodyljavam da se 4udq za6to samo na tozi zapis ne raboti

Drum and Java

Отговор
в отговор на salle #5

сработи, 10х

ама все пак защо само на това поле? :)


Отговор