Miten saan tehtyä itselleni sellasen jutun että se ois tiedostossa: offlineonline.php ja mun sivuilla on nyt tällänen: <p>Ylläpitäjä: <font color="red">offline.</font></p> ni miten saisin et ku sielt offlineonline.php tiedostosta painetaan nappia OFFLINE niin tohon tulee offline. punasella ja kun sieltä painetaan ONLINE niin vihreellä online. se ois sellanen radio-nappi pitäis olla.
Kiitos jo etukäteen.
Aika typerästi kyllä lähdet toteuttamaan tuota, mutta varmaankin sillä lailla että tallennat vaikka tila.txt tiedostoon "online" tai "offline", ja scripta sitten lukee kumpi siellä on. Jos et osaa toteuttaa niin voin myöhemmin auttaa.
Ilmeisesti tietotaito PHP:n osalta on nykyisellään melko olematon kun ongelma on esitetty täysin selväkielisesti ilman koodinpätkää ja virheviestiä. Suosittelen Putkan koko PHP-oppaaseen tutustumista, löytyy tuolta yläpalkin linkeistä Oppaat -> Käytännön PHP-opas. Tarvitset tässä oikeastaan osia 1/2-5, jotka kannattaa lukea, mikäli PHP ei ole vielä hallussa. Periaate seuraava:
<?php /* offlineonline.php */ // luetaan tieto ylläpitäjän tilasta tila = lueTiedosto(yllapitaja.txt) // alustetaan vari-muuttuja vari = 'red' // alustetaan ylläpitäjän tilan selkokielisesti kertova muuttuja tila_string = '' // jos on painettu nappia, käsitellään tiedot if (nappipainettu) { // muutetaan ylläpitäjän tila päinvastaiseksi // seuraava operaatio tehdään olettaen, että tiedostossa // 0 tarkoittaa offlinea, ja 1 onlinea. uusitila = !tila kahva = avaaTiedosto(yllapitaja.txt) kirjoitaTiedostoon(kahva, uusitila) suljeTiedosto(kahva) // muutetaan tiedostosta luettua ylläpitäjän tilaa tila = uusitila } // jos taas ei ole painettu nappia, tulostetaan radionappi ja lähetysnamiska else { tulosta '<form..' } // valitaan väri ylläpitäjän tilalle sekä selkokielinen viesti ylläpitäjä tilasta if (tila = 0) { vari = 'red' tila_string = 'offline' } else { vari = 'green' tila_string = 'online' } // tulostetaan tieto ylläpitäjän tilasta tulosta 'Ylläpitäjä: <font color="'.vari.'">'.tila_string.'</font>' ?>
Tämä on yksi tapa toteuttaa tuo ja selkeyden vuoksi jotkut asiat tehdään ehkä hankalammin kuin mitä olisi tarpeen. JavaScriptillä on mahdollista muuttaa radionapin toimintaa siten, että sitä painettaessa formi lähetetään suoraan ilman erillistä "Lähetä"-nappulan painamista. Napin painallusten tutkimisista sun muista tiedostoon kirjoittamisista etc. on puhuttu aikaisemmin, Putkan haku tuossa oikealla on ihan kätevä peli. Myös php.netin manuaali on hyödyllinen englantia osaaville.
Jos minä (mutta kun en ole) olisin tekemässä moista "offline/online" ilmoittajaa, niin hoitaisin homman kirjautumisella enkä ylimääräisillä "käy-ilmoittamassa-oletko-vai-etkö-ole" patenteilla. Jos admin on linjoilla, niin silloin sivuston ylälaitaan (tai vaikka puoliväliin vasemmalle) ponnahtaa teksti "Admin online" kirkkaan violetin keltaisella.
Tämä tarkoittaa sitä, että joku kaikille aina näkyvistä sivun osista (vaikkapa se ylalaita.php) päivittyy, eli refreshaa.. vaikka 5 minuutin välein. Jos admin on kirjautuneena, niin ylalaita.php osaa kekseliäänä kaverina vaihtaa "Admin offline" --> "Admin online". Oletusarvoisesti admin on syytä laittaa offlineksi ja tehdään se tarkistus sen 5 minuutin (tai vaikka viikon) välein. Tämä siksi, ettei se ylalaita.php kokoaikaa jahkaile, että onkos se admin nyt vai nyt vai nyt vai nyt vai nyt sisällä vai ei vai ei vai ei.
Asian voi hoitaa aivan varmasti paljon hienomminkin, mutta suosittelisin jotain muuta, kuin "paina-namiskaa" viritelmällä.
HellCome, ei se nyt niin paha ole aina tarkistaa noita. Onhan tuossa keskustelun etusivullakin lista kirjautuneista (viimeisen puolen tunnin aikana aktiivisista) Putkalaisista, eikä tämä systeemi ole siihen kaatunut.
MSN-tilastahan tuon saisi kätsysti kaiveltua (sikäli kun sattuu käyttämään messengeriä). Tosin ei kyllä ehkä ekaksi projektiksi ihan soveltuva. Mutta tossa olis hyvä koodivinkin aihe olis tarjolla :P
Yksi tapa olisi ottaa tieto ylläpitäjän ip-osoitteen avulla, tosin tällöin ipn pitäisi olla kiinteä.
Juu, en minä tarkoittanut että ei saisi ollenkaan tarkistella. Sitä minä meinasin, että lienee turhaa tarkastaa samaa asiaa sekunnin välein, kun muutama minuuttikin riittäisi. Tai siis, näin minä sen ajattelin. Nykyään, kun pitää kaikessa säästää..
else { tulosta '<form..' }
Miten toi form menis?
<form action="offlineonline.php" method="post"> <input type=radio name="1" value="online"> - online.<br> <input type=radio name="0" value="offline"> - offline.<br> <input type="submit" value="send">
Nameen yhteinen nimi, esim. "tila", ja valueen arvot 0 ja 1. Lisäksi type="radio" & <br />
Enempää en osannut:
<?php // luetaan tieto ylläpitäjän tilasta $tila = fopen("yllapitaja.txt"); // alustetaan vari-muuttuja $vari = "red" // alustetaan ylläpitäjän tilan selkokielisesti kertova muuttuja tila_string = '' // jos on painettu nappia, käsitellään tiedot if (nappipainettu) { // muutetaan ylläpitäjän tila päinvastaiseksi // seuraava operaatio tehdään olettaen, että tiedostossa // 0 tarkoittaa offlinea, ja 1 onlinea. $uusitila = !tila $kahva = fopen("yllapitaja.txt") ; $fwrite($kahva, $uusitila); $fclose($kahva); // muutetaan tiedostosta luettua ylläpitäjän tilaa tila = uusitila } // jos taas ei ole painettu nappia, tulostetaan radionappi ja lähetysnamiska else { print("<form action=offlineonline.php method=post> <input type=radio name=tila value=1> - online.<br><input type=radio name=tila value=0> - offline.<br><input type=submit value=Lähetä.>"); } // valitaan väri ylläpitäjän tilalle sekä selkokielinen viesti ylläpitäjä tilasta if (tila = 0) { vari = 'red' tila_string = 'offline' } else { vari = 'green' tila_string = 'online' } // tulostetaan tieto ylläpitäjän tilasta print("Ylläpitäjä: <font color="'.vari.'">'.tila_string.'</font>"); ?>
ja tätä en tajua:
Parse error: parse error, unexpected T_VARIABLE in /mbnet/s/sllz/offlineonline.php on line 10 tiiän et 10 rivil on jotai mitä ei pitäis olla mut kummiski.
Käytä kooditageja, ohjeet löydät Keskustelun Ohjeista. Pistä php.inistä error_reporting(E_ALL) niin näet kaikki virheet sekä noticet (oppiipahan samalla hyviä käytäntöjä muita kieliä varten). Tuosta puuttuu nyt aimo kasa lopettavia puolipisteitä (eli ;-merkkejä). Lisäksi muuttujien edestä puuttuu dollareita, ja muuta sen semmoista ->
<?php // tulostetaan tieto ylläpitäjän tilasta print("Ylläpitäjä: <font color="'.vari.'">'.tila_string.'</font>"); /** * -print on aloitettu lainausmerkillä, mutta merkkijonoja aloitetaan ja lopetetaan keskellä print-lauseketta heittomerkeillä ('). * Merkkijonot tulee aloittaa ja lopettaa samalla merkillä. * Hakusanaksi Putkan hakuun 'editorisota' ja noita koodivärityksen omaavia editoreita löytynee sitä kautta, suositellaan. * -$vari, $tila_string. * - 'merkkijono'.$muuttuja.'merkkijono2' */ ?>
Ps. Php-väritys voisi olla kätevä Putkassa.
tsuriga kirjoitti:
Käytä kooditageja, ohjeet löydät Keskustelun Ohjeista. Pistä php.inistä error_reporting(E_ALL) niin näet kaikki virheet sekä noti..
Sääli kun on sivut MBNetin palvelimella.
tsuriga kirjoitti:
Ps. Php-väritys voisi olla kätevä Putkassa.
Sellainen olikin, sitten jotain meni rikki, ja Antti ei ole jaksanut/joutanut/viitsinyt korjata.
Uusi PHP-väritys on tulossa, tällä kertaa kokonaan itse tehtynä, niin toimii kunnolla.
PHP:n virheet näkee myös kirjoittamalla sivun alkuun:
error_reporting(E_ALL);
mul on tää tän näkönen:
$tila_string = ''
ni minkänäköseks pitäis muuttaa??
Siitä puuttuu se lopettava ;. Je Blaze arvelinki notta takasin olis mukava saada.
Voisko joku nyt antaa toimivan koodipätkän? Ku ihan mitä vaan mä teen ni aina tulee parse error.
rivi 7:
$kahva = fopen("yllapitaja.txt");
Parse error: parse error, unexpected T_VARIABLE in /mbnet/s/sllz/offlineonline.php on line 7
ja valittaa tollai.
Tässä tulee toimiva koodinpätkä.
Tiedostossa yp.txt on ylläpidon tila:
online
Tämä koodi laitetaan sivulle, jotta tieto näkyy kävijöille:
<?php $tieto = file("yp.txt"); if (trim($tieto[0]) == "online") { echo "<p>Ylläpitäjä: <font color=\"green\">online</font></p>"; } else { echo "<p>Ylläpitäjä: <font color=\"red\">offline</font></p>"; } ?>
Tämän koodin avulla ylläpitäjä pystyy muuttamaan tilaansa:
<form action="enilno123.php" method="post"> <?php if ($_POST['nappi'] <> "") { $tiedosto = fopen("yp.txt", "w"); if ($_POST['yp'] == 1) { fputs($tiedosto, "online"); } else { fputs($tiedosto, "offline"); } fclose($tiedosto); } $tieto = file("yp.txt"); if (trim($tieto[0]) == "online") { echo "<input type=\"radio\" name=\"yp\" value=\"1\" checked=\"checked\">online<br>"; echo "<input type=\"radio\" name=\"yp\" value=\"2\">offline<br>"; } else { echo "<input type=\"radio\" name=\"yp\" value=\"1\" >online<br>"; echo "<input type=\"radio\" name=\"yp\" value=\"2\" checked=\"checked\">offline<br>"; } ?> <br> <input type="submit" name="nappi" value="Muuta"> </form>
Viimeiselle tiedostolle kannattaa valita niin outo nimi (esim. enilno123.php), että kukaan ei sitä arvaa. Tiedostoon yp.txt täytyy skriptillä olla kirjoitusoikeus (chmod).
Kiitos antti laaksonen!
Aihe on jo aika vanha, joten et voi enää vastata siihen.