Autor Zpráva
gumit
Profil
Dobrý den,

chtěl bych Vás požádat o pomoc s mým problémem. Kolem PHP s MySQL se pohybuji krátkou dobu ale k věci, potřeboval bych pomoci s tím, že mám dvě tabulky články a akce, a chtěl bych tyhle dvě tabulky vypsat na hlavní straně, aby byly pod sebou řazeny pomoci datumu. Už si s tím hraju necelý den a nevím jak dál tak sem přišel zde požádat o pomoc. Kdyby jste něčemu nerozumněli rád zodpovím případné další informace..

Vysvětlení situace:

První tabulka struktura:
CREATE TABLE IF NOT EXISTS `akce` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `datum` int(10) unsigned NOT NULL,
  `nazev` text NOT NULL,
  `text` text NOT NULL,
  PRIMARY KEY (`id`)); 


data z první tabulky:
 `akce` (`id`, `datum`, `nazev`, `text`) VALUES (1, 1312106272, 'Toto je akce', 'toto je text akce'),


vypisuji takhle podle dotazu, nevím jestli tak je to správně. Ale nevím jak to zprostředkovat tak aby se vypisovali obě a řadili se podle datumu. =(

$precti = mysql_query("SELECT * FROM akce ORDER BY id DESC");

 while ($row = mysql_fetch_row($precti))
      {
	  echo $row[2]."<br />";
			  echo date("d.m.Y",$row[1])."<br />";
 			  echo $row[3]."<br /><br />";
		  }


druhá tabulka vypadá stejně jen se nazývá novinky. A já bych potřeboval vědět, jak bych měl zapsat správně dotaz v php, na který já neumím přijít =(.

Děkuji za veškerou pomoc, rady a tipy...
Tomáš K.
Profil *
Datum by mělo mít typ DATE.

SELECT  nazev, datum, text FROM (SELECT nazev, datum, text FROM akce UNION SELECT nazev, datum, text FROM novinky) ORDER BY datum
gumit
Profil
No a není to jedno jestli je to v DATE? A trochu sme se asi nepochopily...
Mám dvě tabulky. Novinky a Akce.
Na hlavní stránce bych chtěl aby se zobrazovali novinky a akce pod sebou jak jdou v datumu

názorně:
Aktualita
datum: 15.05.2011
aktualita.

Akce Z
datum: 14.05.2011
neco neco neco
Taps
Profil
gumit:
No a není to jedno jestli je to v DATE
Ne není. Pokud by sloupeček nebyl typu date tak by nebylo možné akce řadit.
zkoušel jsi sql dotaz od Tomáš K. ?
gumit
Profil
Ano zkoušel a vypisuje mi to chybu.

Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in .. on line 14

a na tom mam tohle while ($row = mysql_fetch_row($precti)) nevím jestli to mam řešít přes while...

A k tomu jak to změním na DATE musel bych přepsat také zápis do tabulky jestli se nemylím se že?

novinky tam se to zadavá pomocí time(); a v akcích to datum vybírám přes select.
TomášK
Profil
Zjisti, co je to za chybu (viz FAQ). Zřejmě je jen potřeba oescapovat sloupce, text vyhrazeno pro datovtý typ: 
SELECT  `nazev`, `datum`, `text` FROM (SELECT `nazev`, `datum`, `text` FROM akce UNION SELECT `nazev`, `datum`, `text` FROM novinky) ORDER BY `datum`

Výpis v php zůstane stejný. Co se týče sloupce pro datum, může to fungovat i bez něj, pokud je to číslo počet sekund/milisekund od nějaké doby (vypadá tak). Ale i tak je rozumné ukládat datum jako datum.
gumit
Profil
Použil jsem v DB ten DATE jak jsi mi radil, rozchodil jsem to ale, měl bych dotaz jak mám předat databázi datum z mých selectu aby to MySQL pochopila co je to za vybraný datum v mých selectech... Jak tohle mám udělat? Poraďte.

Edit: Problém se selecty vyřešen.. Teď udělat jen porovnání těch datumů a mám vše co sem chtěl =)
gumit
Profil
Po zapsaní vašeho dotazu mi to vypisuje tohle : Every derived table must have its own alias

Script vypadá takhle:

$precti = "SELECT  `nazev`, `datum`, `text` FROM (SELECT `nazev`, `datum`, `text` FROM cas UNION SELECT `nazev`, `datum`, `text` FROM akce) ORDER BY `datum`";
$test = mysql_query($precti) or die (mysql_error());

 while ($row = mysql_fetch_array($precti))
        {
			  echo $row["nazev"]."<br />";
			  echo $row["datum"]."<br />";
  			  echo $row["text"]."<br /><br />";
			  }


a řádek v tabulkách vypadá stejně... Jen je jiné datum

id datum nazev text
2 2011-07-31 akce 0 akce 0

Kde myslíte že bude chyba? Děkuji za každou odpověď...
Kajman_
Profil *
Bude to chybějícím aliasem - konkrétně za tou závorkou.

from () mujalias order by
gumit
Profil
no tak zkusil jsem co jsi mi doporučil a hlasí mi tohle:
Warning: mysql_fetch_array() expects parameter 1 to be resource, string given in index.php on line 15

a tam mam :
while ($row = mysql_fetch_array($precti))

při zápisu:
$precti = "SELECT Date_Format(datum, '%d.%m.%Y') as datum, nazev, text FROM (SELECT `nazev`, `datum`, `text` FROM akce UNION SELECT `nazev`, `datum`, `text` FROM cas) mujalias ORDER BY `datum`";


Tak já nevim jestli jsem to pochopil správně :-/
Kajman_
Profil *
while ($row = mysql_fetch_array($test))
gumit
Profil
Vyřešene všechno děkuji za Vaši veškerou pomoc =) a taky uživateli Kajman_ =)
NouF
Profil
Měl bych dotaz..mám 2 tabulky jako uživatel co to tu založil ale chci k tomu ješte něco..

Použití: souhrn komentářů na stránkách ( v profilu uživatele se zobrazí kde co komentoval)

Co potřebuju: Jak sem napsal je to souhrn komentářu součástí vypisu z db je taky seo odkaz.

např Komentář - 28.10.2011 8:48 titulek-toho-co-komentuju a tenhle vypis bude pod odkazem např.: /news/seo_link.html nebo /gallery/seo_link.html


Lze nejak určit puvod toho vypisu abych mohl podminkou měnit ten odkaz?
Kajman_
Profil *
select 'news'    puvod, ostatni, sloupce ...
union
select 'gallery' puvod, ostatni, sloupce ...
NouF
Profil
Díky, mrknu a napišu jestli se mi to podařilo..

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