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:
<?php foreach ($members as $member) { // odbieramy dane z formularza $id = $member["clanRank"]; $liga = $member["league"]["name"]; $lvl = $member["expLevel"]; $tag = $member["tag"]; $nick = $member["name"]; $ranga = $member["role"]; $donated = $member["donations"]; $received = $member["donationsReceived"]; $puchary = $member["trophies"]; $datan = http://www.php.net/date("Y-m-d"); $czas = http://www.php.net/date("H:i"); $ratio = $donated - $received; if($id and $liga and $lvl and $tag and $nick and $ranga and $donated and $received and $puchary) { // łączymy się z bazą danych $connection = @http://www.php.net/mysql_connect($servername, $username, $password) or http://www.php.net/die('Brak połączenia z serwerem MySQL'); $db = @http://www.php.net/mysql_select_db($dbname, $connection) or http://www.php.net/die('Nie mogę połączyć się z bazą danych'); if (http://www.php.net/mysql_num_rows(http://www.php.net/mysql_query("SELECT tag FROM klan WHERE tag = '$tag';")) >= 1) { $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'"); } else { $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'"); } } } if($ins) http://www.php.net/echo "Zaktualizowano bazę danych<br>"; else http://www.php.net/echo "Błąd nie udało się zaktualizować<br>"; if($inst) http://www.php.net/echo "Wprowadzono dane"; else http://www.php.net/echo "Błąd nie udało się wprowdzić"; ?>
"...ale za późno na poprawki..." czemu jest za późno na poprawki?
Coś takiego sobie zrób
<?php $conf = http://www.php.net/array( 'dbhost' => "localhost", 'username' => "", 'password' => "", 'dbname' => "test" ); class DB { private $dbhost; private $username; private $password; private $dbname; private $conn; public function __construct($conf) { $this->dbhost = $conf['dbhost']; $this->username = $conf['username']; $this->password = $conf['password']; $this->dbname = $conf['dbname']; } private function init() { $this->conn = new mysqli($this->dbhost, $this->username, $this->password, $this->dbname); if ($this->conn->connect_error) { http://www.php.net/die("Connection failed: " . $this->conn->connect_error); } $this->conn->query("SET NAMES 'utf8'"); } private function close() { $this->conn->close(); } function getClanByTag($tag) { $rows = http://www.php.net/array(); $this->init(); $result = $this->conn->query("SELECT tag FROM klan WHERE tag = '$tag'"); if (false === $result) { http://www.php.net/printf("error: %s\n", mysqli_error($this->conn)); } if ($result->num_rows != 0) { while ($row = $result->fetch_array(MYSQLI_ASSOC)) { $rows[] = $row; } } $this->close(); return $rows; } } $m1['clanRank'] = 'a'; $m1['expLevel'] = '12'; $members = http://www.php.net/array($m1); $db = new DB($conf); foreach ($members as $member) { // odbieramy dane z formularza $id = $member["clanRank"]; $liga = $member["league"]["name"]; $lvl = $member["expLevel"]; $tag = $member["tag"]; $nick = $member["name"]; $ranga = $member["role"]; $donated = $member["donations"]; $received = $member["donationsReceived"]; $puchary = $member["trophies"]; $datan = http://www.php.net/date("Y-m-d"); $czas = http://www.php.net/date("H:i"); $ratio = $donated - $received; if ($id and $liga and $lvl and $tag and $nick and $ranga and $donated and $received and $puchary) { $clanExist = $db->getClanByTag($tag); if ($clanExist) { $ins = $db->updateKlan(); if ($ins) { http://www.php.net/echo "Zaktualizowano bazę danych<br>"; } else { http://www.php.net/echo "Błąd nie udało się zaktualizować<br>"; } } else { $ins = $db->insertKlan(); if ($ins) { http://www.php.net/echo "Zaktualizowano bazę danych<br>"; } else { http://www.php.net/echo "Błąd nie udało się zaktualizować<br>"; } } } } ?>
<?php $conf = http://www.php.net/array( 'dbhost' => "sql.nidan.nazwa.pl", 'username' => "nidan_klan", 'password' => "pSp100321", 'dbname' => "nidan_klan", ); class DB { private $dbhost; private $username; private $password; private $dbname; private $conn; public function __construct($conf) { $this->dbhost = $conf['dbhost']; $this->username = $conf['username']; $this->password = $conf['password']; $this->dbname = $conf['dbname']; } private function init() { $this->conn = new mysqli($this->dbhost, $this->username, $this->password, $this->dbname); if ($this->conn->connect_error) { http://www.php.net/die("Connection failed: " . $this->conn->connect_error); } $this->conn->query("SET NAMES 'utf8'"); } private function close() { $this->conn->close(); } function getClanByTag($tag) { $rows = http://www.php.net/array(); $this->init(); $result = $this->conn->query("SELECT tag FROM klan WHERE tag = '$tag'"); if (false === $result) { http://www.php.net/printf("error: %s\n", mysqli_error($this->conn)); } if ($result->num_rows != 0) { while ($row = $result->fetch_array(MYSQLI_ASSOC)) { $rows[] = $row; } } $this->close(); return $rows; } } $m1['clanRank'] = 'a'; $m1['expLevel'] = '12'; $members = http://www.php.net/array($m1); $db = new DB($conf); foreach ($members as $member) { // odbieramy dane z formularza $id = $member["clanRank"]; $liga = $member["league"]["name"]; $lvl = $member["expLevel"]; $tag = $member["tag"]; $nick = $member["name"]; $ranga = $member["role"]; $donated = $member["donations"]; $received = $member["donationsReceived"]; $puchary = $member["trophies"]; $datan = http://www.php.net/date("Y-m-d"); $czas = http://www.php.net/date("H:i"); $ratio = $donated - $received; if ($id and $liga and $lvl and $tag and $nick and $ranga and $donated and $received and $puchary) { $clanExist = $db->getClanByTag($tag); if ($clanExist) { $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'")); if ($ins) { http://www.php.net/echo "Zaktualizowano bazę danych<br>"; } else { http://www.php.net/echo "Błąd nie udało się zaktualizować<br>"; } } else { $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'")); if ($ins) { http://www.php.net/echo "Zaktualizowano bazę danych<br>"; } else { http://www.php.net/echo "Błąd nie udało się zaktualizować<br>"; } } } } ?>
Spróbuj tak:
<?php http://www.php.net/ini_set('display_errors', 1); http://www.php.net/ini_set('display_startup_errors', 1); http://www.php.net/error_reporting(E_ALL); $conf = http://www.php.net/array( 'dbhost' => "sql.nidan.nazwa.pl", 'username' => "nidan_klan", 'password' => "pSp100321", 'dbname' => "nidan_klan", ); class DB { private $dbhost; private $username; private $password; private $dbname; private $conn; public function __construct($conf) { $this->dbhost = $conf['dbhost']; $this->username = $conf['username']; $this->password = $conf['password']; $this->dbname = $conf['dbname']; } private function init() { $this->conn = new mysqli($this->dbhost, $this->username, $this->password, $this->dbname); if ($this->conn->connect_error) { http://www.php.net/die("Connection failed: " . $this->conn->connect_error); } $this->conn->query("SET NAMES 'utf8'"); } private function close() { $this->conn->close(); } function getClanByTag($tag) { $rows = http://www.php.net/array(); $this->init(); $result = $this->conn->query("SELECT * FROM klan WHERE tag = '$tag'"); if (false === $result) { http://www.php.net/printf("error: %s\n", mysqli_error($this->conn)); } if ($result->num_rows != 0) { while ($row = $result->fetch_array(MYSQLI_ASSOC)) { $rows[] = $row; } } $this->close(); return $rows; } public function insertKlan() { $rows = http://www.php.net/array(); $this->init(); $result = $this->conn->query("INSERT INTO klan"); if (false === $result) { http://www.php.net/printf("error: %s\n", mysqli_error($this->conn)); } if ($result->num_rows != 0) { while ($row = $result->fetch_array(MYSQLI_ASSOC)) { $rows[] = $row; } } $this->close(); return $rows; } public function updateKlan() { $rows = http://www.php.net/array(); $this->init(); $result = $this->conn->query("UPDATE klan"); if (false === $result) { http://www.php.net/printf("error: %s\n", mysqli_error($this->conn)); } if ($result->num_rows != 0) { while ($row = $result->fetch_array(MYSQLI_ASSOC)) { $rows[] = $row; } } $this->close(); return $rows; } } $m1['clanRank'] = 'a'; $m1['expLevel'] = '12'; $m1["league"]["name"] = 'aa'; $m1["expLevel"] = 'aa'; $m1["tag"] = 'aa'; $m1["name"] = 'aa'; $m1["role"] = 'aa'; $m1["donations"] = 'aa'; $m1["donationsReceived"] = 'aa'; $m1["trophies"] = 'aa'; $members = http://www.php.net/array($m1); $db = new DB($conf); foreach ($members as $member) { // odbieramy dane z formularza $id = $member["clanRank"]; $liga = $member["league"]["name"]; $lvl = $member["expLevel"]; $tag = $member["tag"]; $nick = $member["name"]; $ranga = $member["role"]; $donated = $member["donations"]; $received = $member["donationsReceived"]; $puchary = $member["trophies"]; $datan = http://www.php.net/date("Y-m-d"); $czas = http://www.php.net/date("H:i"); $ratio = $donated - $received; if ($id and $liga and $lvl and $tag and $nick and $ranga and $donated and $received and $puchary) { $clanExist = $db->getClanByTag($tag); if ($clanExist) { $ins = $db->updateKlan(); if ($ins) { http://www.php.net/echo "Zaktualizowano bazę danych<br>"; } else { http://www.php.net/echo "Błąd nie udało się zaktualizować<br>"; } } else { $ins = $db->insertKlan(); if ($ins) { http://www.php.net/echo "Zaktualizowano bazę danych<br>"; } else { http://www.php.net/echo "Błąd nie udało się zaktualizować<br>"; } } } } ?>
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.
linijki od 105 do 115 możesz wywalić
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...
<?php $clantag = "#28LJOYOLQ"; $clanurl = "https://api.clashofclans.com/v1/clans/" . http://www.php.net/urlencode($clantag); $ch = curl_init($clanurl); $headr = http://www.php.net/array(); $headr[] = "Accept: application/json"; $headr[] = "Authorization: Bearer ".$token; curl_setopt($ch, CURLOPT_HTTPHEADER, $headr); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $res = curl_exec($ch); $data = json_decode($res, true); curl_close($ch); if (http://www.php.net/isset($data["reason"])) { $errormsg = true; } $members = $data["memberList"]; ?> <?php if (http://www.php.net/isset($errormsg)) { http://www.php.net/echo "<p>", "Failed: ", $data["reason"], " : ", http://www.php.net/isset($data["message"]) ? $data["message"] : "", "</p>"; } ?> <?php http://www.php.net/ini_set('display_errors', 1); http://www.php.net/ini_set('display_startup_errors', 1); http://www.php.net/error_reporting(E_ALL); $conf = http://www.php.net/array( 'dbhost' => "sql.nidan.nazwa.pl", 'username' => "nidan_klan", 'password' => "haslo", 'dbname' => "nidan_klan", ); class DB { private $dbhost; private $username; private $password; private $dbname; private $conn; public function __construct($conf) { $this->dbhost = $conf['dbhost']; $this->username = $conf['username']; $this->password = $conf['password']; $this->dbname = $conf['dbname']; } private function init() { $this->conn = new mysqli($this->dbhost, $this->username, $this->password, $this->dbname); if ($this->conn->connect_error) { http://www.php.net/die("Connection failed: " . $this->conn->connect_error); } $this->conn->query("SET NAMES 'utf8'"); } private function close() { $this->conn->close(); } function getClanByTag($tag) { $rows = http://www.php.net/array(); $this->init(); $result = $this->conn->query("SELECT * FROM klan WHERE tag = '$tag'"); if (false === $result) { http://www.php.net/printf("error: %s\n", mysqli_error($this->conn)); } if ($result->num_rows != 0) { while ($row = $result->fetch_array(MYSQLI_ASSOC)) { $rows[] = $row; } } $this->close(); return $rows; } 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'")) { $rows = http://www.php.net/array(); $this->init(); $result = $this->conn->query("INSERT INTO klan"); if (false === $result) { http://www.php.net/printf("error: %s\n", mysqli_error($this->conn)); } if ($result->num_rows != 0) { while ($row = $result->fetch_array(MYSQLI_ASSOC)) { $rows[] = $row; } } $this->close(); return $rows; } 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'")) { $rows = http://www.php.net/array(); $this->init(); $result = $this->conn->query("UPDATE klan"); if (false === $result) { http://www.php.net/printf("error: %s\n", mysqli_error($this->conn)); } if ($result->num_rows != 0) { while ($row = $result->fetch_array(MYSQLI_ASSOC)) { $rows[] = $row; } } $this->close(); return $rows; } } $db = new DB($conf); foreach ($members as $member) { // odbieramy dane z formularza $id = $member["clanRank"]; $liga = $member["league"]["name"]; $lvl = $member["expLevel"]; $tag = $member["tag"]; $nick = $member["name"]; $ranga = $member["role"]; $donated = $member["donations"]; $received = $member["donationsReceived"]; $puchary = $member["trophies"]; $datan = http://www.php.net/date("Y-m-d"); $czas = http://www.php.net/date("H:i"); $ratio = $donated - $received; if ($id and $liga and $lvl and $tag and $nick and $ranga and $donated and $received and $puchary) { $clanExist = $db->getClanByTag($tag); if ($clanExist) { $ins = $db->updateKlan(); if ($ins) { http://www.php.net/echo "Zaktualizowano bazę danych<br>"; } else { http://www.php.net/echo "Błąd nie udało się zaktualizować<br>"; } } else { $ins = $db->insertKlan(); if ($ins) { http://www.php.net/echo "Zaktualizowano bazę danych<br>"; } else { http://www.php.net/echo "Błąd nie udało się zaktualizować<br>"; } } } } ?>
źle wkleiłeś zobacz że w ostatnim moim poście funkcja updateKlan wygląda inaczej...
Tak to powinno wyglądać?
<?php http://www.php.net/ini_set('display_errors', 1); http://www.php.net/ini_set('display_startup_errors', 1); http://www.php.net/error_reporting(E_ALL); $conf = http://www.php.net/array( 'dbhost' => "*******", 'username' => "******", 'password' => "******", 'dbname' => "nidan_klan", ); class DB { private $dbhost; private $username; private $password; private $dbname; private $conn; public function __construct($conf) { $this->dbhost = $conf['dbhost']; $this->username = $conf['username']; $this->password = $conf['password']; $this->dbname = $conf['dbname']; } private function init() { $this->conn = new mysqli($this->dbhost, $this->username, $this->password, $this->dbname); if ($this->conn->connect_error) { http://www.php.net/die("Connection failed: " . $this->conn->connect_error); } $this->conn->query("SET NAMES 'utf8'"); } private function close() { $this->conn->close(); } function getClanByTag($tag) { $rows = http://www.php.net/array(); $this->init(); $result = $this->conn->query("SELECT * FROM klan WHERE tag = '$tag''"); if (false === $result) { http://www.php.net/printf("error: %s\n", mysqli_error($this->conn)); } if ($result->num_rows != 0) { while ($row = $result->fetch_array(MYSQLI_ASSOC)) { $rows[] = $row; } } $this->close(); return $rows; } public function insertKlan() { $rows = http://www.php.net/array(); $this->init(); $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"); if (false === $result) { http://www.php.net/printf("error: %s\n", mysqli_error($this->conn)); } if ($result->num_rows != 0) { while ($row = $result->fetch_array(MYSQLI_ASSOC)) { $rows[] = $row; } } $this->close(); return $rows; } public function updateKlan() { $rows = http://www.php.net/array(); $this->init(); $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"); if (false === $result) { http://www.php.net/printf("error: %s\n", mysqli_error($this->conn)); } if ($result->num_rows != 0) { while ($row = $result->fetch_array(MYSQLI_ASSOC)) { $rows[] = $row; } } $this->close(); return $rows; } } $db = new DB($conf); foreach ($members as $member) { $id = $member["clanRank"]; $liga = $member["league"]["name"]; $lvl = $member["expLevel"]; $tag = $member["tag"]; $nick = $member["name"]; $ranga = $member["role"]; $donated = $member["donations"]; $received = $member["donationsReceived"]; $puchary = $member["trophies"]; $datan = http://www.php.net/date("Y-m-d"); $czas = http://www.php.net/date("H:i"); $ratio = $donated - $received; if ($id and $liga and $lvl and $tag and $nick and $ranga and $donated and $received and $puchary) { $clanExist = $db->getClanByTag($tag); if ($clanExist) { $ins = $db->updateKlan(); if ($ins) { http://www.php.net/echo "Zaktualizowano bazę danych<br>"; } else { http://www.php.net/echo "Błąd nie udało się zaktualizować<br>"; } } else { $ins = $db->insertKlan(); if ($ins) { http://www.php.net/echo "Zaktualizowano bazę danych<br>"; } else { http://www.php.net/echo "Błąd nie udało się zaktualizować<br>"; } } } } ?>
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?
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...
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?
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.
<?php foreach ($members as $member) { // odbieramy dane z formularza $id = $member["clanRank"]; $liga = $member["league"]["name"]; $lvl = $member["expLevel"]; $tag = $member["tag"]; $nick = $member["name"]; $ranga = $member["role"]; $donated = $member["donations"]; $received = $member["donationsReceived"]; $puchary = $member["trophies"]; $datan = http://www.php.net/date("Y-m-d"); $czas = http://www.php.net/date("H:i"); $ratio = $donated - $received; if($id and $liga and $lvl and $tag and $nick and $ranga and $donated and $received and $puchary) { // łączymy się z bazą danych $connection = @http://www.php.net/mysql_connect($servername, $username, $password) or http://www.php.net/die('Brak połączenia z serwerem MySQL'); $db = @http://www.php.net/mysql_select_db($dbname, $connection) or http://www.php.net/die('Nie mogę połączyć się z bazą danych'); $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'"); } } if($ins) http://www.php.net/echo "Zaktualizowano bazę danych<br>"; else http://www.php.net/echo "Błąd nie udało się zaktualizować<br>"; ?>
CREATE TABLE `klan` ( `miejsce` int(11) DEFAULT NULL, `liga` varchar(25) DEFAULT NULL, `poziom` int(11) DEFAULT NULL, `tag` varchar(10) DEFAULT NULL, `nick` varchar(25) DEFAULT NULL, `ranga` varchar(10) DEFAULT NULL, `donated` int(11) DEFAULT NULL, `received` int(11) DEFAULT NULL, `roznica` int(11) DEFAULT NULL, `puchary` int(11) DEFAULT NULL, `aktualizacja` varchar(100) DEFAULT NULL, `data` varchar(100) DEFAULT NULL
spróbuj tak:
bazadanych:
CREATE TABLE `klan` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `miejsce` INT(11) DEFAULT NULL, `liga` VARCHAR(25) DEFAULT NULL, `poziom` INT(11) DEFAULT NULL, `tag` VARCHAR(10) DEFAULT NULL, `nick` VARCHAR(25) DEFAULT NULL, `ranga` VARCHAR(10) DEFAULT NULL, `donated` INT(11) DEFAULT NULL, `received` INT(11) DEFAULT NULL, `roznica` INT(11) DEFAULT NULL, `puchary` INT(11) DEFAULT NULL, `aktualizacja` VARCHAR(100) DEFAULT NULL, `data` VARCHAR(100) DEFAULT NULL );
<?php http://www.php.net/ini_set('display_errors', 1); http://www.php.net/ini_set('display_startup_errors', 1); http://www.php.net/error_reporting(E_ALL); $conf = http://www.php.net/array( 'dbhost' => "localhost", 'username' => "root", 'password' => "", 'dbname' => "test", ); class DB { private $dbhost; private $username; private $password; private $dbname; private $conn; public function __construct($conf) { $this->dbhost = $conf['dbhost']; $this->username = $conf['username']; $this->password = $conf['password']; $this->dbname = $conf['dbname']; } private function init() { $this->conn = new mysqli($this->dbhost, $this->username, $this->password, $this->dbname); if ($this->conn->connect_error) { http://www.php.net/die("Connection failed: " . $this->conn->connect_error); } $this->conn->query("SET NAMES 'utf8'"); } private function close() { $this->conn->close(); } function getClanByTag($tag) { $rows = http://www.php.net/array(); $this->init(); $result = $this->conn->query("SELECT * FROM klan WHERE tag = '$tag'"); if (false === $result) { http://www.php.net/printf("error: %s\n", mysqli_error($this->conn)); } if ($result->num_rows != 0) { while ($row = $result->fetch_array(MYSQLI_ASSOC)) { $rows[] = $row; } } $this->close(); return $rows; } public function insertKlan($miejsce, $liga, $poziom, $tag, $nick, $ranga, $donated, $received, $roznica, $puchary, $aktualizacja, $data) { $this->init(); $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')"; $result = $this->conn->query($query); if (false === $result) { http://www.php.net/printf("error: %s\n", mysqli_error($this->conn)); } $last_insert_id = mysqli_insert_id($this->conn); $this->close(); return $last_insert_id; } public function updateKlan($miejsce, $liga, $poziom, $tag, $nick, $ranga, $donated, $received, $roznica, $puchary, $aktualizacja, $data) { $this->init(); $query = "UPDATE klan set miejsce = '$miejsce' where tag = '$tag'"; $result = $this->conn->query($query); if (false === $result) { http://www.php.net/printf("error: %s\n", mysqli_error($this->conn)); } $this->close(); return true; } } $m1['clanRank'] = 'a'; $m1['expLevel'] = '12'; $m1["league"]["name"] = 'aa'; $m1["expLevel"] = 'aa'; $m1["tag"] = 'aa'; $m1["name"] = 'aa'; $m1["role"] = 'aa'; $m1["donations"] = 'aa'; $m1["donationsReceived"] = 'aa'; $m1["trophies"] = 'aa'; $members = http://www.php.net/array($m1); $db = new DB($conf); foreach ($members as $member) { // odbieramy dane z formularza $id = $member["clanRank"]; $liga = $member["league"]["name"]; $lvl = $member["expLevel"]; $tag = $member["tag"]; $nick = $member["name"]; $ranga = $member["role"]; $donated = $member["donations"]; $received = $member["donationsReceived"]; $puchary = $member["trophies"]; $datan = http://www.php.net/date("Y-m-d"); $czas = http://www.php.net/date("H:i"); $ratio = $donated - $received; if ($id and $liga and $lvl and $tag and $nick and $ranga and $donated and $received and $puchary) { $clanExist = $db->getClanByTag($tag); if ($clanExist) { $ins = $db->updateKlan("34", $liga, $lvl, $tag, $nick, $ranga, $donated, $received, "", $puchary, "", ""); if ($ins) { http://www.php.net/echo "Zaktualizowano bazę danych<br>"; } else { http://www.php.net/echo "Błąd nie udało się zaktualizować<br>"; } } else { $ins = $db->insertKlan("miejsce", $liga, $lvl, $tag, $nick, $ranga, $donated, $received, "", $puchary, "", ""); if ($ins) { http://www.php.net/echo "Zaktualizowano bazę danych<br>"; } else { http://www.php.net/echo "Błąd nie udało się zaktualizować<br>"; } } } } ?>
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...
500 zawiera informacje o błędzie np w logach. Nie ma co strzelać tylko trzeba przeczytać ten błąd.
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.
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.
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 (?)
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ś.
Jakiś pomysł jak to rozwiązać?
<?php foreach ($members as $member) { $id = $member["clanRank"]; $liga = $member["league"]["name"]; $lvl = $member["expLevel"]; $tag = $member["tag"]; $nick = $member["name"]; $ranga = $member["role"]; $donated = $member["donations"]; $received = $member["donationsReceived"]; $puchary = $member["trophies"]; $datan = http://www.php.net/date("Y-m-d"); $czas = http://www.php.net/date("H:i"); $ratio = $donated - $received; } http://www.php.net/ini_set('display_errors', 1); http://www.php.net/ini_set('display_startup_errors', 1); http://www.php.net/error_reporting(E_ALL); $conf = http://www.php.net/array( 'dbhost' => "localhost", 'username' => "root", 'password' => "-----", 'dbname' => "----", ); class DB { private $dbhost; private $username; private $password; private $dbname; private $conn; public function __construct($conf) { $this->dbhost = $conf['dbhost']; $this->username = $conf['username']; $this->password = $conf['password']; $this->dbname = $conf['dbname']; } private function init() { $this->conn = new mysqli($this->dbhost, $this->username, $this->password, $this->dbname); if ($this->conn->connect_error) { http://www.php.net/die("Connection failed: " . $this->conn->connect_error); } $this->conn->query("SET NAMES 'utf8'"); } private function close() { $this->conn->close(); } function getClanByTag($tag) { $rows = http://www.php.net/array(); $this->init(); $result = $this->conn->query("SELECT * FROM mems WHERE tag = '$tag'"); if (false === $result) { http://www.php.net/printf("error: %s\n", mysqli_error($this->conn)); } if ($result->num_rows != 0) { while ($row = $result->fetch_array(MYSQLI_ASSOC)) { $rows[] = $row; } } $this->close(); return $rows; } public function insertKlan($miejsce, $liga, $poziom, $tag, $nick, $ranga, $donated, $received, $roznica, $puchary, $aktualizacja, $data) { $this->init(); $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')"; $result = $this->conn->query($query); if (false === $result) { http://www.php.net/printf("error: %s\n", mysqli_error($this->conn)); } $last_insert_id = mysqli_insert_id($this->conn); $this->close(); return $last_insert_id; } public function updateKlan($miejsce, $liga, $poziom, $tag, $nick, $ranga, $donated, $received, $roznica, $puchary, $aktualizacja, $data) { $this->init(); $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'"; $result = $this->conn->query($query); if (false === $result) { http://www.php.net/printf("error: %s\n", mysqli_error($this->conn)); } $this->close(); return true; } } $db = new DB($conf); foreach ($members as $member) { $id = $member["clanRank"]; $liga = $member["league"]["name"]; $lvl = $member["expLevel"]; $tag = $member["tag"]; $nick = $member["name"]; $ranga = $member["role"]; $donated = $member["donations"]; $received = $member["donationsReceived"]; $puchary = $member["trophies"]; $datan = http://www.php.net/date("Y-m-d"); $czas = http://www.php.net/date("H:i"); $ratio = $donated - $received; if ($id and $liga and $lvl and $tag and $nick and $ranga and $donated and $received and $puchary) { $clanExist = $db->getClanByTag($tag); if ($clanExist) { $ins = $db->updateKlan("34", $id, $liga, $lvl, $tag, $nick, $ranga, $donated, $received, $ratio, $puchary, $czas, $datan); if ($ins) { http://www.php.net/echo "Zaktualizowano bazę danych<br>"; } else { http://www.php.net/echo "Błąd nie udało się zaktualizować<br>"; } } else { $ins = $db->insertKlan($id, $liga, $lvl, $tag, $nick, $ranga, $donated, $received, $ratio, $puchary, $czas, $datan); if ($ins) { http://www.php.net/echo "Wprowadzono dane<br>"; } else { http://www.php.net/echo "Błąd nie udało się zaktualizować<br>"; } } } } ?>
Linia 399 to konkretnie która? Ta z foreach? Ale myślę że komunikaty są jasne. Zmiennych po prostu nie ma.
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ę).
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:
http://www.php.net/var_dump($zmienna);exit;
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...
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.
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.
Już ci powiedziałem co masz zrobić 2 posty wcześniej. Zamiast to zastosować wolales wylać swoje żale.
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ć
W ostatnim kodzie jaki wkleiłeś masz pętlę w 3. i 113. linijce po memberach czy to na pewno jest dobrze?
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ę.
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.
cieszę się że mój skrypt Ci działa.
)
foreach ($members as $member) { $miejsce = $member["clanRank"]; $liga = $member["league"]["name"]; $lvl = $member["expLevel"]; $tag = $member["tag"]; $nick = $member["name"]; $ranga = $member["role"]; $donated = $member["donations"]; $received = $member["donationsReceived"]; $puchary = $member["trophies"]; $datan = http://www.php.net/date("Y-m-d"); $czas = http://www.php.net/date("H:i"); $ratio = $donated - $received; if ($tag and $nick and $ranga and $donated and $received and $ratio and $puchary and $czas and $datan) {
foreach ($members as $member) { $miejsce = $member["clanRank"]; $liga = $member["league"]["name"]; $lvl = $member["expLevel"]; $tag = $member["tag"]; $nick = $member["name"]; $ranga = $member["role"]; $donated = $member["donations"]; $received = $member["donationsReceived"]; $puchary = $member["trophies"]; $datan = http://www.php.net/date("Y-m-d"); $czas = http://www.php.net/date("H:i"); $ratio = $donated - $received; if ($tag) {
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)