Wątek przeniesiony 2015-08-31 13:56 z PHP przez dzek69.

Nowicjusz - wyświetlenie DESC LIMIT 2

0

Witam mam taki fragment kodu:

$zapytanie2 = "SELECT * FROM temperatura ORDER BY lp DESC LIMIT 2";
 $zapytanie3 = "SELECT MAX(lp) FROM temperatura";
 //wykonujemy zdefiniowane zapytanie na bazie mysql
 $wynik = mysql_query($zapytanie);
 $wynik2 = mysql_query($zapytanie2);
 $wynik3 = mysql_query($zapytanie2);

//wyswietlenie zapytania

$row3 = mysql_fetch_row($wynik3); 
echo("Liczba wpisów w bazie danych: ". $row3[0]."<br />"); 


 $row2 = mysql_fetch_row($wynik2);
 echo("Temperatura wewnątrz: ". $row2[5]."<br />"); 

Zapytanie do bazy zwraca dwa ostatnio dodane wpisy. Ok - na bazie działa zwraca 2 ostatnie, ale w PHP mam z tym problem.
Działa, ale nie do końca. Wyświetla tylko liczbę wpisów i temp. wewnątrz. Dodanie linijki: echo("Temperatura zewnątrz: ". $row2[5]."<br />");
zwraca znów temperaturę wewnątrz.
Nie za bardzo wiem jak to obejść. Podejrzewam, że potrzebuję innej zmiennej która przetrzyma drugi wynik z bazy a konkretnie temperaturę. Jednak jak to zrobić?
Dodam, że jestem kompletnym laikiem w dziedzinie PHP.

Pozdrawiam

0
SELECT *
FROM temperatura
ORDER BY lp DESC
LIMIT 2 

to zapytanie w bazie danych na hostingu zwraca dobrze - dwa ostatnie rekordy natomiast w php po wykonaniu: var_dump($row2);
zwraca na stronie:

array(6) { [0]=> string(5) "13603" [1]=> string(4) "2015" [2]=> string(6) "Aug 30" [3]=> string(8) "20:35:03" [4]=> string(16) "10FD0BCC020800A1" [5]=> string(5) "28.56"

czyli tak jak by nie było tego 2 wpisu ;/

0

Wszystkie funkcje mysql_* są zdeprecjowane, wykorzystaj PDO.

0

@Patryk27, o ile oryginalny interfejs MySQL jest zdeprecjonowany to oprócz PDO pozostaje jeszcze MySQLi: http://php.net/manual/en/intro.mysqli.php

0

mysql_fetch_row zwraca JEDEN wiersz, nie wszystkie.

while ($row = mysql_fetch_row()) {
  var_dump($row);
}

Poza tym na forum mamy znaczniki do formatowania i nawet kolorowania kodu - <code class="php">

 ... `<code class="sql"></code></code> itd - a także `backticki` - <code>`tu wpisz tekst`` do podświetlania słów kluczowych między tekstem w linii. **Używaj proszę tych znaczników**, bo posty z kodem wrzuconym "na pałę" nie dość, że są nieczytelne, to jeszcze mogą pokrzaczyć formatowanie na forum (np. komentarze w PHP można zaczynać od `#` - ale hash robi na forum listę wypunktowaną i z kodu będzie masakra).
0

PRzepraszam, że nie umieszczałem kodu w odpowiedni sposób. :)
Wracając do tematu, po wklepaniu:

  $row2 = mysql_fetch_row($wynik2);
while ($row2 = mysql_fetch_row()) {
  var_dump($row2);
}
 echo("Temperatura wewnątrz: ". $row2[5]."°C"."<br />"); 
 

Na stronie nie wyświetla się nawet temp. wewnątrz ;/
Zmieniałem z row2 na row jak kolega napisał - bez efektu nic się nie wyświetlało.
Tzn. row - wyświetla tylko temp wew. row2, nawet danych z bazy z tego polecania nie wyświetla:

  echo("Temperatura wewnątrz: ". $row2[5]."°C"."<br />"); 
0

Odczep się na razie od tego echo ;) i sprawdź czy w var_dump masz to, czego oczekujesz - na tym m.in. polega najprostsze debugowanie.

I wywal to $row2 = mysql_fetch_row($wynik2); przed while, bo z tym na pewno nie będziesz miał w dumpach wszystkiego

0
//$row2 = mysql_fetch_row($wynik2);
while ($row = mysql_fetch_row()) {
 var_dump($row);
}
 echo("Temperatura wewnątrz: ". $row2[5]."°C"."<br />");  

Ani:

 //$row2 = mysql_fetch_row($wynik2);
while ($row2 = mysql_fetch_row()) {
 var_dump($row2);
}
 echo("Temperatura wewnątrz: ". $row2[5]."°C"."<br />"); 

Nic nie wyświetlają. Nawet nie podaje temperatury z tego kodu:

 echo("Temperatura wewnątrz: ". $row2[5]."°C"."<br />"); 
0

A co masz w var_dump? Mówię - zostaw to echo na razie!!!

Zrób zrzut bazy i dołącz do posta - będzie to łatwiej badać mając to u siebie, a nie bazując na strzępkach informacji od Ciebie, kiedy nawet nie wiadomo co siedzi w bazie.

0

Musisz mieć while ($row2 = mysql_fetch_row($wynik2)) { z tym $wynik2.
Inaczej przecież PHP będzie brać wynik ostatniego wykonanego zapytania.

0

funkcją eksportu, nie będę przecież tego przepisywał, powiedz też jak rozpoznać dane z czujnika zewnętrznego

edit: popatrz na post wyżej

0
  //$row2 = mysql_fetch_row($wynik2);
while ($row2 = mysql_fetch_row($wynik2)) {
 var_dump($row);
}

Podane polecenie zawraca NULL NULL.

Natomiast:

  //$row2 = mysql_fetch_row($wynik2);
while ($row2 = mysql_fetch_row($wynik2)) {
 var_dump($row2);
}

Zwraca: array(6) { [0]=> string(5) "13917" [1]=> string(4) "2015" [2]=> string(6) "Aug 31" [3]=> string(8) "09:45:03" [4]=> string(16) "10FD0BCC020800A1" [5]=> string(5) "25.88" } array(6) { [0]=> string(5) "13916" [1]=> string(4) "2015" [2]=> string(6) "Aug 31" [3]=> string(8) "09:45:02" [4]=> string(16) "10D815CC02080022" [5]=> string(5) "28.06" }

Każdy czujnik DS18b20(a jest ich na razie dwa) ma swoje własne ID. Jeden to 10D....., a drugi 10F.....

0

Więc pobiera dobrze. Teraz to wyświetlić w odpowiedni sposób tylko jak ?

0

najlepiej rozbij sobie to na dwa zapytania z rozróżnieniem na czujnik i tyle ;)

0

Kolego drogi gdyby to było proste nie pytałbym :) Niestety PHP i bazy danych to nie moja profesja. O wiele lepiej czuje się z lutownicą w ręku:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1