Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Parę skryptów do konserwacji
Forum PHP.pl > Forum > Przedszkole
Raven1122
Witam, przez ostatnie parę dni wzięła mnie wielka ochota na napisanie takich skryptów jak:
Wyświetlanie ilości zarejestrowanych użytkowników(Działa),
Wyświetlanie ilości użytkowników online (Działa lecz wymaga konserwacji, objaśnie później),
Wyświetlanie ilości gości na stronie ( Nie działa ),
Wyświetlanie wszystkich miesięcy przed aktualnym ( Nie działa, i nie mam idei w jaki sposób to zrobić ),

Czas na objaśnienia :
Wyświetlanie ilości użytkowników online:
Kod:
  1. <?php
  2. $old = date('H:i:s',time()-3*60);
  3. $now = date('H:i:s',time());
  4. $login = $_SESSION['login'];
  5. mysql_connect('xxx', 'xxx', 'xxx') or die("Nie można sie połączyć");
  6. mysql_select_db(xxx) or die("Baza danych nie istnieje");
  7. if(isset($_SESSION['loged'])){
  8. $sql = "UPDATE xxx SET online = '$now' WHERE login = '$login'";
  9. $query = mysql_query($sql);
  10. }
  11.  
  12. /* Liczymy tych ktorzy zostali zapisani w ciagu ostatnich 3 minut */
  13. $sql = "SELECT * FROM xxx WHERE xxx > '$old'";
  14. $query = mysql_query($sql);
  15.  
  16. /* i wyswietlamy ich liczbe na ekranie */
  17. $user = mysql_num_rows($query);

Jakie problemy tutaj? Jeszcze wczoraj myślałem, że wszystko jest ok, ale dziś rano wchodzę na strone i patrzę 12 na 13 zarejestrowanych jest online, więc już wiedziałem, że coś jest nie tak, ponieważ gdy się zalogowałem nie inkrementowało liczby online. Proszę o pomoc smile.gif

Wyświetlanie ilości użytkowników online:
Kod:
  1.  
  2. else{
  3. $ip = $_SERVER['REMOTE_ADDR'];;
  4. $sql = "SELECT * FROM xxx WHERE ip = '$ip'";
  5. $query = mysql_query($sql);
  6. if(mysql_num_rows($query) == 0){
  7.  
  8. $sql = "INSERT INTO xxx(ip, time)" .
  9. "VALUES($ip, $now)";
  10. }
  11. }
  12.  
  13. //Guest
  14. $query = mysql_query($sql);
  15. $sql = "SELECT COUNT(*) FROM xxx WHERE time > '$old'";
  16. $query = mysql_query($sql);
  17. $row = mysql_fetch_array($query);
  18. $guest = $row['COUNT(*)'];


Do bazy danych nie dodaja sie wogole wyniki ( jest to klauzula else z wczesniejszego, czyli ile uzytkownikow online) i zawsze jest rowne 0 nawet gdy sa goscie

Wyswietlanie miesięcy wszystkich przed aktalnym:
Kod, bynajmniej to co probowalem zrobic:
  1. $month = date(n);
  2. $wyswietlile = $month - 1;
  3. $year = date(Y);
  4. //Ustalanie wyświetlonej nazwy miesiąca
  5. $i = 0;
  6. while($i < $month){
  7. if($month = 1){ echo("Styczeń");}
  8. if($month = 2){ echo("Luty");}
  9. if($month = 3){ echo("Marzec");}
  10. if($month = 4){ echo("Kwieceń");}
  11. if($month = 5){ echo("Maj");}
  12. if($month = 6){ echo("Czerwiec");}
  13. if($month = 7){ echo("Lipiec");}
  14. if($month = 8){ echo("Sierpień");}
  15. if($month = 9){ echo("Wrzesień");}
  16. if($month = 10){ echo("Pażdziernik");}
  17. if($month = 11){ echo("Listopad");}
  18. if($month = 12){ echo("Grudzień");}
  19. }

Nie wiem czy cokolwiek dobrze zrobilem, ale bardzo prosze o pomoc, z gory dziekuje, i daje pomogl za kazda pomoc
nospor
No ale pole z czasem logowania ma być DATE_TIME a nie TIME. Co ci tylko po czasie? Data też ma sie zgadzać, wziawszy sczegolnie pod uwagę fakt, jaki ty warunek dajesz.
Raven1122
Dzieki Nospor, dziala smile.gif teraz pozostale 2, czekam na pomoc
nospor
if($month = 1)
Odróżniaj == od =
Czemu $month porównujesz? Przecież to $i się zmienia.... myśl troche.
No i zapomniałeś o zwiększaniu o jeden $i
Raven1122
  1. <?php
  2. function archiwum(){
  3. $month = date(n);
  4. $wyswietlile = $month - 1;
  5. $year = date(Y);
  6. //Ustalanie wyświetlonej nazwy miesiąca
  7. $i = 0;
  8. while($i < $month){
  9. if($i == 1){ echo("Styczeń");}
  10. if($i == 2){ echo("Luty");}
  11. if($i == 3){ echo("Marzec");}
  12. if($i == 4){ echo("Kwieceń");}
  13. if($i == 5){ echo("Maj");}
  14. if($i == 6){ echo("Czerwiec");}
  15. if($i == 7){ echo("Lipiec");}
  16. if($i == 8){ echo("Sierpień");}
  17. if($i == 9){ echo("Wrzesień");}
  18. if($i == 10){ echo("Pażdziernik");}
  19. if($i == 11){ echo("Listopad");}
  20. if($i == 12){ echo("Grudzień");}
  21. $i++;
  22. }

Cos takiego?
nospor
A działa? To tak.
Nie działa? To nie.
Raven1122
Jak narazie dziala, nie wiadomo jak to bedzie w marcu, jesczze pozostal ten 1 z goscmi smile.gif
nospor
Nie wiesz jak będzie w marcu? Nie wiesz jak będzie we wrześniu? No to masz kurna problem niesamowity....

Cieżko zamiast:
$month = date(n);
dać:
$month = 9;
?
I już bedziesz wiedział jak to dla września będzie wyglądało.
Ja wiem, ja rozumiem, jesteś początkujący. No ale bez przesady.
Raven1122
Zdarzylem rozwiacac to zanim napisales tongue.gif
Teraz jeszcze tylko ten skrypt pokazujacy ile gosci i bede bardzo wdzieczny smile.gif

Pozostal jeszcze ten kod:
  1. else{
  2. $ip = $_SERVER['REMOTE_ADDR'];;
  3. $sql = "SELECT * FROM xxx WHERE ip = '$ip'";
  4. $query = mysql_query($sql);
  5. if(mysql_num_rows($query) == 0){
  6.  
  7. $sql = "INSERT INTO xxx(ip, time)" .
  8. "VALUES($ip, $now)";
  9. }
  10. }
  11.  
  12. //Guest
  13. $query = mysql_query($sql);
  14. $sql = "SELECT COUNT(*) FROM xxx WHERE time > '$old'";
  15. $query = mysql_query($sql);
  16. $row = mysql_fetch_array($query);
  17. $guest = $row['COUNT(*)'];

ktos chetny?
nospor
$sql = "INSERT INTO xxx(ip, time)" .
"VALUES($ip, $now)";
Ale wiesz o tym, że oprócz napisania zapytania trzeba je jeszcze wykonaćquestionmark.gif
Raven1122
jest na dole po komentarzu //Guest

No to jest tutaj: $sql = "INSERT INTO xxx(ip, time)" .
"VALUES($ip, $now)";
nospor
To rób to od razu nie milion linii niżej. To niczemu nie służy.

Zapoznaj sie z tym tematem i do niego zastosuj. No nie bedziemy ci każdej pierduły co chwile wyjasniac
Temat: Jak poprawnie zada pytanie
Raven1122
Poprawilem, ale dalej nie dziala
nospor
Nie chce mi się wierzyc, że przez pare minut zastosowales sie do tego tematu, co cie odeslalem.
Raven1122
Nie, nie przenioslem tylko mysql_query z dolu do gory
nospor
A ja chyba prosiłem Cię jeszcze, byś się zastosował do tematu. Masz tam kupę wskazówek, których nie chce mi się teraz specjalnie dla Ciebie ponownie wypisywać. Czy tak trudno to zrobic? Czy naprawdę trzeba aż w trzech postach o to prosić?
Raven1122
Przeczytalem, zrozumialem, wynioslem cos z lekcji:
dodalem mysql_error() i teraz mam blad:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.134.12, 15:49:56)' at line 1
nospor
Dziękuję. Ale było tam też napisane, byś wyświetlał wygenerowane zapytanie. Jakbyś to zrobił, to byś zobaczył że zapomniałeś IP objąć apostrofem.
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.