За последние 24 часа нас посетили 17545 программистов и 1723 робота. Сейчас ищет 1671 программист ...

Obrabativaem array result v SMARTY! KAK?

Тема в разделе "PHP и базы данных", создана пользователем whatsoever, 13 июн 2006.

  1. whatsoever

    whatsoever Активный пользователь

    С нами с:
    29 мар 2006
    Сообщения:
    58
    Симпатии:
    0
    POdskazhite pliz, kak reshit problemku:

    Iz php peredaju arrays:

    PHP:
    1.  
    2. $smarty->assign('cats', $db->getAll('SELECT * FROM db_categories'));  
    3. $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:
    1. {section name=cat loop=$cats max=8}
    2.      
    3.                                                          
    4.     {section name=img loop=$image }
    5.     {if $cats[cat].id_cat == $image[img].id_cat}
    6.                  
    7.     <td>
    8.     <table cellpadding=0 width="200" cellspacing=0 align=center valign=middle>
    9.         <tr>
    10.             <td class="td1" align=center valign="top">
    11.              
    12.              
    13.                 <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>                            
    14.              
    15.             <span class="class21"><a href="?c={$cats[cat].id_cat}&action=ShowGallery">{$cats[cat].name}</a> </span>            </td>
    16.         </tr>
    17.     </table>
    18.     </td>
    19.              
    20.     {else}
    21.             {/if}            
    22.     {/section}
    23.                                          
    24.                      
    25.                                  
    26.      
    27. {/section}
    I eshe, kak sdelat chtobi ono randomly vivodilo izobrazhenie!?

    Spasibo!
     
  2. Mavir

    Mavir Guest

    Что-то я не понял. Сначало нужно, чтобы категории соотвествовала картинка, а потом нужно, чтобы случайные картинки выводились в категории.
     
  3. whatsoever

    whatsoever Активный пользователь

    С нами с:
    29 мар 2006
    Сообщения:
    58
    Симпатии:
    0
    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!
     
  4. Mavir

    Mavir Guest

    А почему в таблицу db_categories не вставить еще одно поле images?

    Но если любите извращения, то в db_images надо создать поле cats_id и создать запрос
    SELECT * FROM db_images t1 INNER JOIN db_categories t2 ON t1.cats_id=t2.id
     
  5. whatsoever

    whatsoever Активный пользователь

    С нами с:
    29 мар 2006
    Сообщения:
    58
    Симпатии:
    0
    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....
     
  6. olo

    olo Активный пользователь

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
    У тебя на одну категорию приходится несколько картинок?
    Сделай перед вторым циклом переменную-триггер. Как только вывел картинку, пиши в нее какоето значение, по которому ты будеш цикл пропускать
    Случайную картинку можно вывести двумя способами. Первый - перед вводом массива в smarty перемешать его с помощью shuffle. Второй - перед циклом по картинкам генерить случайное число от 0 до кол-ва картинок твоей категории, и выводить картинку с этим порядковым номером
     
  7. whatsoever

    whatsoever Активный пользователь

    С нами с:
    29 мар 2006
    Сообщения:
    58
    Симпатии:
    0
    Spasibo bolshoe!