Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >

Puszy
Napisane: 12.12.2017, 14:31:08





Grupa: Zarejestrowani
Postów: 279
Dołączył: 10.10.2011

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

Skorzystaj z http://php.net/manual/en/function.fgetcsv.php dzieki temu łatwo pobierzesz dane z pliku CSV, do tego odpowiednio skonstruowana pętla i zamkniesz kod w kilkunastu linijkach. Analogicznie do zrzutu danych do pliku wykorzystaj http://php.net/manual/en/function.fputcsv.php.
  Forum: Przedszkole · Podgląd postu: #1226230 · Odpowiedzi: 6 · Wyświetleń: 552

Puszy
Napisane: 12.12.2017, 14:43:38





Grupa: Zarejestrowani
Postów: 279
Dołączył: 10.10.2011

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

Wykorzystaj rozwiązania a'la konto bankowe. Poprzez ini_set zdefiniuj session.gc_maxlifetime na interesujący Cię czas trwania sesji. W panelu admina, np. w belce kontrolnej) umieść informację "pozostały czas sesji" oraz przycisk "odśwież". Korzystając z JS odmierzaj czas pozostały do końca sesji a pod przycisk "odśwież" podepnij XHR odwołujący się do serwera. Każde wejście na stronę Twojego panelu w trakcie jeszcze aktywnej sesji spowoduje "wyzerowanie" timera z aktywnością sesji.
  Forum: PHP · Podgląd postu: #1226231 · Odpowiedzi: 5 · Wyświetleń: 568

Puszy
Napisane: 7.09.2017, 11:52:31





Grupa: Zarejestrowani
Postów: 279
Dołączył: 10.10.2011

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

Cytat(kpt_lucek @ 7.09.2017, 10:19:09 ) *
Lub, zakładając że klucze są numeryczne 0..n i chcesz wyświetlić całą zawartość $sol
  1. foreach ($solutions as $key => $sol) {
  2. echo sprintf('<p>%d, %s</p>', $key + 1, implode(' ', $sol));
  3. }


albo

  1. foreach (array_values($solutions) as $key => $sol) {
  2. echo sprintf('<p>%d, %s</p>', $key + 1, implode(' ', $sol));
  3. }
  Forum: Przedszkole · Podgląd postu: #1221719 · Odpowiedzi: 9 · Wyświetleń: 914

Puszy
Napisane: 13.07.2017, 12:17:50





Grupa: Zarejestrowani
Postów: 279
Dołączył: 10.10.2011

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

Tak dodaj np atrybut data-discount-percentage i odpowiednio zedytuj skrypt, tylko pamiętaj o tym żeby wyliczać procent od podstawy nie od nowej wartości. Po prostu zamiast

  1. var discountPrice = parseFloat($(this).closest('.discount').data('discount-value'));


będziesz miał

  1. var discountPrice = parseFloat($(this).closest('.discount').data('discount-percentage ')) * basePrice;



https://jsfiddle.net/oqyh76o5/5/

Pomijam tu obsługę floatów, zabezpieczeń żeby rabat nie wyniósł ponad 100% etc. Możesz też robić rabat procentowy od już wyliczonej ceny po wcześniejszym rabacie ale to już musisz sobie samemu pokombinować, masz dwa przykłady powinny Ci wystarczyć.
  Forum: Przedszkole · Podgląd postu: #1219027 · Odpowiedzi: 3 · Wyświetleń: 403

Puszy
Napisane: 7.07.2017, 14:26:33





Grupa: Zarejestrowani
Postów: 279
Dołączył: 10.10.2011

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

Używaj BBCode
  1. $mail = mail(WEBMASTER_EMAIL, $subject, nl2br($message),
  2. "From: ".$name." <".$email.">\r\n"
  3. ."Reply-To: ".$email."\r\n"
  4. ."X-Mailer: PHP/" . phpversion());
  Forum: Przedszkole · Podgląd postu: #1218708 · Odpowiedzi: 4 · Wyświetleń: 363

Puszy
Napisane: 4.07.2017, 11:34:02





Grupa: Zarejestrowani
Postów: 279
Dołączył: 10.10.2011

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

Do RESTa najlepiej mieć napisany router, ewentualnie korzystać z frameworka (raczej rekomendowane). Podziel zapytania na 4 typy, POST do tworzenia, GET do pobierania, PUT do aktualizacji i DELETE do usuwania. W przypadku GET korzystaj z parametrów $_GET, np http://strona.pl/api/user?id=1&format=json. Do reszty korzystasz z $_POST. Wszystko się tak na prawdę opiera na warstwie HTTP, potrzebujesz tylko routera o którym pisałem. Aby wyrzucić dane wystarczy zwykłe echo. Użytkownicy Twojego API będą się komunikować korzystając z CURLa albo Socketów (tak przynajmniej działa podstawowe korzystanie z RESTa w ZF2).
  Forum: PHP · Podgląd postu: #1218583 · Odpowiedzi: 5 · Wyświetleń: 1 281

Puszy
Napisane: 4.07.2017, 10:22:09





Grupa: Zarejestrowani
Postów: 279
Dołączył: 10.10.2011

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

Spróbuj tego, testowałem na PG nie na MySQL

  1. SELECT
  2. u.id,
  3. com.id AS comment_id,
  4. com.time AS comment_date
  5. FROM tablica_uzytkownikow u
  6. INNER JOIN sktest.wp_comment com
  7. ON com.whom = u.id
  8. WHERE com.id IN (
  9. SELECT
  10. scom.id
  11. FROM sktest.wp_comment scom
  12. WHERE
  13. scom.whom = u.id
  14. AND scom.action = 'comment'
  15. -- Tutaj dodatkowe WHERE związane z datą
  16. ORDER BY scom.time DESC
  17. LIMIT 3
  18. )
  19. -- Tutaj dodatkowe WHERE związane z filtrowaniem użytkowników
  20. ORDER BY
  21. u.id,
  22. com.time DESC;
  Forum: Przedszkole · Podgląd postu: #1218579 · Odpowiedzi: 1 · Wyświetleń: 453

Puszy
Napisane: 29.05.2017, 09:11:14





Grupa: Zarejestrowani
Postów: 279
Dołączył: 10.10.2011

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

Jeżeli zmienisz tylko name w anotacji to Doctrine sobie poradzi na 100%. W PHP Storm masz refaktoryzację, zmieniasz nazwę zmiennej a Storm szuka wszystkich referencji. Ogólnie działa ale warto przejrzeć przed wciśnięciem "refactor".
  Forum: Przedszkole · Podgląd postu: #1216691 · Odpowiedzi: 7 · Wyświetleń: 695

Puszy
Napisane: 28.05.2017, 19:31:01





Grupa: Zarejestrowani
Postów: 279
Dołączył: 10.10.2011

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

Chcesz zmienić nazwy kolumn w bazie czy nazwę pola w encji? Jeżeli kolumnę to wystarczy zmienić anotację. Jeżeli nazwę pola to nie jestem w do końca pewien co się stanie gdy zmienisz każde jedno pole w encji, nie wiem czy doctrine zapamiętuje kolejność pół etc.

Kancerogenny bo nie masz kontroli nad zmianami w bazie, korzystając z migracji możesz cofnąć się do konkretnej wersji plus widzisz wszystkie zmiany w postaci zapytań SQL. Dodatkowo rada, używaj angielskich nazw metod, pól klas etc. i nie korzysta ze słów kluczowych we własnych nazwach.
  Forum: Przedszkole · Podgląd postu: #1216680 · Odpowiedzi: 7 · Wyświetleń: 695

Puszy
Napisane: 9.05.2017, 13:39:22





Grupa: Zarejestrowani
Postów: 279
Dołączył: 10.10.2011

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

Spróbuj:

  1. {{ c.post.xyz }}


Gdzie xyz to nazwa pola, np "title". Chociaż ja osobiście iterowałbym po postach a nie po tym konektorze.
  Forum: PHP · Podgląd postu: #1215476 · Odpowiedzi: 4 · Wyświetleń: 881

Puszy
Napisane: 22.03.2017, 15:15:15





Grupa: Zarejestrowani
Postów: 279
Dołączył: 10.10.2011

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

Jeżeli chodzi o same operacje na bazie to proponuje INSERT z ON DUPLICATE

http://stackoverflow.com/a/2714653/2621852

http://stackoverflow.com/a/450695/2621852
  Forum: Przedszkole · Podgląd postu: #1212888 · Odpowiedzi: 3 · Wyświetleń: 339

Puszy
Napisane: 21.03.2017, 12:11:42





Grupa: Zarejestrowani
Postów: 279
Dołączył: 10.10.2011

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

Za każdym razem gdy załaduje się strona wysyłasz formularz który z racji braku atrybutu action w <form> przesyła dane forumularza ponownie do tego samego pliku który z kolei robi to samo. Musisz dodać jakiś event. Pytanie zapewne sprawdza czy wiesz jak korzystać z submit(). Taki submit często używa się w połączeniu z innymi eventami np. onChange czy chociażby onFocus.
  Forum: Przedszkole · Podgląd postu: #1212818 · Odpowiedzi: 5 · Wyświetleń: 423

Puszy
Napisane: 3.03.2017, 16:44:26





Grupa: Zarejestrowani
Postów: 279
Dołączył: 10.10.2011

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

To jest: The Open Graph protocol
  Forum: Przedszkole · Podgląd postu: #1211877 · Odpowiedzi: 2 · Wyświetleń: 315

Puszy
Napisane: 10.02.2017, 10:05:48





Grupa: Zarejestrowani
Postów: 279
Dołączył: 10.10.2011

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

Nie mam pojęcia jak wygląda Twój kod ale mniemam że użyłeś fgetcsv() więc np.:

  1. <?php
  2.  
  3. $currentRow = 0;
  4. $rowsToSkip = 2;
  5.  
  6. if(($handle = fopen($file, "r")) !== false){
  7. while(($data = fgetcsv($handle, 2048, ",")) !== false) {
  8. $currentRow++;
  9. if($currentRow <= $rowsToSkip){
  10. continue;
  11. }
  12.  
  13. // reszta kodu
  14. }
  15. }
  Forum: PHP · Podgląd postu: #1210649 · Odpowiedzi: 1 · Wyświetleń: 409

Puszy
Napisane: 9.02.2017, 15:37:40





Grupa: Zarejestrowani
Postów: 279
Dołączył: 10.10.2011

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

Opisałeś kluczowe etapy procesu. Będzie działało, pytanie czy satysfakcjonuje Cię to rozwiązanie bo wystarczy blokada dostępu do SMS dla aplikacji i leżysz.
  Forum: PHP · Podgląd postu: #1210604 · Odpowiedzi: 9 · Wyświetleń: 1 198

Puszy
Napisane: 12.01.2017, 10:24:34





Grupa: Zarejestrowani
Postów: 279
Dołączył: 10.10.2011

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

Udźwignij to poprzez Ajaxa. Utwórz skrypt który będzie szukał produktów na podstawie szukanego ciągu, załóż że składnik musi składać się z minimum 3 znaków, po wpisaniu 3 znaków przez użytkownika uzyj Ajaxa aby odwołać się do serwera, przekaż suzkany ciąg, wyszukaj go w bazie i dynamicznie wyświetl podpowiadanie z wyborem. Polecam do tego Select2, link do przykładu który opisałem wyżej: https://select2.github.io/examples.html#data-ajax
  Forum: Przedszkole · Podgląd postu: #1208184 · Odpowiedzi: 19 · Wyświetleń: 624

Puszy
Napisane: 30.12.2016, 15:12:09





Grupa: Zarejestrowani
Postów: 279
Dołączył: 10.10.2011

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

Cytat(porzeczki @ 30.12.2016, 14:49:58 ) *
Nie rozumiem po co owijanie wyjątków i wyrzucanie kolejnych. W czym to ma pomóc?


Jeżeli nie rozumiesz tego to nie będziesz nigdy w pełni korzystał z obsługi błędów, nie możesz ograniczać się do jednego try catch. "Wielopoziomowe" try catch usprawnia pracę, np. łapiesz wyjątek, w catchu wykonujesz jakąś akcję (ustawiesz pole Status w encji na "ERROR") i sypiesz wyjątkiem wyżej, funkcja wyżej wykonuje kolejną akcję jak np logowanie błędu etc. Dzięki takim wielopoziomowym wyrzucaniem wyjątków ograniczasz się do try catch zamiast pisać tysiące IFów.
  Forum: Przedszkole · Podgląd postu: #1207489 · Odpowiedzi: 2 · Wyświetleń: 642

Puszy
Napisane: 29.12.2016, 10:58:34





Grupa: Zarejestrowani
Postów: 279
Dołączył: 10.10.2011

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

Nie możesz ustawić ścieżki dla tego inputa. Input file mógłby narazić użytkownika na niebezpieczeństwo, dlatego popularne przeglądarki podają tam fake path tak abyś nie mógł odczytać struktury katalogów użytkownika. Dodatkowo input file służy do wgrywania plików z dysku a nie z serwera, więc localhost automatycznie odpada.
  Forum: Przedszkole · Podgląd postu: #1207415 · Odpowiedzi: 2 · Wyświetleń: 410

Puszy
Napisane: 3.11.2016, 16:36:14





Grupa: Zarejestrowani
Postów: 279
Dołączył: 10.10.2011

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

1. Zapis: $values = array_values($tablica); Utworzona zostaje nowa zmienna o nazwie $values do której jest przypisywany wynik funkcji array_values(), funkcja array_values() bierze za argument tablicę (nie modyfikuje jej) i zwraca tablicę wartości.
2. Funkcja shuffle() przyjmuje za argument referencje i nie zwraca nic, dlatego $zmienna w zapisie $zmienna = shuffle($tablica) zawsze będzie pusta, bo shuffle nie zwraca żadnej wartości ale modyfikuje przekazany jej argument, przekazywanie referencji oznacza się poprzez ampersand (&) np:

  1. <?php
  2.  
  3. function zwieksz(&$x){
  4. $x++;
  5. }
  6.  
  7. $foo = 1;
  8.  
  9. echo $foo; // wyświetli 1
  10.  
  11. zwieksz($foo);
  12.  
  13. echo $foo; // wyświetli 2
  14.  
  Forum: Przedszkole · Podgląd postu: #1203422 · Odpowiedzi: 12 · Wyświetleń: 515

Puszy
Napisane: 3.11.2016, 15:45:56





Grupa: Zarejestrowani
Postów: 279
Dołączył: 10.10.2011

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

Skrypt który napisał pyton:

1. Do zmiennej $values przypisuje wartości $tablica ($tablica jest nieruszona)
2. Miesza tablicę $values ($tablica jest nieruszona)
3. Do zmiennej $tablica nadpisuje dane poprzez łączenie kluczy tablicy $tablica z pomieszanymi wartościami $values. Przypisywanie zmiennych idzie od prawej do lewej. ($tablica zostaje nadpisana wynikiem array_combine() który z kolei łączy klucze oryginalnej $tablica i pomieszanych wartości które są w zmiennej $values()

P.S. shuffle() za parametr przyjmuje referencje, to znaczy że nie musisz pisać $values = shuffle($values), gdy do funkcji leci referencja to właśnie ta zmienna będzie zedytowana (w sumie to nieistotne ale poczytaj o referencjach i o tym co pisałem, czyli o wartościach zmiennych od prawej do lewej).

print_r() wyświetla tablicę w formacie human readable, w konsoli wyświetli ładnie ułożoną strukturę, z kolei w HTML musisz print_r() wziąć w tagi HTML <pre></pre>


  1. <?php
  2.  
  3. $tablica = ['a', 1, 'trzy'];
  4.  
  5. echo '<pre>';
  6. print_r($tablica);
  7. echo '</pre>';
  Forum: Przedszkole · Podgląd postu: #1203420 · Odpowiedzi: 12 · Wyświetleń: 515

Puszy
Napisane: 3.11.2016, 14:10:53





Grupa: Zarejestrowani
Postów: 279
Dołączył: 10.10.2011

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

Jeżeli problemem jest przesłanie pliku na serwer i używasz base64 to rozwiązanie samo się nasuwa. Base64 to string, podziel go na krótsze stringi i wyślij kilkukrotnie na serwer. Ustal dla każdego uploadu jakieś ID, na serwerze zapisuj pliki idUploadu.dat poprzez file_put_content() z flagą append FILE_APPEND. Części stringa wysyłaj AJAXem. Po przesłaniu ostatniej części stringa w pliku idUploadu.dat będziesz miał string zawierający pełen Base64 pliku. Jeżeli natomiast serwer nie jest w stanie udźwignąć tego a ini_set('memory_limit', '3G'); nie pomaga to z tego co wiem nie idzie tego przeskoczyć o ile nie można tego rozwiązać poprzez strumieniowanie danych, pytanie co chcesz przez to osiągnąć bo z tego co widzę to wyświetlasz obrazek a następnie go wysyłasz i ponownie wyświetlasz? Po co? Nie rozumiem idei.
  Forum: Przedszkole · Podgląd postu: #1203412 · Odpowiedzi: 8 · Wyświetleń: 574

Puszy
Napisane: 11.10.2016, 13:49:23





Grupa: Zarejestrowani
Postów: 279
Dołączył: 10.10.2011

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

Osobiście proponuję zrobić plik z tablicą kodów, innego rozwiązania nie widzę, poniżej podaje linki do zestawień wraz z informacją o województwie, skopiujesz sobie do jakiegoś edytora tekstowego i regularnymi wyrażeniami przygotujesz tablicę.

https://www.poczta-polska.pl/hermes/uploads.../11/spispna.pdf
http://www.kody-pocztowe.dokladnie.com/

plik z serializowanymi danymi: http://webformy.pl/ext/ser_zips.dat

pobierz go, zapisz i możes zużywać:

  1. <?php
  2.  
  3. $zipCodes = unserialize(file_get_contents('/sciezka/do/pliku/ser_zips.dat'));
  4.  
  5. print_r($zipCodes['05-500']);


@Python Autor pytał o to czy można stwierdzić na podstawie kodu jaki to województwo, czy istnieje zależność.
  Forum: PHP · Podgląd postu: #1201991 · Odpowiedzi: 9 · Wyświetleń: 1 477

Puszy
Napisane: 7.10.2016, 11:08:56





Grupa: Zarejestrowani
Postów: 279
Dołączył: 10.10.2011

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

  1. <?php
  2.  
  3. /**
  4.  * @param string $xmlTimestamp
  5.  * @return \DateTime
  6.  */
  7. function getDateTime($xmlTimestamp){
  8. $timestamp = intval(substr(str_replace('-0000', '', $xmlTimestamp), 0, -3));
  9.  
  10. $date = new DateTime();
  11. $date->setTimestamp($timestamp);
  12.  
  13. return $date;
  14. }
  15.  
  16. print_r(getDateTime('1475791200000-0000'));
  Forum: PHP · Podgląd postu: #1201679 · Odpowiedzi: 6 · Wyświetleń: 393

Puszy
Napisane: 30.09.2016, 15:32:25





Grupa: Zarejestrowani
Postów: 279
Dołączył: 10.10.2011

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

Nie jest możliwe żeby jedna kolumna miała dwie różne nazwy (nic mi bynajmniej o tym nie wiadomo i wydaje się to dość nielogiczne) dlatego też masz rozróżnienie tabel w kolumnie table_id. Nie wiem co konkretnie chcesz z tym dalej zrobić ale możesz przecież wynik zwrócić do klasy. Uzywając np PDO wynik mapujesz do klasy a tam ustawiasz gettera przykład niżej, dzięki zmapowaniu do klasy łatwiej się pracuje możesz wrzucić tam jakie tylko zechcesz funkcji a dane pobierasz tylko raz.

res to alias dla całego wyniku, dzięki temu możesz później dodać warunki i grupowanie z całego wyniku union czy też dorzucić join


  1. <?php
  2.  
  3. $pdo = new PDO(); // inicjalizacja połączenia, host, user, pass itd.
  4.  
  5. $query = "
  6. SELECT
  7. *
  8. FROM (
  9. SELECT
  10. name,
  11. id,
  12. 'A' AS table_id
  13. FROM ".$prefix."A
  14. WHERE A_name LIKE :nameA
  15.  
  16. UNION ALL
  17.  
  18. SELECT
  19. name,
  20. id,
  21. 'B' AS table_id
  22. FROM ".$prefix."B
  23. WHERE B_title LIKE :nameB
  24. ) res
  25. ";
  26.  
  27. $stmt = $pdo->prepare($query);
  28. $paramName = '%'.$name.'%';
  29. $stmt->bindParam(':nameA', $paramName, PDO::PARAM_STR);
  30. $stmt->bindParam(':nameB', $paramName, PDO::PARAM_STR);
  31.  
  32. $stmt->execute();
  33.  
  34. $result = $stmt->fetchAll(PDO::FETCH_CLASS, 'Wynik');
  35.  
  36. class Wynik{
  37. public $name;
  38. public $id;
  39. public $table_id;
  40.  
  41. public function getName(){
  42. return $this->name;
  43. }
  44.  
  45. public function test(){
  46. return $this->table_id . '_name';
  47. }
  48.  
  49. public function getMyArray(){
  50. return [
  51. $this->table_id . '_name' => $this->name,
  52. 'id' => $this->id,
  53. ];
  54. }
  55. }
  56.  
  57. $myResult = [];
  58.  
  59. foreach ($result as $v){
  60. $myResult[] = $v->getMyArray();
  61. }
  62.  


$result będzie zawierało tablicę obiektów Wynik, jeżeli potrzebujesz bardziej szczegółowej pomocy musisz rozwinąć problem.
Z kolei $myResult będzie zawierało tablicę której potrzebujesz, z odpowiednimi kluczami.
  Forum: Przedszkole · Podgląd postu: #1201223 · Odpowiedzi: 9 · Wyświetleń: 548

Puszy
Napisane: 30.09.2016, 13:22:48





Grupa: Zarejestrowani
Postów: 279
Dołączył: 10.10.2011

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

Dodatkowo proponuję korzystanie z prepared statement, dobry nawyk.

  1. SELECT
  2. *
  3. FROM (
  4. SELECT
  5. name,
  6. id,
  7. 'A' AS table_id
  8. FROM ".$prefix."A
  9. WHERE A_name LIKE '%".$name."%'
  10.  
  11. UNION ALL
  12.  
  13. SELECT
  14. name,
  15. id,
  16. 'B' AS table_id
  17. FROM ".$prefix."B
  18. WHERE B_title LIKE '%".$name."%'
  19. ) res
  Forum: Przedszkole · Podgląd postu: #1201212 · Odpowiedzi: 9 · Wyświetleń: 548

2 Stron V   1 2 >

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: 19.04.2024 - 06:58