Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Dość złożony warunek do instrukcji if
Forum PHP.pl > Forum > PHP
Zbłąkany
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ć??
Jojo
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. ?>
Zbłąkany
Niestety nic nie daje nadal jest tak samo sad.gif już nie mam pomysłów...
zalew
  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
Zbłąkany
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
zalew
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...
Zbłąkany
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??
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.