Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Zmiana pobieraniadanych
Forum PHP.pl > Forum > Przedszkole
globalinfo
Jak przerobić poniższy kod aby dane były pobierane z bazy MySQL?
Teraz dane są pobierane z plików TXT

Dane mam zapisywane do bazy i do plików TXT przez skryp add_data.php


Prośba o pomoc sciana.gif


  1. <?php
  2. $id = $_GET['id']; $temp = array(); $all = false;
  3. // CONGIG
  4. $limit_after = 1000; // po ilu pomiarach zacznie zmieniac dokladnosc
  5. $max_res = 10000; // ile pomiarow maksymalnie wyswietli
  6. // name to oczywiscie wyswietlana nazwa, all to czy pokazywac na wspolnym wykresie
  7.  
  8. $t3231= $_GET['t3231'];
  9. $TZ= $_GET['TZ'];
  10. $WZ= $_GET['WZ'];
  11. $CA= $_GET['CA'];
  12. $TCA= $_GET['TCA'];
  13. $WB= $_GET['WB'];
  14. $DAL1= $_GET['DAL1'];
  15. $PWY= $_GET['PWY'];
  16. $SWY= $_GET['SWY'];
  17. $SWE= $_GET['SWE'];
  18. $BWE= $_GET['BWE'];
  19.  
  20. $temp[0] = array("name" => "t3231", "all" => $t3231);
  21. $temp[1] = array("name" => "Temperatura na zewnÄ…trz", "all" => $TZ);
  22. $temp[2] = array("name" => "Wilgotność na zewnątrz", "all" => $WZ);
  23. $temp[3] = array("name" => "Ciśnienie atmosferyczne", "all" => $CA);
  24. $temp[4] = array("name" => "TCiśnienie", "all" => $TCA);
  25. $temp[5] = array("name" => "Woda Bojler", "all" => $WB);
  26. $temp[6] = array("name" => "Pokoje", "all" => $DAL1);
  27. $temp[7] = array("name" => "Piec wy", "all" => $PWY);
  28. $temp[8] = array("name" => "Solar wy", "all" => $SWY);
  29. $temp[9] = array("name" => "Solar we", "all" => $SWE);
  30. $temp[10] = array("name" => "Bojler we", "all" => $BWE);
  31.  
  32.  
  33. // Koniec Configu
  34. // obecna temp
  35. foreach(unserialize(file_get_contents("ostatnia.txt")) as $i => $t) {
  36. if(isset($temp[($i)]))
  37. $temp[($i)]["temp"] = $t; // Obecna Temp
  38. }
  39. if(!isset($temp[($id)])) // Gdy brak id to pokazuj wszystkie czujniki z parametrem all = true
  40. $all = true;
  41.  
  42. function getData($id) {
  43. global $limit_after,$max_res;
  44. $d = file_get_contents($id.'.txt');
  45. $data = array(); $t = ""; $type = 0;
  46. for($i = 0; $i < strlen($d); $i++) {
  47. if($d[$i] == '[') {
  48. $t = ""; $type = 1;
  49. } else if($d[$i] == ',' && $type == 1) {
  50. $time = $t; $type = 2; $t = "";
  51. } else if($d[$i] == ']' && $type == 2) {
  52. $data[trim($time)] = trim($t); $type = 0; $t = "";
  53. } else
  54. $t .= $d[$i];
  55. }
  56. $ile = count($data); $t = "";
  57. $lim = ($ile-$limit_after)/$max_res;
  58. $prog = 0; $lprog = 0;
  59. foreach($data as $time => $temp) {
  60. if($prog+$limit_after > $ile) {
  61. $t .= "[".$time."000,".$temp."],";
  62. } else {
  63. if(floor($lprog) <= floor($prog)) {
  64. $t .= "[".$time."000,".$temp."],";
  65. $lprog += $lim;
  66. }
  67. }
  68. $prog++;
  69. }
  70. return rtrim($t, ",");
  71. }
  72. ?>
  73. ....


Dane mam zapisywane do plików i bazy w taki sposób.

Plik add_data.php
  1. <?php
  2.  
  3. $czas = time();
  4.  
  5. // Connect to MySQL
  6. include("dbconnect.php");
  7.  
  8. // Prepare the SQL statement
  9. $query = "INSERT INTO energie (czas, t3231, tDHT11, wilgotnosc, cisnienie, tcisnienie, dallasnr0, dallasnr1, dallasnr2, dallasnr3, dallasnr4, dallasnr5)
  10. VALUES ('$czas', '$_POST[t3231]', '$_POST[tDHT11]',
  11. '$_POST[wilgotnosc]', '$_POST[cisnienie]', '$_POST[tcisnienie]',
  12. '$_POST[dallasnr0]', '$_POST[dallasnr1]' , '$_POST[dallasnr2]' , '$_POST[dallasnr3]' , '$_POST[dallasnr4]' , '$_POST[dallasnr5]' )";
  13.  
  14. // Go to the review_data.php (optional)
  15. //header("Location: review_data.php");
  16.  
  17. if(!@mysql_query($query))
  18. {
  19. echo "&Answer; SQL Error - ".mysql_error();
  20. return;
  21.  
  22. }
  23. $x=0;
  24. //$czas = time();
  25.  
  26. for( $x = 0; $x < 11; $x++ )
  27. {
  28.  
  29. if ($x==0){ $wartosc=$_POST[t3231];}
  30. if ($x==1){ $wartosc=$_POST[tDHT11];}
  31. if ($x==2){ $wartosc=$_POST[wilgotnosc];}
  32. if ($x==3){ $wartosc=$_POST[cisnienie];}
  33. if ($x==4){ $wartosc=$_POST[tcisnienie];}
  34. if ($x==5){ $wartosc=$_POST[dallasnr0];}
  35. if ($x==6){ $wartosc=$_POST[dallasnr1];}
  36. if ($x==7){ $wartosc=$_POST[dallasnr2];}
  37. if ($x==8){ $wartosc=$_POST[dallasnr3];}
  38. if ($x==9){ $wartosc=$_POST[dallasnr4];}
  39. if ($x==10){ $wartosc=$_POST[dallasnr5];}
  40.  
  41.  
  42. //$t2=".00";
  43.  
  44. $wartosc = ($wartosc / 100 );
  45. $wartosc = number_format($wartosc, 2, '.', '');
  46. //$string = strlen($wartosc);
  47. //if ($string==2){$wartosc=$wartosc.$t2;}
  48. //if ($string==3){$wartosc=$wartosc.$t2;}
  49.  
  50. // zmienna $dane, która będzie zapisana
  51. // może także pochodzić z formularza np. $dane = $_POST['dane'];
  52. $dane = "[$czas,$wartosc],\n";
  53.  
  54. // przypisanie zmniennej $file nazwy pliku
  55. $file = "$x.txt";
  56.  
  57. // uchwyt pliku, otwarcie do dopisania
  58. $fp = fopen($file, "a");
  59.  
  60. // blokada pliku do zapisu
  61. flock($fp, 2);
  62.  
  63. // zapisanie danych do pliku
  64. fwrite($fp, $dane);
  65.  
  66. // odblokowanie pliku
  67. flock($fp, 3);
  68.  
  69. // zamknięcie pliku
  70. fclose($fp);
  71. echo $x;
  72. echo "<br/>";
  73.  
  74. }
  75. ?>
nospor
Napisz proszcze z czym masz konretnie problem? Nie umiesz pobrac danych z bazy?
globalinfo
Cytat(nospor @ 13.12.2016, 12:35:03 ) *
Napisz proszcze z czym masz konretnie problem? Nie umiesz pobrac danych z bazy?


Samo pobranie danych nie stanowi problemu.
Robię to tak:
  1. <?php
  2. // Start MySQL Connection
  3. include('dbconnect.php');
  4. //
  5.  
  6.  
  7. $selected = mysql_select_db($Database, $dbh);
  8. ?>

specool.gif
Głównie chodzi mi aby odpowiednio je wyłuskać i przypisać do funkcji z oryginalnego kodu sciana.gif
  1. function getData($id) {
  2. global $limit_after,$max_res;
  3. $d = file_get_contents($id.'.txt');
  4. $data = array(); $t = ""; $type = 0;
  5. for($i = 0; $i < strlen($d); $i++) {
  6. if($d[$i] == '[') {
  7. $t = ""; $type = 1;
  8. } else if($d[$i] == ',' && $type == 1) {
  9. $time = $t; $type = 2; $t = "";
  10. } else if($d[$i] == ']' && $type == 2) {
  11. $data[trim($time)] = trim($t); $type = 0; $t = "";
  12. } else
  13. $t .= $d[$i];
  14. }
  15. $ile = count($data); $t = "";
  16. $lim = ($ile-$limit_after)/$max_res;
  17. $prog = 0; $lprog = 0;
  18. foreach($data as $time => $temp) {
  19. if($prog+$limit_after > $ile) {
  20. $t .= "[".$time."000,".$temp."],";
  21. } else {
  22. if(floor($lprog) <= floor($prog)) {
  23. $t .= "[".$time."000,".$temp."],";
  24. $lprog += $lim;
  25. }
  26. }
  27. $prog++;
  28. }
  29. return rtrim($t, ",");
  30. }
  31.  
nospor
Cytat
Samo pobranie danych nie stanowi problemu.
Robię to tak:
Kod co pokazales nie pobiera danych z bazy. On jedynie wybiera baze na ktorej chcesz pracowac
globalinfo
Cytat(nospor @ 13.12.2016, 12:47:26 ) *
Kod co pokazales nie pobiera danych z bazy. On jedynie wybiera baze na ktorej chcesz pracowac


Ok nie chciałem wstawiać pozostałego kodu aby nie wprowadzić zamieszania bo ten kod wyświetla mi wszystkie dane z bazy.
  1.  
  2. <?php
  3.  
  4. $result = mysql_query("SELECT * FROM energie ORDER BY id ASC");
  5. $oddrow = true;
  6.  
  7. while( $row = mysql_fetch_array($result) )
  8. {
  9. if ($oddrow)
  10. {
  11. $css_class=' class="table_cells_odd"';
  12. }
  13. else
  14. {
  15. $css_class=' class="table_cells_even"';
  16. }
  17.  
  18. $oddrow = !$oddrow;
  19.  
  20.  
  21. echo '<tr>';
  22. echo ' <td'.$css_class.'>'.$row["id"].'</td>';
  23. echo ' <td'.$css_class.'>';
  24. echo date('y.m.d.H.i.s', $row["czas"]);
  25. echo '</td>';
  26.  
  27.  
  28. echo ' <td'.$css_class.'>';
  29. echo ($row["t3231"]/100);
  30. echo "°C";
  31. echo '</td>';
  32.  
  33.  
  34. echo ' <td'.$css_class.'>';
  35. echo ($row["tDHT11"]/100);
  36. echo "°C";
  37. echo '</td>';
  38. echo ' <td'.$css_class.'>';
  39. echo ($row["wilgotnosc"]/100);
  40. echo " %";
  41. echo '</td>';
  42. echo ' <td'.$css_class.'>';
  43. echo ($row["cisnienie"]/100);
  44. echo " hPa";
  45. echo '</td>';
  46. echo ' <td'.$css_class.'>';
  47. echo ($row["tcisnienie"]/100);
  48. echo "°C";
  49. echo '</td>';
  50. echo ' <td'.$css_class.'>';
  51. echo ($row["dallasnr0"]/100);
  52. echo "°C";
  53.  
  54. echo '</td>';
  55. echo ' <td'.$css_class.'>';
  56. echo ($row["dallasnr1"]/100);
  57. echo "°C";
  58. echo '</td>';
  59.  
  60. echo '</tr>';
  61. }
  62. ?>
  63.  
  64.  
  65.  
nospor
super, a teraz czesc swojej petli while,ktora pobiera dane z bazy masz wlozyc zamiast tego kodu

  1. foreach(unserialize(file_get_contents("ostatnia.txt")) as $i => $t) {
  2. if(isset($temp[($i)]))
  3. $temp[($i)]["temp"] = $t; // Obecna Temp
  4. }

do dziela smile.gif
globalinfo
Cytat(nospor @ 13.12.2016, 13:00:12 ) *
super, a teraz czesc swojej petli while,ktora pobiera dane z bazy masz wlozyc zamiast tego kodu

  1. foreach(unserialize(file_get_contents("ostatnia.txt")) as $i => $t) {
  2. if(isset($temp[($i)]))
  3. $temp[($i)]["temp"] = $t; // Obecna Temp
  4. }

do dziela smile.gif


Coś mi to nie pasuje bo ostatnia.txt jest do odczytania ostatnio zapisanej temperatury.

Natomiast pliki z wszystkimi danymi są zapisywane odpowiednio:
0.txt - [czas zapisu,t3231]
Dane zapisywane dane w pliku wyglądają tak:

[1441029599,1099.00],

następny jest
1.txt - [czas zapisu,tDHT11]
itd...
aż do 9.txt - [czas zapisu,dallasnr5]
Do odczytania danych z plików .txt służy
  1. function getData($id)


I tu potrzebuje pomocy aby odpowiednio zmodyfikować tą funkcję.

  1. function getData($id) {
  2. global $limit_after,$max_res;
  3. $d = file_get_contents($id.'.txt');
  4. $data = array(); $t = ""; $type = 0;
  5. for($i = 0; $i < strlen($d); $i++) {
  6. if($d[$i] == '[') {
  7. $t = ""; $type = 1;
  8. } else if($d[$i] == ',' && $type == 1) {
  9. $time = $t; $type = 2; $t = "";
  10. } else if($d[$i] == ']' && $type == 2) {
  11. $data[trim($time)] = trim($t); $type = 0; $t = "";
  12. } else
  13. $t .= $d[$i];
  14. }
  15. $ile = count($data); $t = "";
  16. $lim = ($ile-$limit_after)/$max_res;
  17. $prog = 0; $lprog = 0;
  18. foreach($data as $time => $temp) {
  19. if($prog+$limit_after > $ile) {
  20. $t .= "[".$time."000,".$temp."],";
  21. } else {
  22. if(floor($lprog) <= floor($prog)) {
  23. $t .= "[".$time."000,".$temp."],";
  24. $lprog += $lim;
  25. }
  26. }
  27. $prog++;
  28. }
  29. return rtrim($t, ",");
  30. }


Przerobiłem funkcję w taki sposób.
Błędy się nie wyświetlają, ale na wykresie pusto. sciana.gif

  1.  
  2. function getData($id) {
  3. global $limit_after,$max_res;
  4.  
  5. include('dbconnect.php');
  6. $selected = mysql_select_db($Database, $dbh);
  7.  
  8.  
  9. if ($id==0){ $result = mysql_query("SELECT id , t3231 FROM energie ORDER BY id ASC");
  10.  
  11. if (!$result) {
  12. echo 'Nie można uruchomić zapytania: ' . mysql_error();
  13. }
  14.  
  15. $data = mysql_fetch_row($result);}
  16.  
  17. if ($id==1){ $result = mysql_query("SELECT id , tDHT11 FROM energie ORDER BY id ASC");
  18.  
  19. if (!$result) {
  20. echo 'Nie można uruchomić zapytania: ' . mysql_error();
  21. }
  22.  
  23. $data = mysql_fetch_row($result);}
  24.  
  25. if ($id==2){ $result = mysql_query("SELECT id , wilgotnosc FROM energie ORDER BY id ASC");
  26.  
  27. if (!$result) {
  28. echo 'Nie można uruchomić zapytania: ' . mysql_error();
  29. }
  30.  
  31. $data = mysql_fetch_row($result);}
  32.  
  33. if ($id==3){ $result = mysql_query("SELECT id , cisnienie FROM energie ORDER BY id ASC");
  34.  
  35. if (!$result) {
  36. echo 'Nie można uruchomić zapytania: ' . mysql_error();
  37. }
  38.  
  39. $data = mysql_fetch_row($result);}
  40.  
  41. if ($id==4){ $result = mysql_query("SELECT id , tcisnienie FROM energie ORDER BY id ASC");
  42.  
  43. if (!$result) {
  44. echo 'Nie można uruchomić zapytania: ' . mysql_error();
  45. }
  46.  
  47. $data = mysql_fetch_row($result);}
  48. if ($id==5){ $result = mysql_query("SELECT id , dallasnr0 FROM energie ORDER BY id ASC");
  49.  
  50. if (!$result) {
  51. echo 'Nie można uruchomić zapytania: ' . mysql_error();
  52. }
  53.  
  54. $data = mysql_fetch_row($result);}
  55. if ($id==6){ $result = mysql_query("SELECT id , dallasnr1 FROM energie ORDER BY id ASC");
  56.  
  57. if (!$result) {
  58. echo 'Nie można uruchomić zapytania: ' . mysql_error();
  59. }
  60.  
  61. $data = mysql_fetch_row($result);}
  62. if ($id==7){ $result = mysql_query("SELECT id , dallasnr2 FROM energie ORDER BY id ASC");
  63.  
  64. if (!$result) {
  65. echo 'Nie można uruchomić zapytania: ' . mysql_error();
  66. }
  67.  
  68. $data = mysql_fetch_row($result);}
  69. if ($id==8){ $result = mysql_query("SELECT id , dallasnr3 FROM energie ORDER BY id ASC");
  70.  
  71. if (!$result) {
  72. echo 'Nie można uruchomić zapytania: ' . mysql_error();
  73. }
  74.  
  75. $data = mysql_fetch_row($result);}
  76. if ($id==9){ $result = mysql_query("SELECT id , dallasnr4 FROM energie ORDER BY id ASC");
  77.  
  78. if (!$result) {
  79. echo 'Nie można uruchomić zapytania: ' . mysql_error();
  80. }
  81.  
  82. $data = mysql_fetch_row($result);}
  83. if ($id==10){ $result = mysql_query("SELECT id , dallasnr5 FROM energie ORDER BY id ASC");
  84.  
  85. if (!$result) {
  86. echo 'Nie można uruchomić zapytania: ' . mysql_error();
  87. }
  88.  
  89. $data = mysql_fetch_row($result);}
  90.  
  91.  
  92.  
  93. }
  94.  
  95.  
  96.  
  97.  
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.