Skocz do zawartości

Arduino MEGA i BLYNK, LCD odchodzi do lamusa...


SOYER

Pomocna odpowiedź

Ale co ja mam doprecyzowywać?

Masz stronę działającą.

Masz kod prawie działający.

Masz bazę danych (taką jaką sobie zaprojektowałeś).

Zadanie: złożyć to wszystko do kupy.

Funkcję getCurrentStatus pokazywałem, mam nadzieję że żadnego babola nie strzeliłem bo nawet nie sprawdzałem kodu, ale mniej więcej tak powinna wyglądać.

Zakładam (nie wiem czy słusznie), że jakieś minimum wiedzy o JavaScripcie (lewe kółko boczne) posiadasz, o PHP (prawe kółko boczne) też, więc czas odkręcić boczne kółka od rowerka i spróbować jeździć bez nich (tzn. bez pytania na forum "czemu to nie działa" za każdym błędem składni).

 

 

 

Link do komentarza
Share on other sites

(edytowany)
<?php
include 'logMeteo.php';
$typ = $_GET['nazwa'];
$b = $_GET['mian'];
$polaczenie = new mysqli($host, $db_user, $db_pass, $db_name);
if($polaczenie->connect_errno!=0){
    echo "Error: ".$polaczenie->connect_errno."Opis: ".$polaczenie->connect_error;
}
else{
    function getCurrentStatus($typ) {
    $typ = $mysqli->real_escape_string($typ);
    $sqlTemp="SELECT aktualna FROM meteo WHERE czujnik = '$typ'";
    $temperatura=$polaczenie->query($sqlTemp);
    $polaczenie->close();
    return $temperatura;
    }
    $typ = $_REQUEST['typ'];
    $result = getCurrentStatus($typ);

echo $result."  ".$b;
}

?>

oczywisćie w index.html zmieniłem wysyłaną daną name na taką jak jest nazwany czujnik w tabeli...

Gdzie widzisz błąd? i może małe wytłumaczenie...;-)

Edytowano przez SOYER
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Pomijając fakt deklaracji funkcji w bloku else...

Co zwraca mysqli::query?

Porównaj swój kod z tym, który pokazałem...

Jakbyś nie doszedł do tego gdzie jest różnica - zajrzyj tutaj...

Tak na przyszłość - konstruuj to nieco inaczej:

<?php
  
  // tu jest miejsce na jakieś inicjalizacje, np. mysqli
  // przykładowo:
    require_once "data.php";
    $polaczenie = new mysqli($host, $db_user, $db_pass, $db_name);
    if($polaczenie->connect_errno!=0) {
    	die("Error: ".$polaczenie->connect_errno."Opis: ".$polaczenie->connect_error);
    }

  // tu już mamy pewność że połączenie jest prawidłowe.
  // wrzucamy deklaracje funkcji...
function cośtam($parametr)
{
  global $polaczenie;
  ...
}

// i na koniec jakiś kod wykonywany poza funkcją

echo cośtam($jakiśparametr);

?>

Chodzi wyłącznie o czytelność.

  • Lubię! 1
Link do komentarza
Share on other sites

<?php
include 'logMeteo.php';
$typ = $_GET['nazwa'];
$b = $_GET['mian'];
$polaczenie = new mysqli($host, $db_user, $db_pass, $db_name);
if($polaczenie->connect_errno!=0){
    die("Error: ".$polaczenie->connect_errno."Opis: ".$polaczenie->connect_error);
}

    function getCurrentStatus($typ) {
    global $polaczenie;
    $typ = $mysqli->real_escape_string($typ);
    $sqlOdczyt="SELECT aktualna FROM meteo WHERE czujnik = '${typ}'";
    $odczyt=$polaczenie->query($sqlOdczyt);
    $polaczenie->close();
    return $odczyt;
    }
    $typ = $_REQUEST['typ'];
    $result = getCurrentStatus($typ);

echo $result."  ".$b;

Zapomnialem o nawiasach  w '${typ}' , zmieniłem układ kodu...

$polaczenie->query ma zwrócić zawartość komórki z tabeli...

Link do komentarza
Share on other sites

10 minut temu, SOYER napisał:

$polaczenie->query ma zwrócić zawartość komórki z tabeli...

To chyba pobożne życzenie... zajrzałeś do linku który podałem? Czy może zajrzałeś i skończyłeś na piątej linijce bo było nudne? Więc pozwól że zacytuję:

Zwracane wartości

Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object. For other successful queries mysqli_query() will return TRUE.

 

Edytowano przez ethanak
Link do komentarza
Share on other sites

Kur... czytać nie umiesz? Na link do mysqli_result to już nie chciało się wleźć?

Obiekt mysqli_result to obiekt mysqli_result, a nie jakieś wydumane komórki z tabeli. Miałeś kod na talerzu podany - nie, mimo że nie masz zielonego pojęcia o co chodzi musiałeś sobie o dwie linijki uprościć bo za dużo pisania?

Wybacz, ja naprawdę nie mam czasu kopiować Ci na forum kawałków dokumentacji, które powinieneś dawno przeczytać.

Tak ostatni raz:

Rezultat wywołania query to iterator, za pomocą którego możesz sobie wyciągnąć (właśnie poprzez fetch_*) kolejne wiersze wyniku. Pamiętaj, że query wcale nie musi zwrócić jednego wiersza, może być ich od zera do "bardzo dużo" (przy czym zero to wcale nie błąd).

Przemyśl sobie co by było, gdybyś zadał pytanie "select * from meteo".

 

  • Lubię! 1
Link do komentarza
Share on other sites

(edytowany)
<?php
include 'logMeteo.php';
$typ = $_GET['nazwa'];
$b = $_GET['mian'];
$polaczenie = new mysqli($host, $db_user, $db_pass, $db_name);
if($polaczenie->connect_errno!=0){
    die("Error: ".$polaczenie->connect_errno."Opis: ".$polaczenie->connect_error);
}
   $typ = $_REQUEST['typ'];
    function getCurrentStatus($typ) {
      global $polaczenie;
      $typ = $mysqli->real_escape_string($typ);
      $sqlOdczyt="SELECT aktualna FROM meteo WHERE czujnik = '${typ}'";
      $odczyt=$polaczenie->query($sqlOdczyt);
$row = $odczyt->fetch_row();
      $odczyt->close();
      return $row[0];
    }

   $result = getCurrentStatus($typ);

echo $result.$b;

Nic nie upraszczałem panie nerwowy, sprawdzałem obie wersje i obie nie działają, wkleiłem najpierw jedną to mnie opierdo... a teraz wkleiłem drugą i też czekam na opierd... 😉

Może gdybyśmy razem uwazniej czytali ten wątek, to ja wiedziałbym o co ci chodzi kiedy mnie pytasz czy umiem czytać, a ty wiedziałbyś, że mój angielski jest taki sobie, i zamiast rzucać kurw... to byś wytlumaczył mniej więcej co robią nowe funkcje i podał link do doczytania. Bo tak to masz rację, wklejam i domyślam sie co to powinno robić...;-)

 

Edytowano przez SOYER
Link do komentarza
Share on other sites

No właśnie tak... ja przecież nie mam dostępu do Twojej malinki więc nie sprawdzę, prawda? Muszę polegać na tym co mi piszesz.

A więc jeszcze raz: działa czy nie? Pokazuje prawidłowe wartości z bazy danych?

Link do komentarza
Share on other sites

(edytowany)

 

Nie pokazuje, jakby pokazywało to bym nie zawracał głowy...

Wrzuciłem to na XAMPPa u mnie w laptopie, w logMeteo zmieniłm $host = "192.168.254.100"; to mam komunikat , że nie można nawiązać połączenia bo komputer docelowy aktywnie go odmawia...

17 minut temu, SOYER napisał:

Jak to to sprawdzić?

Czyli jak sprawdzic te błędy...

Edytowano przez SOYER
Link do komentarza
Share on other sites

Czekaj, bo nie bardzo rozumiem.

Bazę danych masz na malince, a uruchamiasz stronę na Windowsie, tak?

Jeśli nie możesz nawiązać połączenia z bazą to znaczy, że użytkownik którym się logujesz nie ma prawa się z nią łączyć. Musisz stworzyć użytkownika dla swojej sieci a nie localhosta (w phpmyadminie jak się na roota zalogujesz to masz różne opcje, jeśli nie rozumiesz żadnej to wybierz '%' czyli dowolny host).

Bo jak mniemam na samej malince działa?

edycja

Dobra... pokaż gdzie na githubie masz najnowszą wersję strony, zainstaluję u siebie i zobaczę co mu nie pasuje.

 

Edytowano przez ethanak
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.