| Autor | Zpráva | ||
|---|---|---|---|
| pito Profil |
#1 · Zasláno: 8. 5. 2012, 16:02:09 · Upravil/a: pito
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 |
#2 · Zasláno: 8. 5. 2012, 16:23:36 · Upravil/a: Darker
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 |
#9 · Zasláno: 8. 5. 2012, 19:49:37 · Upravil/a: Tori
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 |
#10 · Zasláno: 8. 5. 2012, 21:20:28 · Upravil/a: pito
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 |
#12 · Zasláno: 12. 5. 2012, 20:03:51 · Upravil/a: Medvídek
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 |
#14 · Zasláno: 12. 5. 2012, 23:24:21 · Upravil/a: Medvídek
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: 1 rok
|
|||