Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] Problem z wysyłaniem informacji do bazy danych
alkesz1718
post
Post #1





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 8.12.2014
Skąd: Czernina

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


Witam, mam moduł na stronie który pokazuje mi aktywnych użytkowników który działa z wykorzystaniem bazy danych.
Dla aktualnie aktywnych użytkowników moduł wysyła do bazy dane typu lokalizacja, nazwa użytkownika, avatar itd itd. po czym z tej bazy odczytuje i wyświetla mi na stronie (w ukrytym okienku)
Problem mam taki że przy wysyłaniu danych do bazy jest błędna wartość dla avatara a mianowicie:
normalny link avatara użytkownika to: http://moja-strona.pl/uploads/fotos/foto_1.png
link wysyłany do bazy danych: //moja-strona.pl/uploads/fotos/foto_1.p
nie wiem czemu ucina mi końcówkę ng tak samo jest dla innych formatów typu jpg, gif itd zawsze jest 1 literka a reszty brak.

Kod jaki używa moduł do wysyłania informacji do bazy to:
  1. $key = md5($member_id['user_id'].$_IP);
  2.  
  3. $db->query("INSERT INTO `".PREFIX."_online` (`key`, `uid`, `uname`, `time`, `ip`, `user_agent`, `os`, `location`, `proxy`, `foto`, `user_group`) VALUES ('{$key}', '{$member_id['user_id']}', '{$member_id['name']}', '$_TIME', '{$_IP}', '{$user_agent}', '$OS', '$location', '$_PROXY', '{$member_id['foto']}', '{$member_id['user_group']}') ON DUPLICATE KEY UPDATE `key`=VALUES(`key`), `uid`=VALUES(`uid`), `uname`=VALUES(`uname`), `user_agent`=VALUES(`user_agent`), `foto`=VALUES(`foto`), `OS`='$OS', `proxy`='$_PROXY', `time`='$_TIME', `location`='$location', `user_group`=VALUES(`user_group`)");


Na stronie do wyświetlania avatarów w tym module mam
Kod
[b]{foto}[/b]

a w module wygląda to mniej więcej tak:
  1. if ( $this->user_foto ) )
  2. {
  3. $foto = $this->user_foto;
  4. }
  5. else
  6. {
  7. $foto = "templates/".$this->config['skin']."/images/noavatar.png";
  8. }


Moduł również wyświetla ostatnich 20 aktywnych użytkowników (tutaj akurat działa wszystko bez zarzutów) i zapytanie do bazy danych jest takie:
  1. if($online_config['show_twenty_users'] == "yes")
  2. {
  3. $sql = $db->query("SELECT lastdate, user_id, name, logged_ip, foto, user_group FROM ".USERPREFIX."_users ORDER BY lastdate DESC LIMIT 20");
  4. $twenty_users_count = 0;
  5. $twenty_users = null;
  6. while($row = $db->get_row($sql))
  7. {
  8. $online_api->start($row['user_id'], $row['name'], $row['logged_ip'], $row['lastdate'], null, $row['user_group'], null, null, null, $row['foto']);
  9. $twenty_users .= $online_api->getUserInfo();
  10. $twenty_users_count++;
  11. $online_api->clear();
  12. }
  13. }


Szukałem już chyba w każdym pliku tego błędu ale jest tylko 1 plik odpowiedzialny za wysyłanie danych do bazy... Proszę o pomoc i z góry dziękuję

Ps. jeszcze jakby się dało to chciałbym by do tej bazy danych avatar wyświetlał samą nazwę pliku czyli zamiast http://moja-strona.pl/uploads/fotos/foto_1.png to sami foto_1.png (numer w avatarze to id użytkownika)

Ten post edytował alkesz1718 27.03.2017, 16:13:47
Go to the top of the page
+Quote Post
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Na początek sprawdź w jakim momencie to jest uszkadzane. Na poziomie dodawania do bazy? Wcześniej albo później? Może gdzieś jest limit długości znaków? Bez wiedzy w którym momencie to się dzieje nie określisz jaka część skryptu za błąd odpowiada.
Go to the top of the page
+Quote Post
alkesz1718
post
Post #3





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 8.12.2014
Skąd: Czernina

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


Podaję ci cały plik którego używam na stronie do wyświetlenia za pomocą komendy:
{include file='engine/modules/online.php'}

http://wklej.to/adEjD

Wątpię by było to w innym pliku gdyż jedyny najważniejszy plik odpowiadający za wszystkie funkcje to jest taki:
http://wklej.to/oANIC

dodam jeszcze że chciałbym aby skrypt korzystał z systemu gravatar tylko nie wiem jak przerobić kod z innego modułu:
  1. if (count(explode("@", $row['foto'])) == 2) {
  2. $gravatar = 'http://www.gravatar.com/avatar/' . md5(trim($row['foto'])) . '?s=' . intval($user_group[$row['user_group']]['max_foto']);
  3. $foto = "" . $gravatar . "";
  4. } else {
  5.  
  6. if ($row['foto'])
  7. $foto = "" . $config['http_home_url'] . "uploads/fotos/" . $row['foto'] . "";
  8. else
  9. $foto = "" . $config['http_home_url'] . "templates/" . $config['skin'] . "/dleimages/noavatar.png";
  10. }


hmmm w bazie tabelę odpowiedzialną za avatary czyli foto miałem ustawione VARCHAR (40) zmieniłem na VARCHAR(50) i teraz mi pokazuje prawie cały link... a mianowicie:
//moja-storna.pl/uploads/fotos/foto_1.png
na początku brakuje http: da się to jakoś naprawić(IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 15:38