Извеждане от две таблици

pro12

Registered
Имам две таблици каталог и снимки. Искам да изведа името на каталога и снимките към каталога. Заявката ми е [sql]SELECT t.title, t2.pic FROM cat AS t LEFT OUTER JOIN image AS t2 on t.id = t2.catid WHERE t.id=?
[/sql] Извежда, но името на каталога се повтаря по няколко пъти. Как да направя така че да не се повтаря името на каталога?
 
Revelation каза:
[sql]
SELECT DISTINCT t.title ....
[/sql]

?
Това не ми върши работа. DISTINCT не се ли използва за избягване на
повтарящите се записи?
Аз нямам повтарящи се заглавия в таблицата каталог. Като извеждам от двете таблици се получава повтарянето на заглавията.
Като имам заглавие тест с ид 1 и в таблицата снимки имам примерно 2 снимки с ид на каталог тест се извежда тест снимка1 тест снимка2. Аз искам да се извежда тест снимка1 снимка2. Как може да стане?
 
Само със SQL заявка няма да стане. Така или иначе ще трябва обработка.
Вкарай в един двумерен масив данните, като ключа ще е ID на категорията, а стойността ще е масив от стойности на снимките.


PHP:
$data = array(1 => array('snimka1', 'snimka2'),
                            2 => array('snimka3'),
                            3 => array('snimka4', 'snimka5', 'snimka6')
);

Трябва да направиш нещо подобно и след това работиш само с масива. Така спестяваш и заявки към SQL сървъра.
 
Така ли?
PHP:
$data= array();
    while ($row = $result->fetch_array()) {
        $data []=$row['pic'];
         $title=$row['title'];
    }
 
Ако искам да изведа още полета от дб и тях ги слагам в масива нали?
 
pro12 каза:
Ако искам да изведа още полета от дб и тях ги слагам в масива нали?
Зависи каква логика искаш да използваш. Принципно вероятно ще ти е по-добре в друг масив да са тези полета, но наистина зависи каква е информацията от в тях.
 
По добре да имам още един масив за останалата информация.
PHP:
$data= array();  
    $datad= array();// masiv za info
    while ($row = $result->fetch_array()) {
                $data[$row['title']]['kkk'] = $row['pic'];
               
                for ($index = 0; $index < count($data); $index++) {
                    echo $data[$row['title']]['kkk']; ///pokazvane na snimki
                }
} 
      foreach ($data as $k=> $value) { //pokazvane na imeto na key 
               echo $k;
    }
Правилно ли ми е логиката за показва на данните от масива?
 
pro12 каза:
По добре да имам още един масив за останалата информация.
PHP:
$data= array();  
    $datad= array();// masiv za info
    while ($row = $result->fetch_array()) {
                $data[$row['title']]['kkk'] = $row['pic'];
               
                for ($index = 0; $index < count($data); $index++) {
                    echo $data[$row['title']]['kkk']; ///pokazvane na snimki
                }
} 
      foreach ($data as $k=> $value) { //pokazvane na imeto na key 
               echo $k;
    }
Правилно ли ми е логиката за показва на данните от масива?

Не точно. На теб ти трябва да пазиш информацията(в случая снимките), които отговарят на една категория, а останалата информация си я взимаш нормално.
Ако ще пазиш нещата в масив, то по-добре си направи един масив и си измисли правилна и удобна структура за използването му.
 
PHP:
$data['title'][0]

title ти е заглавието на категорията - $row['title']


Но последния начин, който си показал не е правилен. Презаписваш снимките на един и същи индекс в масива - индекс kkk.

PHP:
$data[$row['title']][] = $row['pic'];

Така трябва да стане, за да вкараш всички снимки.
 
PHP:
$data[$row['title']][]
Защо като масива е така първата снимка излиза два пъти? По следния начин.
array(1) { [0]=> string(10) "Desert.jpg" } array(2) { [0]=> string(10) "Desert.jpg" [1]=> string(14) "Lighthouse.jpg" }
 
Е, не мога да ти кажа. Опитай се да дебъгнеш данните, които получаваш, за да разбереш защо. На сляпо, без да тествам, не мога да ти дам причина за това.
 

Горе