Pozivanje php funkcije pomoću <a href>

Je l’ se sigurno promijenio kod?
Da se nije stranica keširala?
Otvori u private browsing modu i testiraj. Manje bi me iznenadilo da si im’o neku grešku u browser JS konzoli nego da se ništa nije promjenilo.

Samo malo, ti očekuješ da se php funkcija upis() izvrši onog momenta kada netko klikne na taj link?
E vidiš, ako je tako…tu puno griješiš. …a griješiš upravo u onome što te želim navesti da sam shvatiš.

Zato ću ponoviti pitanje i zamolbu, a to je da ručno napišeš kakav HTML želiš da vidi browser.
Ponavljamo gradivo, browser ne vidi php tagove (jer oni niti ne stižu do njega!) …sve što je unutar php tagova se još na serveru projecira u nekakav HTML code koji stiže do browsera.

Ti moraš imati čistu sliku u glavi tog HTML-a, da bi uopće mogao početi kucati PHP code i razmišljati o tome kakav će HTML nastati kao rezultat obrade HTML+PHP.

Zato kratko i jasno, kakav HTML želiš da vidi browser? Napiši ga ručno ovdje.

Kada sam u onom svom kodu stavio href='#' (umjesto poziva php funkcije) radi brisanje iz liste. A kada u ovom tvom kodu promijenim isto, ne briše iz liste.

Otvori inspect element (Cmd + Opt +J / Ctrl + Shift + J) pa u Console tabu vidi koju grešku daje pri toj akciji.

ovo je nakon otvaranja stranice:

SyntaxError: unexpected token: ‘{’
[orders1.php:58:26]

  1. linija je:
    hideIdElement (elemId) {

a nakon klika na neku (tj. 2. po redu) od strelica:

ReferenceError: hideIdElement is not defined
[orders1.php:1:1]

  1. linija je:
    hideIdElement("dname2")

Oops

function hideIdElement (elemId) {
  /** rest of code */
}

Dakle, kod je sad ovakav:

<script>
function hideIdElement (elemId) {
	return function (e) {
		e.preventDefault(); // this will stop default browser behavior
		document.getElementById(elemId).style.display = "none";
	};
};
</script>

Ali nije se promijenilo… :lying_face:

Samo malo deskriptivnije jer ne mogu tol’ko zamisliti k’o, šta, gdje. :slight_smile:
Radiš li u private browsing window-u?
Ugasi browser, pa upali opet (Private Browsing da budeš siguran da se Cache izbris’o) .

Je li “private browsing window” ustvari “New Private Window” u browseru?

A kad gasim/palim browser zadržavam dosta starih tab-ova. Pa ako to ne smeta, sa žaljenjem konstatujem da se ništa nije promijenilo…

Da, al’ da bi bio siguran da ti neće uticati neki prethodni Cache, treba to biti prvi otvoreni/restartovani.
Drugim riječima, ako već imaš otvoren jedan New Private Window, idući još jednom na New Private Window ti ustvari neće biti private window.
Teško je ovako dalje.
Proberi šta ti nije bitno, tj. sve što smiješ pokazati i postavi kod na GitHub.
Ne vrijedi ovako, jer se radi 0.5 ‰ charry-picking šta bi moglo biti.
Ne znam za druge al’ ovo gore koda mi nije dovoljno za tu PHP/JS/HTML špagetu (NHF).
Sve što možeš (ne trebaš ostavljati nikakve credentials/passwords), napravi repositorium na Github-u.

Najbolje da ti taj kod dignes na hosting i posaljes link i rjesimo ti?
Jer ovako je samo naglabanje.

Na hostingu će sav PHP kod biti naglabanje.

@tpojka hvala, drug, na odvojenom vremenu, cijenim kao da si i riješio.
@Sacir_Satko ako bi hosting riješio to bi mi bilo lakše nego GitHub.
@bozoou izvini što sam zapostavio tvoju intervenciju, danas mi je bila prevelika gužva za multitasking, ali vratim se kasnije na tvoje sugestije.

Hajde da probam ovako…

Imam orders1.php i u njemu liniju
require "ordersfun.php";

Jedna od linija unutar ordersfun.php počinje sa:
<a href='<?php upis(); ?>' (zanemarimo sad ostatak unutar <a> taga)

Kada u browseru pokrenem orders1.php očekujem da href sadrži nekakav link, ali inspect element pokazuje:
<a href=""

Dakle, miriše na problem… :grin:

Pa netko ti je vec napisao, da ti funkcija mora vratiti vrijednost i moras imati echo.

U link stavi php file.

A u tom php file-u napravi obradu.

Ako dodje upis, pozivas funkciju upis i spremas podatke. Ako dodje dohvati, dohvacas podatke.

Ovo je laicki receno.

Kakav link očekuješ da bude i kako misliš da će taj link nastati iz php funkcije upis() ?

Molim te budi precizan, ne možeš očekivati “nekakav” link … u programiranju moraš točno znati što očekuješ.

Opet te pozivam da napišeš ručno točno kakav HTML očekuješ da vidi browser?
Ako nemaš tu sliku, zapitaj se, kako bi iz tvog codea mogao ispast “nekakav” HTML za koji i sam neznaš točno kakav je…ali bi trebao radit? To nema baš smisla.

Ti si ovdje pretpostavio da će taj link nekom magijom pozivati funkciju upis …bome i oće, ali sigurno ne na način koji si zamislio. Otom potom.

Prvo razjasnimo još jednom da kada god kucaš PHP/HTML …do browsera će stići samo HTML. Php tagovi se obrađuju još na serveru i browser ih ne može vidjeti…jer u onome što stiže do browsera tih tagova fizički više nema.
Zato ti moraš imati jasnu sliku HTMLa koji kreiraš pomoću PHPa.
Ako nemaš sliku HTMLa koji ti je potreban da obavi posao, nema smisla da ga napamet pokušavaš dobit sa PHPom.

Zato ponavljam pitanje. Kakav točno HTML želiš dobit?
Dok na to pitanje ne odgovoriš sam sebi, nema dalje.

Evo ti par primjera PHP skripti i za svaku je navedeno što browser vidi kao rezultat izvršavanja te skripte:

# script 1
ana voli <?php echo 'milovana'; ?>        -> browser vidi: ana voli milovana

# script 2
ana voli <?php echo(1+1); ?>              -> browser vidi: ana voli 2


# script 3
<?php
function upis(){
      echo 'milovana';
}
?>
ana voli <?php upis(); ?>                 -> browser vidi: ana voli milovana


# script 4
<?php
function upis(){
      return 'milovana';
}
?>
ana voli <?php upis(); ?>                 -> browser vidi: ana voli



# script 5
<?php
function upis(){
      return 'milovana';
}
?>
ana voli <?php echo upis(); ?>            -> browser vidi: ana voli milovana

Znači o svakoj od tih skripti moraš razmišljati na sljedeći način:

  1. Server unutar skripte traži php tagove <?php ?>
  2. Sve što je izvan php tagova, ostavlja kakvo je
  3. Sve što nađe unutar php tagova obrađuje po sintaksi php codea.
  4. Nakon što obradi php code, samo onaj string koji je provučen kroz echo metodu će biti pridružen ostatku skripte koji se nalazio izvan php tagova
  5. Znači kao rezultat obrade svih php tagova, php tagovi više ne postoje! , nego samo ono što je “ispljunula” echo metoda.
  6. Takav obrađeni content skripte dalje putuje ka klijentovom računalu. (Tamo gdje je browser) …te browser zato ne može vidjeti PHP tagove. Jer više niti ne postoje u tom contentu koji je došao do browsera!

Ti zato prvo moraš znati točno kakav HTML želiš da vidi browser. U tu ruku moraš poznavati HTML i njegove mogućnosti…i imati u glavi TOČNO kakav HTML trebaš. A ne da očekuješ “nekakav”…bez ideje što uopće onda radiš.
Zatim tek kucaš PHP da bi dinamički kreirao onakav HTML kakav želiš dobiti.

Ako si sve shvatio, morao bi moći odgovoriti na sljedeće pitanje.
U kojem momentu se trigirala funkcija upis() u tvome slučaju? Klikom na link ili kada točno?

Ovdje i sa echo i bez echo radi isto… :roll_eyes:
A funkcija samo piše u bazu, ne vraća mi vrijednost koju preuzimam.

Očito sam bespotrebno i pogrešno upotrijebio riječ link. Meni je bilo potrebno samo izvršavanje php funkcije (pisanje u bazu). Nakon što se ona izvrši (tj. poslije 3. i 4.) nije mi ni važan HTML u tom kontekstu, jer je posao urađen. Vjerovatno ne na način kako bi to trebalo raditi, ali u ovom slučaju je radilo posao. Barem taj dio…