Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Dość złożony warunek do instrukcji if
Zbłąkany
post 25.06.2004, 15:42:45
Post #1


Administrator serwera


Grupa: Developerzy
Postów: 521
Pomógł: 13
Dołączył: 2.04.2004
Skąd: 52°24' N 16°56' E

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


Wyciągam z dwóch identycznych strukturalnie tabel dane. Żeby było śmieszniej jest 25 rekordów i każdy taki sam poza ostatnim. I chciałbym aby w razie obojetnie której wartości rożnej wykrywał mi ten warunek. Napisałem coś takiego, ale nie działa tak jak powinno, bo wywala, że w każdej linii sa różne wartości. Kombinowałem również z or, ale nie wiem gdzie robię błąd sad.gif
  1. <?php
  2. for($i=0;$i<$l_ms;$i++){
  3. if($adr_IdObiektu[$i]!==$madr_IdObiektu[$i]||$adr_TypAdresu[$i]!==$madr_TypAdresu[$i]||$adr_Nazwa[$i]!==$madr_Nazwa[$i]||$adr_NazwaPelna[$i]!==$madr_NazwaPelna[$i]||$adr_Telefon[$i]!==$madr_Telefon[$i]||$adr_Faks[$i]!==$madr_Faks[$i]||$adr_Ulica[$i]!==$madr_Ulica[$i]||$adr_NrDomu[$i]!==$madr_NrDomu[$i]||$adr_NrLokalu[$i]!==$madr_NrLokalu[$i]||$adr_Adres[$i]!==$madr_Adres[$i]||$adr_Kod[$i]!==$madr_Kod[$i]||$adr_Miejscowosc[$i]!==$madr_Miejscowosc[$i]||$adr_IdWojewodztwo[$i]!==$madr_IdWojewodztwo[$i]||$adr_IdPanstwo[$i]!==$madr_IdPanstwo[$i]||$adr_NIP[$i]!==$madr_NIP[$i]||$adr_Poczta[$i]!==$madr_Poczta[$i]||$adr_Gmina[$i]!==$madr_Gmina[$i]||$adr_Powiat[$i]!==$madr_Powiat[$i]||$adr_Skrytka[$i]!==$madr_Skrytka[$i]||$adr_Symbol[$i]!==$madr_Symbol[$i]){
  4. echo(&#092;"roznia sie - [$i]<br>\");
  5. }
  6. }
  7. ?>

Ma ktoś jakieś pomysły jak to wykonać??

Ten post edytował Zbłąkany 25.06.2004, 15:43:43


--------------------
Środowisko: Gentoo 2008.0 | Apache | PHP5 | PostgreSQL | MySQL | Postfix
Workstation: Gentoo 2008.0 | Firefox
Thomas Alva Edison: "Aby coś wynaleźć wystarczy odrobina wyobraźni i sterta złomu ..."
Odpowiedź na każde pytanie typu "Jak ...": "Nie da się, to nie PostgreSQL"
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Jojo
post 25.06.2004, 16:38:49
Post #2





Grupa: Zarejestrowani
Postów: 405
Pomógł: 1
Dołączył: 19.09.2003
Skąd: Lublin

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


1. Znak "różny od" to != a nie !==
2. Użyj nawiasów. Na przykład coś w tym stylu:
  1. <?php
  2. if( ( $adr_IdObiektu[$i] != $madr_IdObiektu[$i] ) || ( $adr_TypAdresu[$i] != $madr_TypAdresu[$i] ) )
  3. ?>


--------------------
Rozwój cywilizacji informatycznej to wyścig między programistami, którzy wytwarzają coraz łatwiejsze
programy użytkowe dla idiotów, a światem produkującym coraz lepszych gatunkowo idiotów.

Blog: Małolepszy.info
Go to the top of the page
+Quote Post
Zbłąkany
post 25.06.2004, 19:49:22
Post #3


Administrator serwera


Grupa: Developerzy
Postów: 521
Pomógł: 13
Dołączył: 2.04.2004
Skąd: 52°24' N 16°56' E

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


Niestety nic nie daje nadal jest tak samo sad.gif już nie mam pomysłów...


--------------------
Środowisko: Gentoo 2008.0 | Apache | PHP5 | PostgreSQL | MySQL | Postfix
Workstation: Gentoo 2008.0 | Firefox
Thomas Alva Edison: "Aby coś wynaleźć wystarczy odrobina wyobraźni i sterta złomu ..."
Odpowiedź na każde pytanie typu "Jak ...": "Nie da się, to nie PostgreSQL"
Go to the top of the page
+Quote Post
zalew
post 25.06.2004, 20:42:57
Post #4





Grupa: Zarejestrowani
Postów: 407
Pomógł: 0
Dołączył: 24.10.2002
Skąd: warszawa

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


  1. <?php
  2.  
  3. //wyciaganie danych z pierwszej tabeli
  4. while ($w = mysql_fetch_array($r)) {
  5. $porown[] = $w;
  6. }
  7. //wyciaganie danych z drugiej tabeli
  8. while ($w2 = mysql_fetch_array($r2)) {
  9. $porown2[] = $w2;
  10. }
  11.  
  12. //petla przez wszystkie rekordy pierwszej
  13. for ($i=0; $i<count($porown); $i++) {
  14. //petla przez wszystkie kolumny danego rekordu pierwszej
  15. for ($j=0; $j<count($porown[$i]); $j++) {
  16. //porownanie kazdej kolumny z odpowiadajaca kolumna w drugiej
  17. if ($porown[$i][$j] != $porown2[$i][$j]) $err++;
  18. }
  19. }
  20.  
  21. echo $err;
  22.  
  23. ?>

tam wyzej zamiast &#33 to "!" powinno byc

mozesz dorzucic sobie array_keys i zapisywac komunikaty na ktorym rekordzie i ktorej kolumnie to bedziesz mial cacko

Ten post edytował zalew 25.06.2004, 20:48:00


--------------------
Go to the top of the page
+Quote Post
Zbłąkany
post 25.06.2004, 23:36:39
Post #5


Administrator serwera


Grupa: Developerzy
Postów: 521
Pomógł: 13
Dołączył: 2.04.2004
Skąd: 52°24' N 16°56' E

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


zalew a mógłbyś mi napisać dokładnie o co chodzi w tym skrypcie bo neizbyt czaję, może to wynik zbyt długiego slęczenia przed monitorem albo mojej głupoty winksmiley.jpg w każdym razie będę wdzięczny za dodatkowy opis tego skryptu smile.gif cool.gif


--------------------
Środowisko: Gentoo 2008.0 | Apache | PHP5 | PostgreSQL | MySQL | Postfix
Workstation: Gentoo 2008.0 | Firefox
Thomas Alva Edison: "Aby coś wynaleźć wystarczy odrobina wyobraźni i sterta złomu ..."
Odpowiedź na każde pytanie typu "Jak ...": "Nie da się, to nie PostgreSQL"
Go to the top of the page
+Quote Post
zalew
post 27.06.2004, 01:15:24
Post #6





Grupa: Zarejestrowani
Postów: 407
Pomógł: 0
Dołączył: 24.10.2002
Skąd: warszawa

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


podales ze obie tabele sa identyczne
tak wiec ze spokojem zakladam, ze ilosc rekordow oraz klucze (kolumny) sa identyczne, a coz za tym idzie moge obojetnie ktora z nich (tablic danych) puscic w petli i w tej petli porownywac z druga..

jak pobierasz z bazy zapisuje to do tablicy, ktora ma forme np. taka:
$w[0]['imie'] = "jan"
$w[0]['nazwisko'] ="kowlaski"
$w[1]['imie'] = "zenek"
$w[1]['nazwisko'] ="nowak"
itd..

wiec pierwsza petla w moim powyzszym przykladzie ($i) leci przez rekordy, druga ($j) dla kazdego rekordu leci w petli przez kolumny... i po prostu porownuje wartosc
tabela_pierwsza[pierwszy_rekord][jakis_klucz] z tabela_druga[pierwszy_rekord][jakis_klucz]
przy wykryciu bledu inkrementuje ilosc napotkanych bledow i ci je wyswitela na koncu... uff..

poczytaj o tablicach wielowymiarowych, zrob sobie var_dump w srodku jakiegos mysql_fetch_array to latwiej zrozumiesz...

Ten post edytował zalew 27.06.2004, 01:16:37


--------------------
Go to the top of the page
+Quote Post
Zbłąkany
post 27.06.2004, 09:27:25
Post #7


Administrator serwera


Grupa: Developerzy
Postów: 521
Pomógł: 13
Dołączył: 2.04.2004
Skąd: 52°24' N 16°56' E

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


Ok poczytam sprawdzę i zrozumiem smile.gif thx zalew cool.gif szkoda, że pomógł nie mogę dać


-- Edytowany --

A jeśli typy kolumn w dwóch bazach są różne czy to ma wpływ na porównywanie??
Bo obydwie tabele są na innych bazach i ta drugą tabelę ja tworzę i analizując wartości z pierwszej przypisuję jej typ na "oko". Jakbym pomylił np VARCHAR z TEXT to będzie to mieć wpływ na dane przy porównywaniu??

Ten post edytował Zbłąkany 28.06.2004, 10:50:29


--------------------
Środowisko: Gentoo 2008.0 | Apache | PHP5 | PostgreSQL | MySQL | Postfix
Workstation: Gentoo 2008.0 | Firefox
Thomas Alva Edison: "Aby coś wynaleźć wystarczy odrobina wyobraźni i sterta złomu ..."
Odpowiedź na każde pytanie typu "Jak ...": "Nie da się, to nie PostgreSQL"
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 07:23