PDA

Prikaži potpunu verziju : Ispisivanje txt dinamički


Dekip
7.2.2014, 22:18
Treba mi da u while petlji izbacim podatke u txt fajl. Došao sam do ovoga:


$test='';
$myFile = "testfile.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
$sql=mysqli_query($con,"SELECT * FROM pdfreg");
while ($row = mysqli_fetch_array($sql)){
$id=$row['id'];
$name=$row['name'];
$value=$row['value'];
$date=$row['date'];
$test .=$stringData = $name.';'.$value.';\r\n';
$test .=fwrite($fh, $stringData);
}


Sa ovim dobijam upis u txt fajl ali ne upis ispod upisa već ovako:

test1;fajl1;\r\ntest2;fajl2;\r\ntest3;fajl3;\r\n

Meni treba ovako:

test1;fajl1;
test2;fajl2;
test3;fajl3;

Neutrino
7.2.2014, 22:37
Kad koristiš escape sekvence moraš da koristiš string deliterale (počinju i završavaju se navodnicima) a ne literale (počinju i završavaju se apsotrofima).

U PHP-u nije isto kad koristiš navodnike i apostrofe da ograničiš stringove.

http://www.php.net/manual/en/language.types.string.php


$test = '';
$myFile = "testfile.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
$sql = mysqli_query($con,"SELECT * FROM pdfreg");
while ($row = mysqli_fetch_array($sql)){
$id = $row['id'];
$name = $row['name'];
$value = $row['value'];
$date = $row['date'];
$test .= $stringData = $name . ';' . $value . ";\r\n";
$test .= fwrite($fh, $stringData);
}

JohnnyNT
7.2.2014, 22:38
Stavi \r\n pod ove " navodnike, ovako:

$test .=$stringData = $name.";".$value.";\r\n";

(mada mislim da ti je dovoljno i samo \n)

edit: preteče me n

Dekip
7.2.2014, 22:50
Mora i \r. :)

Neutrino
7.2.2014, 23:10
Mora i \r. :)
Samo ako imaš nameru da ručno otvaraš fajl na Windows-u jer Windows pored "new line" (\n) karaktera za prelazak u novi red zahteva i "carriage return" (\r). To je pomalo zaboravljena zaostavština iz doba kad su matričnim štampačima za postavljanje na početak novog reda morale da se zadaju dve komande, "pređi u sledeći red" i "vrati glavu (carriage) na početak". Dakle ono "carriage" u nazivu escape sekvence je dobilo ime od engleske reči za glavu štampača :)

Da se vratim na temu. Većina funkcija u PHP-u je sasvim sposobna da radi bez obzira na to da li se PHP kod izvrašava na Windows ili UNIX mašini. Dakle sa ili bez \r one će raditi bez problema jer se prilikom kompajliranja PHP-a za određenu platformu vodi računa o ovom malom detalju. Jedini slučaj kada je neophodno pridržavati se prakse dodavanja \r za novi red je kad recimo neki RFC u definiciji standarda eksplicitno koristi \r. Recimo kada se generiše zaglavlje maila RFC 822 (http://www.faqs.org/rfcs/rfc822.html) eksplicitno zahteva korišćenje \r\n kombinaciju između dva headera (novi red) dok se telo zahteva obavezno odvaja sa dva nova reda (\r\n\r\n) od zaglavlja (headera).

Dekip
8.2.2014, 12:43
Taj txt fajl kasnije zloupotrebljavam dalje pa mi treba da bude sve jedno ispod drugog.