Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie danych i wrzucanie do pętli tylko części
Forum PHP.pl > Forum > Bazy danych > MySQL
spit
Cześć,
Pobieram z bazy dane przez prosty select * from dyskografia where wyklnk = '$band' gdzie $band to zmienna w get. I chcę zrobić tak:
Nazwa zespołu
* album
* album
* album
Chciałem zrobić w ten sposób:
  1. <?php
  2. echo '<h2>'.$info["wykonawca"].'</h2>';
  3. { echo '
  4. <li onclick="location.href='/dyskografia,'.$info["wyklnk"].','.$info["alblnk"].''"><img src="img/covers/?fileName='.$info["wyklnk"].'_-_'.$info["alblnk"].'.jpg" alt="" width="96" height="96" />
  5. <ul>
  6.  <li><strong>"'.$info["tytul"].'"</strong></li>
  7.  <li>'.$info["czas"].' min.</li>
  8.  <li>'.$info["wytwornia"].'</li>
  9. </ul>
  10. </li>';
  11. }
  12. ?>
Ale wtedy pokazuje mi tylko zawartość pierwszego echa, potem już nie. Jeżeli zrobię to bez pętli, wyświetli mi w kółko Nazwa *album itd. Mam nadzieję że wyraziłem się jasno smile.gif
nowotny
Cytat(spit @ 14.02.2008, 22:53:38 ) *
Mam nadzieję że wyraziłem się jasno smile.gif

Nie bardzo... pokaż więcej kodu bo to nam nic nie daje...
spit
Dobra, więc
  1. <?php
  2. $get_band_info = "SELECT * FROM dyskografia WHERE wyklnk = '$band'";
  3. mysql_select_db('pattonfans') or die(mysql_error());
  4. $nfo = mysql_query($get_band_info) or die(mysql_error());
  5. while($info=mysql_fetch_array($nfo))
  6. {
  7. echo '<h2>'.$info["wykonawca"].'</h2>'; //ma wystapic tylko raz
  8. { echo //ma isc dalej
  9.  '<li onclick="location.href='/dyskografia,'.$info["wyklnk"].','.$info["alblnk"].''"><img src="img/covers/?fileName='.$info["wyklnk"].'_-_'.$info["alblnk"].'.jpg" alt="" width="96" height="96" />
  10. <ul>
  11.  <li><strong>"'.$info["tytul"].'"</strong></li>
  12.  <li>'.$info["czas"].' min.</li>
  13.  <li>'.$info["wytwornia"].</li>
  14. </ul>
  15. </li>;
  16. } }
  17. echo </ul>
  18. ?>

I teraz. Chcę by "echo '<h2>'.$info["wykonawca"].'</h2>'; " pokazywało się tylko raz, reszta w drugiej pętli, czyli "<li onclick="location.href..." szło dalej tworząc listę zawartości.
nowotny
Cytat(spit @ 14.02.2008, 23:11:52 ) *
I teraz. Chcę by "echo '<h2>'.$info["wykonawca"].'</h2>'; " pokazywało się tylko raz, reszta w drugiej pętli,

No to machnij to sobie do ifa w którym usawisz sobie zmienną, powiedzmy $name_shown na 1 i w ifie sprawdzaj czy ta zmienna jest ustawiona... jak nie jest to wyświetlaj, jak jest to nie będzie wyświetlać... :/
kitol
  1. <?php
  2. $get_band_info = "SELECT * FROM dyskografia WHERE wyklnk = '$band'";
  3. mysql_select_db('pattonfans') or die(mysql_error());
  4. $nfo = mysql_query($get_band_info) or die(mysql_error());
  5. $old='';
  6. while($info=mysql_fetch_array($nfo))
  7. {
  8. if ($old==$info["wykonawca"]) echo '<h2>'.$info["wykonawca"].'</h2>'; //ma wystapic tylko raz
  9. { echo //ma isc dalej
  10.  '<li onclick="location.href='/dyskografia,'.$info["wyklnk"].','.$info["alblnk"].''"><img src="img/covers/?fileName='.$info["wyklnk"].'_-_'.$info["alblnk"].'.jpg" alt="" width="96" height="96" />
  11. <ul>
  12.  <li><strong>"'.$info["tytul"].'"</strong></li>
  13.  <li>'.$info["czas"].' min.</li>
  14.  <li>'.$info["wytwornia"].</li>
  15. </ul>
  16. </li>;
  17. } 
  18. $old=$info["wykonawca"];
  19. }
  20. echo </ul>
  21. ?>
spit
Chyba nie do końca się rozumiemy, odpowiedź kitola nie daje pożądanych rezultatów, odpowiedzi nowotnego nie rozumiem. Nakreślę problem raz jeszcze.
Mam bazę zawierającą płyty kilku artystów, przeważnie jeden muzyk ma więcej niż jeden album. Chodzi mi coś takiego, żeby wyciągnąć nazwę artysty, wyświetlić ją jako nagłówek, a niżej wyświetlić listę wszystkich albumów danego wykonawcy. Nagłówek z tą nazwą ma się pokazywać tylko raz, lista oczywiście ma mieć pozycji kilka.
Vielta
  1. <?php
  2. $get_band_info = "SELECT * FROM dyskografia WHERE wyklnk = '$band'";
  3. mysql_select_db('pattonfans') or die(mysql_error());
  4. $nfo = mysql_query($get_band_info) or die(mysql_error());
  5. $wystepuje = array();
  6. while($info=mysql_fetch_array($nfo))
  7. {
  8. if(!in_array($info['wykonawca'], $wystepuje)){
  9. echo '<h2>'.$info['wykonawca'].'</h2>';
  10. }
  11. else{
  12. $wystepuje = array($info['wykonawca']);
  13. // Tutaj lista
  14. }
  15.  
  16. }
  17. ?>


O coś takiego chodzi?
spit
Cytat(Vielta @ 15.02.2008, 03:16:16 ) *
O coś takiego chodzi?

Nie. Proszę, czytajcie dokładnie moje posty, nie mam pomysłów, jak prościej mogę wyłożyć problem.
kitol
Wydaje mi się że, wiem o co ci chodzi. Napisałeś że moja odp. nie daje porządanych rezultatów. Nic więcej. Co prawda nie testowałem tego, ale bez precyzyjniejszego określenia jaki jest efekt działania mojej propozycji nie będę mógł ci pomóc. Podaj przynajmniej komunikat błedu, opis rezultatu, linka do screena, cokolwiek ...
kszychu
Rozwiązanie kitola jest dobre, tylko w zapytaniu należy jeszcze dodać ORDER BY wykonawca, i zamiast if ($old==$info["wykonawca"]) należy dać if ($old != $info["wykonawca"])
spit
No, to może to pomoże smile.gif
nowotny
Tak... my rozumiemy... dostałeś już podpowiedzi i nawet rozwiązania... Jak coś nie działa to dlatego że masz bajzel w kodzie/nie pomyślałeś/źle wkleiłeś... spróbuj coś samemu a nie czekasz na gotowca...
spit
No, w takim razie "dzięki za pomoc".
kszychu
Zastosowałeś moje modyfikacje skryptu nowotnego?
nowotny
Cytat(kszychu @ 15.02.2008, 12:19:54 ) *
Zastosowałeś moje modyfikacje skryptu nowotnego?

Ja tu daję wędkę, nie rybę... winksmiley.jpg
kszychu
Cytat(nowotny @ 15.02.2008, 12:24:35 ) *
Ja tu daję wędkę, nie rybę... winksmiley.jpg

No tak, ale zrobiłeś jeden ważny błąd (== a powinno być !=) oraz niedopatrzenie (wykonawcy nie mogą być porozrzucani, więc trzeba po nich posortować).
nowotny
Cytat(kszychu @ 15.02.2008, 12:30:29 ) *
No tak, ale zrobiłeś jeden ważny błąd (== a powinno być !=) oraz niedopatrzenie (wykonawcy nie mogą być porozrzucani, więc trzeba po nich posortować).

Widzę, że nie zrozumiałeś... winksmiley.jpg więc powiem głośno i wyraźnie: JA NIE DAWAŁEM ŻADNYCH SKRYPTÓW W TYM WĄTKU... smile.gif
kszychu
brzydal.gif
Kitol, kitol, kitol, chodzi o rozwiązanie kitola!!!!!! A co ja mówiłem? brzydal.gif
kitol
spit: Moje rozwązanie nie miało być gotowcem do wklejenia. Nie testowałem tego, zresztą nie jestem pewien czy twój kod działał bez moich modyfikacji coś mi nie pasowało z { }. Generalnie chciałem przedstawić pewną konstrukcję:

  1. <?php
  2. $old=''
  3. while ($x=mysql_fetch_array()) {
  4. if ($x['cos_tam']!=$old) {
  5. // wartość występuje poraz pierwszy więc ją wyświetlamy
  6. echo $x['cos_tam'] // uzupełnij znacznikami jak chcesz
  7. }
  8. // tu wyswietlasz resztę za kazdym powtorzeniem pętli
  9.  
  10. $x['cos_tam']=$old;
  11. }
  12. ?>


jasne?
BTW. mój bład z tym ==
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.