Autor Zpráva
anione
Profil
Dobrý den,
Měl bych jednu menší otázku:

Chci vypsat poslední článek v kategorii na hlavní stránce.

Mám 3 tabulky: kategorie, slozka a clanky.
V tabulce clanky mám vždy čas vytvoření.

Podle toho to pak řadím,

Potřebuji spojit do while 2 zápisy:
$slozkarow = mysql_fetch_assoc($slozkaresult)
a
$clankycrow = mysql_fetch_assoc($clankyresult)

Zkoušel jsem to pomocí and, ale nefungujete to:

while($slozkarow = mysql_fetch_assoc($slozkaresult) and $clankycrow = mysql_fetch_assoc($clankyresult)) )

php kod...

);

Děkuji za rady.
pcmanik
Profil
anione:
Chces vybrať jeden posledný článok z každej kategórie a ten zobraziť?
Lebo podľa toho, čo si napísal chceš len jeden článok a tam ti je while zbytočné.

Ak chceš, ale zároveň pracovať s druhým dotazom vo vnútri while, použi mysql_data_seek(). Pričom si vytvoriš pomocnú premennú, ktoru budeš vo vnútri toho cyklu pokaždé zvyšovať a použijes ju v tejto funkcii, vďaka čomu sa ti to bude pokaždé posúvať teda presne tak ako chceš.
A takto vyzerá správny zápis while.
Someone
Profil
anione:
Nelze to spojit v dotazu?
l564
Profil
Someone:
Jde, ale nikdy jsem nezjistil jak :). Ale prý se dáva do dotazu JOIN který propojí první tabulku s druhou
pcmanik
Profil
l564:
Mi sme sa ťa nepýtali na riešenie, ktoré aj tak nevieš. Potrebujeme len vedieť viac informácii od anione.
Alphard
Profil
[#1] anione
Váš kód je netypický, ale mohl by fungovat. V těle cyklu by měly být k dispozici $slozkarow a $clankycrow, nejsou?
peta
Profil
Alphard: S tim mohl fungovat bych chvili pockal. Ukazu proc.
while(
$slozkarow = mysql_fetch_assoc($slozkaresult) and $clankycrow = mysql_fetch_assoc($clankyresult))
)
$a = b() and $c = d() // podle meho se b a c zanduji nebo b a vysledek c=d() a pak se to cele ulozi do a, takze tam schazi zavorky
($a = b()) and ($c = d())
Spectator
Profil
ten poslední článek v kategorii má datum vytvoření a patří prostě do kategorie? Ty chceš vybrat článek s nejvyšším datem?
Alphard
Profil
[#7] peta
To co popisuješ by mělo nastat při použití &&, ale ne při and, viz PHP Operators: Operator Priority.
anione
Profil
Tak jsem to nakonec vyřešil ukládáním hodnot do tabulky slozky.
Vždy, když vytvořím nový článek, aktualizuje se datum v databázi, kde pro něj mám sloupec posledni_clanek_datum. Pak mohu zobrazit poslední článek s datumem na hlavní straně i v kategoriích.
Spíše, by mě zajímalo, zda to nebude mít nějaký zpomalení oproti klasickému spočítání přes php?

EDIT:
Nakonec jsem zjistil, že by to šlo vypsat, pokud bych vloži while do while:
while($slozkarow = mysql_fetch_assoc($slozkaresult)){

while($clankycrow = mysql_fetch_assoc($clankyresult)){

// PHP kod...

}

}

Co myslíte, že je lepší řešení? Ukládání hodnot do databáze, nebo spočítání pomocí PHP?
pcmanik
Profil
anione:
Ukáž nám tú tvoju slávnu databázu, lebo podľa toho že si musiš ukladať posledný dátum tam máš zlú štruktúru, alebo jednoducho nevieš dotazom vybrať posledný článok?

Oproti akému počítaniu na strane php máš na mysli?

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