Autor Zpráva
Andrej.B
Profil
Zdravim,

mam vyber z databazy podla nejakych podmienok. To este dam.
Vyberam z kategorie admin_kategorie ci ma zobrazit menu pre prihlaseneho uzivatela, a ci ma k tomu pristup cez UserLevel($sid, $conn, 'id_user')
$q = "
        SELECT a.*,u.*
            FROM admin_kategorie a
                JOIN user_admin_kategorie u
                    ON u.id_admin_kategorie= a.id_admin_kategorie
            WHERE u.id_user = '".UserLevel($sid, $conn, 'id_user')."'
            AND aktivny_admin_kategorie = 1
            ORDER BY a.level_kategorie DESC, a.id_admin_kategorie ASC
            
        ";

V dalsom kroku mu to naservirujem. Ma z celeho pristup len k urcitym linkom v administracnom centre.
V admin_kategorie mam este Column s nazovom level_kategorie, kde moze byt cislo 1, 5 , 11...

Potrebujem pri servirovani aby mi to rozdelil do riadkov:
vsetko s level_kategorie 1 = v jednom riadku
vsetko s level_kategorie 5 = v dalsom riadku
vsetko s level_kategorie 11 = v dalsom riadku

Netusim ako spravne to dat do jedneho selectu. Pokial by som to dal do 3 roznych, tak by to slo, staci priradit do selectu where level_kategorie = 1 . Ale da sa to nejako krajsie a v jednom kroku? Pravdepodobne Group BY a ten prehnat nejakym while. Ale pouzivat iac Selectov v jednom selecte je prilis.

Diky, ak sa na to niekto pozrie.
Kajman
Profil
Těžko uhádnout čemu říkáte řádky, ale buď
Nejčastější potíže s PHP (FAQ) » Nadpis skupiny nejen při výpisu z databáze
nebo komplexněji dle
Srovnání dotazů do závislých tabulek
Andrej.B
Profil
Ide o to, ze z tabuky vyberam hodnotu napriklad nazov_admin_kategorie podla toho, ci ma pritup.
Vypisem :

$q = "
        SELECT a.*,u.*
            FROM admin_kategorie a
                JOIN user_admin_kategorie u
                    ON u.id_admin_kategorie= a.id_admin_kategorie
            WHERE u.id_user = '".UserLevel($sid, $conn, 'id_user')."'
            AND aktivny_admin_kategorie = 1
            ORDER BY a.level_kategorie DESC, a.id_admin_kategorie ASC
            
        ";
        $level = $conn->query($q);
        while ($row_level = $level->fetch_array()) 
        { 
        echo $row_level['nazov_admin_kategorie'];
        echo '('.$row_level['level_kategorie'].')';
        echo ', ';
        }

Vypis je :
Nastavenie(11), Kategorie(11), Autor(1), Seria(1), Prednaska(1), Autor->Prednaska(5),

Potrebujem tento vypis urobit tak, aby mi to dalo dohromady po kazdom cisle v zatvorke v takomto tvare:
Nastavenie(11), Kategorie(11), < /br>
Autor(1), Seria(1), Prednaska(1), < /br>
Autor->Prednaska(5),< /br>

Bud pouzit 3 krat select, ale to uz je dost narocne ako pise Jakub na vrana.cz cez viacere dotazy. Alebo v jednom a s vysledkami sa pohrat, ale to je to co mi nejde...

V tom priklade Nadpis skupiny
$pamet = '';
while ($line = …)
{
  if ($line['pismeno'] != $pamet)
  {
    $pamet = $line['pismeno'];
    echo "<b>$pamet</b><br>";
  }
  echo "$line[slovo]<br>";
}

netusim ako to zapracovat do mojho prikladu.

Dik
Kajman
Profil
Místo pismeno použijete level_kategorie. V echu uvnitř if dáte <br>. Za blokem patřící k if pak necháte vaše echa.
Andrej.B
Profil
Neviem to urobit tak, stale mi donekonecna ukazuje prvu kategoriu, nejako to loopne forever...
Spravil som to takto nakoniec:

$q2 = 
        "
        select *
        from admin_kategorie 
        group by level_kategorie
        Order by level_kategorie DESC
        "; 
        $level2 = $conn->query($q2);
        while ($row_level2 = $level2->fetch_array()) 
        {  
        
        
        $q = "
        SELECT a.*,u.*
            FROM admin_kategorie a
                JOIN user_admin_kategorie u
                    ON u.id_admin_kategorie= a.id_admin_kategorie
            WHERE u.id_user = '".UserLevel($sid, $conn, 'id_user')."'
            AND aktivny_admin_kategorie = 1
            AND a.level_kategorie = '".$row_level2['level_kategorie']."'  
            ORDER BY a.level_kategorie DESC, a.id_admin_kategorie ASC
            
        ";
        $level = $conn->query($q);
        
        while ($row_level = $level->fetch_array()) 
        {
        echo $row_level['nazov_admin_kategorie'];
        
        }
        echo '</div><div class="p-1">';
        }
Da mi tam ten div ako skonci jedna GROUP BY v prvom dotaze.
Diky za pomoc, este skusim ten vyssie na nejakom lahsom pripade.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0