Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z zaktualizowaniem rekordu
Forum PHP.pl > Forum > Bazy danych > MySQL
n33thl
Witam, mam problem ze zaktualizowaniem rekordu. Jest to bardzo dziwne, ponieważ reszta się normalnie aktualizuje.
Kod:
  1. <?php
  2. $d2 = Array('193.218.154.135:27110');
  3. $what_to_display = Array();
  4. $what_to_display["info"] =
  5. "map",
  6. "activeplayers",
  7. "maxplayers",
  8. );
  9. require_once("class_PQ.php");
  10. foreach($d2 as $ip);
  11. unset($data);
  12. $pq_data = PQ::Create(Array());
  13. $data = array_merge($pq_data->query_info($ip), $pq_data->query_rules($ip), $pq_data->query_players($ip));
  14. $ffa = Array('193.218.154.215:27027');
  15. $wyswietlic = Array();
  16. $wyswietlic["info"] =
  17. "map",
  18. "activeplayers",
  19. "maxplayers",
  20. );
  21. require_once("class_PQ.php");
  22. foreach($ffa as $ajpi);
  23. unset($dane);
  24. $pq_data = PQ::Create(Array());
  25. $dane = array_merge($pq_data->query_info($ajpi), $pq_data->query_rules($ajpi), $pq_data->query_players($ajpi));
  26. $db_host = "localhost";
  27. $db_user = "xxx";
  28. $db_pass = "xxx";
  29. $db_base = "xxx";
  30. $db = mysql_connect($db_host, $db_user, $db_pass);
  31. mysql_select_db($db_base, $db);
  32. mysql_query('UPDATE statusy SET active=' .$data['activeplayers'] . ', max=' .$data['maxplayers']. ', map=' .$data['map']. ' WHERE id=1');
  33. mysql_query('UPDATE statusy SET active=' .$dane['activeplayers'] . ', max=' .$dane['maxplayers']. ', map=' .$dane['map']. ' WHERE id=2');
  34. ?>

'active' i 'map' się normalnie aktualizują, a 'map' ani rusz. Tzn. to jest tak, że jak dodam już te aktualizowanie również map='... to się nic nie aktualizuje, a jak mam samo
  1. mysql_query('UPDATE statusy SET active=' .$data['activeplayers'] . ', max=' .$data['maxplayers']. ' WHERE id=1');
  2. mysql_query('UPDATE statusy SET active=' .$dane['activeplayers'] . ', max=' .$dane['maxplayers']. ' WHERE id=2');

to się dobrze aktualizuje.
Struktura tabeli:

te $data['map'] to jest tekst, typu de_dust2 np.
Jak dam echo $data['map'] to się oczywiście prawidłowo wyświetla.
Co tutaj sknociłem? Z góry dziękuję za jakieś rady.
darko
linia 25 - nie wykonuje tego, co chcesz, usuń ten średnik na końcu pętli, dodaj nawiasy klamrowe na odpowiedni blok kodu, który ma zostać wykonany w pętli foreach. Przez ten błąd metoda query_info obiektu $pq_data nie widzi argumentu $ajpi (zmienna $dane nie przechowuje tego, co powinna, więc w miejscu jej użycia (w zapytaniu) nie wiadomo co wykonujesz ?).

Cytat
te $data['map'] to jest tekst, typu de_dust2 np.

A to jak counter-strike, to chętnie pomogę smile.gif
n33thl
Ok, więc mam
  1. <?php
  2. $d2 = Array('193.218.154.135:27110');
  3. $what_to_display = Array();
  4. $what_to_display["info"] =
  5. "map",
  6. "activeplayers",
  7. "maxplayers",
  8. );
  9. require_once("class_PQ.php");
  10. foreach($d2 as $ip)
  11. {
  12. unset($data);
  13. $pq_data = PQ::Create(Array());
  14. $data = array_merge($pq_data->query_info($ip), $pq_data->query_rules($ip), $pq_data->query_players($ip));
  15. }
  16. $ffa = Array('193.218.154.215:27027');
  17. $wyswietlic = Array();
  18. $wyswietlic["info"] =
  19. "map",
  20. "activeplayers",
  21. "maxplayers",
  22. );
  23. require_once("class_PQ.php");
  24. foreach($ffa as $ajpi)
  25. {
  26. unset($dane);
  27. $pq_data = PQ::Create(Array());
  28. $dane = array_merge($pq_data->query_info($ajpi), $pq_data->query_rules($ajpi), $pq_data->query_players($ajpi));
  29. }
  30. $db_host = "localhost";
  31. $db_user = "xxx";
  32. $db_pass = "xxx";
  33. $db_base = "xxx";
  34. $db = mysql_connect($db_host, $db_user, $db_pass);
  35. mysql_select_db($db_base, $db);
  36. mysql_query('UPDATE statusy SET active=' .$data['activeplayers'] . ', max=' .$data['maxplayers']. ', map=' .$data['map']. ' WHERE id=1');
  37. mysql_query('UPDATE statusy SET active=' .$dane['activeplayers'] . ', max=' .$dane['maxplayers']. ', map=' .$dane['map']. ' WHERE id=2');
  38. ?>

Ale to chyba bez różnicy, bo nic nie zmienia. Nadal się nie aktualizuje.
P.S. tak, Counter-Strike smile.gif
darko
Spróbuj mysql_query($zapytanie) or die(mysql_error());
zobaczymy jaki błąd wyskoczy.
ps pętla foreach na tablicy jednoelementowej jest bez sensu.
ps2 daj jeszcze print_r($dane); - zobaczymy co tam siedzi.
n33thl
Cytat
Nieznana kolumna 'de_aztec' w field list

A $dane nic nie wyświetla.
darko
W takim razie przeanalizuj linię 31 zwłaszcza co przyjmują i zwracają metody query_info, query_rules oraz query_players oraz, co im przekazujesz (czy aby na pewno wymagają łańcucha zawierającego adres ip, nie podajesz kodu tych metod, więc nie wiadomo). Linie 39 i 40 przerobiłbym dla pewności na bardziej wg. mnie czytelne, dodając dla pewności pojedyncze cudzysłowy:

  1. mysql_query("UPDATE statusy SET active='".$data['activeplayers'] ."', max='".$data['maxplayers']."', map='".$data['map']."' WHERE id=1");
  2. mysql_query("UPDATE statusy SET active='".$dane['activeplayers'] ."', max='".$dane['maxplayers']."', map='".$dane['map']."' WHERE id=2");

n33thl
Hmmm, darko, bardzo mi pomogłeś, bo działa, wystarczyło dodać te cudzysłowie. Życzę miłej nocy, oczywiście daję "pomógł".
Temat do zamknięcia.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.