Script php
Pagini: 1, 2


NemoXP


am si eu nevoie de un script php care sa ia intr-un .txt tot ce este intre <endline>
mai exact:
vreau sa fac o pagina dinamica de bancuri... ele sa se ia dintr-un .txt si sa stie ca vine alt banc prin functia <endline> si pe pagina sa fie afisate 5 bancuri... si sa faca si pagini.. cum este pe www.nautilus.lx.ro/index_ro.php?url=flash_games_ro.php asta ia dintr-un folder toate swf-urile si le listeaza... ceva de genu vreau si eu doar ca sa listeze text (nu file)

multumesc anticipat
cosminnuss
de ce nu folosesti o baza de date si sa iei de acolo bancurile?

E cea mai simpla solutie si cel mai usor de administrat
 
cosminnuss
Si un raspuns la intrebarea ta, daca am inteles ce vrei

CODE
$lines=file("fisierul_tau_cu bancuri.txt");
foreach($lines as $line)
{
    echo "<p>".str_replace(Array("\n","\r"),"",$line)."</p>";
}


Vei avea o problema totusi... Nu vei putea folosi "\n" in bancuri... totodata ce este un banc pe o linie. Incearca un delimitator sau direct niste <br>-uri inainte sa bagi bancurile in fisier.
NemoXP
oka, imi ia tot dintr-un txt, le afiseaza corespunzator.. dar... ca sa faca si pagini? sa puna 5 / pagina ?smile.gif
mutumesc pt ajutorul de pana acu biggrin.gif

cosminnuss: pt mine e mai usor cu .txt tongue.gif
add
use databases...
ada80ro
Pentru paginatie vezi scriptul asta:
CODE
<html>
<head>
  <title> </title>
</head>
<body>
<?php

$lines = file('text_sample.txt');

//numarul de valori afisat pe pagina
$numPerPage = 4;


//seteaza numarul paginii-default 1
$page = isset($_GET['page']) ? $_GET['page'] : 1;

//seteaza elementul din $lines de la care incepe sa citeasca
$start = ($page-1) * $numPerPage;

//afiseaza continutul liniei
for ($i=$start; $i<$start+$numPerPage; $i++) {
    if (isset($lines[$i])) {
            
            //proceseaza linie text
            list($nume,$descriere,$url,$tag)=explode('|',$lines[$i]);//$nume,$descriere,$url,$tag sunt campurile corespunzatoare unei linii-ex: name1|description1|url1|tag1
            echo 'Numele '.$nume.'<br>';
            echo 'Descriere '.$descriere.'<br>';
            echo 'Url '.$url.'<br>';
            echo 'Tag '.$tag.'<br>';
            echo '<hr>';
            
    }

}#end for

//calculeaza numarul total de pagini
$totalPages = ceil(count($lines) / $numPerPage);

$script_page=$_SERVER['PHP_SELF'];

//afiseaza link inapoi
if ($page!=1) {
        echo '<a href="'.$script_page.'?page='.($page-1).'">Previous</a> ';}


//afiseaza numerele paginilor
for ($i=1; $i<=$totalPages; $i++) {

    echo ($i==$page) ? $page.' ' : '<a href="'.$script_page.'?page='.$i.'">'.$i.'</a> ';

}//end for


//afiseaza link inainte
if ($page!=$totalPages){

  echo '<a href="'.$script_page.'?page='.($page+1).'">Next</a>';}

?>
</body>
</html>
cosminnuss
Si daca are un "new line" in descriere la banc? Ce faci? biggrin.gif

QUOTE
echo 'Descriere '.$descriere.'<br>';

incearca
CODE
echo 'Descriere '.nl2br($descriere).'<br>';


...si ar mai fi si alte workaround-uri

A, vezi ca $tag s-ar putea sa aiba un "\n" la capat.... smile.gif
 
zuppy
de ce nu postati problemele de php pe aria de php ?
ada80ro
QUOTE(cosminnuss @ Jan 13 2006, 17:21) *
Si daca are un "new line" in descriere la banc? Ce faci? biggrin.gif
incearca
CODE
echo 'Descriere '.nl2br($descriere).'<br>';


...si ar mai fi si alte workaround-uri

A, vezi ca $tag s-ar putea sa aiba un "\n" la capat.... smile.gif

Ala e un cod sample pentru partea de paginatie, nu stiu ce dracu are el in fisierul text, poate sa aiba si taguri html in fisierul text, nu stiu cum sunt delimitate campurile etc.
NemoXP


nu am nici o descriere, nici url, nici nume, nici tag... ideea e sa afiseze 4 bancuri intregi... ele sunt separate intre ele prin <endline> (un banc are mai multe randuri...)
ada80ro
QUOTE(NemoXP @ Jan 13 2006, 20:54) *
nu am nici o descriere, nici url, nici nume, nici tag... ideea e sa afiseze 4 bancuri intregi... ele sunt separate intre ele prin <endline> (un banc are mai multe randuri...)


Doamne, e asa greu de priceput. Ala era un script sample de paginatie printr-un array. Am folosit un fisier text de-al meu.

In fine, sa revin.

Dupa
$lines = file('text_sample.txt');
da un print_r($lines); si vezi daca bancurile alea se gasesc fiecare intr-un element din array.
Daca da atunci foloseste ceva de genul:

CODE

//afiseaza continutul liniei
for ($i=$start; $i<$start+$numPerPage; $i++) {
    if (isset($lines[$i])) {
            
       echo '<p>'.$lines[$i].'</p>';
            
    }

}#end for
cosminnuss
@ada80ro: Ideea este ca functia file() va include la fiecare element din array-ul format si un "/n" la sfarsit. La asta ma refeream smile.gif
ada80ro
QUOTE(cosminnuss @ Jan 13 2006, 23:01) *
@ada80ro: Ideea este ca functia file() va include la fiecare element din array-ul format si un "/n" la sfarsit. La asta ma refeream smile.gif


Si? Care e faza? Tu afisezi alea intr-o pagina html, in html nu conteaza ws-urile. Doar daca vrei sa folosesti nl2br care oricum pastreaza "\n" de la sfarsit insa nu vad rostul in cazul de fata, presupun ca bancurile alea or sa fie delimitate intr-un mod mai vizibil cu ajutorul unor taguri html.
cosminnuss
QUOTE
Si? Care e faza? Tu afisezi alea intr-o pagina

Era doar ceva in genu FYI, sa nu-si puna problema de ce are \n la sfarsit.
NemoXP
da.. vad ca merge cat de cat.. dar imi afiseaza numai 4 randuri in banc...
ex:
http://85.186.128.161/~nautilus/nautilus/banc2.php?page=1
cosminnuss
si codul folosit pana la urma care este?
Eventual si fisierul txt...

Verifica cum ai "\n"-urile in .txt. Sa ai "\n"(ending line) doar la capatul bancurilor caci altfel nu stie scriptu unde se termina un banc.
NemoXP
<html>
<head>
<title> </title>
</head>
<body>
<?php

$lines = file('text.txt');

//numarul de valori afisat pe pagina
$numPerPage = 4;


//seteaza numarul paginii-default 1
$page = isset($_GET['page']) ? $_GET['page'] : 1;

//seteaza elementul din $lines de la care incepe sa citeasca
$start = ($page-1) * $numPerPage;

//afiseaza continutul liniei
for ($i=$start; $i<$start+$numPerPage; $i++) {
if (isset($lines[$i])) {

echo '<p>'.$lines[$i].'</p>';

}

}#end for

//calculeaza numarul total de pagini
$totalPages = ceil(count($lines) / $numPerPage);

$script_page=$_SERVER['PHP_SELF'];

//afiseaza link inapoi
if ($page!=1) {
echo '<a href="'.$script_page.'?page='.($page-1).'">Previous</a> ';}


//afiseaza numerele paginilor
for ($i=1; $i<=$totalPages; $i++) {

echo ($i==$page) ? $page.' ' : '<a href="'.$script_page.'?page='.$i.'">'.$i.'</a> ';

}//end for


//afiseaza link inainte
if ($page!=$totalPages){

echo '<a href="'.$script_page.'?page='.($page+1).'">Next</a>';}

?>
</body>
</html>

asta e scriptul.... txt-ul e aici: http://85.186.128.161/~nautilus/nautilus/text.txt

nu se poate face sa ia ca banc urmator cand citeste "<endline>" sau altceva??
ada80ro
QUOTE(NemoXP @ Jan 13 2006, 23:23) *
da.. vad ca merge cat de cat.. dar imi afiseaza numai 4 randuri in banc...
ex:
http://85.186.128.161/~nautilus/nautilus/banc2.php?page=1

Tie ca sa-ti mearga toata povestea asta in fiecare element din array-ul $lines trebuie sa ai cate un banc.
[0] => banc1
[1]=>banc2

Ca sa se intample asta singurul "\n" trebuie sa fie la sfarsit. In momentul in care introduci text intr-un textarea si apesi enter se introduce cate un "\n"("\r\n") deci in mod normal nu ai doar un singur "\n".
Ca sa elimini "\n" trebuie sa faci ceva de genul:
//cum a zis si @cosminnuss
$banc=nl2br($_POST['banc]);//ca sa le ai afisate corespunzator in html

//elimini preventiv alte dracii care ar putea afecta citirea corecta
$replace = array("\t", "\n", "\r\n", "\f","\r");
$banc=str_replace($replace,'',$banc)."\n";
//dupa care scrii $banc in text file.
cosminnuss
pai exact in fisierul .txt e problema... Scriptu de mai sus considera ca fiind un banc pana acolo unde intalneste un capat de linie...

Incearca ceva de genu:

CODE
Sotia: Ai facut cumparaturile?<br>Sotul: Bad command or filename.<br>Sotia: Dar te-am rugat de dimineata...<br>Sotul: Syntax Error. Abort?<br>Sotia: Nici macar noul televizor?<br>...

...si tot asa
Acolo unde vrei sa se termine bancul pui un capat de linie (un enter, \n... zi-i cum vrei)

Asta este o metoda... Nu cea mai eleganta dar poti sa-ti faci o idee
NemoXP
si ca sa considere capat de banc acolo unde gaseste <br> ?
cosminnuss
va considera capat de banc peste tot pe unde este un "capat de linie" (tot una cu \n)

deci nu-ti mai convine metoda cu file()? tongue.gif
NemoXP
pai sa ia <br> -urile ca capat de banc cum se face? ca e mult prea complicat la fiecare banc sa bag br-uri... inebunesc...

aia cu file() nu prea am inteles-o...
ada80ro
QUOTE(NemoXP @ Jan 13 2006, 23:46) *
si ca sa considere capat de banc acolo unde gaseste <br> ?

NU.
Nu ai inteles nimic.

Tu in momenut in care scrii un banc in textarea faci ceva de genul:
Adam, ce zici, ma, îti fac o femeie?[apesi enter]
- Ce-i aia, Doamne?[apesi enter]
- Ah! E-o chestie misto de tot! Frumoasa, desteapta, întelegatoare, iubitoare, temperamentala... ce mai![apesi enter]
etc.
In momenul in care apesi un enter se introduce in text un caracter "\n" ("\r\n") iar functia file() face un array din fisierul respectiv, fiecare element din array reprezentand o linie de text (prin linie intelegand textul pana la un \n inclusiv).

Deci asta inseamna ca daca parcurgi elementele array-ului respectiv cu un for o sa-ti afiseze patru linii pe pagina, nu patru bancuri.
Daca vrei sa-ti afiseze pantru bancuri atunci nu trebuie sa ai alt caracter "\n" in afara de cel de la sfarsitul bancului.


$banc=nl2br($_POST['banc]) introduce niste taguri <br> inaintea "\n" ca sa pastrezi totusi strucutura bancului, altfel era tot pe aceeasi linie daca elimini "\n".
Dupa asta elimini toate ws-urile preventiv si adaugi la sfarsitul bancului caracterul "\n" pentru demarcaj.
$replace = array("\t", "\n", "\r\n", "\f","\r");
$banc=str_replace($replace,'',$banc)."\n";

Este clar acum?
cosminnuss
hmm.... O sa astept un CEC de 1 mil de para de la tine pentru raspunsu asta biggrin.gif

CODE
$bancuri=file_get_contents("file.txt");
//array cu toate bancurile
$bancuri_ar=explode("|",$bancuri);

-adapteaza codu asta la ce ai tu
-foloseste "|" pentru capat de banc
NemoXP
//modified

unde pun asta? dupa $lines = file('text.txt'); ?
si ce ar mai trebui modificat? eu ist mai greu de cap..
Pagini: 1, 2
Aceasta este o versiune simplificată a paginii originale. Pentru a vizita versiunea originala click aici.