webzdarma.cz
>info>registrace>katalog>podminky>podpora>forum>reklama>kontakt
 Nové téma | Témata | Strukturovaně | Přihlášení 
 Diskuze | Následující téma | Předcházející téma 
  >forum

  Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  14. 12. 2011 17:46

vypisuji data takto:

<?
$spojeni=mysql_connect("localhost","jmeno","heslo");
$co="SELECT * FROM tab";
$navrat=mysql_db_query("db", $co, $spojeni);
for ($i=1;$i<mysql_num_fields($navrat); $i++);
while (list( $datum, $id ,$T1,) = mysql_fetch_row($navrat)){
echo(" $datum), $id, $T1 <br>");
}
?>

ale to mi vypíše celý sloupec.
Dá se nějak vypsat třeba jen posledníc 20 záznamů?
Nebo třeba od řádku x do řádku x+20.
díky

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Kit (ekobrikety.vyrobce.cz)
Datum:  14. 12. 2011 17:54

Na to se používá LIMIT. Bude nutné podle data udělat SORT DESC, vezmeš prvních 20 a znovu seřadíš, tentokrát vzestupně. Asi bude vhodné vytvořit k tabulce index podle zmíněného časového razítka.

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  14. 12. 2011 18:38

napadlo mě toto:
vypisovat data sestupně pomocí fce DESC
a fce LIMIT zobrazit 20 záznamů.

ale toto je asi špatně

$co="SELECT * FROM sds ORDER BY $T1 DESC LIMIT 20,";

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Kit (ekobrikety.vyrobce.cz)
Datum:  14. 12. 2011 19:27

Chybička se vloudila. Předpokládám, že timestamp je označen jako sloupec T1:

$co="SELECT * FROM sds ORDER BY T1 DESC LIMIT 20;";

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  14. 12. 2011 19:58

nene $T1 je teploměr1.

$datum je "datum" :-)

$id je číslo řádku

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Kit (ekobrikety.vyrobce.cz)
Datum:  14. 12. 2011 20:06

Tak proč jsi to chtěl řadit podle teploty?

$co="SELECT * FROM sds ORDER BY datum DESC LIMIT 20;";

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  14. 12. 2011 20:08

už jsem si to zkusil. Seřadilo mi to podle teploty. :-)

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  14. 12. 2011 20:11

Kite, když už jsi na příjmu
poradíš mi s tímto?
Jak to do toho skriptu výpisu z db dosadit?


$fd=fopen('data.txt','a');
$data=date('r');
fwrite($fd,"$T1");
fclose($fd);


díky

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Kit (ekobrikety.vyrobce.cz)
Datum:  14. 12. 2011 20:19

Nerozumím dotazu. Do souboru data.txt zapisuješ (přidáváš na konec) hodnotu z proměnné $T1. Co chceš odkud kam zapsat? A k čemu máš proměnnou $data, když ji nikde nepoužíváš?

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  14. 12. 2011 20:26

do toho původního skriptu

<?
$spojeni=mysql_connect("localhost","jmeno","heslo");
$co="SELECT * FROM tab";
$navrat=mysql_db_query("db", $co, $spojeni);
for ($i=1;$i<mysql_num_fields($navrat); $i++);
while (list( $datum, $id ,$T1,) = mysql_fetch_row($navrat)){
echo(" $datum), $id, $T1 <br>");
}
?>

nechci tam mít to

echo(" $datum), $id, $T1 <br>");


ale napasovat tam to zapisování do souboru data.txt

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Kit (ekobrikety.vyrobce.cz)
Datum:  14. 12. 2011 20:29

Myslíš tohle?

fwrite($fd,"$datum), $id, $T1 <br>");

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  14. 12. 2011 20:32

<?
$spojeni=mysql_connect("localhost","jmeno","heslo");
$co="SELECT * FROM tab";
$navrat=mysql_db_query("db", $co, $spojeni);
for ($i=1;$i<mysql_num_fields($navrat); $i++);
while (list( $datum, $id ,$T1,) = mysql_fetch_row($navrat)){
//echo(" $datum), $id, $T1 <br>");

$fd=fopen('data.txt','a');
$data=date('r');
fwrite($fd,"$datum), $id, $T1 <br>");
fclose($fd);
}
?>

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Kit (ekobrikety.vyrobce.cz)
Datum:  14. 12. 2011 20:39

<?
$spojeni=mysql_connect("localhost","jmeno","heslo");
$co="SELECT datum,id,T1 FROM tab";
$navrat=mysql_db_query("db", $co, $spojeni);
$fd=fopen('data.txt','a');
for ($i=1;$i<mysql_num_fields($navrat); $i++);
while (list( $datum, $id ,$T1) = mysql_fetch_row($navrat)){
fwrite($fd,"$datum), $id, $T1 <br>");
}
fclose($fd);
?>

Jenom mi stále není jasné, k čemu ti to bude. Postrádá to logiku.

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  14. 12. 2011 21:00

http://www.highcharts.com/demo/line-labels

u grafu máš view options.

Místo hodnot které jsou psané přímo, dávám hodnoty z databáze. Ale ten skript který vyčítá z databáze tam nejde dát přímo.

funguje mi toto

[<?php echo file_get_contents('teplota.php'); ?>]


v souboru teplota.php mám ten předchozí skript.

Ale chci mít v jednom souboru skript který bude posílat do více souborů.

uff

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Kit (ekobrikety.vyrobce.cz)
Datum:  14. 12. 2011 21:14

Ten skript, který to vyčítá z databáze, tam zcela jistě jde dát přímo. Napiš strukturu, kterou highcharts očekává a dáme to dohromady. Možná tam jen chybí správná hlavička MIME.

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  14. 12. 2011 21:22

očekává toto:

series: [{
name: 'Tokyo',
data: [7.0, 6.9, 9.5, 14.5, 18.4, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
}, {
name: 'London',
data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8]
}]



a já mám toto:


series: [{
name: 'Teplota1',
data: [<?php echo file_get_contents('teplota1.php'); ?>]
}, {
name: 'Teplota2',
data: [<?php echo file_get_contents('teplota2.php'); ?>]
}]


nevím proč, ale tohle mi tam nejde


<?
$spojeni=mysql_connect("localhost","jmeno","heslo");
$co="SELECT * FROM tab";
$navrat=mysql_db_query("db", $co, $spojeni);
for ($i=1;$i<mysql_num_fields($navrat); $i++);
while (list( $T1,) = mysql_fetch_row($navrat)){
echo(" $T1 <br>");
}
?>

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Kit (ekobrikety.vyrobce.cz)
Datum:  14. 12. 2011 21:26

Protože mu cpeš skript místo dat. Funkce file_get_contents() zkopíruje skript, ale neprovede ho.

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  14. 12. 2011 21:30

Asi rozumím.
Ale kam s tím.

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  14. 12. 2011 21:32

Vytvořit v javaskriptu nějakou proměnnou a do té vložit skript a pak tu proměnnou vyčíst jako data?

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Kit (ekobrikety.vyrobce.cz)
Datum:  14. 12. 2011 21:35

Nejprimitivnější metodou by mohlo být prosté nahrazení funkce file_get_contents() funkcí include(). Je však zbytečné databázi otvírat 2x (velká režie), takže další úpravy budou víc než vhodné.

Dá se to s přehledem nacpat do jednoho skriptu.

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  14. 12. 2011 21:41

jak pro koho :-)

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Kit (ekobrikety.vyrobce.cz)
Datum:  14. 12. 2011 21:53

Určitě to jde napsat lépe, střílím od pasu:

<?
$spojeni=mysql_connect("localhost","jmeno","heslo");
$co="SELECT T1,T2 FROM tab ORDER BY datum DESC LIMIT 20;";
$navrat=mysql_db_query("db", $co, $spojeni);
while (list( $T1,$T2) = mysql_fetch_row($navrat)){
$teploty1[]=$T1;
$teploty2[]=$T2;
}
$T1=implode(',',array_reverse($teploty1));
$T2=implode(',',array_reverse($teploty2));

echo <<<EOT
series: [{
name: 'Teplota1',
data: [$T1]
}, {
name: 'Teplota2',
data: [$T2]
}]

EOT;
?>

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  14. 12. 2011 22:16

jojo to funguje.

děkuji.

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  14. 12. 2011 23:04

takto vypisuji z databáze datum:

<?
$spojeni=mysql_connect("localhost","jmeno","heslo");
$co="SELECT datum FROM data_1 ORDER BY datum DESC LIMIT 20;";
$navrat=mysql_db_query("energie", $co, $spojeni);
while (list( $datum) = mysql_fetch_row($navrat)){
$datum1[]=$datum;

}
$datum1=implode("','",array_reverse($datum1));
echo <<<EOT
xAxis: {
categories: ['$datum1'],
},
EOT;
?>


vypíše se mi v tomto formátu: 2011-12-14 19:42:06


jde udělat aby se vypsal třeba jen rok, měsíc, nebo hodina a minuta?
díky

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Kit (ekobrikety.vyrobce.cz)
Datum:  14. 12. 2011 23:39

Jistě. Mrkni se na
http://www.tutorialspoint.com/mysql/mysql-date-time-functions.htm#function_date-format

Rozhodně je fajnovější, když to uděláš přímo v databázi, než to nechat šmudlit pomalými skripty v PHP.

BTW: Proč to nevypisuješ takto?
$co="SELECT datum,T1,T2 FROM tab ORDER BY datum DESC LIMIT 20;";

Přece máš tu trojici v databázi pohromadě, tak bys s tím měl i zacházet. Místo sloupce datum samozřejmě použij požadovanou funkci, ale ORDER BY neměň (pokud nechceš řadit podle něčeho jiného). Jeden SELECT by ti měl stačit na všechna požadovaná data z DB.

A chybí ti tam definice prázdného pole na začátku skriptu, tedy
$datum1=array();
Nějak jsem to přehlédl. Divím se, že to funguje. To je hrozné, co PHP snese.

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  15. 12. 2011 16:26

mám někde chybu ve "vyčítání z XML souboru do databáze?
Do databáze to sice zapisuje, ale nulu.

<?php

$server = "localhost"; // adresa MySQL serveru
$database = "xxxx"; // prihlasovaci jmeno do databaze
$heslo = "xxxx"; // prihlasovaci heslo do databaze
$dbname = "xxxx"; //nazev databaze

$link = mysql_connect("$server", "$database", "$heslo") or die ("Nepovedlo se spojit s databazi.");

$db = mysql_select_db("$dbname", $link) or die("Nepovedlo se otevrit databazi.");

$raw_udaje["penize"] = htmlspecialchars($_GET['penize'], ENT_QUOTES, "UTF-8");


$obsah=file_get_contents("http://109.80.22.31/xml.xml");
$xml = new SimpleXMLElement($obsah);
$penize = $xml->xpath('/sds/snmp/s0_2/money');


mysql_query("INSERT INTO sds (penize)

values

('".$raw_udaje["penize"]."');") or die('Mas tam chybu : '.mysql_error());

?>


Vidím to na chybu v tom čtení z XML, ale nevím kde.
Někde chybí toto asi tohle : $penize[0]
Prosím o radu, díky.

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  15. 12. 2011 17:36

našel jsem ještě tohle: wb import from XML

ale nenašel jsem k tomu nějaký srozumitelný návod, jak na to.

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  16. 12. 2011 16:20

tak jsem spáchal tohle:
Sice to odešle, ale v databázi jsou opšt samé nuly.


<?

// vycitani dat ze souboru XML


$xml = simplexml_load_file('http:// IP /xml.xml');


$plyn_imp = $xml->snmp->s0_0->imdiff;
$plyn_celkem_dole = $xml->snmp->s0_0->text;
$plyn_cena = $xml->snmp->s0_0->money;
$plyn_aktual = $xml->snmp->s0_0->act;

$elektrika_imp = $xml->snmp->s0_2->imdiff;
$elektrika_celkem = $xml->snmp->s0_2->text;
$elektrika_cena = $xml->snmp->s0_2->money;
$elektrika_aktual = $xml->snmp->s0_2->act;

$voda_imp = $xml->snmp->s0_1->imdiff;
$voda_celkem = $xml->snmp->s0_1->text;
$voda_cena = $xml->snmp->s0_1->money;
$voda_aktual = $xml->snmp->s0_1->act;





// pripojeni k databazi



$server = "localhost"; // adresa MySQL serveru
$database = "xxxx"; // prihlasovaci jmeno do db
$heslo = "xxxx"; // heslo
$dbname = "xxxx"; //nazev db


$link = mysql_connect("$server", "$database", "$heslo") or die ("Nepovedlo se spojit s databází.");


$db = mysql_select_db("$dbname", $link) or die("Nepovedlo se otevřít databázi.");



$raw_udaje["plyn_imp"] = htmlspecialchars($_GET['plyn_imp'], ENT_QUOTES, "UTF-8");


$raw_udaje["plyn_celkem"] = htmlspecialchars($_GET['plyn_celkem'], ENT_QUOTES, "UTF-8");


$raw_udaje["plyn_cena"] = htmlspecialchars($_GET['plyn_cena'], ENT_QUOTES, "UTF-8");


$raw_udaje["plyn_aktual"] = htmlspecialchars($_GET['plyn_aktual'], ENT_QUOTES, "UTF-8");


$raw_udaje["elektrika_imp"] = htmlspecialchars($_GET['elektrika_imp'], ENT_QUOTES, "UTF-8");


$raw_udaje["elektrika_celkem"] = htmlspecialchars($_GET['elektrika_celkem'], ENT_QUOTES, "UTF-8");


$raw_udaje["elektrika_cena"] = htmlspecialchars($_GET['elektrika_cena'], ENT_QUOTES, "UTF-8");


$raw_udaje["elektrika_aktual"] = htmlspecialchars($_GET['elektrika_aktual'], ENT_QUOTES, "UTF-8");


$raw_udaje["voda_imp"] = htmlspecialchars($_GET['voda_imp'], ENT_QUOTES, "UTF-8");


$raw_udaje["voda_celkem"] = htmlspecialchars($_GET['voda_celkem'], ENT_QUOTES, "UTF-8");


$raw_udaje["voda_cena"] = htmlspecialchars($_GET['voda_cena'], ENT_QUOTES, "UTF-8");


$raw_udaje["voda_aktual"] = htmlspecialchars($_GET['voda_aktual'], ENT_QUOTES, "UTF-8");


mysql_query("INSERT INTO xxx
(plyn_imp, plyn_celkem, plyn_cena, plyn_aktual,
elektrika_imp, elektrika_celkem, elektrika_cena, elektrika_aktual,
voda_imp, voda_celkem, voda_cena, voda_aktual)



VALUES



('".$raw_udaje["plyn_imp"]."'
,'".$raw_udaje["plyn_celkem"]."'
,'".$raw_udaje["plyn_cena"]."'
,'".$raw_udaje["plyn_aktual"]."'

,'".$raw_udaje["elektrika_imp"]."'
,'".$raw_udaje["elektrika_celkem"]."'
,'".$raw_udaje["elektrika_cena"]."'
,'".$raw_udaje["elektrika_aktual"]."'

,'".$raw_udaje["voda_imp"]."'
,'".$raw_udaje["voda_celkem"]."'
,'".$raw_udaje["voda_cena"]."'
,'".$raw_udaje["voda_aktual"]."');") or die('Chyba: '.mysql_error());


?>

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Kit (ekobrikety.vyrobce.cz)
Datum:  16. 12. 2011 16:26

A proč tam nedáváš hodnoty proměnných $plyn_imp, $plyn_celkem_dole, ... ? Když už to doluješ z XML, tak bys to možná mohl i použít.

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  16. 12. 2011 16:37

jojo, zapomnel jsem

mysql_query("INSERT INTO sds

($plyn_imp , $plyn_celkem, $plyn_cena, $plyn_aktual,
$elektrika_imp, $elektrika_celkem, $elektrika_cena, $elektrika_aktual,
$voda_imp, $voda_celkem, $voda_cena, $voda_aktual)


ted to pise toto:

Chyba: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '385416142 , , 9301.60 , 0.0 , 44991, 1398.910 , 6019.56 , 0.800 , ' at line 3

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Kit (ekobrikety.vyrobce.cz)
Datum:  16. 12. 2011 16:49

V některé z těch proměnných máš prázdný řetězec. To ošetříš tak, že když je vytváříš

$plyn_celkem_dole = $xml->snmp->s0_0->text;

tak to nahradíš například takto:

$plyn_celkem_dole = $xml->snmp->s0_0->text*1;

Tím se to převede na číslo, i kdyby tam byl řetězec.

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  16. 12. 2011 17:04

nikde nic prázdného není

109.80.22.31/xml.xml

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Kit (ekobrikety.vyrobce.cz)
Datum:  16. 12. 2011 17:07

Ale je. Definuješ proměnnou
$plyn_celkem_dole= $xml->snmp->s0_0->text;

a používáš nedefinovanou proměnnou
$plyn_celkem

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  16. 12. 2011 17:41

$xml = simplexml_load_file('http:// IP /xml.xml');


$plyn_imp = $xml->snmp->s0_0->imdiff*1;
$plyn_celkem = $xml->snmp->s0_0->text*1;
$plyn_cena = $xml->snmp->s0_0->money*1;
$plyn_aktual = $xml->snmp->s0_0->act*1;


$elektrika_imp = $xml->snmp->s0_2->imdiff*1;
$elektrika_celkem = $xml->snmp->s0_2->text*1;
$elektrika_cena = $xml->snmp->s0_2->money*1;
$elektrika_aktual = $xml->snmp->s0_2->act*1;


$voda_imp = $xml->snmp->s0_1->imdiff*1;
$voda_celkem = $xml->snmp->s0_1->text*1;
$voda_cena = $xml->snmp->s0_1->money*1;
$voda_aktual = $xml->snmp->s0_1->act*1;





$server = "localhost"; // adresa MySQL serveru
$database = "xxxx"; // prihlasovaci jmeno do db
$heslo = "xxxx"; // heslo
$dbname = "xxxx"; //nazev db


$link = mysql_connect("$server", "$database", "$heslo") or die ("Nepovedlo se spojit s databází.");


$db = mysql_select_db("$dbname", $link) or die("Nepovedlo se otevřít databázi.");



$raw_udaje["plyn_imp"] = htmlspecialchars($_GET['plyn_imp'], ENT_QUOTES, "UTF-8");


$raw_udaje["plyn_celkem"] = htmlspecialchars($_GET['plyn_celkem'], ENT_QUOTES, "UTF-8");


$raw_udaje["plyn_cena"] = htmlspecialchars($_GET['plyn_cena'], ENT_QUOTES, "UTF-8");


$raw_udaje["plyn_aktual"] = htmlspecialchars($_GET['plyn_aktual'], ENT_QUOTES, "UTF-8");

//60


$raw_udaje["elektrika_imp"] = htmlspecialchars($_GET['elektrika_imp'], ENT_QUOTES, "UTF-8");


$raw_udaje["elektrika_celkem"] = htmlspecialchars($_GET['elektrika_celkem'], ENT_QUOTES, "UTF-8");


$raw_udaje["elektrika_cena"] = htmlspecialchars($_GET['elektrika_cena'], ENT_QUOTES, "UTF-8");


$raw_udaje["elektrika_aktual"] = htmlspecialchars($_GET['elektrika_aktual'], ENT_QUOTES, "UTF-8");





$raw_udaje["voda_imp"] = htmlspecialchars($_GET['voda_imp'], ENT_QUOTES, "UTF-8");


$raw_udaje["voda_celkem"] = htmlspecialchars($_GET['voda_celkem'], ENT_QUOTES, "UTF-8");


$raw_udaje["voda_cena"] = htmlspecialchars($_GET['voda_cena'], ENT_QUOTES, "UTF-8");


$raw_udaje["voda_aktual"] = htmlspecialchars($_GET['voda_aktual'], ENT_QUOTES, "UTF-8");


mysql_query("INSERT INTO sds

( $plyn_imp,$plyn_celkem,$plyn_cena,$plyn_aktual,
$elektrika_imp,$elektrika_celkem,$elektrika_cena,$elektrika_aktual,
$voda_imp,$voda_celkem,$voda_cena,$voda_aktual )



VALUES

('".$raw_udaje["plyn_imp"]."'
,'".$raw_udaje["plyn_celkem"]."'
,'".$raw_udaje["plyn_cena"]."'
,'".$raw_udaje["plyn_aktual"]."'


,'".$raw_udaje["elektrika_imp"]."'
,'".$raw_udaje["elektrika_celkem"]."'
,'".$raw_udaje["elektrika_cena"]."'
,'".$raw_udaje["elektrika_aktual"]."'

,'".$raw_udaje["voda_imp"]."'
,'".$raw_udaje["voda_celkem"]."'
,'".$raw_udaje["voda_cena"]."'
,'".$raw_udaje["voda_aktual"]."');") or die('Chyba: '.mysql_error());


?>

skript hodnoty zřejmě přečtě ale napošle do db a hlásí tuto chybu :

Chyba: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '0,753,9301,0, 52398,1399,6025,0, 0,0,0,0 ) VALUES ' at line 3

ale nikde ji nevidím

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  16. 12. 2011 17:58

odstranil jsem "dolary" to bylo asi špatně. Posílá to, ale opět jen samé nuly.



mysql_query("INSERT INTO sds

( plyn_imp,plyn_celkem,plyn_cena,plyn_aktual,
elektrika_imp,elektrika_celkem,elektrika_cena,elektrika_aktual,
voda_imp,voda_celkem,voda_cena,voda_aktual )

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  16. 12. 2011 18:01

Není možné že to je proto, že mám v db více sloupců do kterých tímto skriptem neposílám?
A posílám jiným?

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  16. 12. 2011 18:41

tak jiný skript, ten funguje.
Ale proč nefungoval ten predchozí?


$xml = simplexml_load_file('http:// IP/xml.xml');


$plyn_imp = $xml->snmp->s0_0->imdiff*1;
$plyn_celkem = $xml->snmp->s0_0->text*1;
$plyn_cena = $xml->snmp->s0_0->money*1;
$plyn_aktual = $xml->snmp->s0_0->act*1;


$elektrika_imp = $xml->snmp->s0_2->imdiff*1;
$elektrika_celkem = $xml->snmp->s0_2->text*1;
$elektrika_cena = $xml->snmp->s0_2->money*1;
$elektrika_aktual = $xml->snmp->s0_2->act*1;


$voda_imp = $xml->snmp->s0_1->imdiff*1;
$voda_celkem = $xml->snmp->s0_1->text*1;
$voda_cena = $xml->snmp->s0_1->money*1;
$voda_aktual = $xml->snmp->s0_1->act*1;
try {

$db = new PDO("mysql:host=localhost;dbname=dbname", "name", "passw");
$sql = $db->exec("INSERT INTO `tab`

(`plyn_imp`,`plyn_celkem`,`plyn_cena`,`plyn_aktual`,
`elektrika_imp`,`elektrika_celkem`,`elektrika_cena`,`elektrika_aktual`,
`voda_imp`,`voda_celkem`,`voda_cena`,`voda_aktual`)


VALUES

($plyn_imp,$plyn_celkem,$plyn_cena,$plyn_aktual,
$elektrika_imp,$elektrika_celkem,$elektrika_cena,$elektrika_aktual,
$voda_imp,$voda_celkem,$voda_cena,$voda_aktual)");

$db = null;
}
catch (PDOException $e) {
// obsluha pripadne chyby pri praci s databazi
echo "Pri praci s databazi doslo k chybe: " . $e->getMessage();
}
?>

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Kit (ekobrikety.vyrobce.cz)
Datum:  16. 12. 2011 19:23

- Proč tam máš pole $_GET?
- K čemu je pole $raw_udaje?
- Proč místo seznamu proměnných dáváš do INSERTu seznam hodnot?

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  16. 12. 2011 19:44

Mám podobný skript který již používám tak jsem jej "upravil"

-nevím
-nevím
-má chyba :-)

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Kit (ekobrikety.vyrobce.cz)
Datum:  16. 12. 2011 19:59

$xml = simplexml_load_file('http:// IP /xml.xml');

$plyn_imp = $xml->snmp->s0_0->imdiff*1;
$plyn_celkem = $xml->snmp->s0_0->text*1;
$plyn_cena = $xml->snmp->s0_0->money*1;
$plyn_aktual = $xml->snmp->s0_0->act*1;

$link = mysql_connect("$server", "$database", "$heslo");
$db = mysql_select_db("$dbname", $link);

mysql_query("INSERT INTO sds
(plyn_imp, plyn_celkem, plyn_cena, plyn_aktual) values
($plyn_imp, $plyn_celkem, $plyn_cena, $plyn_aktual);");

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  16. 12. 2011 20:08

hmm jednoduché a funguje to.
Ale nebyl jsem daleko. :-)
Děkuji

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Kit (ekobrikety.vyrobce.cz)
Datum:  16. 12. 2011 20:45

Není zač. Ani mi to nedalo moc práce. Jen jsem vzal kusy tvého kódu a poskládal ve správném pořadí. Schválně jsem to nedělal celé, aby sis zbytek dodělal za domácí úkol :-)
A teď vážně: Aby se z příkladu neztratila přehlednost. Účelem poradny není vyřešit úkol, ale navést správným směrem.

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  16. 12. 2011 21:02

všude na diskuzích jsem četl jak výpis z XML do db je složitý.
Skripty stořádkové a nebyl jsem, z nich nijak moudrý.
A ty to napíšeš na deset řádků. Príma.

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Kit (ekobrikety.vyrobce.cz)
Datum:  16. 12. 2011 21:45

Jsem tím pověstný. Rád píšu jednořádkové programy tam, kde jiní plýtvají 50 řádky. Uvedený program by se dal ještě zkrátit, ale výsledek by nemusel být jednoduše pochopitelný.

Hodně lidí hledá v programování nějaké složitosti, ale většinou stačí využít sílu dostupného jazyka. Je důležité pochopit rozdílnost paradigmat v různých jazycích a vytěžit z nich maximum jejich kombinací. Výsledné programy pak dosahují podobného výkonu, jako by celá aplikace byla pracně napsána ve strojovém kódu.

Hodně mi pomohlo studium Lispu. Je v něm patrný tlak na čistotu programování, protože nežádoucí praktiky se tam dělají obtížněji než žádoucí.

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Kit (ekobrikety.vyrobce.cz)
Datum:  16. 12. 2011 23:00

Nedalo mi to a zkusil jsem si jednu z možných zkrácených verzí uvedeného programu:

$raw_udaje=array(
'plyn_imp' => $xml->snmp->s0_0->imdiff*1,
'plyn_celkem' => $xml->snmp->s0_0->text*1,
'plyn_cena' => $xml->snmp->s0_0->money*1,
'plyn_aktual' => $xml->snmp->s0_0->act*1);

$query="INSERT INTO sds (".implode(',',array_keys($raw_udaje)).") values (".implode(',',array_values($raw_udaje)).");";

Výhodou je, že pokud přidáš nějakou hodnotu do pole $raw_udaje, přidá se automaticky i do SQL dotazu. Funguje to však jen pro čísla, pro řetězce (nebo pro mix) bych to musel napsat jinak.

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  19. 12. 2011 18:28

Kite,
prosím je ještě nějaký skript který mi vyčte z databáze třeba každý druhý, nebo třeba pátý záznam? Mám tu od Tebe jeden skript.
Tento vypisuje posledních 20 záznamů.
Vím, že se dá dosadit třeba DESC LIMIT 15,20
a čte to od 15tého řádku dvacet hodnot.

Ale nevím co použít na výpis který potřebuji.
Díky



<?
$spojeni=mysql_connect("localhost","jmeno","heslo");
$co="SELECT datum FROM data_1 ORDER BY datum DESC LIMIT 20;";
$navrat=mysql_db_query("energie", $co, $spojeni);
while (list( $datum) = mysql_fetch_row($navrat)){
$datum1[]=$datum;

}
$datum1=implode("','",array_reverse($datum1));
echo <<<EOT
xAxis: {
categories: ['$datum1'],
},
EOT;
?>

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Kit (ekobrikety.vyrobce.cz)
Datum:  19. 12. 2011 19:01

V SQL neexistují pojmy "každý druhý, nebo třeba pátý záznam", protože obecně je možné získat záznamy v různém pořadí. Můžeš však chtít záznamy s ID dělitelnými dvěma, třemi nebo pěti.

Možná tuším, co chceš, i když má křišťálová koule mi dává jen mlhavé informace. Pokud měříš v intervalu třeba 10 minut, chceš vytvořit graf denního průběhu, ve kterém bude z každé hodiny jen jedna hodnota. Možná když napíšeš, čeho chceš docílit, najdu vhodné řešení.

Pokud bys chtěl třeba průměrnou hodnotu z každé hodiny, použiješ funkci AVG() a k tomu GROUP BY po hodinách.

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  19. 12. 2011 19:10

Ta koule asi není tak mlhavá.

Posílám každých 5 min.
Ale třeba na graf který ukazuje posledních 24 hodin, mi stačí po každé hodině.
A jak píšeš průměr z každé hodiny, to by bylo perfektní.
Kouknu na ty funkce, zatím díky.

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  19. 12. 2011 19:31

Neměl bych si spíše udělat v databázi další sloupec
třeba Průměr_hodina a do něj zapisovat po každém 12tém měření (pokud posílám po 5min.) vypočítanou průměrnou hodnotu?
A až poté zapisovat do grafu?

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Kit (ekobrikety.vyrobce.cz)
Datum:  19. 12. 2011 19:34

Napadá mě tento SQL dotaz, který jen sypu z rukávu bez testování:

SELECT hour(timestamp) AS hodina, avg(teplota) AS T1 from mereni WHERE date(timestamp)=date(now()) GROUP BY hodina ORDER BY hodina;

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Kit (ekobrikety.vyrobce.cz)
Datum:  19. 12. 2011 19:39

Pokud si chceš zachovat zbytky zdravého rozumu, tak další databázový sloupec s průměrnými hodnotami nezaváděj. Je to i v rozporu s normalizací databáze. Místo toho stačí sloupec s teplotami indexovat. Index odvede mnohem lepší práci.

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  27. 12. 2011 17:18

měřím teplotu a zapisuji do databáze.
Ale občas se stane, že čidlo nahlásí poruchu a vypíše mi nesmyslné číslo 16777216°C, místo třeba22 °C.
Problém je v tom, že mi to rozhází zobrazení grafu. Do databáze zapisuji kařdých pět minut. Tak mě napadlo jestli by nešlo něco takového?

pokud je $teplota vyšší jak 100°C, tak uloží do $teplota
předchozí hodnotu zapsanou v databázi. Ale nevím co dosadit do vzorce.
Poradíte? Díky.


if ($teplota>100) {$teplota = předchozí hodnota v databázi ;}

Nebo nějaké jiné řešení?

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  27. 12. 2011 17:24

něco takového?

$teplota_1 ="SELECT teploty FROM tab DESC LIMIT 1;";
if ($teplota>100) {$teplota=$teplota_1;}

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Kit (ekobrikety.vyrobce.cz)
Datum:  28. 12. 2011 00:56

Lepší by bylo takovou nesmyslnou hodnotu do databáze vůbec nezapsat. Pokud při vytváření grafu typu XY nějaká hodnota chybí, tak to zpravidla nevadí. V databázích je pro to vyhrazena (ne)hodnota NULL.

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Jiri Hrdlicka (hrdlickovi.wz.cz)
Datum:  28. 12. 2011 15:19

Nepřipadá mi to jako nesmysl. Kdybych měřil každou hodinu, ale měřím každých pět minut a chyba je jednou za cca 24hodin.
Přijde mi to naopak jako elegantní řešení :-)

Pokoušel jsem se tu (ne)hodnotu NULL nějak nasimulovat, co to udělá v grafu, ale navím jak ji zapsat do jednoho "okenka" v databazi.

Reagovat 
 
 Re: Výpis dat z Mysql
Autor: Kit (ekobrikety.vyrobce.cz)
Datum:  28. 12. 2011 20:09

Při vkládání nebo přepisování dáš místo 15 nebo 'řetězec' slovo NULL. Je to konstanta vyjadřující prázdnou hodnotu. Není to ani 0, ani prázdný řetězec, je to prostě NULL, tedy nic.

Reagovat 
 Nové téma | Témata | Strukturovaně | Přihlášení   Diskuze | Následující téma | Předcházející téma 

 Diskuze | Zaregistrujte se zde 
 Přihlášení Uživatele
 Uživatelské jméno:
 Heslo:
   

Dovolená se ZÁJEZDY.CZ - Egypt, Tunisko, Řecko, Chorvatsko, Bulharsko, Itálie, Španělsko, Turecko, Francie, ...
Jen renomované cestovní kanceláře! LAST MINUTE nabídky zdarma na e-mail. Lyžování. Letenky. SR - Zájazdy.sk.
(c) 2002 - 2013 AYA s.r.o. prověřený webhosting