Прехвърляне на точки от таблица в таблица.

joorkataa

Registered
Искам да направя долния код да прави следните функции. , Имам 2 таблици users и videos
в първата таблица users имам поле vote_points а в другата таблица videos имам поле points и искам от полето vote_points от таблицата users искам да прехвърлям точки в другото поле points в таблицата videos ..

Проблема в кода долу е че като изпратя точки от таблицата users в таблицата videos се прехвърлят но ми оставят същия брой точки в първата таблица. Примерно users 10 точки прехвърлям 8 на videos и не ми остават 2 точки в users а ми остават пак 10 , a във videos вече има 8.

PHP:
<?      
if(!isset($_SESSION["name"]))
{
print("Не си логнат!");
}
else
{ 
$u = $_SESSION["name"];
$query = mysql_query("SELECT * FROM `users` WHERE name='$u' LIMIT 1;");
$row=mysql_fetch_array($query);
$vote_points = $row[vote_points];
echo "<center>Имаш $vote_points Точки<br><br>";
if($vote_points < 1) { print ("Неможе");}
else {
if(!isset($_POST["submit"]))
{
print("<br><br><form method=\"post\" action=\"\">Добави точки<br><input type=\"text\" name=\"user\" size='15' />");

print("<br /><br />
Колко точки ще дадете:<br /> <input type=\"text\" name=\"dari\" size='15' value='$vote_points' /><br /><br />
<input type=\"submit\" name=\"submit\" value=\"Изпрати\" /></form></center><br>");
}
else
{       
$tochki = htmlspecialchars($_POST["dari"], ENT_QUOTES);
$novi = $vote_points - $tochki;
if($tochki == NULL OR $tochki > $vote_points){ print("Вие неможе да пратите толкова <img src=images/vote_points2.gif width=17 height=17>точки, <br>Може да пратите максимум $vote_points <img src=img/vote_points2.gif width=17 height=17>точки. <br><u><a href=\"\" onClick=\"history.back()\">Назад</u></a>"); }
elseif($novi < 1){ print("Неможе да изпратите толкова точки защото ще останете с баланс по малък от 1 ");}
else {
$sql = "UPDATE `videos` SET `points` = '$novi'";
if(mysql_query($sql) or die(mysql_error()) != "")
{
$query = mysql_query("SELECT * FROM `users` WHERE name='$user' LIMIT 1;");
$row=mysql_fetch_array($query);
$vote_points3=$row[vote_points];
$novi2 = $vote_points3 + $tochki;
$sql2 = "UPDATE `users` SET `vote_points` = '$novi2' WHERE `name` = '$user'";
$q=mysql_query($sql2) or die(mysql_error());
echo "Вие успешно пратихте точките";
}else { print('Опааа...Има Грешка...'); }       
}
}       }       } ?>
 
Изгубих ти логиката на това място:
Код:
mysql_query($sql) or die(mysql_error()) != ""
die не връща стойност...
Малко по-надолу имаш една недефинирана променлива $user...
 
marian каза:
Изгубих ти логиката на това място:
Код:
mysql_query($sql) or die(mysql_error()) != ""
die не връща стойност...
Малко по-надолу имаш една недефинирана променлива $user...

Ами омазал съм целия код ... ако може да ми напишете нещо което съм обяснил по горе ще съм много благодарен защото се мъча вече 6-ти ден .
 
Код:
<?      
if(!isset($_SESSION["name"]))
{
print("Не си логнат!");
}
else
{ 
$u = $_SESSION["name"];
$query = mysql_query("SELECT * FROM `users` WHERE name='$u' LIMIT 1;");
$row=mysql_fetch_array($query);
$vote_points = $row[vote_points];
echo "<center>Имаш $vote_points Точки<br><br>";
if($vote_points < 1) { print ("Неможе");}
else {
if(!isset($_POST["submit"]))
{
print("<br><br><form method=\"post\" action=\"\">Добави точки<br><input type=\"text\" name=\"user\" size='15' />");

print("<br /><br />
Колко точки ще дадете:<br /> <input type=\"text\" name=\"dari\" size='15' value='$vote_points' /><br /><br />
<input type=\"submit\" name=\"submit\" value=\"Изпрати\" /></form></center><br>");
}
else
{       
$tochki = intval($_POST["dari"]);
$novi = $vote_points - $tochki;
if($tochki < 0 || $tochki > $vote_points){ print("Вие неможе да пратите толкова <img src=images/vote_points2.gif width=17 height=17>точки, <br>Може да пратите максимум $vote_points <img src=img/vote_points2.gif width=17 height=17>точки. <br><u><a href=\"\" onClick=\"history.back()\">Назад</u></a>"); }
elseif($novi < 1){ print("Неможе да изпратите толкова точки защото ще останете с баланс по малък от 1 ");}
else {
$sql = "UPDATE `videos` SET `points` = `points`+$tochki";
if(mysql_query($sql))
{
$sql2 = "UPDATE `users` SET `vote_points` = $novi WHERE `name` = '$user'";
$q=mysql_query($sql2) or die(mysql_error());
echo "Вие успешно пратихте точките";
}else { print('Опааа...Има Грешка...'); }       
}
}       }       } ?>
Напрви полетата vote_points и points от тип int, защото ще ти правят проблеми.
Код:
$sql = "UPDATE `videos` SET `points` = `points`+$tochki";
С този ред добавяш на абсолютно всички редове от таблицата $tochki затова си го оправи ако не е така.
Еdit: Според тази тема мисля, че трябва да стане така:
Код:
$sql = "UPDATE `videos` SET `points` = `points`+$tochki WHERE `id` = ".intval($_GET['id']);
 
Проблема си е останал като прехвърля точките.. , тоест от таблицата users ако съм имал 10 точки и съм пратил 8 , в таблицата videos пак са си останали 10 вместо 2.
 
$novi2 = $vote_points3 + $tochki;

Трябва да е минус, не плюс.

Не пиши така имената на променливите.$sql1, $sql2, $sql3 не ползваш по-надолу нито $novi, нито $sql защо пишеш $novi2, $sql2, като не ги ползваш.Хем не ти трябват, хем не се разбира кое къде е, хем ти хаби ресурс, по-добре ги замествай.

$novi = $vote_points - $tochki;

Тва mysql_query($sql) or die(mysql_error()) != "" го смени с mysql_query($sql) само.

Е за това требва да се научиш да си чистиш кода.

Код:
}else { print('Опааа...Има Грешка...'); }       

}

}       }       } ?>
 

Back
Горе