Autor | Zpráva | ||
---|---|---|---|
tomak Profil * |
#1 · Zasláno: 20. 5. 2012, 18:54:02 · Upravil/a: tomak
Zdravím,
lze provést data jednodušeji než takhle? Děkuji.. <?php $datumcas = "2012-05-20 18:05:17"; $datumcas = strtotime($datumcas); $datumcas = StrFTime("%d.%m.%Y %H:%M:%S", $datumcas); echo $datumcas; ?> oprava* "lze převést datum" :) |
||
ShiraNai7 Profil |
<?php $time = new DateTime('2012-05-20 18:05:17'); echo $time->format('d.m.Y H:i:s'); edit: opravil jsem formát... symboly pro minuty a sekundy tam byly jiné.. |
||
tomak Profil * |
#3 · Zasláno: 20. 5. 2012, 22:12:14
Díky moc:) a ještě jedna věc. Jde tohle napsat jednodušeji?:) Díky
$vysledek_kategorie = MySQL_Query("SELECT * FROM sekce WHERE id = ".$clanek_sekce.""); while ($zaznam = MySQL_Fetch_Array($vysledek_kategorie)){ $menu_nazev=$zaznam["nazev"]; $menu_odkaz=$zaznam["url"]; } |
||
Darker Profil |
#4 · Zasláno: 20. 5. 2012, 22:33:47
$vysledek_kategorie = MySQL_Query("SELECT nazev, url FROM sekce WHERE id = ".$clanek_sekce.""); while ($zaznam = MySQL_Fetch_Array($vysledek_kategorie, MYSQL_ASSOC)){ $menu_nazev=$zaznam["nazev"]; $menu_odkaz=$zaznam["url"]; } |
||
Tori Profil |
tomak:
Proč používat cyklus, když dotaz vrací (předpokládám) jeden řádek dat? A přepisujete si hodnoty proměnných v cyklu. Dá se to napsat i takhle: $vysledek_kategorie = mysql_query("SELECT nazev, url FROM sekce WHERE id = ".$clanek_sekce.""); if ($vysledek_kategorie) { $zaznam = mysql_fetch_assoc($vysledek_kategorie); $menu_nazev=$zaznam["nazev"]; $menu_odkaz=$zaznam["url"]; } $vysledek_kategorie = mysql_query("SELECT nazev, url FROM sekce WHERE id = ".$clanek_sekce.""); if ($vysledek_kategorie) { list($menu_nazev, $menu_odkaz) = mysql_fetch_assoc($vysledek_kategorie); } |
||
Jan Tvrdík Profil |
Tori:
Spíš takto: $vysledek_kategorie = mysql_query("SELECT nazev, url FROM sekce WHERE id = " . (int) $clanek_sekce); if ($vysledek_kategorie && $radek = mysql_fetch_row($vysledek_kategorie)) { list($menu_nazev, $menu_odkaz) = $radek; } |
||
tomak Profil * |
#7 · Zasláno: 21. 5. 2012, 15:36:10
Ano, načítám jen jeden řádek a to třeba autora z jine tabulky,...
momentálně to mám takto a chci to co nejvíc zjednodušit a zefektivnit:) $limit=$page*5; $vysledek = MySQL_Query("SELECT * FROM clanky ORDER BY id DESC limit $limit, 5"); while ($zaznam = MySQL_Fetch_Array($vysledek)){ $clanek_id=$zaznam["id"]; $clanek_sekce=$zaznam["sekce"]; $clanek_autor=$zaznam["autor"]; $clanek_url=$zaznam["url"]; $clanek_nadpis=$zaznam["nadpis"]; $clanek_klicova_slova=$zaznam["klicova_slova"]; $clanek_popis=$zaznam["popis"]; $clanek_strucny_popis=$zaznam["strucny_popis"]; $clanek_clanek=$zaznam["clanek"]; $clanek_hodnoceni=$zaznam["hodnoceni"]; $clanek_povoleno=$zaznam["povoleno"]; $clanek_zverejneno=$zaznam["zverejneno"]; $clanek_zobrazeno=$zaznam["zobrazeno"]; // kontrola jestli je clanek povoleny if($clanek_povoleno == 1){ // nacteni jmena autora $vysledek_autori = MySQL_Query("SELECT * FROM autori WHERE id = ".$clanek_autor.""); while ($zaznam = MySQL_Fetch_Array($vysledek_autori)){ $autor_jmeno=$zaznam["jmeno"]; $autor_prijmeni=$zaznam["prijmeni"]; } // nacteni jmena kategorie $vysledek_kategorie = MySQL_Query("SELECT * FROM sekce WHERE id = ".$clanek_sekce.""); while ($zaznam = MySQL_Fetch_Array($vysledek_kategorie)){ $menu_nazev=$zaznam["nazev"]; $menu_odkaz=$zaznam["url"]; } // pocet komentaru $komentare_pocet = mysql_result(mysql_query("SELECT COUNT(*) FROM komentare WHERE id_clanku = ".$clanek_id.""), 0); $datum = prevod_data($clanek_zverejneno); echo " <article id=\"kratky\">\n"; echo " <header>\n"; echo " <h2><a href=\"".$clanek_url."\">".$clanek_nadpis."</a></h2>\n"; echo " <p class=\"hlavickaclanku\">Publikoval ".$autor_jmeno." ".$autor_prijmeni.", dne ".$datum.", v kategorii <a href=\"".$menu_odkaz."\">".$menu_nazev."</a>.</p>\n"; echo " </header>\n"; echo " <p>".$clanek_strucny_popis."</p>\n"; echo " <p class=\"patickaclanku\">Kategorie: ".$menu_nazev.", komentářů: ".$komentare_pocet.", hodnocení: ".$clanek_hodnoceni.".</p>\n"; echo " </article>\n"; echo "\n"; } } Určitě to zjednoduším podle příkladů, které jste mi napsali:) |
||
Darker Profil |
#8 · Zasláno: 21. 5. 2012, 16:19:07
Třeba celý ten blok s přiřazováním prvků pole jednotlivým proměnným můžeš přeskočit a používat rovnou to pole.
|
||
pcmanik Profil |
#9 · Zasláno: 21. 5. 2012, 17:46:41
tomak:
Skus pouzivat konstanty, v neskorsich casoch az budes chcet zmenit povedzme pocet clankov, urobis to z jedneho miesta a nebudes sa muset prehrabavat kodom. |
||
Majkl578 Profil |
#10 · Zasláno: 21. 5. 2012, 17:54:33
tomak:
> načítám jen jeden řádek a to třeba autora z jine tabulky,... > > momentálně to mám takto a chci to co nejvíc zjednodušit a zefektivnit:) Začni tím, že jméno autora a kategorie načteš přes JOIN v prvním dotazu. Ušetříš ty následující dva. Všechny přiřazení do proměnných (ř. 4 až 16) můžeš taky vyhodit, je to k ničemu, jen je to tím akorát nepřehlednější. |
||
tomak Profil * |
#11 · Zasláno: 21. 5. 2012, 18:34:03
Zkoušel jsem v prví řadě odstranit řádky 4-16 .
Když nahradím $clanek_nadpis tímto $zaznam["nadpis"] tak to nefunguje. Kde dělám chybu? Díky za odpověď
|
||
Darker Profil |
#12 · Zasláno: 21. 5. 2012, 18:45:15
tomak:
„nefunguje“ Co to znamená? |
||
tomak Profil * |
#13 · Zasláno: 21. 5. 2012, 18:47:23 · Upravil/a: tomak
nic to nezobrazí když to zaměním tak jak jsem psal
$limit=$page*5; $vysledek = MySQL_Query("SELECT * FROM clanky ORDER BY id DESC limit $limit, 5"); while ($zaznam = MySQL_Fetch_Array($vysledek)){ $clanek_id=$zaznam["id"]; $clanek_sekce=$zaznam["sekce"]; $clanek_autor=$zaznam["autor"]; $clanek_url=$zaznam["url"]; $clanek_nadpis=$zaznam["nadpis"]; $clanek_klicova_slova=$zaznam["klicova_slova"]; $clanek_popis=$zaznam["popis"]; $clanek_strucny_popis=$zaznam["strucny_popis"]; $clanek_clanek=$zaznam["clanek"]; $clanek_hodnoceni=$zaznam["hodnoceni"]; $clanek_povoleno=$zaznam["povoleno"]; $clanek_zverejneno=$zaznam["zverejneno"]; $clanek_zobrazeno=$zaznam["zobrazeno"]; // kontrola jestli je clanek povoleny if($zaznam["povoleno"] == 1){ // nacteni jmena autora $vysledek_autori = MySQL_Query("SELECT * FROM autori WHERE id = ".$clanek_autor.""); while ($zaznam = MySQL_Fetch_Array($vysledek_autori)){ $autor_jmeno=$zaznam["jmeno"]; $autor_prijmeni=$zaznam["prijmeni"]; } // nacteni jmena kategorie $vysledek_kategorie = MySQL_Query("SELECT * FROM sekce WHERE id = ".$clanek_sekce.""); while ($zaznam = MySQL_Fetch_Array($vysledek_kategorie)){ $menu_nazev=$zaznam["nazev"]; $menu_odkaz=$zaznam["url"]; } // pocet komentaru $komentare_pocet = mysql_result(mysql_query("SELECT COUNT(*) FROM komentare WHERE id_clanku = ".$clanek_id.""), 0); $datum = prevod_data($clanek_zverejneno); echo " <article id=\"kratky\">\n"; echo " <header>\n"; echo " <h2><a href=\"".$clanek_url."\">".$zaznam["nadpis"]."</a></h2>\n"; echo " <p class=\"hlavickaclanku\">Publikoval ".$autor_jmeno." ".$autor_prijmeni.", dne ".$datum.", v kategorii <a href=\"".$menu_odkaz."\">".$menu_nazev."</a>.</p>\n"; echo " </header>\n"; echo " <p>".$clanek_strucny_popis."</p>\n"; echo " <p class=\"patickaclanku\">Kategorie: ".$menu_nazev.", komentářů: ".$komentare_pocet.", hodnocení: ".$clanek_hodnoceni.".</p>\n"; echo " </article>\n"; echo "\n"; } } ta podminka jestli je clanek povoleny funguje dobre, jinak dal uz nee |
||
Darker Profil |
#14 · Zasláno: 21. 5. 2012, 18:48:55 · Upravil/a: Darker
To mi nedává smysl. Dumpni si tu proměnnou.
mysql_query("...") or die(mysql_error()); error_reporting(E_ALL); |
||
tomak Profil * |
#15 · Zasláno: 21. 5. 2012, 18:51:39
Aha, tak už chápu, kde byla chyba...
Několik while se stejnou proměnnou $zaznam :) |
||
Jan Tvrdík Profil |
První, co mě napadlo je:
$limit = $page * 5; $clanky = array(); $autori = array(); $sekce = array(); $pocty_komentaru = array(); $vysledek = MySQL_Query(" SELECT * FROM clanky WHERE povoleno = 1 ORDER BY id DESC LIMIT $limit, 5 "); while ($clanek = MySQL_Fetch_Assoc($vysledek)){ $clanky[$clanek["id"]] = $clanek; $autori[$clanek["autor"]] = NULL; $sekce[$clanek["sekce"]] = NULL; } $vysledek = MySQL_Query(" SELECT id, jmeno, prijmeni FROM autori WHERE id IN (" . implode(",", array_keys($autori)) . ") "); while ($autor = MySQL_Fetch_Assoc($vysledek)) { $autori[$autor["id"]] = $autor; } $vysledek = MySQL_Query(" SELECT id, nazev, url FROM sekce WHERE id IN (" . implode(",", array_keys($sekce)) . ") "); while ($zaznam = MySQL_Fetch_Assoc($vysledek)) { $sekce[$zaznam["id"]] = $zaznam; } $vysledek = MySQL_Query(" SELECT id_clanku, COUNT(*) AS pocet FROM komentare WHERE id_clanku IN (" . implode(",", array_keys($clanky)) . ") GROUP BY id_clanku "); while ($zaznam = MySQL_Fetch_Assoc($vysledek)) { $pocty_komentaru[$zaznam["id_clanku"]] = $zaznam["pocet"]; } foreach ($clanky as $clanek) { $datum = prevod_data($clanek["zverejneno"]); $autor = $autori[$clanek["autor"]]; $menu = $sekce[$clanek["sekce"]]; $pocet_komentaru = $pocty_komentaru[$clanek["id"]]; echo " <article id=\"kratky\">\n"; echo " <header>\n"; echo " <h2><a href=\"" . $clanek["url"] . "\">" . $clanek["nadpis"] . "</a></h2>\n"; echo " <p class=\"hlavickaclanku\">Publikoval " . $autor["jmeno"] . " " . $autor["prijmeni"] . ", dne " . $datum . ", v kategorii <a href=\"" . $menu["odkaz"] . "\">" . $menu["nazev"] . "</a> . </p>\n"; echo " </header>\n"; echo " <p>" . $clanek["strucny_popis"] . "</p>\n"; echo " <p class=\"patickaclanku\">Kategorie: " . $menu["nazev"] . ", komentářů: " . $pocet_komentaru . ", hodnocení: " . $clanek["hodnoceni"] . ".</p>\n"; echo " </article>\n"; echo "\n"; } Hlavním rozdílem je, že pokládá konstantní počet dotazů. Zapomněl jsem na komentáře :) Mimochodem místo <article id="kratky"> bys měl používat class="kratky" , protože těch článků může být očividně víc.
|
||
Časová prodleva: 12 let
|
0