Kirjoittaja Aihe: php ja vuorovaikutus nettisivujen loppukäyttäjien välillä  (Luettu 2151 kertaa)

teele

  • Käyttäjä
  • Viestejä: 852
    • Profiili
Halutaan pelata yhteistoimintapeliä netissä. Pleaajia voisi olla vaikka 100 tai joku kohtuullisen iso määrä. Kukin pelaaja voi yrittää valita esimerkiksi 10 tai jonkun muun sopivan määrän mahdollisia  yhteistoimntakumppaneita. Valinta onnistuu, jos myös valittavaksi haluttu pelaaja on valinnut valintaa tekevän pelaajan.

Tiedot valinnoista ovat 100 * 100 taulukossa vaikka niin, että jokainen pelaaja on omalla rivillään ja rivillä on 100 paikkaa valintoja varten. Jos pelaaja 41 valitsee pelaajan 67, taulukon kohtaan (41, 67) tulee rasti eli 1, muuten ruutu on 0.

Jos tämän tekee php:llä, jokaisen php-sivulla pelaavan käyttäjän pitää  ladata 100 * 100 taulukko, jotta voi tehdä valintoja eli ruksata haluamansa ruudun taulukosta ja nähdä jo tehtyjä valintoja eli onko hänen valitsemansa pelaaja valinnut myös hänet. Ikävä puoli tässä on se, että jokaista nettisuvua kohti pitää lukea tiedostosta 100 * 100 taulukko, joka on vielä jokaisden sivunkäyttäjän omassa php-tilassa php-arrayna. Tilaa menisi siis 100 * 100 * pelaajamäärä ja iso osa työstä olisi vaintaulukoiden lukemista.

Kuitenkin valintataulukkoja on oikeasti vain yksi, johon yksi käyttäjä tekee vain muutamia muutoksia.  Olisi kätevää, jos taulukko voisi olla vaikka koko ajan taustalla toimivassa c++ -ohjelmassa ja sivunkäyttäjän php voisi kysellä tarvitsemiaan tietoja siltä.

Olisiko tämäntapainen järjestely mahdollinen tai miten asiaa voisi ratkoa.



« Viimeksi muokattu: 14.06.20 - klo:15.03 kirjoittanut teele »

_Pete_

  • Käyttäjä
  • Viestejä: 1845
  • Fufufuuffuuu
    • Profiili
Kuitenkin valintataulukkoja on oikeasti vain yksi, johon yksi käyttäjä tekee vain muutamia muutoksia.  Olisi kätevää, jos taulukko voisi olla vaikka koko ajan taustalla toimivassa c++ -ohjelmassa ja sivunkäyttäjän php voisi kysellä tarvitsemiaan tietoja siltä.

Olisiko tämäntapainen järjestely mahdollinen tai miten asiaa voisi ratkoa.

Eikö jokaisella pelaajalla pidä olla oma henkilökohtainen valintataulkko, miten muuten voisi pitää kirjaa eri pelaajien valinnoista.

Tällaisten talletukseen tietokanta on hyvä valinta. C++ ohjelmassa pitäisi kuitenkin jotenkin persistoida tiedot etteivät ne häviä kun ohjelma
lopetetaan.

teele

  • Käyttäjä
  • Viestejä: 852
    • Profiili
Lainaus
Eikö jokaisella pelaajalla pidä olla oma henkilökohtainen valintataulkko, miten muuten voisi pitää kirjaa eri pelaajien valinnoista

Pelaaja tarvitsee loppujen lopuksi vain taulukon onnistuneista valinnoista eli niistä hänen tekemistään valinnoista, joiden osalta valittu pelaaja on myös valinnut hänet. Tämän taulukon koko on suurimmillaan 10, jos pelaaja on tehnyt 10 valintaa etukäteisoletuksensa perusteella.

Jokainen pelaaja ei siis tarvisisi omaa 100 * 100 php-arrayta. Talukon sisältävä ohjelma voisi tarjota pelaajalle mahdollisuuden valita pelikumppaneita ja näyttää, mitkä valinnat ovatr onnistuneet. Yksi 100 * 100 taulukko riittäisi siis kaikkien osallistujien peliin.

Kyllä, tietokanta olisi varmaan hyvä ratkaisu. Ikävä kyllä, en ole onnistunut saamaan mariasql:ää käyntiin. Tähän asti koneessa on toiminut apache ja php ja olisi varmasti hyvä saada tietokanta mukaan. Muistaakseni ongelma oli se, että tietokannan käyttööotossa oli kaikenlaisia kirjautumisia ja asetuksia enkä koskaan suoriutunut niistä oikein :(

Jos tekisi uuden yrityksen

sudo apt install mariasql

mutta sitten alkoivat ne hankaluudet .....

jekku

  • Käyttäjä
  • Viestejä: 2624
    • Profiili
Onhan tuo tuttu:
https://www.hostwinds.com/guide/how-to-use-mysql-mariadb-from-command-line/

Noin muistinvaraisesti, aikalailla samat loitsut tehoavat myös muissa jakeluissa.

Jere Sumell

  • Käyttäjä
  • Viestejä: 742
  • Talous, Hallinto ja Markkinointi (AMK, 2017),B.B.A
    • Profiili
    • Tietokone-blogi
Halutaan pelata yhteistoimintapeliä netissä. Pleaajia voisi olla vaikka 100 tai joku kohtuullisen iso määrä. Kukin pelaaja voi yrittää valita esimerkiksi 10 tai jonkun muun sopivan määrän mahdollisia  yhteistoimntakumppaneita. Valinta onnistuu, jos myös valittavaksi haluttu pelaaja on valinnut valintaa tekevän pelaajan.

Tiedot valinnoista ovat 100 * 100 taulukossa vaikka niin, että jokainen pelaaja on omalla rivillään ja rivillä on 100 paikkaa valintoja varten. Jos pelaaja 41 valitsee pelaajan 67, taulukon kohtaan (41, 67) tulee rasti eli 1, muuten ruutu on 0.

Jos tämän tekee php:llä, jokaisen php-sivulla pelaavan käyttäjän pitää  ladata 100 * 100 taulukko, jotta voi tehdä valintoja eli ruksata haluamansa ruudun taulukosta ja nähdä jo tehtyjä valintoja eli onko hänen valitsemansa pelaaja valinnut myös hänet. Ikävä puoli tässä on se, että jokaista nettisuvua kohti pitää lukea tiedostosta 100 * 100 taulukko, joka on vielä jokaisden sivunkäyttäjän omassa php-tilassa php-arrayna. Tilaa menisi siis 100 * 100 * pelaajamäärä ja iso osa työstä olisi vaintaulukoiden lukemista.

Kuitenkin valintataulukkoja on oikeasti vain yksi, johon yksi käyttäjä tekee vain muutamia muutoksia.  Olisi kätevää, jos taulukko voisi olla vaikka koko ajan taustalla toimivassa c++ -ohjelmassa ja sivunkäyttäjän php voisi kysellä tarvitsemiaan tietoja siltä.

Olisiko tämäntapainen järjestely mahdollinen tai miten asiaa voisi ratkoa.

PHP on jo todella todella pitkän aikaa ollut olio-perusteinen kieli. Itse toteuttaisin Pelaaja -luokan, jolloin selviää minimimäärällä muuttujia, oma yksinkertainen taulukko niistä pelaajista, jotka hyväksyy pelaajan yhteistyökumppaniksi, dynaamisia listoja siis.

Olio-pohjaisena noin ohjelma myös nopeutuu, kun joka pelaajan tarvitse ladata raskaita listoja alati.
Free Internet and  people for humans all over the globe!

(Profiilikuvassa oma valokuvani GIMPissä editoituna Disney Classic-väripaletin väreihin ja muunnettuna bittikartta-tiedostosta vektorigrafiikaksi.)

nm

  • Käyttäjä
  • Viestejä: 16430
    • Profiili
PHP on jo todella todella pitkän aikaa ollut olio-perusteinen kieli. Itse toteuttaisin Pelaaja -luokan, jolloin selviää minimimäärällä muuttujia, oma yksinkertainen taulukko niistä pelaajista, jotka hyväksyy pelaajan yhteistyökumppaniksi, dynaamisia listoja siis.

Teelen ongelmana on se, miten tuo yksinkertainen taulukko muodostetaan. PHP-skriptissä ei voi (tai ei kannata) ylläpitää kaikkien pelaajien tilaa, koska se suoritetaan jokaiselle asiakkaalle ja sivupyynnölle erikseen. Käytännössä pelaajakohtainen taulukko pitää joko luoda lennossa tietokannan avulla (jolloin voidaan hyödyntää SQL-tietokannan tarjoamia työkaluja) tai tarvitaan jokin muu erillinen palvelinprosessi, joka ylläpitää kaikkien pelaajien keskinäisiä suhteita ja vastaa PHP-skriptin kyselyyn tietokannan tapaan.

100 x 10 linkkiä on sen verran vähän, että homma onnistuu helpoimmin SQL-kyselyllä. Esimerkkejä löytyy googlaamalla vaikka hakusanoilla "mutual friends sql".
Tässä yksi järkevältä vaikuttava ratkaisu: https://stackoverflow.com/a/13091778