Terve, onkohan mahdollista saada alla olevaan koodiin/sivustoon lisättyä lähetä nappulaa jokaiselle riville omansa. Kyseessä on ulkopuolinen sivusto ja pitäisi saada taulukon tiedot lähetettyä toiselle sivustolle joka ne sitten laittaa haluttuun tulostettavaan muotoon. Onko tämä mähdollista, jos on niin mistä lähteä liikkeelle?
<table class="t-Report-pagination" role="presentation"><tr><td></td></tr></table> <div class="t-Report-tableWrap"> <table class="t-Report-report" aria-label="Aktiiviset pakkojaot"> <thead><tr><th class="t-Report-colHead" align="center" id="ALKUPVM" ><div class="u-Report-sort"><span class="u-Report-sortHeading">Alkupvm</span></div></th><th class="t-Report-colHead" align="center" id="VARASTONOSA" ><div class="u-Report-sort"><span class="u-Report-sortHeading">Varastonosa</span></div></th><th class="t-Report-colHead" align="center" id="OSOITE" ><div class="u-Report-sort"><span class="u-Report-sortHeading">Osoite</span><span class="u-Report-sortIcon a-Icon icon-rpt-sort-asc"></span></div></th><th class="t-Report-colHead" align="center" id="TARKISTUSNUMERO" ><div class="u-Report-sort"><span class="u-Report-sortHeading">Tarkistusnumero</span></div></th><th class="t-Report-colHead" align="center" id="LISÄPAIKKA" ><div class="u-Report-sort"><span class="u-Report-sortHeading">Lisäpaikka</span></div></th><th class="t-Report-colHead" align="center" id="EAN" ><div class="u-Report-sort"><span class="u-Report-sortHeading">Ean</span></div></th><th class="t-Report-colHead" align="center" id="TUOTE" ><div class="u-Report-sort"><span class="u-Report-sortHeading">Tuote</span></div></th><th class="t-Report-colHead" align="center" id="SUUNNITELTU" ><div class="u-Report-sort"><span class="u-Report-sortHeading">Suunniteltu</span></div></th><th class="t-Report-colHead" align="center" id="VARATTU" ><div class="u-Report-sort"><span class="u-Report-sortHeading">Varattu</span></div></th><th class="t-Report-colHead" align="center" id="SALDO" ><div class="u-Report-sort"><span class="u-Report-sortHeading">Saldo</span></div></th><th class="t-Report-colHead" align="center" id="POISTAPJ" ><div class="u-Report-sort"><span class="u-Report-sortHeading">Poista pakkojako</span></div></th></tr></thead> <tbody> <tr><td class="t-Report-cell" headers="ALKUPVM"><div style = "">08.10.2021</div></td><td class="t-Report-cell" headers="VARASTONOSA">A</td><td class="t-Report-cell" headers="OSOITE">07-41-1D</td><td class="t-Report-cell" headers="TARKISTUSNUMERO">36</td><td class="t-Report-cell" headers="LISÄPAIKKA"> </td><td class="t-Report-cell" headers="EAN">643814418062</td><td class="t-Report-cell" headers="TUOTE">ENERGY+ LÄMMITIN 1000W ÖLJYTÄYTTEIN</td><td class="t-Report-cell" headers="SUUNNITELTU">388</td><td class="t-Report-cell" headers="VARATTU">9</td><td class="t-Report-cell" headers="SALDO">6</td><td class="t-Report-cell" headers="POISTAPJ">Poista</td></tr> <tr><td class="t-Report-cell" headers="ALKUPVM"><div style = "">08.10.2021</div></td><td class="t-Report-cell" headers="VARASTONOSA">A</td><td class="t-Report-cell" headers="OSOITE">07-44-1C</td><td class="t-Report-cell" headers="TARKISTUSNUMERO">57</td><td class="t-Report-cell" headers="LISÄPAIKKA"> </td><td class="t-Report-cell" headers="EAN">641960414553</td><td class="t-Report-cell" headers="TUOTE">SADESUIHKUSETTI TAURUS</td><td class="t-Report-cell" headers="SUUNNITELTU">166</td><td class="t-Report-cell" headers="VARATTU">4</td><td class="t-Report-cell" headers="SALDO">5</td><td class="t-Report-cell" headers="POISTAPJ">Poista</td></tr> </tbody> </table>
Dekeos kirjoitti:
Onko tämä mähdollista, jos on niin mistä lähteä liikkeelle?
Tottakai on.
Kannattaa lähteä liikkeelle siitä, että selvittää millä tavalla tiedot pitää lähettää toiselle sivustolle.
Sitten kannattaa tehdä tuohon koodiin ne napit, jotka lähettävät tiedot oikeassa muodossa.
Jos sivusto on jonkun muun (eli et voi suoraan muokata koodia) niin sitten voit tehdä selainlaajennoksen joka lisää ko. napit. Näin ei kuitenkaan ilmeisesti ole, koska kysymys on PHP otsikoitu.
Tosiaan kyse on sivusta jonka koodia en pääse käpistelemään. Tavoite olisi saada nämä lähetettyä php sivulle joka tuottaa tulostettavan sivun. Mitä vaatii tämmöisen selainlaajennuksen teko?
Selainlaajennoksen teko on tyypillisesti hyvin helppoa, tarvitsee vaan vääntää javascriptiä ja määritellä millä sivulla sitä ajetaan.
Se miten tuo määrittely tehdään ja miten se paketoidaan riippuu toki selaimesta. Itse olen tehnyt selainlaajennoksia Chromelle. Hyvin samalla tyylillä homma onnistunee myös esim. Firefoxille ja varmaan monille muillekin.
Sitten tietysti kaikkien, jotka haluaa tekemääsi laajennusta hyödyntää, pitää asentaa ko. laajennus selaimeensa.
Lisään vielä että jos olet kerran sitä kohdesivustoa tekemässä ja jos tuo lähdesivusto on vapaasti luettavissa, niin voisit tietty myös kohdesivuston php-koodilla ladata lähdesivun ja käsitellä sen lisäämällä napit. Näin ei tarvitsisi tehdä selainlaajennosta.
Toinen sivu on intranetissä onnistuisikohan jotenki framejen avulla?
Siis PHP-koodillasi ei ole pääsyä ko. intranetiin?
Eli toinen sivu on ns. sisäverkossa ja tulostus puoli ulkoverkossa. Ei taida olla muuta mahdollisuutta kuin tutustua tuohon selainlaajennuksen tekoon.
Kuulostaa vielä sekavalta, erityisesti "toinen sivu" on aika epämääräinen termi. Sovitaanko vaikka, että A-sivulla on tietoa taulukossa ja B-sivulla on tietoa tulostettavassa muodossa. Onko B-sivulla kaikki tiedot vai vain osa tiedoista? Onko tietoja pakko hallita juuri A-sivun puolelta (jota ilmeisesti et pysty muokkaamaan itse), vai voisiko hallinnan tehdä B-sivun puolelle? Käykö esimerkiksi sellainen ratkaisu, jossa B-sivu hakee kaikki A-sivun tiedot automaattisesti ja tarvittaessa B-sivun hallintaosiossa valitaan, mitkä niistä näkyvät? Ovatko sivut sillä tavalla samassa verkossa, että B-sivun palvelimen olisi edes mahdollista päästä hakemaan A-sivun tiedot?
Jos työnkulku todella vaatii, että napit ovat sillä A-sivulla, jota et pysty itse muokkaamaan, tosiaan silloin napit täytyy lisätä vaikka selainlaajennuksen avulla.
Jaa mun mielestä ei ollut kovinkaan sekavaa. Mutta siis saa korjata jos olen ymmärtänyt väärin.
A -sivusto:
- Sisältää Dekeosin aloitusviestiin laittaman taulukon
- On jonkun muun tekemä/ylläpitämä, Dekeos ei voi sivun koodia muokata palvelimen A päässä
- Oletan että halutaan käyttää aina viimeisintä versiota
- On sisäverkossa
- Tälle sivulle haluttaisiin lisätä nappeja, joita klikkaamalla tietoa saisi lisättyä järjestelmään B
B-järjestelmä
- Dekeosin tekemä tai ylläpitämä
- Palvelimelta, jolla pyörii, ei ole pääsyä sivulle A
Itse laskin asiaa näin: PHP + voiko sivulle lisätä nappeja + kasa HTML-koodia + sivua ei voi muokata = kaikki kysyjän antamat tekniset tiedot ovat vähintäänkin kyseenalaisia.
No joo, en itse ottanut huomioon tuota puolta... Eli vaikka vastaukset on saatu, ne ei välttämättä pidä paikkaansa.
Jos ihan oikeasti kysymys on, miten tuolle sivulle saisi nappeja tiedon lähettämistä varten, niin näinhän niitä saisi JavaScriptilla selainlaajennoksen tai selaimen kehittäjäkonsolin kautta:
for (let tr of document.querySelectorAll(".t-Report-report tbody tr")) { let td = tr.appendChild(document.createElement("td")); td.innerHTML = "<button>Lähetä</button>"; td.firstChild.addEventListener("click", async e => { let data = new URLSearchParams(); for (let td of tr.cells) if (td.headers) { data.append(td.headers, td.textContent); } let r = await fetch("https://example.org/", { method: "POST", body: data }); let t = await r.text(); if (t != "ok") alert(t); }); }
Grez kirjoitti:
(08.10.2021 16:59:09): Jaa mun mielestä ei ollut kovinkaan sekavaa...
Juurikin tämä on tilanne. Nyt olen toiminut niin että olen taulukon tiedot syöttänyt lomakkeelle josta olen lähettänyt ne sivulle joka asettelee tiedot haluttuun muotoon ja tämä sitten tulostetaan. Nyt olis tavoite päästä tuosta kirjoittamis vaiheesta eroon.
Voithan toki sitä ulkoista sivua käpistellä vaikka robot frameworkilla tai muulla selenium-häristimellä.
Avaatko hieman miksi robot framework tai selenium-häristimet olisi parempi tapa kuin jo esitetyt tavat? Ainakin jos palvelimelta käsin ei saa sivua ladattua vaan A-sivuun käsiksi pääsemiseen joudutaan käyttämään loppukäyttäjän konetta, niin näkisin esim. selainlaajennoksen asentamisen helpommaksi kuin esim. robot frameworkin.
Tai ehkä ajattelit niiden käyttämistä jollain fiksulla tavalla, jonka olisi myös voinut avata.
Kiitos hyvistä vastauksista. Pystyyköhän tuota talukkoa suoraan lukemaan muuttujiin vai onko ainut keino hakea tietyt alut ja loput ja lisätä ne näin muuttujiin jotka lähetetään php sivustolle.
Oletko lukenut tai kokeillut edes koodiani?
Metabolix kirjoitti:
Oletko lukenut tai kokeillut edes koodiani?
Tosiaan tuolla toivomallani tavalla tuo toimii.
Hienoa ja kiitos.
Grez, lähinnä pihvi oli perinteinen ”Lue kama pisteestä x, kirjaudu rf:llä intranetiin, lyö kama lomakkeille, ota lopputulemat talteen, käytä toista sivustoa, lyö sinne saatu kama ja ota tuloste”
Eli sama mikä aina kun ei ole rajapintoja käytössä, ja käytetään vain itse sivustojen käyttöliittymiä ohjelmallisesti apien sijaan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.