Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

5 Stron V   1 2 3 > » 

Michael2318
Napisane: 25.01.2015, 08:17:01





Grupa: Zarejestrowani
Postów: 651
Dołączył: 3.06.2012
Skąd: Lędziny

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

np. tak:

  1. $txt = '<h2>Nr.:</h2><h3>652<span style="display:none;">_</span> <span style="display:none;">_</span>754 454</h3>';
  2. preg_match('"<h2>Nr.:</h2><h3>([0-9]+)<span style=\"display:none;\">_</span> <span style=\"display:none;\">\_</span>([0-9 ]+)</h3>"si', $txt, $matches);
  3.  
  4. print_r($matches);


Output:

Cytat
Array
(
[0] => <h2>Nr.:</h2><h3>652<span style="display:none;">_</span> <span style="display:none;">_</span>754 454</h3>
[1] => 652
[2] => 754 454
)
  Forum: PHP · Podgląd postu: #1141845 · Odpowiedzi: 1 · Wyświetleń: 213

Michael2318
Napisane: 18.11.2014, 06:29:36





Grupa: Zarejestrowani
Postów: 651
Dołączył: 3.06.2012
Skąd: Lędziny

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

Cytat
Użytkownik postanowił być niedostępny z poziomu prywatnego komunikatora


Dobrze by było, gdyby jednak dało się jakoś skontaktować... wink.gif
  Forum: Kupię · Podgląd postu: #1132550 · Odpowiedzi: 2 · Wyświetleń: 752

Michael2318
Napisane: 2.11.2014, 16:02:35





Grupa: Zarejestrowani
Postów: 651
Dołączył: 3.06.2012
Skąd: Lędziny

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

  1. function dothis(){
  2. window.location.href="http://www.google.com";
  3. }
  4. <form method="post">
  5. <input type="button" value="submit" onclick="dothis()"/>
  6. </form>
  Forum: PHP · Podgląd postu: #1130533 · Odpowiedzi: 1 · Wyświetleń: 468

Michael2318
Napisane: 4.10.2014, 15:23:17





Grupa: Zarejestrowani
Postów: 651
Dołączył: 3.06.2012
Skąd: Lędziny

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

  1. <?php
  2.  
  3. $post = 'login_form=NICK&haslo_form=HASLO';
  4.  
  5. $c = curl_init();
  6. curl_setopt($c, CURLOPT_URL, 'https://biznes-host.pl/?show=logowanie');
  7. curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.1.2) Gecko/20090729 desktopsmiley_2_2_5643778701369665_44_71 DS_gamingharbor Firefox/3.5.2 (.NET CLR 3.5.30729)');
  8. curl_setopt($c, CURLOPT_POST, true);
  9. curl_setopt($c, CURLOPT_POSTFIELDS, $post);
  10. curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1);
  11. curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
  12. curl_setopt($c, CURLOPT_COOKIEFILE, 'cookies.txt');
  13. curl_setopt($c, CURLOPT_COOKIEJAR, 'cookies.txt');
  14. $p = curl_exec($c);
  15. curl_close($c);
  16.  
  17. $c = curl_init();
  18. curl_setopt($c, CURLOPT_URL, 'https://biznes-host.pl/index.php?show=panel');
  19. curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.1.2) Gecko/20090729 desktopsmiley_2_2_5643778701369665_44_71 DS_gamingharbor Firefox/3.5.2 (.NET CLR 3.5.30729)');
  20. curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
  21. curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
  22. curl_setopt($c, CURLOPT_COOKIEFILE, 'cookies.txt');
  23. curl_setopt($c, CURLOPT_COOKIEJAR, 'cookies.txt');
  24. $p = curl_exec($c);
  25. curl_close($c);
  26.  
  27. echo $p;
  28.  
  29. ?>


Ten skrypt Cię zaloguje i przeniesie na stronę główną panelu już jako zalogowany user. W zmiennej $p na samej dole skryptu masz zapisany kod HTML wynikowej strony.
Pozostaje Ci napisać wyrażenie regularne, które wyciągnie Ci stan konta z kodu HTML wink.gif
  Forum: Przedszkole · Podgląd postu: #1127455 · Odpowiedzi: 3 · Wyświetleń: 804

Michael2318
Napisane: 25.08.2014, 21:49:08





Grupa: Zarejestrowani
Postów: 651
Dołączył: 3.06.2012
Skąd: Lędziny

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

http://forum.php.pl/index.php?showtopic=21...p;#entry1038442

Pobierz dodatkowe wartości, takie jak np. user_agent i generuj porządne klucze, wystarczy.
  Forum: PHP · Podgląd postu: #1121530 · Odpowiedzi: 3 · Wyświetleń: 840

Michael2318
Napisane: 26.08.2014, 10:22:04





Grupa: Zarejestrowani
Postów: 651
Dołączył: 3.06.2012
Skąd: Lędziny

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

Ad. 2:

  1. if ( $userdata['session_logged_in'] )
  2. {
  3. echo 'osoba jest zalogowana, pokaż jej ten skrypt tutaj';
  4. }
  5. else
  6. {
  7. echo 'Nie jesteś zalogowany! Zaloguj się: <a href="login.php">CLICK</a>';


Ad. 1:

Po kliknięciu w odnośnik twórz ciastko - funkcja setcookie - i potem przy klikaniu sprawdzaj czy ciacho istnieje - jeśli tak to odrzucaj próbę kliknięcia w link. Możesz do tego celu wykorzystać evercookies (google -> javascript evercookies). Jeśli to jest tylko dla zalogowanych użytkowników - w tabeli z userami stwórz pole tinyint(1) NOT NULL DEFAULT 0. Po kliknięciu w link aktualizuj pole na wartość 1 i jeśli to pole dla danego usera jest równe 1 - odrzucaj jego "kliknięcie".

Do tego należałoby zapisywać czas, kiedy to pole zostało zaktualizowane na wartość 1. Potem odbierasz ten czas i sprawdzasz czy to ten sam dzień na podstawie czasu czy też nie. Jeśli nie to aktualizuj po zalogowaniu usera, to pole na wartość 0 z powrotem.

EDIT:

Albo po prostu stwórz jedno pole z samym czasem: int(11) NOT NULL i po kliknięciu pchaj tam czas. Przy próbie kliknięcia w link, pobieraj od usera ten czas i rób taki warunek:

  1. if ( ($row['last_clicked']+86400) < time())
  2. {
  3. // zezwalasz na kliknięcie bo od ostatniego kliknięcia mineło wiecej niz 24h
  4. // pamiętaj tez o aktualizacji pola z czasem na czas obecny
  5. }
  6. else
  7. {
  8. die('odczekaj 24h od ostatniego klikniecia'); // wysiwetlasz blad bo minelo mniej niz 24h
  9. }
  Forum: Przedszkole · Podgląd postu: #1121579 · Odpowiedzi: 3 · Wyświetleń: 713

Michael2318
Napisane: 24.08.2014, 10:58:14





Grupa: Zarejestrowani
Postów: 651
Dołączył: 3.06.2012
Skąd: Lędziny

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

http://stackoverflow.com/questions/1770765...iler-addaddress
  Forum: PHP · Podgląd postu: #1121268 · Odpowiedzi: 2 · Wyświetleń: 248

Michael2318
Napisane: 24.08.2014, 10:42:55





Grupa: Zarejestrowani
Postów: 651
Dołączył: 3.06.2012
Skąd: Lędziny

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

Jasne, że się da. Musisz tylko gdzieś przechowywać obecny dzień (w bazie lub w pliku .txt).

  1. $tablica = array(
  2. 0 => 'http://forum.php.pl',
  3. 1 = > 'http://google.pl',
  4. 2 => 'http://wp.pl'
  5. );
  6.  
  7. $day = $row['last_day']; // w tej zmiennej zakładam, że masz ostatni numer dnia tygodnia, zgodny z funkcją date(), czyli 0 (dla Niedzieli) aż do 6 (dla Soboty).
  8. if ( $day !== date("w", time()) )
  9. {
  10. echo 'Dzisiejszy link: <a href="'.$tablica[(date("w", time()))].'">CLICK</a>';
  11. $sql = "update ..."; // tutaj aktualizujesz tą zmienną $day, na obecny dzień, pobierasz ją z tej funkcji: date("w", time())
  12. }


Jeśli wolisz to przechowywać w pliku .txt to zmienna $day powinna wyglądać tak:

  1. $day = file_get_contents('plik.txt'); // w nim ma się znajdować tylko i wyłącznie liczbowa forma dnia tygodnia


z kolei aktualizacja tej zmiennej powinna wyglądać tak:

  1. if ( file_put_contents('plik.txt', date("w", time())) !== FALSE )
  2. {
  3. echo 'Sukces, zaktualizowano!';
  4. }


Zwróć też uwagę na $tablica - indeksy odpowiadają poszczególnym dniom tygodnia, indeks 0 - Niedziela, 1 - Poniedziałek itd.
  Forum: Przedszkole · Podgląd postu: #1121265 · Odpowiedzi: 9 · Wyświetleń: 449

Michael2318
Napisane: 16.08.2014, 09:35:36





Grupa: Zarejestrowani
Postów: 651
Dołączył: 3.06.2012
Skąd: Lędziny

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

Zacznijmy od tego, że w ten sposób nie da się przekazać zmiennej do url: domena.pl/zmienna. Można natomiast w ten sposób: domena.pl/plik.php?mode=zmienna
Teraz, jeśli chcesz mieć taki link, jak napisałeś w pierwszym poście - google -> przyjazne linki htaccess

Taki link, jaki Ci zaprezentowałem odbierasz w ten sposób:

  1. $get = $_GET['mode']; // zwróci "zmienna" bądź coś innego w zależności co masz wpisane w przeglądarce po znaku równości: plik.php?mode=*


No a przekazanie tego do formularza to już kwestia HTML:

  1. echo '<input type="text" name="pole1" value="'.$get.'">';
  Forum: Przedszkole · Podgląd postu: #1120083 · Odpowiedzi: 1 · Wyświetleń: 330

Michael2318
Napisane: 15.08.2014, 13:13:39





Grupa: Zarejestrowani
Postów: 651
Dołączył: 3.06.2012
Skąd: Lędziny

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

  1. <?php
  2.  
  3. $txt = '<table class="normal">
  4. <tr class="Even" style="text-align:right;" ><td style="width:70%;text-align:left;" >Imię i nazwisko</td><td style="width:10%;" >Wiek</td><td style="width:20%;" >Miejscowość</td></tr>
  5. <tr class="Even" style="text-align:right;" ><td style="width:70%;text-align:left;" ><a href="#" >Anna Kowalska</a></td><td style="width:10%;" >21</td><td style="width:20%;" >Sopot</td></tr>
  6. <tr class="Even" style="text-align:right;" ><td style="width:70%;text-align:left;" ><a href="#" >Andrzej Jan</a></td><td style="width:10%;" >42</td><td style="width:20%;" >Warszawa</td></tr>
  7. <tr class="Even" style="text-align:right;" ><td style="width:70%;text-align:left;" ><a href="#" >Andrzej Rykat</a></td><td style="width:10%;" >23</td><td style="width:20%;" >Opole</td></tr>
  8. </table>';
  9.  
  10. $reg = preg_match_all("'<tr class=\"Even\" style=\"text-align:right;\" >(.*?)</tr>'si", $txt, $matches);
  11.  
  12. unset($matches[1][0]); // usuwamy nagłówek tabeli z naszego wyniku, czyli: "imię i nazwisko" bo to nam niepotrzebne
  13.  
  14. for($i=1; $i<=count($matches[1]); $i++)
  15. {
  16. $get_name = preg_match_all("'<a href=\"#\" >(.*?)</a>'si", $matches[1][$i], $matches_name);
  17. $get_age = preg_match_all("'<td style=\"width:10%;\" >([0-9]+)</td>'si", $matches[1][$i], $matches_age);
  18. $get_location = preg_match_all("'<td style=\"width:20%;\" >(.*?)</td>'si", $matches[1][$i], $matches_location);
  19.  
  20. echo $matches_name[1][0].' '.$matches_age[1][0].' '.$matches_location[1][0].'<br>';
  21. }
  22.  
  23. ?>


Zapisz to jako np. test.php i wywołaj w przeglądarce. W odpowiedzi dostaniesz:

Cytat
Anna Kowalska 21 Sopot
Andrzej Jan 42 Warszawa
Andrzej Rykat 23 Opole


Teraz pozostje Ci zapisać te zmienne z echo:

  1. echo $matches_name[1][0].' '.$matches_age[1][0].' '.$matches_location[1][0].'<br>';


do tablicy i jak wyciągasz z bazy nazwę danej osoby to suzkasz tego też w tablicy. Jak już znajdziesz to od razu masz miejscowość i wiek.
  Forum: Przedszkole · Podgląd postu: #1120047 · Odpowiedzi: 10 · Wyświetleń: 473

Michael2318
Napisane: 15.08.2014, 12:47:51





Grupa: Zarejestrowani
Postów: 651
Dołączył: 3.06.2012
Skąd: Lędziny

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

Pokaż wreszcie całą tą tabelę, razem z imieniem, wiekiem, miejscowością itd. Tak żeby szło wymyśleć do tego jakieś sensowne rozwiązanie.
  Forum: Przedszkole · Podgląd postu: #1120043 · Odpowiedzi: 10 · Wyświetleń: 473

Michael2318
Napisane: 15.08.2014, 10:22:16





Grupa: Zarejestrowani
Postów: 651
Dołączył: 3.06.2012
Skąd: Lędziny

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

No więc tak. Tu masz regexpa odpowiedzialnego za wyciągnięcie tego wieku:

  1. $txt = '<table>
  2. <tr><td>Anna Kowalska</td><td>20</td></tr>
  3. <tr><td>Jan Kowalski</td><td>40</td></tr>
  4. </table>';
  5.  
  6. $reg = preg_match_all("'<td>([0-9]+)</td>'si", $txt, $matches);


w TABLICY $matches[0] znajdują się zapisane wartości wiekowe.

Teraz jak je podpiąć pod to co Ty masz. Zakładam, że wartości w tabeli są poukładane w takiej samej kolejności jak wyniki, które dostajesz z bazy danych.

  1. $i = 0;
  2. while ($row = mysql_fetch_array($rows))
  3. {
  4. // jakieś tam Twoje instrukcje
  5. // ...
  6.  
  7. echo 'Wiek '.$i.' osoby: '.$matches[0][$i]; // wyświetlamy wiek
  8. $i++; // zwiększamy licznik
  9. }


Podsumowując ważne jest, abyś zdefiniował przed pętlą, że zmienna $i jest równa zero na start, a potem wewnątrz pętli while, na samym końcu zwiększał ten licznik o jeden ($i++). Przy takim układzie, Twój wiek dla danej osoby odczytujesz w ten sposób: $matches[0][$i].
  Forum: Przedszkole · Podgląd postu: #1120028 · Odpowiedzi: 10 · Wyświetleń: 473

Michael2318
Napisane: 15.08.2014, 09:47:30





Grupa: Zarejestrowani
Postów: 651
Dołączył: 3.06.2012
Skąd: Lędziny

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

Napisałeś co chcesz osiągnąć, ale nie napisałeś co masz w tej zmiennej...
Co konkretnie zawiera zmienna $name?
I gdzie tu w ogóle masz curl'a? ohmy.gif
  Forum: Przedszkole · Podgląd postu: #1120022 · Odpowiedzi: 10 · Wyświetleń: 473

Michael2318
Napisane: 14.08.2014, 15:26:09





Grupa: Zarejestrowani
Postów: 651
Dołączył: 3.06.2012
Skąd: Lędziny

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

No to robisz to po prostu wewnątrz tych zmiennych, np. to:

  1. $arr_online .= '<li><span style="color:green">'.$row['name'].'</span></li></br>';


zmieniasz na:

  1. $arr_online .= '<a href="strona.pl/index.php?name='.$zmienna.'">'.$zmienna.'</a>';
  Forum: Przedszkole · Podgląd postu: #1119955 · Odpowiedzi: 8 · Wyświetleń: 340

Michael2318
Napisane: 14.08.2014, 15:09:14





Grupa: Zarejestrowani
Postów: 651
Dołączył: 3.06.2012
Skąd: Lędziny

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

W sumie to można to zrobić jeszcze prościej:

  1. $arr_online = '';
  2. $arr_offline = '';
  3. while ($row = mysql_fetch_array($rows))
  4. {
  5. $name = $row['name'];
  6. if(preg_match("/$name/", $link)) {
  7. $arr_online .= '<li><span style="color:green">'.$row['name'].'</span></li></br>';
  8. } else {
  9. $arr_offline .= '<li><span style="color:red">'.$row['name'].'</span></li></br>';
  10. }
  11. }
  12.  
  13. echo $arr_online.$arr_offline;
  Forum: Przedszkole · Podgląd postu: #1119948 · Odpowiedzi: 8 · Wyświetleń: 340

Michael2318
Napisane: 14.08.2014, 14:53:07





Grupa: Zarejestrowani
Postów: 651
Dołączył: 3.06.2012
Skąd: Lędziny

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

Zapisz sobie do tablicy te wszystkie rekordy:

  1. $arr_online = array();
  2. $arr_offline = array();
  3. while ($row = mysql_fetch_array($rows))
  4. {
  5. $name = $row['name'];
  6. if(preg_match("/$name/", $link)) {
  7. $arr_online[] = '<li><span style="color:green">'.$row['name'].'</span></li></br>';
  8. } else {
  9. $arr_offline[] = '<li><span style="color:red">'.$row['name'].'</span></li></br>';
  10. }
  11. }


I teraz wyświetl, najpierw tablicę z osobami online, potem z osobami offline:

  1. // wyświetlamy userów z tablicy ONLINE
  2. for($i=0; $i<=(count($arr_online)-1); $i++)
  3. {
  4. echo $arr_online[$i];
  5. }
  6.  
  7. // wyświetlamy userów z tablicy OFFLINE
  8. for($i=0; $i<=(count($arr_offline)-1); $i++)
  9. {
  10. echo $arr_offline[$i];
  11. }
  Forum: Przedszkole · Podgląd postu: #1119940 · Odpowiedzi: 8 · Wyświetleń: 340

Michael2318
Napisane: 14.08.2014, 15:54:51





Grupa: Zarejestrowani
Postów: 651
Dołączył: 3.06.2012
Skąd: Lędziny

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

To jest ta sama sytuacja, z którą zmagają się wszyscy programiści, jeśli chcą kogoś zbanować na swojej stronie. Na IP bana nie dasz bo zmienne, ciastko zapiszesz, ale jak wyczyści to nic z tego...
Mimo wszystko sprawdź takie hasło jak javascript evercookie - http://samy.pl/evercookie/

A tu masz artykuł po polsku na temat evercookie - dobrze jest przeczytać jak to mniej więcej funkcjonuje zanim się tego użyje wink.gif
http://niebezpiecznik.pl/post/niezniszczal...zka-evercookie/
  Forum: PHP · Podgląd postu: #1119965 · Odpowiedzi: 6 · Wyświetleń: 662

Michael2318
Napisane: 13.08.2014, 19:18:52





Grupa: Zarejestrowani
Postów: 651
Dołączył: 3.06.2012
Skąd: Lędziny

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

Skoro w bazie masz te wszystkie rangi i ich punkty zapisane to najlepiej pobierać z bazy te rangi i analizować z tym co posiada user:

  1. $punkty_usera = 15; // liczba punktów usera
  2.  
  3. $sql = "SELECT * FROM `tabela_z_rangami`";
  4. if ( !($result = mysql_query($sql)) )
  5. {
  6. die('error<br>'.mysql_error());
  7. }
  8.  
  9. $rangi_txt = array();
  10. $rangi_int = array();
  11. while($row = mysql_fetch_assoc($result))
  12. {
  13. $rangi_txt[] = $row['tytul'];
  14. $rangi_int[] = $row['punkty'];
  15. }
  16.  
  17. for($i=0; $i=(count($rangi_txt)-1); $i++)
  18. {
  19. if ( $i !== (count($rangi_txt)-1) ) // jeśli obecny rekord nie jest ostatnim przelatywanym przez pętlę...
  20. {
  21. if ( $rangi_int[$i] <= $punkty_usera && $rangi_int[($i+1)] >= $punkty_usera )
  22. {
  23. $ranga_usera = $rangi_txt[$i];
  24.  
  25. break; // stopujemy pętlę
  26. }
  27. }
  28. else
  29. {
  30. $ranga_usera = $rangi_txt[$i]; // przypisujemy z automatu najwyższą możliwą rangę, bo user ma więcej punktów niż określono w bazie
  31. }
  32. }


Zapytanie z bazy najlepiej cachować bo przypuszczam, że nie będziesz co chwilę dodawał nowych rang. Przy dodawaniu nowych rang trzeba by wyczyścić cache, jeśli będziesz je dodawał z poziomu strony (np. panel admina) to żaden problem dodać mechanizm czyszczący cache.
  Forum: Przedszkole · Podgląd postu: #1119804 · Odpowiedzi: 5 · Wyświetleń: 283

Michael2318
Napisane: 14.08.2014, 00:52:41





Grupa: Zarejestrowani
Postów: 651
Dołączył: 3.06.2012
Skąd: Lędziny

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

A próbowałeś funkcjami, typu:

  1. mb_convert_case($string, MB_CASE_TITLE, "UTF-8");


questionmark.gif
  Forum: PHP · Podgląd postu: #1119826 · Odpowiedzi: 5 · Wyświetleń: 477

Michael2318
Napisane: 3.08.2014, 09:27:44





Grupa: Zarejestrowani
Postów: 651
Dołączył: 3.06.2012
Skąd: Lędziny

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

http://forum.php.pl/index.php?showtopic=21...p;#entry1038442
  Forum: Przedszkole · Podgląd postu: #1118231 · Odpowiedzi: 3 · Wyświetleń: 308

Michael2318
Napisane: 1.08.2014, 09:46:25





Grupa: Zarejestrowani
Postów: 651
Dołączył: 3.06.2012
Skąd: Lędziny

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

Jeśli chcesz usunąć tę wartość z tablicy i nie bawić się z samym zapytaniem to najprościej przelecieć pętlą foreach:

  1. foreach($tablica AS $key => $value)
  2. {
  3. if ( $value == $z )
  4. {
  5. unset($tablica[$key]);
  6. break; // stopujemy pętlę bo już zostało zrobione wszystko
  7. }
  8. }


ewentualnie: http://stackoverflow.com/questions/7225070...y-value-not-key
  Forum: Przedszkole · Podgląd postu: #1117963 · Odpowiedzi: 8 · Wyświetleń: 332

Michael2318
Napisane: 30.07.2014, 12:55:30





Grupa: Zarejestrowani
Postów: 651
Dołączył: 3.06.2012
Skąd: Lędziny

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

A szukałeś na anglojęzycznych stronach?

http://stackoverflow.com/questions/1066324...-facebook-pages
http://blogs.coldbuffer.com/how-to-get-facebook-fan-count

ogólnie google -> php count fanpage likes
  Forum: Przedszkole · Podgląd postu: #1117672 · Odpowiedzi: 2 · Wyświetleń: 537

Michael2318
Napisane: 23.07.2014, 22:53:36





Grupa: Zarejestrowani
Postów: 651
Dołączył: 3.06.2012
Skąd: Lędziny

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

Spróbuj:

  1. <?php
  2.  
  3. $a = 'A';
  4. $b = 'B';
  5. $start_kursu = 1405305685;
  6. $data = 1405305986;
  7. $czas_przerwy = 60; // podajemy w sekundach
  8. $czas = 90; // czas twrania podróży w sekundach
  9.  
  10. function sprawdz_gdzie_jestes($a, $b, $start_kursu, $czas, $czas_przerwy, $data)
  11. {
  12. $count_travel_time = $czas + $czas_przerwy; // liczymy ile zajmie nam cała droga z pktu A do pkt B + przerwa
  13. $count_dates = $data - $start_kursu; // odejmujemy różnicę - data startu kursu od daty, którą wpisaliśmy aby sprawdzić gdzie jest dany pojazd w danym czasie
  14. $counter = ceil($count_dates/$count_travel_time)*2; // dzielimy różnicę czasu staru kursu od daty, którą sprawdzamy przez całkowity czas trwania jednej podróży wraz z przerwą i zaokrąglamy to w górę
  15.  
  16. $e_start = $a; // punkt startu
  17. $e_end = $b; // punkt, w którym kurs się kończy
  18. $time = $start_kursu; // startowy czas, jako domyśla wartość - czas startu pierwszego kursu
  19. $return_tab = array(); // tworzymy domyślną tablicę wynikową
  20.  
  21. for($i=0; $i<=$counter; $i++)
  22. {
  23. $breaking = ($i % 2 !== 0) ? TRUE : FALSE; // sprawdzamy czy obecnie jest przerwa czy jazda, TRUE = PRZERWA, FALSE = JAZDA
  24. $found = FALSE; // zmienna informująca o tym czy obecnie przelatywany rekord w pętli to ten szukany, domyślnie zmiennej przypisujemy FALSE
  25.  
  26. if ( ($data - $time) <= ($breaking ? $czas_przerwy : $czas) ) // Sprawdzamy czy obecnie przelatywany rekord w pętli to ten, którego szukaliśmy...
  27. {
  28. $found = TRUE; //... jeśli TAK to przypisujemy TRUE
  29. }
  30.  
  31. if ( $breaking ) // jeśli obecnie przelatywany rekord to przerwa...
  32. {
  33. $return_tab[] = array( // przypisujemy tablicę wynikową
  34. 'time_from' => $time+1, // data, od kiedy zaczyna się przerwa
  35. 'time_to' => ($breaking ? $time+$czas_przerwy : $time+$czas), // data, kiedy kończy się przerwa
  36. 'start' => $e_start, // punkt startu
  37. 'end' => $e_end, // punkt kończący trasę
  38. 'break' => TRUE, // zmienna logiczna informująca czy ta tablica wynikowa to przerwa, w tym wypadku TAK
  39. 'found' => $found ? TRUE : FALSE // sprawdzamy czy ta tablica wynikowa to nasza szukana po dacie
  40. );
  41. }
  42. else // jeśli obecnie przelatywany rekord to jazda...
  43. {
  44. $return_tab[] = array(
  45. 'time_from' => ($i == 0 ? $time : $time+1), // data, od kiedy zaczyna się przerwa
  46. 'time_to' => ($breaking ? $time+$czas_przerwy : $time+$czas), // data, kiedy kończy się przerwa
  47. 'start' => $e_start, // punkt startu
  48. 'end' => $e_end, // punkt kończący trasę
  49. 'break' => FALSE, // zmienna logiczna informująca czy ta tablica wynikowa to przerwa, w tym wypadku NIE
  50. 'found' => $found ? TRUE : FALSE // sprawdzamy czy ta tablica wynikowa to nasza szukana po dacie
  51. );
  52. }
  53.  
  54. if ( $found ) // jeśli obecnie przelatywany rekord to nasza szukana...
  55. {
  56. break; // przerywamy pętlę
  57. }
  58.  
  59. if ( $breaking ) // jeśli obecnie przelatywany rekord to przerwa...
  60. {
  61. $start = $e_start; // przypisujemy do zmiennej $start, punkt startowy z poprzedniego przelotu
  62. // teraz będziemy zamieniać punkt startu z punktem kończącym:
  63. $e_start = $e_end; // przypisujemy do punktu startu, punkt kończący...
  64. $e_end = $start; // oraz do punktu kończącego, punkt startowy
  65. }
  66.  
  67. $time = $breaking ? $time+$czas_przerwy : $time+$czas; // w zależności czy obecnie przelatywany rekord to była przerwa czy jazda - dodajemy odpowiednią ilość czasu
  68. }
  69.  
  70. $txt = ''; // zmienna wynikowa (tekstowa), na start pusta
  71.  
  72. foreach( $return_tab AS $key => $value )
  73. {
  74. if ( $value['break'] == FALSE && $value['found'] == TRUE )
  75. {
  76. $txt .= '<b>'.date('d-m-Y H:i:s', $value['time_from']).' - '.date('d-m-Y H:i:s', $value['time_to']).' - Pojazd obecnie jest w drodze z punktu '.$value['start'].' do punktu '.$value['end'].'</b><br>';
  77. }
  78. else if ( $value['break'] == TRUE && $value['found'] == TRUE )
  79. {
  80. $txt .= '<b>'.date('d-m-Y H:i:s', $value['time_from']).' - '.date('d-m-Y H:i:s', $value['time_to']).' - Pojazd obecnie jest w trakcie przerwy. Przyjechał z punktu '.$value['start'].' do punktu '.$value['end'].'</b><br>';
  81. }
  82. else if ( $value['break'] == TRUE && $value['found'] == FALSE )
  83. {
  84. $txt .= date('d-m-Y H:i:s', $value['time_from']).' - '.date('d-m-Y H:i:s', $value['time_to']).' - Pojazd odbył przerwę, po podróży z punktu '.$value['start'].' do punktu '.$value['end'].'<br>';
  85. }
  86. else if ( $value['break'] == FALSE && $value['found'] == FALSE )
  87. {
  88. $txt .= date('d-m-Y H:i:s', $value['time_from']).' - '.date('d-m-Y H:i:s', $value['time_to']).' - Pojazd odbywał podróż z punktu '.$value['start'].' do punktu '.$value['end'].'<br>';
  89. }
  90. }
  91.  
  92. return $txt;
  93. }
  94.  
  95. echo sprawdz_gdzie_jestes($a, $b, $start_kursu, $czas, $czas_przerwy, $data);
  96.  
  97. ?>
  Forum: Przedszkole · Podgląd postu: #1116750 · Odpowiedzi: 6 · Wyświetleń: 1 143

Michael2318
Napisane: 23.07.2014, 16:08:59





Grupa: Zarejestrowani
Postów: 651
Dołączył: 3.06.2012
Skąd: Lędziny

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

Napisałem na szybko takie cuś:

  1. <?php
  2.  
  3. $a = 'A';
  4. $b = 'B';
  5. $start_kursu = 1405305685;
  6. $data = 1405305795;
  7. $czas_przerwy = 60; // podajemy w sekundach
  8. $czas = 90; // czas twrania podróży w sekundach
  9.  
  10. function sprawdz_gdzie_jestes($a, $b, $start_kursu, $czas, $czas_przerwy, $data)
  11. {
  12. $count_travel_time = $czas + $czas_przerwy; // liczymy ile zajmie nam cała droga z pktu A do pkt B + przerwa
  13. $count_dates = $data - $start_kursu; // odejmujemy różnicę - data startu kursu od daty, którą wpisaliśmy aby sprawdzić gdzie jest dany pojazd w danym czasie
  14. $counter = ceil($count_dates/$count_travel_time); // dzielimy różnicę czasu staru kursu od daty, którą wpisaliśmy aby sprawdzić gdzie jest dany pojazd przez całkowity czas trwania jednej podróży wraz z przerwą i zaokrąglamy to w górę
  15.  
  16. $e_start = $a;
  17. $e_end = $b;
  18. $time = $start_kursu;
  19. $return_tab = array();
  20.  
  21. for($i=0; $i<=$counter; $i++)
  22. {
  23. if ( ($data - $time) <= $count_travel_time )
  24. {
  25. if ( ($data - $time) >= $czas )
  26. {
  27. $return_tab = array(
  28. 'start' => $e_start,
  29. 'end' => $e_end,
  30. 'break' => TRUE
  31. );
  32.  
  33. break;
  34. }
  35. else
  36. {
  37. $return_tab = array(
  38. 'start' => $e_start,
  39. 'end' => $e_end,
  40. 'break' => FALSE
  41. );
  42.  
  43. break;
  44. }
  45. }
  46.  
  47. $start = $e_start;
  48. $e_start = $e_end;
  49. $e_end = $start;
  50. $time = $time+$count_travel_time;
  51. }
  52.  
  53. if ( $return_tab['break'] == FALSE )
  54. {
  55. return 'Pojazd obecnie jest w drodze z punktu '.$return_tab['start'].' do punktu '.$return_tab['end'];
  56. }
  57. else
  58. {
  59. return 'Pojazd obecnie jest w trakcie przerwy. Przyjechał z punktu '.$return_tab['start'].' do punktu '.$return_tab['end'];
  60. }
  61. }
  62.  
  63. echo sprawdz_gdzie_jestes($a, $b, $start_kursu, $czas, $czas_przerwy, $data);
  64.  
  65. ?>


Ale musisz sprawdzić jakoś kalkulatorem czy to w ogóle dobrze oblicza. Po prostu na kartce przeliczyć i porównać wynik z tym co zwróci ta funkcja.
Daty są w formacie timtestamp.

Najpierw komentowałem co po niektóre linie, ale potem mi się odechciało, jak coś to pytaj tongue.gif

EDIT:

Tu masz jeszcze gotową funkcję do zmiany zwykłych dat na format timtestamp: http://phpkurs.pl/przetwarzanie-daty/ :

  1. <?php
  2.  
  3. $dzien = 10;
  4. $miesiac = 4;
  5. $rok = 2002;
  6. $godzina = 12;
  7. $minuta = 32;
  8. $sekunda = 0;
  9.  
  10. $ts = mktime($godzina, $minuta, $sekunda, $miesiac, $dzien, $rok);
  11.  
  12. ?>
  Forum: Przedszkole · Podgląd postu: #1116708 · Odpowiedzi: 6 · Wyświetleń: 1 143

Michael2318
Napisane: 3.07.2014, 11:50:15





Grupa: Zarejestrowani
Postów: 651
Dołączył: 3.06.2012
Skąd: Lędziny

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

  1. $result4 = mysql_query($query4);


sam sobie jesteś winien bo nie wypluwasz błedów od strony bazy danych.
Zapisz tak:

  1. if ( !($result4 = mysql_query($query4)) )
  2. {
  3. }


i jeszcze jedna rada - przejdź na PDO.
  Forum: PHP · Podgląd postu: #1113614 · Odpowiedzi: 2 · Wyświetleń: 359

5 Stron V   1 2 3 > » 

New Posts  Nowe odpowiedzi
No New Posts  Brak nowych odpowiedzi
Hot topic  Popularny temat (Nowe)
No new  Popularny temat (Brak nowych)
Poll  Sonda (Nowe)
No new votes  Sonda (Brak nowych)
Closed  Zamknięty temat
Moved  Przeniesiony temat
 

RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 16:13