Náhodné zobrazovanie obrázkov

Programovacie jazyky, rady, poradňa...
Mato.y
Light Expert
Light Expert
Príspevky: 40
Registrovaný: 23 jan 2007, 15:41

Náhodné zobrazovanie obrázkov

Príspevok od používateľa Mato.y »

cafte,
potreboval by som pomoc s jednou takou vecou: mám v tabulke obrázky (6x4 obrázkov) a potrebujem aby sa mi v tej tabulke zobrazovali tie obrázky náhodne, tj. aby menili svoju pozíciu. Neviem ako na to prosím poraďte :wink:

dopredu dikes
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

a kedy sa maju menit? Pri reloade alebo pri nacitanej stranke v niekolkosekundovych intervaloch?
DomCZo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 235
Registrovaný: 16 okt 2006, 22:49

Príspevok od používateľa DomCZo »

Hej, dobre sa pýta. Ak to chceš staticky v PHP, že sa náhodne poprehadzujú iba raz pri reloade:

Kód: Vybrať všetko

<?php


#### MANUALNE NASTAVENIA - ZACIATOK ####

$obrazky = array(
"obrazok_1.jpg", "obrazok_2.jpg", "obrazok_3.jpg", "obrazok_4.jpg", "obrazok_5.jpg",
"obrazok_6.jpg", "obrazok_7.jpg", "obrazok_8.jpg", "obrazok_9.jpg", "obrazok_10.jpg",
"obrazok_11.jpg", "obrazok_12.jpg", "obrazok_13.jpg", "obrazok_14.jpg", "obrazok_15.jpg",
"obrazok_16.jpg", "obrazok_17.jpg", "obrazok_18.jpg", "obrazok_19.jpg", "obrazok_20.jpg",
"obrazok_21.jpg", "obrazok_22.jpg", "obrazok_23.jpg", "obrazok_24.jpg");

$obrazkov_v_riadku = 6;

#### MANUALNE NASTAVENIA - KONIEC ####


shuffle($obrazky);

$k = 0;

for($i = 0; $i <= (ceil(count($obrazky)/$obrazkov_v_riadku))-1; $i++)
{
	for($j = 0; $j <= ($obrazkov_v_riadku)-1; $j++)
	{
		if(($obrazky[$k] != NULL))
		{
			echo "*<img src=\"".$obrazky[$k]."\"> ($k)*";
			$k++;
		}
	}
	echo "<br>\r\n";
}


?>
Mato.y
Light Expert
Light Expert
Príspevky: 40
Registrovaný: 23 jan 2007, 15:41

Príspevok od používateľa Mato.y »

je to super, funguje, len mam taký problém: chcem dať na ne aj hypertext. Ako tam mám vložiť tie tagy? Bo ja nemám v php celkom jasno :oops:
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Zmeň toto:

Kód: Vybrať všetko

<img src=\"".$obrazky[$k]."\">
na niečo ako

Kód: Vybrať všetko

<a href='a.html'><img src='".$obrazky[$k]."'></a>
(len by bolo asi lepšie mať v tabuľke s obrázkami aj linky)
Mato.y
Light Expert
Light Expert
Príspevky: 40
Registrovaný: 23 jan 2007, 15:41

Príspevok od používateľa Mato.y »

...a tým pádom bude každý obrázok odkazovať na to isté miesto nie? Ale ja chcem na každý obrázok iný hypertext ... :? :?:
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Mato.y napísal:...a tým pádom bude každý obrázok odkazovať na to isté miesto nie? Ale ja chcem na každý obrázok iný hypertext ... :? :?:
Veď preto je lepšie, aby tie odkazy boli v tabuľke s tými obrázkami. :wink:

Kód: Vybrať všetko

<?php

	define("COLS", 6);	// pocet stlpcov

function add_image(&$arr, $img, $href)
{
	$i = count($arr);
	$arr[$i][0] = $img;
	$arr[$i][1] = $href;
}

	$obrazky = array();

	add_image($obrazky, "obrazok_1.jpg", "http://site.sk/link1.html");
	add_image($obrazky, "obrazok_2.jpg", "http://site.sk/link2.html");
	add_image($obrazky, "obrazok_3.jpg", "http://site.sk/link3.html");
	add_image($obrazky, "obrazok_4.jpg", "http://site.sk/link4.html");
	add_image($obrazky, "obrazok_5.jpg", "http://site.sk/link5.html");
	add_image($obrazky, "obrazok_6.jpg", "http://site.sk/link6.html");
	add_image($obrazky, "obrazok_7.jpg", "http://site.sk/link7.html");
	add_image($obrazky, "obrazok_8.jpg", "http://site.sk/link8.html");
	add_image($obrazky, "obrazok_9.jpg", "http://site.sk/link9.html");
	add_image($obrazky, "obrazok_10.jpg", "http://site.sk/link10.html");
	add_image($obrazky, "obrazok_11.jpg", "http://site.sk/link11.html");
	add_image($obrazky, "obrazok_12.jpg", "http://site.sk/link12.html");
	add_image($obrazky, "obrazok_13.jpg", "http://site.sk/link13.html");
	add_image($obrazky, "obrazok_14.jpg", "http://site.sk/link14.html");
	add_image($obrazky, "obrazok_15.jpg", "http://site.sk/link15.html");
	add_image($obrazky, "obrazok_16.jpg", "http://site.sk/link16.html");
	add_image($obrazky, "obrazok_17.jpg", "http://site.sk/link17.html");
	add_image($obrazky, "obrazok_18.jpg", "http://site.sk/link18.html");
	add_image($obrazky, "obrazok_19.jpg", "http://site.sk/link19.html");


	shuffle($obrazky);

	echo "<table>";
	for ($i = 0; $i < count($obrazky); ) {
		echo "<tr>";
		for($j = 0; $j < COLS; $j++) {
			echo "<td>";
			if ($i < count($obrazky)) {
				echo "<a href='".$obrazky[$i][1]."'><img src='".$obrazky[$i][0]."'></a>";
				$i++;
			}
			echo "</td>";
		}
		echo "</tr>\n";
	}
	echo "</table>\n";

?>
Mato.y
Light Expert
Light Expert
Príspevky: 40
Registrovaný: 23 jan 2007, 15:41

Príspevok od používateľa Mato.y »

thx, všetko funguje jak má :wink:
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Do toho

Kód: Vybrať všetko

echo "<a href='".$obrazky[$i][1]."'><img src='".$obrazky[$i][0]."'></a>";
pridaj aj veľkosť toho obrázku (aby sa to pri načítavaní neposúvalo hore/dole). Napr.:

Kód: Vybrať všetko

echo "<a href='".$obrazky[$i][1]."'><img width=120 height=90 src='".$obrazky[$i][0]."'></a>";
DomCZo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 235
Registrovaný: 16 okt 2006, 22:49

Príspevok od používateľa DomCZo »

Pridané odkazy:

Kód: Vybrať všetko

<?php


#### MANUALNE NASTAVENIA - ZACIATOK ####

$obrazky = array(
"obrazok_1.jpg" => "link1",
"obrazok_2.jpg" => "link2",
"obrazok_3.jpg" => "link3",
"obrazok_4.jpg" => "link4",
"obrazok_5.jpg" => "link5",
"obrazok_6.jpg" => "link6",
"obrazok_7.jpg" => "link7",
"obrazok_8.jpg" => "link8",
"obrazok_9.jpg" => "link9",
"obrazok_10.jpg" => "link10",
"obrazok_11.jpg" => "link11",
"obrazok_12.jpg" => "link12",
"obrazok_13.jpg" => "link13",
"obrazok_14.jpg" => "link14",
"obrazok_15.jpg" => "link15",
"obrazok_16.jpg" => "link16",
"obrazok_17.jpg" => "link17",
"obrazok_18.jpg" => "link18",
"obrazok_19.jpg" => "link19",
"obrazok_20.jpg" => "link20",
"obrazok_21.jpg" => "link21",
"obrazok_22.jpg" => "link22",
"obrazok_23.jpg" => "link23",
"obrazok_24.jpg" => "link24");

$obrazkov_v_riadku = 6;

#### MANUALNE NASTAVENIA - KONIEC ####


function ass_array_shuffle($array)
{
	while (count($array) > 0)
	{
		$val = array_rand($array);
		$new_arr[$val] = $array[$val];
		unset($array[$val]);
	}
	return $new_arr;
}

$obrazky2 = ass_array_shuffle($obrazky);

while(list($obrazok, $link) = each($obrazky2))
{
	$obrazky_nahodne[] = $obrazok;
	$linky_nahodne[] = $link;
}


$k = 0;

for($i = 0; $i <= (ceil(count($obrazky_nahodne)/$obrazkov_v_riadku))-1; $i++)
{
	for($j = 0; $j <= ($obrazkov_v_riadku)-1; $j++)
	{
		if(($obrazky_nahodne[$k] != NULL))
		{
			$rozlisenie[$k] = getimagesize($obrazky_nahodne[$k]);
			echo "<a href=\"".$linky_nahodne[$k]."\"><img src=\"".$obrazky_nahodne[$k]."\" ".$rozlisenie[$k][3]." border=\"0\"></a>";
			$k++;
		}
	}
	echo "<br>\r\n";
}


?>
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

DomCZo: prečo to nedáš do tabuľky (<table>)? :)
DomCZo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 235
Registrovaný: 16 okt 2006, 22:49

Príspevok od používateľa DomCZo »

Chrono: To už nechám na ňom. 8)
Napísať odpoveď