Autor Zpráva
olech
Profil *
Dobrý den,

mám násedující případ:

tabulka KNIHY, tabulka CTENARI, tabulka PRECETLI

KNIHY obsahuji nekolik sloupcu, důležit je nazev a id_knihy.

CTENARI obsahuji nekolik sloupcu, důležitý je jmeno a id_ctenare

KNIHY a CTENARI jsou M:N a tabulka

PRECETLI má sloupce id_knihy, id_ctenare a rika nam, ktery čtnář přečetl jakou knihu.

A řeším následující problém: tent kód
$sql = "SELECT nazev, jmeno FROM KNIHY, CTENARI, PRECETLI WHERE KNIHY.id_knihy = PRECETLI.id_ctenare AND PRECETLI.id_herce = CTENARI.id_ctenare AND KNIHY.nazev like 'Ostrov'";

$result = mysql_query($sql,$db);
        if(mysql_num_rows($result)==0) echo "Nic nebylo nalezeno";
    else{
      while(list($a, $b) = mysql_fetch_array($result)){
        echo "$a, $b";
          }
}   

Mi vypíše

Ostrov, Petr
Ostrov, Martina

super, funguje to, ale potřebuji docílit toho, aby výpis byl jen: Ostrov, Petr, Martina


Můžete mi někdo prosím poradit jak to udělat ? Já už na to asi nepřijdu...
Chuchycek
Profil
V php, když to jen poupravím

$result = mysql_query($sql,$db);
if(mysql_num_rows($result)==0) 
{
    echo "Nic nebylo nalezeno";
}
else
{
    $data = array();
    while(list($a, $b) = mysql_fetch_array($result))
    {
        $data[$a][] = $b;
    }
    foreach($data as $kniha => $precetl)
    {
      echo $kniha . ", " . implode(",", $precetl);
    }
} 

 
olech
Profil *
Skvěle, funguje!

Na to bych nepřišel, moje znalosti php jsou velmi malé, DÍKY!
olech
Profil *
No, vyvstal mi tu jeden malý problém, pokud v SELECTU v mém prvním příspěvku chci vybrat krom nazvu a jmena i autora knihy a dát to do konečného výpisu, kód proměnnou pro autora uplně ignoruje.

jakože mám:

$sql = "SELECT nazev, jmeno, autor FROM KNIHY, CTENARI, PRECETLI WHERE KNIHY.id_knihy = PRECETLI.id_ctenare AND PRECETLI.id_herce = CTENARI.id_ctenare AND KNIHY.nazev like 'Ostrov'";
 
$result = mysql_query($sql,$db);
if(mysql_num_rows($result)==0) 
{
    echo "Nic nebylo nalezeno";
}
else
{
    $data = array();
    while(list($a, $b, $c) = mysql_fetch_array($result))
    {
        $data[$a][] = $b;
    }
    foreach($data as $kniha => $precetl)
    {
      echo $kniha ." napsána: ".$c. ", " . implode(",", $precetl);
    }
} 
 
 


co s tím? :(
Chuchycek
Profil
Upravil bych SQL, ale budíž. Ale tahle úprava už není o znalosti jazyka. :-)

$result = mysql_query($sql,$db);
if(mysql_num_rows($result)==0) 
{
    echo "Nic nebylo nalezeno";
}
else
{
    $data = array();
    while(list($a, $b, $c) = mysql_fetch_array($result))
    {
        $data[$a]['ctenari'][] = $b;
        $data[$a]['autor'] = $c;
    }
    foreach($data as $kniha => $info)
    {
      echo $kniha ." napsána: ".$info['autor']. ", " . implode(",", $info['ctenari']);
    }
} 
olech
Profil *
Díky, už jsem to zprovoznil trošku jinak, ale asi dost prasácky :D
juriad
Profil
olech:
V podstatě jde o úlohu Nejčastější potíže s PHP (FAQ) » Nadpis skupiny nejen při výpisu z databáze.
Lze to tedy řešit i bez nutnosti ukládání do jiného pole (ale naopak musíš přidat do dotazu ORDER BY).

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: