Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Problem z wysyłaniem informacji do bazy danych
Forum PHP.pl > Forum > Bazy danych
alkesz1718
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)
thek
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.
alkesz1718
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ćquestionmark.gif
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-2024 Invision Power Services, Inc.