Jak zapisać automatycznie do pliku CSV wszystkie rekordy z Mysql w kolumnach i kodowane w UTF-8(jakbym chciał puścić to z crontaba, żeby zapisywał mi się codziennie na dysku)?
np :
Książki Tytuł Wydawca
1a 1 b 1c
2a 2b 2c
3a 3b 3c
Ok. Ale jakby chciał stworzyć funkcje do pobierania, już nie sugerując się crontabem. Żeby automatycznie po odpaleniu skryptu zapisała mi się wyżej wypisane dane w formacie CSV w lokalizacji jaką podam np. na dysku D: ?
No przecież pod tym linkiem wszystko pisze, temat raczej też odkrywczy nie jest, więc może google?
To jeśli mam taki skrypt jak moge zapisac z niego albo wyswietlić zawartość w kolumnach? W tej chwili mam do pliku .txt
<?php
$sql_host = 'localhost:3306';
$sql_user = 'root';
$sql_baza = 'testowa';
if (mysql_connect($sql_host, $sql_user) and mysql_select_db($sql_baza)) {
echo 'polaczenie ok ';
$zapytanie = mysql_query("SELECT * FROM ksiazki");
if ($zapytanie) {
echo 'zapytanie ok ';
/* while ($wynik = mysql_fetch_row($zapytanie)) {
echo $wynik["Wydawca"];
echo "\n";
} */
while($row = mysql_fetch_row($zapytanie)) {
$comma = false;
foreach ($row as $item) {
if ($comma) {
echo ',';
} else {
$comma = true;
}
$quoted = str_replace("\"", "\"\"", $item);
echo "\"$qcuoted\"";
}
echo "\n";
$plik="pliczek.txt";
$fp = fopen($plik, "a");
flock($fp, 2);
fwrite($fp, $quoted);
flock($fp, 3);
fclose($fp);
}
}
else {
die('blad zapytania ');
}
mysql_close();
}
else {
die('blad polaczenia ');
}
?>
Ja tam znalazłem opcje zapisu bezpośrednio z MySQL a chce pobrać dane a następnie opcja fwrite(albo podobna) zapisać do CSV z kodowaniem UTF-8
I co Ci nie pasuje (oprócz literówki) w tym kodzie? Masz rozdzielane przecinkami, zapisane do pliku?
Chciałbym to zapisać w kolumnach i ten kod nie zapisuje mi wszystkiego tylko ilość:
Książki Tytuł Wydawca Ilosc
1a 1 b 1c 4
2a 2b 2c 5
3a 3b 3c 34
Weź podaj zrzut bazy, będzie prościej
Daje taki przykład moja baza wygląda podobnie 4 kolumny i dodane 3 rekordy. Ten skrypt powoduje mi zapisanie jedynie "ilość" z każdego rekordu i to w jednej komórce a nie w osobnych wierszach. Na przeglądarce wyświetla mi się wszytko w jednej lini
ID Nazwa Wydawca Ilosc
1 Programista IT 5
2 Think in Java Java 2
3 PHP i MySQL Helion 18
dzek69 napisał(a):
Weź podaj zrzut bazy, będzie prościej
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Baza danych: `testowa`
--
-- --------------------------------------------------------
--
-- Struktura tabeli dla tabeli `ksiazki`
--
CREATE TABLE IF NOT EXISTS `ksiazki` (
`ID` int(11) NOT NULL,
`Tytuł` text COLLATE utf8_polish_ci NOT NULL,
`Wydawca` text COLLATE utf8_polish_ci NOT NULL,
`Ilosc` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
--
-- Zrzut danych tabeli `ksiazki`
--
INSERT INTO `ksiazki` (`ID`, `Tytuł`, `Wydawca`, `Ilosc`) VALUES
(1, 'Programista', 'IT', 5),
(2, 'Think in Java', 'Java', 2),
(3, 'PHP i MySQL', 'Helion', 18);
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Ten Twój kod to jest jakaś radosna abstrakcja o.O
Posłużę Ci radą - odpuść sobie MySQL, jeżeli nie jesteś w stanie ogarnąć pętli czy dwóch, bo w ten sposób ani tego, ani tego się nie nauczysz.
PS. Nawet nie poprawiłeś literówki o której wspomniałem!
<?php
$sql_host = 'localhost:3306';
$sql_user = 'root';
$sql_baza = 'testowa';
if (mysql_connect($sql_host, $sql_user, 'root') and mysql_select_db($sql_baza)) {
echo 'polaczenie ok ';
$zapytanie = mysql_query("SELECT * FROM ksiazki");
if ($zapytanie) {
echo 'zapytanie ok ';
while($row = mysql_fetch_row($zapytanie)) {
$comma = false;
foreach ($row as $item) {
if ($comma) {
$quoted .= ',';
} else {
$comma = true;
}
$quoted .= str_replace("\"", "\"\"", $item);
//echo "\"$quoted\"";
}
$quoted .= PHP_EOL;
$plik="pliczek.txt";
$fp = fopen($plik, "w");
flock($fp, 2);
fwrite($fp, $quoted);
flock($fp, 3);
fclose($fp);
}
}
else {
die('blad zapytania ');
}
mysql_close();
}
else {
die('blad polaczenia ');
}