Využijte 17 podacích a 36 výdejních míst - posílejte zásilky za 35 Kč přes Zásilkovnu
Zobrazují se odpovědi 1 až 17 z 17

Vypsání souboru

  1. Zdravím,

    na webu používám jednoduchý skript k vypsání .txt souboru:
    Kód:
    <?php
    $soubor = fopen("soubor.txt", "r");
    $text = fread($soubor, 1000);
    echo($text);
    fclose($soubor);
    ?>
    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+.

  2. Happy Robot :]

    Co se právě děje na Webtrhu?

  3. podívej se na tady na různé mody otevření souboru.
    http://www.php.net/manual/en/function.fopen.php

  4. Citace Původně odeslal Pooky Zobrazit příspěvek
    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. :)

  5. já myslím že ano, potřebuješ zapsat text na začátek souboru ne na konec je to tak?

  6. Citace Původně odeslal Pooky Zobrazit příspěvek
    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? :)

  7. Citace Původně odeslal Dem-enD Zobrazit příspěvek
    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.

  8. Řešení tvého problému by mohlo vypadat třeba takto:

    <?php

    $data_z_formulare = $_POST['data_z_formulare']; //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

    ?>

  9. 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.

  10. Citace Původně odeslal jzemanek Zobrazit příspěvek
    Řešení tvého problému by mohlo vypadat třeba takto:

    <?php

    $data_z_formulare = $_POST['data_z_formulare']; //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 ----------

    Citace Původně odeslal Hafran Zobrazit příspěvek
    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. :)

  11. 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?

  12. 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.

  13. Citace Původně odeslal vdusek Zobrazit příspěvek
    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.

    Citace Původně odeslal manasekp Zobrazit příspěvek
    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. :)

  14. Singleuser znamená jen ty sám z jednoho místa v jeden okamžik.
    Není to více uživatelů pod jednou identitou?

  15. Citace Původně odeslal vdusek Zobrazit příspěvek
    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. :)

  16. Citace Původně odeslal vdusek Zobrazit příspěvek
    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...

  17. Také jsem to kdysi používal na projektu psaném v perlu.
    Občas jsem se divil, že to, co jsem odeslal, tak v souboru není :-)
    Do souboru současně zapisovalo několik lidí a občas se strefili...

  18. Citace Původně odeslal vdusek Zobrazit příspěvek
    Také jsem to kdysi používal na projektu psaném v perlu.
    Občas jsem se divil, že to, co jsem odeslal, tak v souboru není :-)
    Do souboru současně zapisovalo několik lidí a občas se strefili...
    jj, možnost, že se ve stejnou dobu do souboru strefí několik lidí najednou tu existuje. Jenže u webů s mikroskopickou návštěvností (max. desítky lidí za hodinu) je asi taková, jako vyhrát 50 milionů ve Sportce. Jakmile hodinová návštěvnost txt aplikace překročí hranici několika set lidí, pravděpodobnost strefení začíná být poměrně vysoká (ke strefení dochází několikrát měsíčně). U ještě vyšší návštěvnosti tropí txt databáze neplechu, jenže vysoké návštěvnosti se už většinou netýkají programátorů začátečníků. Leda že by za pomoci txt souborů naprogramovali druhý Facebook nebo Google :-)).

Podobná témata

  1. Vypsání postů z kategorie
    By Railler in forum Wordpress
    Odpovědí: 11
    Poslední příspěvek: 07.07.2010, 20:14
  2. Vypsání článků ze stejné kategorie
    By JonasKopp in forum Wordpress
    Odpovědí: 3
    Poslední příspěvek: 01.07.2010, 15:44
  3. Vypsání 5 nejstahovanějších
    By tazzys in forum PHP
    Odpovědí: 2
    Poslední příspěvek: 14.06.2009, 13:04
  4. Vypsání počtu řádku
    By tazzys in forum PHP
    Odpovědí: 6
    Poslední příspěvek: 10.06.2009, 15:21
  5. Odpovědí: 1
    Poslední příspěvek: 08.06.2009, 18:47
Hostujeme u Server powered by TELE3