FinWX Foorumi

Yleiset keskustelualueet => Yleistä keskustelua => Aiheen aloitti: meteorologi - maanantai, 12.05.2008, 19:01

Otsikko: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - maanantai, 12.05.2008, 19:01
Kuten sanottua, olen tehnyt hiukan Php-skriptejä testailtavaksi. Ihan perusalkeita vain.
Nyt kuitenkin tuli mieleen suurempi projekti. Tarkoitus oli saada Php-skripti Heavyweather Puplisherin tilalle.

Tässä tämänhetkinen tulos:


<?php
$filename 
"currdat.lst";
$handle fopen($filename"r");
$contents fread($filename(array["23"]);
fclose($handle);
echo 
"$contents";
?>



Älkää naurako minun PHP-kielitaidoilleni! :'(
Vähin on otettu lainauksia Php.netin sivuilta tuohon koodiin.
Näitä skriptejä käyttää ainakin FinWx:in ylläpito. Kumarran hienosta skripistä! ;)

Tuon skriptin piti lukea currdat.lst -tiedoston eräs rivi, mutta ei tullut muuta kuin herjauksia ja varoituksia.

Voisiko Finwx:n Admin valottaa asiaa?
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: J.Jäntti - maanantai, 12.05.2008, 23:28
Lainaus käyttäjältä: Meteorologi - maanantai, 12.05.2008, 19:01
Kuten sanottua, olen tehnyt hiukan Php-skriptejä testailtavaksi. Ihan perusalkeita vain.
Nyt kuitenkin tuli mieleen suurempi projekti. Tarkoitus oli saada Php-skripti Heavyweather Puplisherin tilalle.

Tässä tämänhetkinen tulos:


<?php
$filename 
"currdat.lst";
$handle fopen($filename"r");
$contents fread($filename(array["23"]);
fclose($handle);
echo 
"$contents";
?>



Älkää naurako minun PHP-kielitaidoilleni! :'(
Vähin on otettu lainauksia Php.netin sivuilta tuohon koodiin.
Näitä skriptejä käyttää ainakin FinWx:in ylläpito. Kumarran hienosta skripistä! ;)

Tuon skriptin piti lukea currdat.lst -tiedoston eräs rivi, mutta ei tullut muuta kuin herjauksia ja varoituksia.

Voisiko Finwx:n Admin valottaa asiaa?

En usko, että täällä kukaan nauraa PHP-kielitaidoillesi. Voin myöntää, ettei minunkaan PHP-skriptauskykyni mitään kulmakarvoja nostattavaa ole, joten jos vain voin olla avuksi, pyrin auttamaan niin paljon, kuin vain mahdollista.

Heitän ihan sokkona ilmaan näin ensialkuun, jotta onko tuo php-skripti samassa hakemistossa currdat.lst:n kanssa? Tarkoitan tätä kohtaa koodista:


$filename = "currdat.lst";


Jos ei ole, niin skripti ei sitä tiedostoa löydä, ellet osoita tuohon tiedoston normipolkua, vähän tähän malliin:


$filename = "D:/hakemisto/jossa/filu/majailee/currdat.lst";


Huomaa "kautta"-merkkien suunta.

Toinen, joka kiinnitti huomioni on:


$contents = fread($filename(array["23"]);


fread-funktio ei tajua tuota (array["23"]); -kohtaa, koska sitä ei ole tehty lukemaan tiettyä kohtaa tiedostosta lainkaan, vaan vain pelkästään tiedoston alusta joko EOF (End of File)- merkkiin asti tai ensimmäiset 8 kilotavua (8192 tavua) tai ohjelmoijan erikseen määritellyn määrän.

Jotta tuo (array["23"]) toimisi, avatusta tiedostosta pitäisi saada tehtyä tuollainen array ensin, jotta sille voisi osoittaa luettavaa kohtaa. currdat.lst -tiedoston kyseessä ollen epäilen sen toimivuutta hieman.

Toistaiseksi omat skriptini pureskelevat tuota currdat.lst -tiedostoa niin, että kaikista currdat.lst:n riveistä luodaan array, poistetaan kaikki kirjaimet mutta jätetään numeroarvot ja sitten määritellään, minkänimisenä mikäkin arvo tunnistetaan, jotta ne voidaan ajaa html-koodiin.

Tämän lisäksi (array["23"]):ssa ei tarvita lainausmerkkejä. Oikeampi merkintätapa saattaisi olla jotain tässä muodossa:


($array[23]);


Käsitellään kuitenkin tätä skriptiä tässä vaiheessa askel askeleelta läpi niin ei mene nuppi sekaisin. :)
Aloitetaan tuosta tiedostopolkukysymyksestä. Eli: Onko currdat.lst -tiedosto samassa hakemistossa tuon PHP-skriptin kanssa?
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - tiistai, 13.05.2008, 14:34
Kyllä, skripti on samassa hakemistossa currdat.lst:n kanssa. Sen (jopa) älysin itsekin tuossa koodissa olevan tärkeä.

Sitten se piheliäs array-hommeli. Mitenköhän se sitten pitäisi hoitaa? $array -elementti jonnekin? ???
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: weatherc - tiistai, 13.05.2008, 17:50
Moro!

Poistaisin tuon fread:in kokonaan turhana ja pistäisin tilalle:

$contents = implode('', file($filename));
fclose($filename);

Tuohon implode-funktioon missä tuossa on '' niin väliin data-erotin joka on currdat.lst-filussa, esim. jos data on muodossa 12 23 432 niin '' tilalle tulee ' ' ja jos data muodossa 12|23|432 niin '|' jne.
tuloksena on $content-array josta voi poimia dataa esim $content[23].

Henkka
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - tiistai, 13.05.2008, 20:04
Lainaus käyttäjältä: weatherc - tiistai, 13.05.2008, 17:50

$contents = implode('', file($filename));
fclose($filename);


Tuohon implode-funktioon missä tuossa on '' niin väliin data-erotin joka on currdat.lst-filussa, esim. jos data on muodossa 12 23 432 niin '' tilalle tulee ' ' ja jos data muodossa 12|23|432 niin '|' jne.
tuloksena on $content-array josta voi poimia dataa esim $content[23].

Henkka

Enpä tiedä currdat.lst:n dataerottimesta, mutta tällainen se currdat.lst on:
[indoor_temperature]
deg_C = "21.0"
deg_F = "69.8"

[outdoor_temperature]
deg_C = "8.9"
deg_F = "48.0"

[indoor_humidity]
percent = "27.0"

[outdoor_humidity]
percent = "37.0"

[dewpoint]
deg_C = "-4.7"
deg_F = "23.5"


Tuossa on siis vain pätkä siitä. Nuo lainausmerkeissä olevat numerot päivittyvät 8 sekunnin välein.
=-merkkiä ennen oleva teksti (esim. deg_C = "-4.7") on kiinteä.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: weatherc - tiistai, 13.05.2008, 22:31
Ok..
Kokeile tällaista:

$contents = implode('\n', file($filename));
print_r($contents);

ja kerro mitä se antaa ulos.
tuo print_r-komento on muuten kätevä juuri array-rakentelussa koska se antaa ulos arrayn rakenteen josta helppo löytää etsimäsi.
tuo \n tarkoittaa rivinvaihtoa (näkymätön).

Henkka
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - keskiviikko, 14.05.2008, 16:59
Tässä kaksi eri testiä:

1.

PHP-skripti, ilman - echo "$contents"; tulostusskriptiä.
<?php
$filename 
"currdat.lst";
$contents implode('\n'file($filename));
print_r($contents);
?>



2. PHP-skripti, tulostusskriptin kanssa.
<?php
$filename 
"currdat.lst";
$contents implode('\n'file($filename));
print_r($contents);
echo 
"$contents";
?>



Täällä sitten tulokset:

Skripti 1. (PHP-skripti, ilman - echo "$contents"; tulostusskriptiä.)
[Poistin linkit, koska Php-skriptivyyhti selvisi jo. ;)]

Skripti 2. (PHP-skripti, tulostusskriptin kanssa.)
[Poistin linkit, koska Php-skriptivyyhti selvisi jo. ;)]


Nuo sivuilleni johtavat linkit ovat:
jotka


Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: weatherc - torstai, 15.05.2008, 02:50
Ok, peruutan sen implode-systeemin, otin kopion sun currdat-filusta ja kokeilin vähäsen..

Tässä tulos:
<?php
$filename 
"currdat.lst";
    
$fp fopen($filename,"r");
    
$f_contentfread($fpfilesize($filename));
    
fclose($fp);
    
$fnotes explode("\n",$f_content);
print_r($fnotes);
echo 
'<br/><br/>';
$testi $fnotes[29];  // Otetaan no 29 arraysta joka on ulkolämpötila celsiusasteissa
$testi substr($testi8, -2);  // Poimitaan ulos pelkkä data => deg_C ="2.1" ottaen huomioon että molemmissa päissä tyhjä väli                                                        
echo "<b>Ulkolämpötila:</b> $testi";
?>


Tuon print_r-toiminnon voi poistaa kun ei enää tarvi mutta rakennus-vaiheessa erittän kätevä jotta saa selville jokaisen datan numeron array:ssa.

Henkka
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - torstai, 15.05.2008, 14:37
SE TOIMII VIHDOINKIN! ;D
Kunhan vähän vielä testailen, saan kerrottua enemmän.

Lämpimät kiitokset weatherc:lle ja J.Jäntille, jotka auttoivat miestä mäessä!

Pieni korjaus kuitenkin, kohdassa $testi = substr($testi, 8, -2); pitäisi olla kai, että
$testi = substr($testi, 9, -2); .
Tulee ilman turhaa yhtä "-merkkiä.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: weatherc - torstai, 15.05.2008, 15:10
Hieno juttu!  ;D

Juu, tuota
$testi = substr($testi, 9, -2);
kannattaa pitää vähän silmällä ja tehdä tarvittavia säätöjä ja tarvittaessa lisätä pätkä:
$testi = str_replace('"', '', $testi);
jolloin se poistaa "-merkin, huomaa että nuo merkit ovat(' " ', ' '... noin väljennetyssä muodossa.

Nuo arrayt ovat ihan käteviä vempimia kun oppii miten ne toimii, ne ovat erittäin hyödyllisiä. Omalla sivullani on paljon niitä käytössä eri takoituksiin. php on siitä hyvä kieli että sillä melkein rajattomat mahdollisuudet mitä sillä voi tehdä..

Henkka

Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - torstai, 15.05.2008, 17:56
Tällä hetkellä en pysty tarjoamaan PHP-skriptiä yleisölle, sillä kotisivutilani ei tue PHP:tä. :-[
Ja vaikka tukisikin, niin skripti ei toimisi siellä. Palveluntarjoajan palvelimella ei ole currdat.lst-tiedostoa, ja vaikka sekin olisi, niin mikä päivittäisi sitä?

Tällaiseen "käytännön" ongelmaan törmäsin. Vai onko olemassa ohjelmaa, joka päivittäisi tietyn väliajoin jonkun tiedoston palvelimelle?
Minun tapauksessani PHP-skripti pitäisi omalla palvelimella suoritettuna ja "tulostettuna" lähettää kotisivutilantarjoajan pavelimelle, ilman suoritettavia PHP-rivejä. Kyllä kotisivutilan palvelin näyttää .php-päätteiset tiedostot, aivan samoin kuin Notepadissa.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: weatherc - torstai, 15.05.2008, 20:30
Tuon tiedoston päivittämisen serverille voi tehdä tekemällä batch-filun omalle koneelle jonka ajastaa Wintoosan system schedulerin kanssa. Itse sain tuossa edellispäivänä ekan sellaisen tehtyä kun tarttis saada yks päivämäärällä nimetty filu ajettua ylös, tosin se batch ei ole vielä käytössä, testattu kyllä että toimii.

Henkka
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - torstai, 15.05.2008, 21:44
Lainaus käyttäjältä: weatherc - torstai, 15.05.2008, 20:30
Tuon tiedoston päivittämisen serverille voi tehdä tekemällä batch-filun omalle koneelle jonka ajastaa Wintoosan system schedulerin kanssa. Itse sain tuossa edellispäivänä ekan sellaisen tehtyä kun tarttis saada yks päivämäärällä nimetty filu ajettua ylös, tosin se batch ei ole vielä käytössä, testattu kyllä että toimii.

Henkka

Onko tämmöinen se system scheduler?
http://www.splinterware.com/products/wincron.htm

...ja sittenkö se .bat-tiedosto?
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: J.Jäntti - torstai, 15.05.2008, 22:38
Lainaus käyttäjältä: Meteorologi - torstai, 15.05.2008, 17:56
Tällaiseen "käytännön" ongelmaan törmäsin. Vai onko olemassa ohjelmaa, joka päivittäisi tietyn väliajoin jonkun tiedoston palvelimelle?
Minun tapauksessani PHP-skripti pitäisi omalla palvelimella suoritettuna ja "tulostettuna" lähettää kotisivutilantarjoajan pavelimelle, ilman suoritettavia PHP-rivejä. Kyllä kotisivutilan palvelin näyttää .php-päätteiset tiedostot, aivan samoin kuin Notepadissa.

WUHU kykenee lähettämään currdat.lst-filun ihan suoraan käyttäen Windows:n omaa ftp-ohjelmaa. Jos sinulla on käytössä WUHU:sta versio v216- siellä Alerts/Actions-napin takana on pelottavan näköinen säätömahdollisuuksien armada.

Olen järjestänyt oman automaattilähetykseni näin:

-- Main Action/Alert Configuration --
[X] Enable Actions
(o) Repetitions   1

-- WUHU Operation Alarms/Actions --
[X] On Weather Update
    [X] On Update Seconds   300

[Sound/Action] -nappi:
-- Action on Activation --
silent:C:\WINDOWS\System32\ftp.exe "-s:C:\WINDOWS\Scripts\wu.ftp"

Huomioitavaa:
(o) Repetitions  1
Tarkoittaa, kuinka moneen kertaan WUHU:n tulee tuo Actioni ajaa, kun määritetty hälytys tai asia Actionin päälle liipaisee.

[X] On Update Seconds   300
Tarkoittaa, että ylempänä oleva On Weather Update-kohta ajetaan vain kerran 300 sekunnissa (=5 minuutissa), vaikka Weather Update tulisikin sääasemakonsolilta useammin. Weather Update:lla tarkoitetaan sitä hetkeä, kun säätiedot tulevat konsolista ja WUHU sen näyttää.

Action on Activation:
silent:C:\WINDOWS\System32\ftp.exe "-s:C:\WINDOWS\Scripts\wu.ftp"
Tällä komennolla WUHU kutsuu Windows:in ftp.exe:ä suorittamaan siirto siten, kuin tiedostossa wu.ftp on komennettu. "silent:"-etuliite aiheuttaa sen, ettei erillistä Command Prompt-ikkunaa läpsähdä keskelle ruutua joka kerta, kun WUHU suorittaa komennon.

On tärkeää laittaa tuo komento täsmälleen tuossa muodossa kaikkine lainausmerkkeineen päivineen, muutoin siirtoa ei tapahdu.
Itselläni tuo toimii aivan loistavasti ja täysin läpinäkyvästi. Skripti ajaa serverilläni IP-kameran ottaman kuvan Weather Undergroundin kuvapankkiin joka 5. minuutti.

Käytössäni oleva versio WUHU:sta on v216 Beta 37.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: weatherc - torstai, 15.05.2008, 22:42
Lainaus käyttäjältä: Meteorologi - torstai, 15.05.2008, 21:44
Onko tämmöinen se system scheduler?
http://www.splinterware.com/products/wincron.htm

Esimerkiksi tuo, käytän itse tuota ja olen erittäi tyytyväinen siihen tai sit voi käyttää sitä Windowsin omaa tehtävä-ajastinta.

Lainaus käyttäjältä: Meteorologi - torstai, 15.05.2008, 21:44
...ja sittenkö se .bat-tiedosto?

Tässä tulee sen jonka minä tein:
Ensin ns01.bat:


ftp -s:NS01 sinunsivu.net


Sitten NS01 (ilman mitään tieostotunnistetta!)

ftptunnus
salasana
cd public_html/kansio
put D:\currdat.lst
close



Tallenna molemmat filut samaan kansioon ja klikkaa ns01.bat:ia, ptäisi avautua dos-ikkuna joka kertoo mitä se tekee. Omalla kohdalla se vaati hiemän säätöä ennen kun onnistui. Sitten kun homma toimii voi lisätä NS01-filuun uusi rivi jossa "quit" jolloin se sulkee itsenä automaattisesti.

Henkka
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - perjantai, 16.05.2008, 18:48
Kiitos (jälleen) avusta!  :)
Pitääpä katsella noita Wuhu-toimintoja ja noita System schedulereja.

Jotta yksikään skripti kuitenkaan näkyisi, minun täytyy hankkia PHP-tukinen kotisivutila. Tai sitten oma palvelin, tosin siihen tarkoitukseen sopivaa tietokonetta ei ole. Pitänee mietiskellä ja haudutella asioita...
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: weatherc - perjantai, 16.05.2008, 20:46
Suosittelen aluksi kotisivutilan vuokraamista, eivät maksa paljoa (99%:lla php-tuki) ja vältä ilmaisia jo sekin takia että ne eivät välttämättä "tykkää" jatkuvasta päivittämisestä jota wx-asema harrastaa ja myöhemmässä vaiheessa sitten ehkä oman palvelimen vuokraamista jos ja kun tarvetta siihen on.
Muista tarkistaa että liikenneraja on riittävän suuri, esimerkkinä voin antaa seuraavan:
Kyseessä pelkkä Nexstormin kartta-kuva, koko 65kb:

Upload joka minuutti tekee kuukaudessa 1.35 Gb
Skenaario että 1 vieras katselee sitä kuukauden ja sinulla minuutin välein auto-refresh syö kaistaa n 2.7 Gb ;D

Nuo tuli laskeltua kun omaa tutkasivua optimoin, eivät ole mitattuja arvoja. Eli kaistaa täytyy olla jonkun verran...

Henkka
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - perjantai, 16.05.2008, 21:00
Joo, tuo on ihan hyvä vaihtoehto ostaa/vuokrata kotisivutilaa.
Ajattelin kyllä ihan "iki iki oman" palvelimen hankkimista. Jostain jos saisi hankittua vanhahkon tietokoneen hyvässä kunnossa. Saa määrätä omalla koneella kaikesta.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: J.Jäntti - perjantai, 16.05.2008, 23:42
Lainaus käyttäjältä: weatherc - perjantai, 16.05.2008, 20:46
Upload joka minuutti tekee kuukaudessa 1.35 Gb
Skenaario että 1 vieras katselee sitä kuukauden ja sinulla minuutin välein auto-refresh syö kaistaa n 2.7 Gb ;D

Aika tarkkaan näin. :) FinWX:n kuvapankin liikenne räjähti käsiin tämän kuluvan kuun aikana, kun suoritin sinne siirtoja ja sieltä luettiin dataa. Kokonaisliikenne on puolessa välissä kuuta heilahtanut jo 4.3 Gigatavuun, joka on 16-kertainen määrä siirrettyä dataa, kuin Huhtikuussa, jolloin FinWX aloitti.

Itselläni on oma serveri kotona ja sen hallinnoima ADSL-kaista riittänee nyt vastaamaan sille ihmismassalle, joka saattaa hyökätä paikalle seuraamaan tutkaa, jos käy niin, että merkittävä myräkkä uhkaa Helsinkiä, kuten kävi Elokuussa 2007.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - sunnuntai, 15.06.2008, 21:07
Kertoisitteko dynaamisista web-sivuista? Minä en ymmärrä hölkäsen pöläystä niistä!  :-[
Miten toimii jne.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: weatherc - sunnuntai, 15.06.2008, 21:21
Se on oikeastaan että osa sivun datasta rakennetaan "paikan päällä" eikä ole koodattu koodin sisään kuten normaali staattien html-sivu, esimerkkinä:


<?
$aloitus = "100";
$testi = (23 * $aloitus);
echo "Testiluku: $testi";
?>


Tuo pätkä antaa ulos "Testiluku: 2300" eli $testi on dynaaminen muuttuja jota voi muuttaa antamalla eri luku $aloitus-tagiin, normaalissa html-sivussa sun täytyy laittaa koodiin "testiluku: 2300" eikä tuo luku ole siten dynaaminen vaan se on siinä ja pysyy.

Henkka
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - sunnuntai, 15.06.2008, 21:36
Jaa, no nyt alkaa selviämään!  :)
Mutta entä kokonaiset sivut? Esimerkiksi sinun sivuilla voi nähdä:
index.php?sivu=100   .
Ja tuo on kokonainen yksittäinen rakenteellinen sivu.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: weatherc - sunnuntai, 15.06.2008, 21:57
Se toimii ihan samlla periatteella, lyhyesti näin:

ensin haen tuon sivu-parametrin talteen vaikka näin:

$sivu = $_GET[sivu];

Nyt mulla luku 100 tallessa. Index.php-sivulla on sitten kohdassa missä itse sivu alkaa (siis siinä kohtaa koodia jossa, tässä tapauksessa, yläreuna ja sivulaita ladattu) niin ei tulekkaan sivun koodia vaan tyyliin:

include "$sivu.php";

jolloin se lataa kyseisen sivun siihen. Tällä tyylillä mun ei tarvi tehdä jokaiselle sivulle koko sivua vaan pelkästään se main-osa siitä ja koko homman kasaajana toimii tuo index.php. Siten on myös muokkaaminen helppoa, ei tarvi muuttaa kun yhdestä kohtaa ja muutos näkyy koko sivulla.
Tuota sivu-parametriä käytän sitten muuhunkin, kuten sivulaidan rakenteluun, eli sivunumeron perusteella näytetään eri asioita, esimerkkinä sivu-laidan menu, se on täysin php/css-ohjattu eli käytännössä sivunumeron perusteella noita ala-meuita näytellään eikä ensmäistäkään javaskriptiä siihen tarvita. Jos vertaat sääsivun ja sääverkon sivulaitaa ne ovat täysin erinäköisiä mutta ne ajetaan samalla skriptillä juuri tuota sivunumeroa käyttäen tyylillä:

if($sivu < 100) {
echo "päläpälä";
} else {
echo "pulupulu";
}

;D

Henkka
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - sunnuntai, 15.06.2008, 22:12
Lainaus käyttäjältä: weatherc - sunnuntai, 15.06.2008, 21:57
Se toimii ihan samlla periatteella, lyhyesti näin:

ensin haen tuon sivu-parametrin talteen vaikka näin:

$sivu = $_GET[sivu];

Nyt mulla luku 100 tallessa. Index.php-sivulla on sitten kohdassa missä itse sivu alkaa (siis siinä kohtaa koodia jossa, tässä tapauksessa, yläreuna ja sivulaita ladattu) niin ei tulekkaan sivun koodia vaan tyyliin:

include "$sivu.php";

jolloin se lataa kyseisen sivun siihen. Tällä tyylillä mun ei tarvi tehdä jokaiselle sivulle koko sivua vaan pelkästään se main-osa siitä ja koko homman kasaajana toimii tuo index.php. Siten on myös muokkaaminen helppoa, ei tarvi muuttaa kun yhdestä kohtaa ja muutos näkyy koko sivulla.
Tuota sivu-parametriä käytän sitten muuhunkin, kuten sivulaidan rakenteluun, eli sivunumeron perusteella näytetään eri asioita, esimerkkinä sivu-laidan menu, se on täysin php/css-ohjattu eli käytännössä sivunumeron perusteella noita ala-meuita näytellään eikä ensmäistäkään javaskriptiä siihen tarvita. Jos vertaat sääsivun ja sääverkon sivulaitaa ne ovat täysin erinäköisiä mutta ne ajetaan samalla skriptillä juuri tuota sivunumeroa käyttäen tyylillä:

if($sivu < 100) {
echo "päläpälä";
} else {
echo "pulupulu";
}

;D

Henkka


Kiitos!
Nyt asiat valkenevat, kuin mustan verhon olisi vetäissyt pois!  :D
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: weatherc - sunnuntai, 15.06.2008, 23:07
Hieano homma!

Henkka
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - maanantai, 16.06.2008, 08:08
Aion ruveta harjoittelemaan pian noita rakenteita.  :)
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - maanantai, 07.07.2008, 12:42
Lainaus käyttäjältä: J.Jäntti - torstai, 15.05.2008, 22:38
Lainaus käyttäjältä: Meteorologi - torstai, 15.05.2008, 17:56
Tällaiseen "käytännön" ongelmaan törmäsin. Vai onko olemassa ohjelmaa, joka päivittäisi tietyn väliajoin jonkun tiedoston palvelimelle?
Minun tapauksessani PHP-skripti pitäisi omalla palvelimella suoritettuna ja "tulostettuna" lähettää kotisivutilantarjoajan pavelimelle, ilman suoritettavia PHP-rivejä. Kyllä kotisivutilan palvelin näyttää .php-päätteiset tiedostot, aivan samoin kuin Notepadissa.

WUHU kykenee lähettämään currdat.lst-filun ihan suoraan käyttäen Windows:n omaa ftp-ohjelmaa. Jos sinulla on käytössä WUHU:sta versio v216- siellä Alerts/Actions-napin takana on pelottavan näköinen säätömahdollisuuksien armada.

Olen järjestänyt oman automaattilähetykseni näin:

-- Main Action/Alert Configuration --
[X] Enable Actions
(o) Repetitions   1

-- WUHU Operation Alarms/Actions --
[X] On Weather Update
    [X] On Update Seconds   300

[Sound/Action] -nappi:
-- Action on Activation --
silent:C:\WINDOWS\System32\ftp.exe "-s:C:\WINDOWS\Scripts\wu.ftp"

Huomioitavaa:
(o) Repetitions  1
Tarkoittaa, kuinka moneen kertaan WUHU:n tulee tuo Actioni ajaa, kun määritetty hälytys tai asia Actionin päälle liipaisee.

[X] On Update Seconds   300
Tarkoittaa, että ylempänä oleva On Weather Update-kohta ajetaan vain kerran 300 sekunnissa (=5 minuutissa), vaikka Weather Update tulisikin sääasemakonsolilta useammin. Weather Update:lla tarkoitetaan sitä hetkeä, kun säätiedot tulevat konsolista ja WUHU sen näyttää.

Action on Activation:
silent:C:\WINDOWS\System32\ftp.exe "-s:C:\WINDOWS\Scripts\wu.ftp"
Tällä komennolla WUHU kutsuu Windows:in ftp.exe:ä suorittamaan siirto siten, kuin tiedostossa wu.ftp on komennettu. "silent:"-etuliite aiheuttaa sen, ettei erillistä Command Prompt-ikkunaa läpsähdä keskelle ruutua joka kerta, kun WUHU suorittaa komennon.

On tärkeää laittaa tuo komento täsmälleen tuossa muodossa kaikkine lainausmerkkeineen päivineen, muutoin siirtoa ei tapahdu.
Itselläni tuo toimii aivan loistavasti ja täysin läpinäkyvästi. Skripti ajaa serverilläni IP-kameran ottaman kuvan Weather Undergroundin kuvapankkiin joka 5. minuutti.

Käytössäni oleva versio WUHU:sta on v216 Beta 37.


Yritin saada tuon wu.ftp-skriptin lähettämään currdat.lst:n nettiin, mutta ongelmaksi muodostui se, ettei konellani ole wu.ftp-skriptiä. Eikä Windows-kansiossa ole edes olemassakaan sellaista, kuin Scripts-alikansio.

Mitä pitäisi siis tehdä, että saisin tuon lähetyksen pyörimään? Pitäisikö luoda tuo skripti käsin?  ???
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: J.Jäntti - maanantai, 07.07.2008, 16:11
Lainaus käyttäjältä: Meteorologi - maanantai, 07.07.2008, 12:42
Yritin saada tuon wu.ftp-skriptin lähettämään currdat.lst:n nettiin, mutta ongelmaksi muodostui se, ettei konellani ole wu.ftp-skriptiä. Eikä Windows-kansiossa ole edes olemassakaan sellaista, kuin Scripts-alikansio.
Mitä pitäisi siis tehdä, että saisin tuon lähetyksen pyörimään? Pitäisikö luoda tuo skripti käsin?  ???

Kyseessä oli vain esimerkki, jota seuraamalla ja soveltamalla se omaan järjestelmään paremmin istuvaksi se saadaan toimimaan.

Scripts-alihakemistoa ei ole missään tapauksessa pakko luoda, vaan se voi olla muuallakin. Silloin tuo polkumääritys täytyy vain osoittaa sinne, minne tuon kansion luot

Samat asiat pätevät myös wu.ftp-tiedostoon: Sen ei edes tarvitse olla tuon niminenkään, vaan se voi olla vaikka ftp.txt. wu.ftp-skripti on käytännössä vain vastaustiedosto Microsoftin omalle ftp.exe-ohjelmalle ja sinne kirjoitetaan ne komennot, jotka kirjoittaisit itse, kun käytät kyseistä ohjelmaa.

Tältä näyttää minun wu.ftp-tiedoston sisältö (kaikki ne kohdat, jotka sinun tulee täyttää vastaamaan omaa tilannettasi, ovat merkitty Lihavoituna ja kursiivilla:
Lainaus käyttäjältä: wu.ftp
open webcam.wunderground.com
Käyttäjätunnus
Salasana
lcd X:\paikka\jossa\kuva\on
bin
put webcam-kuvatiedoston_nimi.jpg
close

Jos törmäät vielä ongelmiin, niin kysy pois. Apu on lähellä. :)
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - maanantai, 07.07.2008, 17:24
Minun ei siis pidä vaihtaa kohtaan "open webcam.wunderground.com" omaa kotisivutilaani?
Salasana ja käyttäjätunnus olisivat sitten Wunderground-palvelun?

Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: J.Jäntti - maanantai, 07.07.2008, 19:32
Lainaus käyttäjältä: Meteorologi - maanantai, 07.07.2008, 17:24
Minun ei siis pidä vaihtaa kohtaan "open webcam.wunderground.com" omaa kotisivutilaani?
Salasana ja käyttäjätunnus olisivat sitten Wunderground-palvelun?

Ok, minulta jäi tuo kohta kokonaan huomiotta.
Jos sinulla on oma kotisivutila, niin silloin tuo "open webcam.wunderground.com" siten, että "webcam.wunderground.com"-kohdan muutat omaa kotisivutilasi FTP-serverin osoitteeksi.

Eli jos otamme uudestaan tuon skriptin ja kuvittelemme, että lähetät kotisivutilaasi currdat.lst-tiedoston niin tuo ftp.exe:n vastaustiedosto näyttäisi jotakin tällaiselta:
Lainaus käyttäjältä: "currdat_siirtaja.txt
open ftp-serveri.palveluntarjoajallasi.fi
Käyttäjätunnus
Salasana
lcd X:\polku\jossa\currdat-filu\on
ascii
put currdat.lst
close

Vaihtamalla lihavoidulla kursiivilla varustetut kohdat vastaamaan kotisivutilasi tietoja ja oman koneesi paikkoja, saat koneesi ftp.exe:n toimimaan täysautomaattisesti.

WUHU:n suhteen tilanne on se, että siitä on jo versio 216.46. Itselläni on 216.42 käytössä, eli nuo ohjeet, jotka ovat tässä viestiketjussa ovat vanhentuneet aika pahasti. Kannattaa asentaa tuo 216.46 piakkoin, sillä se sisältää paremmat mahdollisuudet WUHU:lle ohjata esim. noita tiedoston lähetyksiä. Saat sen itsellesi vaikkapa tästä linkistä (http://home.comcast.net/~wuhu_software/files/WUHU216_32_B46.zip).

Dokumenttien mukaan 216.46:ssa on FTP-siirto sisäänrakennettuna, mutta se on vasta beta-vaiheessa, joten suosittelen käyttämään käyttöjärjestelmän FTP.EXE:ä ainakin tässä vaiheessa.

Opastan sinut mielelläni tuon WUHU:n ohjaustiedoston luonnissa, sillä sellainen on minulla käytössäni.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - maanantai, 07.07.2008, 21:06
Sain manuaalisesti currdat.lst:n laitettua nettiin ftp.exellä, mutta WUHU ei osaa laittaa automaattisesti sitä.
Laitoin siis "currdat_siirtaja.txt"n koodini samanlaisena suoraan ftp.exeen.
Siirto onnistui noin hyvin, mutta WUHU ei siirrä kertaakaan sitä. Ja Action on Activation-kohdassa polkujen pitäisi olla ihan oikein.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: J.Jäntti - tiistai, 08.07.2008, 07:44
Lainaus käyttäjältä: Meteorologi - maanantai, 07.07.2008, 21:06
Sain manuaalisesti currdat.lst:n laitettua nettiin ftp.exellä, mutta WUHU ei osaa laittaa automaattisesti sitä.
Laitoin siis "currdat_siirtaja.txt"n koodini samanlaisena suoraan ftp.exeen.
Siirto onnistui noin hyvin, mutta WUHU ei siirrä kertaakaan sitä. Ja Action on Activation-kohdassa polkujen pitäisi olla ihan oikein.

Jännä juttu sinällään. Puretaanpas ongelmaa hieman. Tuleeko WUHU:n lokitietoihin herjaa siirtovaiheessa? Mitä sinulla lukee Action on Activation-polussa?
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - tiistai, 08.07.2008, 08:48
Ei ole loissa mitään merkintää.
Polussa lukee: silent:C:\WINDOWS\system32\ftp.exe "-s:C:\Documents and Settings\All Users\crtd.txt"
ja tuota ennen NWN-template skritpti, välillä monta välilyöntiä.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: J.Jäntti - tiistai, 08.07.2008, 10:18
Lainaus käyttäjältä: Meteorologi - tiistai, 08.07.2008, 08:48
Ei ole loissa mitään merkintää.
Polussa lukee: silent:C:\WINDOWS\system32\ftp.exe "-s:C:\Documents and Settings\All Users\crtd.txt"
ja tuota ennen NWN-template skritpti, välillä monta välilyöntiä.

Kokeile tätä (ota kaikki lainausmerkit mukaan, vaikka se näyttäisikin hölmöltä):
silent:"C:\WINDOWS\system32\ftp.exe "-s:C:\Documents and Settings\All Users\crtd.txt""

Kerro, miten toimi vai toimiko ollenkaan. Jos ei toiminut, niin lähden metsästämään noita ohjeita vähän lisää.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - torstai, 10.07.2008, 21:21
Lainaus käyttäjältä: J.Jäntti - tiistai, 08.07.2008, 10:18
Lainaus käyttäjältä: Meteorologi - tiistai, 08.07.2008, 08:48
Ei ole loissa mitään merkintää.
Polussa lukee: silent:C:\WINDOWS\system32\ftp.exe "-s:C:\Documents and Settings\All Users\crtd.txt"
ja tuota ennen NWN-template skritpti, välillä monta välilyöntiä.

Kokeile tätä (ota kaikki lainausmerkit mukaan, vaikka se näyttäisikin hölmöltä):
silent:"C:\WINDOWS\system32\ftp.exe "-s:C:\Documents and Settings\All Users\crtd.txt""

Kerro, miten toimi vai toimiko ollenkaan. Jos ei toiminut, niin lähden metsästämään noita ohjeita vähän lisää.

Ei toimi.
Olen itekin testaillut lähes kaikki lainausmerkkki-kirjain-yhdistelmät ties missä järjestyksessä, mutta ei vaan toimi. :'(

Epäilen syyksi tuota toista Action on Activation-kohtaa. Siinä on nyt siis kaksi eri tehtävää, NordicWeather Networkin template-skripti ja nyt tuo FTP-currdat-skripti.
Ne saattavat sotkea jotenkin FTP-skriptiä, kun niiden välillä on vain monta välilyöntiä.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: J.Jäntti - perjantai, 11.07.2008, 09:21
Lainaus käyttäjältä: Meteorologi - torstai, 10.07.2008, 21:21
Ei toimi.
Epäilen syyksi tuota toista Action on Activation-kohtaa. Siinä on nyt siis kaksi eri tehtävää, NordicWeather Networkin template-skripti ja nyt tuo FTP-currdat-skripti.
Ne saattavat sotkea jotenkin FTP-skriptiä, kun niiden välillä on vain monta välilyöntiä.

Eipä hätää. Jos päivität viimeisimpään WUHU:n versioon, saat käyttöösi "Yksi Action, monta tapahtumaa"-järjestelmän, joka sinne on luotu. Sen avulla saat Actioneihin mahdollisuuden ajaa useampaa ajastettua tapahtumaa yhtäaikaa. Nythän taitaa sinulla olla käytössä sellainen versio joka ei tue kuin yhtä tapahtumaa kerrallaan.

Järjestelen sinulle tiedot siitä miten tuota järjestelmää ohjataan tämän viikonlopun aikana.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - perjantai, 11.07.2008, 09:57
Onko se uusin versio se BETA-versio?
Jos syy onkin siinä ohjelmaversiossa, ettei vanhat tue usean toiminnon skriptin ajoa, syy taisi selvitä.

Lainaus käyttäjältä: J.Jäntti - perjantai, 11.07.2008, 09:21
Eipä hätää. Jos päivität viimeisimpään WUHU:n versioon, saat käyttöösi "Yksi Action, monta tapahtumaa"-järjestelmän, joka sinne on luotu. Sen avulla saat Actioneihin mahdollisuuden ajaa useampaa ajastettua tapahtumaa yhtäaikaa. Nythän taitaa sinulla olla käytössä sellainen versio joka ei tue kuin yhtä tapahtumaa kerrallaan.

Järjestelen sinulle tiedot siitä miten tuota järjestelmää ohjataan tämän viikonlopun aikana.

Jälleen kiitos Sinulle, kun jaksat auttaa minua!
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: J.Jäntti - perjantai, 11.07.2008, 10:21
Lainaus käyttäjältä: Meteorologi - perjantai, 11.07.2008, 09:57
Onko se uusin versio se BETA-versio?
Jos syy onkin siinä ohjelmaversiossa, ettei vanhat tue usean toiminnon skriptin ajoa, syy taisi selvitä.

Se on todennäköisin syy.
Mielestäni tuo usean toiminnon ajaminen yhdellä Actionilla on tullut versio 216.42:n myötä ja nyt saatavilla oleva versio 216.48, joka on saatavilla täältä (http://home.comcast.net/~wuhu_software/files/WUHU216_32.zip). 48-päivityksessä on kuulemma sisäänrakennettu FTP-siirtokin jo olemassa (FTPS tulossa), joten se eliminoisi tarpeen käyttää Windowsin omaa FTP.exeä ja samalla eliminoisi myös silent:-järjestelmän käyttämisen tarpeen. Itse asennan tuon version tuotantoserverille tämän viikonlopun aikana huoltoajon aikana ja testaan tuota siirtoa Weather Undergroundin webcam-palveluun.

Lainaus käyttäjältä: Meteorologi - perjantai, 11.07.2008, 09:57
Jälleen kiitos Sinulle, kun jaksat auttaa minua!
Eipä kestä. :) Koska olen ollut WUHU:n kanssa tekemisissä pidemmän aikaa, olen suhteellisen hyvin selvillä siitä, mitä toimintoja ohjelmassa on ja pyrin auttamaan parhaani mukaan niitä kotimaisia sääasemia, jotka tuota softaa käyttävät.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - perjantai, 11.07.2008, 15:09
Antamastasi latauslinkistä saa version, joka on jo minulla. Aiemmassa postauksessasi oleva lataslinkki johtaa Error 403-sivulle.

Eli minulla on jos siis 216_32, mutta betaa en voi ladata.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: J.Jäntti - lauantai, 12.07.2008, 01:53
Lainaus käyttäjältä: Meteorologi - perjantai, 11.07.2008, 15:09
Antamastasi latauslinkistä saa version, joka on jo minulla. Aiemmassa postauksessasi oleva lataslinkki johtaa Error 403-sivulle.

Eli minulla on jos siis 216_32, mutta betaa en voi ladata.

Käynnistäessäsi WUHU:n, se heittää logiin merkinnän, joka on jotakuinkin tämän näköistä:
Lainaus käyttäjältä: WUHU
Mon Jul 07 15:38:01 2008 > WUHU Application Started (1, 0, 216, 42)
Lihavoituna on sen beta- tai tuotantoversio. Viimeisin postaamani linkki on tuotantoversion linkki. Aiemman postauksen latauslinkki taasen pistetään hengiltä, kun betasta tulee virallinen tuotantoversio.
Jos käytät viimeisintä linkkiäni, saat todennäköisimmin 216.48-version.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - lauantai, 12.07.2008, 12:31
Latasin ja asensin nyt 216_48-version.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - keskiviikko, 06.08.2008, 16:21

Pari kysymystä:
1. Millä koodilla pyöristetään CBI-indeksi?
2. Miten saadaan CBI-indeksiin alueelle 40-100 arvo "Keskitaso"?
3. Kuinka helleindeksi lasketaan?
4. Ja aiemman topicin kysymys, miten absoluuttinen kosteus lasketaan?
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - keskiviikko, 06.08.2008, 16:26
Entä onko teillä mitään lisättävää skriptiini?
Haluaisitteko vaikka muita yksiköitä lukemiin, tai vähän väriä?
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - keskiviikko, 06.08.2008, 19:48
Lainaus käyttäjältä: Meteorologi - keskiviikko, 06.08.2008, 16:21

Pari kysymystä:
1. Millä koodilla pyöristetään CBI-indeksi?
2. Miten saadaan CBI-indeksiin alueelle 40-100 arvo "Keskitaso"?
3. Kuinka helleindeksi lasketaan?
3. Ja aiemman topicin kysymys, miten absoluuttinen kosteus lasketaan?

Sain tiedot:
1. round($metsapaloindeksi,3)
3. löysin kaavan.
4. aika pitkän työn tulos oli tuon kaavan hankkiminen.

Kakkosta en osaa vielä koodata.

Nyt on jo aika matemaattinen tuo skripti.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - keskiviikko, 06.08.2008, 20:07
Miten sinä, Juha, teet nuo hienot väriefektit PHP-lukijaskriptissä?

Minulla on vain tällä hetkellä mustavalko-skripti, ja olisi kiva saada väriä elämään.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: weatherc - keskiviikko, 06.08.2008, 20:38
Tämä pätee sekä tuon "keskitaso"- että värieffekttin:

if($metsapaloindexi > 50) {
$mbi = '<font color="#654567">' . $mestapaloindexi . '</font>';
} else {
$mbi = '<font color="#000000">' . $mestapaloindexi . '</font>';
}

Tällä esimerkissä $mbi:n väriä muutetaan jos indexi yli 50 muuten se on musta. "keskitaso"-sanan saa samlla kaavalla:

if($metsapaloindexi > 50) {
$mbi = '<font color="#654567">Keskitaso</font>';
} else {
$mbi = '<font color="#000000">Matala</font>';
}
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: J.Jäntti - keskiviikko, 06.08.2008, 21:51
Weatherc ehtikin vastata tuohon, ennenkuin minä ehdin. Nopea mies, kertakaikkiaan. :)
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - keskiviikko, 06.08.2008, 22:12
Olen varsin tyytyväinen itseeni, kun sain noinkin (minulle ison) urakan valmiiksi.
Jopa ehtolauseet tuulensuuntien suomennoksille menivät isoitta ongelmitta.

Kommentteja otan vastaan erittäin mielellään.

Ja jos joku haluaa käsiinsä lähdekoodin, ottakoon minuun yhteyttä.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - keskiviikko, 06.08.2008, 22:12
Lainaus käyttäjältä: weatherc - keskiviikko, 06.08.2008, 20:38
Tämä pätee sekä tuon "keskitaso"- että värieffekttin:

if($metsapaloindexi > 50) {
$mbi = '<font color="#654567">' . $mestapaloindexi . '</font>';
} else {
$mbi = '<font color="#000000">' . $mestapaloindexi . '</font>';
}

Tällä esimerkissä $mbi:n väriä muutetaan jos indexi yli 50 muuten se on musta. "keskitaso"-sanan saa samlla kaavalla:

if($metsapaloindexi > 50) {
$mbi = '<font color="#654567">Keskitaso</font>';
} else {
$mbi = '<font color="#000000">Matala</font>';
}


Iso Kiitos!
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - torstai, 07.08.2008, 10:52
No entä jos haluaa indeksiin 40 asti arvon matala, 40-100 keskitaso ja yli 100 korkea?

Tuossa tekee hankalan keskitaso. Jotenkin näinkö:
else if ($metsapaloindeksi = > 40 < 100)
{
$tulostettava_metsaindeksin_kuvaaja = "Keskitaso";
}
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - torstai, 07.08.2008, 10:57
Kyhäilin ehtolauseet nyt tuohon METAR-säädataan, jonka WUHU myös kirjoittaa currdat.lst-tiedostoon.

Mukavaa hommaa tämä koodailu; virheistä oppii, vaikka joskus tekisi mieli viskata kone jorpakkoon.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - torstai, 07.08.2008, 12:49
Noniin.
Nyt sain sen lopullisesti valmiiksi, joten se on katsottavissa minun sivuilta!
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - torstai, 07.08.2008, 18:26
Olipas se kuitenkin aika yksinkertainen; eli miten saadaan joidenkin arvojen väliltä tehtävä.

    if($palo  > 97.5) {
$mbi = '<font color="#FF0000">Erittäin korkea</font>';
}


else if ($palo > 90)
{
  $mbi = '<font color="#800000">Hyvin korkea</font>';
}


else if ($palo > 75)
{
$mbi = '<font color="#FF7F00">Korkea</font>';
}

else if ($palo > 50)
{
$mbi = '<font color="#0000FF">Keskitaso</font>';
}

else
{
$mbi = '<font color="#008080">Matala</font>';
}
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: weatherc - torstai, 07.08.2008, 18:33
On se php loppujen lopuksi aikas helppoa tämmöisillä perus-juituilla ja kun kerran alkuun pääsee niin loppua ei nääy, aina haluaa keksiä otain uutta  ;D

Lainaa($metsapaloindeksi = > 40 < 100)

Tuosta sen verran että sen pitäisi olla:

(($metsapaloindeksi > 40) && ($metsapaloindeksi < 100)) tomiakseen
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - lauantai, 16.08.2008, 12:04
Entä löytyykö sellaista PHP-koodia, joka näyttäisi halutun kuvan, mikäli minun videokuvan lähetysosoite (eli esim. http://123.43.56.78:8081) on poissa?

Jos se stereamaus-osoite siis on olemassa, iframella se näytetään. Jos Yawcam on taas offline, eikä se lähetä videokuvaa, PHP-koodi näyttää haluamani kuvan iframen paikalla.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: J.Jäntti - lauantai, 16.08.2008, 15:44
Lainaus käyttäjältä: Meteorologi - lauantai, 16.08.2008, 12:04
Entä löytyykö sellaista PHP-koodia, joka näyttäisi halutun kuvan, mikäli minun videokuvan lähetysosoite (eli esim. http://123.43.56.78:8081) on poissa?

Jos se stereamaus-osoite siis on olemassa, iframella se näytetään. Jos Yawcam on taas offline, eikä se lähetä videokuvaa, PHP-koodi näyttää haluamani kuvan iframen paikalla.

Et välttämättä tarvitse PHP-skriptiä tuohon toimintoon, sillä tiettävästi Yawcamilla on olemassa tuollainen järjestelmä suoraan, että sen oma Java-katselupalikka käy tarkistamassa, onko kamera online-tilassa. Jos se ei ole, se heittää suoraa sinun määrittelemäsi kuvan streamin tilalle.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: J.Jäntti - lauantai, 16.08.2008, 19:21
Lainaus käyttäjältä: Hade - lauantai, 16.08.2008, 16:30
Tuota toimintoa olen etsinyt, ei löydy.
Ainoastaan kun pysäytät FTP, saa liitteenä olevan kuvan näkyviin

Tuntuu jotenkin oudolta, ettei sitä enää siinä olisi. Taidanpas vilkaista hieman tuota ohjelmaa uudelleen. Ei tuollaista toimintoa voida poistaa sieltä ilman, että siitä olisi tullut huutoa.

Tiettävästi tuo koskee sekä Yawcam:n Streamia, että FTP:tä.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: weatherc - lauantai, 16.08.2008, 21:04
Lainaus käyttäjältä: Meteorologi - lauantai, 16.08.2008, 12:04
Entä löytyykö sellaista PHP-koodia, joka näyttäisi halutun kuvan, mikäli minun videokuvan lähetysosoite (eli esim. http://123.43.56.78:8081) on poissa?

Jos se stereamaus-osoite siis on olemassa, iframella se näytetään. Jos Yawcam on taas offline, eikä se lähetä videokuvaa, PHP-koodi näyttää haluamani kuvan iframen paikalla.

Löysin tälaisen pikku php:n sitä varten:

/**
* Check if a url exists
*/
function url_exists($url)
{
    if(!strstr($url, "http://"))
    {
        $url = "http://".$url;
    }

    $fp = @fsockopen($url, 8081);

    if($fp === false)
    {
        return false;   
    }
    return true;
}


Vaihda tuo 80 siihen porttiin jota sulla käytössä.

toimii näin:

$urlcheck = url_exists(http://123.43.56.78);

if ($urlcheck == TRUE) {
// IFRAMEKOODI TÄHÄN
} else {
// OFFLINEKOODI TÄHÄN
}

;D ;D

Henkka
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: weatherc - lauantai, 23.08.2008, 22:45
Noniiin...

Jenkkinörteillä ww-foorumilla on tylsää, ovat pistäneet kasaan skriptin joka näyttää kaikki aurinko-tiedot käyttäen php:n sunrise/sunset-funktiota....Vaatii php5:sen...  ;D ;D ;D

Se näyttää tiedot käyttäen aikavyöhykettä sekä koordinaatteja, alla oleva tulos on säädetty Halikolle...
Hmmm...Tuotahan vois käyttää vaikka mihin sivuilla... ;)

Tässä tulos:

LainaaTänään
Aurinko nousee: 05:02
Aurinko laskee: 19:57
Aamuhämärä alkaa: 04:16
Iltahämärä päättyy: 20:43
Merellinen hämärä alkaa: 03:11
Merellinen hämärä päättyy: 21:48
Tähtitaivas alkaa vaaleta: 01:25
Tähtitaivas on tummunut: 23:34
Valoisan ajan pituus: 16:27
Päivän pituus: 14:55

Huomenna
Aurinko nousee: 05:04
Aurinko laksee: 19:54
Aamuhämärä alkaa: 04:19
Iltahämärä päättyy: 20:39
Merellinen hämärä alkaa: 03:14
Merellinen hämärä päättyy: 21:44
Tähtitaivas alkaa vaaleta: 01:35
Tähtitaivas on tummunut: 23:23
Valoisan ajan pituus: 16:20
Päivän pituus: 14:50

Valoisan ajan ero verrattuna eiliseen: -7 minuuttia
Päivän pituuden ero verrattuna eiliseen: -5 minuuttia


Ja tässä koodi:

<?php
// set elsewhere
# or use on style "US/Phoenix" "US/Eastern" "US/Pacific"...
$SITE['TZ'] = "Europe/Helsinki";  
$SITE['LAT'] = 60.38426;
$SITE['LONG'] = 23.06889;

get_times();

echo 
"<b>Tänään</b><br/>\n";
echo 
"Aurinko nousee: " $VALS['sunrise'] . "<br/>\n";
echo 
"Aurinko laskee: " $VALS['sunset'] . "<br/>\n";
echo 
"Aamuhämärä alkaa: " $VALS['civiltwstart'] . "<br/>\n";
echo 
"Iltahämärä päättyy: " $VALS['civiltwend'] . "<br/>\n";
echo 
"Merellinen hämärä alkaa: " $VALS['nauticaltwstart'] . "<br/>\n";
echo 
"Merellinen hämärä päättyy: " $VALS['nauticaltwend'] . "<br/>\n";
echo 
"Tähtitaivas alkaa vaaleta: " $VALS['astrotwstart'] . "<br/>\n";
echo 
"Tähtitaivas on tummunut: " $VALS['astrotwend'] . "<br/>\n";
echo 
"Valoisan ajan pituus: " $VALS['lenvislight'] . "<br/>\n";
echo 
"Päivän pituus: " $VALS['lenofday'] . "<br/>\n";

echo 
"<br/>\n<b>Huomenna</b><br/>\n";

echo 
"Aurinko nousee: " $VALS['tsunrise'] . "<br/>\n";
echo 
"Aurinko laksee: " $VALS['tsunset'] . "<br/>\n";
echo 
"Aamuhämärä alkaa: " $VALS['tciviltwstart'] . "<br/>\n";
echo 
"Iltahämärä päättyy: " $VALS['tciviltwend'] . "<br/>\n";
echo 
"Merellinen hämärä alkaa: " $VALS['tnauticaltwstart'] . "<br/>\n";
echo 
"Merellinen hämärä päättyy: " $VALS['tnauticaltwend'] . "<br/>\n";
echo 
"Tähtitaivas alkaa vaaleta: " $VALS['tastrotwstart'] . "<br/>\n";
echo 
"Tähtitaivas on tummunut: " $VALS['tastrotwend'] . "<br/>\n";
echo 
"Valoisan ajan pituus: " $VALS['tlenvislight'] . "<br/>\n";
echo 
"Päivän pituus: " $VALS['tlenofday'] . "<br/>\n";

echo 
"<br/>\n";

echo 
"Valoisan ajan ero verrattuna eiliseen: " 
   
out_time((getTimestamp($VALS['tlenvislight']) - getTimestamp($VALS['lenvislight'])),0) .
    
"<br/>\n";
echo 
"Päivän pituuden ero verrattuna eiliseen: " 
   
out_time((getTimestamp($VALS['tlenofday']) - getTimestamp($VALS['lenofday'])),0) .
    
"<br/>\n";
    
    
exit;

function 
get_times() {
    global 
$SITE$VALS;
    
    
// Set the timezone we want to use
    
set_tz$SITE['TZ'] );
    
    
// Use your location information
    
$lat $SITE['LAT'];    // South is negative
    
$long $SITE['LONG'];   // West is negative
    
$timeused $timetoday;
    
$timetoday time();
    
$timetommorrow $timetoday 86400;
    
    
$zenith=90+50/60;
    
$VALS['sunrise'] = date_sunrise($timetodaySUNFUNCS_RET_STRING$lat$long$zenith);
    
$VALS['sunset'] = date_sunset($timetodaySUNFUNCS_RET_STRING$lat$long$zenith);
    
$VALS['tsunrise'] = date_sunrise($timetommorrowSUNFUNCS_RET_STRING$lat$long$zenith);
    
$VALS['tsunset'] = date_sunset($timetommorrowSUNFUNCS_RET_STRING$lat$long$zenith);
        
    
$zenith=96;
    
$VALS['civiltwstart'] = date_sunrise($timetodaySUNFUNCS_RET_STRING$lat$long$zenith);
    
$VALS['civiltwend'] = date_sunset($timetodaySUNFUNCS_RET_STRING$lat$long$zenith);
    
$VALS['tciviltwstart'] = date_sunrise($timetommorrowSUNFUNCS_RET_STRING$lat$long$zenith);
    
$VALS['tciviltwend'] = date_sunset($timetommorrowSUNFUNCS_RET_STRING$lat$long$zenith);
        
    
$zenith=102;
    
$VALS['nauticaltwstart'] = date_sunrise($timetodaySUNFUNCS_RET_STRING$lat$long$zenith);
    
$VALS['nauticaltwend'] = date_sunset($timetodaySUNFUNCS_RET_STRING$lat$long$zenith);
    
$VALS['tnauticaltwstart'] = date_sunrise($timetommorrowSUNFUNCS_RET_STRING$lat$long$zenith);
    
$VALS['tnauticaltwend'] = date_sunset($timetommorrowSUNFUNCS_RET_STRING$lat$long$zenith);
        
    
$zenith=108;
    
$VALS['astrotwstart'] = date_sunrise($timetodaySUNFUNCS_RET_STRING$lat$long$zenith);
    
$VALS['astrotwend'] = date_sunset($timetodaySUNFUNCS_RET_STRING$lat$long$zenith);
    
$VALS['tastrotwstart'] = date_sunrise($timetommorrowSUNFUNCS_RET_STRING$lat$long$zenith);
    
$VALS['tastrotwend'] = date_sunset($timetommorrowSUNFUNCS_RET_STRING$lat$long$zenith);
        
    
// Other values
    
$VALS['lenvislight'] = out_time((getTimestamp($VALS['civiltwend']) - getTimestamp($VALS['civiltwstart'])),1);
    
$VALS['lenofday'] = out_time((getTimestamp($VALS['sunset']) - getTimestamp($VALS['sunrise'])),1);
    
$VALS['tlenvislight'] = out_time((getTimestamp($VALS['tciviltwend']) - getTimestamp($VALS['tciviltwstart'])),1);
    
$VALS['tlenofday'] = out_time((getTimestamp($VALS['tsunset']) - getTimestamp($VALS['tsunrise'])),1);  

}



function 
set_tz ($TZ){
    if (
phpversion() >= "5.1.0") {
        
date_default_timezone_set($TZ);
    } else {
        
putenv("TZ=" $TZ);
    }
}

function 
getTimestamp ($val) {
    list (
$hour,$min) = preg_split("/:/",$val);
    
$ttl = ($min 60) + ($hour 60 60);
    return(
$ttl);
}


function 
out_time $seconds $mode false) {
    
$uday = (3600 24);
    
$uhr 3600;
    
$umin 60;
    
    if (
$seconds ) {
        
$neg "-" ;
        
$seconds $seconds * -;
        
//echo "Seconds = " . $seconds . "<br/>";
        
    
} else {
        
$neg "" ;
    }
    
    
// Calculate days
    
$dd intval($seconds $uday );
    
$mmremain = ($seconds - ($dd $uday));
    
    
// Calculate hours
    
$hh intval($mmremain $uhr);    
    
$ssremain = ($mmremain - ($hh $uhr));  
    
    
// Calculate minutes
    
$mm intval($ssremain $umin);
    
$ss = ($ssremain - ($mm $umin));
    
    
// If day or days
    
if ($dd == 1) { $days 'day';  }
    if (
$dd ) { $days "days"; }
    
    if (!
$mode) {
        
// String for if there are days
        
if ( $dd ) {
            
$out_string sprintf("%d %s %02d tuntia %02d minuuttia"
                
$dd$days$hh$mm);
        }
        
        
// String if there are hours
        
if ( $dd == && $hh ) {
            
$out_string $neg sprintf("%d tuntia %02d minuuttia"
                
$hh$mm);
        }
        
        
// String if there are minutes
        
if ( $dd == && $hh == && $mm ) {
            
$out_string $neg sprintf("%d minuuttia"
                
$mm);
        }
        
        
// Only output Seconds
        
if ( $hh == && $mm == ) {
            
$out_string $neg sprintf("%d secs"$ss) ;
        }
    } else {
        
// String for if there are days
        
if ( $dd ) {
            
$out_string $neg sprintf("%d:%s %02d:%02d"
                
$dd$days$hh$mm);
        }
        
        
// String if there are hours
        
if ( $dd == && $hh ) {
            
$out_string $neg sprintf("%d:%02d"
                
$hh$mm);
        }
        
        
// String if there are minutes
        
if ( $dd == && $hh == && $mm ) {
            
$out_string $neg sprintf("00:%02d"
                
$mm);
        }
        
        
// Only output Seconds
        
if ( $hh == && $mm == ) {
            
$out_string $neg sprintf("%d secs"$ss) ;
        }       
        
    }
    
    
// Return value
    
return ($out_string);
}

function 
time24to12 ($val) {
    if (
strlen($val) == ) {
        
$val .= ":00";
    }
    
    return( 
date("g:i a"strtotime($val)) );

?>


EDIT: Muokattu suomekieliseksi, eli yllä oleva skripti on täysin toimiva, muokkaa vain koordinaatit sulle sopivaksi.
Live-versio siitä löytyy tuosta: http://www.nordicweather.net/suntest.php

;D ;D

Henkka
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - sunnuntai, 24.08.2008, 09:52
Todella hieno skirpti!
Minäkin laitan tuon käyttöön.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: weatherc - sunnuntai, 14.09.2008, 16:33
Taas on nuo ameerikan nörtit vauhdissa  ;D

Tällä kertaa pukkaa skriptiä jolla pystyy näyttämään meteoalarm.eu:n varoitukset sivuilla kätevästi ja helposti ja luvalla (Ken on kysynyt lupaa siihen). Tässä aiheesta lisää:
http://saratoga-weather.org/scripts-EUwarning.php

Sekä meikäläisen sivu jossa se on käytössä löytyy tästä: http://www.nordicweather.net/index.php?sivu=30&lang=fi

Jos mietityttää, niin ei tarvi olla Carterlake-template käytössä että sitä voi käyttää, se on täysin itsenäinen skripti.

;D ;D
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - sunnuntai, 14.09.2008, 17:31
Kyllä ne ameriikkalaiset kerkeää tupostaa noiden koodien kanssa....
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - maanantai, 01.06.2009, 11:17
Minulla tällainen on array: 22.8 22.8 22.8 22.4 22.8 22.8 22.8 22.8 22.8 22.8 22.8 22.8

Haluaisin poistaa jollakin skriptillä ensimmäisen jäsenen, mutta tekemälläni koodilla kaikki 22.8-jäsenet poistetaan. Siis vain ensimmäinen tulisi poistaa.


Olisiko teillä ehdotuksia?
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: meteorologi - maanantai, 22.06.2009, 13:55
Kannattaa muuten laittaa auringon lasku-/nousu- ja hämäräkoodiin if(empty()) -ehdot. Nykyisin näkyy kaikki tyhjänä, jos aurinko ei esim. nouse ja laske ollenkaan.

http://finlandweather.xtreemhost.com/testi3.php
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: systeemi - maanantai, 31.10.2011, 20:54
Olen yrittänyt värkätä laskuria, jolla seurattaisiin LTO-laitten hyötysuhdetta. Tässä liittenä yksi viritelmistä ja mahdollisimman yksinkertainen, jotta idea selviäisi mitä haen.

<?php
$testi = <?php include("ivulos.php") ?>;
$testi2 = <?php include("ivtalosisään.php") ?>;

$tulos = $testi*$testi2;
$tulos2 = $testi/$testi2;
$tulos3 = $testi-$testi2;
$tulos4 = $testi+$testi2;
$tulos5 = $testi%$testi2;
print "$tulos<br>
$tulos2<br>
$tulos3<br>
$tulos4<br>
$tulos5<br>
";

?>

Eli olen yrittänyt useammalla tavalla hakea lämpötila tietoja ja saada toimimaan ne tuolla yllä esitetylla tavalla. Löytyykö teiltä vinkkejä miten onnistuisi. Alla toinen tapa. Tällä sain osittain pelamaan, mutta testi2 lukemaan tulee muuttujia liikaa.

<?php
$filename = "pinkeliponkeli.txt";
    $fp = fopen($filename,"r");
    $f_content= fread($fp, filesize($filename));
    fclose($fp);
    $fnotes = explode("\n",$f_content);
    print_r($fnotes);


echo '<br/><br/>';
$testi = $fnotes[31];          
$testi = substr($testi, 9, -2);    
echo "<b></b> $testi";               //nämä pois sitten kun pelaa

echo '<br/><br/>';
$testi2 = $fnotes[34];          
$testi2 = substr($testi2, 9, -2);    
echo "<b></b> $testi2";              //nämä pois sitten kun pelaa


$tulos = $testi*$testi2;
$tulos2 = $testi/$testi2;
$tulos3 = $testi-$testi2;
$tulos4 = $testi+$testi2;
$tulos5 = $testi%$testi2;
print "$tulos<br>
$tulos2<br>
$tulos3<br>
$tulos4<br>
$tulos5<br>
";

?>
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: weatherc - tiistai, 01.11.2011, 00:09
Hmmm...
alempi noista on se oikea.

Parit kyssärit:
- onko tiedot pinkeliponkeli.txt:ssä 1 per rivi?
(Voit myös laittaa ne yhtä hyvin samalle riville, sopiva erottaja väliin vaan ilman turhia välilyöntejä alas 1|2|3|4 jne., sen jälkeen explodeen tuo erottaja "|")
- Onko $fnotes[xx]-lukemat OK?

Jos $fnotes lukemat ovat numeroita sun ei kannata substr() käyttää vaan round() tai sprintf() tai molempia yhdessä :)

$testi2 = $fnotes[34];
$testi2 = sprintf("%01.1f", round($testi2,1));

Tuo anataa ulos numeron yhdellä desimaalilla, myös vaikka on nolla lopussa kuten 12.0
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: systeemi - tiistai, 01.11.2011, 10:30
No niin LTO-hyötysuhde toimii plussakeleille. Seuraavaksi pitäisi rakentaa siten, että myös miinuskelit onnistuu. Lähdetietona tosiaan last.csv eli logtempin tiedosto. Alla oli skripti, jonka viisaammat voisi tarkistaa. Ehdotuksia otetaan vastaan. Ilmeisesti if else lausekkeisiin joudutaan??  Weatherille kiitokset tuosta edellisestä. Nuo sinun neuvot auttoivat oikealle tielle, kun sain tuon exploden oikein.

<?php
$filename = "last.csv";
   $fp = fopen($filename,"r");
   $f_content= fread($fp, filesize($filename));
   fclose($fp);
   $fnotes = explode(",",$f_content);
   //print_r($fnotes);


$testi = $fnotes[125];          
$testi = str_replace('"', '', $testi);  
$testi2 = $fnotes[135];          
$testi2 = str_replace('"', '', $testi2);  
$testi3 = $fnotes[15];          
$testi3 = str_replace('"', '', $testi3);  
$tulos = $testi-$testi2;
$tulos2 = $testi3-$testi2;
$tulos3 = $tulos/$tulos2;
$tulos4= $tulos3*100;
$tulos4 = substr($tulos4, 0, -11);
echo "<b>LTO hyötysuhde</b> $tulos4<b>%</b>";

?>
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: khyron - tiistai, 01.11.2011, 10:54
Lämpötilat kelvineiksi ni ei tarvi säätää ihmeellisiä pakkasille.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: systeemi - tiistai, 01.11.2011, 19:13
Lainaus käyttäjältä: khyron - tiistai, 01.11.2011, 10:54
Lämpötilat kelvineiksi ni ei tarvi säätää ihmeellisiä pakkasille.


Tuohan olisi kyllä ratkaisu tuohon. Hhmm  mitähän muuta se tarvisi. Pitääpäs tutkiskella.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: weatherc - tiistai, 01.11.2011, 19:21
Hmm...parsi lämpötila(t) - muuta kelviniksi - laske - muuta tulos takasin celsiuksi - valmis  ;D
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: khyron - tiistai, 01.11.2011, 19:30
Lainaus käyttäjältä: weatherc - tiistai, 01.11.2011, 19:21
Hmm...parsi lämpötila(t) - muuta kelviniksi - laske - muuta tulos takasin celsiuksi - valmis  ;D

Hyötysuhde ei enää ole lämpötila.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: weatherc - tiistai, 01.11.2011, 19:51
LainaaHyötysuhde ei enää ole lämpötila.

No juu...  :P
Mutta idea oli tuo että muuta lukemat kelviniksi ennen laskelmia (°C + 273.15) heti parsimisen jälkeen :)
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: systeemi - tiistai, 01.11.2011, 21:32
Itse asiassa eihän sen tavitse olla välttämättä kelvini tai fahrenheitti, vaan voihan se olla vaikka 100+-15 astetta tai 100++15 astetta.
Otsikko: Vs: PHP-skriptiä pukkaa
Kirjoitti: weatherc - tiistai, 01.11.2011, 23:27
LainaaItse asiassa eihän sen tavitse olla välttämättä kelvini tai fahrenheitti, vaan voihan se olla vaikka 100+-15 astetta tai 100++15 astetta.

Ei niin, jos pitää olla positiivinen luku niin lisää vaan vaikka 50 niin että homma pysyy "plussalla" koko vuoden.