FinWX Foorumi
keskiviikko, 23.05.2012, 15:01 *
Tervetuloa, Vieras. Ole hyvä ja kirjaudu tai rekisteröidy.
Jäikö aktivointi sähköposti saamatta?

Kirjaudu käyttäjätunnuksen, salasanan ja istunnonpituuden mukaan
Uutiset:
13.05.2012
Meitä on nyt 70 !!
Toivotamme tervetulleeksi FinWX:n 70. jäsen-sääaseman, FinWX Oulu-53:n.
Sääasema on entisen Oulun läänin 16. FinWX-asema.

Lue lisää uudesta jäsenasemasta täältä.
 
   Etusivu   Ohjeet Haku Kalenteri Kirjaudu Rekisteröidy  
Sivuja: [1] 2 3 ... 8
  Tulostusversio  
Kirjoittaja Aihe: PHP-skriptiä pukkaa  (Luettu 6236 kertaa)
0 jäsentä ja 1 vieras katselee tätä aihetta.
Meteorologi
Taso ei enää mitattavissa
*****
Paikalla Paikalla

Viestejä: 1046


WWW
« : 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:

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



Älkää naurako minun PHP-kielitaidoilleni! Itkee
Vähin on otettu lainauksia Php.netin sivuilta tuohon koodiin.
Näitä skriptejä käyttää ainakin FinWx:in ylläpito. Kumarran hienosta skripistä! Iskee silm&#228;&#228;

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

Voisiko Finwx:n Admin valottaa asiaa?
tallennettu

J.Laiho
Foorumin ylläpitäjä
Ylläpito
*****
Poissa Poissa

Viestejä: 3645



WWW
« Vastaus #1 : maanantai, 12.05.2008, 23:28 »

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:

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



Älkää naurako minun PHP-kielitaidoilleni! Itkee
Vähin on otettu lainauksia Php.netin sivuilta tuohon koodiin.
Näitä skriptejä käyttää ainakin FinWx:in ylläpito. Kumarran hienosta skripistä! Iskee silm&#228;&#228;

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:

Koodia:
$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:

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

Huomaa "kautta"-merkkien suunta.

Toinen, joka kiinnitti huomioni on:

Koodia:
$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:

Koodia:
($array[23]);

Käsitellään kuitenkin tätä skriptiä tässä vaiheessa askel askeleelta läpi niin ei mene nuppi sekaisin. Hymyilee
Aloitetaan tuosta tiedostopolkukysymyksestä. Eli: Onko currdat.lst -tiedosto samassa hakemistossa tuon PHP-skriptin kanssa?
tallennettu

Juha Laiho
Foorumin ja sivuston ylläpitäjä
Finland Weather Exchange (FinWX)

http://www.finwx.net/
------------------------------------------
Twitter, FinWX:n havainnot
------------------------------------------
Ukkoslaskuri 2012; Lohja, Gruotila
0 ukkospäivää.
------------------------------------------

------------------------------------------
Meteorologi
Taso ei enää mitattavissa
*****
Paikalla Paikalla

Viestejä: 1046


WWW
« Vastaus #2 : 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? Huh
tallennettu

weatherc
Foorumin Yleismoderaattori
*****
Poissa Poissa

Viestejä: 4549


« Vastaus #3 : 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
tallennettu

Meteorologi
Taso ei enää mitattavissa
*****
Paikalla Paikalla

Viestejä: 1046


WWW
« Vastaus #4 : tiistai, 13.05.2008, 20:04 »


Koodia:
$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:
Koodia:
[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ä.
tallennettu

weatherc
Foorumin Yleismoderaattori
*****
Poissa Poissa

Viestejä: 4549


« Vastaus #5 : 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
tallennettu

Meteorologi
Taso ei enää mitattavissa
*****
Paikalla Paikalla

Viestejä: 1046


WWW
« Vastaus #6 : keskiviikko, 14.05.2008, 16:59 »

Tässä kaksi eri testiä:

1.

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


2. PHP-skripti, tulostusskriptin kanssa.
Koodia:
<?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. Iskee silm&#228;&#228;]

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


Nuo sivuilleni johtavat linkit ovat:
  • itseni kirjoittamia .txt-tiedostoja,
jotka
  • testipalvelin on suorittanut.


« Viimeksi muokattu: torstai, 15.05.2008, 18:05 kirjoittanut Meteorologi » tallennettu

weatherc
Foorumin Yleismoderaattori
*****
Poissa Poissa

Viestejä: 4549


« Vastaus #7 : torstai, 15.05.2008, 02:50 »

Ok, peruutan sen implode-systeemin, otin kopion sun currdat-filusta ja kokeilin vähäsen..

Tässä tulos:
Koodia:
<?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
« Viimeksi muokattu: torstai, 15.05.2008, 02:54 kirjoittanut weatherc » tallennettu

Meteorologi
Taso ei enää mitattavissa
*****
Paikalla Paikalla

Viestejä: 1046


WWW
« Vastaus #8 : torstai, 15.05.2008, 14:37 »

SE TOIMII VIHDOINKIN! Virnist&#228;&#228;
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
Koodia:
$testi = substr($testi, 8, -2);
pitäisi olla kai, että
Koodia:
$testi = substr($testi, 9, -2);
.
Tulee ilman turhaa yhtä "-merkkiä.
« Viimeksi muokattu: torstai, 15.05.2008, 14:42 kirjoittanut Meteorologi » tallennettu

weatherc
Foorumin Yleismoderaattori
*****
Poissa Poissa

Viestejä: 4549


« Vastaus #9 : torstai, 15.05.2008, 15:10 »

Hieno juttu!  Virnist&#228;&#228;

Juu, tuota
Koodia:
$testi = substr($testi, 9, -2);
kannattaa pitää vähän silmällä ja tehdä tarvittavia säätöjä ja tarvittaessa lisätä pätkä:
Koodia:
$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

tallennettu

Sivuja: [1] 2 3 ... 8
  Tulostusversio  
 
Siirry:  

MySQL pohjainen foorumi PHP pohjainen foorumi Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Validi XHTML 1.0! Validi CSS!