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

Discussion in 'Программирование' started by krushanovskij, Nov 19, 2009.

  1. Offline

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

    Joined:
    Nov 10, 2009
    Messages:
    13
    Likes Received:
    0
    Gender:
    Male
    доброый вечер.
    пишу вам сюда - так как отчаялся. не могу сам справиться с задачей.
    есть у меня сайт на джумле. на нем есть каталог компаний. и нужно при просмотре каталога выводить кроме названия компании еще и картинку и описание. чего у меня не получается.
    вот уже третий день сижу, мучаюсь, вроде много перечитал, а допетрать не могу(((

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

    есть класс в файле, в котором указывается, что нужно выводить именно тайтл и айди.
    Код (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>


    Вы уж извините, если я не называю вещи своими именами, или говорю что-то не верно, просто я не могу похвастаться знаниями пхп, но очень нужно решить проблему.
     
    Last edited: Nov 19, 2009
  2.  
  3. omfgpanda
    Offline

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

    Joined:
    Jan 22, 2008
    Messages:
    673
    Likes Received:
    53
    Gender:
    Male
    Re: не моуг вытащить данные из класса и вывести их

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


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

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

    Joined:
    Nov 25, 2007
    Messages:
    210
    Likes Received:
    15
    Gender:
    Male
    Re: не моуг вытащить данные из класса и вывести их

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

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

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

    Joined:
    Nov 10, 2009
    Messages:
    13
    Likes Received:
    0
    Gender:
    Male
    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пециалист <=

    Joined:
    Jan 22, 2008
    Messages:
    673
    Likes Received:
    53
    Gender:
    Male
    Re: не моуг вытащить данные из класса и вывести их

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

    OlegM Russian Joomla! Team Staff Member

    Joined:
    Apr 12, 2007
    Messages:
    4,310
    Likes Received:
    375
    Gender:
    Male
    Re: не моуг вытащить данные из класса и вывести их

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

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

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

    Joined:
    Nov 10, 2009
    Messages:
    13
    Likes Received:
    0
    Gender:
    Male
    спасибо за подсказки, целое утро пробую вытащить этот дескрипшн и image, никак ен получается, я просто не могу правильно составить запро с базу, помогите мне пожалуйста.


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

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



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

    OlegM Russian Joomla! Team Staff Member

    Joined:
    Apr 12, 2007
    Messages:
    4,310
    Likes Received:
    375
    Gender:
    Male
    Держи верный запрос:
    Код (PHP):
    1. $query = 'SELECT description,image FROM #__scatalog_company where published=1';


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

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

    Joined:
    Jan 22, 2008
    Messages:
    673
    Likes Received:
    53
    Gender:
    Male
    я думаю вернее будет
    Код (PHP):
    1. $query = 'SELECT id, title, description, image FROM #__scatalog_company where published=1';

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

    OlegM Russian Joomla! Team Staff Member

    Joined:
    Apr 12, 2007
    Messages:
    4,310
    Likes Received:
    375
    Gender:
    Male
    Тогда уж так
    Код (PHP):
    1. $query = 'SELECT * FROM #__scatalog_company where published=1';

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

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

    Joined:
    Jan 22, 2008
    Messages:
    673
    Likes Received:
    53
    Gender:
    Male
    ыыыыыыы :D
     
  13. Offline

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

    Joined:
    Nov 10, 2009
    Messages:
    13
    Likes Received:
    0
    Gender:
    Male
    с этим понятно, спасибо)
    а как в шаблоне прописать что б выводил рисунок (image) и описание (description).
    и еще наберусь наглости, и спрошу. как можно обрезать дескрипшн в моем случаее, если нужно что б влазило не более 300 символов?), и как быть с переключением языка?
     
  14. omfgpanda
    Offline

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

    Joined:
    Jan 22, 2008
    Messages:
    673
    Likes Received:
    53
    Gender:
    Male
    ну в принципе также как и титл:

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


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

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

    Joined:
    Nov 25, 2007
    Messages:
    210
    Likes Received:
    15
    Gender:
    Male
    "обрезанием" занимается функция substr()
    попробуйте сами искать информацию ))
     
    krushanovskij likes this.
  16. Offline

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

    Joined:
    Nov 10, 2009
    Messages:
    13
    Likes Received:
    0
    Gender:
    Male
    всеравно не выводит картинку, и описание.
    в базе данных у меня есть поля 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 -скайп
    я могу быть и там и там невидимым
     

Share This Page

Loading...