Autor | Zpráva | ||
---|---|---|---|
pito Profil |
Zdravím,
Nevím si rady jak mám provést datum do českých názvu měsíců. Zkoušel jsem to udělat takto,ale je to nefunkční.Pořád tam je anglický název měsíce. <?PHP setlocale( LC_ALL, "Czech"); $timeStamp = mktime(0, 0, 0, 1, 1, $show_year); echo date( "M.Y" , $timeStamp ); ?> Jinak tady je odkud beru to datum: <?PHP echo "Rok ".date("Y",mktime(0, 0, 0, $show_month, 1, $show_year)); $back_month=date("n",mktime(0, 0, 0, $show_month, 1, $show_year-1)); $back_yaer=date("Y",mktime(0, 0, 0, $show_month, 1, $show_year-1)); $next_month=date("n",mktime(0, 0, 0, $show_month, 1, $show_year+1)); $next_yaer=date("Y",mktime(0, 0, 0, $show_month, 1, $show_year+1)); echo "<span> <a href=\"graf.php?m=$back_month&y=$back_yaer\"><</a> <a href=\"graf.php?m=$next_month&y=$next_yaer\">></a></span>"; ?> </h3> <table height="200" width="100%" cellpadding="0" cellspacing="0" align="right"> <tr valign="bottom" height="180"> <?PHP // Max Month $abfrage=mysql_query("select LEFT(day,7) as month, sum(user) as user_month from ".$db_prefix."Day GROUP BY month ORDER BY user_month DESC LIMIT 1"); $max_month=mysql_result($abfrage,0,1); // Monat abfragen $bar_nr=0; for($month=1; $month<=12; $month++) { $sel_timestamp = mktime(0, 0, 0, $month, 1, $show_year); $sel_month = date("Y.m.%",$sel_timestamp); $abfrage=mysql_query("select sum(user) from ".$db_prefix."Day where day LIKE '$sel_month'"); $User=mysql_result($abfrage,0,0); mysql_free_result($abfrage); $bar[$bar_nr]=$User; // Im Array Speichern $bar_title[$bar_nr] = date("M.Y",$sel_timestamp); $bar_month[$bar_nr]=$month; $bar_nr++; } // Diagramm for($i=0; $i<$bar_nr; $i++) { $value=$bar[$i]; if ($value == "") $value = 0; if ($max_month > 0) {$bar_hight=round((170/$max_month)*$value);} else $bar_hight = 0; if ($bar_hight == 0) $bar_hight = 1; echo "<td width=\"38\">"; echo "<a href=\"history.php?m=".$bar_month[$i]."&y=$show_year\">"; echo "<div class=\"bar\" style=\"height:".$bar_hight."px;\" title=\"".$bar_title[$i]." - $value Visitors\"></div>"; echo "</a></td>\n"; } ?> </tr><tr height="20"> <td colspan="3" width="25%" class="timeline"><?PHP echo date("M.Y",mktime(0, 0, 0, 1, 1, $show_year)); ?></td> <td colspan="3" width="25%" class="timeline"><?PHP echo date("M.Y",mktime(0, 0, 0, 4, 1, $show_year)); ?></td> <td colspan="3" width="25%" class="timeline"><?PHP echo date("M.Y",mktime(0, 0, 0, 7, 1, $show_year)); ?></td> <td colspan="3" width="25%" class="timeline"><?PHP echo date("M.Y",mktime(0, 0, 0, 10, 1, $show_year)); ?></td> </tr></table> |
||
Darker Profil |
setlocale(LC_ALL, "cs_CZ.UTF-8"); define ('DTFORMAT', '%h. %Y'); echo strftime (DTFORMAT, time()); Také jsem se s tím potrápil. Setlocale nemá vliv na funkci date, musíš použít strftime. |
||
pito Profil |
#3 · Zasláno: 8. 5. 2012, 16:33:25
Děkuji :)
|
||
pito Profil |
#4 · Zasláno: 8. 5. 2012, 17:41:57 · Upravil/a: pito
Potřeboval bych ještě něco,ale nevím jestli to mohu tady taky vložit.
Ten cely kod viz.[#1] tak by mi měl ukázat počet návštěv za daný měsíc (vytvoří se mi tak sloupcový graf) ,ale problém je,že mi to nefunguje. Nevím jestli to může být třeba zápisem datumu v databázi,protože na začátku jsem měl ukladání datumu přes varchar a vypadalo to takhle: 2012.03.18 ale potřeboval jsem to změnit na date tedy 2012-03-18 a od toho času myslím to přestalo fungovat. Ještě jsem zapomněl dodat, že mám i měsíční graf a tam to vše funguje i po změně datumu v databázi.Tak nevím. |
||
Darker Profil |
#5 · Zasláno: 8. 5. 2012, 17:44:06
No tak jsi to asi změnil špatně... Podívej se do tabulky a zjisti, co tam teď je. Ani jsi neřekl jak se nefunkčnost projevuje.
|
||
pito Profil |
#6 · Zasláno: 8. 5. 2012, 17:46:48
Je to nastavené na date jak říkám.
No projevuje se to tak že se mi nevypisuje žádná hodnota (počet návštěv) |
||
Darker Profil |
#7 · Zasláno: 8. 5. 2012, 17:50:54
A v tabulce jsou jaká data? Pokud problém způsobil převod ze stringu na date asi bude problém v převodu...
|
||
pito Profil |
#8 · Zasláno: 8. 5. 2012, 18:07:16
id day user view 2441 2012-04-21 5 1 2440 2012-04-20 1 0 2439 2012-04-19 2 0 Jenže to nemůžu zase vrátit typ varchar |
||
Tori Profil |
pito:
Na ř.9 máte překlepy: $back_yaer
Ř.16 teď bude mysql_query("select YEAR(`day`) as y, MONTH(`day`) as m, SUM(user) as user_month from ".$db_prefix."Day GROUP BY y, m ORDER BY user_month DESC LIMIT 1"); $max_month=mysql_result($abfrage, 0, 2); Od řádku 20 do 46 bych to přepsala tak, aby stačil jen jeden SQL dotaz. $month_names = array(1=>'Led', 'Úno', 'Bře', 'Dub', 'Kvě', 'Čer', 'Čec', 'Srp', 'Zář', 'Říj', 'Lis', 'Pro'); $result = mysql_query("select month(`day`) 'month', sum(user) 'num_users' from ".$db_prefix."Day where `day` BETWEEN '$show_year-01-01' AND '$show_year-12-31' GROUP BY `month`"); $bar = array(); $last_month = 1; // poslední/nejnovější měsíc, ke kterému dotaz vrátí počet návštěvníků // (pokud bude za měsíc nula návštěvníků, tak se ten měsíc ve výsledku vůbec neobjeví) while ($row = mysql_fetch_assoc($result)) { $bar[$row['month']] = array( 'num_users' => $row['num_users'], 'title' => $month_names[$row['month']], ); } $last_month = !empty($row) ? $row['month'] : $last_month; // Diagramm for($i=1; $i <= $last_month; $i++) { $value = !isset($bar[$i]['num_users']) ? 0 : $bar[$i]['num_users']; if ($max_month > 0) {$bar_hight=round((170/$max_month)*$value);} else $bar_hight = 0; if ($bar_hight == 0) $bar_hight = 1; echo "<td width=\"38\">"; echo "<a href=\"history.php?m=".$i."&y=$show_year\">"; echo "<div class=\"bar\" style=\"height:".$bar_hight."px;\" title=\"".$bar[$i]['title']." - $value Visitors\"></div>"; echo "</a></td>\n"; } |
||
pito Profil |
zkoušel jsem to jak jste napsala,ale spočitá mi to jen za leden další měsíce jsou prázdne políčka
Omlouvám se už je to opraveno :) Děkuji moc za pomoc Ještě bych se potřeboval dostat k tomu druhému přispěvku [#2] Darker Funguje mi to,ale u návštěvnosti za měsíc mi to blbne. měsíc návštěvnost <td colspan="5" width="10%" class="timeline"><?PHP echo date("j.M",mktime(0, 0, 0, $show_month, 1, $show_yaer)); ?></td> <td colspan="5" width="10%" class="timeline"><?PHP echo date("j.M",mktime(0, 0, 0, $show_month, 6, $show_yaer)); ?></td> <td colspan="5" width="10%" class="timeline"><?PHP echo date("j.M",mktime(0, 0, 0, $show_month, 11, $show_yaer)); ?></td> udělal jsem to stejným postupem jak tady [#2] <td colspan="5" width="10%" class="timeline"><?PHP $timeStamp = mktime(0, 0, 0, $show_month, 1, $show_yaer); setlocale(LC_ALL, "cs_CZ.UTF-8"); define ('DTFORMAT', '%j %b'); echo strftime (DTFORMAT, $timeStamp); ?></td> bude to fungovat jenže když nastavím ten formát datumu %j %b tak se mi to změní i u tabulky kde mám ty návštěvy za rok. |
||
Časová prodleva: 4 dny
|
|||
pito Profil |
#11 · Zasláno: 12. 5. 2012, 19:58:22
hm
|
||
Medvídek Profil |
pito:
Tak si prostuduj, co dělá define ('DTFORMAT', '%j %b');
http://php.net/manual/en/function.define.php Konstanta totiž nejde přepsat viz: <?php DEFINE("NAME","Petra"); echo NAME."<br />"; DEFINE("NAME","Lukáš"); echo NAME."<br />"; DEFINE("NAME","Jirka"); echo NAME."<br />"; ?> Petra Petra Petra |
||
pito Profil |
#13 · Zasláno: 12. 5. 2012, 22:41:49
Tak jsem se díval. Jinak by to asi nešlo vyřešit něž přes to define?
|
||
Medvídek Profil |
pito:
Tak pokud si se díval, buďto použij jiný název v DEFINE než již registrovaný DTFORMAT, nebo to napiš přímo do té fce: echo strftime ("%j %b", $timeStamp); |
||
Časová prodleva: 12 let
|
0