Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: PHP: Sivun tietojen käsittely

Sivun loppuun

Dekeos [08.10.2021 08:26:59]

#

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">&nbsp;</td><td class="t-Report-cell"  headers="EAN">643814418062</td><td class="t-Report-cell"  headers="TUOTE">ENERGY+ L&#xC4;MMITIN 1000W &#xD6;LJYT&#xC4;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">&nbsp;</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>

Grez [08.10.2021 09:04:18]

#

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.

Dekeos [08.10.2021 09:42:23]

#

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?

Grez [08.10.2021 09:45:56]

#

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.

Grez [08.10.2021 11:21:32]

#

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.

Dekeos [08.10.2021 12:02:33]

#

Toinen sivu on intranetissä onnistuisikohan jotenki framejen avulla?

Grez [08.10.2021 13:10:12]

#

Siis PHP-koodillasi ei ole pääsyä ko. intranetiin?

Dekeos [08.10.2021 13:21:14]

#

Eli toinen sivu on ns. sisäverkossa ja tulostus puoli ulkoverkossa. Ei taida olla muuta mahdollisuutta kuin tutustua tuohon selainlaajennuksen tekoon.

Metabolix [08.10.2021 16:41:42]

#

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.

Grez [08.10.2021 16:59:09]

#

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

Metabolix [08.10.2021 17:06:21]

#

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.

Grez [08.10.2021 17:17:49]

#

No joo, en itse ottanut huomioon tuota puolta... Eli vaikka vastaukset on saatu, ne ei välttämättä pidä paikkaansa.

Metabolix [08.10.2021 17:27:37]

#

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);
  });
}

Dekeos [08.10.2021 23:30:43]

#

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.

groovyb [09.10.2021 08:56:32]

#

Voithan toki sitä ulkoista sivua käpistellä vaikka robot frameworkilla tai muulla selenium-häristimellä.

Grez [09.10.2021 09:21:56]

#

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.

Dekeos [11.10.2021 00:00:37]

#

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.

Metabolix [11.10.2021 07:40:20]

#

Oletko lukenut tai kokeillut edes koodiani?

Dekeos [11.10.2021 13:03:48]

#

Metabolix kirjoitti:

Oletko lukenut tai kokeillut edes koodiani?

Tosiaan tuolla toivomallani tavalla tuo toimii.

Hienoa ja kiitos.

groovyb [12.10.2021 01:34:03]

#

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.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta