Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Jak wyświetlić powtarzające się rekordy z tablic
Forum PHP.pl > Forum > Przedszkole
ravikw
Witam serdecznie.Chciałbym wyświetlić powtarzające się rekordy z dwóch tablic (assoc.)
W kodzie poniżej wyświetla mi ale tylko jeden rekord tyle razy ile jest powtarzających się rekordów w tablicach.
Proszę o podpowiedz co powinienem przeanalizować...aby osiągnąć zamierzony cel. Może to jest bardzo proste ale nie mogę przejść tego problemu....


  1. <?php
  2. while ($row1 = mysql_fetch_assoc($wynik1)){
  3.     while ($row = mysql_fetch_assoc($wynik))  {
  4.  
  5.        if ($row1['nr_tel']== $row['nr_tel']) {
  6.        $nr_tel=$row['nr_tel'];
  7.       }
  8.     }
  9.    echo "$nr_tel";
  10.  
  11.     echo"<br>";
  12. }
  13. ?>
Fifi209
Powiedz lepiej jaką masz strukturę tych tabel w bazie bo możliwe, że po stronie mysql można to załatwić.
skowron-line
http://pl2.php.net/manual/pl/function.array-count-values.php
funkcja zwróci ci ilość wystąpień danego elementu w tablicy, pozniej foreach i warunek.

edit:
Lub ale to czary mary

tablica która zrobisz wyżej
dajesz tak
http://pl2.php.net/manual/pl/function.array-flip.php i pozniej unset( $tab[ 1 ] );
Ale to taki pomysł ktory trzeba sprawdzić.

edit down:
@fifi2009 racja mój błąd.
Fifi209
Cytat(skowron-line @ 19.07.2009, 12:56:05 ) *
http://pl2.php.net/manual/pl/function.array-count-values.php
funkcja zwróci ci ilość wystąpień danego elementu w tablicy, pozniej foreach i warunek.


Czytajmy uważniej.

Cytat(ravikw @ 19.07.2009, 12:53:23 ) *
Witam serdecznie.Chciałbym wyświetlić powtarzające się rekordy z dwóch tablic (assoc.)


Poza tym jakby dało się po stronie mysql to po co parser katować?
tmka
Pomocna może być ta funkcja: array_diff.
A robi się to tak:
  1. <?php
  2. $tablica1 = array ("zielony", "czerwony", "niebieski");
  3. $tablica2 = array ("zielony", "żółty", "czerwony");
  4. $wynik = array_diff($tablica1,array_diff ($tablica1, $tablica2));
  5. ?>
Fifi209
Cytat(tmka @ 19.07.2009, 13:07:04 ) *
Pomocna może być ta funkcja: array_diff.
A robi się to tak:
  1. <?php
  2. $tablica1 = array ("zielony", "czerwony", "niebieski", "czerwony");
  3. $tablica2 = array ("zielony", "żółty", "czerwony");
  4. $wynik = array_diff($tablica1,array_diff ($tablica1, $tablica2));
  5. ?>


Można i tak, tylko po co obciążać parser ? Dobre zapytanie sql i pewnie sprawa rozwiązana.
skowron-line
Może autor tematu niech pokaże strukturę tabeli i zobaczymy czy da się wyczarować zapytanie.
ravikw
Cytat(fifi209 @ 19.07.2009, 13:55:51 ) *
Powiedz lepiej jaką masz strukturę tych tabel w bazie bo możliwe, że po stronie mysql można to załatwić.


Piersza tabela to tylko
"id" oraz "nr_tel"
Druga tabela posiada te same kolumny plus kilka dodatkowych. Zamierzenie jest takie aby skrypt po znalezieniu takich samych rekordów "nr_tel" wyświetlał mi "nr_tel" oraz dane z pozostałych kolumn drugiej tabeli.

W kodzie narazie ograniczyłem się do wyświetlenia samych "nr_tel" bo na tym etapie mam juz problem .......
Fifi209
  1. SELECT `pole`, `pole2`, `pole3`, `tabela2`.`nr_tel` FROM `tabela1`, `tabela2` WHERE `tabela2`.`nr_tel` = `tabela1`.`nr_tel`


Tak na oko ale powinno działać, oczywiście po odpowiedniej modyfikacji.
ravikw
Cytat(fifi209 @ 19.07.2009, 14:31:12 ) *
  1. SELECT `pole`, `pole2`, `pole3`, `tabela2`.`nr_tel` FROM `tabela1`, `tabela2` WHERE `tabela2`.`nr_tel` = `tabela1`.`nr_tel`


Tak na oko ale powinno działać, oczywiście po odpowiedniej modyfikacji.


Dziękuję wszystkim za poświęcenie czasu i podpowiedzi. Powyższe rozwiązanie wpełni rozwiązuje mój problem.

Proszę o zamknięcie tematu.
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.