Jak przekazać wartości z explode do funkcji?

0

Mam w php kod jak poniżej, który wyświetla obrazki w galerii.
Chcę do tych obrazków dopisywać alt.
Alt do kolejnych obrazków ma być pobierany ze zmiennej poprzez explode(", ", $wyrazy);.

Może to banalne, ale nie wiem jak to zaimplementować.

Proszę o pomoc

Zmienna do alt nazwana $i

function fotka($baza, $id, $i) {
$qry = mysql_fetch_array(mysql_query("SELECT Count(*) FROM images WHERE id = '$id' and typ = '$baza'"));

if($qry[0] > 0) {
$zdj = mysql_fetch_array(mysql_query("SELECT * FROM images WHERE id = '$id' and typ = '$baza' ORDER by id DESC LIMIT 1"));

$id = $zdj['image_id'];
$nazwa = $zdj['name'];

$nazwa = str_replace(" ", "%20", $nazwa);
if(!preg_match("/(png|PNG|GIF|gif|jpg|JPG)/", $nazwa))
$nazwa .= ".jpg";

$filename = '/images/'.$id.'/'.$nazwa.'';

//if (file_exists($filename) == true) {
echo '
<div style="width:200px; margin: 0px 7px 0px 3px;">
<a href="/images/catalog/'.$id.'/'.$nazwa.'" class="lightbox" rel="group">
<img src="/images/catalog/'.$id.'/'.$nazwa.'" alt="'.$i.'">
</a>
</div>';
//}



}
}

fotka("file_zdj1", $id);
fotka("file_zdj2", $id);...... 
0

nie rozumiem Twojego opisu, ale patrząc tylko na topic:

$x = explode(',', $opisy);
funkcja('parametr', $drugi, $x);

:P

a zamiast $nazwa = str_replace(" ", "%20", $nazwa); zrób sobie url_encode

kod potencjalnie narażony jest na SQLInjection

0

Tak było

$x = explode(", ", $slowa);

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

ale w altach, zamiast słów wyświetla mi numerki 1,2,3 jakby kolejne nr pozycji w tablicy explode

dodanie znacznika <code class="php"> - furious programming

0

Wciąż nie rozumiem Twojego problemu ;)

0

Tak jak napisałem. Wynikiem działania kodu ma być

  1. zapisz do tablicy słowa oddzielone przecinkami w wyniku wykonania explode.
  2. wyświetl kolejne słowo z tablicy dla kolejnego obrazka jako ALT.

powinien dla kolejnych obrazków wyświetlić im kolejne ALTy np. kot, pies, kura, bo takie są dla przykładu w explodowanej zmiennej.

Wyświetla zamiast powyższego kolejne ALTy dla kolejnych obrazków: 1, 2, 3 ....

Doprecyzowując, zamiast "kot" wyświetla "1", zamiast "pies" wyświetla "2" itd

0

$slowa = "kot, pies, kura, koza";

$x = explode(", ", $slowa);

//i jesli tu sobie wyrzucisz co masz w $x to zobaczysz ze wszystko jest ok

print_r($x);

//zobaczysz takie cos:
// Array
// (
//    [0] => kot
//    [1] =>  pies
//    [2] =>  kura 
//    [3] =>  koza
// )
 
function fotka($baza, $id, $x) {

Wiec problem na pewno nie lezy w explode, a w twojej funkcji.

moze funkcja w zmiennej $x chcialaby otrzymac stringa z tym altem zamiast tablice stringow. Nie wiem zgaduje, ale sprawdz gdzie indziej , bo nie tu lezy problem.

0

Szalonyfacet, dzięki za włączenie się do pomocy.

Jest tak jak piszesz. Problem leży w przekazaniu do funkcji. Dlatego tak właśnie zatytułowałem wątek.
Poniżej zamieszczam kod wyczyszczony ze wszystkiego, poza sprawą problemu, tak, że nie patrzcie na inne zmienne poza $x
Może zauważycie, co zmienić

 
$x = explode(" ", $slowa);

function fotka($baza, $id, $x) {
									
echo '
<div>
<a href="/images/catalog/'.$id.'/'.$nazwa.'" class="lightbox" rel="group">
<img src="/images/catalog/'.$id.'/'.$nazwa.'" alt="'.$x.'" >
</a>
</div>'; 

									}
								
								}
								fotka("file_zdj1", $id,);
								fotka("file_zdj2", $id,); //itd...

Wynik - wszystko działa poza prawidłowym wyświetleniem alt - alt="'.$x.'" wyświetla nr kolejny słowa w tablicy zamiast słowa.

0

Przecież fotka wymaga trzech parametrów, a Ty przekazujesz dwa i... em, dwa no i po tym przecinek, czego w ogóle nie rozumiem.
To jest w ogóle poprawna składnia? :|

1

Składnia poprawna, wszystko działa, tu wyciąłem większość kodu. Coś sprawdzę......

Trochę was w błąd wprowadziłem, przez ciągłe testowanie. Wyświetlało w alt numerki, bo je w fotka wpisałem na sztywno dla testu jako 3-ci parametr i o tym zapomniałem grzebiąc powyżej (nie mieści się na jednym ekranie). Później wywaliłem i ostał się przecinek. Przepraszam.

Wystarczyło zrobić

 
fotka("file_zdj1", $id, $x[1]);
fotka("file_zdj2", $id, $x[2]);		
fotka("file_zdj3", $id, $x[3]);

i jest OK

Dzięki wszystkim za pomoc. Bez niej siedziałbym jak głupi nie widząc oczywistości.
Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1