דעם אָפּרוטעג, איך געוואלט צו בויען אַ PHP בלאַט וואָס וואָלט באַקאַפּ קיין מיסקל אָנפֿרעג אָדער טיש אין אַ טאַב דעלימיטעד טעקע. רובֿ פון די ביישפילן אויף די נעץ האָבן שווער-קאָדעד שפאלטן.
אין מיין פאַל, איך געוואלט די שפאלטן צו זיין דינאַמיש, אַזוי איך האָבן צו ערשטער שלייף דורך אַלע די טיש פעלד נעמען צו בויען די כעדער רודערן מיט זייַל נעמען און דערנאָך שלייף דורך אַלע די רעקאָרדס פֿאַר די רוען דאַטן ראָוז. איך אויך שטעלן די כעדער אַזוי אַז דער בלעטערער וועט אָנהייבן די דאַונלאָודינג פון די טעקע אין די פילעטיפּע (טקסט) מיט די נאָמען פון די טעקע דאַטע און טימעסטאַמפּעד.
טאַב דעלימיטעד עקספּאָרט פֿון MySQL אין PHP
<?php
$today = date("YmdHi");
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$today."_Backup.txt\"");
$conn = new mysqli("hostname", "username", "password", "database_name"); // Replace with your database credentials
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$query = "SELECT * FROM `mytable` ORDER BY `myorder`";
$result = $conn->query($query);
if ($result->num_rows > 0) {
$fields = $result->fetch_fields();
// Prepare the header row
$header = [];
foreach ($fields as $field) {
$header[] = $field->name;
}
$data = implode("\t", $header) . "\n";
// Fetch and process the data rows
while ($row = $result->fetch_assoc()) {
$rowValues = [];
foreach ($fields as $field) {
$rowValues[] = $row[$field->name];
}
$data .= implode("\t", $rowValues) . "\n";
}
// Output the data
echo $data;
} else {
echo "No data found";
}
// Close the database connection
$conn->close();
?>
זאל ס גיין דורך די קאָד שריט דורך שריט מיט דערקלערונגען פֿאַר יעדער טייל:
<?php
// Get the current date and time in a specific format
$today = date("YmdHi");
// Set HTTP headers for file download
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$today."_Backup.txt\"");
// Create a MySQL database connection
$conn = new mysqli("hostname", "username", "password", "database_name"); // Replace with your database credentials
// Check if the database connection was successful
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
- מיר דזשענערייט די קראַנט דאַטע און צייט אין די "YmdHi" פֿאָרמאַט און קראָם עס אין די
$today
בייַטעוודיק. - הטטפּ כעדערז זענען באַשטימט צו ספּעציפיצירן אַז דער אינהאַלט זאָל זיין באהאנדלט ווי אַ אָקטעט טייַך (ביינערי דאַטן) און צינגל אַ טעקע אראפקאפיע מיט די ספּעסאַפייד טעקע נאָמען.
- מיט די פאַרלענגערונג, מיר מאַכן אַ MySQL דאַטאַבייס פֿאַרבינדונג, ריפּלייסינג אָרטהאָלדערס מיט דיין פאַקטיש דאַטאַבייס קראַדענטשאַלז.
- מיר קאָנטראָלירן אויב די דאַטאַבייס קשר איז געראָטן. מיר פאַרענדיקן דעם שריפט און ווייַזן אַ טעות אָנזאָג אויב עס איז אַ טעות.
// Define the SQL query to select data from the `mytable` table
$query = "SELECT * FROM `mytable` ORDER BY `myorder`";
// Execute the SQL query
$result = $conn->query($query);
// Check if there are any rows returned
if ($result->num_rows > 0) {
// Fetch the field (column) names
$fields = $result->fetch_fields();
// Prepare the header row for the export file
$header = [];
foreach ($fields as $field) {
$header[] = $field->name;
}
$data = implode("\t", $header) . "\n";
- מיר דעפינירן די SQL אָנפֿרעג צו סעלעקטירן אַלע דאַטן פֿון די
mytable
טיש, אָרדערינג עס דורך דיmyorder
זייַל. - די אָנפֿרעג איז עקסאַקיוטאַד, און דער רעזולטאַט איז סטאָרד אין די
$result
בייַטעוודיק. - מיר קאָנטראָלירן אויב עס זענען קיין ראָוז אומגעקערט דורך ונטערזוכן די
num_rows
פאַרמאָג פון דער רעזולטאַט כייפעץ. - מיר נוצן
fetch_fields()
צו צוריקקריגן די פעלד (זייַל) נעמען און קראָם זיי אין די$fields
מענגע. - די כעדער רודערן פֿאַר די אַרויספירן טעקע איז צוגעגרייט דורך לופּינג דורך די פעלד נעמען און קאַנקאַטאַנייטינג זיי מיט טאַבס.
// Fetch and process the data rows
while ($row = $result->fetch_assoc()) {
$rowValues = [];
foreach ($fields as $field) {
$rowValues[] = $row[$field->name];
}
$data .= implode("\t", $rowValues) . "\n";
}
- מיר נוצן אַ
while
שלייף צו ברענגען יעדער דאַטן רודערן פון די רעזולטאַט שטעלן ניצןfetch_assoc()
. - ין דער שלייף, מיר צוגרייטן די וואַלועס פון יעדער רודערן דורך יטערייטינג דורך די פעלדער און קאַלעקטינג די קאָראַספּאַנדינג דאַטן.
- די וואַלועס פֿאַר יעדער רודערן זענען קאַנקאַטאַנייטאַד מיט טאַבס צו שאַפֿן אַ טאַב-דעלימיטעד רודערן, און די רודערן איז מוסיף צו די
$data
בייַטעוודיק.
// Output the data to the browser
echo $data;
} else {
// If no data is found, display a message
echo "No data found";
}
// Close the MySQL database connection
$conn->close();
?>
- אויב עס איז געפֿונען דאַטן (אָפּגעשטעלט מיט
num_rows
), מיר ווידערקאָל די קאַנקאַטאַנייטאַד דאַטן, וואָס איז דער אינהאַלט פון די אַרויספירן טעקע. דאָס טריגערז די אראפקאפיע פון די טעקע אין דער באַניצער 'ס בלעטערער. - אויב קיין דאַטן איז געפֿונען, מיר ווייַזן אַ אָנזאָג וואָס ינדיקייץ אַז קיין דאַטן זענען בנימצא.
- מיר פאַרמאַכן די MySQL דאַטאַבייס קשר ניצן
$conn->close()
צו באַפרייַען רעסורסן.
דער קאָד עפפיסיענטלי עקספּאָרץ דאַטן פון אַ MySQL דאַטאַבייס טיש אין אַ קוויטל-דעלימיטעד טעקסט טעקע און כאַנדאַלז פאַרשידן סינעריאָוז, אַזאַ ווי דייטאַבייס קשר ערראָרס און ליידיק רעזולטאַט שטעלט.
קאָממאַ-סעפּאַראַטעד וואַלועס עקספּאָרט פֿון MySQL אין PHP
איך קענען מאָדיפיצירן די קאָד צו אַרויספירן דאַטן ווי אַ קסוו טעקע. דאָ איז דער קאָד, דערהייַנטיקט פֿאַר CSV אַרויספירן:
<?php
// Get the current date and time in a specific format
$today = date("YmdHi");
// Set HTTP headers for file download
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=\"".$today."_Backup.csv\"");
// Create a MySQL database connection
$conn = new mysqli("hostname", "username", "password", "database_name"); // Replace with your database credentials
// Check if the database connection was successful
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Define the SQL query to select data from the `mytable` table
$query = "SELECT * FROM `mytable` ORDER BY `myorder`";
// Execute the SQL query
$result = $conn->query($query);
// Check if there are any rows returned
if ($result->num_rows > 0) {
// Prepare the output file handle for writing
$output = fopen('php://output', 'w');
// Fetch and process the data rows
while ($row = $result->fetch_assoc()) {
// Output each row as a CSV line
fputcsv($output, $row);
}
// Close the output file handle
fclose($output);
} else {
// If no data is found, display a message
echo "No data found";
}
// Close the MySQL database connection
$conn->close();
?>
אין דעם מאַדאַפייד קאָד:
- די כעדערז פֿאַר די הטטפּ ענטפער זענען דערהייַנטיקט צו ספּעציפיצירן אַ
text/csv
אינהאַלט טיפּ, און דער טעקע נאָמען האט די ".קסוו" געשפּרייט. - אַנשטאָט מאַניואַלי קריייטינג די CSV אינהאַלט, מיר נוצן די
fputcsv
פונקציע צו רעזולטאַט יעדער רודערן פֿון די MySQL רעזולטאַט שטעלן ווי אַ קסוו שורה. די פֿונקציע כאַנדאַלז די קסוו פאָרמאַטטינג פֿאַר איר, אַרייַנגערעכנט האַנדלינג ספּעציעלע אותיות און ענקלאָוזינג פעלדער אין טאָפּל קוואָטעס ווען נייטיק. - מיר עפענען די רעזולטאַט טעקע שעפּן ניצן
fopen
מיט 'php://output' ווי דער טעקע נאָמען. דאָס אַלאַוז אונדז צו שרייַבן גלייך צו די הטטפּ ענטפער רעזולטאַט טייַך. - דער קאָד איז סטראַקטשערד צו שעפּן קסוו עקספּאָרט יפישאַנטלי און קלאָוזיז די טעקע שעפּן ווען געטאן.
דער קאָד וועט אַרויספירן די דאַטן פון די MySQL טיש ווי אַ קסוו טעקע, וואָס מאכט עס גרינג פֿאַר יוזערז צו עפֿענען און אַרבעטן מיט אין ספּרעדשיט אַפּלאַקיישאַנז ווי עקססעל. דו זאלסט נישט פאַרגעסן צו פאַרבייַטן די דאַטאַבייס קראַדענטשאַלז מיט דיין אייגענע.