Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Dość złożony warunek do instrukcji if
Zbłąkany
post
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 (IMG:http://forum.php.pl/style_emoticons/default/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
Go to the top of the page
+Quote Post
Jojo
post
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. ?>
Go to the top of the page
+Quote Post
Zbłąkany
post
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 (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) już nie mam pomysłów...
Go to the top of the page
+Quote Post
zalew
post
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
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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) w każdym razie będę wdzięczny za dodatkowy opis tego skryptu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) (IMG:http://forum.php.pl/style_emoticons/default/cool.gif)
Go to the top of the page
+Quote Post
zalew
post
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
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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) thx zalew (IMG:http://forum.php.pl/style_emoticons/default/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
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 17.09.2025 - 17:15