Zadejte hledaný výraz...

Vypsání souboru

David
verified
rating uzivatele
24. 9. 2010 19:28:09
Zdravím,
na webu používám jednoduchý skript k vypsání .txt souboru:
Ovšem mám problém v tom, že pokud provedu zápis do souboru přes formulář, tak se automaticky zapíše na konec souboru, poté je zápis až na konci souboru, který zobrazuji v obyčejném .php souboru. Tudíž bych potřeboval toto, pokud to jde: zápis se zapíše na začátek .txt souboru, nebo to udělat jinak, ale se stejným výsledkem - zobrazit nejnovější příspěvky jako první (od nejnovějšího po nejstarší).
Děkuji za odpověď, dávám rep+.
24. 9. 2010 19:28:09
https://webtrh.cz/diskuse/vypsani-souboru#reply562284
Martin Klíma
verified
rating uzivatele
(13 hodnocení)
24. 9. 2010 19:34:37
podívej se na tady na různé mody otevření souboru.
http://www.php.net/manual/en/function.fopen.php
24. 9. 2010 19:34:37
https://webtrh.cz/diskuse/vypsani-souboru#reply562283
David
verified
rating uzivatele
24. 9. 2010 19:56:20
Napsal Pooky;574845
podívej se na tady na různé mody otevření souboru.
http://www.php.net/manual/en/function.fopen.php
Nejspíše jsme se nepochopily navzájem. :)
24. 9. 2010 19:56:20
https://webtrh.cz/diskuse/vypsani-souboru#reply562282
Martin Klíma
verified
rating uzivatele
(13 hodnocení)
24. 9. 2010 20:04:39
já myslím že ano, potřebuješ zapsat text na začátek souboru ne na konec je to tak?
24. 9. 2010 20:04:39
https://webtrh.cz/diskuse/vypsani-souboru#reply562281
David
verified
rating uzivatele
24. 9. 2010 20:11:09
Napsal Pooky;574859
já myslím že ano, potřebuješ zapsat text na začátek souboru ne na konec je to tak?
Tak správně. Nevím, jestli máš něco konkrétního na mysli, ale z manualu jsem to nějak nepochopil, můžeš to konkretizovat? :)
24. 9. 2010 20:11:09
https://webtrh.cz/diskuse/vypsani-souboru#reply562280
Martin Klíma
verified
rating uzivatele
(13 hodnocení)
24. 9. 2010 20:22:32
Napsal Dem-enD;574864
Tak správně. Nevím, jestli máš něco konkrétního na mysli, ale z manualu jsem to nějak nepochopil, můžeš to konkretizovat? :)
no parametry pro otevření souboru určují kde budeš mít pointer, jestli na začátku nebo na konci.
'r' Open for reading only; place the file pointer at the beginning of the file.
'r+' Open for reading and writing; place the file pointer at the beginning of the file.
'w' Open for writing only; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it.
'w+' Open for reading and writing; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it.
'a' Open for writing only; place the file pointer at the end of the file. If the file does not exist, attempt to create it.
'a+' Open for reading and writing; place the file pointer at the end of the file. If the file does not exist, attempt to create it.
24. 9. 2010 20:22:32
https://webtrh.cz/diskuse/vypsani-souboru#reply562279
Josef Zemánek
verified
rating uzivatele
24. 9. 2010 20:42:11
Řešení tvého problému by mohlo vypadat třeba takto:
$data_z_formulare = $_POST; //příjem dat z formuláře
$soubor = fopen("soubor.txt", "r"); //otevření souboru pro čtení
$text = fread($soubor, 5000); //načtení dat ze souboru
fclose($soubor); //zavření souboru
$nova_data = "$data_z_formulare$text "; //sloučení dvou dat - data z formuláře jsou na začátku
$soubor = fopen("soubor.txt", "w"); //otevření souboru pro zápis
fwrite($soubor, $nova_data); //zápis nových dat do souboru
fclose($soubor);
echo "$nova_data"; //výpis nových dat na monitor
?>
24. 9. 2010 20:42:11
https://webtrh.cz/diskuse/vypsani-souboru#reply562278
Hafran
verified
rating uzivatele
(7 hodnocení)
24. 9. 2010 20:56:41
Ještě by se hodilo zauvažovat jestli txt soubor je to nejlepší. Pro kratší a často měněné příspěvky, které je třeba řadi, či vybírat bych to možná radši hodil do MySQL.
24. 9. 2010 20:56:41
https://webtrh.cz/diskuse/vypsani-souboru#reply562277
David
verified
rating uzivatele
24. 9. 2010 21:04:14
Napsal jzemanek;574887
Řešení tvého problému by mohlo vypadat třeba takto:
$data_z_formulare = $_POST; //příjem dat z formuláře
$soubor = fopen("soubor.txt", "r"); //otevření souboru pro čtení
$text = fread($soubor, 5000); //načtení dat ze souboru
fclose($soubor); //zavření souboru
$nova_data = "$data_z_formulare$text "; //sloučení dvou dat - data z formuláře jsou na začátku
$soubor = fopen("soubor.txt", "w"); //otevření souboru pro zápis
fwrite($soubor, $nova_data); //zápis nových dat do souboru
fclose($soubor);
echo "$nova_data"; //výpis nových dat na monitor
?>
Ano, funguje to. Rep+ je samozřejmost (i pro Pooky-ho).
---------- Příspěvek doplněn 24.09.2010 v 21:05 ----------
Napsal Hafran;574896
Ještě by se hodilo zauvažovat jestli txt soubor je to nejlepší. Pro kratší a často měněné příspěvky, které je třeba řadi, či vybírat bych to možná radši hodil do MySQL.
A říkej to někomu, kdo se už několikrát rozhodl pro "učení se" PHP a MySQL, ale vždycky to na něčem ztroskotalo. :)
24. 9. 2010 21:04:14
https://webtrh.cz/diskuse/vypsani-souboru#reply562276
A jak máš ošetřeno, že někdo do toho souboru píše a jiný čte zároveň, čili že se ti data v textovém souboru změní pod rukama?
Nebo k tomu souboru je jen singleuser přístup?
24. 9. 2010 21:38:26
https://webtrh.cz/diskuse/vypsani-souboru#reply562275
manasekp
verified
rating uzivatele
(3 hodnocení)
24. 9. 2010 21:52:24
taky jsem kdysi zacinal se zapisovanim do textovych souboru a opravdu doporucuju radsi se naucit zaklady mysql, podle par prikladu musis tak za hodinu dokazat vytvorit napr jednoduchou navstevni knihu.
24. 9. 2010 21:52:24
https://webtrh.cz/diskuse/vypsani-souboru#reply562274
David
verified
rating uzivatele
24. 9. 2010 22:04:19
Napsal vdusek;574914
A jak máš ošetřeno, že někdo do toho souboru píše a jiný čte zároveň, čili že se ti data v textovém souboru změní pod rukama?
Nebo k tomu souboru je jen singleuser přístup?
Přesně tak - singleuser.
Napsal manasekp;574924
taky jsem kdysi zacinal se zapisovanim do textovych souboru a opravdu doporucuju radsi se naucit zaklady mysql, podle par prikladu musis tak za hodinu dokazat vytvorit napr jednoduchou navstevni knihu.
Nic jiného mi asi stejně nezbude. :)
24. 9. 2010 22:04:19
https://webtrh.cz/diskuse/vypsani-souboru#reply562273
Singleuser znamená jen ty sám z jednoho místa v jeden okamžik.
Není to více uživatelů pod jednou identitou?
24. 9. 2010 22:09:12
https://webtrh.cz/diskuse/vypsani-souboru#reply562272
David
verified
rating uzivatele
24. 9. 2010 22:25:00
Napsal vdusek;574936
Singleuser znamená jen ty sám z jednoho místa v jeden okamžik.
Není to více uživatelů pod jednou identitou?
Jak říkám/říkáš, singleuser. :)
24. 9. 2010 22:25:00
https://webtrh.cz/diskuse/vypsani-souboru#reply562271
Josef Zemánek
verified
rating uzivatele
24. 9. 2010 23:52:42
Napsal vdusek;574914
A jak máš ošetřeno, že někdo do toho souboru píše a jiný čte zároveň, čili že se ti data v textovém souboru změní pod rukama?
Myslím, že tohle v případě jednoduché ".txt návštěvní knihy" nebude žádný problém. Zápis do souboru nebo jeho načtení totiž probíhá na serveru během několika setin až desetin vteřiny. Data se proto nemohou "nikomu měnit pod rukama". Buďto se prostě kompletně načte poslední verze dat, nebo se do souboru kompletně uloží verze nová. Osobně jsem kdysi takhle přes .txt soubory řešil několik návštěvních knih (diskusi), do kterých přispívalo naráz třeba 10 čtenářů a četlo jí 100 čtenářů, a vše probíhalo několik let naprosto bez problémů. I různé ankety se dají v pohodě dělat přes .txt soubor. Možná byste se divili, ale na .txt souborech se dá vystavět i jednoduchý redakční systém.
Samozřejmě na složitější IT řešení je potřeba SQL databáze, protože ta zvládá zatížení vysokou návštěvností (v řádu tisíců návštěv za minutu) + má v sobě zabudovanou řadu zajímavých funkcí, které si musíme v případě .txt souboru sami naprogramovat. Na drobné projekty se dá ale v pohodě použít .txt. Programátor začátečník má takhle alespoň v každém okamžiku reálnou představu o tom, co se s jeho daty děje + může experimentovat se vším, na co si jen vzpomene. Mimochodem, txt soubor může člověk kdykoliv otevřít a okamžitě vidí, jak to v něm vypadá. V nouzi ho může i bez problémů ručně upravit. S SQL databází se takhle jednoduše pracovat nedá, u řady základních webhostingů se navíc musí za SQL připlácet několik desítek Kč měsíčně, což kvůli několika anketám a jednoduché návštěvní knize nemá smysl...
24. 9. 2010 23:52:42
https://webtrh.cz/diskuse/vypsani-souboru#reply562270
Pro odpověď se přihlašte.
Přihlásit