[php] Tabela do pliku tekstowego

0

Jak w php zrobic, aby wszystkie pola i rekordy zapisać do pliku tekstowego na serwerze, z tym, że po każdym wpisie następuje wpisanie znaku gwiazdki *, a na końcu rekordu następuje przejscie do nowej linii. Wygląda to mniej więcej tak:

wpis1wpis2wpis3
wpis4wpis5wpis6
wpis7wpis8wpis9

0

Zapraszam (tu jest wszystko co potrzebujesz):
http://pl2.php.net/manual/pl/function.fwrite.php

0
Zawadzki14 napisał(a)

Zapraszam (tu jest wszystko co potrzebujesz):
Wydaje mi sie ze nie chodzilo mu tylko o samo zapisanie do pliku, ale i o "przygotowanie" danych z bazy to wrzucenia do pliku... ;)

Jak masz zmienna $tab jako tablce rekordow, np:

$tab = array();
$tab[] = array('imie'=>"Ala", 'wiek'=>26);
$tab[] = array('imie'=>"Basia", 'wiek'=>21);
$tab[] = array('imie'=>"Zosia", 'wiek'=>36);

To mozesz wykozystac funkcje do sformatowania tych danych:

function toString($dane, $col_split = ";", $row_split = "\n") {
    $tmp = array();
    foreach ($dane as $v) $tmp[] = join($col_split, $v);
    return join($row_split, $tmp);
}

Domyslne wartosci dziela pola srednikiem a rekody nowa linia (jak w plikach csv). Ale nic nie stoi ma przeszkodzie wywolac toString($tab, "*"); zeby bylo tak jak chcesz

BTW: Zeby byly poprawne pliki csv potrzebny jest naglowek:

function getHeader($dane, $col_split = ";") {
    return join(array_keys($dane[0]), $col_split);
}

To tak w ramach offtopa :]

0

Zrobiłem tak:

$linie = mysql_num_rows($wynik); //liczba wszystkich linii w tabelii

$plik = fopen ("test.txt", "a+");  // otwiera plik

$i = 0;  

while ($i < $linie) {  //dopóki $i jest mniejsze od liczby linii
$i = $i + 1;
$k = -1;
while ($rekord = mysql_fetch_array ($wynik)) {
  while ($k < 2) { // 2 ponieważ w swojej tabeli mam 3 kolumny
   $k = $k + 1;
   fputs ($plik, $rekord[$k]."*"); // wyświetla wpis i wstawia znak *
   if ($k==2) { // jeżeli jest to ostatni wpis w wierszu...
    fputs ($plik, "\n"); //...to przechodzi do nowej linii
    }; 
   };
 };
};

 fclose ($plik);

Skrypt zapisuje tylko jeden wiersz. Jest to pierwszy wiersz w tabeli. Próbowałem zrobic tak, że dopóki zmienna i jest mniejsza od liczby linii, to powtarza tą procedurę, czyli zapisuje kolejne wiersze do pliku, ale cos nie idzie.
Pomocy!

0

SORRY ZA BŁĄD!!!

Skrypt ma pobierać dane z bazy danych MySQL i zapisywać do pliku testowego

SORRY ZA BŁĄD!!!

0

kubak = zagadka
zagadka = kubak

0

zamiast tego kodu daj:

$tab = array();
while ($row = mysql_fetch_array($wynik)) {
    $tab[] = $row;
}
$f = fopen("test.txt", "a+"); // czy chcesz dopisywac do tego pliku??
fputs($f, toString($tab, "*"));
fclose($f);

... i powinno dzialac [green]

0

Ten kod nie działa

0
kubak napisał(a)

Ten kod nie działa
Dziwne... a u mnie dziala ;P
Na pewno wszystko dobrze przepisales??

0

pokazuje błąd dotyczący funkcj toString

0
kubak napisał(a)

pokazuje błąd dotyczący funkcj toString
hmmm, a wiez ze funkcji toString nie ma w php'ie... ale jej cialo podalem powyzej w poscie ;P

0

toString - oczywiscie mój głupi błąd, dzięki

A dlaczego zapisuje wpisy podwójnie, tzn.
wpis1wpis1wpis2wpis2wpis3*wpis3

1 użytkowników online, w tym zalogowanych: 0, gości: 1