Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP]Porównanie danych z dwóch tabel php (warunek IF)...?
artvip
post 25.11.2009, 11:35:43
Post #1





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 15.02.2009

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


Mam sobie kod:

<?php
$conn = mysql_connect("xxx","xxx","xxx");
mysql_select_db("xxx");
if (mysql_errno()) {
echo mysql_error() . ": " . mysql_errno() . "<br>n";
exit;
}
$query = "SELECT user FROM matryca group by user";

$result = mysql_query($query) or die(mysql_error());
$num_rows = mysql_num_rows($result);

for ($i=0; $i<$num_rows; $i++) {

$wiersz = mysql_fetch_array($result);

echo "<br />";
echo "<td>".$wiersz["user"]."</td>";
echo "</td>";

}

$query = "SELECT usersl, logi, badi, inne FROM Dane order by usersl";

$result = mysql_query($query) or die(mysql_error());
$num_rows = mysql_num_rows($result);

for ($i=0; $i<$num_rows; $i++) {

$wiersz = mysql_fetch_array($result);


echo "<td>".$wiersz["usersl"]."</td>";
echo "</td>";

}
?>

Chciałbym w jakiś sposób porównać wynik z query 1 tak aby do każdego unikalnego "User" odnalazł pasujące dane z query 2 i wyświetlił dane w postaci identycznych rekordów. Czyli dla User z bazy 1 znalazłem "jakieś" rekordy które zawierają sie w query 2 dla dla User z query 1. Podobne rozwiązanie zrobiłem MYSQL ale interesuje mnie rozwiązanie w PHP.

Kompletnie nie wiem jak się za to zabrać sad.gif Męczyłem się już array, array_diff a może wystarczy zwykłe if ? Pomoże ktoś?

Dzięki
Go to the top of the page
+Quote Post
korro
post 25.11.2009, 13:57:48
Post #2





Grupa: Zarejestrowani
Postów: 259
Pomógł: 42
Dołączył: 8.04.2005
Skąd: Mława

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


zacznij od zapoznania się z: http://www.php.net/manual/en/ref.array.php
w tych funkcjach na pewno znajdziesz coś dla siebie.


--------------------
Go to the top of the page
+Quote Post
thek
post 25.11.2009, 14:06:52
Post #3





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




W zależności od struktury danych jedynie inaczej byś na pętlach używał wyszukiwania elementów w drugiej tablicy.
W najwyższej pętli byś wybierał klucz wyszukiwania. Potem używał szukajki w drugiej tablicy i zwracał pewne wyniki, które obrabiałbyś. Potem kolejny klucz szukania i tak w kółko...

EDIT: Tutaj miałbyś szukanie po user z query1 i wpisy w query2 dla kolumny usersl zwykłym porównaniem
  1. foreach( $query1 AS $user ) {
  2. foreach( $query2 AS $logs) {
  3. if($user['user'] == $logs['usersl']) {
  4. //róbta co chceta
  5. }
  6. }
  7. }
No chyba, że znasz dokładnie klucz nazwy usera szukanego to najbardziej zewnętrzny foreach leci i tylko wewnętrzny jest w użyciu. Oczywiście najszybsza implementacja polega na optymalizacji. Jakiej? Userowie w $query1 są różni a tabela $query 2 w każdym przebiegu nie tylko szuka ale w przypadku znalezienia pasującego rekordu, po wypisaniu danych na ekran czy do jakiegokolwiek strumienia, usuwa go smile.gif Każdy więc przebieg pętli daje nam szansę na skrócenie kolejnych.

Ten post edytował thek 25.11.2009, 14:19:18


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
artvip
post 25.11.2009, 19:45:59
Post #4





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 15.02.2009

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


[font="Times New Roman"][size="3"] Thek,

doradź jeszcze proszę jak to osadzić w kodzie.. Rozumiem, że w pierwszej pętli robię klucz:

  1. <?php
  2. //połączenie z bazą
  3.  
  4. $query = "SELECT user FROM matryca group by user";
  5.  
  6. $results = mysql_query($query) or die(mysql_error());
  7. echo "<center><table border="1">n";
  8. while ($query = mysql_fetch_assoc($results)) {
  9. echo "<tr>n";
  10. foreach ($query as $user) {
  11.  
  12. echo "<td>n";
  13. echo $user;
  14. echo "</td>n";
  15. }
  16. echo "</tr>n";
  17. }
  18. echo "</table>n";
  19.  
  20. $query2 = "SELECT usersl, logi, badi, inne FROM Dane order by usersl";
  21.  
  22. $results2 = mysql_query($query2) or die(mysql_error());
  23. echo "<center><table border="1">n";
  24. while ($query2 = mysql_fetch_assoc($results2)) {
  25. echo "<tr>n";
  26.  
  27. // i tu mam problem z drugim foreach'em i czy na pewno tutaj powinien być ?
  28. [/size][/font] foreach( $query1 AS $user ) {
  29. foreach( $query2 AS $logs) {
  30. if($user['user'] == $logs['usersl']) {
  31. }
  32. }}}
  33. echo "</tr>n";
  34. }
  35. echo "</table>n";
  36. ?>
  37.  
  38. Rozwiązanie drugie które zrobiłem i na którym się zablokowałem to:
  39. [php]
  40. <?php
  41. //połączenie z bazą
  42.  
  43. $query = "SELECT user FROM matryca group by user";
  44.  
  45. $result = mysql_query($query) or die(mysql_error());
  46. $num_rows = mysql_num_rows($result);
  47.  
  48. for ($i=0; $i<$num_rows; $i++) {
  49.  
  50. $wiersz = mysql_fetch_array($result);
  51.  
  52. $array[$i] = array($wiersz["user"]);
  53.  
  54.  
  55. }
  56.  
  57. $query2 = "SELECT * FROM Dane";
  58.  
  59. $result2 = mysql_query($query2) or die(mysql_error());
  60. $num_rows2 = mysql_num_rows($result2);
  61.  
  62. for ($i=0; $i<$num_rows2; $i++) {
  63.  
  64. $wiersz2 = mysql_fetch_array($result2);
  65.  
  66. $array2[$i] = array($wiersz2["usersl"], $wiersz2["logi"], $wiersz2["badi"], $wiersz2["inne"]);
  67.  
  68. }
  69.  
  70. echo "<pre>";
  71. print_r($array);
  72. print_r($array2);
  73. echo "</pre>";
  74.  
  75. ?>


Może tutaj jakoś już łatwo z arraya porównywać ? Tylko problem w tym, że nie mogę dojść jak.. in_array myślę, że będzie najbardziej odpowiednie tylko jak.. Foreach'em też zapewne się da..

Blokada zaczyna mi się na samym początku.. if(....

Dzięki za wszelkie porady.
Go to the top of the page
+Quote Post
thek
post 25.11.2009, 21:16:50
Post #5





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




To zerknij sobie na spokojnie i pomyśl gdzie robisz porównanie smile.gif Masz w tej chwili dwie dwuwymiarowe tablice. Pierwsza z nich jest postaci:
  1. array( [0] => array([0] => 'user1'),
  2. [1] => array([0]=> 'user2'),
  3. [2] => array([0]=> 'user3')
  4. );

druga zaś to:
  1. array( [0] => array([0] => 'usersl1', [1] => 'logi1', [2] => 'badi1', [3]=> 'inne1'),
  2. [1] => array([0] => 'usersl2', [1] => 'logi2', [2] => 'badi2', [3]=> 'inne2'),
  3. [2] => array([0] => 'usersl3', [1] => 'logi3', [2] => 'badi3', [3]=> 'inne3')
  4. );

lub coś w ten deseń. Popatrz w jakich indeksach masz userów i co się zmienia winksmiley.jpg
To tablica tablic. Zmienia sie pierwszy indeks a user jest zawsze w indeksie 0 drugiego wymiaru w obu przypadkach. Wystarczy więc, że zrobisz foreach idący po tablicy userów i sprawdzający czy w drugiej pętli występuje również w tym samym miejscu ta sama osoba.

W efekcie sprowadza się to do:
  1. foreach( $array AS $users) { //tablica userów
  2. foreach($array2 AS $key => $dane) { //tablica danych
  3. if($users[0] == $dane[0] ) { //zauważ jakie indeksy tablic porównuję w strukturze obu!
  4. //tutaj sobie coś robię z uzyskanymi danymi
  5. unset $array2[$key]; //tak usuwasz dany rekord
  6. }
  7. }
  8. //size_checker
  9. }
Możesz optymalizować poprzez wyrzucanie potem odpowiedniego klucza z drugiej tablicy. Sprawi to fajną rzecz bo zmniejsza ową tablicę z danymi i gdy pętla przeskoczy do następnego usera, to danych będzie mniej, a więc będzie mniej pustych przebiegów i mniej if-ów smile.gif Z każdym krokiem pierwszej pętli foreach (czyli z kolejnymi userami) druga tablica się zmniejsza i niejako działanie przyspiesza. Możesz jeszcze ewentualnie ustawić w miejscu oznaczonym "size_checker" warunek, że jeśli wielkość $array2 będzie 0 to ma zrobić break i wyjść z foreach na amen. Wtedy pozbędziesz się być może wielu pustych przejść pętli.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
artvip
post 26.11.2009, 20:54:32
Post #6





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 15.02.2009

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


Dziękuję smile.gif Działa ale to tylko część efektu który chcę osiągnąć więc dalej proszę o pomoc.

Teraz trochę skomplikuję.

Tabela 1 jak i Tabela 2 może mieć różną ilość rekordów. Tabelę 1 i 2 łączy ta sama nazwa "user" .
Array 1
  1. [url="http://www.php.net/array"] array[/url]( [0] => [url="http://www.php.net/array"]array[/url]([0]=> 'user1', [1] => 'logi1', [2] => 'badi1'),
  2. [1] => [url="http://www.php.net/array"]array[/url]([0]=> 'user2', [1] => 'logi2', [2] => 'badi2'),
  3. [2] => [url="http://www.php.net/array"]array[/url]([0]=> 'user3', [1] => 'logi3', [2] => 'badi2'));

Array 2
  1. array( [0] => array([0] => 'usersl1', [1] => 'logisl1', [2] => 'badisl1', [3]=> 'innesl1'),
  2. [1] => array([0] => 'usersl2', [1] => 'logisl2', [2] => 'badisl2', [3]=> 'innesl2'),
  3. [2] => array([0] => 'usersl3', [1] => 'logisl3', [2] => 'badisl3', [3]=> 'innesl3')
  4. [3] => array([0] => 'usersl3', [1] => 'logisl4', [2] => 'badisl4', [3]=> 'innesl4');
  5.  
Chciałbym porównać nie tylko po "user" z query1:
"SELECT user FROM matryca group by user";

ale także po innych wartościach - przykład:

"SELECT user, logi, badi FROM matryca"; do

"SELECT usersl, logisl, badisl, innesl FROM Dane";

Cel to wyświetlenie wszystkich danych plus te unikalne z dwóch tabel. Z przykładu który wcześniej
podawałem wyciągam dane tylko porównując tab 1 z tab 2 a teraz chodzi o zrobienie w drugą stronę.

Czy mam zrobić kolejne query 3 i 4 plus array3 i array4 a później to jakoś porównać czy jest jakiś
inny sposób?

Jeżeli array3 i array4 to jak później pokazać, powiązać z array1 i array2.

Mam nadzieje że w miarę jest to zrozumiałe sad.gif

dzięki



http://www.php.net/array

Go to the top of the page
+Quote Post
thek
post 26.11.2009, 21:06:45
Post #7





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




No to wtedy jedynie zmieniasz odpowiednio warunek w IF, by pasował do Twojego problemu. Nic więcej smile.gif


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
artvip
post 26.11.2009, 21:52:29
Post #8





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 15.02.2009

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


hmm... rozważałem taką opcję smile.gif ale..

W przykładzie powyżej w array1 miałem tylko jedną wartość "users"

Teraz tych wartości będzie więcej:
$array[$i] = array($wiersz["usersl"], $wiersz["levelsl"], $wiersz2["NAMEsl"]);
$array2[$j] = array($wiersz2["user"], $wiersz2["emp"], $wiersz2["level"], $wiersz2["NAME"]);

jak zrobić w takim przypadku foreach:
  1. foreach( $array AS $users) {
  2. foreach($array2 AS $key => $dane) {
  3. if($users[0] == $dane[0] ) {
  4.  
  5. echo "<tr>";
  6. echo "<td><center>".$users[0]."</center></td>";
  7. echo "<td><center>".$dane[1]."</center></td>";
  8. echo "<td><center>".$dane[2]."</center></td>";
  9. echo "<td><center>".$dane[3]."</center></td>";
  10. echo "</tr>";
  11.  
  12. }
  13. }
  14. }

Powyżej było prosto. Była jedna wartość którą szukałem w 2 tabeli ale jak wartości jest więcej..?

  1. foreach( $array AS $users) {
  2. foreach($array2 AS $key => $dane) {
  3. if($users[0] == $dane[0] )
  4. if ($user[1] == $dane[1] {
  5.  
  6. itd? Definiując IFem interesujące mnie warunki?
  7. }
  8. }
  9. }


Dobrze myślę?
Go to the top of the page
+Quote Post
thek
post 26.11.2009, 22:00:32
Post #9





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Myślisz w dobrym kierunku. Możesz to określić odrębnymi if jeśli będziesz robić z nimi różne rzeczy, lub jeśli za każdym razem to samo, to już w jednym IF stosując kwantyfikator OR:
if(user[0] == user2[0] OR user[1] == user2[1] OR ...)
smile.gif Tylko w przypadku porównywania wielu opcji nie usuwaj wierszy, bo jeden może pasować do wielu.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
artvip
post 27.11.2009, 10:39:02
Post #10





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 15.02.2009

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


Mój foreach:

  1. foreach ($array as $users) {
  2. $z = $users[0];
  3.  
  4. foreach ($array2 as $key => $dane) {
  5. $a = $dane[0];
  6. $b = $dane[1];
  7. $c = $dane[2];
  8. $d = $dane[3];
  9.  
  10.  
  11.  
  12. foreach ($array3 as $key2 =>$dane2) {
  13. $e = $dane2[0];
  14. $f = $dane2[1];
  15. $g = $dane2[2];
  16. $h = $dane2[3];
  17. }}}


W moim przypadku na user'a (jakiegoś) mam:
- w tabeli 1: 13 rekordów
- w tabeli 2: 1 rekord
Efekt jest taki że jak to wrzucam w tabelę to w lewej kolumnie mam 13 elementów a w drugiej kolumnie mam powielony 13 razy jeden element z kolumny 2.

IFami mi nie wychodzi.. Tzn wychodzi mi ale pokazuje tylko 1 rekord z tabeli 1 i tabeli 2 co nie jest zgodne z danymi z bazy. Chciałbym żeby w polach gdzie nie ma odpowiedniego elementu była pusta wartość a nie powielenie.. Mogę to jakoś zrobić?

Dzięki
Go to the top of the page
+Quote Post
thek
post 27.11.2009, 13:09:02
Post #11





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




To ja się pytam... Czemu zagnieżdżasz 3 foreach wewnątrz 2 zamiast umieścić 3 foreach PO 2 ? winksmiley.jpg Skoro 2 foreach ma 13 rekordów, a 3 ma 1 rekord, to w wyniku masz 13 razy 1 rekord smile.gif Gdyby rekordów było więcej to masz x razy y rekordów w ostatnim foreach smile.gif Pomyśl zanim zaczniesz zagnieżdżać za bardzo.

Ten post edytował thek 27.11.2009, 13:10:09


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
artvip
post 27.11.2009, 15:00:31
Post #12





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 15.02.2009

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


Oczywiście racja, moje niedopatrzenie.

  1. foreach ($array as $users) {
  2.  
  3. $z = $users[0];
  4. foreach ($array2 as $key => $dane) {
  5.  
  6. $a = $dane[0];
  7. $b = $dane[1];
  8. $c = $dane[2];
  9. $d = $dane[3];
  10.  
  11. }
  12.  
  13. foreach ($array3 as $key2 =>$dane2) {
  14.  
  15. $e = $dane2[0];
  16. $f = $dane2[1];
  17. $g = $dane2[2];
  18. $h = $dane2[3];
  19.  
  20. }
  21.  
  22.  
  23. echo "<tr>";
  24. echo "<td>".$a."</td>";
  25. echo "<td>".$b."</td>";
  26. echo "<td>".$c."</td>";
  27. echo "<td>".$d."</td>";
  28. echo "<td>".$f."</td>";
  29. echo "<td>".$g."</td>";
  30. echo "<td>".$h."</td>";
  31. echo "</tr>";
  32.  
  33. }


tylko teraz jako wynik dostaję 1 rekord z tabeli I jeden rekord z tabeli II sad.gif
Go to the top of the page
+Quote Post
thek
post 27.11.2009, 15:50:52
Post #13





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




A gdzie zgubiłeś IFy? smile.gif Robiąc tak jak robisz nadpisujesz sobie zmienne od $a do $h cały czas. W sumie tak patrząc z innej perspektywy to skoro rozszerzona była tablica $users to masz nie tyle znowu ją gdzieś jeszcze raz przepychać jako trzecią, tylko sprawdzać kolejne jej wartości, każdą wartość z $users porównując z odpowiednią wartością w drugiej tablicy.
  1. foreach( $array AS $users) {
  2. foreach($array2 AS $key => $dane) {
  3. if($users[0] == $dane[0] ) {
  4. //tu jeśli userzy Ci sami
  5. }
  6. if($users[1] == $dane[1] ) {
  7. //tu jeśli logi te same
  8. }
  9. if($users[2] == $dane[2] ) {
  10. //tu jeśli badi te same
  11. }
  12. }
  13. }

Proszę... Myśl trochę sam bo to jest logika a na tym się opiera całe programowanie. Jeśli nie potrafisz myśleć logicznie to. Ja powoli widząc wyrywki Twojego kodu zaczynam się gubić co gdzie robisz i skąd biorą się nowe tablice oraz co zawierają. Dla mnie w tej chwili powinieneś mieć tylko dwie. Jedna z userami i ich danymi, a druga to jakaś rozszerzona. Wybierasz odpowiednie kolumny do porównania i jedziesz z tym koksem w sposób jak zaprezentowałem powyżej, tyle że zachowując odpowiednią pozycję kolumn. Jeśli masz w tych tablicach inną to zmieniasz odpowiednio i tyle. Jedyne co możesz zrobić dodatkowo to odpowiednio buforować wyniki by na końcu pętli lub kroku je wyświetlać, zależnie od upodobania.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
klez
post 30.01.2023, 12:16:58
Post #14





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 30.01.2023

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


Witam
Co zrobić gdy, mają się nie zgadzać.

  1. foreach( $array2 AS $key => $dane2 ) {
  2. foreach( $array AS $key => $dane){
  3.  
  4. if($dane[0] != $dane2[0]) { //sprawdzenie że nie ma!
  5. echo "<tr><td>".$l++."</td><td>".$dane['1']."</td><td>".$dane['2']."</td><td><b>".$dane['0']."</b></td><td>brak w bazie</td></tr>";
  6. }
  7. }
  8. }


W/w przykład nie działa

Ten post edytował klez 30.01.2023, 13:19:18
Go to the top of the page
+Quote Post
com
post 30.01.2023, 18:31:58
Post #15





Grupa: Zarejestrowani
Postów: 3 033
Pomógł: 366
Dołączył: 24.05.2012

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


a sprawdź co masz w tym array i array2 wink.gif
Go to the top of the page
+Quote Post
trueblue
post 30.01.2023, 18:49:35
Post #16





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Jeśli dane pochodzą z bazy, to znalezienie danych, które są w tabeli 1, a których brak w tabeli 2 i vice versa, można osiągnąć z pomocą zapytania OUTER JOIN bezpośrednio na bazie.

Jeśli silnik nie obsługuje OUTER JOIN, to: https://kawalekkodu.pl/gul-gul-na-full-czyl...er-join-w-mysql

Ten post edytował trueblue 30.01.2023, 18:50:00


--------------------
Go to the top of the page
+Quote Post
klez
post 31.01.2023, 10:07:22
Post #17





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 30.01.2023

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


to są 2 oddzielne bazy. zastosowanie JOIN nic nie daje.

  1.  
  2. $idb2 = mysql_connect ($db_s2, $db_u2, $db_p2) or die ($db_error01);
  3. mysql_set_charset('utf8', $idb2);
  4. mysql_select_db ($db_d2, $idb2) or die ($db_error02);
  5.  
  6. $idb1 = mysql_connect ($db_s1, $db_u1, $db_p1) or die ($db_error01);
  7. mysql_set_charset('utf8', $idb1);
  8. mysql_select_db ($db_d1, $idb1) or die ($db_error02);
  9.  
  10.  
  11. $num_rows = mysql_num_rows($wynik);
  12.  
  13. for ($i=0; $i<$num_rows; $i++) {
  14. $wrsz = mysql_fetch_array($wynik);
  15. $array[$i] = array($wrsz['RIGHT(nr_gwarancji, 6)'], $wrsz['idmonter_id'], $wrsz['data_zmiany']);
  16.  
  17. $num_rows2 = mysql_num_rows($wynik2);
  18.  
  19. for ($i=0; $i<$num_rows2; $i++) {
  20. $gwar = mysql_fetch_array($wynik2);
  21. $array2[$i] = array($gwar['RIGHT(nrg, 6)'], $gwar['kod_firmy_montujacej']);
  22.  
  23. }
  24.  
  25. foreach( $array2 AS $key => $dane2 ) {
  26.  
  27. foreach( $array AS $key => $dane){
  28.  
  29. if($dane[0] === $dane2[0]) { //to działa!
  30. echo "<tr><td>".$l++."</td><td>".$dane['1']."</td><td>".$dane['2']."</td><td><b>".$dane['0']."</b></td><td>Są w bazie</td></tr>";
  31. }
  32. }
  33. }


ale chcę sprawdzić czego mi brak w danych

  1. if($dane[0] !== $dane2[0]) {
  2.  
  3. echo "<tr><td>".$l++."</td><td>".$dane['1']."</td><td>".$dane['2']."</td><td><b>".$dane['0']."</b></td><td>Są w bazie</td></tr>";
  4. }

i to nie działa sad.gif
Go to the top of the page
+Quote Post
trueblue
post 31.01.2023, 11:04:45
Post #18





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


1. Nie JOIN, a OUTER JOIN.
2. Możliwe jest wykonywanie zapytania łączącego tabele z dwóch oddzielnych baz.
3. W Twoim kodzie brak zapytań SQL - dane nie pojawią się znikąd.


--------------------
Go to the top of the page
+Quote Post
klez
post 31.01.2023, 11:20:37
Post #19





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 30.01.2023

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


zapytania SQl
  1.  
  2. $sSQL2 = "SELECT RIGHT(nrg, 6), `kod_firmy_montujacej` FROM `gwarancje` WHERE `dta_zapisu` BETWEEN '$data_poczg' AND '$data_zakog' GROUP BY `nrg`, `kod_firmy_montujacej` ORDER BY `gwarancje`.`dta_zapisu` DESC LIMIT $limg";
  3. $wynik2 = mysql_query ($sSQL2, $idb2) or die ($db_error03);
  4.  
  5. $sSQL1 = "SELECT RIGHT(nr_gwarancji, 6),`idmonter_id`, `data_zmiany` FROM `homologator_gwarancja` WHERE `data_zmiany` BETWEEN '$data_pocz' AND '$data_zako' GROUP BY `nr_gwarancji`, `idmonter_id` ORDER BY `homologator_gwarancja`.`data_zmiany` DESC LIMIT $limh";
  6. $wynik = mysql_query ($sSQL1, $idb1) or die ($db_error03);


pierwszego jeszt 116 array
  1. [116] => Array
  2. (
  3. [0] => 631516
  4. [1] => 0996
  5. [2] => 2023-01-30 05:55:35
  6. )
  7.  


a drugiego 41
  1. [41] => Array
  2. (
  3. [0] => 633127
  4. [1] => 0963
  5. )


i chce wiedziec jakich barkuje zeby było 116 z prawiei i 116 z lewej

Ten post edytował klez 31.01.2023, 12:24:01
Go to the top of the page
+Quote Post
trueblue
post 31.01.2023, 12:19:33
Post #20





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


1. Nie wiem czy masz zdefiniowane $limg oraz $limh.
2. Do porównania należałoby raczej użyć array_intersect/array_diff/porównania całych tablic (==).


--------------------
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 27.04.2024 - 06:54