![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 20.12.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Witam. Mam problem (no inaczej bym nie pisał nie
![]() Moze na początek kawałek kodu: Kod $sql = 'CALL replacement ('.$changeweek.')'; $stmt = $hDB->prepare($sql); $stmt->execute(); $num = $stmt->rowCount(); $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); for ($i=0;$i<$num;$i++){ $resultw = $stmt->fetch(); $wr[] = $resultw; } $smarty->assign('wr',$wr); Mam z tego tablicę: direction | driver | truck | client ------------------------------------------------------------- IN | kowalski | CBA 2659 | klient -------------------------------------------------------------- OUT | nowak | CBA 2659 | klient ------------------------------------------------------------- Jak to wyrzucic na stronę w Smarty w formie tabelki : OUT | truck | IN | client ------------------------------------------------ nowak | CBA 2659 | kowalski | klient ------------------------------------------------- Poprosze o pomoc. Nikt nie pomoże? Ten post edytował kasior 1.04.2014, 12:05:36
Powód edycji: [nospor]:
-------------------- Zapraszam do odwiedzenia mojej strony.
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Nie robiłbym tego w Smarty, najlepiej zapytaniem SQL, ale rozumiem, że nie możesz.
Pozostaje PHP.
Puść to później w Smarty, w dwóch pętlach {foreach} z atrybutem key. W pierwszej w atrybucie key będziesz mieć klienta, w drugiej, w atrybucie key będzie truck. Value drugiej pętli, to tablica z dwiema zmiennymi: in oraz out. -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 20.12.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Fajnie opisałeś, ale jednak nie rozumiem tego
![]() -------------------- Zapraszam do odwiedzenia mojej strony.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
I jeszcze możesz uprościć wcześniejszą pętlę w PHP:
Ten post edytował trueblue 1.04.2014, 17:37:52 -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 20.12.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
No chciałbym kliknąc pomógł ale jeszcze nie mogę. To coś nie działa. Dostaje w wyniku kupę danych zupełnie niepotrzebnych w tym nazwy pól bazy.
itd... jeszcze raz cały mój kod:
EDIT >> ok. dureń ze mnie. zostawiłem poprzednią pętlę ![]() Ten post edytował kasior 1.04.2014, 17:56:11 -------------------- Zapraszam do odwiedzenia mojej strony.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
To jest ok, czy nie?
Jeśli nie to pokaż jeden wiersz: print_r($resultw); (wydrukuj w tej pętli PHP). -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 20.12.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Nie do końca jest ok. Zobacz kawałek wyniku:
patrz na rejestrację EKU 8EV1 - to się nie składa. (out) jest w pierwszym rzędzie a gdzieś dalej (in). Nie wchodza obok siebie Specjalnie dodałem kreski,zeby oddzielić i podkreślić wiersze Ten post edytował kasior 1.04.2014, 18:06:32 -------------------- Zapraszam do odwiedzenia mojej strony.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Nie ma to znaczenia.
A gdzie jest Direction (IN, OUT)? Pokaż ten sam kawałek drukują w pętli PHP: print_r($resultw); P.S. Uprość pętlę w PHP - jest w moim poście z przykładem pętli w Smarty. -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 20.12.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Pętlę oczywiście uprościłem, na tamtej tylko jeden rekord wyświetlało Ten post edytował kasior 1.04.2014, 18:17:31 -------------------- Zapraszam do odwiedzenia mojej strony.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Ok, dzięki.
A jaki jest klient dla tych dwóch rekordów, które podałeś wcześniej (rejestracja EKU 8EV1). -------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 20.12.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
No akurat nie ma. Może to ma jakis związek,ze nie ma wszystkich danych jeszcze? Myślałem,ze jak ich nie będzie to beda puste pola.
Spróbuje to odpalić z tygodniem w którym są wszystkie dane -------------------- Zapraszam do odwiedzenia mojej strony.
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Akurat tu tak nie będzie, ale może to rozwiązanie Cię zadowoli:
Ten post edytował trueblue 1.04.2014, 18:24:53 -------------------- |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 20.12.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
To dalej nie składa wierszy do kupy
-------------------- Zapraszam do odwiedzenia mojej strony.
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Sprawdź czy obydwie rejestracje EKU, nie mają czasem spacji przed lub po.
-------------------- |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 20.12.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Nie maja. Zresztą to jedno i to samo pobierane z bazy i wrzucane w odpowiednie pola.
Moze zobrazuje sytuację to będzie lepiej. mam ładna tabelke z kierowcami , trzymajmy sie nazwy - OUT ![]() Nastepna tabelka przedstawia IN ![]() Tabelka którą teraz chcę uzyskać wyglądałaby tak biorąc pod uwage,ze nie zawsze są wszystkie dane (np wchodzi dwóch na jednego trucka bo jeden się uczy) lub nie ma klienta lub nie ma wchodzącego np. ![]() Jest to po prostu takie zestawienie wszystkiego Ten post edytował kasior 1.04.2014, 18:44:54 -------------------- Zapraszam do odwiedzenia mojej strony.
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
W jednym się myliłem, rekordy bez klientów nie będą się wzajemnie nadpisywać w docelowej tabeli. Można więc wrócić do poprzedniego rozwiązania.
Z tego co pokazujesz trudno wywnioskować czy są tam spacje czy nie, bo być może program generujący te widoki je usuwa. Ja przetestowałem na tabeli z danymi w PHP, działa bez problemu, może brakować klienta, jak i IN lub OUT:
To co generuje test.pl: OUT,truck,IN,client nowak,EKU 8EV1,kowalski,klient nowak2,AAA 2659,kowalski2, nowak3,BBB 2659,kowalski3, nowak3,CCC 2659,,marian Możesz jeszcze spróbować tak: -------------------- |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 20.12.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
ok. czyli co zostawiam z tamtego kodu?? bo już się zakręciłem. począwszy od zapytania sql
-------------------- Zapraszam do odwiedzenia mojej strony.
|
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
-------------------- |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 20.12.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
a w smarty nic już nie przerabiałeś? bo ja ciągle mam bajzel. jeszcze raz cały kod mój.:
Kod OUT,truck,IN,client<br /><br />
{foreach from=$wr key=client item=tmp} {foreach from=$tmp key=truck item=drivers} {$drivers.out} -- {$truck} -- {$drivers.in} |<br /> {/foreach} {/foreach} -------------------- Zapraszam do odwiedzenia mojej strony.
|
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
W Smarty nic.
Wcześniej pisałeś o bałaganie kiedy jakiejś pętli nie usunąłeś. Czym teraz bałagan się objawia? -------------------- |
|
|
![]()
Post
#21
|
|
![]() Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 20.12.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Podałem cały mój kod. już nic zbędnego w nim nie ma - najwyzej cos brakuje. W twoim ostatnim przykładzie jest foreach a ja miałem wrzucić for - nie wiem czy to to czy jak.. Wróciliśmy do tego samego wyniku:
tu akurat są id-ki ale to nie ma większego znaczenia teraz
Ten post edytował kasior 1.04.2014, 19:23:19 -------------------- Zapraszam do odwiedzenia mojej strony.
|
|
|
![]()
Post
#22
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Bardziej mnie interesuje co masz w $wr, dla tego fragmentu, czyli: print_r($wr);
Ten post edytował trueblue 1.04.2014, 19:32:00 -------------------- |
|
|
![]()
Post
#23
|
|
![]() Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 20.12.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
A proszę bardzo, oto mój debug:
PS>> fajnie ,ze pomagasz ![]() -------------------- Zapraszam do odwiedzenia mojej strony.
|
|
|
![]()
Post
#24
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Czekaj, czekaj, a czemu jest kilka osobnych tablic (w powyższym debugu)?
Czy czasem nie jest tak, że np. EKU 8EV1 przynależy do dwóch różnych klientów (raz z out=36, a raz z in=22)? Ten post edytował trueblue 1.04.2014, 19:38:54 -------------------- |
|
|
![]()
Post
#25
|
|
![]() Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 20.12.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Dobra myśl. Sprawdziłem. W jednym przypadku jest klient - w innym nie ma. Generalnie najważniejsi sa kierowcy i trucki - klient może byc ale nie musi - to nie powinno byc najistotniejsze. Dane są wprowadzane w trakcie i np juz wiadomo,ze gość wchodzi na tego trucka ale jeszcze nie wiadomo gdzie pojedzie i dla kogo - to może wyjśc póżniej gdyż planowanie jest na cały rok. moze to rożświetli bardziej temat
-------------------- Zapraszam do odwiedzenia mojej strony.
|
|
|
![]()
Post
#26
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli nie interesuje Cię klient, to spróbuj tak (ale nie może być sytuacji, że jest więcej niż raz występuje ta sama rejestracja z IN (lub z OUT)):
Ten post edytował trueblue 1.04.2014, 19:44:00 -------------------- |
|
|
![]()
Post
#27
|
|
![]() Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 20.12.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
No i teraz działa
![]() Nie rozumiem tylko tej kolejności. Zmieniłem driver na last_name i dopisałem name i to jest w porządku:
dlaczego jak na końcu jeszcze dopiszę tego klienta nieszczęsnego (bo może sie przecież pojawiac jak jest) to on mi wskakuje w środek zaraz po in?
EDIT>>> Już wiem. Oświeciło mnie i chyba zrozumiałem wszystko ![]() ![]() A jak chciałbym w tym foreach pokazać jeszcze kilka pól z bazy na których mi zależy to jak?? {$drivers.pole} ? Dobra. Pokminię sobie z tym jak i z tym,zeby to w tą tabelkę zapakować ![]() ![]() Ten post edytował kasior 1.04.2014, 19:57:26 -------------------- Zapraszam do odwiedzenia mojej strony.
|
|
|
![]()
Post
#28
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
W razie problemów pisz. Możliwe też jest rozwiązanie sytuacji kiedy jest kilku kierowców przypisanych od IN lub OUT.
-------------------- |
|
|
![]()
Post
#29
|
|
![]() Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 20.12.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Jest wporzo. ładnie wygląda już. Jeżeli miałbym o cos pytać to czy jest mozliwość pokazywania jakiegoś pola np w IN a niepokazywania w OUT zy to zawsze jest zespolone?
Np dopisuje sobie pole ADR i pokazuje mi sie ono po lewej i prawej stronie, a gdybym np chciał pokazywac je tylko dla prawej srony czyli IN bo akurat wtedy to mnie interesuje? -------------------- Zapraszam do odwiedzenia mojej strony.
|
|
|
![]()
Post
#30
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Tym akurat sterujesz już w szablonie, dodając lub odejmując {$drivers.out} {$drivers.in}
-------------------- |
|
|
![]()
Post
#31
|
|
![]() Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 20.12.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
{$adr.drivers.out} ?
{$drivers.adr.out} ? {$drivers.out.adr} ? Nic z tego nie działa. -------------------- Zapraszam do odwiedzenia mojej strony.
|
|
|
![]()
Post
#32
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Miałem na myśli usuwanie {$drivers.in} {$drivers.out} z szablonu.
Podane przez Ciebie rozwiązanie nie zadziała, bo nie ma takich zmiennych. Jeśli chcesz dopisywać więcej informacji do IN oraz OUT, musisz przebudować skrypt PHP:
Wcześniej pod "in" była zmienna, teraz jest tablica, więc w Smarty odwołasz się tak: {$drivers.in.driver} zamiast {$drivers.in} no, a dla adresu {$drivers.in.adres}, dla innych pól musisz rozszerzyć powyższą tablicę w PHP, w szablonie natomiast odwołasz się analogicznie jak dla tych dwóch. Oczywiście Twoje zapytanie do bazy, dla przykładu powyżej, zwraca pole adres, być może u Ciebie nazywa się inaczej. Ten post edytował trueblue 3.04.2014, 09:26:44 -------------------- |
|
|
![]()
Post
#33
|
|
![]() Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 20.12.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Tak to właśnie zrobiłem zanim zdazyłes napisać
![]() -------------------- Zapraszam do odwiedzenia mojej strony.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 04:52 |