Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak pobrać część tekstu zestringa + wstawiać kolejne części jako alt kolejnych obrazków w sliderze
Forum PHP.pl > Forum > Przedszkole
maraska
Witam,

Jest string $string ="piłka, nożna, mecze";

Slider wyświetla mi kolejne fotki takim kodem:
  1. <div style="width:200px; margin: 0px 7px 0px 3px;">
  2. <a href="/images/catalog/'.$id.'/'.$nazwa.'" class="lightbox" rel="group">
  3. <img src="/images/catalog/'.$id.'/'.$nazwa.'" alt="'.$alt.'" style="max-width:200px;height:200px;overflow:hidden;border:1px solid black;">
  4. </a>
  5. </div>';
  6. //}
  7.  
  8.  
  9.  
  10. }
  11. }
  12.  
  13. fotka("file_zdj1", $id);
  14. fotka("file_zdj2", $id);
  15. fotka("file_zdj3", $id); ........


bxslider dziła jak trzeba.

Pytanie, jak to zrobić, żeby ze zmiennej $string wyciągać kolejne wyrazy (to mniej więcej wiem ale jednak pytam lepszych ode mnie) i wtsawiać je kolejno do zmiennej $alt, czyli, żeby kolejne fotki miały alt = kolejne wyrazy z $string?

Z góry dzięki za pomoc
Andrzej.W.
wg. mnie wystarczy użyć explode z selektorem ","
maraska
Cytat(Andrzej.W. @ 24.06.2014, 20:42:14 ) *
wg. mnie wystarczy użyć explode z selektorem ","


Proszę o bardziej szczegółową instrukcję.
Andrzej.W.
Cytat(maraska @ 24.06.2014, 20:51:16 ) *
Proszę o bardziej szczegółową instrukcję.

  1. $string ="piłka, nożna, mecze";
  2. $tablica=explode(",", $string);
  3. echo $tablica[0];


Prosty przykład. smile.gif
maraska
Cytat(Andrzej.W. @ 24.06.2014, 20:55:52 ) *
  1. $string ="piłka, nożna, mecze";
  2. $tablica=explode(",", $string);
  3. echo $tablica[0];


Prosty przykład. smile.gif


Dziękuję za pomoc, ale nie bardzo rozumiem jak mi to wstawi kolejne słowo do kolejnego $alt
Andrzej.W.
Fotek będzie dokładnie tyle, ile słów w zmiennej string?
Skąd pobierasz i jak są wstawiane inne zmienne, typu $id, $nazwa?
maraska
Wszystkie zmienne są znane we wcześniejszej części kodu łacznie z wartością zmiennej $string, z której chcemy pobierać kolejne słowa do kolejnych altów obrazków.

Ilość obrazków do slidera nie jest znana, ale może być zliczona, ilość słów w zmiennej $string nie jest znana, powinna przekraczać ilość obrazków = ilość wartości $alt, ale może być mniejsza niż il. alt.
Andrzej.W.
jeżeli ilość słów w $string będzie większa od ilości obrazków, to tag <img src> można generować z pętli for, mniej wiecej na tej zasadzie:
  1.  
  2. $tablica=explode(",", $string);
  3. $ilosc_obrazków;
  4. $string='string, string, string, itd';
  5. $tablica=explode(",", $string);
  6. for($i=0;$i<$ilosc_obrazków;$i++)
  7. {
  8. echo '<img src... alt="'.$tablica[$i].'"...>
  9. }
  10.  

Więcej poradzić nie mogę, bo nie znam reszty kodu.
maraska
Dzieki, postetuję. Chyba widzę już sposób smile.gif
Andrzej.W.
Na zdrowie wink.gif
maraska
Nie wiem co robię źle.

Dla testu zrobiłem tak:

  1. $slowa ="1,2,3,4,5,6,7,8,9";
  2. $tablica = explode(",", $slowa);
  3.  
  4. for($i=0;$i<$qry[0];$i++)
  5. {
  6.  
  7. $filename = '/images/'.$id.'/'.$nazwa.'';
  8.  
  9. //if (file_exists($filename) == true) {
  10. echo '
  11. <div style="width:200px; margin: 0px 7px 0px 3px;">
  12. <a href="/images/catalog/'.$id.'/'.$nazwa.'" class="lightbox" rel="group">
  13. <img src="/images/catalog/'.$id.'/'.$nazwa.'" alt="'.$tablica[$i].'" style="max-width:200px;height:200px;overflow:hidden;border:1px solid black;">
  14. </a>
  15. </div>';
  16. //}
  17.  
  18.  
  19.  
  20. }
  21. }


W tym teście alt każdego obrazka daje "1" a każdy kolejny alt powinien mieć kolejną wartość z tablicy
nospor
$i ma sie zmieniac o jeden wraz z kazdym obrazkiem, a z tego co widze to masz petle dla obrazkiw oddzielnie (w kodzie nie widac) a $i sobie zmieniasz radosnie w petli FOR ktora ma sie nijak do kolejnych obrazkow, stad wychodzą ci glupoty
tzm
  1. $x = count($tablica);
  2. for($i=0;$i<$x;$i++)
nospor
Zrozum, Twoje $i ma sie zwiekszac wraz z kolejnym zdjeciem, a nie ty robisz sztuczne petle na $i...

Z tego co widze to kolejne zdjecia dodajesz przez wywolanie kolejnej funkcji i to tam masz przekazywac kolejny numer $i. Skoro recznie odpalasz te funkcje to i recznie przekazuj do niej trzeci parametr.
Mozesz od biedy bawic sie w zmienna statyczną w funkcji i ją zwiekszac automatycznie.
maraska
Wpędzacie mnie w panikę i już nic nie kumam sad.gif smile.gif

Jak to powinno wyglądać (chodzi tylko o alt- kolejny z $tablica)?

  1. function fotka($baza, $id) {
  2. $qry = mysql_fetch_array(mysql_query("SELECT Count(*) FROM images WHERE id = '$id' and typ = '$baza'"));
  3.  
  4. if($qry[0] > 0) {
  5. $zdj = mysql_fetch_array(mysql_query("SELECT * FROM images WHERE id = '$id' and typ = '$baza' ORDER by image_id DESC LIMIT 1"));
  6.  
  7. $slowa ="1,2,3,4,5,6,7,8,9";
  8. $tablica = explode(",", $slowa);
  9.  
  10. for($i=0;$i<$qry[0];$i++)
  11.  
  12. $id = $zdj['image_id'];
  13. $nazwa = $zdj['name'];
  14.  
  15. $nazwa = str_replace(" ", "%20", $nazwa);
  16.  
  17.  
  18.  
  19. $filename = '/images/'.$id.'/'.$nazwa.'';
  20.  
  21. //if (file_exists($filename) == true) {
  22. echo '
  23. <div style="width:200px; margin: 0px 7px 0px 3px;">
  24. <a href="/images/catalog/'.$id.'/'.$nazwa.'" class="lightbox" rel="group">
  25. <img src="/images/catalog/'.$id.'/'.$nazwa.'" alt="'.$tablica[$i].'" style="max-width:200px;height:200px;overflow:hidden;border:1px solid black;">
  26. </a>
  27. </div>';
  28. //}
  29.  
  30.  
  31.  
  32. }
  33. }


Przepraszam za formatowanie
tzm
Cytat(mitorski @ 25.06.2014, 20:45:57 ) *
  1. $x = count($tablica);
  2. for($i=0;$i<$x;$i++)


Przecież Ci już napisałem!
nospor
@mitorski ale czytaj tez posty innych uzytkownikow, np. moje... tworzenie sztucznej petli dla $i tutaj nie jest rozwiązaniem. Ile razy trzeba to samo pisac, by w koncu dotarlo?

@miraska wywal tego FORa z $i a nastepnie:

function fotka($baza, $id, $i) {

oraz

fotka("file_zdj1", $id, 1);
fotka("file_zdj2", $id, 2);
fotka("file_zdj3", $id, 3); ........

Lepszym rowiązaniem bylaby zmienna statyczna w funkcji fotka, ale na poczatek moze byc to
maraska
Chcecie pomóc i za to wam dzięki, tylko, że ja nie potrafię poskładać do kupy puzli, które podsuwacie. W każdym razie nie dziła na różne sposoby.

Dałby ktoś radę poprawić poniższy kod tak, jak jego zdaniem powinno być?

  1. function fotka($baza, $id) {
  2. $qry = mysql_fetch_array(mysql_query("SELECT Count(*) FROM images WHERE id = '$id' and typ = '$baza'"));
  3.  
  4. if($qry[0] > 0) {
  5. $zdj = mysql_fetch_array(mysql_query("SELECT * FROM images WHERE id = '$id' and typ = '$baza' ORDER by image_id DESC LIMIT 1"));
  6.  
  7. $slowa ="1,2,3,4,5,6,7,8,9";
  8. $tablica = explode(",", $slowa);
  9.  
  10. for($i=0;$i<$qry[0];$i++)
  11.  
  12. $id = $zdj['image_id'];
  13. $nazwa = $zdj['name'];
  14.  
  15. $nazwa = str_replace(" ", "%20", $nazwa);
  16.  
  17.  
  18.  
  19. $filename = '/images/'.$id.'/'.$nazwa.'';
  20.  
  21. //if (file_exists($filename) == true) {
  22. <div style="width:200px; margin: 0px 7px 0px 3px;">
  23. <a href="/images/catalog/'.$id.'/'.$nazwa.'" class="lightbox" rel="group">
  24. <img src="/images/catalog/'.$id.'/'.$nazwa.'" alt="'.$tablica[$i].'" style="max-width:200px;height:200px;overflow:hidden;border:1px solid black;">
  25. </a>
  26. </div>';
  27. //}


Pozwolę sobie odświerzyć temat, bo nie wiem jak w funkcji wywołać kolejne wartości z tablicy explode.

Prosze o pomoc.
Turson
Możesz jeszcze raz wytłumaczyć co to ma robić?
Nie ma prawa to działać w ogóle, bo pętlę powinieneś mieć objętą { i }, tablica[$i] bierze się znikąd
maraska
Wiem, że tak nie może działać, mniejsza o to.

Funkcja wyświetla kolejne obrazki w ligtboxie. Działa Ok.

Chodzi o dodanie do obrazków ALTa.

Jest znana zmienna $slowa, w której znajdują się oddzielone przecinkami farazy do kolejnych ALTów do kolejnych obrazków. Piersza fraza do pierwszego obrazka, duga do drugiego itd. (w tym przykłądzie frazy to 1,2,3,...)

Chodzi o to, żeby te kolejne ALTy pokazały sie w kolejnych obrazkach.

Kod powyżej.

Dzięki za zainteresowanie i z góry dzięki za pomoc.
Turson
Musisz do funkcji przekazać jako parametr liczbę oznaczającą który alt z tablicy jest dla tego zdjęcia
maraska
Tak, tylko w jaki sposób? Możesz pokazać na przykładzie wklejonego wcześniej kodu?

Hej! Czy jest ktoś, kto potrafi na przykładzie pokazać jak do funkcji dodawać kolejne wartości z tabieli explode?

Czy jest ktoś, kto potrafi na przykładzie pokazać jak do funkcji dodawać kolejne wartości z tabieli explode?
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.