Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> wyświetlanie informacji w DIV w zależności od zmiennych PHP
topcio
post 15.11.2017, 16:02:39
Post #1





Grupa: Zarejestrowani
Postów: 140
Pomógł: 0
Dołączył: 14.01.2017

Ostrzeżenie: (0%)
-----


Witajcie

Borykam się z problemem, jak zrobić by zależności od tego co powie php podmieniany był DIV a nie przeładowywana cała strona

strona projektu

http://cctv-online.pl

Zerknijcie o co mi chodzi,
w tym momencie kiedy podane jest błędne hasło albo login strona się przeładowuje, a docelowo ma być tak, że podmieniany będzie tylko ten div co ma bg czerwone, tak jak to zrobiłem w przypadku włączenia CapsLock i chęci wpisania hasła.

Nie wiem jak to ugryźć, bo informacji jest kilka?
Czy ma to być zrobiona w Javie czy po stronie serwera, jak do tej pory.

Wszelkie sugestie i podpowiedzi mile widziane

Pozdrawiam Tomek

Czy dobrze myślę, że powinienem zrobić tak aby po kliknięciu nie przekierowywał na początek strony tylko, do jakiegoś CASE, który będzie w zależności od wyników PHP otrzymywał daną zawartość w div o takim samym ID, a potem w css zrobić taki szablon dla tego jednego DIVa. I zrobić to JS

Ten post edytował topcio 15.11.2017, 16:03:25
Go to the top of the page
+Quote Post
viking
post 15.11.2017, 16:13:29
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Poczytaj o ajax. I na ma pewno nie ma to być zrobione w javie tylko javascript.


--------------------
Go to the top of the page
+Quote Post
topcio
post 16.11.2017, 00:06:01
Post #3





Grupa: Zarejestrowani
Postów: 140
Pomógł: 0
Dołączył: 14.01.2017

Ostrzeżenie: (0%)
-----


Wiem, że JS a nie Java - napisałem skrót myślowy smile.gif
Nie da się tego zrobić bez AJAXa, jakoś mi nie po drodze w tej chwili opanowywać AJAXa
Go to the top of the page
+Quote Post
viking
post 16.11.2017, 05:50:17
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Jeśli nie chcesz przeładować całej strony to inaczej się nie da.
https://prophp.pl/advice/show/20/pierwsze_k..._i_czym_jest%3F


--------------------
Go to the top of the page
+Quote Post
topcio
post 19.11.2017, 20:37:06
Post #5





Grupa: Zarejestrowani
Postów: 140
Pomógł: 0
Dołączył: 14.01.2017

Ostrzeżenie: (0%)
-----


Witam

Przeprosiłem się do AJAXa, udało się, ale mam pewien problem.
Od rana szukam rozwiązania ale jakoś bez skutecznie

Otóż jeden ze skryptów JS siedzi w pliku ładowanym przez AJAX, i tu jest problem nie wiem jak zrobić by się on wykonał po wczytaniu.

Proszę o pomoc.
Go to the top of the page
+Quote Post
trueblue
post 19.11.2017, 22:06:44
Post #6





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


  1. eval(element_w_ktorym_jest_odpowiedz_z_ajaxa.querySelector('script').innerHTML);


--------------------
Go to the top of the page
+Quote Post
topcio
post 19.11.2017, 22:48:01
Post #7





Grupa: Zarejestrowani
Postów: 140
Pomógł: 0
Dołączył: 14.01.2017

Ostrzeżenie: (0%)
-----


próbowałem, ale albo jestem zbyt tępy na to albo coś źle robię

wpisuję to w plik zewnętrzny scripts.js, który jest ładowany w head - czy tak ma być questionmark.gif
od razu po nawiasie wpisuję id diva questionmark.gif

w konsoli dostaję:
scripts.js:92 Uncaught TypeError: Cannot read property 'querySelector' of null
at scripts.js:92
scripts.js:92 Uncaught TypeError: Cannot read property 'innerHTML' of null
at scripts.js:92

Ten post edytował topcio 19.11.2017, 22:51:28
Go to the top of the page
+Quote Post
trueblue
post 19.11.2017, 22:53:55
Post #8





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Wywołujesz po tym jak wstawisz odpowiedź do danego elementu.
Zobacz na czym operuje metoda querySelector: https://developer.mozilla.org/pl/docs/Web/A...t/querySelector


--------------------
Go to the top of the page
+Quote Post
topcio
post 20.11.2017, 02:32:54
Post #9





Grupa: Zarejestrowani
Postów: 140
Pomógł: 0
Dołączył: 14.01.2017

Ostrzeżenie: (0%)
-----


sorki, ale nie potrafię tego zrozumieć. Czy mogę prosić o łopatologiczne wytłumaczenie tego zagadnienia.
Go to the top of the page
+Quote Post
viking
post 20.11.2017, 03:08:23
Post #10





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Poczytaj o jsonp.
Kod ma być wywołany na done (jqury). Zależy co tam użyłeś.


--------------------
Go to the top of the page
+Quote Post
topcio
post 20.11.2017, 03:51:25
Post #11





Grupa: Zarejestrowani
Postów: 140
Pomógł: 0
Dołączył: 14.01.2017

Ostrzeżenie: (0%)
-----


zrobiłem trochę na około ale efekt, którego oczekiwałem

  1. function LoginTest() {
  2. request = "";
  3. request = new XMLHttpRequest();
  4. var InputLogin = document.getElementById("input_login").value;
  5. var InputPass = document.getElementById("input_pass").value;
  6. var post = "user_login=" + InputLogin + "&user_pass=" + InputPass;
  7. var url = "../php_function/user_check.php";
  8. request.onreadystatechange = LoginTestRequest;
  9. request.open("POST", url, true);
  10. request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  11. request.send(post);
  12. }
  13. id=document.getElementById('user_blocked_time')
  14. function odliczaj(id,sek){
  15. seconds = Math.floor(sek)%60;
  16. minutes = Math.floor(sek/60)%60;
  17. id.innerHTML=((minutes < 10) ? '0' + minutes : minutes)+ ':' +((seconds < 10) ? '0' + seconds : seconds);
  18. if(sek>0)setTimeout(function(){
  19. odliczaj(id,--sek)
  20. },1e3)
  21. }
  22.  
  23. function LoginTestRequest() {
  24. if(request.readyState == 4 && request.status == 200) {
  25. if(request.responseText == "User Logged IN") {
  26. window.location = "index.php";
  27. }
  28. if (!isNaN(request.responseText)){
  29. $("#login_message_one").empty();
  30. var time_to_unlock = request.responseText;
  31. var newdiv = document.createElement('div');
  32. newdiv.setAttribute("class", "div_testowy");
  33.  
  34. var script = document.createElement('script');
  35. script.setAttribute("language", "javascript");
  36. script.innerHTML = "odliczaj(user_blocked_time, " + time_to_unlock + ");";
  37. newdiv.appendChild(script);
  38. var newspan = document.createElement('span');
  39. newspan.setAttribute("id", "user_blocked_time");
  40. newdiv.appendChild(newspan);
  41.  
  42. document.getElementById('login_message_one').appendChild(newdiv);
  43. }
  44. else {
  45. document.getElementById("login_message_one").innerHTML = request.responseText;
  46. }
  47. }
  48. else {
  49. document.getElementById("login_message_one").innerHTML = request.status+" "+request.statusText;
  50. }
  51. }
  52.  


Jeszcze trochę muszę dopisać, ale już prawie jest cel

Go to the top of the page
+Quote Post
viking
post 20.11.2017, 07:40:28
Post #12





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Mieszasz jquery z czystym js. Zdecyduj się co chcesz używać. Albo sobie ułatwiasz życie, albo rezygnujesz z jquery.


--------------------
Go to the top of the page
+Quote Post
topcio
post 20.11.2017, 10:53:06
Post #13





Grupa: Zarejestrowani
Postów: 140
Pomógł: 0
Dołączył: 14.01.2017

Ostrzeżenie: (0%)
-----


to tylko jedna rzecz w jquery, ale masz rację poprawię na zwykłe js.
Ach i pytanko, może wiecie czemu to nie działa w IE, w pozostałych jest OK. Chrome, ff, opera.

Ten post edytował topcio 20.11.2017, 10:58:51
Go to the top of the page
+Quote Post
viking
post 20.11.2017, 10:54:52
Post #14





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Więc jaki sens osadzania dodatkowego kodu na stronie skoro jedna rzecz? Chociaż myślę że akurat tobie na początek w drugą stronę by bardziej pasowało. Nie ma co ukrywać że pisze się łatwiej i nie pewnie nie było by nullem.


--------------------
Go to the top of the page
+Quote Post
topcio
post 20.11.2017, 22:59:56
Post #15





Grupa: Zarejestrowani
Postów: 140
Pomógł: 0
Dołączył: 14.01.2017

Ostrzeżenie: (0%)
-----


mówisz, że w jquery pisze się łatwiej?
Tylko najpierw muszę bardziej opanować czystego js, bo za chwilę zrobi mi się w głowie sieczka. Wcześniej się tym nie zajmowałem, robiłem tylko w php, trochę w VB. Teraz musiałem zacząć poszerzać wiedzę o css, js, pewnie jeszcze coś się znajdzie.


No to pojawił mi się jeszcze jeden problem.
Mianowicie. Wszystko ładnie działa gdy js jest włączone w przeglądarce ale gdy wyłączę to już nie jest tak pięknie.

  1. case 'log_in':
  2. $users->cookie_form();
  3. echo "<div id=\"wrapper\">";
  4. echo "<header>";
  5. echo "<div class=\"login\">";
  6. echo "<div class=\"test\">";
  7. echo "SYSTEM ZARZĄDZANIA MONITORINGIEM";
  8. echo "</div>";
  9. echo "<div class=\"test\">";
  10.  
  11.  
  12.  
  13. echo "<form id=\"form_login\" method=\"post\">";
  14.  
  15.  
  16.  
  17. echo "<script type=\"text/javascript\"><!--document.write('<input type=\"hidden\" name=\"js\" value=\"1\">');//--></script>";
  18. echo "<noscript><input type=\"hidden\" name=\"js\" value=\"0\"></noscript>";
  19.  
  20.  
  21. echo "<span id=\"span_login\">LOGOWANIE</span>";
  22. echo "<div class=\"text_login\">";
  23. echo "<span class=\"login\">Login: </span>";
  24. echo "<input class=\"login\" id=\"input_login\" type=\"text\" placeholder=\"Login\" name=\"user_login\" value=\"" . ((isset($_COOKIE['user_login'])) ? $_COOKIE['user_login'] : '' . ((isset($_POST['user_login'])) ? ($_POST['user_login']) : '' ) . '' ) . "\">";
  25. echo "</div>";
  26. echo "<div class=\"text_login\">";
  27. echo "<span class=\"login\">Hasło: </span>";
  28. echo "<input class=\"login\" id=\"input_pass\" type=\"password\" placeholder=\"Hasło\" onkeypress=\"capLock(event)\" name=\"user_pass\" value=\"\">";
  29. echo "</div>";
  30. echo "</div>";
  31. echo "<div class=\"test\">";
  32. echo "<span id=\"info\" style=\"visibility:hidden\">INFORMACJA</span>";
  33. echo "<span id=\"login_message_one\"></span>";
  34. echo "</div>";
  35. echo "<div class=\"test\">";
  36. echo "<button id=\"submit\" class=\"submit_button\" type=\"button\" form=\"form_login\"><span class=\"submit\">LOGIN</span></button>";
  37.  
  38. echo "</form>";
  39.  
  40.  
  41.  
  42. echo "</div>";
  43. echo "<div class=\"test\" id=\"CapLock\">";
  44. echo "CAPS LOCK IS ON";
  45. echo "</div>";
  46. echo "</div>";
  47. echo "</header>";
  48. echo "</div>";
  49. break;
  50.  



I nie działa submit po wciśnieciu enter.
Wiem czemu, bo w formularzu nie ma action ani w button nie ma formaction.
Gdy jednak to wpiszę to enter działa, ale wszystkie info zamiast pojawiać się ajaxem w wyznaczonym DIV pojawiają się w nowo otwartym oknie jako wynik funkcji php.
Jak to ze sobą pogodzić.

Czego oczekuję.
Enter dla formularza ma działać.
Po przesłaniu formularza php sprawdza najpierw czy jest włączona javascript, jeśli tak wykonuje swoje, jeśli nie wyświetla info i też wykonuje swoje ale bez obsługi js.
Jest to do osiągnięcia?

Go to the top of the page
+Quote Post
viking
post 21.11.2017, 08:16:29
Post #16





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Ty poważnie tak piszesz? 40 linijek oddzielnie echowanych z czego jedna potrzebuje php?
button nie jest type=submit więc co sie ma wysłać.


--------------------
Go to the top of the page
+Quote Post
topcio
post 21.11.2017, 12:07:31
Post #17





Grupa: Zarejestrowani
Postów: 140
Pomógł: 0
Dołączył: 14.01.2017

Ostrzeżenie: (0%)
-----


Tak, poważnie tak piszę, a jest w tym jakiś błąd? Po za tym, że mam więcej do napisania. Z tym, że to jest tylko wycinek pliku, jeden mały formularz, reszta pliku jest w php pisana.
Ale rzeczywiście wolę napisać echo niż zamykać phpa, potem go otwierać, albo pisać kod w kilku liniach bez echa.


A wracając do problemu, masz rację nie jest submit, ale gdy go zrobię submit to przy entarze odświerza mi całą stronę

Ten post edytował topcio 21.11.2017, 12:10:03
Go to the top of the page
+Quote Post
viking
post 21.11.2017, 12:14:39
Post #18





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Skoro robisz to na wyłączonym JS (przynajmniej tak zakładam z wcześniejszego posta) to czego się spodziewasz? event.preventDefault nie zadziała.
Problem taki że dajesz parserowi mase niepotrzebnej pracy. No i wygląda tragicznie.
Poza tym w PHP7
$_COOKIE['user_login'] ?? $_POST['user_login'] ?? ''


--------------------
Go to the top of the page
+Quote Post
topcio
post 21.11.2017, 12:35:52
Post #19





Grupa: Zarejestrowani
Postów: 140
Pomógł: 0
Dołączył: 14.01.2017

Ostrzeżenie: (0%)
-----


Myśle, że to kwestia przyzwyczajenie. Dla mnie jest to czytelne. I tak mi się lepiej pisze.

Sprawdzam na włączonym i wyłączonym JS.
Go to the top of the page
+Quote Post
viking
post 21.11.2017, 12:59:14
Post #20





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Poważnie taka sieczka jest dla ciebie czytelna? Nieźle. Już nawet można to było wyrzucić do zewnętrznego pliku i zaincludować a tam tylko zostawić jedną linię.
Domyślną akcją formularza jest wysyłka. Jak nie ma kodu JS który ją blokuje to jest prawidłowe działanie przeglądarki.


--------------------
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 16:28