Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ Baza danych - niechciane pomnoże 1 rekordu

Napisany przez: Nidan23 26.04.2019, 23:25:42

Otóż tak, buduję aplikację gromadząca dane o graczach z którymi gram. Jest ona oparta o API udostępnione przez grę. Mam połączenie z bazą, skrypt/funkcja odpowiadająca za wprowadzanie rekordów śmiga doskonale (poza 1 szczegółem). A ta druga aktualizuje. Odwrotnie są napisane w kodzie, ale za późno na poprawki. Jednak gdy po zresetowaniu tabeli odświeżam stronę to wprowadza rekordy, to git, jednak za każdym kolejnym razem rekord o ID 1 jest aktualizowany i mnożony x40, pozostałe rekordy są tylko aktualizowane. Jakieś pomysły?

Poniżej wklejam kod:

  1. <?php
  2. foreach ($members as $member) {
  3.  
  4. // odbieramy dane z formularza
  5. $id = $member["clanRank"];
  6. $liga = $member["league"]["name"];
  7. $lvl = $member["expLevel"];
  8. $tag = $member["tag"];
  9. $nick = $member["name"];
  10. $ranga = $member["role"];
  11. $donated = $member["donations"];
  12. $received = $member["donationsReceived"];
  13. $puchary = $member["trophies"];
  14. $datan = http://www.php.net/date("Y-m-d");
  15. $czas = http://www.php.net/date("H:i");
  16. $ratio = $donated - $received;
  17.  
  18. if($id and $liga and $lvl and $tag and $nick and $ranga and $donated and $received and $puchary) {
  19.  
  20. // łączymy się z bazą danych
  21. $connection = @http://www.php.net/mysql_connect($servername, $username, $password)
  22. or http://www.php.net/die('Brak połączenia z serwerem MySQL');
  23. $db = @http://www.php.net/mysql_select_db($dbname, $connection)
  24. or http://www.php.net/die('Nie mogę połączyć się z bazą danych');
  25.  
  26. if (http://www.php.net/mysql_num_rows(http://www.php.net/mysql_query("SELECT tag FROM klan WHERE tag = '$tag';")) >= 1)
  27. {
  28.  
  29. $ins = @http://www.php.net/mysql_query("UPDATE klan SET miejsce='$id', liga='$liga', poziom='$lvl', tag='$tag', nick='$nick', ranga='$ranga', donated='$donated', received='$received', roznica='$ratio', puchary='$puchary', data='$datan', aktualizacja='$czas'");
  30.  
  31. }
  32. else {
  33.  
  34.  
  35. $inst = @http://www.php.net/mysql_query("INSERT INTO klan SET miejsce='$id', liga='$liga', poziom='$lvl', tag='$tag', nick='$nick', ranga='$ranga', donated='$donated', received='$received', roznica='$ratio', puchary='$puchary', data='$datan', aktualizacja='$czas'");
  36.  
  37. }
  38. }
  39. }
  40. if($ins) http://www.php.net/echo "Zaktualizowano bazę danych<br>";
  41. else http://www.php.net/echo "Błąd nie udało się zaktualizować<br>";
  42. if($inst) http://www.php.net/echo "Wprowadzono dane";
  43. else http://www.php.net/echo "Błąd nie udało się wprowdzić";
  44.  
  45.  
  46.  
  47. ?>

Napisany przez: javafxdev 27.04.2019, 08:18:59

"...ale za późno na poprawki..." czemu jest za późno na poprawki?

Napisany przez: Nidan23 28.04.2019, 12:46:57

Cytat(javafxdev @ 27.04.2019, 09:18:59 ) *
"...ale za późno na poprawki..." czemu jest za późno na poprawki?


Pisałem na telefonie ten post i nie chciało mi się poprawiać treści tematu, bo to czasochłonne, więc napisałem, że jest w odwrotnej kolejności.

Napisany przez: javafxdev 28.04.2019, 22:46:42

Coś takiego sobie zrób

  1. <?php
  2. $conf = http://www.php.net/array(
  3. 'dbhost' => "localhost",
  4. 'username' => "",
  5. 'password' => "",
  6. 'dbname' => "test"
  7. );
  8.  
  9. class DB
  10. {
  11.  
  12. private $dbhost;
  13. private $username;
  14. private $password;
  15. private $dbname;
  16. private $conn;
  17.  
  18. public function __construct($conf)
  19. {
  20. $this->dbhost = $conf['dbhost'];
  21. $this->username = $conf['username'];
  22. $this->password = $conf['password'];
  23. $this->dbname = $conf['dbname'];
  24. }
  25.  
  26. private function init()
  27. {
  28. $this->conn = new mysqli($this->dbhost, $this->username, $this->password, $this->dbname);
  29. if ($this->conn->connect_error) {
  30. http://www.php.net/die("Connection failed: " . $this->conn->connect_error);
  31. }
  32. $this->conn->query("SET NAMES 'utf8'");
  33. }
  34.  
  35. private function close()
  36. {
  37. $this->conn->close();
  38. }
  39.  
  40.  
  41. function getClanByTag($tag)
  42. {
  43. $rows = http://www.php.net/array();
  44. $this->init();
  45. $result = $this->conn->query("SELECT tag FROM klan WHERE tag = '$tag'");
  46.  
  47. if (false === $result) {
  48. http://www.php.net/printf("error: %s\n", mysqli_error($this->conn));
  49. }
  50. if ($result->num_rows != 0) {
  51. while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
  52. $rows[] = $row;
  53. }
  54.  
  55. }
  56. $this->close();
  57. return $rows;
  58. }
  59.  
  60. }
  61.  
  62. $m1['clanRank'] = 'a';
  63. $m1['expLevel'] = '12';
  64. $members = http://www.php.net/array($m1);
  65.  
  66. $db = new DB($conf);
  67.  
  68. foreach ($members as $member) {
  69. // odbieramy dane z formularza
  70. $id = $member["clanRank"];
  71. $liga = $member["league"]["name"];
  72. $lvl = $member["expLevel"];
  73. $tag = $member["tag"];
  74. $nick = $member["name"];
  75. $ranga = $member["role"];
  76. $donated = $member["donations"];
  77. $received = $member["donationsReceived"];
  78. $puchary = $member["trophies"];
  79. $datan = http://www.php.net/date("Y-m-d");
  80. $czas = http://www.php.net/date("H:i");
  81. $ratio = $donated - $received;
  82.  
  83. if ($id and $liga and $lvl and $tag and $nick and $ranga and $donated and $received and $puchary) {
  84.  
  85. $clanExist = $db->getClanByTag($tag);
  86. if ($clanExist) {
  87. $ins = $db->updateKlan();
  88. if ($ins) {
  89. http://www.php.net/echo "Zaktualizowano bazę danych<br>";
  90. } else {
  91. http://www.php.net/echo "Błąd nie udało się zaktualizować<br>";
  92. }
  93. } else {
  94. $ins = $db->insertKlan();
  95. if ($ins) {
  96. http://www.php.net/echo "Zaktualizowano bazę danych<br>";
  97. } else {
  98. http://www.php.net/echo "Błąd nie udało się zaktualizować<br>";
  99. }
  100. }
  101. }
  102. }
  103. ?>

Napisany przez: Nidan23 29.04.2019, 08:31:53

Cytat(javafxdev @ 28.04.2019, 23:46:42 ) *
Coś takiego sobie zrób


Cudownie, dziękuję, jeszcze tylko mi powiedz gdzie mam wkleić dane, które ma aktualizować bądź wprowadzać, bo sql'u i php jestem świeżakiem.

Wkleiłem skrypt uzupełniony jak ten poniżej co wkleje, i strona nie reaguje, ani A, ani B, po prostu nic, a baza pusta
  1. <?php
  2. $conf = http://www.php.net/array(
  3. 'dbhost' => "sql.nidan.nazwa.pl",
  4. 'username' => "nidan_klan",
  5. 'password' => "pSp100321",
  6. 'dbname' => "nidan_klan",
  7. );
  8.  
  9. class DB
  10. {
  11.  
  12. private $dbhost;
  13. private $username;
  14. private $password;
  15. private $dbname;
  16. private $conn;
  17.  
  18. public function __construct($conf)
  19. {
  20. $this->dbhost = $conf['dbhost'];
  21. $this->username = $conf['username'];
  22. $this->password = $conf['password'];
  23. $this->dbname = $conf['dbname'];
  24. }
  25.  
  26. private function init()
  27. {
  28. $this->conn = new mysqli($this->dbhost, $this->username, $this->password, $this->dbname);
  29. if ($this->conn->connect_error) {
  30. http://www.php.net/die("Connection failed: " . $this->conn->connect_error);
  31. }
  32. $this->conn->query("SET NAMES 'utf8'");
  33. }
  34.  
  35. private function close()
  36. {
  37. $this->conn->close();
  38. }
  39.  
  40.  
  41. function getClanByTag($tag)
  42. {
  43. $rows = http://www.php.net/array();
  44. $this->init();
  45. $result = $this->conn->query("SELECT tag FROM klan WHERE tag = '$tag'");
  46.  
  47. if (false === $result) {
  48. http://www.php.net/printf("error: %s\n", mysqli_error($this->conn));
  49. }
  50. if ($result->num_rows != 0) {
  51. while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
  52. $rows[] = $row;
  53. }
  54.  
  55. }
  56. $this->close();
  57. return $rows;
  58. }
  59.  
  60. }
  61.  
  62. $m1['clanRank'] = 'a';
  63. $m1['expLevel'] = '12';
  64. $members = http://www.php.net/array($m1);
  65.  
  66. $db = new DB($conf);
  67.  
  68. foreach ($members as $member) {
  69. // odbieramy dane z formularza
  70. $id = $member["clanRank"];
  71. $liga = $member["league"]["name"];
  72. $lvl = $member["expLevel"];
  73. $tag = $member["tag"];
  74. $nick = $member["name"];
  75. $ranga = $member["role"];
  76. $donated = $member["donations"];
  77. $received = $member["donationsReceived"];
  78. $puchary = $member["trophies"];
  79. $datan = http://www.php.net/date("Y-m-d");
  80. $czas = http://www.php.net/date("H:i");
  81. $ratio = $donated - $received;
  82.  
  83. if ($id and $liga and $lvl and $tag and $nick and $ranga and $donated and $received and $puchary) {
  84.  
  85. $clanExist = $db->getClanByTag($tag);
  86. if ($clanExist) {
  87. $ins = $db->updateKlan(@http://www.php.net/mysql_query("UPDATE klan SET miejsce='$id', liga='$liga', poziom='$lvl', tag='$tag', nick='$nick', ranga='$ranga', donated='$donated', received='$received', roznica='$ratio', puchary='$puchary', data='$datan', aktualizacja='$czas'"));
  88. if ($ins) {
  89. http://www.php.net/echo "Zaktualizowano bazę danych<br>";
  90. } else {
  91. http://www.php.net/echo "Błąd nie udało się zaktualizować<br>";
  92. }
  93. } else {
  94. $ins = $db->insertKlan(@http://www.php.net/mysql_query("INSERT INTO klan SET miejsce='$id', liga='$liga', poziom='$lvl', tag='$tag', nick='$nick', ranga='$ranga', donated='$donated', received='$received', roznica='$ratio', puchary='$puchary', data='$datan', aktualizacja='$czas'"));
  95. if ($ins) {
  96. http://www.php.net/echo "Zaktualizowano bazę danych<br>";
  97. } else {
  98. http://www.php.net/echo "Błąd nie udało się zaktualizować<br>";
  99. }
  100. }
  101. }
  102. }
  103. ?>

Napisany przez: javafxdev 29.04.2019, 19:17:32

Spróbuj tak:

  1. <?php
  2. http://www.php.net/ini_set('display_errors', 1);
  3. http://www.php.net/ini_set('display_startup_errors', 1);
  4. http://www.php.net/error_reporting(E_ALL);
  5.  
  6. $conf = http://www.php.net/array(
  7. 'dbhost' => "sql.nidan.nazwa.pl",
  8. 'username' => "nidan_klan",
  9. 'password' => "pSp100321",
  10. 'dbname' => "nidan_klan",
  11. );
  12.  
  13. class DB
  14. {
  15.  
  16. private $dbhost;
  17. private $username;
  18. private $password;
  19. private $dbname;
  20. private $conn;
  21.  
  22. public function __construct($conf)
  23. {
  24. $this->dbhost = $conf['dbhost'];
  25. $this->username = $conf['username'];
  26. $this->password = $conf['password'];
  27. $this->dbname = $conf['dbname'];
  28. }
  29.  
  30. private function init()
  31. {
  32. $this->conn = new mysqli($this->dbhost, $this->username, $this->password, $this->dbname);
  33. if ($this->conn->connect_error) {
  34. http://www.php.net/die("Connection failed: " . $this->conn->connect_error);
  35. }
  36. $this->conn->query("SET NAMES 'utf8'");
  37. }
  38.  
  39. private function close()
  40. {
  41. $this->conn->close();
  42. }
  43.  
  44.  
  45. function getClanByTag($tag)
  46. {
  47. $rows = http://www.php.net/array();
  48. $this->init();
  49. $result = $this->conn->query("SELECT * FROM klan WHERE tag = '$tag'");
  50.  
  51. if (false === $result) {
  52. http://www.php.net/printf("error: %s\n", mysqli_error($this->conn));
  53. }
  54. if ($result->num_rows != 0) {
  55. while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
  56. $rows[] = $row;
  57. }
  58.  
  59. }
  60. $this->close();
  61. return $rows;
  62. }
  63.  
  64. public function insertKlan()
  65. {
  66. $rows = http://www.php.net/array();
  67. $this->init();
  68. $result = $this->conn->query("INSERT INTO klan");
  69.  
  70. if (false === $result) {
  71. http://www.php.net/printf("error: %s\n", mysqli_error($this->conn));
  72. }
  73. if ($result->num_rows != 0) {
  74. while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
  75. $rows[] = $row;
  76. }
  77.  
  78. }
  79. $this->close();
  80. return $rows;
  81. }
  82.  
  83. public function updateKlan()
  84. {
  85. $rows = http://www.php.net/array();
  86. $this->init();
  87. $result = $this->conn->query("UPDATE klan");
  88.  
  89. if (false === $result) {
  90. http://www.php.net/printf("error: %s\n", mysqli_error($this->conn));
  91. }
  92. if ($result->num_rows != 0) {
  93. while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
  94. $rows[] = $row;
  95. }
  96.  
  97. }
  98. $this->close();
  99. return $rows;
  100. }
  101.  
  102.  
  103. }
  104.  
  105. $m1['clanRank'] = 'a';
  106. $m1['expLevel'] = '12';
  107. $m1["league"]["name"] = 'aa';
  108. $m1["expLevel"] = 'aa';
  109. $m1["tag"] = 'aa';
  110. $m1["name"] = 'aa';
  111. $m1["role"] = 'aa';
  112. $m1["donations"] = 'aa';
  113. $m1["donationsReceived"] = 'aa';
  114. $m1["trophies"] = 'aa';
  115. $members = http://www.php.net/array($m1);
  116.  
  117. $db = new DB($conf);
  118.  
  119. foreach ($members as $member) {
  120. // odbieramy dane z formularza
  121. $id = $member["clanRank"];
  122. $liga = $member["league"]["name"];
  123. $lvl = $member["expLevel"];
  124. $tag = $member["tag"];
  125. $nick = $member["name"];
  126. $ranga = $member["role"];
  127. $donated = $member["donations"];
  128. $received = $member["donationsReceived"];
  129. $puchary = $member["trophies"];
  130. $datan = http://www.php.net/date("Y-m-d");
  131. $czas = http://www.php.net/date("H:i");
  132. $ratio = $donated - $received;
  133.  
  134. if ($id and $liga and $lvl and $tag and $nick and $ranga and $donated and $received and $puchary) {
  135.  
  136. $clanExist = $db->getClanByTag($tag);
  137. if ($clanExist) {
  138. $ins = $db->updateKlan();
  139. if ($ins) {
  140. http://www.php.net/echo "Zaktualizowano bazę danych<br>";
  141. } else {
  142. http://www.php.net/echo "Błąd nie udało się zaktualizować<br>";
  143. }
  144. } else {
  145. $ins = $db->insertKlan();
  146. if ($ins) {
  147. http://www.php.net/echo "Zaktualizowano bazę danych<br>";
  148. } else {
  149. http://www.php.net/echo "Błąd nie udało się zaktualizować<br>";
  150. }
  151. }
  152. }
  153. }
  154. ?>

Napisany przez: Nidan23 29.04.2019, 20:20:53

Okey, tylko jak mówiłem, jestem ułomny i te wszystkie "m1" (zapomniałem wspomnieć), nie może być, bo na początku dokumentu (ten skrypt to końcówka), "members" zostało zdefiniowane jako "members = $data['clanMembers']". I dalej nie wiem gdzie wkleić funkcję sql'a. Dzięki z góry (i już dołu) za pomoc.

Napisany przez: javafxdev 29.04.2019, 20:24:06

linijki od 105 do 115 możesz wywalić

Napisany przez: Nidan23 29.04.2019, 20:45:00

Strona nie odpowiada po wklejeniu tego skrypt - nie może obsłużyć żądania...
Wkleje poniżej wszelkie skrypty i zmienne php jakie wystąpiły w tym kodzie, może to cokolwiek pomoże...

  1. <?php $clantag = "#28LJOYOLQ";
  2.  
  3. $clanurl = "https://api.clashofclans.com/v1/clans/" . http://www.php.net/urlencode($clantag);
  4.  
  5. $ch = curl_init($clanurl);
  6.  
  7. $headr = http://www.php.net/array();
  8. $headr[] = "Accept: application/json";
  9. $headr[] = "Authorization: Bearer ".$token;
  10.  
  11. curl_setopt($ch, CURLOPT_HTTPHEADER, $headr);
  12. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  13. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  14. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  15.  
  16. $res = curl_exec($ch);
  17. $data = json_decode($res, true);
  18. curl_close($ch);
  19.  
  20. if (http://www.php.net/isset($data["reason"])) {
  21. $errormsg = true;
  22. }
  23.  
  24. $members = $data["memberList"];
  25.  
  26. ?>
  27.  
  28.  
  29. <?php
  30. if (http://www.php.net/isset($errormsg)) {
  31. http://www.php.net/echo "<p>", "Failed: ", $data["reason"], " : ", http://www.php.net/isset($data["message"]) ? $data["message"] : "", "</p>";
  32.  
  33. }
  34. ?>
  35.  
  36.  
  37. <?php
  38. http://www.php.net/ini_set('display_errors', 1);
  39.  
  40. http://www.php.net/ini_set('display_startup_errors', 1);
  41.  
  42. http://www.php.net/error_reporting(E_ALL);
  43.  
  44.  
  45.  
  46. $conf = http://www.php.net/array(
  47.  
  48. 'dbhost' => "sql.nidan.nazwa.pl",
  49.  
  50. 'username' => "nidan_klan",
  51.  
  52. 'password' => "haslo",
  53.  
  54. 'dbname' => "nidan_klan",
  55.  
  56. );
  57.  
  58.  
  59.  
  60. class DB
  61.  
  62. {
  63.  
  64.  
  65.  
  66. private $dbhost;
  67.  
  68. private $username;
  69.  
  70. private $password;
  71.  
  72. private $dbname;
  73.  
  74. private $conn;
  75.  
  76.  
  77.  
  78. public function __construct($conf)
  79.  
  80. {
  81.  
  82. $this->dbhost = $conf['dbhost'];
  83.  
  84. $this->username = $conf['username'];
  85.  
  86. $this->password = $conf['password'];
  87.  
  88. $this->dbname = $conf['dbname'];
  89.  
  90. }
  91.  
  92.  
  93.  
  94. private function init()
  95.  
  96. {
  97.  
  98. $this->conn = new mysqli($this->dbhost, $this->username, $this->password, $this->dbname);
  99.  
  100. if ($this->conn->connect_error) {
  101.  
  102. http://www.php.net/die("Connection failed: " . $this->conn->connect_error);
  103.  
  104. }
  105.  
  106. $this->conn->query("SET NAMES 'utf8'");
  107.  
  108. }
  109.  
  110.  
  111.  
  112. private function close()
  113.  
  114. {
  115.  
  116. $this->conn->close();
  117.  
  118. }
  119.  
  120.  
  121.  
  122.  
  123.  
  124. function getClanByTag($tag)
  125.  
  126. {
  127.  
  128. $rows = http://www.php.net/array();
  129.  
  130. $this->init();
  131.  
  132. $result = $this->conn->query("SELECT * FROM klan WHERE tag = '$tag'");
  133.  
  134.  
  135.  
  136. if (false === $result) {
  137.  
  138. http://www.php.net/printf("error: %s\n", mysqli_error($this->conn));
  139.  
  140. }
  141.  
  142. if ($result->num_rows != 0) {
  143.  
  144. while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
  145.  
  146. $rows[] = $row;
  147.  
  148. }
  149.  
  150.  
  151.  
  152. }
  153.  
  154. $this->close();
  155.  
  156. return $rows;
  157.  
  158. }
  159.  
  160.  
  161.  
  162. public function insertKlan(@http://www.php.net/mysql_query("INSERT INTO klan SET miejsce='$id', liga='$liga', poziom='$lvl', tag='$tag', nick='$nick', ranga='$ranga', donated='$donated', received='$received', roznica='$ratio', puchary='$puchary', data='$datan', aktualizacja='$czas'"))
  163.  
  164. {
  165.  
  166. $rows = http://www.php.net/array();
  167.  
  168. $this->init();
  169.  
  170. $result = $this->conn->query("INSERT INTO klan");
  171.  
  172.  
  173.  
  174. if (false === $result) {
  175.  
  176. http://www.php.net/printf("error: %s\n", mysqli_error($this->conn));
  177.  
  178. }
  179.  
  180. if ($result->num_rows != 0) {
  181.  
  182. while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
  183.  
  184. $rows[] = $row;
  185.  
  186. }
  187.  
  188.  
  189.  
  190. }
  191.  
  192. $this->close();
  193.  
  194. return $rows;
  195.  
  196. }
  197.  
  198.  
  199.  
  200. public function updateKlan(@http://www.php.net/mysql_query("UPDATE klan SET miejsce='$id', liga='$liga', poziom='$lvl', tag='$tag', nick='$nick', ranga='$ranga', donated='$donated', received='$received', roznica='$ratio', puchary='$puchary', data='$datan', aktualizacja='$czas'"))
  201.  
  202. {
  203.  
  204. $rows = http://www.php.net/array();
  205.  
  206. $this->init();
  207.  
  208. $result = $this->conn->query("UPDATE klan");
  209.  
  210.  
  211.  
  212. if (false === $result) {
  213.  
  214. http://www.php.net/printf("error: %s\n", mysqli_error($this->conn));
  215.  
  216. }
  217.  
  218. if ($result->num_rows != 0) {
  219.  
  220. while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
  221.  
  222. $rows[] = $row;
  223.  
  224. }
  225.  
  226.  
  227.  
  228. }
  229.  
  230. $this->close();
  231.  
  232. return $rows;
  233.  
  234. }
  235.  
  236.  
  237.  
  238.  
  239.  
  240. }
  241.  
  242.  
  243. $db = new DB($conf);
  244.  
  245.  
  246.  
  247. foreach ($members as $member) {
  248.  
  249. // odbieramy dane z formularza
  250.  
  251. $id = $member["clanRank"];
  252.  
  253. $liga = $member["league"]["name"];
  254.  
  255. $lvl = $member["expLevel"];
  256.  
  257. $tag = $member["tag"];
  258.  
  259. $nick = $member["name"];
  260.  
  261. $ranga = $member["role"];
  262.  
  263. $donated = $member["donations"];
  264.  
  265. $received = $member["donationsReceived"];
  266.  
  267. $puchary = $member["trophies"];
  268.  
  269. $datan = http://www.php.net/date("Y-m-d");
  270.  
  271. $czas = http://www.php.net/date("H:i");
  272.  
  273. $ratio = $donated - $received;
  274.  
  275.  
  276.  
  277. if ($id and $liga and $lvl and $tag and $nick and $ranga and $donated and $received and $puchary) {
  278.  
  279.  
  280.  
  281. $clanExist = $db->getClanByTag($tag);
  282.  
  283. if ($clanExist) {
  284.  
  285. $ins = $db->updateKlan();
  286.  
  287. if ($ins) {
  288.  
  289. http://www.php.net/echo "Zaktualizowano bazę danych<br>";
  290.  
  291. } else {
  292.  
  293. http://www.php.net/echo "Błąd nie udało się zaktualizować<br>";
  294.  
  295. }
  296.  
  297. } else {
  298.  
  299. $ins = $db->insertKlan();
  300.  
  301. if ($ins) {
  302.  
  303. http://www.php.net/echo "Zaktualizowano bazę danych<br>";
  304.  
  305. } else {
  306.  
  307. http://www.php.net/echo "Błąd nie udało się zaktualizować<br>";
  308.  
  309. }
  310.  
  311. }
  312.  
  313. }
  314.  
  315. }
  316.  
  317.  
  318. ?>
  319.  


Jak widać zrobiłem a strona dalej swoje... Dlaczego?questionmark.gif Ugh

Wkleiłem je, bo może wam coś one powiedzą te poprzednie fragmenty, ja wiem, że wszystko co moje działało poprawnie, tylko ten nieszczęsny kod na update bądź insert szedł się kochać. Jeżeli trzeba, to zaraz przywrócę poprzedni kod tej podstrony i dam link, abyście mogli sami zobaczyć, what ever, jestem początkujący, nie wiem czy coś to pomoże.

Napisany przez: javafxdev 29.04.2019, 21:11:11

źle wkleiłeś zobacz że w ostatnim moim poście funkcja updateKlan wygląda inaczej...

Napisany przez: Nidan23 29.04.2019, 22:45:55

Tak to powinno wyglądać?

  1. <?php
  2. http://www.php.net/ini_set('display_errors', 1);
  3.  
  4. http://www.php.net/ini_set('display_startup_errors', 1);
  5.  
  6. http://www.php.net/error_reporting(E_ALL);
  7.  
  8.  
  9.  
  10. $conf = http://www.php.net/array(
  11.  
  12. 'dbhost' => "*******",
  13.  
  14. 'username' => "******",
  15.  
  16. 'password' => "******",
  17.  
  18. 'dbname' => "nidan_klan",
  19.  
  20. );
  21.  
  22.  
  23.  
  24. class DB
  25.  
  26. {
  27.  
  28.  
  29.  
  30. private $dbhost;
  31.  
  32. private $username;
  33.  
  34. private $password;
  35.  
  36. private $dbname;
  37.  
  38. private $conn;
  39.  
  40.  
  41.  
  42. public function __construct($conf)
  43.  
  44. {
  45.  
  46. $this->dbhost = $conf['dbhost'];
  47.  
  48. $this->username = $conf['username'];
  49.  
  50. $this->password = $conf['password'];
  51.  
  52. $this->dbname = $conf['dbname'];
  53.  
  54. }
  55.  
  56.  
  57.  
  58. private function init()
  59.  
  60. {
  61.  
  62. $this->conn = new mysqli($this->dbhost, $this->username, $this->password, $this->dbname);
  63.  
  64. if ($this->conn->connect_error) {
  65.  
  66. http://www.php.net/die("Connection failed: " . $this->conn->connect_error);
  67.  
  68. }
  69.  
  70. $this->conn->query("SET NAMES 'utf8'");
  71.  
  72. }
  73.  
  74.  
  75.  
  76. private function close()
  77.  
  78. {
  79.  
  80. $this->conn->close();
  81.  
  82. }
  83.  
  84.  
  85. function getClanByTag($tag)
  86.  
  87. {
  88.  
  89. $rows = http://www.php.net/array();
  90.  
  91. $this->init();
  92.  
  93. $result = $this->conn->query("SELECT * FROM klan WHERE tag = '$tag''");
  94.  
  95.  
  96.  
  97. if (false === $result) {
  98.  
  99. http://www.php.net/printf("error: %s\n", mysqli_error($this->conn));
  100.  
  101. }
  102.  
  103. if ($result->num_rows != 0) {
  104.  
  105. while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
  106.  
  107. $rows[] = $row;
  108.  
  109. }
  110.  
  111.  
  112.  
  113. }
  114.  
  115. $this->close();
  116.  
  117. return $rows;
  118.  
  119. }
  120.  
  121.  
  122.  
  123. public function insertKlan()
  124.  
  125. {
  126.  
  127. $rows = http://www.php.net/array();
  128.  
  129. $this->init();
  130.  
  131. $result = $this->conn->query("INSERT INTO klan SET miejsce='$id', liga='$liga', poziom='$lvl', tag='$tag', nick='$nick', ranga='$ranga', donated='$donated', received='$received', roznica='$ratio', puchary='$puchary', data='$datan', aktualizacja='$czas");
  132.  
  133.  
  134.  
  135. if (false === $result) {
  136.  
  137. http://www.php.net/printf("error: %s\n", mysqli_error($this->conn));
  138.  
  139. }
  140.  
  141. if ($result->num_rows != 0) {
  142.  
  143. while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
  144.  
  145. $rows[] = $row;
  146.  
  147. }
  148.  
  149.  
  150.  
  151. }
  152.  
  153. $this->close();
  154.  
  155. return $rows;
  156.  
  157. }
  158.  
  159.  
  160.  
  161. public function updateKlan()
  162.  
  163. {
  164.  
  165. $rows = http://www.php.net/array();
  166.  
  167. $this->init();
  168.  
  169. $result = $this->conn->query("UPDATE klan SET miejsce='$id', liga='$liga', poziom='$lvl', tag='$tag', nick='$nick', ranga='$ranga', donated='$donated', received='$received', roznica='$ratio', puchary='$puchary', data='$datan', aktualizacja='$czas");
  170.  
  171.  
  172.  
  173. if (false === $result) {
  174.  
  175. http://www.php.net/printf("error: %s\n", mysqli_error($this->conn));
  176.  
  177. }
  178.  
  179. if ($result->num_rows != 0) {
  180.  
  181. while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
  182.  
  183. $rows[] = $row;
  184.  
  185. }
  186.  
  187.  
  188.  
  189. }
  190.  
  191. $this->close();
  192.  
  193. return $rows;
  194.  
  195. }
  196.  
  197.  
  198.  
  199.  
  200.  
  201. }
  202.  
  203.  
  204.  
  205. $db = new DB($conf);
  206.  
  207.  
  208.  
  209. foreach ($members as $member) {
  210.  
  211. $id = $member["clanRank"];
  212.  
  213. $liga = $member["league"]["name"];
  214.  
  215. $lvl = $member["expLevel"];
  216.  
  217. $tag = $member["tag"];
  218.  
  219. $nick = $member["name"];
  220.  
  221. $ranga = $member["role"];
  222.  
  223. $donated = $member["donations"];
  224.  
  225. $received = $member["donationsReceived"];
  226.  
  227. $puchary = $member["trophies"];
  228.  
  229. $datan = http://www.php.net/date("Y-m-d");
  230.  
  231. $czas = http://www.php.net/date("H:i");
  232.  
  233. $ratio = $donated - $received;
  234.  
  235.  
  236.  
  237. if ($id and $liga and $lvl and $tag and $nick and $ranga and $donated and $received and $puchary) {
  238.  
  239.  
  240.  
  241. $clanExist = $db->getClanByTag($tag);
  242.  
  243. if ($clanExist) {
  244.  
  245. $ins = $db->updateKlan();
  246.  
  247. if ($ins) {
  248.  
  249. http://www.php.net/echo "Zaktualizowano bazę danych<br>";
  250.  
  251. } else {
  252.  
  253. http://www.php.net/echo "Błąd nie udało się zaktualizować<br>";
  254.  
  255. }
  256.  
  257. } else {
  258.  
  259. $ins = $db->insertKlan();
  260.  
  261. if ($ins) {
  262.  
  263. http://www.php.net/echo "Zaktualizowano bazę danych<br>";
  264.  
  265. } else {
  266.  
  267. http://www.php.net/echo "Błąd nie udało się zaktualizować<br>";
  268.  
  269. }
  270.  
  271. }
  272.  
  273. }
  274.  
  275. }
  276.  
  277.  
  278. ?>
  279.  

Napisany przez: nospor 30.04.2019, 08:52:23

Kurcze, chlopie, nie podawaj danych do bazy danych.... Twoj post moderuje. A nastepnym razem sam tego pilnuj.

ps: naprawde kazda linijke kodu musisz oddzielac linia pusta?

Napisany przez: Nidan23 30.04.2019, 09:22:23

Fakt, mogłem więcej danych ukryć, nie tylko hasło, ale mam kilka baz, więc to nie jest problem. Staram się oddzielać jedną linią wolnego, żeby także na telefonie kod był czytelny...

Napisany przez: javafxdev 30.04.2019, 16:56:27

ogólnie to chyba bez sensu zrobić '*****' na hało w ostatnim poście jak w każdym innym nadal są te dane widoczne?

a jaki teraz błąd dostajesz przy wywołaniu, czy nadal pusta strona?

Napisany przez: Nidan23 2.05.2019, 01:47:24

Dostawałem błąd 500, strona nie mogła obsłużyć żądania, więc gdzieś mogłeś zrobić literówkę. Tylko problem jak się okazało nie leży w moim skrypcie. Użyłem funkcji "REPLACE" i generalnie śmiga, ale urywa połowę rekordów, więc przywróciłem ten skrypt, który jest tematem tematu(?) i działał dokładnie tak samo, ale robił rekord o miejscu 2 (1 w bazie) x40 a także urywał większość rekordów. Więc reasumując nie tu leży błąd, tylko może w ich bazie danych czy coś, jednak dla pewności wrzucę tu ten fragment kodu.

  1. <?php
  2. foreach ($members as $member) {
  3.  
  4. // odbieramy dane z formularza
  5. $id = $member["clanRank"];
  6. $liga = $member["league"]["name"];
  7. $lvl = $member["expLevel"];
  8. $tag = $member["tag"];
  9. $nick = $member["name"];
  10. $ranga = $member["role"];
  11. $donated = $member["donations"];
  12. $received = $member["donationsReceived"];
  13. $puchary = $member["trophies"];
  14. $datan = http://www.php.net/date("Y-m-d");
  15. $czas = http://www.php.net/date("H:i");
  16. $ratio = $donated - $received;
  17.  
  18. if($id and $liga and $lvl and $tag and $nick and $ranga and $donated and $received and $puchary) {
  19.  
  20. // łączymy się z bazą danych
  21. $connection = @http://www.php.net/mysql_connect($servername, $username, $password)
  22. or http://www.php.net/die('Brak połączenia z serwerem MySQL');
  23. $db = @http://www.php.net/mysql_select_db($dbname, $connection)
  24. or http://www.php.net/die('Nie mogę połączyć się z bazą danych');
  25.  
  26. $ins = @http://www.php.net/mysql_query("REPLACE klan SET miejsce='$id', liga='$liga', poziom='$lvl', tag='$tag', nick='$nick', ranga='$ranga', donated='$donated', received='$received', roznica='$ratio', puchary='$puchary', data='$datan', aktualizacja='$czas'");
  27.  
  28. }
  29. }
  30. if($ins) http://www.php.net/echo "Zaktualizowano bazę danych<br>";
  31. else http://www.php.net/echo "Błąd nie udało się zaktualizować<br>";
  32.  
  33.  
  34.  
  35. ?>


To jest wszystko. Zmienne których tu używam są zdefiniowane poprawnie (może jednak pętla jest źle zrobiona? Powyżej jak mówiłem masz adres skąd biorę dane. Chociaż tej samej pętli używam do wyświetlenia danych i wszystko jest cacy...), bo wprowadza jakiekolwiek rekordy + wyświetla na stronie wszystko z ich serwerów. Te fragmenty kodu co dałem powyżej się nie zmieniły, tylko ten do SQL'a.


Jakieś pomysły?

EDIT. Jednak nie podmienia rekordów tylko wprowadza nowe.

Dorzucam poniżej schemat bazy, naprawdę już nie mam pojęcia...

  1. CREATE TABLE `klan` (
  2. `miejsce` int(11) DEFAULT NULL,
  3. `liga` varchar(25) DEFAULT NULL,
  4. `poziom` int(11) DEFAULT NULL,
  5. `tag` varchar(10) DEFAULT NULL,
  6. `nick` varchar(25) DEFAULT NULL,
  7. `ranga` varchar(10) DEFAULT NULL,
  8. `donated` int(11) DEFAULT NULL,
  9. `received` int(11) DEFAULT NULL,
  10. `roznica` int(11) DEFAULT NULL,
  11. `puchary` int(11) DEFAULT NULL,
  12. `aktualizacja` varchar(100) DEFAULT NULL,
  13. `data` varchar(100) DEFAULT NULL


Jedyny błąd jaki dostaję po wyświetleniu błędów to to:

"Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /var/www/html/klan.php on line 333"

Ale i tak ten parametr wprowadza

EDIT2. Strona z Twoim skryptem działa, ale nie robi kompletnie nic.

Napisany przez: javafxdev 2.05.2019, 18:40:15

spróbuj tak:

bazadanych:

  1. CREATE TABLE `klan` (
  2. `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  3. `miejsce` INT(11) DEFAULT NULL,
  4. `liga` VARCHAR(25) DEFAULT NULL,
  5. `poziom` INT(11) DEFAULT NULL,
  6. `tag` VARCHAR(10) DEFAULT NULL,
  7. `nick` VARCHAR(25) DEFAULT NULL,
  8. `ranga` VARCHAR(10) DEFAULT NULL,
  9. `donated` INT(11) DEFAULT NULL,
  10. `received` INT(11) DEFAULT NULL,
  11. `roznica` INT(11) DEFAULT NULL,
  12. `puchary` INT(11) DEFAULT NULL,
  13. `aktualizacja` VARCHAR(100) DEFAULT NULL,
  14. `data` VARCHAR(100) DEFAULT NULL
  15. );


Kod php:
  1. <?php
  2. http://www.php.net/ini_set('display_errors', 1);
  3. http://www.php.net/ini_set('display_startup_errors', 1);
  4. http://www.php.net/error_reporting(E_ALL);
  5.  
  6. $conf = http://www.php.net/array(
  7. 'dbhost' => "localhost",
  8. 'username' => "root",
  9. 'password' => "",
  10. 'dbname' => "test",
  11. );
  12.  
  13. class DB
  14. {
  15.  
  16. private $dbhost;
  17. private $username;
  18. private $password;
  19. private $dbname;
  20. private $conn;
  21.  
  22. public function __construct($conf)
  23. {
  24. $this->dbhost = $conf['dbhost'];
  25. $this->username = $conf['username'];
  26. $this->password = $conf['password'];
  27. $this->dbname = $conf['dbname'];
  28. }
  29.  
  30. private function init()
  31. {
  32. $this->conn = new mysqli($this->dbhost, $this->username, $this->password, $this->dbname);
  33. if ($this->conn->connect_error) {
  34. http://www.php.net/die("Connection failed: " . $this->conn->connect_error);
  35. }
  36. $this->conn->query("SET NAMES 'utf8'");
  37. }
  38.  
  39. private function close()
  40. {
  41. $this->conn->close();
  42. }
  43.  
  44.  
  45. function getClanByTag($tag)
  46. {
  47. $rows = http://www.php.net/array();
  48. $this->init();
  49. $result = $this->conn->query("SELECT * FROM klan WHERE tag = '$tag'");
  50.  
  51. if (false === $result) {
  52. http://www.php.net/printf("error: %s\n", mysqli_error($this->conn));
  53. }
  54. if ($result->num_rows != 0) {
  55. while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
  56. $rows[] = $row;
  57. }
  58.  
  59. }
  60. $this->close();
  61. return $rows;
  62. }
  63.  
  64. public function insertKlan($miejsce, $liga, $poziom, $tag, $nick, $ranga, $donated, $received, $roznica, $puchary, $aktualizacja, $data)
  65. {
  66. $this->init();
  67. $query = "INSERT INTO klan (miejsce, liga, poziom, tag, nick , ranga, donated, received, roznica, puchary, aktualizacja, data) values ('$miejsce' ,'$liga' ,'$poziom' ,'$tag' ,'$nick ' ,'$ranga' ,'$donated' ,'$received' ,'$roznica' ,'$puchary' ,'$aktualizacja' ,'$data')";
  68. $result = $this->conn->query($query);
  69.  
  70. if (false === $result) {
  71. http://www.php.net/printf("error: %s\n", mysqli_error($this->conn));
  72. }
  73. $last_insert_id = mysqli_insert_id($this->conn);
  74. $this->close();
  75. return $last_insert_id;
  76. }
  77.  
  78. public function updateKlan($miejsce, $liga, $poziom, $tag, $nick, $ranga, $donated, $received, $roznica, $puchary, $aktualizacja, $data)
  79. {
  80. $this->init();
  81. $query = "UPDATE klan set miejsce = '$miejsce' where tag = '$tag'";
  82. $result = $this->conn->query($query);
  83.  
  84. if (false === $result) {
  85. http://www.php.net/printf("error: %s\n", mysqli_error($this->conn));
  86. }
  87. $this->close();
  88. return true;
  89. }
  90.  
  91.  
  92. }
  93.  
  94. $m1['clanRank'] = 'a';
  95. $m1['expLevel'] = '12';
  96. $m1["league"]["name"] = 'aa';
  97. $m1["expLevel"] = 'aa';
  98. $m1["tag"] = 'aa';
  99. $m1["name"] = 'aa';
  100. $m1["role"] = 'aa';
  101. $m1["donations"] = 'aa';
  102. $m1["donationsReceived"] = 'aa';
  103. $m1["trophies"] = 'aa';
  104. $members = http://www.php.net/array($m1);
  105.  
  106. $db = new DB($conf);
  107.  
  108. foreach ($members as $member) {
  109. // odbieramy dane z formularza
  110. $id = $member["clanRank"];
  111. $liga = $member["league"]["name"];
  112. $lvl = $member["expLevel"];
  113. $tag = $member["tag"];
  114. $nick = $member["name"];
  115. $ranga = $member["role"];
  116. $donated = $member["donations"];
  117. $received = $member["donationsReceived"];
  118. $puchary = $member["trophies"];
  119. $datan = http://www.php.net/date("Y-m-d");
  120. $czas = http://www.php.net/date("H:i");
  121. $ratio = $donated - $received;
  122.  
  123. if ($id and $liga and $lvl and $tag and $nick and $ranga and $donated and $received and $puchary) {
  124.  
  125. $clanExist = $db->getClanByTag($tag);
  126. if ($clanExist) {
  127. $ins = $db->updateKlan("34", $liga, $lvl, $tag, $nick, $ranga, $donated, $received, "", $puchary, "", "");
  128. if ($ins) {
  129. http://www.php.net/echo "Zaktualizowano bazę danych<br>";
  130. } else {
  131. http://www.php.net/echo "Błąd nie udało się zaktualizować<br>";
  132. }
  133. } else {
  134. $ins = $db->insertKlan("miejsce", $liga, $lvl, $tag, $nick, $ranga, $donated, $received, "", $puchary, "", "");
  135. if ($ins) {
  136. http://www.php.net/echo "Zaktualizowano bazę danych<br>";
  137. } else {
  138. http://www.php.net/echo "Błąd nie udało się zaktualizować<br>";
  139. }
  140. }
  141. }
  142. }
  143. ?>


I daj znać czy działa

Napisany przez: Nidan23 3.05.2019, 11:08:37

Dostaję mój ulubiony biały ekran z "HTTP Error 500"...

Coraz bardziej podejrzewam, że to błąd leży po stronie serwera gry aniżeli mojej, bo przetestowałem tyle skryptów i nic...

Napisany przez: viking 3.05.2019, 11:53:43

500 zawiera informacje o błędzie np w logach. Nie ma co strzelać tylko trzeba przeczytać ten błąd.

Napisany przez: Nidan23 3.05.2019, 16:04:34

Dzięki za info, poszukam, ale ten błąd jest tylko z tym skryptem. Z moim śmiga, ale jak pisałem niedawno ucina mi ponad połowę rekordów. Myślisz, że wyjaśnienie też mogę znaleźć w logach?


EDIT. W logach nie ma odpowiedzi na pytanie dlaczego urywa kod, ani mariadblog ani w errorlogu httpd ani access logu.

Cytat(javafxdev @ 2.05.2019, 19:40:15 ) *
spróbuj tak:

I daj znać czy działa



Dostaję taki zwrot:

Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the
date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier.
We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /var/www/html/klan.php on line 406



Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case
you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set
date.timezone to select your timezone. in /var/www/html/klan.php on line 407


Notice: Undefined variable: db in /var/www/html/klan.php on line 412


Fatal error: Call to a member function getClanByTag() on a non-object in /var/www/html/klan.php on line 412


Gdy poprawiłem błąd, skrypt działa, ale nadal wprowadza 22 rekordy z chwili obecnej (zmienia się) 38.

Napisany przez: viking 3.05.2019, 16:09:40

Kluczowe są dwa ostatnie. Strzelam że nawet połączenia z bazą nie masz. Usuń wszystkie @ a jeżeli masz php7 to funkcji mysql_ już nie ma.

Napisany przez: Nidan23 3.05.2019, 16:19:40

Utworzyłem także nową tabelę, na podstawie wzoru, który mi dałeś no i oczywiście pozmieniałem dane, która tabela, ale nadal wprowadza 22 rekordy i to nie pokolei (?)

Cytat(viking @ 3.05.2019, 17:09:40 ) *
Kluczowe są dwa ostatnie. Strzelam że nawet połączenia z bazą nie masz. Usuń wszystkie @ a jeżeli masz php7 to funkcji mysql_ już nie ma.


Dwa ostatnie poprawiłem, miałeś edita, proszę, jestem żółtodziobem, nie totalnym idiotą, mam skrypt, który mówi, czy jest połączenie czy błąd.

A jeżeli jeszcze nie zrozumiałeś, to połaczenie jest i wprowadza dane, ale nie pełne. Zapoznaj się proszę z całym tematem, bo narazie mówisz coś, wiesz co mówisz, ale nie znasz sytuacji. Kolejnym dowodem, że połaczenie jest, oprócz skryptu, jest to, że dane rejestracji wprowadza a logowania pobiera i wysyła...

I te dane są pełne, kompletne i nie ma z niczym problemu.

Napisany przez: viking 3.05.2019, 16:28:10

Ucinanie może być spowodowane zbyt długim ciągiem insertowanym do mniejszego pola. Mysql to po cichu utnie. Czytałem cały wątek ale ciężko się pisze jak ty wrzucasz jakiś kod, kolega wcześniej swój i nie wiadomo co z tym zrobiłeś.

Napisany przez: Nidan23 3.05.2019, 17:09:13

Jakiś pomysł jak to rozwiązać?

Cytat(viking @ 3.05.2019, 17:28:10 ) *
Ucinanie może być spowodowane zbyt długim ciągiem insertowanym do mniejszego pola. Mysql to po cichu utnie. Czytałem cały wątek ale ciężko się pisze jak ty wrzucasz jakiś kod, kolega wcześniej swój i nie wiadomo co z tym zrobiłeś.


A gdyby rozbić to na dwie osobne funkcje? np. 2 razy insert i 2 razy update?

Chociaż generalnie wprowadza wszystkie dane, ale tylko do tych 22 rekordów

Przy takim kodzie:

  1. <?php
  2.  
  3. foreach ($members as $member) {
  4.  
  5. $id = $member["clanRank"];
  6. $liga = $member["league"]["name"];
  7. $lvl = $member["expLevel"];
  8. $tag = $member["tag"];
  9. $nick = $member["name"];
  10. $ranga = $member["role"];
  11. $donated = $member["donations"];
  12. $received = $member["donationsReceived"];
  13. $puchary = $member["trophies"];
  14. $datan = http://www.php.net/date("Y-m-d");
  15. $czas = http://www.php.net/date("H:i");
  16. $ratio = $donated - $received;
  17. }
  18.  
  19. http://www.php.net/ini_set('display_errors', 1);
  20. http://www.php.net/ini_set('display_startup_errors', 1);
  21. http://www.php.net/error_reporting(E_ALL);
  22.  
  23. $conf = http://www.php.net/array(
  24. 'dbhost' => "localhost",
  25. 'username' => "root",
  26. 'password' => "-----",
  27. 'dbname' => "----",
  28. );
  29.  
  30. class DB
  31. {
  32.  
  33. private $dbhost;
  34. private $username;
  35. private $password;
  36. private $dbname;
  37. private $conn;
  38.  
  39. public function __construct($conf)
  40. {
  41. $this->dbhost = $conf['dbhost'];
  42. $this->username = $conf['username'];
  43. $this->password = $conf['password'];
  44. $this->dbname = $conf['dbname'];
  45. }
  46.  
  47. private function init()
  48. {
  49. $this->conn = new mysqli($this->dbhost, $this->username, $this->password, $this->dbname);
  50. if ($this->conn->connect_error) {
  51. http://www.php.net/die("Connection failed: " . $this->conn->connect_error);
  52. }
  53. $this->conn->query("SET NAMES 'utf8'");
  54. }
  55.  
  56. private function close()
  57. {
  58. $this->conn->close();
  59. }
  60.  
  61.  
  62. function getClanByTag($tag)
  63. {
  64. $rows = http://www.php.net/array();
  65. $this->init();
  66. $result = $this->conn->query("SELECT * FROM mems WHERE tag = '$tag'");
  67.  
  68. if (false === $result) {
  69. http://www.php.net/printf("error: %s\n", mysqli_error($this->conn));
  70. }
  71. if ($result->num_rows != 0) {
  72. while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
  73. $rows[] = $row;
  74. }
  75.  
  76. }
  77. $this->close();
  78. return $rows;
  79. }
  80.  
  81. public function insertKlan($miejsce, $liga, $poziom, $tag, $nick, $ranga, $donated, $received, $roznica, $puchary, $aktualizacja, $data)
  82. {
  83. $this->init();
  84. $query = "INSERT INTO mems (miejsce, liga, poziom, tag, nick , ranga, donated, received, roznica, puchary, aktualizacja, data) values ('$miejsce' ,'$liga' ,'$poziom' ,'$tag' ,'$nick ' ,'$ranga' ,'$donated' ,'$received' ,'$roznica' ,'$puchary' ,'$aktualizacja' ,'$data')";
  85. $result = $this->conn->query($query);
  86.  
  87. if (false === $result) {
  88. http://www.php.net/printf("error: %s\n", mysqli_error($this->conn));
  89. }
  90. $last_insert_id = mysqli_insert_id($this->conn);
  91. $this->close();
  92. return $last_insert_id;
  93. }
  94.  
  95. public function updateKlan($miejsce, $liga, $poziom, $tag, $nick, $ranga, $donated, $received, $roznica, $puchary, $aktualizacja, $data)
  96. {
  97. $this->init();
  98. $query = "UPDATE mems set miejsce='$id', liga='$liga', poziom='$lvl', nick='$nick', ranga='$ranga', donated='$donated', received='$received', roznica='$ratio', puchary='$puchary', data='$datan', aktualizacja='$czas' where tag = '$tag'";
  99. $result = $this->conn->query($query);
  100.  
  101. if (false === $result) {
  102. http://www.php.net/printf("error: %s\n", mysqli_error($this->conn));
  103. }
  104. $this->close();
  105. return true;
  106. }
  107.  
  108.  
  109. }
  110.  
  111. $db = new DB($conf);
  112.  
  113. foreach ($members as $member) {
  114.  
  115. $id = $member["clanRank"];
  116. $liga = $member["league"]["name"];
  117. $lvl = $member["expLevel"];
  118. $tag = $member["tag"];
  119. $nick = $member["name"];
  120. $ranga = $member["role"];
  121. $donated = $member["donations"];
  122. $received = $member["donationsReceived"];
  123. $puchary = $member["trophies"];
  124. $datan = http://www.php.net/date("Y-m-d");
  125. $czas = http://www.php.net/date("H:i");
  126. $ratio = $donated - $received;
  127.  
  128. if ($id and $liga and $lvl and $tag and $nick and $ranga and $donated and $received and $puchary) {
  129.  
  130. $clanExist = $db->getClanByTag($tag);
  131. if ($clanExist) {
  132. $ins = $db->updateKlan("34", $id, $liga, $lvl, $tag, $nick, $ranga, $donated, $received, $ratio, $puchary, $czas, $datan);
  133. if ($ins) {
  134. http://www.php.net/echo "Zaktualizowano bazę danych<br>";
  135. } else {
  136. http://www.php.net/echo "Błąd nie udało się zaktualizować<br>";
  137. }
  138. } else {
  139. $ins = $db->insertKlan($id, $liga, $lvl, $tag, $nick, $ranga, $donated, $received, $ratio, $puchary, $czas, $datan);
  140. if ($ins) {
  141. http://www.php.net/echo "Wprowadzono dane<br>";
  142. } else {
  143. http://www.php.net/echo "Błąd nie udało się zaktualizować<br>";
  144. }
  145. }
  146. }
  147. }
  148. ?>


Pokazuje to:

Notice: Undefined variable: id in /var/www/html/klan.php on line 399

Notice: Undefined variable: lvl in /var/www/html/klan.php on line 399

Notice: Undefined variable: ratio in /var/www/html/klan.php on line 399

Notice: Undefined variable: datan in /var/www/html/klan.php on line 399

Notice: Undefined variable: czas in /var/www/html/klan.php on line 399

Jakieś pomysły ponownie?

Napisany przez: viking 3.05.2019, 18:19:06

Linia 399 to konkretnie która? Ta z foreach? Ale myślę że komunikaty są jasne. Zmiennych po prostu nie ma.

Napisany przez: Nidan23 3.05.2019, 22:11:03

Tylko problem jest taki, że zmienna jest i jak widzisz, nawet przed skryptem zdefiniowałem zmienne (bez tego definiowania, też to się wyświetlało) i dalej nic. To jest linia z funkcją wprowadzania danych, albo aktualizacji, któraś z tych, ale to bez znaczenia.

PS. Angielski ogarniam, więc zrozumiałem co tam jest napisane, nie zmienia to jednak faktu, że nie działa, a jest poprawnie zrobione (z tego co ja widzę).

Napisany przez: viking 4.05.2019, 05:43:52

Ja bym mógł cię okłamać czy nawet nieumyślnie wprowadzić w błąd. Ale PHP nie kłamie. Skoro twierdzi że nie ma zmiennych to ich nie ma kropka. Przed całym skryptem pętla jest totalnie bez sensu. I tak zawsze przypisana zostanie ostatnia iteracja. Naucz się w końcu oceniać co zawierają zmienne:

  1. http://www.php.net/var_dump($zmienna);exit;

Wstawiasz to w miejscu gdzie rzekomo coś występuje i idziesz w górę. Tutaj pewnie nawet nie ma tablicy $members.

Napisany przez: Nidan23 4.05.2019, 10:42:29

Dobra, słuchaj koleś, dzięki za "pomoc", ale sobie poradzę...

Twierdzisz, że pewnie nie ma $members, a ja twierdzę, że cię Ci na łeb padło, bo wrzucałem całe php na tej podstronie i jest wyraźnie napisane, a ty przecież się zapoznałeś z całym wątkiem!!!


Yhy, jasne...

Pomiędzy 100 słowami bzdur, które piszesz tylko po to, żeby kogoś dojechać, chociaż wiesz, że wszystko jest ok, bo jak pisałem powyżej, przecież zapoznałeś się z całym wątkiem a tam to napisałem. Znajdzie się 1, może 2 słowa warte uwagi, które cokolwiek wprowadzają do tego wątku...

Napisany przez: viking 4.05.2019, 11:59:28

Nie jestem twoim kolegą a na forum też są pewne zasady i kultura. Także trzymaj język na wodzy. Tak samo jak w innym temacie też nie miałeś podobno żadnych błędów w kodzie a zaraz potem "jakieś tam warningi są ". Pojęcia nie masz o programowaniu a przy okazjj żadnej pokory.

Napisany przez: Nidan23 4.05.2019, 14:53:27

Owszem, nie mam pojęcia o programowaniu, uczę się, bo mam 16 lat dziadku...
Ale potrafię rozmawiać, a ty nawet nie umiesz mnie nakierować na odpowiednie tory jak to rozwiązać, skoro nie chcesz dawać gotowca, a jeśli nie chcesz pomóc to wstrzymaj się od wypowiadania się, bo przyszedłem tu po pomoc, nie użeranie się z kolejnym człowiekiem, to mam na żywo.

Jeżeli nie masz pojęcia jak działa to API to też się wstrzymaj, bo nie pomagasz, skrypt, który dał mi kolega java(bla bla) jest dobry, ale to po stronie API leży błąd, czytałem o tym na ich forum i w moim poście na ich forum nikt nie umie pomóc. Jak wiesz, bo jesteś "profesjonalistą", wszystko ma pewną dopuszczalność błędów, co widać po moim skrypcie z błędami, a działał.

Jeżeli chcesz się mi "pomóc", to zanim coś powiesz, będę wdzięczny za przypomnienie sobie treści kodu, który udostępniłem na poprzedniej stronie.

Napisany przez: viking 4.05.2019, 15:47:45

Już ci powiedziałem co masz zrobić 2 posty wcześniej. Zamiast to zastosować wolales wylać swoje żale.

Napisany przez: Nidan23 4.05.2019, 16:31:43

Kiedy 90% zawartości twoich postów to jeżdżenie po mnie, to naprawdę łatwo przeoczyć coś wartościowego.

Zaraz zastosuje i dam znać

Napisany przez: javafxdev 4.05.2019, 20:43:52

W ostatnim kodzie jaki wkleiłeś masz pętlę w 3. i 113. linijce po memberach czy to na pewno jest dobrze?

Napisany przez: Pyton_000 5.05.2019, 08:22:50

Normalnie jak dzieci..

@Nidan23 trochę spokojniej. Nie rozmawiasz tu z dziećmi, a jednak z bardziej doświadczonymi ludźmi.

Wracając do tematu to strasznie tu się śmietnik zrobił.

Pokaż Aktualną strukturę bazy danych (kod do tworzenia bazy a nie screenshoot z phpMyAdmin)
Pokaż aktualny cały kod (wklejaj takie duże kawałki kodu gdzieś np. na https://bin.devsphp.pl/ i wrzuć link tutaj.)

I bez wymądrzania się tu więcej proszę.

Napisany przez: nospor 6.05.2019, 09:35:35

Cytat(Nidan23 @ 3.05.2019, 17:09:13 ) *
Pokazuje to:

Notice: Undefined variable: id in /var/www/html/klan.php on line 399

Notice: Undefined variable: lvl in /var/www/html/klan.php on line 399

Notice: Undefined variable: ratio in /var/www/html/klan.php on line 399

Notice: Undefined variable: datan in /var/www/html/klan.php on line 399

Notice: Undefined variable: czas in /var/www/html/klan.php on line 399

Jakieś pomysły ponownie?


I po grzyba sie tak rzucac? wyraznie masz napisane ze ich nie ma wiec ich nie ma. Jak nie ogarniasz podstaw php to sie nie wyzywaj na ludziach, ktorzy staraja ci sie pomoc. I jeszcze ten raport na innych.... Moderka leci to moze ochloniesz.

Co do problemu:

co z tego ze tutaj masz to $id, $lvl ....
$db->updateKlan("34", $id, $liga, $lvl, $tag, $nick, $ranga, $donated, $received, $ratio, $puchary, $czas, $datan);

skoro tutaj
public function updateKlan($miejsce, $liga, $poziom, $tag, $nick, $ranga, $donated, $received, $roznica, $puchary, $aktualizacja, $data)
zmieniasz to na $miejsce, $poziom....

ale w kodzie tej funkcji
query = "UPDATE mems set miejsce='$id', liga='$liga', poziom='$lvl', nick='$nick', ranga='$ranga', donated='$donated', received='$received', roznica='$ratio', puchary='$puchary', data='$datan', aktualizacja='$czas' where tag = '$tag'";
nadal odwolujesz sie di $id,$lvl, ... ktore w funkcji juz nie istnieja bo radosnie zmieniles nazwe parametrow.

Tak wiec jeszcze raz: poswiec wiecej sily by sie ogarnac niz szukac winy w innych pomocnych ci osobach...

ps: przenosze na przedszkole

Napisany przez: Nidan23 6.05.2019, 18:53:08

Dobra, słuchajcie, dzięki @java(...) za skrypt, Twój skrypt działa, chętnie go będę stosować itd. , ale też się denerwuje, bo to nie było tematem postu. Tematem było pomnożenie a następnie brak rekordów i o te pytanie mi chodzi, bo skrypt już działa. Czy ktokolwiek umie odpowiedzieć na to pytanie? Skrypt ten sam co przy błędach, że "nie ma" zmiennych.

Napisany przez: nospor 7.05.2019, 09:22:27

Cytat
Tematem było pomnożenie a następnie brak rekordów i

Opisz problem moze jeszcze raz bo generalnie, przynajmniej ja, nie wiem juz o co chodzi

Cytat
bo skrypt już działa. Czy ktokolwiek umie odpowiedzieć na to pytanie? Skrypt ten sam co przy błędach, że "nie ma" zmiennych.

Jak dla mnie mamy tu pewne sprzeczne informacje. To w koncu dziala czy jednak nadal nie dziala i nadal masz problem? No i jesli to jest nadal ten sam skrypt co nie bylo zmiennych, no to logiczne ze nie dziala jak chcesz skoro nie poprawiles bledow. No chyba ze jednak juz poprawiles i skrypt juz nie jest ten sam wiec pokaz kod po poprawkach

Napisany przez: javafxdev 7.05.2019, 19:32:56

cieszę się że mój skrypt Ci działa.

Napisany przez: Nidan23 1.06.2019, 18:13:48

Cytat(nospor @ 7.05.2019, 10:22:27 ) *
Opisz problem moze jeszcze raz bo generalnie, przynajmniej ja, nie wiem juz o co chodzi


Jak dla mnie mamy tu pewne sprzeczne informacje. To w koncu dziala czy jednak nadal nie dziala i nadal masz problem? No i jesli to jest nadal ten sam skrypt co nie bylo zmiennych, no to logiczne ze nie dziala jak chcesz skoro nie poprawiles bledow. No chyba ze jednak juz poprawiles i skrypt juz nie jest ten sam wiec pokaz kod po poprawkach



Problem braku zmiennych rozwiązany, moje niedopatrzenie, były inaczej zdefiniowane zmienne a inaczej były w funkcji zapisane.

Nad problemem ucinania rekordów pracuję i jeśli można to proszę o pomysły, dlaczego tak się może dziać, nie gotowca.

Uważam, że nie wyczerpałem limitu znaków, bo wprowadzając tylko 1 zmienną do bazy, dane cały czas były ucięte.

Czy problem może leżeć w pętli? Że nawet 50 raz może musieć powtórzyć skrypt? Czy coś innego?


Problem został rozwiązany, leżał on w zastosowaniu "if" (
  1. foreach ($members as $member) {
  2. $miejsce = $member["clanRank"];
  3. $liga = $member["league"]["name"];
  4. $lvl = $member["expLevel"];
  5. $tag = $member["tag"];
  6. $nick = $member["name"];
  7. $ranga = $member["role"];
  8. $donated = $member["donations"];
  9. $received = $member["donationsReceived"];
  10. $puchary = $member["trophies"];
  11. $datan = http://www.php.net/date("Y-m-d");
  12. $czas = http://www.php.net/date("H:i");
  13. $ratio = $donated - $received;
  14.  
  15. if ($tag and $nick and $ranga and $donated and $received and $ratio and $puchary and $czas and $datan) {
)

I jeśli zmienna $donated = 0; , bo ktoś nie oddał żadnego wojska to nie wprowadzało go do bazy, więc powinno to wyglądać tak, jak najprościej:

  1. foreach ($members as $member) {
  2. $miejsce = $member["clanRank"];
  3. $liga = $member["league"]["name"];
  4. $lvl = $member["expLevel"];
  5. $tag = $member["tag"];
  6. $nick = $member["name"];
  7. $ranga = $member["role"];
  8. $donated = $member["donations"];
  9. $received = $member["donationsReceived"];
  10. $puchary = $member["trophies"];
  11. $datan = http://www.php.net/date("Y-m-d");
  12. $czas = http://www.php.net/date("H:i");
  13. $ratio = $donated - $received;
  14.  
  15. if ($tag) {



Zostawiam to tutaj ku potomnym, może ktoś będzie mieć podobny problem.


(Tu się zamyka tematy? Jeśli tak, to proszę moderatora o zamknięcie).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)