Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Porównywania ciąg dalszy
Forum PHP.pl > Forum > PHP
Zbłąkany
Dwie bazy, dwie tabele, taka sama struktura i jak porównuję je ze sobą i chcę sprawdzić które pola nie są takie same(wartość ta sama) to mi się gubi i wyskakują totalne głupoty. Oto kod:

  1. <?php
  2.  
  3. $host_ms = &#092;"(local)INSERTGT\";
  4. $user_ms = &#092;"sa\";
  5. $pass_ms = &#092;"\";
  6. $db_name_ms = &#092;"czarownik\";
  7. $host_my = &#092;"localhost\";
  8. $user_my = &#092;"root\";
  9. $pass_my = &#092;"batonix\";
  10. $db_name_my = &#092;"sklep_internetowy\";
  11. $pole0 = &#092;"adr_Id\";
  12. $pole1 = &#092;"adr_IdObiektu\";
  13. $pole2 = &#092;"adr_TypAdresu\";
  14. $pole3 = &#092;"adr_Nazwa\";
  15. $pole4 = &#092;"adr_NazwaPelna\";
  16. $pole5 = &#092;"adr_Telefon\";
  17. $pole6 = &#092;"adr_Faks\";
  18. $pole7 = &#092;"adr_Ulica\";
  19. $pole8 = &#092;"adr_NrDomu\";
  20. $pole9 = &#092;"adr_NrLokalu\";
  21. $pole10 = &#092;"adr_Adres\";
  22. $pole11 = &#092;"adr_Kod\";
  23. $pole12 = &#092;"adr_Miejscowosc\";
  24. $pole13 = &#092;"adr_IdWojewodztwo\";
  25. $pole14 = &#092;"adr_IdPanstwo\";
  26. $pole15 = &#092;"adr_NIP\";
  27. $pole16 = &#092;"adr_Poczta\";
  28. $pole17 = &#092;"adr_Gmina\";
  29. $pole18 = &#092;"adr_Powiat\";
  30. $pole19 = &#092;"adr_Skrytka\";
  31. $pole20 = &#092;"adr_Symbol\";
  32. $nr0 = &#092;"0\";
  33. $nr1 = &#092;"1\";
  34. $nr2 = &#092;"2\";
  35. $nr3 = &#092;"3\";
  36. $nr4 = &#092;"4\";
  37. $nr5 = &#092;"5\";
  38. $nr6 = &#092;"6\";
  39. $nr7 = &#092;"7\";
  40. $nr8 = &#092;"8\";
  41. $nr9 = &#092;"9\";
  42. $nr10 = &#092;"10\";
  43. $nr11 = &#092;"11\";
  44. $nr12 = &#092;"12\";
  45. $nr13 = &#092;"13\";
  46. $nr14 = &#092;"14\";
  47. $nr15 = &#092;"15\";
  48. $nr16 = &#092;"16\";
  49. $nr17 = &#092;"17\";
  50. $nr18 = &#092;"18\";
  51. $nr19 = &#092;"19\";
  52. $nr20 = &#092;"20\";
  53. $nr21 = &#092;"21\";
  54. $ilosc = &#092;"21\";
  55.  
  56. $conn_ms1 = mssql_connect($host_ms,$user_ms,$pass_ms);
  57. mssql_select_db($db_name_ms, $conn_ms1);
  58. $query_ms1 = &#092;"SELECT adr_Id,adr_IdObiektu,adr_TypAdresu,adr_Nazwa,adr_NazwaPelna,adr_Tele
    f
  59. n,adr_Faks,adr_Ulica,adr_NrDomu,adr_NrLokalu,adr_Adres,adr_Kod,adr_Miejscowosc,a
  60. r_IdWojewodztwo,adr_IdPanstwo,adr_NIP,adr_Poczta,adr_Gmina,adr_Powiat,adr_Skrytk
  61. ,adr_Symbol FROM adr__Ewid ORDER BY adr_Id DESC\";
  62. $exec_ms1 = mssql_query($query_ms1);
  63.  
  64. for($i=0;$i<mssql_num_rows($exec_ms1);$i++){
  65. $result_ms1 = mssql_fetch_row($exec_ms1);
  66. $w[$i][$nr0] = $result_ms1[0];
  67. $w[$i][$nr1] = $result_ms1[1];
  68. $w[$i][$nr2] = $result_ms1[2];
  69. $w[$i][$nr3] = $result_ms1[3];
  70. $w[$i][$nr4] = $result_ms1[4];
  71. $w[$i][$nr5] = $result_ms1[5];
  72. $w[$i][$nr6] = $result_ms1[6];
  73. $w[$i][$nr7] = $result_ms1[7];
  74. $w[$i][$nr8] = $result_ms1[8];
  75. $w[$i][$nr9] = $result_ms1[9];
  76. $w[$i][$nr10] = $result_ms1[10];
  77. $w[$i][$nr11] = $result_ms1[11];
  78. $w[$i][$nr12] = $result_ms1[12];
  79. $w[$i][$nr13] = $result_ms1[13];
  80. $w[$i][$nr14] = $result_ms1[14];
  81. $w[$i][$nr15] = $result_ms1[15];
  82. $w[$i][$nr16] = $result_ms1[16];
  83. $w[$i][$nr17] = $result_ms1[17];
  84. $w[$i][$nr18] = $result_ms1[18];
  85. $w[$i][$nr19] = $result_ms1[19];
  86. $w[$i][$nr20] = $result_ms1[20];
  87.  
  88. }
  89.  
  90. $conn_ms2 = mssql_connect($host_ms,$user_ms,$pass_ms);
  91. mssql_select_db($db_name_ms, $conn_ms2);
  92. $query_ms2 = \"SELECT COUNT(*) FROM adr__Ewid\";
  93. $exec_ms2 = mssql_query($query_ms2);
  94. $result_ms2 = mssql_fetch_row($exec_ms2);
  95.  
  96. $conn_my1 = mysql_connect($host_my, $user_my, $pass_my);
  97. mysql_select_db($db_name_my, $conn_my1);
  98. $query_my1 = \"SELECT adr_Id,adr_IdObiektu,adr_TypAdresu,adr_Nazwa,adr_NazwaPelna,adr_Telef
  99. n,adr_Faks,adr_Ulica,adr_NrDomu,adr_NrLokalu,adr_Adres,adr_Kod,adr_Miejscowosc,a
  100. r_IdWojewodztwo,adr_IdPanstwo,adr_NIP,adr_Poczta,adr_Gmina,adr_Powiat,adr_Skrytk
  101. ,adr_Symbol FROM adr__ewid ORDER BY adr_Id DESC\";
  102. $exec_my1 = mysql_query($query_my1);
  103.  
  104. for($i=0;$i<mysql_num_rows($exec_my1);$i++){
  105. $result_my1 = mysql_fetch_row($exec_my1);
  106. $w2[$i][$nr0] = $result_my1[0];
  107. $w2[$i][$nr1] = $result_my1[1];
  108. $w2[$i][$nr2] = $result_my1[2];
  109. $w2[$i][$nr3] = $result_my1[3];
  110. $w2[$i][$nr4] = $result_my1[4];
  111. $w2[$i][$nr5] = $result_my1[5];
  112. $w2[$i][$nr6] = $result_my1[6];
  113. $w2[$i][$nr7] = $result_my1[7];
  114. $w2[$i][$nr8] = $result_my1[8];
  115. $w2[$i][$nr9] = $result_my1[9];
  116. $w2[$i][$nr10] = $result_my1[10];
  117. $w2[$i][$nr11] = $result_my1[11];
  118. $w2[$i][$nr12] = $result_my1[12];
  119. $w2[$i][$nr13] = $result_my1[13];
  120. $w2[$i][$nr14] = $result_my1[14];
  121. $w2[$i][$nr15] = $result_my1[15];
  122. $w2[$i][$nr16] = $result_my1[16];
  123. $w2[$i][$nr17] = $result_my1[17];
  124. $w2[$i][$nr18] = $result_my1[18];
  125. $w2[$i][$nr19] = $result_my1[19];
  126. $w2[$i][$nr20] = $result_my1[20];
  127. }
  128.  
  129. $conn_my2 = mysql_connect($host_my,$user_my,$pass_my);
  130. mysql_select_db($db_name_my, $conn_my2);
  131. $query_my2 = \"SELECT COUNT(*) FROM adr__ewid\";
  132. $exec_my2 = mysql_query($query_my2);
  133. $result_my2 = mysql_fetch_row($exec_my2);
  134.  
  135. $ilosc1 = count($w);
  136. $ilosc2 = $result_my2[0];
  137.  
  138. if($result_my2[0]==\"0\"){
  139. for($i=0;$i<count($w);$i++){
  140.  
  141. $conn_my3 = mysql_connect($host_my,$user_my,$pass_my);
  142. mysql_select_db($db_name_my, $conn_my3);
  143. $query_my3 = \"INSERT INTO adr__ewid (adr_Id, adr_IdObiektu, adr_TypAdresu, adr_Nazwa, adr_NazwaPelna, adr_Telefon
  144.  adr_Faks, adr_Ulica, adr_NrDomu, adr_NrLokalu, adr_Adres, adr_Kod, adr_Miejscow
  145. sc, adr_IdWojewodztwo, adr_IdPanstwo, adr_NIP, adr_Poczta, adr_Gmina, adr_Powiat
  146.  adr_Skrytka, adr_Symbol) VALUES ('\".$w[$i][$nr0].\"', '\".$w[$i][$nr1].\"', '\".$w[$i][$nr2].\"', '\".$w[$i][$nr3].\"', '\".$w[$i][$nr4].\"', '\".$w[$i][$nr5].\"', '\".$w[$i][$nr6].\"', '\".$w[$i][$nr7].\"', '\".$w[$i][$nr8].\"', '\".$w[$i][$nr9].\"', '\".$w[$i][$nr10].\"', '\".$w[$i][$nr11].\"', '\".$w[$i][$nr12].\"', '\".$w[$i][$nr13].\"', '\".$w[$i][$nr14].\"', '\".$w[$i][$nr15].\"', '\".$w[$i][$nr16].\"', '\".$w[$i][$nr17].\"', '\".$w[$i][$nr18].\"', '\".$w[$i][$nr19].\"', '\".$w[$i][$nr20].\"')\";
  147. $exec_my3 = mysql_query($query_my3);
  148.  
  149. }
  150. }
  151.  
  152. $err = \"0\";
  153.  
  154. for($i=0;$i<$ilosc1;$i++){
  155. for($nr=0;$nr<$ilosc;$nr++){
  156.  
  157. if($w[$i][$nr]!=$w2[$i][$nr]){
  158. $err++;
  159. echo \"{$w[$i][$nr]} jest rozne od {$w2[$i][$nr]}<br>\";
  160. }
  161.  
  162. }
  163. }
  164. echo \"$err\";
  165. ?>


Wartość zmiennej $err jest równa ilości pól w tabeli pierwszej (we wszystkich rekordach).
mls
Przepisz ten kod na nowo, skracając go o ponad połowę - użyj pętli, etc. Nie wiem czy ktoś Ci z tym pomoże, bo mało kto się w tym kodzie rozezna, poza Tobą tongue.gif
Zbłąkany
mls krótszy już być nie może, a więcej pętli dać nie mogę :-)
kszychu
Cytat(Zbłąkany @ 2004-06-29 13:24:39)
mls krótszy już być nie może, a więcej pętli dać nie mogę :-)

Ale jak skrócę go o kilkadziesiąt linii, to stawiasz kate piwa! :-D
dr_bonzo
No to mamy piwo biggrin.gif
  1. <?php
  2.  
  3. $host_ms = '(local)INSERTGT';
  4. $user_ms = 'sa';
  5. $pass_ms = '';
  6. $db_name_ms = 'czarownik';
  7. $host_my = 'localhost';
  8. $user_my = 'root';
  9. $pass_my = 'batonix';
  10. $db_name_my = 'sklep_internetowy';
  11.  
  12. $ilosc_kolumn = 21;
  13.  
  14. $conn_ms1 = mssql_connect( $host_ms, $user_ms, $pass_ms );
  15. mssql_select_db( $db_name_ms, $conn_ms1 );
  16. $query_ms1 = 'SELECT * FROM adr__Ewid ORDER BY adr_Id DESC';
  17. $exec_ms1 = mssql_query( $query_ms1 );
  18.  
  19. while ( $w[] = mssql_fetch_row( $exec_ms1 ) )
  20. {
  21.   // pusta petla
  22. }
  23. array_pop( $w ); // usuniecie ostatniego elementu, ktory jest === FALSE
  24.  
  25. mssql_select_db( $db_name_ms, $conn_ms1 );
  26. $query_ms2 = 'SELECT COUNT(*) FROM adr__Ewid';
  27. $exec_ms2 = mssql_query( $query_ms1 );
  28. $result_ms2 = mssql_fetch_row( $exec_ms2 );
  29.  
  30. $conn_my1 = mysql_connect( $host_my, $user_my, $pass_my );
  31. mysql_select_db( $db_name_my, $conn_my1 );
  32. $query_my1 = 'SELECT * FROM adr__ewid ORDER BY adr_Id DESC';
  33. $exec_my1 = mysql_query( $query_my1 );
  34.  
  35. while ( $w2[] = mysql_fetch_row( $exec_my1 ) )
  36. {
  37.   // pusta petla
  38. }
  39. array_pop( $w2 ); // usuniecie ostatniego elementu, ktory jest === FALSE
  40.  
  41. mysql_select_db( $db_name_my, $conn_my1 );
  42. $query_my2 = 'SELECT COUNT(*) FROM adr__ewid';
  43. $exec_my2 = mysql_query( $query_my2 );
  44. $result_my2 = mysql_fetch_row( $exec_my2 );
  45.  
  46. $ilosc1 = count( $w );
  47. $ilosc2 = $result_my2[ 0 ];
  48.  
  49. if( $result_my2[ 0 ] == 0 ) // jesli brak rekordow w tabeli MySQL...
  50. {
  51.   mysql_select_db( $db_name_my, $conn_my1 );
  52.   for( $i = 0; $i < count( $w ); $i++ )
  53.   {
  54.     $query_my3 = 'INSERT INTO adr__ewid VALUES ( ';
  55.     for ( $j = 0; $j < $ilosc_kolumn; $j++ )
  56.     {
  57.       $query_my3 .= &#092;"'\" . $w[ $i ][ $j ] . \"', \";
  58.     }
  59.     $query_my3 .= ')';    
  60.     $exec_my3 = mysql_query($query_my3);
  61.   }
  62. }
  63.  
  64. $err = &#092;"0\";
  65.  
  66. for( $i = 0; $i < $ilosc1; $i++ )
  67. {
  68.   for( $j = 0; $j < $ilosc_kolumn; $j++ )
  69.   {
  70.     if( $w[ $i ][ $j ] != $w2[ $i ][ $j ] )
  71.     {
  72.       $err++;
  73.       echo &#092;"{$w[ $i ][ $j ]} jest rozne od {$w2[ $i ][ $j ]}<br>\";
  74.     }
  75.   }
  76. }
  77. echo &#092;"$err\";
  78. ?>


Nie sprawdzalem czy dziala, nie mam jak - jest to tylko skrocona wersja kodu.
--------------------------------
EDIT: wyrzucilem zbedne polaczenia z baza z petli
Zbłąkany
kszychu nie stawiam bo to nie ty skróciłeś winksmiley.jpg dr_bonzo nie masz piwa bo to kszychu je chcial dostać, ale się spóźnił, bo byłeś szybszy cool.gif ale co mi tam niech strace postawie wam po piwie biggrin.gif , a ktoś może wie dlaczego jak porównuje te wartości to obojętnie czy są różne czy równe to i tak nabija mi błędy?? zapomniałem dodać, że sprawdzałem to na symbolu != i na == więc gdzieś coś jest nie halo...
tylko ciekawe gdzie...
dr_bonzo
Nie wiem czemu to nie dziala.

A co do piwa:
Pisalem "No to mamy piwo" -- mialem na mysli mnie i kszycha. smile.gif
Zbłąkany
dr_bonzo co do piwa to pomyślimy od odbiorze smile.gif
a szkoda, że na razie nikt nie wpadł na pomysł rozwiązania tego problemu sad.gif
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.