• 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

Cloud VPS
0 głosów
198 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 (27,830 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ź 158 wizyt
pytanie zadane 19 października 2015 w JavaScript przez Shiro Stary wyjadacz (10,300 p.)
0 głosów
2 odpowiedzi 277 wizyt
pytanie zadane 7 lutego 2018 w JavaScript przez Dorian Bajorek Dyskutant (7,920 p.)
0 głosów
2 odpowiedzi 233 wizyt

93,487 zapytań

142,422 odpowiedzi

322,773 komentarzy

62,908 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

Kursy INF.02 i INF.03
...