MySQL query проблем

worda

New member
Здравейте , пак съм аз . Имам проблем с една заявка , както казах не съм много добър с mysql , но започна да ми става интересно и не мога да спря да правя подобрения по сайта.Та по темата, в таблица jos_content имам title и catid . В таблица jos_categories имам id и title. Искам някак си да свържа catid с id и да изведа името на категорията(title) от jos_categories.
Пробвах много неща, но не се получава ...стигнах само до показването на нещата от jos_content..
PHP:
$query1 = mysql_query("SELECT *, COUNT(title) AS num FROM jos_content WHERE sectionid=5 AND state=1 GROUP by title order by id DESC LIMIT 5");
while($query_1=mysql_fetch_array($query1)){
echo '<a href="">'.$query_1['title'].'</a> / Видян: '.$query_1['hits'].' пъти / Категория: '.$query2['id'].' <br/>';
echo $query_1['id'].'<br/>';
echo $query_1['metadesc'].'<br/><hr/>';
}
Искам $query2['id'] да изкарва името на на категорията , имайки в предвид че id от jos_content е равно на catid от jos_categories.

Благодаря предварително !
 
Re: MySQL query проблем

Има 2 начина да направиш това
Първият (не толкова добрия) е да си направиш 1 функция която да извиква името на категорията по нейното ID

PHP:
function GetCategory($id){
    $select = sprintf("SELECT `title` FROM `$SiteBase`.`jos_categories` WHERE `id` = '".$id."' LIMIT 1");
    $result = mysql_query($select, $site_connect) or die(MYSQL_QUERY_ERROR.mysql_error());
    $array = mysql_fetch_array($result);    
    return $array['title'];
}

и след това тази функция да я интегрираш в твоя код:
PHP:
$query1 = mysql_query("SELECT *, COUNT(title) AS num FROM jos_content WHERE sectionid=5 AND state=1 GROUP by title order by id DESC LIMIT 5"); 
while($query_1=mysql_fetch_array($query1)){ 
echo '<a href="">'.$query_1['title'].'</a> / Видян: '.$query_1['hits'].' пъти / Категория: '.GetCategory($query1['id']).' <br/>'; 
echo $query_1['id'].'<br/>'; 
echo $query_1['metadesc'].'<br/><hr/>'; 
}

Така обаче се правят 2 MySQL заявки и сайта се забавя (за това този начин не е толкова правилен) сега ще помисля малко и ще ти кажа как ще стане с 1 заявка
 
Re: MySQL query проблем

Така обаче се правят 2 MySQL заявки и сайта се забавя (за това този начин не е толкова правилен) сега ще помисля малко и ще ти кажа как ще стане с 1 заявка
Написах това :
PHP:
$queryy=mysql_query("
  SELECT *
  FROM jos_content
  LEFT JOIN jos_categories ON jos_content.catid = jos_categories.id
  LEFT JOIN jos_users ON jos_content.created_by = jos_users.id
  WHERE sectionid=5 AND state=1 order by jos_content.id DESC LIMIT 5");
 while($queryy_=mysql_fetch_array($queryy)){
 echo 'Заглавие: '.$queryy_['title'].'<br/>';
echo 'Категория: '.$queryy_['title'].'<br/>';
echo 'Автор: '.$queryy_['username'].'<br/>';
echo $queryy_['metadesc'].'<br/><hr/>';
Всичко е наред , само не знам как да изведа title от jos_content ,а не от jos_categories ... Тъй като те са едни и същи...
 
Re: MySQL query проблем

Замени "*" с "*,jos_content.title AS jos_content_title,jos_categories.title AS jos_categories_title" и така ще си го изведеш:

$queryy_['jos_content_title'] и $queryy_['jos_categories_title']
Аз си поиграх няколко часа и най-после го направих , целия код е около 45 реда (мисля че зарежда доста бързо) . Демо тук или на самия сайт (скрипта вече е добавен) . След малко ще пробвам и твоя вариант.
 
Re: MySQL query проблем

Можеше да го пуснеш и тук в крайна сметка.
Скрипта е доста интересен 🙂

Ето една малка интересна част, която може да се замени само с един ред:
PHP:
if($trudnost=='1')$trudnostimg= '<img src="http://devme.eu/images/trudnost/trudnost1.png"/>'; 
if($trudnost=='2')$trudnostimg= '<img src="http://devme.eu/images/trudnost/trudnost2.png"/>'; 
if($trudnost=='3')$trudnostimg= '<img src="http://devme.eu/images/trudnost/trudnost3.png"/>'; 
if($trudnost=='4')$trudnostimg= '<img src="http://devme.eu/images/trudnost/trudnost4.png"/>'; 
if($trudnost=='5')$trudnostimg= '<img src="http://devme.eu/images/trudnost/trudnost5.png"/>';

Явно изобщо не си схванал идеята на sprintf:

PHP:
$select = sprintf("SELECT username FROM jos_users WHERE id ='".$author_id."'");

Изобщо за каква бързина говорим на скрипта при положение, че той основно прави заявки към базата? Какво може да е бавното на 10 реда код?

Препоръчвам ти да разучиш някой фреймуорк и да не се занимаваш с такива неща.
 

Back
Горе