Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Muuttujat toisesta tiedostosta?

Sivun loppuun

Biotank [05.03.2005 22:37:53]

#

Tiedostoon "tiedosto1.txt" on kirjoitettu muuttujia (esim.$a = a).

Tiedostossa "tiedosto1_echo.txt" on pelkät muuttujien nimet ilman arvoja (esim. $a). Tämä tiedosto olisi tarkoitus printata ruudulle niin että ruudulla lukisi a, eikä $a.

Ruudulle kuitenkin tulostuu "$a = a $a", eikä muuttuja $a:n arvo.

<?php
include("tiedosto1.txt");

$i = 0;

$tt = fopen("tiedosto1_echo.txt", "r");

	while (!feof($tt)) {

	$rivi = fgets($tt, 1024);

	echo "$rivi";

	$i++;
	}
fclose($tt);

?>

En osannut paremmin selittää, mutta toivottavasti joku ymmärsi probleemani.

chiqu [05.03.2005 22:45:03]

#

pitänee olla tuo tiedosto1.txt => tiedosto1.php, en oo kyl satavarma, mut luulisin.

Metabolix [05.03.2005 22:48:43]

#

Lisää siihen eteen toinen $-merkki, niin se tulostaa muuttujassa olevan nimisen muuttujan arvon. Muistaakseni.

<?php
$a = 10;
$rivi = '$a';

echo $rivi." = ".$$rivi;
// Tulostaa "$a = 10"
?>

pwc [06.03.2005 08:12:08]

#

Eipäs, pikku virhe, metabolix. $rivi pitäisi olla 'a' eikä '$a' niin se löytää sen..

Biotank [06.03.2005 10:58:13]

#

En joko ymmärtänyt ohjeitanne tai sitten te ette ole ymmärtäneet minun ongelmaani.

Tuosta tiedosto1.txt:stä pitäisi saada muuttujat ($nimi = Kalle; $sukunimi = Kala) sivun testi1.php muuttujiksi, sen sijaan että ruudulla lukisi $nimi = Kalle; $sukunimi = Kala, toivottavasti joku ymmärsi tai saisi minut ymmärtämään :/

Tiedostossa on siis monia muuttujia, jotka vain läsähtävät ruudulle. Tahdon saada ne muuttujiksi, en tulostaa.

kayttaja-2791 [06.03.2005 12:44:59]

#

Miksi ne muuttujat on tuossa formaatissa siinä tekstitiedostossa? Onko niiden välttämätöntä olla noin?

Itse näes olen käyttänyt parse_ini_file funktiota jos olen tarvinnut vastaavaa toimintoa.

Kyllä se onnistuu tuolla sanomallasikin tavalla. Ensin explodetat rivin " = " suhteen $arrayhyn, ja merkkaat $$array[0] = $array[1]. Noin se voisi toimia, en ole ihan 100% varma enkä jaksa testata.

kayttaja-2791 [06.03.2005 15:05:45]

#

Eipä ollut mukamas parempaakaan tekemistä niin tein siitä esimerkin:

tiedosto.txt

$argh = 500
$b = 300
$c = 400

muuttujaesimerkki.php

<?php
$file = file('tiedosto.txt'); //Luetaan tiedosto taulukkoon, eritelty riveinä

foreach ($file as $rivi) { //Käydään taulukko lävitse
	$rivi = explode(" = ", $rivi, 2); //Erotetaan rivistä muuttujan nimi ja sen arvo, exploden arvolla 2 muuttujan arvo voi sisältää myös = merkinnän
	$muuttuja = substr($rivi[0], 1); //Muuttujasta otetaan dollarinmerkki edestä pois
	$$muuttuja = $rivi[1]; //Ja kahdella $ merkillä tehdään ne muuttujat
}

print $argh; //Tulostaa tiedostossa tiedosto.txt säädetyn $argh:in arvon
?>

Biotank [06.03.2005 16:22:33]

#

Kiitos, kiitos, kiitos! Vielä olisi paljonkin kysyttävää, mutta koska en halua kysyä aivan kaikkea muilta en kysy.

Porukkaa näytti alkavan ärsyttää - ainakin jos muuttujien nimiin on luottaminen:)

D.J-Dew [06.03.2005 16:49:40]

#

hoituis varmaan helpommin ku laittais tiedosto.txt:hen php-tagit ja sit includettaa sen.

Biotank [06.03.2005 17:05:56]

#

Ei hoidu tämä ongelma.

Juice [06.03.2005 18:30:58]

#

No mikä ei luonnistu?

Biotank [06.03.2005 18:47:17]

#

Itse asiassa tuo ei toimi niin kuin tahtoisin (tuo JTS:n) kun tarkemmin katsoin.

*huoh*

Haluan, että tiedosto1.txt:n sisältö vastaa sitä, että sivulle kirjoitettaisiin:

$nimi = Kalle;
$sukunimi = Kala;

Ilmeisesti kukaan ei ole osannut ajatellakaan näin hölmöä kysymystä :)

Miten tuon saa siis tehtyä?

Jos nyt oikein ymmärsin JTS:n koodinpätkä vain poistaa muuttujat, jolloin tiedostoon olisi yhtä hyvin voinut kirjoittaa suoraan Kalle ja Kala.

kayttaja-2791 [06.03.2005 18:58:14]

#

Ei, vaan tuo koodinpätkä hakee muuttujat tiedosto.txt:stä.

Eli kun kirjoitat tiedosto.txt:hen rivin: $paino = 50
Ajat skriptin, niin sinulla on sitten muuttuja $paino käytettävissä. Eli "print $paino+1;" tulostaisi "51".

Ja en ymmärrä enään yhtään mitä oikein haluat sen tekevän.

Biotank [06.03.2005 19:03:28]

#

Ongelma muuten olikin juuri siinä, etten tiedä muuttujien nimiä... ei mitään muuta.


Sivun alkuun

Vastaus

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

Tietoa sivustosta