Autor Zpráva
Sidbin
Profil
Mám na stránce tento cyklus a puvodně vypisoval datum ve formátu z DB 2017-08-01 00:14:38. Chtěl jsem ho upravit na název měsíce a rok, jenže výsledek teď to vyhodí leden 1970:
January 1970: 5.58 kWh. Správně by mělo být srpen 2017. Kde jsem udělal chybu? Nevypíše to ani ten měsíc česky a to mám nahoře i SetLocale(LC_ALL, "Czech");
Díky.
<?php
while ($pulnoc = mysql_fetch_assoc($result)) {
  echo strftime('%B  %Y',  strftime($pulnoc['index'])) .": <b> ". (Round(($solar - $pulnoc[$jmenosenzoru]),2)) . "</b> kWh<br>\n"; 
  $solar = $pulnoc[$jmenosenzoru];
  $datum = $pulnoc['index'];
TomášK
Profil
Z dokumentace strftime: The optional timestamp parameter is an integer Unix timestamp.

Potřebuješ tedy datum z databáze převést na timestamp, viz dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_unix-timestamp.
Sidbin
Profil
Díky pomohlo to, ale narazil jsem na jiný problém po úpravě, předtím byl výpis OK za každý měsíc to vypsalo hodnotu spotřeby v pořádku, ale teď je první hodnota záporná a špatně vypočtená (cca 20*větší), zbytek sedí.
while ($pulnoc = mysql_fetch_assoc($result)) {
  echo iconv("WINDOWS-1250", "UTF-8", strftime('%B  %Y',  strtotime($pulnoc['index']))) .": <b> ". (Round(($solar - $pulnoc[$jmenosenzoru]),3)) . "</b> kWh<br>\n";    
  $solar = $pulnoc[$jmenosenzoru];
  $datum = $pulnoc['index'];

Ještě dodatek, tato stará verze to vypočítá dobře:
while ($pulnoc = mysql_fetch_assoc($result)) {
  echo $pulnoc['index'] ." , ". (Round(($solar - $pulnoc['spotreba_solar']),3)) . "<br>\n"; 
  $solar = $pulnoc['spotreba_solar'];
  $datum = $pulnoc['index'];
Keeehi
Profil
Sidbin:
Tady se ale nic nepočítá. Výpočet máš asi v SQL dotazu, ale ten jsi tu neukázal.
Sidbin
Profil
Jenže mysql dotaz je OK, pokud nahradím starou verzi za novou, tak to udělá chybu. Stejny mysql dotaz používám pro JSON pro graf a tam je výsledek cca 5kWh zde je -107kWh.
Tomášeek
Profil
Sidbin:
Co je v proměnné $jmenosenzoru? Pokud cokoliv jiného než string spotreba_solar, tak ty kódy nejsou ani v nejmenším ekvivalentní.

Navíc pracuješ s proměnnou $solar, kde se na 2. řádku bere, když je definována až o řádek níže?

Co vypíše print_r($pulnoc) hned za while, abychom byli v obraze ohledně dat (a jejich formátu) v jednotlivých proměnných?
Sidbin
Profil
Už jsem na to pak přišel, byla tam chyba u proměnné, která bere aktuální hodnotu, při přepisu jsem ji zapoměl změnit. Je definována o kousek výše, myslel jsem, že je chyba v této části, upravil jsem totiž soubor PLYN na SOLAR a zapoměl změnit jednu proměnnou. :-)
Jen mě ještě trochu zlobí formátování toho textu, když chci trochu zarovnat vypsaný text doleva , tak to neproleze a PHP hodí chybu.
dík.
$aktualni = mysql_fetch_assoc($result);
if (!$aktualni) {
    die('Error: ' . mysql_error());
}
$senzor = $aktualni[$jmenosenzoru];
$datum = $aktualni['index'];
?>
<p style="text-align: center;">
<?php
while ($pulnoc = mysql_fetch_assoc($result)) {
  echo iconv("WINDOWS-1250", "UTF-8", strftime('%B  %Y',  strtotime($pulnoc['index']))) .": <b> ". (Round(($senzor - $pulnoc[$jmenosenzoru]),3)) . "</b> kWh<br>\n";     
  $senzor = $pulnoc[$jmenosenzoru];
  $datum = $pulnoc['index']; 
  }
?>
</p>
Tomášeek
Profil
Sidbin:
tak to neproleze a PHP hodí chybu.
Jakou chybu? Doporučuji ji vložit nejprve do vyhledávače, pokud jejímu znění nerozumíš.

Ač její znění neznám, věštit neumím, mohu tě ujistit, že souvisí s něčím jiným, než HTML kódem mimo PHP blok.

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