Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Porównanie xml z bazą, Problem parsowania danych
lomki
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 20.12.2009

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


Witam serdecznie, zetknąłem się z pewnym problemem, otóż: Mam bazę danych, napisałem skrypt który wyświetla wszystko z tej bazy oto on nic nadzwyczajnego.
Kod
<?php


$connection = @mysql_connect('localhost', 'root', 'domek')

or die('Brak połączenia z serwerem MySQL.<br />Bład: '.mysql_error());

echo "Udało się połaczyć z serwerem!<br />";

$db = @mysql_select_db('bazka', $connection)

or die('Nie mogę połączyć się z bazą danych<br />Błąd: '.mysql_error());

echo "Udało się polaczyć z baza dancych!";
echo "</br>";


$wynik = mysql_query("SELECT * FROM dane")
or die('Błąd zapytania');


if(mysql_num_rows($wynik) > 0) {
echo "<table cellpadding=\"2\" border=1>";
    while($r = mysql_fetch_assoc($wynik)) {
        echo "<tr>";
        echo "<td>".$r['IMIE']."</td>";
        echo "<td>".$r['NAZWISKO']."</td>";
      
        echo "</tr>";
    }
    echo "</table>";
}


Następnie posiadam plik xml z jakąś tam strukturą, napisałem do niego parser żeby wyciągał z niego nazwiska i imiona ogólnie pole to to: <Nazwa1>Jan Nowak</Nazwa1>

Oto kod parsera:

Kod
$dokument = DOMDocument::load('plik.xml');
$autorzy=$dokument->getElementsByTagName('NAZWA1');
foreach ($autorzy as $autor) {
print$autor->nodeValue."\n";

echo "</br>";
}


Dodam że działa bez zarzutu... Ale dla mnie tu zaczynają się schody... Chcę aby te nazwiska, które są w bazie danych i te same co są w xml (w bazie jest Nowak i w xml jest Nowak) się np podświetliły w tabeli, podejrzewam że trzeba jakoś wyciągać i porównywać stringi z tablicy, ale moja wiedza się tu kończy,
meczę się dzień i nie wiem jak się za to zabrać.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Kasyx
post
Post #2





Grupa: Zarejestrowani
Postów: 45
Pomógł: 7
Dołączył: 29.04.2009
Skąd: Kraków

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


Do głowy przychodzą mi dwa sposoby.

1) Tak trywialnie
Zapisz sobie dane w dwóch tablicach.
Przeleć jedną z tablic foreach'em i sprawdzaj czy dana wartość nie znajduje się w drugiej z tablic funkcją in_array
Jeśli się znajduje, to pokoloruj. (IMG:style_emoticons/default/smile.gif)

2) Według mnie lepiej:
Zapisuj dane w jednej tablicy, albo jak masz je w dwóch to połącz array_merge
Posortuj te tablice w odpowiednim porządku. Zapewne i tak musiałbyś to robić wyświetlając listę nazwisk (IMG:style_emoticons/default/smile.gif)
Idź po kolei przez całą tablicę w podobnym stylu jak przedstawiony poniżej:
  1. $i = 0;
  2.  
  3. while( true )
  4. {
  5. //warunek wyjscia z petli
  6. if( empty($tablica[$i]) )
  7. break;
  8.  
  9. if( $tablica[$i] != $tablica[($i+1)])
  10. {
  11. dopiszNormalnie($tablica[$i]);
  12. ++$i; //idziemy do kolejnego rekordu
  13. } else
  14. {
  15. dopiszPokolorowane($tablica[$i]);
  16. $i+=2; //dwa rekordy dalej, bo sie powtarzaja :)
  17. }
  18. }


mam nadzieję, że kod jest zrozumiały i przejrzysty (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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: 28.12.2025 - 22:25