Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z sumowaniem?
Forum PHP.pl > Forum > Przedszkole
dziurkacz
Hej,
To mój pierwszy post, nie udało mi się znaleźć rozwiązania w internetach.

Mam taki kod:
  1. mysql_query("UPDATE vn_users SET login_points=0 ") OR die(mysql_error());
  2.  
  3.  
  4. $rq = mysql_query("SELECT * FROM `tasks_complete` WHERE status='Nie'") OR die(mysql_error());
  5.  
  6. $broi = mysql_num_rows($rq);
  7.  
  8. IF ($broi == 0) {
  9.  
  10. }
  11.  
  12. else {
  13.  
  14. $query = mysql_query("SELECT * FROM tasks_complete WHERE status='Nie'") OR die(mysql_error());
  15.  
  16.  
  17. while($row = mysql_fetch_array($query))
  18. {
  19.  
  20. $id=$row['id'];
  21. $idt=$row['id_t'];
  22.  
  23. $q2=mysql_query("SELECT * FROM tasks where id='{$idt}' ")OR die(mysql_error());
  24. $q=mysql_fetch_array($q2);
  25.  
  26.  
  27. $points=$q['points'];
  28.  
  29. $user_id=$row['id_u'];
  30. $q3=mysql_query("SELECT * FROM vn_users where id={$user_id} ")OR die(mysql_error());
  31. $row3= mysql_fetch_array($q3);
  32. echo
  33. $uid=$row3['id'];
  34.  
  35. IF($row3['rank']>0)
  36. {
  37. $points=($points)*1.5;
  38. $points=(int) $points;
  39. }
  40.  
  41. mysql_query("UPDATE vn_users SET points=points+{$points} WHERE id = {$user_id} ") OR die(mysql_error());
  42. mysql_query("UPDATE tasks_complete SET status='Tak' WHERE id={$id} ") OR die(mysql_error());
  43.  
  44. }
  45. echo "xx";


Po odpaleniu go z cronjoba wywala error You have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near 'WHERE id='90''
at line 1

Id 90 to pierwsza linia w tabelce, ktora ma status NIE.

Udało mi się ustalić, ze problem jest przede wszystkim z linia: mysql_query("UPDATE vn_users SET points=points+{$points} WHERE id = {$user_id} ") or die(mysql_error());

gdy zmodyfikowalem ją na UPDATE vn_users SET points=points+100 WHERE id = {$user_id} ") or die(mysql_error()) to wykonalo sie bez problemu.

Cały wic polega na tym,że zalezy mi, aby wartość $points byla przypisywana adekwatnie co wczesniej jest zdefiniowane w innej tabelce.

Jakies pomysly?

Dzieki za pomoc.
nospor
1)
NIe: $points=$q['points'];
a: $points=(int)$q['points'];

2) Odrozniaj czysty kod sql od kodu php. To co podales to kod php i ma byc w BBOCDE PHP a nie SQL.

3) Przenosze. Problem z mysql nie ma zadnego związku
dziurkacz
Witam,
Dzięki za podpowiedź. PO zastosowaniu tego manewru skryp się wykonuje, jednak jest jakiś problem z zaciąganiem wartości dla $points.
Int spowodowało to, że przechodzi 0, bez tego się wywalało.

Natomiast zamiar był taki, żeby wartość points była zaciągana z tabelki TASKS. Sprawdzając linia po linii wszystko idzie dobrze.
$id=$row['id']; - zaczytuje odpowieni numer ID (ladowane po kolei)
$idt=$row['id_t']; - zaczytuje odpowiednio numer TASK, do którego w tabelce przypisana jest odpowiednia ilosc punktow (np 10)

$q=mysql_query("SELECT * FROM tasks where id='{$idt}'") or die(mysql_error());
$punkt=(int)$q['points']; - tutaj wlasnie spodziewałbym się, że te punkty zaczytane z tabelki zostaną przypisane, jednak wciąż wychodzi 0....


Jakies pomysly? smile.gif
nospor
Cytat
Int spowodowało to, że przechodzi 0
Tak wiem, dlatego kazalem ci dac wlasnie int. Bo bez tego ty tam masz pusty ciag stad blad w zapytaniu byl.
A teraz sprawdz, czemu tam masz pusty ciag.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.