POdskazhite pliz, kak reshit problemku: Iz php peredaju arrays: PHP: $smarty->assign('cats', $db->getAll('SELECT * FROM db_categories')); $smarty->assign('image', $db->getAll('SELECT * FROM db_images')); A v SMARTY nado zadat' tkoj cikl, chtobi vidavalas kazhdaja kategorija i sootvetstvujushee ej iobrazhenie iz tablici db_images ODIN RAZ. Problemma v tom, chto kak ja sdelal, ono sozdaet kazhdij raz kategoriju i prisvaivaet ej kartinku, no mne nuzhno, chtobi kategoriju pokazivalo tolko raz! PHP: {section name=cat loop=$cats max=8} {section name=img loop=$image } {if $cats[cat].id_cat == $image[img].id_cat} <td> <table cellpadding=0 width="200" cellspacing=0 align=center valign=middle> <tr> <td class="td1" align=center valign="top"> <center><a href="?c={$cats[cat].id_cat}&action=ShowGallery"><img src="http://gallery.eutraveller.net/picture/small/{$image[img].path}" alt="To {$cats[cat].name} category" border="0" /></a></center> <span class="class21"><a href="?c={$cats[cat].id_cat}&action=ShowGallery">{$cats[cat].name}</a> </span> </td> </tr> </table> </td> {else} {/if} {/section} {/section} I eshe, kak sdelat chtobi ono randomly vivodilo izobrazhenie!? Spasibo!
Что-то я не понял. Сначало нужно, чтобы категории соотвествовала картинка, а потом нужно, чтобы случайные картинки выводились в категории.
Eto kak variant, nu dla nachala, kak sdelat tak, chtobi dla kategorii vibiralas tolko odna kartinka, a ne vse, kotorie naxodiatsa v nej! A to ono mne sozdaet 10 odinakovix kategorij s raznimi kartinkami k nej!
А почему в таблицу db_categories не вставить еще одно поле images? Но если любите извращения, то в db_images надо создать поле cats_id и создать запрос SELECT * FROM db_images t1 INNER JOIN db_categories t2 ON t1.cats_id=t2.id
V oboix tablicax uzhe est pole id_cat i v images pri dobavlenii fotografii zapisivaetsa k kakoj kategorii ona otnositsa. A vot kak interesno osushestvit INNER JOIN v PEAR i chem peredavet v smarty? getALL'om? JA tak ponimaju inner JOIN ob'edeniaet levuju tablicu db_category s db_images i tam gde, naprimer v db_category znachenie id_cat = 7 v odnom riadu, a v db_images id_cat=7 vstrechaetsa 2mia riadami, ono zapominaet tolko odin riad. da?(Eto v principe to, chto bi ja xotel chtobi bilo) Ja poproboval tipa tokogo: $sql= 'SELECT * FROM db_images INNER JOIN db_categories ON db_images.id_cat=db_categories.id_cat '; $image= $db->getAll($sql); if (PEAR::isError($image)) { die($image->getMessage()); } No nichego ne izmenilos....
У тебя на одну категорию приходится несколько картинок? Сделай перед вторым циклом переменную-триггер. Как только вывел картинку, пиши в нее какоето значение, по которому ты будеш цикл пропускать Случайную картинку можно вывести двумя способами. Первый - перед вводом массива в smarty перемешать его с помощью shuffle. Второй - перед циклом по картинкам генерить случайное число от 0 до кол-ва картинок твоей категории, и выводить картинку с этим порядковым номером