Wywołanie danych z bazy i przypisanie im nazw

Wywołanie danych z bazy i przypisanie im nazw

Wątek przeniesiony 2015-08-09 18:40 z PHP przez dzek69.

0

Witam serdecznie, niestety jako, że PHP i ta dziedzina informatyki nie jest mi bliska - a raczej bardzo odległa zwracam się o pomoc do Was.
Mam bazę danych a w niej odczyty temp z 2 czujników. Tak to wyglada:

Kopiuj
2015	Aug 09	16:05:02	10D815CC02080022	37.44
2015	Aug 09	16:05:03	10FD0BCC020800A1	31.94
2015	Aug 09	16:10:02	10D815CC02080022	36.75
2015	Aug 09	16:10:03	10FD0BCC020800A1	31.94
2015	Aug 09	16:15:02	10D815CC02080022	37.06
2015	Aug 09	16:15:03	10FD0BCC020800A1	31.88
2015	Aug 09	16:20:02	10D815CC02080022	36.88
2015	Aug 09	16:20:03	10FD0BCC020800A1	31.88
2015	Aug 09	16:25:02	10D815CC02080022	36.94
2015	Aug 09	16:25:03	10FD0BCC020800A1	31.88
2015	Aug 09	16:30:02	10D815CC02080022	36.56
2015	Aug 09	16:30:03	10FD0BCC020800A1	31.81
2015	Aug 09	16:35:02	10D815CC02080022	36.75
2015	Aug 09	16:35:03	10FD0BCC020800A1	31.88
2015	Aug 09	16:40:02	10D815CC02080022	36.13
2015	Aug 09	16:40:03	10FD0BCC020800A1	31.88
2015	Aug 09	16:45:02	10D815CC02080022	36
2015	Aug 09	16:45:03	10FD0BCC020800A1	31.88
2015	Aug 09	16:50:02	10D815CC02080022	36.06
2015	Aug 09	16:50:03	10FD0BCC020800A1	31.75
2015	Aug 09	16:55:02	10D815CC02080022	35.38
2015	Aug 09	16:55:03	10FD0BCC020800A1	31.81

Chciałbym aby na samej górze strony pojawiał się napis:
Aktualna temperatura zew. wynosi - xx stopni
Aktualna temperatura wew wynosi - xx stopni.
Jak widzicie czujniki maja przypisane swoje numery seryjne - po nich można rozpoznawac która temp to zew a która wew.
Do bazy co 5 minut jest dodawany nowy wpis z pomiaru - chciałbym aby automatycznie pojawiał się on w aktualnej temp.

Pozdrawiam

Łączenie z bazą udało mi się zrobić z PHP gorzej z kwestią którą omówiłem wyżej.

edytowany 1x, ostatnio: flowCRANE
dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:5 dni
  • Lokalizacja:Rzeszów
0

To daj jakiś kod może? Dopiszemy Ci tego SELECTA (boże, z czym na forum...)


0
Kopiuj
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <html>
 <head>
 <title>Odczyty temperatury</title>
 <meta http-equiv=content-type content="text/html; charset=iso-8859-2">
 <meta http-equiv="Content-Language" content="pl">
 </head>
 
 <body>
 <?php 
 
 ////////////////////////////////////////////////////////////
 //Przykład kodu wyświetlającego dane z bazy mysql (tabeli newsletter z
 //osobami zapisanymi na listę dystrybucyjną)
 //Wymagania
 //  1. Zalozona baza mysql na serwerze
 //  2. Tabela newsletter w bazie mysql z polami imie, nazwisko, mail
 ////////////////////////////////////////////////////////////
 
 ////////////////////////////////////////////////////////////
 //Definicje zmiennych
 
 //adres ip serwera mysql który zawiera bazę danych i tabele z osobami 
 //zapisanymi na listę dystrybucyjna newslettera
 $adres_ip_serwera_mysql_z_baza_danych = 'xxxxxxxx';
 
 //nazwa bazy danych z tabelą newsletter zawierającą osoby zapisane na 
 //listę dystrybucyjna newslettera
 $nazwa_bazy_danych = 'xxxxxxxxx';
 
 //nazwa uzytkownika bazy danych $nazwa_bazy_danych
 $login_bazy_danych = 'xxxxxxxx';
 
 //haslo uzytkownika bazy danych $nazwa_bazy_danych
 $haslo_bazy_danych = 'xxxxxxxxxx';
 
 ////////////////////////////////////////////////////////////
 //Kod programu
 
 //Ustanawiamy połączenie z serwerem mysql
 if ( !mysql_connect($adres_ip_serwera_mysql_z_baza_danych,
 
              $login_bazy_danych,$haslo_bazy_danych) ) {
    echo 'Nie moge polaczyc sie z baza danych';
 	 exit (0);
 }
 //Wybieramy baze danych na serwerze mysql ktora zawiera tabele
 //newsletter gdzie sa dane osob z listy dystrybucyjnej
 if ( !mysql_select_db($nazwa_bazy_danych) ) {
    echo 'Blad otwarcia bazy danych';
 	 exit (0);
 }
 
 //Definiujemy zapytanie pobierające wszystkie wiersze z wszystkimi
 //polami z tabeli newsletter
 $zapytanie = "SELECT * FROM `temperatura`";
 //wykonujemy zdefiniowane zapytanie na bazie mysql
 $wynik = mysql_query($zapytanie);
 
 //Wyświetlamy w tabeli html dane pobrane 
 //z tabeli newsletter bazy mysql
 //Najpierw definiujemy nagłówek tabeli html
 echo "<p>";
 echo "<table boder=\"1\"><tr>";
 echo "<td bgcolor=\"ffff00\"><strong>Rok</strong></td>";
 echo "<td bgcolor=\"ffff99\"><strong>Data</strong></td>";
 echo "<td bgcolor=\"ffff00\"><strong>Czas</strong></td>";
 echo "<td bgcolor=\"ffff99\"><strong>ID</strong></td>";
 echo "<td bgcolor=\"ffff99\"><strong>Temp</strong></td>";
 echo "</tr>";
 //Teraz wyświetlamy kolejne wiersze z tabeli newsletter
 //Pola tabeli newsletter pobieramy odwołując się do ich 
 //numerów jak poniżej:
 //   0 (rok)
 //   1 (data)
 //   2 (czas)
 //   3 (id)
 //   4 (temp)
 while ( $row = mysql_fetch_row($wynik) ) {
    echo "</tr>";
    echo "<td bgcolor=\"ffff00\">" . $row[0] . "</td>";
    echo "<td bgcolor=\"ffff99\">" . $row[1] . "</td>";
    echo "<td bgcolor=\"ffff00\">" . $row[2] . "</td>";
    echo "<td bgcolor=\"ffff99\">" . $row[3] . "</td>";
    echo "<td bgcolor=\"ffff99\">" . $row[4] . "</td>";
    echo "</tr>";
 }
 echo "</table>";

 
 
 //Zamykamy połączenie z bazą danych
 if ( !mysql_close() ) {
    echo 'Nie moge zakonczyc polaczenia z baza danych';
    exit (0);
 }
 
 ?>
 </body> 
 </html>

Ciesze się kolego, że Ty jesteś dobry w swojej dziedzinie. Ja za to jestem dobry w innej :)

Teraz jest tak, że całą bazę mi pokazuje. A ja chcę to zachować, tylko żeby na samej górze strony było to co napisałem.

NP
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 7 lat
0

Jeżeli pokazuje Ci całą tablicę to już nie jest tak źle ;)
Dodaj do selecta limit - <code class="php">$zapytanie = "SELECT * FROM temperatura` LIMIT 2";

Kopiuj
W ten sposób pokaże tylko dwa ostatnie rekordy. 

Jeśli na jednej stronie chcesz mieć i tabelę i nazwijmy to podsumowanie, wówczas musisz zrobić tak:
Dla podsumowania
```php
$zapytanie = "SELECT * FROM `temperatura` LIMIT 2"; 

i dla tabeli:

Kopiuj
$zapytanie2 = "SELECT * FROM `temperatura`"; 

Całkiem odrębna sprawa - mysql. Jeśli już, to zamień na mysqli. Jeśli zapytasz dlaczego, to odpowiem trochę wymijająco - poczytaj. Jest trochę zmian wprowadzonych, z czego najważniejsza to oczywiście bezpieczeństwo.

0

Niestety wyrażenie LIMIT 2 zwraca mi temperaturę ale pierwszego pomiaru tzn

Kopiuj
2015	Aug 06	17:00:02	10D815CC02080022	39.31

tą. A dziś mamy 10.

Kopiuj
//Definiujemy zapytanie pobierające wszystkie wiersze z wszystkimi
 //polami z tabeli newsletter
 $zapytanie = "SELECT * FROM `temperatura`";
 $zapytanie2 = "SELECT * FROM `temperatura` LIMIT 2"; 
 //wykonujemy zdefiniowane zapytanie na bazie mysql
 $wynik = mysql_query($zapytanie);
 $wynik2 = mysql_query($zapytanie2);
 
 $row2 = mysql_fetch_row($wynik2);
echo  $row2[4];
//echo "<td bgcolor=\"ffff99\">" . $row2[4] . "</td>";
edytowany 2x, ostatnio: flowCRANE
flowCRANE
Wstawiaj kod w znaczniki kolorujące składnię!
Min0s
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 7 lat
  • Postów:83
0
Kopiuj
$zapytanie2 = "SELECT * FROM `temperatura` ORDER BY `rok` DESC, `data` DESC LIMIT 2";

Powinno zadziałać

edytowany 4x, ostatnio: Min0s
ŁF
Nie zadziała, bo zabrakło Ci jeszcze sortowania po godzinie.
0

Niestety - pokazuje pierwszą temperaturę z danego dnia.
Tzn pokazało 23.13.

a wpis w bazie wyglada tak: 2015 Aug 10 00:00:02 10D815CC02080022 23.13

poza tym pokazuje mi jedną temp. a ja chciałbym dwie ostatnie (2 czujniki).

Min0s
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 7 lat
  • Postów:83
0
Kopiuj
 $zapytanie2 = "SELECT * FROM `temperatura` ORDER BY `rok` DESC LIMIT 2"; 

albo

Kopiuj
 $czujnik1= "SELECT * FROM `temperatura` ORDER BY `rok` DESC where `id`='10D815CC02080022' LIMIT 1"; 
Kopiuj
 $czujnik2 = "SELECT * FROM `temperatura` ORDER BY `rok` DESC where `id`='10FD0BCC020800A1' LIMIT 1"; 

._.

edytowany 4x, ostatnio: Min0s
0

Niestety - nadal niewłaściwie wyświetla. Teraz 39.31
Wertość ta pochodzi z : 2015 Aug 06 17:00:02 10D815CC02080022 39.31

0

Sekunda sprawdze te drugie co wstawiłeś - bo edytowałeś post

0

Pierwszy podaje pierwszy wpis z bazy 39.31.
Pozostałe dwa - nie wyświetlają nic.

Min0s
A co wyświetla $zapytanie2 = "SELECT * FROM temperatura ORDER BY rok LIMIT 2"; ?
0

Wyświetla 33.3 - ale ten wpis w bazie mam akurat błędny :

0 12:22 23we 33.3

bo bawiłem się GET żeby wpisać temp do bazy

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
1

Dlaczego nie zrobisz tego po ludzku tworząc pole DATETIME?


Min0s
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 7 lat
  • Postów:83
0

Dobrym wyjściem byłoby też pole id, które się automatycznie inkrementuje.

0

Tzn? Automatycznie gdy coś wejdzie do bazy zostanie dopisana data?
Wiązałoby się to z konfiguracją programu wysyłającego dane na bazę.

Min0s
Przy tworzeniu pola w tabeli zaznaczasz A_I (auto increment), po prostu przy wysyłaniu rekordu do bazy, nowe rekordy będą miały kolejne id, względem kolejnych rekordów.
0

Czy dodając teraz pole id - wypełni się automatycznie - już dla istniejących pomiarów?

0

Niestety - po dodaniu pola przez kreator nie uzupełniła się liczba porządkowa.

Zobacz pozostałe 2 komentarze
Min0s
@furious programming straszenie użyszkodników nie jest miłe :/. Po prostu nie chciałem pisać postów z jednym słowem, no chyba, że wolno to ok xd.
flowCRANE
Ja Cię tylko ostrzegam, żeby nie było potem żali, że "na 4p banujo za darmo"; Od dyskusji na temat są posty, komentarze są od offtopu, żeby nie wprowadzać zamieszania i dyskutować o innym temacie niż pierwotny na boku; Za pisanie postów nie płaci się, więc można pisać do woli, o ile ma się coś sensownego do powiedzienia;
Min0s
A, to teraz będę wiedział XD
flowCRANE
Pisałem Ci o tym przy poprzednich razach; Dlatego też nie rób bałaganu i nie dokładaj roboty moderacji - tylko tyle;
0

Teraz zaznaczyłem i działa :)
Jaki typ dać? int?
Odczyty są co 5 minut. przez 4 dni nazbierało sie ponad 2500 rekordów

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

2500 rekordów to tak naprawdę nic :P
int spokojnie wystarczy.


0

Panowie nie będę owijał w bawełnę - strona którą obecnie zrobiłem jest czysto edukacyjna.
Ostatecznie dążę do tego - bbarwik.com/meteo

Mam nawet kod źródłowy - http://bbarwik.com/meteo/meteo.rar
I tu jest pies pogrzebany. Kod ze strony bbarwik korzysta z plików txt. Ja natomiast mam bazę- i nie wiem jak to dostosować żeby fajnie chodziło.

Min0s
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 7 lat
  • Postów:83
0

A dlaczego chcesz się upodabniać do kogoś i zrobić to tak samo?
Po co przechodzić z bazy do pliku tekstowego?

0

Tak samo - chodzi mi tylko i wyłącznie o funkcjonowanie wykresu.
Niestety jak widać moje pojęcie o PHP oraz mysql jest małe a wręcz znikome - dlatego postanowiłem wykorzystać gotowy kod - modyfikując go jakoś tak by działał z moją bazą.

Po co przechodzić z bazy na plik tekstowy - mi chodzi o odwrotność - kod zamieszczony powyżej korzysta z danych z .txt a ja mam dane w bazie danych

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Źle się do tego zabierasz.
Marnie skończysz próbując naprawić auto nierozróżniając klucza francuskiego od śrubokręta.


0

Jeśli kolega ma inny pomysł jak taki ładny wykres narysować - chętnie poczytam. Jednak tak jak mówię - samemu raczej nic nie wskóram.

Min0s
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 7 lat
  • Postów:83
0

Polecam kurs php- mysql.
Szybko załapiesz o co w tym chodzi :p

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Zacząć od kursu, to jest pomysł.


0

Czy moglibyście jakiś polecić? Wiadomo istnieje mnóstwo - a wy macie już jakieś rozeznanie który jest dobry a który zły :)

Min0s
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 7 lat
  • Postów:83
0

http://webmade.org/kursy-online/kurs-mysql.php

Jakakolwiek książka o PHP-MySQL z roku 2014~2015 :v

edytowany 3x, ostatnio: Min0s
Patryk27
NIE. To jest okropny kurs - korzysta ze zdeprecjonowanego rozwiązania.
Min0s
@Patryk27 poleć koledze coś lepszego :p
Patryk27
Jakakolwiek książka o PHP-MySQL z roku 2014~2015 :v
Patryk27
Przekreśl ten link, bo się jeszcze wczuje w to mysql_connect, zamiast podejść do tego po ludzku.
Tumeg
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 8 lat
  • Postów:687
0

Jak już masz dane pobrane to czeka Cię trochę zabawy z tworzeniem wykresu w js, skorzystaj z jednej z bibliotek:
http://www.highcharts.com/stock/demo
http://www.chartjs.org/

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)