![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 36 Dołączył: 1.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam taki mały problem i chyba przez późną porę nie mogę wpaść na jakieś sensowne rozwiązanie.
Mam kod:
W zależności od wyboru w formularzu (idWholesale = 1, 2, itd.) chciałbym generować inne kolumny. Plik CSV rozdzielony jest separatorem, a ja chciałbym wybrać, które kolumny mają zostać wyświetlone. Wszystko byłoby ok, gdyby nie fakt, że zmienna $table zawiera tablicę $data, a ta zmienna jest zarezerwowana dla , więc po wygenerowaniu wynik jest pusty, chyba, że warunki if dam zaraz pod powyższym kodem. Rozwiązanie pewnie jest proste, a ja najwidoczniej za długo na to patrzę. Byłbym wdzięczny za pomoc. Ten post edytował kristaps 26.12.2013, 01:47:15 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Jeśli nazwa zmiennej już istnieje i niepotrzebnie ją nadpisujesz to co za problem nazwać ją inaczej?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 36 Dołączył: 1.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
bo inaczej nie wyświetlę wyników. Więc ktoś ma jakiś pomysł na to? Ten post edytował kristaps 26.12.2013, 11:14:10 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 36 Dołączył: 1.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki com za odpowiedź. Pętla faktycznie jest bez sensu, była mi wcześniej potrzebna i zapomniałem usunąć. To może inaczej:
W zależności co wybierzemy w formularzu tworzona jest sesja idWholesale. Więc IFem sprawdzam co zostało wybrane, a dla każdego są ustawione inne separatory, kolumny, itd. Zdjęcie lepiej to obrazuje: ![]() Problem w tym, że echo $table zwraca mi tylko htmla zmiennej $table danego ifa. To pewnie przez to, że zmienna $data jest wykorzystywana wyżej i jest nadpisywana. Dlatego proszę o radę jak to obejść. PS. Jeżeli dam warunki w pętlę to jest ok. No ale to nie rozwiązanie. Ten post edytował kristaps 27.12.2013, 00:18:44 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
bo do $table masz dopisywać a nie go zastępować czyli $table .=...
![]() poza tym $_SESSION['idWholesale'] zawiera przecież jakias liczbę wiec zwraca to który warunek spełnił, a nie wszystkie bo tylko 1 jest prawdziwy Ten post edytował com 27.12.2013, 19:05:58 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 36 Dołączył: 1.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
poza tym $_SESSION['idWholesale'] zawiera przecież jakias liczbę wiec zwraca to który warunek spełnił, a nie wszystkie bo tylko 1 jest prawdziwy No tak, ale warunek jest spełniany tylko raz. Czyli prawidłowo. Wybiera jedną z powyższych opcji (czerwona bądź czerwona kreska), czyli wszystko jest ok. Niestety dopisywanie również nie działa.
Nadal zwraca tylko htmla. Uprościłem maksymalnie kod: Plik test.csv: Cytat nazwa;ilosc;cena; pomidor;1;10; jabłko;2;11; Plik index.php
Byłbym bardzo wdzięczny gdybyś zerknął, bo być może źle opisuję problem. Zmienna $table (ta pierwsza) zwraca tylko htmla. Ten post edytował kristaps 27.12.2013, 22:14:22 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
bo ja Cie chyba źle zrozumiałem.. to co jest nie tak ?
tzn chodzi Ci że data[0] itd jest pusta? bo teraz jak na to patrze to Ty najpierw się odwołujesz do data a potem dopiero ją tworzysz ale może gdzieś ja tworzysz wcześniej tylko tego nie widzę.. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 36 Dołączył: 1.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Tak, jest pusta, pętla zwraca tylko htmla (<td></td>). No dokładnie, odwołuję się, wiem, że to raczej nie ma prawa działać, ale szukam sposobu na obejście tego. Bo tak jak wyżej pisałem i wklejałem kod, budowa tabel jest różna dla różnych wyborów w formularzu, a raczej bez sensu jest robić osobne pętle dla różnych $_SESSION['idWholesale'].
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
poco chcesz robić oddzielne pętle?
foreach po data i dynamicznie dodajesz td tyle ile jest wystąpień w danej lini o ile dobrze widzę ![]() |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 36 Dołączył: 1.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
No właśnie nie. Bo różne $_SESSION['idWholesale'] to i różne separatory i budowa CSV. Tam gdzie w jednym pliku $date[0] oznacza nazwę towaru, to w innym załóżmy cenę. Dlatego trzeba to najpierw określić.
![]() |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
no to przecież ja wiem ale iteracja po data nie pyta się o to jaki masz separator czy $_SESSION['idWholesale'] bo zawartość data tworzysz tu
A w kodzie który pokazałeś jedyna różnica jest w ilości komórek w wierszu przynajmniej ja to tak rozumie, a co oznacza $date[0] co tez nie jest ważne bo on przecież wydrukuje to co tam jest w tym array ![]() Ten post edytował com 27.12.2013, 23:02:38 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 36 Dołączył: 1.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Masz rację, ale niektóre wartości będą dodawane, mnożone, itd. A wtedy zaczynają się schody. Dlatego w tych warunkach IF, muszę później określić które to będą.
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
no to teraz zmienia to wgl w zasadzie wszytko... To musisz to określić bo tak to nigdy nie dojdziemy do porozumienia
![]() |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 36 Dołączył: 1.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
A co sugerujesz? Pierwotnie widziałem to tak:
Kwestia tego bym mógł określić to jeszcze przed wykonaniem pętli. Ten post edytował kristaps 27.12.2013, 23:21:21 |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
teraz patrze na ten twój zrzut i widzę ze robisz to w klasie, to moje pytanie czy Ty to teraz chcesz wszytko robić w tej jednej metodzie? bo to trochę bez sensu.. zrób to tak pobierz jakaś metoda x data potem do wyświetlania masz ta co już masz, tylko dasz dane pobrane z metody x, a do tych operacji zrób nowa gdzie bd operował na danych które pobrałeś z metody x i tyle
![]() |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 36 Dołączył: 1.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
com, mógłbyś sklecić jakiś szybki kod, jak ewentualnie miałoby to wyglądać? Bo zrobiłem osobną funkcję, w której trzymam strukturę tabeli oraz resztę danych, ale nic się nie zmieniło - być może źle Cię zrozumiałem.
|
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 36 Dołączył: 1.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam, muszę odkopać temat i wrócić do skończenia tego skryptu, dlatego proszę o pomoc. Streszczę cały ten wątek.
Chcę wyświetać różny układ tabel w jednej pętli - w zależności od wybranego pliku i opcji. Załóżmy mam plik.csv oraz plik2.csv plik.csv Separator: ; Budowa pliku: nazwa towaru, ilość, cena Kod jabłko;2;11 plik2.csv Separator: | Budowa pliku: ilość, nazwa towaru, cena Kod 2|jabłko|11 Niżej kod:
Jak widać wyżej mnożymy na różnych $data, w zależności od tego jaką hurtownię wybiorę. No i mam pętlę i warunki:
Skrypt wyświetla pustą tabelę html, bez danych. Błąd jest rzecz jasna w tym, że tablica tworzona jest tutaj: Stąd moje pytanie jak to obejść, bo hurtowni mam sporo, a nie widzę sensu tworzenia osobnych pętli dla każdej z nich. com próbował pomóc, jednak nie do końca łapię jak miałbym zastosować jego ostatni post. Będę wdzięczny za pomoc, dzięki. Ten post edytował kristaps 27.04.2014, 21:14:18 |
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 112 Pomógł: 22 Dołączył: 11.04.2010 Skąd: Tarnów Ostrzeżenie: (0%) ![]() ![]() |
Nie orientuję się dobrze w Twoim temacie, ale z tego co widzę, najpierw deklarujesz parametry, a potem chcesz zastąpić zmienne, jednak PHP działa tak jakby od góry do dołu, więc wartości wykorzystywane w jednym miejscu nie będą dynamicznie aktualizowane jeśli gdzieś niżej zmienisz wartość zmiennej. Za to jest funkcja str_replace i możesz zrobić tak:
Natomiast co do sumy, możesz zmiennej $suma_brutto nadać jakieś wartości całkowite i korzystając ze switcha ( oczywiście switch w środku tej pętli, która czyta plik, i obliczoną wartość przypisujesz do $suma, a potem str_replace ) stosować odpowiednie obliczenia w zależności od tego jaką wartość ma $suma_brutto. Możesz również postąpić tak samo jak z $data korzystając z str_replace, a następnie zastoswać eval() (wiem może nie zbyt wydajne, ale za to będzie działać) tylko wtedy $suma_brutto ma być stringiem, a nie samymi obliczeniami. W dodatku możesz śmiało dodać str_replace dla wszystkich elementów tablicy $data, ponieważ nawet jeśli nie będziesz z jakiejś korzystał to str_replace po prostu jej nie znajdzie. Ten post edytował session 27.04.2014, 21:46:20 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 14:04 |