Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V  < 1 2  
Reply to this topicStart new topic
> Baza danych - niechciane pomnoże 1 rekordu, Jak wyżej
Nidan23
post 3.05.2019, 16:19:40
Post #21





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 26.04.2019

Ostrzeżenie: (10%)
X----


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.

Ten post edytował Nidan23 3.05.2019, 16:20:26
Go to the top of the page
+Quote Post
viking
post 3.05.2019, 16:28:10
Post #22





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


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ś.


--------------------
Go to the top of the page
+Quote Post
Nidan23
post 3.05.2019, 17:09:13
Post #23





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 26.04.2019

Ostrzeżenie: (10%)
X----


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


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?

Ten post edytował Nidan23 3.05.2019, 16:59:10
Go to the top of the page
+Quote Post
viking
post 3.05.2019, 18:19:06
Post #24





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
Nidan23
post 3.05.2019, 22:11:03
Post #25





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 26.04.2019

Ostrzeżenie: (10%)
X----


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ę).
Go to the top of the page
+Quote Post
viking
post 4.05.2019, 05:43:52
Post #26





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


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. 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.


--------------------
Go to the top of the page
+Quote Post
Nidan23
post 4.05.2019, 10:42:29
Post #27





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 26.04.2019

Ostrzeżenie: (10%)
X----


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...
Go to the top of the page
+Quote Post
viking
post 4.05.2019, 11:59:28
Post #28





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
Nidan23
post 4.05.2019, 14:53:27
Post #29





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 26.04.2019

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
viking
post 4.05.2019, 15:47:45
Post #30





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
Nidan23
post 4.05.2019, 16:31:43
Post #31





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 26.04.2019

Ostrzeżenie: (10%)
X----


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ć
Go to the top of the page
+Quote Post
javafxdev
post 4.05.2019, 20:43:52
Post #32





Grupa: Zarejestrowani
Postów: 95
Pomógł: 7
Dołączył: 27.10.2015

Ostrzeżenie: (0%)
-----


W ostatnim kodzie jaki wkleiłeś masz pętlę w 3. i 113. linijce po memberach czy to na pewno jest dobrze?
Go to the top of the page
+Quote Post
Pyton_000
post 5.05.2019, 08:22:50
Post #33





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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ę.
Go to the top of the page
+Quote Post
nospor
post 6.05.2019, 09:35:35
Post #34





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Nidan23
post 6.05.2019, 18:53:08
Post #35





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 26.04.2019

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
nospor
post 7.05.2019, 09:22:27
Post #36





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
javafxdev
post 7.05.2019, 19:32:56
Post #37





Grupa: Zarejestrowani
Postów: 95
Pomógł: 7
Dołączył: 27.10.2015

Ostrzeżenie: (0%)
-----


cieszę się że mój skrypt Ci działa.
Go to the top of the page
+Quote Post
Nidan23
post 1.06.2019, 18:13:48
Post #38





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 26.04.2019

Ostrzeżenie: (10%)
X----


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 = date("Y-m-d");
  12. $czas = 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 = date("Y-m-d");
  12. $czas = 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).
Go to the top of the page
+Quote Post

2 Stron V  < 1 2
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 22:51