Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyświetlenie części rekordu [XML][MySQL][PHP]
Forum PHP.pl > Forum > Przedszkole
-marcind-
Witam!
Mam taki problem:
Chcę wyświetliś tylko część rekordu ogranicznego znacznikami np: <znacznik>tekst do wyswietlenia</znacznik>.
Opiszę dokładniej mam tabelę "dane" w niej kolumnę o nazwie "user" tam mam takie informacje:

<imie>jan</imie>
<nazwisko>kowalski</nazwisko>

oczywiscie w kolejnych wierszach kolejne nazwiska.

Jak zrobie:
  1. $sql = 'select user from dane';

to mam wszystko łącznie ze znacznikami
Jak wyświetlić tylko imię i nazwisko?
Z góry dzięki.
nospor
Jesli masz możliwosc zmiany to zrob porządną tabele, gdzie imie i nazwisko to kolumny.

Jak nie masz zmiany, to możesz np. przy pomocy preg_match() pobrać znaczniki które chcesz
-marcind-
Niestety tabeli nie mogę już zmienić.
Czytam już manula:
  1. http://www.php.net/manual/en/function.preg-match.php

Jak coś wymyślę to dam znać smile.gif
-marcind-
Jeszcze raz ja smile.gif
Rekord zawiera m. in. takie dane:
  1. <FN>marcin d test</FN>
  2. <NICKNAME>test</NICKNAME>
  3. <ORG>
  4. <ORGNAME>super firma</ORGNAME>
  5. <ORGUNIT>lepszy dzia?</ORGUNIT>
  6. </ORG>

Chcę z tego wyłowić jedynie informacje z pomiędzy znaczników <ORGNAME>
Nie chcę się ośmieszyć kombinowałem z różnymi zapisami preg_match np. :
  1. preg_match('/(ORGNAME)(.) /', $row['rekord'], $wynik);
  2. echo $wynik[1];

Albo nie wypisuje mi nic albo array albo ORGNAME
-marcind-
Sorki że tak dopisuję, ale nie chcę żeby fachowcy pomyśleli, że nic nie robię tylko czekam na gotowca.
Aktualnie wydumałem coś takiego:
  1.  
  2. preg_match('/(ORGNAME>)(................)/', $row['rekord'], $wynik);
  3. echo $wynik[2];

Wypisuje mi to generalnie nazwę firmy, ale jak jest dłuższa nazwa to nie wyświetla wszystkiego.
Nie wiem czemu jak zwiększam ilość kropek to wtedy przestaje wyświetlać mi niektóre krótsze nazwy, tak sobie myśle że może jest tam dalej gdzieś (w tych krótszych nazwach) przełamanie linii.
-marcind-
Jeszcze raz ja smile.gif
napisze jak sie udalo:
  1. if(preg_match('/(ORGNAME>)(.*)(ORGNAME|\n)/', $row['rekord'], $wynik))
  2. {echo $wynik[2];}
  3. else
  4. {echo '<b>brak danych w bazie</b>';}
  5.  

wypisuej prawidlowo dodalem tam jeszcze znacznik konca linii, poniewaz niektore wpisy konczyly sie koncem lini.
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.