Súgó - Keresés - Tagok - Naptár
Teljes változat: TXT fájl tartalmának kiíratása
PC WORLD Segélyvonal > WEBSAROK > Webszerkesztés, programozás > PHP
benkovics
A html-ben lehet-e olyat csinálni, hogy egy szöveget, ami sok oldalon szerepel, egy txt fájlból szedem?
Vagy ezt csak php-ban lehetséges?
Remélem érthető amit kérdezek... blush.gif
Kovács Gyula (MiniDisc)
Lehet, de csak PHP-vel oldható meg.
benkovics
Akkor leírnátok hogyan? Köszi.
Mezofi
fopen(), fwrite(), fread(),
A text fájllal végzett müveletekhez jogosultságot kell baállítani, ha nem a saját szervereden ügyködsz vele.
Bövebben:
http://hu2.php.net/manual/hu/function.fread.php
arpsoft
Ha a szerver támogatja az SSI-t, akkor pl így:
KÓD
<!--#include file="valami.html" -->

A fájlnévnek az aktuális dokumentum helyéhez képesti relatív útvonalat kell tartalmaznia.
KÓD
<!--#include virtual="valami.html" -->

A fájlnévnek a HTTP szerver gyökeréhez képesti relatív útvonalat kell tartalmaznia.

Lehet, hogy a dokumentumodat át kell nevezni *.shtml-re, hogy a szerver engedélyezze benne az SSI-t.
benkovics
@Mezofi
Köszi!
De nekem ez olyan, mint majomnak az abc..... blush.gif
Szóval, kicsit konkrétabban!
Van egy kód:
KÓD
<div id="formazas">
<p>Ide jönne a txt
</p>
</div>


Szóval, konkrétan mit hová kell írni, hogy ez működjön? a txt neve: "neo_bal.txt".
benkovics
@Arpsoft
Oké! De ez egy php fálj! Van benne egy névnap script! sad.gif
Mezofi
Létrehozol egy beviteli formot és $szoveg változóba betöltöd (amit be akarsz tenni a txt-be) Ezt a $szoveg változót átadod a következő scriptnek:
KÓD
<?php
if (isset($_POST['szoveg'])) {
    $fp =  fopen("szoveg.txt","a");
// a megadott fájlt hozzáfuzésre nyitja meg, vagy létrehozza, ha még // nincs ilyen fájl
flock($fp, LOCK_EX); // a fájl zárolása
fwrite($fp, $szoveg."\n");
flock($fp, LOCK_UN); // a fájl zárolásának feloldása
fclose($fp);    // a fájl bezárása

print("Sikerult\n".$szoveg);}
?>


Így kapsz egy szoveg.txt fájlt (a szoveg-et átcserélheted mindenhol amire akarod), ha még nem létezett, ha már létezik akkor csak bele ír.
A kiíratás:
KÓD
<?php
$fp = "szoveg.txt";
$eredmeny=fopen($fp,"r");
flock($eredmeny, LOCK_EX);
$contents = fread($eredmeny, filesize($fp));
flock($eredmeny, LOCK_UN);
fclose($eredmeny);    
print ($contents );
?>

smile.gif
arpsoft
KÓD
<div id="formazas">
<p>
<!--#include file="neo_bal.txt" -->
</p>
</div>
benkovics
Köszi Arpsoft!
Erre gondoltam! biggrin.gif biggrin.gif biggrin.gif

@Mezofi!
Neked is köszönöm a segítséget, csak az nekem túl bonyolult!
Mezofi
@benkovics
Nincs mit.

@arpsoft
Én is kipróbáltam, egy létező szoveg.txt fájllal, egy üres htm dokumentumba a body részbe beszúrtam így:
KÓD
<head>
</head>
<body>
<p>
<!--#include file="szoveg.txt" -->
</p>
</html>

Űres dokumentumot jelzett.
roll.gif
benkovics
hmm.gif
Én még nem próbáltam..... blush.gif
Mezofi
Akkor próbáldki minél elöbb, azért mert nálam nem megy azért még lehet jó!

Egyébként a txt fájlba nem direktbe viszed be a szöveget ugye? Mert akkor a kiíratáskor meglepetés karaktereket fogsz látni!



Az én ajánlatomnál a lap elejére ezt beilleszted:
KÓD
<?php
$fp = "neo_bal.txt";// A keresett txt fájl
$eredmeny=fopen($fp,"r"); //Megnyítjuk a fájlt olvasásra
flock($eredmeny, LOCK_EX); //Zároljuk, hogy egyszerre csak egy felh. haszn.
$contents = fread($eredmeny, filesize($fp)); //Olvassuk a fájlt
flock($eredmeny, LOCK_UN); // Feloldjuk a zárolást
fclose($eredmeny); //Bezárjuk a fájlt
?>


a kiíratás helyére pedig csak ennyit kell írni:
KÓD
<?php print ($contents ); ?>

De arpsoft-é azért egyszerübb, ha müködik.
Írd meg nálad müködik-e a
KÓD
<!--#include file="neo_bal.txt" -->

question.gif
benkovics
Köszi!
Nos írd le pontosn, mint egy hülyegyereknek, hogy hogyan csináljam, lépésről-lépésre.....
Nem értem, hogy mit írsz! blush.gif blush.gif blush.gif

A másikat mindjárt kipróbálom!
Mezofi
Jó, vegyük úgy, hogy a neo_bal.txt fájl létezik.
Készítesz, egy php üres dokumentumot (lapot), ugyanabba a mappában ahola txt fájl van!
A tetejére ezt a kódot bemásolod:
KÓD
<?php
$fp = "neo_bal.txt";// A keresett txt fájl
$eredmeny=fopen($fp,"r"); //Megnyítjuk a fájlt olvasásra
flock($eredmeny, LOCK_EX); //Zároljuk, hogy egyszerre csak egy felh. haszn.
$contents = fread($eredmeny, filesize($fp)); //Olvassuk a fájlt
flock($eredmeny, LOCK_UN); // Feloldjuk a zárolást
fclose($eredmeny); //Bezárjuk a fájlt
?>

Ezután valahol a lapon, ahol ki akarod íratni ezt írod be:
KÓD
<div id="formazas">
<p><?php print ($contents );  //Ide jön a txt ?>
</p>
</div>

Remélem, elég részletes volt.
roll.gif
benkovics
A tetejére, az azt jelenti, hogy a <head> és </head> közé?
Mezofi
A php script-nek teljesen mindegy hová rakod, nem htm-tag ként szerepel.

Tehát rakhatod a <head> elé, mögé, bele,stb..

A lényeg, hogy a kiíratás elé rakd, mert ugye egy táskából is csak akkor tudsz valamit kivenni, ha elötte bele raktad!
smile.gif
benkovics
oké!
Köszi!
Működik! worship.gif
---
És mi van akkor, ha kettő ilyet szeretnék egy oldalra? Bal oldalra is, és jobb oldalra is? biggrin.gif
Mezofi
a
KÓD
<?php print ($contents );  //Ide jön a txt ?>
kóddal annyiszor íratod ki ahányszor akarod.

Bárhova beilleszted ezt a kódot ott mindig kiírja a $contents értékét amelybe beletöltöttük az oldal elején a txt fájl teljes tartalmát.
tongue.gif
benkovics
Bocs!
Rosszul fogalmaztam!
Szóval két txt van! Az egyik a bal oldalra, a másik a jobb oldalra!
Így két különböző dolgot szeretnék mind a két oldalra kiíratni! Azt hogyan kell?
Mezofi
Nyilván akkor az első php-scriptet újra le kell futtatni, tehát a az első után újra be kell rakni.
Csak annyi különbséggel, hogy ezt a sort kicseréled:
KÓD
$fp = "neo_bal.txt";// A keresett txt fájl
mondjuk erre:
KÓD
$fp= "ide beirod a másik fájl nevét.txt";// A keresett txt fájl

és ezt is kicseréled:
KÓD
$contents = fread($eredmeny, filesize($fp)); //Olvassuk a fájlt
mondjuk erre:
KÓD
$contents_masik_fajl = fread($eredmeny, filesize($fp)); //Olvassuk a fájlt

És a kiíratáskor (amikor a másik fájlt iratod ki, akkor természetesen ennek a változónak a tartalmát íratod ki, valahogy így:
KÓD
<?php print ($contents_masik_fajl );  //Ide jön a txt ?>


Persze, ha már eléggé megismered a php-t akkor lehet függvényt írni a sokat használt txt olvasásra, és akkor csak egy sor lenne a függvény hívás, és a változó átadása.
De így is müködik!
Szerintem, ha át nézed, hogy mit alakítottam át, akkor már rá jössz hogyan lehetne, mondjuk három-négy txt-ből adatat kinyerni.
smile.gif
benkovics
roll.gif roll.gif
Jó!
Ehhez nekem szabadnap kell, hogy megértsem......
Köszi!
Mezofi
Sikerült megoldani a két txt fájl kiíratását?
question.gif
benkovics
Csütörtöktől leszek szabadságon! Utána foglalkozom vele! blush.gif
robar
Ha még él ez a téma,válaszolnék.
Ezt egy egyszerű php függvénnyel lehet megoldani.Ezt a kódot beírod bárhová a body-n belül a html file-ba,és .php - ba mented el,működni fog.

<?php
include("fájl_név.kiterjesztés");
?>
ennyi.
pl
<?php
include("dokumentumok/szoveg2.txt");
?>
Ezzel a függvénnyel bármilyen szöveget beszúrhatsz.(pl: .txt , .html .js , .php ...)

Remélem , tudtam segíteni - robar
ZsoltiD
Sziasztok!

Nekem is lenne egy kérdésem ezzel a txt-s dologgal kapcsolatban.
1) A cucc már úgy kész van hogy a txt tartalmát behozza az oldalra.
Csak az a bajom, hogy nem tudom azt megcsinálni, hogy a txt-be olyan szavak legyenek amikre ha a rendes oldalon rákattintok, akkor linkként működnek.
Tehát milyen kóddal tudok a txt-be linket írni?
vagy azt a php-be kell?
2) Ha a txt-be enterrel új bekezdésbe rakom a szöveget, akkor ezt amikor az oldal behozza nem tesz bekezdéseket. Hogy tudom azt megoldani hogy bekezdéseket az oldalon is tegyen?

Válaszotokat előre is köszönöm!

Üdv.
Zsolti
Mezofi
1)
KÓD
<a href="">Szöveg</a>

2;
KÓD
print(nl2br($szoveg));
warbirds
Sziasztok!
Azt hiszem a probléma ebbe a témakörbe illik a legjobban.

A gondom a következő:
Van egy oldal, ahol PHP alapú kérdezz-felelek rovat működik txt állományok felhasználásával. A kérdések egy question.txt állományba kerülnek, amit egy külön felületen lehet adminisztrálni. Itt tudja a válaszadó megválaszolni vagy törölni a beérkezett kérdést. A megválaszolt kérdések a válaszokkal együtt bekerülnek egy answer.txt állományba, amelyből aztán kiíratásra kerülnek a nyilvános rovatban. Ez eddig szépen működött is. A szolgáltató viszont változtatott a tárhelyen (át kellett állítani a tárhely és levélküldés beállításait is), azóta lehalt az egész. Illetve a text állományok jogosultságának visszaállításával annyit sikerült elérnem, hogy a kérdések beérkeznek a question.txt-be és megjelennek az admin felületen is, de onnan sem válaszolni, sem törölni nem lehet őket. Tudja valaki, hogy mi változhatott, amitől nem megy a dolog? Nem szeretném újra csinálni az egészet, mert annyira nem értek hozzá (a jelenlegit is csak átvettem és próbálom megérteni a működését). Ha tud valaki segíteni, megköszönöm. Üdv! warbirds
Ez a tartalom egy lebutítottváltozata. A teljes változat képekkel kiegészült megtekintéséhez kérünk, kattints ide.