Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] CSV + edycja danych
Forum PHP.pl > Forum > Przedszkole
Nico~
Cześć!

Mam oto taki problem i próbuję go rozgryźć.
Zaczytuję sobie z pliku CSV powiedzmy wyciągi bankowe i każda kolumna arkusza ląduje odpowiednio w kolejnej tablicy.
Wyciągam sobie dane jakie mi są potrzebne czyli: data, kategoria płatności, rachunek odbiorcy, rachunek nadawcy, kwota, tytuł przelewu.
Chciałbym aby rachunek odbiorcy i rachunek nadawcy pokazywał się w kolumnie rachunek, ale z wykluczeniem mojego numeru kont tj. 20 000 000 000 000 000 000 000 000.

I problem polega na tym, że kod nie widzi tego numeru bankowego jeżeli oczywiście dobrze to przeanalizowałem.
Oto kod, może ktoś ma jakiś pomysł?


  1. //RACHUNEK
  2. $rachunekNadawca = $dane[8];
  3. $rachunekOdbiorca = $dane[15];
  4.  
  5. if ($rachunekNadawca === "20 000 000 000 000 000 000 000 000") {
  6. $rachunekNadawca = null;
  7. }
  8.  
  9. if ($rachunekOdbiorca === "20 000 000 000 000 000 000 000 000") {
  10. $rachunekOdbiorca = null;
  11. }
  12.  
  13. if (empty($rachunekNadawca)) {
  14. $rachunek = $rachunekOdbiorca;
  15. }
  16.  
  17. else {
  18. $rachunek = $rachunekNadawca;
  19. }
trueblue
Sprawdź:
  1. var_dump($dane[8]);
  2. var_dump($dane[15]);
Nico~
Zwraca poza tabelą:
string(32) z numerem konta
trueblue
A numer konta w Twoim kodzie, pomimo, że przykładowy ma 34 znaki.
Na pewno porównujesz poprawnej ciągi znaków?
Nico~
Poprawiłem format przelewu przykładowego, ale nadal to samo.

  1. //RACHUNEK
  2. $rachunekNadawca = $dane[8];
  3. $rachunekOdbiorca = $dane[15];
  4.  
  5. if ($rachunekNadawca === "20 1940 1076 3159 9000 0000 0000") {
  6. $rachunekNadawca = null;
  7. }
  8.  
  9. if ($rachunekOdbiorca === "20 1940 1076 3159 9000 0000 0000") {
  10. $rachunekOdbiorca = null;
  11. }
  12.  
  13. if (empty($rachunekNadawca)) {
  14. $rachunek = $rachunekOdbiorca;
  15. }
  16.  
  17. else {
  18. $rachunek = $rachunekNadawca;
  19. }
nospor
Masz podwojna spacje w jednym miejscu.

Kurcze zrob vardump na obu wartosciach co porownujesz a nie latasz z takimi pierdami na forum tongue.gif
Nico~
Wszystkie spacje się zgadzają i znaki, wyrzuca mi string(32) numer konta, poza tym nadal wyświetla mi te konto przykładowe w niektórych wynikach.
Chyba, że to ja coś przekombinowałem w tych pętlach if
nospor
Jesli twierdzisz ze ciagi wizualnie sa takie same, znaczy ze zamiast spacji raz masz inne biale znaki.
Nico~
Właśnie kilka razy przepisałem ten numer z palca i myślę, że nie ma opcji aby tam był jakiś biały znak. Poza tym jak to sprawdzić by mieć pewność?
trueblue
Jak powinien działać ten warunek jeśli:
- obydwa numery nie są Twoje,
- obydwa numery są Twoje,
- numer nadawcy jest Twój, a odbiorcy nie,
- numer odbiorcy jest Twój, a nadawcy nie?
nospor
Cytat
Właśnie kilka razy przepisałem ten numer z palca i myślę, że nie ma opcji aby tam był jakiś biały znak.

Ale ja nie mowie o tym: "20 1940 1076 3159 9000 0000 0000"
tylko o numerach pochodzacych z $dane. Przeciez rownie dobrze tam moze byc zle
Nico~
Cytat(trueblue @ 23.03.2022, 11:18:42 ) *
Jak powinien działać ten warunek jeśli:
- obydwa numery nie są Twoje,
- obydwa numery są Twoje,
- numer nadawcy jest Twój, a odbiorcy nie,
- numer odbiorcy jest Twój, a nadawcy nie?


Sprawa wygląda tak, że w wyciągu bankowym mój numer bankowy pojawia się raz po stronie Nadawcy a raz po stronie Odbiorcy w zależności od tego jaki przelew został wykonany.
Zmierzam do tego, aby mój numer bankowy został po prostu pominięty i tylko pojawiał się numer bankowy na który wyszedł przelew od mnie/z którego przyszedł do mnie przelew.

Rozwiązałem to chyba tak, żeby warunek jeżeli działał tak:
- jeżeli rachunek nadawcy równa się mojemu rachunkowi to nadawca równa się 0.
- jeżeli rachunek odbiorcy równa się mojemu rachunkowi to odbiorca równa się 0.
- jeżeli nadawca równa się 0 to przejmuje rachunek odbiorcy.
- jeżeli się nie spełni wyżej warunek to rachunek równa się rachunek nadawcy.

Chyba, że to zbyt na około bardzo zrobiłem?

Cytat(nospor @ 23.03.2022, 11:26:26 ) *
Ale ja nie mowie o tym: "20 1940 1076 3159 9000 0000 0000"
tylko o numerach pochodzacych z $dane. Przeciez rownie dobrze tam moze byc zle


Dane pochodzą z csv, jest to wyciąg bankowy wygenerowany prosto z banku.
trueblue
Cytat(Nico~ @ 23.03.2022, 11:35:57 ) *
- jeżeli rachunek nadawcy równa się mojemu rachunkowi to nadawca równa się 0.
- jeżeli rachunek odbiorcy równa się mojemu rachunkowi to odbiorca równa się 0.
- jeżeli nadawca równa się 0 to przejmuje rachunek odbiorcy.

A jeśli odbiorca to Twój i nadawca, to Twój?
Jak dla mnie, to bardzo zagmatwane.
Co wyświetlasz docelowo. Jeden numer rachunku, czy dwa?
Nico~
Cytat(trueblue @ 23.03.2022, 11:41:54 ) *
A jeśli odbiorca to Twój i nadawca, to Twój?
Jak dla mnie, to bardzo zagmatwane.
Co wyświetlasz docelowo. Jeden numer rachunku, czy dwa?



Chciałbym wyświetlać jeden numer bankowy, każdy poza moim czyli tym 20 0000 0000 ....
A nie ma możliwości abym był nadawcą i odbiorcą w jednym przelewie.
trueblue
A jeśli nadawca i odbiorca, to nie Ty, to który z nich wyświetlasz?
Nico~
Mam wyciąg przelewów powiedzmy taki:

data, nadawca, odbiorca, tytuł, kwota
23.03.2022, numer bankowy marek, NUMER BANKOWY JA, Pożyczka, +1000
24.03.2022, NUMER BANKOWY JA, numer bankowy marek, Zwrot pożyczki, -1000

Mój cel jest taki, aby wyświetlać transakcje kto mi/ albo komu ja.
Przykład
23.03.2022, marek, pożyczka, +1000
24.03.2022, marek, zwrot pożyczki, -1000
trueblue
Sprawdź tak:

  1. $rachunek = $nadawca === 'moj_numer' ? $odbiorca : $nadawca;
Nico~
Nie działa aby był zamierzony efekt + zostawia puste pole w przypadku gdy nie ma wpisanego jednego numeru konta odbiorcy/nadawcy.
trueblue
  1. if($odbiorca !=='x' && $nadawca !=='x'){
  2. if($odbiorca === 'x'){
  3. $rachunek=$nadawca;
  4. $typ='pożyczka';
  5. }
  6. if($nadawca === 'x'){
  7. $rachunek=$odbiorca;
  8. $typ='zwrot';
  9. }
  10. echo $rachunek.' '.$typ;
  11. }


Nie wiem co oznacza, że nie ma wpisanego jednego numeru konta. W niektórych rekordach brak numerów konta?
Nico~
Dobra wcześniej przekombinowałem, teraz wrzuciłem takie coś i mam swoje efekty zamierzone:

  1.  
  2. $rachunekNadawca = $dane[8];
  3. $rachunekOdbiorca = $dane[15];
  4.  
  5. if ($rachunekNadawca === 'rachunek') {
  6. $rachunekNadawca = null;
  7. $rachunek = $rachunekNadawca . $rachunekOdbiorca;
  8. }
  9.  
  10. elseif ($rachunekOdbiorca === 'rachunek') {
  11. $rachunekOdbiorca = null;
  12. $rachunek = $rachunekNadawca . $rachunekOdbiorca;
  13. }
  14. else {
  15. $rachunek = $rachunekNadawca . $rachunekOdbiorca;
  16. }
nospor
Miejze litosc. skoro cos ustawiasz na null to juz tego nei dodawaj potem

  1. if ($rachunekNadawca === 'rachunek') {
  2. $rachunekNadawca = null;
  3. $rachunek = $rachunekOdbiorca;
  4. }
  5.  
  6. elseif ($rachunekOdbiorca === 'rachunek') {
  7. $rachunekOdbiorca = null;
  8. $rachunek = $rachunekNadawca ;
  9. }
  10. else {
  11. $rachunek = $rachunekNadawca . $rachunekOdbiorca;
  12. }
Nico~
Cytat(nospor @ 23.03.2022, 13:40:23 ) *
Miejze litosc. skoro cos ustawiasz na null to juz tego nei dodawaj potem

  1. if ($rachunekNadawca === 'rachunek') {
  2. $rachunekNadawca = null;
  3. $rachunek = $rachunekOdbiorca;
  4. }
  5.  
  6. elseif ($rachunekOdbiorca === 'rachunek') {
  7. $rachunekOdbiorca = null;
  8. $rachunek = $rachunekNadawca ;
  9. }
  10. else {
  11. $rachunek = $rachunekNadawca . $rachunekOdbiorca;
  12. }


o tototot właśnie do tego doszedłem i chciałem pozostawić to w takiej postaci smile.gif
nospor
Moglbys to jeszcze w ogole sprowadzic do czegos takiego

  1. if ($rachunekNadawca === 'rachunek') {
  2. $rachunekNadawca = null;
  3. }
  4.  
  5. elseif ($rachunekOdbiorca === 'rachunek') {
  6. $rachunekOdbiorca = null;
  7. }
  8. $rachunek = $rachunekNadawca . $rachunekOdbiorca;

Krotsze, mniej zagniezdzen, bardziej czytelne
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.