Wątek przeniesiony 2019-01-12 02:57 z Edukacja przez somekind.

Witam, potrzebuje pomocy i nie do konca wiem gdzie moglem opublikowac ten wpis

0

mam pytanie czy znacznik php moze byc wyswietlany w znaczniku <script></script> za pomoca document.getElementById("").innerHTML=; ?
mam niedlugo e14 i tak sobie robie rozne glupie rzeczy. Niby mi to działą, ale nie wiem czy to do konca moze tak byc zawarte. Nizej wkleje kawalek kodu z arkusza troche przerobione to jest bo chcialem sprawdzic niektore rzeczy:

<body>

Ogłoszeniodawcy

<script> function walidacja() { document.getElementById("p").innerHTML= " <?php $pol=new mysqli('localhost','root','','ogloszenia'); $zap1='select id, imie, nazwisko, email from uzytkownik where uzytkownik.id<4'; $wzap1=mysqli_query($pol,$zap1); while($row=mysqli_fetch_array($wzap1)) { $id=$row['id']; $zap2="select tytul from ogloszenie where uzytkownik_id='$id' limit 1"; $wzap2=mysqli_query($pol,$zap2); $row2=mysqli_fetch_array($wzap2); echo "

".$row['id']." ".$row['imie']." ".$row['nazwisko']."

"; echo "

".$row['email']."

"; echo "

"."Ogłoszenie: ".$row2['tytul']."

"; } mysqli_close($pol); ?> "; } </script>
 <form action="#" onsubmit="return walidacja()">
         <input type="submit">
         <p id="p"></p>
 </form>
0

Raczej nie ma takiej opcji.

Zwróć uwagę, że PHP jest przetwarzane po stronie serwera. Apache (albo cokolwiek innego masz zainstalowane) wczytuje plik PHP, następnie go przetwarza i na jego podstawie generuje dane (na ogół jest to strona w HTML, aczkolwiek można generować coś innego, chociażby grafiki), które zostają przesłane do przeglądarki (lub innego programu/usługi nasłuchującej "po drugiej stronie").

Z kolei JavaScript (czyli to, o czym piszesz - treść zawarta w znacznikach <script> .... </script>) jest przetwarzane już nie na serwerze, ale po stronie przeglądarki/klienta. W związku z tym za bardzo nie widzę możliwości, żeby JavaScript zwracał treść PHP. Albo inaczej - może zwrócić, ale nie ma za bardzo opcji, żeby ta treść została przetworzona tak, jak się przetwarza "standardowo" PHP na serwerze.

Po pierwsze - napisz może, co konkretnie chcesz osiągnąć, może wyczarujemy jakieś inne rozwiązanie.

A po drugie - do takiego dynamicznego działania można skorzystać z AJAX - https://pl.wikipedia.org/wiki/AJAX. Po stronie przeglądarki masz JavaScript, który odpytuje serwer (czyli, wprawdzie nie bezpośrednio, ale wykonuje operacje na serwerze), a na serwerze masz PHP, który nasłuchuje, czego się od niego chce i zwraca treści, które zostają wyświetlone w przeglądarce.

EDIT: Chyba, że chodzi Ci o jedynie wyświetlenie w przeglądarce samej treści skryptu PHP - nie jego wykonanie, ale wyświetlenie. To jest możliwe. Dlatego proszę ponownie - napisz, co chcesz konkretnie osiągnąć.

0
Zakręcony Kot napisał(a):

mam pytanie czy znacznik php moze byc wyswietlany w znaczniku <script></script> za pomoca document.getElementById("").innerHTML=; ?

Jak najbardziej. Z tym zastrzeżeniem, że to ci wyświetli zawsze wartość odczytaną z bazy i wpisaną na sztywno do funkcji JS w momencie ładowania strony, a nie aktualną zawartość bazy, która do momentu wywołania tej funkcji mogła się zmienić.

No i nie da się też tą metodą przekazać jako parametr funkcji JS, tego co ma być odczytane, bo j.w.

1

Z kodu wnioskuję, że autor chciał w momencie zgłoszenia formularza zrobić walidację, czy też może pobranie i wyświetlanie danych, server-side.
Masz co najmniej 2 opcje:

  1. Reload: Rezygnujesz z JS w tym zakresie, robisz akcję HTTP GET do tej samej podstrony, a PHP po stronie serwera renderuje ponownie HTML, oczywiście z IFem sprawdzającym, czy zmienna globalna $_GET jest ustawiona zgodnie z przesłanym formularzem. Jeśli IF spełniony, to sięgasz do bazy i robisz co tam potrzebujesz, np. wypisujesz te dane z bazy.

  2. AJAX: Sięgasz przy pomocy JS do dedykowanego skryptu PHP, który Ci oblicza i zwraca po stronie serwera dane albo wręcz HTML tylko w tym małym zakresie. Czytasz całą zawartość takiej innej, dedykowanej strony za pomocą JSa/AJAXa i wklejasz do HTMLa.

Oczywiście to takie propozycje godne początkującego, pewnie są jakieś lepsze rozwiązania.

0

@Tig: Ale żebyśmy mieli zgodność - raczej nie ma opcji, żeby z poziomu JS po stronie klienta odpalić skrypt PHP na serwerze (nie licząc AJAX'a) - zgadzasz się ze mną?

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