Permalänk

Mixxa html, php och javascript?

Håller på med ett proj där en av filerna innehåller dels HTML (ritar upp en tabell), samt några knappar som aktiverar PHP. Problemet är att jag vill skriva ut resultatet av körningen i PHP:n i en speciell cell i tabellen. Då började jag snegla på script som innehåller "innerHTML" som tycks kunna användas här.
Det jag nu undrar över är om det är bara att mixxa kod i en PHP-fil? Jag menar, php:n ska inledas med <?php och avslutas med ?>. I html ska script omslutas med <script></script>. Ett annat alternativ är att skriva en funktion. Är det bara att skriva den rakt av i nedre delen av filen eller ska jag göra en egen js-fil med funktionen/funktioner? Har inte Javascript nåt inledande "tecken" (typ <?js) som krävs? Har Googlat en del med det spretar med exemplen. Bättre att fråga här.

Givetvis uppskattas alla förslag till hur jag ska lösa problemet med att skriva ut i den specifika cellen. Jag har givetvis provat med <? echo $var; ?> men efter att PHP:n är klar så stannar allt av och koden i cellen körs inte igen. Har testat med en till knapp som heter "Läs resultat..." som kör PHP:n igen men koden i html-cellen gör inte det den ska - vilket jag inte begriper - än.

Permalänk
Hedersmedlem

Jag antar att det du är ute efter är alltså att klicka på en knapp, vilket aktiverar en HTTP-request till en PHP-fil, och sedan utifrån resultatet ritar om den sida du redan är på utan att ladda om den.

I så fall arkitektar du lämpligen det hela som två delar, en "frontend" (HTML och Javascript) som körs i webbläsaren, och en "backend/API" som körs på servern (i ditt exempel PHP).

Din frontend måste alltså göra detta:

  • När du klickar på en knapp, kör en funktion

  • Funktionen skickar iväg en HTTP-förfrågan till ditt API

  • När svar kommer in, så läser den in svaret och använder det för att populera innehållet i en cell.

  • Hanterar eventuella fel som kan uppstå och visar dessa för användaren.

Din backend måste alltså:

  • Svara på frågor

  • Skicka ut svar på dessa frågor i ett enkelt format som kan "parsas" av din frontend.

Om det bara är ett enda värde du ska in med, så kanske det enkla är att du bara skickar ut detta värdet i textformat, men om du ska ha flera olika värden du skickar ut kan det vara smart att kolla på JSON. Alltså att din PHP-backend genererar ett svar i JSON-format, som sedan på ett enkelt sätt kan läsas in och sedan efterbehandlas och visas upp av din frontend.

Permalänk
Skrivet av pv2b:

Jag antar att det du är ute efter är alltså att klicka på en knapp, vilket aktiverar en HTTP-request till en PHP-fil, och sedan utifrån resultatet ritar om den sida du redan är på utan att ladda om den.

I så fall arkitektar du lämpligen det hela som två delar, en "frontend" (HTML och Javascript) som körs i webbläsaren, och en "backend/API" som körs på servern (i ditt exempel PHP).

Din frontend måste alltså göra detta:

  • När du klickar på en knapp, kör en funktion

  • Funktionen skickar iväg en HTTP-förfrågan till ditt API

  • När svar kommer in, så läser den in svaret och använder det för att populera innehållet i en cell.

  • Hanterar eventuella fel som kan uppstå och visar dessa för användaren.

Din backend måste alltså:

  • Svara på frågor

  • Skicka ut svar på dessa frågor i ett enkelt format som kan "parsas" av din frontend.

Om det bara är ett enda värde du ska in med, så kanske det enkla är att du bara skickar ut detta värdet i textformat, men om du ska ha flera olika värden du skickar ut kan det vara smart att kolla på JSON. Alltså att din PHP-backend genererar ett svar i JSON-format, som sedan på ett enkelt sätt kan läsas in och sedan efterbehandlas och visas upp av din frontend.

Mycket användbar information! Nytänk för min del. Det är alltså ett script som äger anropet till API:et. Inte en <button>. Utbyter man data mellan front- och backend genom returer och parametrar?
PHP-scriptet har tagit emot en ZIP-fil, packat upp, satt rättigheter, sen gjort en ls på foldern och samlat filnamnen i en vanlig $var. Detta ska sedan tillbaka, helst efter klicket på knappen Upload, och skrivas ut i en cell i en tabell. Förslagsvis med innerHTML. Tror jag är på rätt spår...
Som jag förstått gör jag en fil med PHP-skriptet som hanterar ZIPen. Sen gör jag en fil med tabellen och knappar samt en Java funktion.

Permalänk

Har fått till nåt som verkar kunna funka men har problem med detaljerna typ varför är $_FILES tom när väl scriptet anropat PHP:n och den ska packa upp zip-filen som jag angav i den där input-"file"?
Det är lite svårt att googla på just detta också. Lätt att googla på funktionsnamn o sånt men såna där frågeställningar är svårare o hitta svar på.

edit: Jag tror denna kan hjälpa mig!
https://www.taniarascia.com/how-to-upload-files-to-a-server-with-plain-javascript-and-php/

Permalänk
Hedersmedlem

Det hade varit bra om du kan förklara lite mer, det är också svårt att hjälpa dig utifrån en så vag frågeställning.

Permalänk
Skrivet av pv2b:

Det hade varit bra om du kan förklara lite mer, det är också svårt att hjälpa dig utifrån en så vag frågeställning.

Jag förstår att jag är luddig och att det finns 100 lösningar på det (har insett det under dagen).

Jag har under dagen fått ihop en fungerande lösning.
En Filvalsdialog visas upp m.h.a input "file" och sen tar en JS hand om processen efter en submit. JS aktiverar en PHP som gör sitt, bland annat skapar en txt-fil med en fillista. Den väntar JS på och sen läser den in den och visar upp innehållet i en specifik cell i en tabell. Denna cell har dessutom en scrollbar för cellen har fast höjd. Så långt har jag kommit idag.

Min svårighet är JavaScript. Den har en syntax jag inte är hemma på. Sen är det en hel del "programstruktur" och dataflöden som är lite nya för mig. Men...skam den som ger sig.