• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Funkcja JS czasem pokazuje elementy na stronie a czasem nie

Object Storage Arubacloud
0 głosów
110 wizyt
pytanie zadane 21 sierpnia 2023 w JavaScript przez Reapel Początkujący (320 p.)
zmienione kategorie 21 sierpnia 2023 przez Reapel

Cześć, mam taki oto problem. Mam dodane urzadzenia do bazy danych wraz z ich lokalizacjami wirtualnymi. No i mam problem taki że gdy próbuje wywołać funkcje zmiany widoku to lokalizacji to cala strona się crashuje. W php jakims depeściakiem to nie jestem a raczej dopiero go poznaje. Wydaje mi się że mam jakiś problem składniowy z którego nie zdaję sobie sprawy. Czy mógłby zerknać na ten kodzik jakis kocur php'a? Z góry dziękie :D Poniżej kodzik i link do serwera.(trzeba sie bedzie zalogowac admin:admin). Gdy kliknie się na zmianę lokalizacji to przeciąza serwer.

Aplikacja: http://way.buildin.site/ermos_cloud_test/zalogowany.php

 

// Pobieranie lokalizacji dodanych przez uzytkownika

$sql = "SELECT DISTINCT lokalizacja FROM Urzadzenia WHERE id_uzytkownika = $id";


$result = $conn->query($sql);
$lokalizacjeDiv = "<div id='rooms'><div class='room' onclick='room_content()' ><img style='width:40px;height:40px;' src='icons/rooms/fav_col.png' ></div>";
$devlocation ="<div class='devicesContainer'>";
if ($result->num_rows > 0) {
    // Wyświetlenie lokalizacji urządzeń
    while ($rowl = $result->fetch_assoc()) 
    {
        $devlocation .= "<div class='" . $rowl['lokalizacja'] . " devhide'  >";
        $lokalizacjeDiv .= '<div class="room" onclick="room_content()" name="'.$rowl["lokalizacja"].'" ><img style="width:40px;height:40px;" src="icons/rooms/'.$rowl["lokalizacja"].'_col.png" ></div>';
        
        $sqldev = "SELECT nazwa_urzadzenia, typ, id_urzadzenia FROM Urzadzenia WHERE id_uzytkownika = $id ";
$wynik = $conn->query($sqldev);
        while ($row = $wynik->fetch_assoc()) {

    $devlocation .= "<div  onclick='send_message()'  id='".$row['id_urzadzenia']."' name='".$row['id_urzadzenia']."'  class='device' >".$row['nazwa_urzadzenia']."<div class='status' ></div></div>";
 


}
$devlocation.="</div>";
    }
       
    
} 
$lokalizacjeDiv .= "</div>";
$devlocation.="</div>";

 

komentarz 21 sierpnia 2023 przez wizarddos Nałogowiec (25,930 p.)

$sql = "SELECT DISTINCT lokalizacja FROM Urzadzenia WHERE id_uzytkownika = $id";

Skąd się bierze id?

Nie masz może w pliku error.log/ na stronie żadnych błędów?

komentarz 21 sierpnia 2023 przez Reapel Początkujący (320 p.)
$id jest implementowane wczesniej ze zmiennej sesyjnej i to normalnie działało natomiast problem pojawił się w tej wewnętrzej pętli tak jakbym w zły sposób operował na cudzysłowiach. samo zczytywanie danych o uzytkowniku działa poprawnie tylko problem jest tak jakby z łączeniem tego jako <div>
komentarz 21 sierpnia 2023 przez Reapel Początkujący (320 p.)
przeniesione 21 sierpnia 2023 przez Comandeer

Podszedłem do tego tematu troszeczke inaczej i zamiast tworzyć divy o nazwie pomieszczeń dodaje nazwe pomieszczenia jako klase do urzadzenia. Pojawił mi się natomiast problem z JS, że czasem się pojawiają te urzadzenia a czasem nie. Nie mam pojęcia od czego to zależy. Poniżej podsyłam link do strony(l:admin h:admin na któej zobaczycie o co konkretnie chodzi oraz skrypt js funkcji i budowę divów dla urzadzeń.

 

http://way.buildin.site/ermos_cloud_test/test.php

 

 function show_room(){
        const room = event.target;
  const location = room.getAttribute('name');
    
            var show = document.getElementsByClassName('device '+location);
for (var i=0;i<show.length;i+=1){
  show[i].style.display = 'flex';
}
    }
    
     function room_content() {
        
   
    
    var hide = document.getElementsByClassName('device');
for (var i=0;i<hide.length;i+=1){
  hide[i].style.display = 'none';
}
     
show_room();

     }
    
<div id='devicesContainer'>
<div  onclick='send_message()'  id=1 name=1  class='device livingroom' >R1<div class='status' ></div></div>
<div  onclick='send_message()'  id=2 name=2  class='device livingroom' >Sensor<div class='status' ></div></div>
<div  onclick='send_message()'  id=4 name=4  class='device bedroom' >LED<div class='status' ></div></div>
<div  onclick='send_message()'  id=6 name=6  class='device livingroom' >LED<div class='status' ></div></div>
<div  onclick='send_message()'  id=7 name=7  class='device kitchen' >Oświetlenie<div class='status' ></div></div>
<div  onclick='send_message()'  id=8 name=8  class='device livingroom' >Ogrzewanie<div class='status' ></div></div>
<div  onclick='send_message()'  id=9 name=9  class='device kitchen' >Ogrzewanie<div class='status' ></div></div>
<div  onclick='send_message()'  id=10 name=10  class='device hall' >LED<div class='status' ></div></div>
<div  onclick='send_message()'  id=11 name=11  class='device room' >Kinkiet<div class='status' ></div></div>
<div  onclick='send_message()'  id=14 name=14  class='device bedroom' >Temperatura<div class='status' ></div></div>
<div  onclick='send_message()'  id=16 name=16  class='device kitchen' >Audio<div class='status' ></div></div>
<div  onclick='send_message()'  id=17 name=17  class='device garden' >Ogrod<div class='status' ></div></div>
</div>
    

 

komentarz 21 sierpnia 2023 przez Reapel Początkujący (320 p.)
dobra do zamkniecia, zapomnialem ze jezeli kliknę na ikonę która jest wewnątrz tego diva do funkcja js pobierze dane o tym parametrze a nie o bloczku.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 105 wizyt
pytanie zadane 19 października 2015 w JavaScript przez Shiro Stary wyjadacz (10,300 p.)
0 głosów
2 odpowiedzi 195 wizyt
pytanie zadane 7 lutego 2018 w JavaScript przez Dorian Bajorek Dyskutant (7,920 p.)
0 głosów
2 odpowiedzi 162 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...