Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] Wyświetlanie rekordu w rządany sposób
Forum PHP.pl > Forum > Przedszkole
puz219
Witam.

Tworzę sobie stronę z kolekcją swoich filmów i podczas dodawania filmu kopiuje sobie obsadę z imdb i dodaję do pola obsada (text) w bazie mysql.

Teraz chciałbym, żeby na stronie z informacjami o filmie ta obsada wyświetliła mi się w następujący sposób:

imię i nazwisko aktora (wszystko przed "...")|odstęp|...|odstęp|postać grana przez aktora (wszystko po "...")|przejście do nowej linii.

np.
Sean Penn ... Paul Rivers
Naomi Watts ... Cristina Peck

i tak, od pierwszego aktora do ostatniego, bo jak normalnie wyświetlę zawartość pola, to wyświetla wszystko jedno po drugim.

P.S. lista aktorów skopiowana z imdb jest nieco porozrzucana, tzn. występują rożne wielkości odstępów i przejścia do nowej linii, są czasami 2 czasami 1

Napisałem coś takiego, ale nie działa (wyświetla tylko ostatni wyraz)



  1. <?php
  2. //obsada
  3. $obsada=$wiersz["obsada"];
  4. if($obsada == NULL)
  5. {
  6. $obsada="";
  7. }
  8. else
  9. {
  10. $wysw_obsade = $wiersz["obsada"];
  11. $formatuj_obsade = explode(" ", $wysw_obsade);
  12. $tmpcount = count($formatuj_obsade);
  13. for ($i = 0; $i < $tmpcount; $i++) {
  14. $obsada="<b>OBSADA:</b><br>".$formatuj_obsade[$i]."<br><br>";
  15. echo "n";
  16. }
  17.  
  18.  
  19.  
  20. }
  21. ?>


Proszę o jakieś wskazówki.
KCG
Wszystkich aktorów masz zapisanych w jednym polu? Czy parami?
Bo jak parami to rozbijasz:
$aktor = explode(" ",$dane);
a poźniej:
echo $aktor[0].' '.$aktor[1].' ... '.$aktor[3].' '.$aktor[4];
puz219
Właśnie wszystkich aktorów mam w jednym polu...


czy nikt nie wie, czy co, bo próbowałem już na różne sposoby i działać nie chce.

Proszę o pomoc.

JESZCE RAZ... AKTORÓW MAM WSZYSTKICH W JEDNYM POLU....
Leech
Cytat(puz219 @ 27.07.2007, 07:39:30 ) *
występują rożne wielkości odstępów i przejścia do nowej linii


spróbuj może :
  1. <?php
  2. $wysw_obsade = trim($obsada);
  3. ?>
KCG
To nie lepiej zrobić oddzielną tabelę z aktorami? Będzie taki system relacyjny tongue.gif pole id filmu i się połączy smile.gif
puz219
osobna tabela i potem przekazywanie danych na zasadzie relacyjności nie wchodzi w grę, bo ja robie tylko taki programik dla siebie i jak zrobię tak jak ty mówisz, to będę dodawał samych aktorów do 1 filmu z 30 min.

@lech twój sposób trochę mi pomógł i zmieniłem trochę zastosowanie explode, a mianowicie zamiast spacji dałem ....

  1. <?php
  2. //obsada
  3. $obsada=$wiersz["obsada"];
  4. if($obsada == NULL)
  5. {
  6. $obsada="";
  7. }
  8. else
  9. {
  10. $wysw_obsade = trim($obsada);
  11. $formatuj_obsade = explode("...", $wysw_obsade);
  12. $tmpcount = count($formatuj_obsade);
  13. for ($i = 0; $i < $tmpcount; $i++) {
  14. echo $formatuj_obsade[$i];
  15. echo "n";
  16. }
  17. ?>


i Teraz jak daję tak jak wyżej, to wyświetla mi aktorów, ale jeden za drugiem,

Sean Penn Paul Rivers Naomi Watts Cristina Peck Danny Huston Michael Carly Nahon Cathy Claire Pakis Laura Benicio Del Toro Jack Jordan Nick Nichols Boy Charlotte Gainsbourg Mary Rivers John Rubinstein Gynecologist Eddie Marsan Reverend John Loyd Keith Salter Fat Man Antef A. Harris Basketball Guy Melissa Leo Marianne Jordan Marc Musso Freddy (as Marc Thomas Musso) Teresa Delgado Gina Trent Dee Guard (as Terry Dee Draper) Tony Guyton Guard #2 Wayne E. Beech Jr. Inmate #1 Keith Lamont Johnson Inmate #2 Clea DuVall Claudia David Chattam Caddie #1 (as David Chattam Jr.) John Boyd West Caddie #2 Jeff Schmidt Caddie #3 Tony Vaughn Al Paul Calderon Brown Denis O'Hare Dr. Rothberg Anastasia Herin Dolores Carlo Alban Lucio Hai Quang Tran Cashier Annie Corley Trish Sharon Bishop Receptionist Jerry Chipman Cristina's Father Tom Irwin Dr. Jones Roberto Medina Dr. Molina Arita Trahan Dr. Badnews Rodney Ingle Barman Catherine Dent Ana Kevin Chapman Alan (as Kevin H. Chapman) Randall Hartzog Friend #1 Verda Davenport Friend #2 (as Verda Davenport-Booher) Dorothy Armstrong-Miles Female Friend #1 (as Dorothy Armstrong Miles) Barclay Roberts Male Friend #1 Lisa Sanchez Wife Stephen Bridgewater P.I. Michael Finnell Fat Prisoner Juan Corrigan Valet Charlie B. Brown Night Guard Arron Shiver Young Doctor Pamela Blair Doctor Jennifer Pfalzgraff Nurse Lew Temple County Sheriff

a jak dam tak,
  1. <?php
  2. //obsada
  3. $obsada=$wiersz["obsada"];
  4. if($obsada == NULL)
  5. {
  6. $obsada="";
  7. }
  8. else
  9. {
  10. $wysw_obsade = trim($obsada);
  11. $formatuj_obsade = explode("...", $wysw_obsade);
  12. $tmpcount = count($formatuj_obsade);
  13. for ($i = 0; $i < $tmpcount; $i++) {
  14. $obsada="<b>OBSADA:</b><br>".$formatuj_obsade[$i];
  15. echo "n";
  16. }
  17. ?>

to wyświetla mi tylko ostatnią wartość w bazie (postać grana przez aktora.)

A jak zrobić tak, żeby explode podzieliło tekst względem przejścia do nowej lini?questionmark.gif
KCG
No to może sprawdzaj, czy klucz jest nieparzysty, jeśli tak to daj <br /> smile.gif
Leech
to może tak:
zamiast: echo "\n";
daj: echo"<br>\n";
puz219
@KCG, za pomocą jakiej komendy sprawdzić, czy klucz jest nieparzysty??


P.S. Nie wie ktoś może jak w internet explorerze 7 ustawić kodowanie na Windows środkowoeuropejski (iso), bo coś mi się zepsuło i jak sprawdzam, czy mój program (moja strona z localhost) chodzi dobrze, to wyświetla mi dziwne znaki, muszę za każdym razem zmieniać w opcjach IE7 kodowanie na w/w.

Dawniej chodziło normalnie, potem mi się przez przypadek mozilla ustawiła na domyślna przeglądarkę i wszystko się zepsuło.

Nie wie ktoś jak to naprawić, ale to tak na marginesie, głównie to chodzi o to wyświetlanie rekordu.
Louner
if( $i % 2 == 0 ) { klucz jest parzysty }

tongue.gif
puz219
wrzuciłem coś takiego
  1. <?php
  2. if ($i % 2 != 0)
  3. {
  4. $obsada="<b>OBSADA:</b><br>".$formatuj_obsade[$i];
  5. echo "<br>";
  6. }
  7. ?>


po pętli for ale i tak nie działa.

co rozbie żle
KCG
  1. <?php
  2. for ($i = 0; $i < $tmpcount; $i++) {
  3. $obsada="<b>OBSADA:</b><br>".$formatuj_obsade[$i];
  4. echo "n";
  5. if ($i % 2 != 0) echo "<br />n"; 
  6. }
  7. ?>

smile.gif
puz219
nie wiem dlaczego, ale twój sposób dalej nie działa, wyświetla tylko ostatni wyraz

Mnie już zaczyna przy tym trafiać i chyba zrobię oddzielna tabelę dla aktorów, chyba, że ktos ma jeszcze jakieś pomysły?questionmark.gif
Kicok
Jeśli echo $obsada; masz poza pętlą "for" to się nie dziw, że tylko ostatni wyraz ci wyświetla - w pętli nadpisujesz sobie ciągle zmienną $obsada
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.