Не могу составить mysql-запрос, чтобы вывести данные на сайт

Тема в разделе "Программирование", создана пользователем krushanovskij, 19.11.2009.

  1. Offline

    krushanovskij Недавно здесь

    Регистрация:
    10.11.2009
    Сообщения:
    13
    Симпатии:
    0
    Пол:
    Мужской
    доброый вечер.
    пишу вам сюда - так как отчаялся. не могу сам справиться с задачей.
    есть у меня сайт на джумле. на нем есть каталог компаний. и нужно при просмотре каталога выводить кроме названия компании еще и картинку и описание. чего у меня не получается.
    вот уже третий день сижу, мучаюсь, вроде много перечитал, а допетрать не могу(((

    как по мне - проблема в том, что джумла где-то хранит свои параметры из классов, тоесть когда мне нужно было вывести тайтл и айди компании - я могу его вывести где угодно, а картинку и дескрипшин - не могу.

    есть класс в файле, в котором указывается, что нужно выводить именно тайтл и айди.
    Код (PHP):
    1. class scatalogsViewcompanys extends JView
    2. {
    3.     function display($tpl = null)
    4.     {
    5.         global $mainframe, $option;
    6.  
    7.         $db        =& JFactory::getDBO();
    8.         $uri    =& JFactory::getURI();
    9.  
    10.         $company = $this->get( 'company');
    11.         $companyfull = $this->get( 'fullcompany');
    12.         $companyname=$company->title;
    13.  
    14.         $javascript    = 'onchange="document.adminForm.submit();"';
    15.  
    16.  
    17.         $cid        = $mainframe->getUserStateFromRequest( $option.'cid',        'cid',        0,                'int' );
    18.         $query = ' SELECT id,title'.LANGSC.' as title FROM #__scatalog_company where published=1  order by title'.LANGSC.' ';
    19.         $db->setQuery( $query );
    20.         $companys_id = $db->loadObjectList();
    21. //        array_unshift($companys_id, JHTML::_('select.option', '0', '- '.JText::_('Select Company').' -', 'id', 'title'));
    22.         $lists['cid']= JHTML::_('select.genericlist',  $companys_id, 'cid', 'class="inputbox_filter"
    23. size="1" '.$javascript, 'id', 'title', intval( $cid ));
    24.  
    25.         $filter_city        = $mainframe->getUserStateFromRequest( $option.'filter_city',
    26.         'filter_city',        0,                'int' );
    27.         $query = ' SELECT id,title'.LANGSC.' as title FROM #__scatalog_city where published=1
    28. order by title'.LANGSC.' ';
    29.         $db->setQuery( $query );
    30.         $city_id = $db->loadObjectList();
    31.         array_unshift($city_id, JHTML::_('select.option', '0', '- '.JText::_('Select city').' -', 'id', 'title'));
    32.         $lists['cityid']= JHTML::_('select.genericlist',  $city_id, 'filter_city', 'class="inputbox_filter"
    33. size="1" '.$javascript, 'id', 'title', intval( $filter_city ));
    34.  
    35.         $filter_vid        = $mainframe->getUserStateFromRequest( $option.'filter_vid',        'filter_vid',  
    36.       0,                'int' );
    37.         $query = ' SELECT id,title'.LANGSC.' as title FROM #__scatalog_vid where published=1
    38.  order by title'.LANGSC.' ';
    39.         $db->setQuery( $query );
    40.         $vid_id = $db->loadObjectList();
    41.         array_unshift($vid_id, JHTML::_('select.option', '0', '- '.JText::_('Select vid').' -', 'id', 'title'));
    42.         $lists['vidid']= JHTML::_('select.genericlist',  $vid_id, 'filter_vid', 'class="inputbox_filter"
    43. size="1" '.$javascript, 'id', 'title', intval( $filter_vid ));
    44.  
    45.  
    46.         $this->assignRef( 'company',$comp);
    47.         $this->assignRef('lists',        $lists);
    48.  
    49.  
    50.         $this->assignRef( 'companyname', $companyname);
    51.         $this->assignRef( 'company', $company);
    52.         $this->assignRef( 'companyfull', $companyfull);
    53.  
    54.         parent::display($tpl);
    55.     }
    56. }


    и есть темплейт, в котором я вывожу то что мне нужно.. вот что получается:


    Код (PHP):
    1. <?php // no direct access
    2. defined('_JEXEC') or die('Restricted access'); ?>
    3. <style type="text/css">
    4. .compdetail {width: 10%; text-align: right; font-weight: bold; white-space: nowrap;}
    5. </style>
    6. <form action="<?echo JRoute::_( 'index.php?option=com_scatalog&section=company');?>" method="post" name="adminForm">
    7.  
    8. <table width="100%" border="0" cellspacing="0" cellpadding="5">
    9. <tr><td width="33%">
    10. <label for="cid">
    11.     <?php echo JText::_( 'LIST COMPANY' ); ?><br />
    12.     <? echo $this->lists['cid'];?>
    13. </label></td>
    14. <td width="33%"><label for="filter_city">
    15.     <?php echo JText::_( 'LIST CITY' ); ?><br />
    16.     <?  echo $this->lists['cityid'];?>
    17. </label></td>
    18. <td width="33%"><label for="filter_vid">
    19.     <?php echo JText::_( 'LIST VID' ); ?><br />
    20.     <?  echo $this->lists['vidid'];?>
    21. </label></td>
    22. </tr></table>
    23. <hr />
    24. <h1 style="font-size: 26px;"><? echo $this->company->title; ?></h1>
    25.  
    26. <div><a href="<? echo JRoute::_( 'index.php?option=com_scatalog&section=actions&cid='.$this->company->id);?>">
    27. <? echo JText::_( 'Actions img' );?></a>&nbsp;&nbsp;
    28. <a href="<? echo JRoute::_( 'index.php?option=com_scatalog&section=rewiews&cid='.$this->company->id);?>">
    29. <? echo JText::_( 'Rewiew img' );?></a>&nbsp;&nbsp;
    30. <a href="<? echo JRoute::_( 'index.php?option=com_scatalog&section=rewiews&task=add&cid='.$this->company->id);?>">
    31. <? echo JText::_( 'Add Rewiew img' );?></a>
    32.  
    33. </div>
    34. <br />
    35. <div>
    36. <? if (!empty($this->company->image)){?>
    37. <img align="left"  src="/images/logo/<? echo $this->company->image; ?>"/>
    38. <? } ?>
    39. <? echo $this->company->description; ?></div>
    40. <hr clear="both" />
    41. <?
    42.   foreach($this->companyfull as $key =>$value){
    43. ?>
    44. <h2 style="font-size: 20px;"><? echo $value->title; ?> (<? echo $value->city; ?>)</h2>
    45. <table width="100%" border="0" cellspacing="0" cellpadding="2">
    46. <tr><td class="compdetail"><? echo JText::_( 'VIDS' ).':';?></td><td><? echo $value->vids;?></td></tr>
    47. <tr><td class="compdetail"><? echo JText::_( 'PHONE' ).':';?></td><td><? echo $value->phone;?></td></tr>
    48. <tr><td class="compdetail"><? echo JText::_( 'FAX' ).':';?></td><td><? echo $value->fax;?></td></tr>
    49. <tr><td class="compdetail"><? echo JText::_( 'ADRESS' ).':';?></td><td><? echo $value->adress;?></td></tr>
    50. <tr><td class="compdetail"><? echo JText::_( 'URL' ).':';?></td><td><? echo $value->url;?></td></tr>
    51. <tr><td class="compdetail"><? echo JText::_( 'EMAIL' ).':';?></td><td><? echo $value->email;?></td></tr>
    52. </table>
    53. <hr />
    54.  
    55.  
    56. <?
    57.   }
    58. //  print_r($this->company);
    59. //  print_r($this->companyfull);
    60. ?>
    61.  
    62. <input type="hidden" name="option" value="com_scatalog" />
    63. <input type="hidden" name="section" value="company" />
    64. <?php echo JHTML::_( 'form.token' ); ?>
    65. </form>
    66. </pre>


    Вы уж извините, если я не называю вещи своими именами, или говорю что-то не верно, просто я не могу похвастаться знаниями пхп, но очень нужно решить проблему.
     
    Последнее редактирование: 19.11.2009
  2.  
  3. omfgpanda
    Offline

    omfgpanda Недавно здесь => Cпециалист <=

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    Re: не моуг вытащить данные из класса и вывести их

    Код (CODE):
    1. SELECT id,title'.LANGSC.' as title FROM бла бла бла


    давайте начнем с того, что вы выбираете из базы только названия и ид. Может имеет смысл добавить еще пару полей? ))))
     
  4. mike84
    Offline

    mike84 Недавно здесь

    Регистрация:
    25.11.2007
    Сообщения:
    210
    Симпатии:
    15
    Пол:
    Мужской
    Re: не моуг вытащить данные из класса и вывести их

    в коде темплейта совсем ничего не выводится или только то, что вы дописали?
    и вообще что вы дописали?
    вот этот кусок
    Код (PHP):
    1. <? echo $this->company->description; ?>

    выводится?
    а вот этот ?
    Код (PHP):
    1. <?  echo $this->lists['cityid'];?>
     
  5. Offline

    krushanovskij Недавно здесь

    Регистрация:
    10.11.2009
    Сообщения:
    13
    Симпатии:
    0
    Пол:
    Мужской
    Re: не моуг вытащить данные из класса и вывести их

    вы уж меня простите), но я случайно вставил не тото код, который хотел вам показать, вот правильные:

    Код (PHP):
    1. <?php
    2.  
    3.  
    4. jimport( 'joomla.application.component.view');
    5.  
    6.  
    7. class scatalogsViewscatalogs extends JView
    8. {
    9.     function display($tpl = null)
    10.     {
    11.  
    12.         global $mainframe, $option;
    13.  
    14.         $db     =& JFactory::getDBO();
    15.         $uri    =& JFactory::getURI();
    16.  
    17.         $company = $this->get( 'company' );
    18.                 $comp=array();
    19.         foreach($company as $value){
    20.                   $comp[mb_substr($value->title,0,1,'UTF-8')][]=$value;
    21.         }
    22.         $javascript     = 'onchange="document.adminForm.submit();"';
    23.  
    24. /*      $filter_catid       = $mainframe->getUserStateFromRequest( $option.'cid',      
    25. 'cid',      0,              'int' );
    26.         $query = ' SELECT id,title FROM #__scatalog_company where published=1';
    27.         $db->setQuery( $query );
    28.         $companys_id = $db->loadObjectList();
    29.         array_unshift($companys_id, JHTML::_('select.option', '0', '- '.JText::_('Select Company').' -',
    30.  'id', 'title'));
    31.         $lists['catid']= JHTML::_('select.genericlist',  $companys_id, 'cid', 'class="inputbox"
    32. size="1" '.$javascript, 'id', 'title', intval( $filter_catid ));*/
    33.  
    34.         $filter_city        = $mainframe->getUserStateFromRequest( $option.'filter_city',    'filter_city',  0, 'int' );
    35.         $query = ' SELECT id,title'.LANGSC.' as title FROM #__scatalog_city where published=1  
    36. order by title'.LANGSC.' ';
    37.         $db->setQuery( $query );
    38.         $city_id = $db->loadObjectList();
    39.         array_unshift($city_id, JHTML::_('select.option', '0', '- '.JText::_('Select city').' -', 'id', 'title'));
    40.         $lists['cityid']= JHTML::_('select.genericlist',  $city_id, 'filter_city', 'class="inputbox_filter"
    41. size="1" '.$javascript, 'id', 'title', intval( $filter_city ));
    42.        
    43.        
    44.        
    45.         $filter_vid     = $mainframe->getUserStateFromRequest( $option.'filter_vid', 'filter_vid', 0, 'int' );
    46.         $query = ' SELECT id,title'.LANGSC.' as title FROM #__scatalog_vid where published=1
    47. order by title'.LANGSC.' ';
    48.         $db->setQuery( $query );
    49.         $vid_id = $db->loadObjectList();
    50.         array_unshift($vid_id, JHTML::_('select.option', '0', '- '.JText::_('Select vid').' -', 'id', 'title'));
    51.         $lists['vidid']= JHTML::_('select.genericlist',  $vid_id, 'filter_vid', 'class="inputbox_filter"
    52. size="1" '.$javascript, 'id', 'title', intval( $filter_vid ));
    53.  
    54.  
    55.         $this->assignRef( 'company',$comp);
    56.         $this->assignRef('lists',       $lists);
    57.  
    58.         parent::display($tpl);
    59.     }
    60. }
    61. ?>


    и темплейт:

    Код (PHP):
    1. <?php // no direct access
    2. defined('_JEXEC') or die('Restricted access'); ?>
    3. <form action="<?echo JRoute::_( 'index.php?option=com_scatalog&section=scatalogs');?>"
    4. method="post" name="adminForm">
    5. <table width="100%" border="0" cellspacing="0" cellpadding="5">
    6. <tr><td width="33%"><label for="filter_city">
    7.     <?php echo JText::_( 'LIST CITY' ); ?><br />
    8.     <?  echo $this->lists['cityid'];?>
    9. </label></td>
    10. <td width="33%"><label for="filter_vid">
    11.     <?php echo JText::_( 'LIST VID' ); ?><br />
    12.     <?  echo $this->lists['vidid'];?>
    13. </label></td>
    14. <td width="33%">
    15. &nbsp;</td>
    16. </tr></table>
    17. <hr />
    18.  
    19. <?
    20.  
    21.   foreach($this->company as $key =>$value){
    22. ?>
    23. <h2><? echo $key; ?></h2><br>test
    24. <table width="100%" border="0" cellspacing="0" cellpadding="2">
    25. <?    
    26.     $k=0;
    27.     foreach($value as $cvalue){
    28.       echo ($k==0?'<tr>':'')."<td width=\"33%\">
    29. <a href=\"".JRoute::_( 'index.php?option=com_scatalog&section=company&cid='.$cvalue->id)."\">{$cvalue->title}</a>
    30. </td>".($k==2?'</tr>':'');
    31.     $k++;
    32.      $k=($k==3?0:$k);
    33.     }
    34.     for(;$k<=2 and $k!=0;$k++){
    35.       echo ($k==0?'<tr>':'')."<td width=\"33%\">&nbsp;</td>".($k==2?'</tr>':'');
    36.     }
    37. ?>
    38. </table>
    39. <hr />
    40. <?
    41.   }
    42. //  echo $this->lists['catid'];
    43. ?>
    44.  
    45. <input type="hidden" name="option" value="com_scatalog" />
    46. <input type="hidden" name="section" value="scatalogs" />
    47. <?php echo JHTML::_( 'form.token' ); ?>
    48. </form>


    но не понятно. как оно облегчит мои страдания....

    если просто дописать там дескрипшн и пикчер, - ничего не даст. так как эта вся фигня для списка...
     
  6. omfgpanda
    Offline

    omfgpanda Недавно здесь => Cпециалист <=

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    Re: не моуг вытащить данные из класса и вывести их

    дак вы все равно в запросе Вы выбираете только id и title ... добавляйте в Ваш запрос еще поля и получайте то что нужно )
     
  7. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 311
    Симпатии:
    375
    Пол:
    Мужской
    Re: не моуг вытащить данные из класса и вывести их

    Ну а неправильный лень удалить?

    И не игнорируй то, что другие говорят.
     
  8. Offline

    krushanovskij Недавно здесь

    Регистрация:
    10.11.2009
    Сообщения:
    13
    Симпатии:
    0
    Пол:
    Мужской
    спасибо за подсказки, целое утро пробую вытащить этот дескрипшн и image, никак ен получается, я просто не могу правильно составить запро с базу, помогите мне пожалуйста.


    PS. пытался напрямую в шаблоне вытащить данные, подключаясь няпрямик к БД, всеравно не вышло, наверное, опять неправильно составляю запрос.

    есще раз спасибо всем, кто помогает...



    PPS могу заменить код на правильный. вместо того. что бы удалять.
     
  9. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 311
    Симпатии:
    375
    Пол:
    Мужской
    Держи верный запрос:
    Код (PHP):
    1. $query = 'SELECT description,image FROM #__scatalog_company where published=1';


    Оффтопик (не в тему) - жми сюда!
     
  10. omfgpanda
    Offline

    omfgpanda Недавно здесь => Cпециалист <=

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    я думаю вернее будет
    Код (PHP):
    1. $query = 'SELECT id, title, description, image FROM #__scatalog_company where published=1';

    Ему же еще и титл с ид нужен )
     
  11. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 311
    Симпатии:
    375
    Пол:
    Мужской
    Тогда уж так
    Код (PHP):
    1. $query = 'SELECT * FROM #__scatalog_company where published=1';

    вдруг еще что-нибудь понадобится )
     
  12. omfgpanda
    Offline

    omfgpanda Недавно здесь => Cпециалист <=

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    ыыыыыыы :D
     
  13. Offline

    krushanovskij Недавно здесь

    Регистрация:
    10.11.2009
    Сообщения:
    13
    Симпатии:
    0
    Пол:
    Мужской
    с этим понятно, спасибо)
    а как в шаблоне прописать что б выводил рисунок (image) и описание (description).
    и еще наберусь наглости, и спрошу. как можно обрезать дескрипшн в моем случаее, если нужно что б влазило не более 300 символов?), и как быть с переключением языка?
     
  14. omfgpanda
    Offline

    omfgpanda Недавно здесь => Cпециалист <=

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    ну в принципе также как и титл:

    Код (PHP):
    1. echo $this->company->description
    2. //если у вас в поле img  храниться путь к изображению
    3. echo "<img src=\"{$this->company->img}\">


    З,Ы,: переменные description и img должны совпадать с именами полей в БД. Т.е. если БД поля другие, то соответственно Вы должны поменять имена переменных здесь.
     
    krushanovskij нравится это.
  15. mike84
    Offline

    mike84 Недавно здесь

    Регистрация:
    25.11.2007
    Сообщения:
    210
    Симпатии:
    15
    Пол:
    Мужской
    "обрезанием" занимается функция substr()
    попробуйте сами искать информацию ))
     
    krushanovskij нравится это.
  16. Offline

    krushanovskij Недавно здесь

    Регистрация:
    10.11.2009
    Сообщения:
    13
    Симпатии:
    0
    Пол:
    Мужской
    всеравно не выводит картинку, и описание.
    в базе данных у меня есть поля image для картинки и description для описания.
    я пишу так:

    Код (PHP):
    1. echo $this->company->description
    2. echo "<img src=\"{$this->company->image}\"> "


    и такие варианты:
    Код (PHP):
    1. echo $this->company->description;
    2. echo $cvalue->description;
    3. echo $this->company->image;
    4. echo "<img src=\"{$this->company->image}\">";

    и как только не пробую, всеравно ен хочет выводить, при том. что в другом файле указал доставать все данные из определенной таблицы.

    может кто-то сможет мне помочь в аське? или лучше в скайпе...
    46четыре79один00ноль -ася
    krushanovskij -скайп
    я могу быть и там и там невидимым
     

Поделиться этой страницей

Загрузка...