Author: Sanjay Bhowmick (Page 2 of 4)
Below is a simple example of a PHP script that allows you to download file from a specific folder. You can link to this PHP file with the file name as a parameter.
Create a file named download.php and add the following code:
<?php
// Specify the folder where your files are stored
$folderPath = '/path/to/your/files/';
// Get the file name from the query parameter
if (isset($_GET['file'])) {
$fileName = basename($_GET['file']);
$filePath = $folderPath . $fileName;
// Check if the file exists
if (file_exists($filePath)) {
// Set headers for download
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $fileName . '"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($filePath));
// Read the file and output it to the browser
readfile($filePath);
exit;
} else {
echo 'File not found.';
}
} else {
echo 'File parameter missing.';
}
?>
Replace ‘/path/to/your/files/’ with the actual path to the folder where your files are stored. Now, you can link to this script by providing the file name as a parameter, like this:
<a href=”download.php?file=myfile.txt”>Download</a>
Make sure to adjust the link and file names accordingly. Note that this is a basic example, and you may need to add additional security measures based on your specific requirements, such as checking user permissions and validating file types.
While developing WordPress theme or plugin we use different WordPress keywords or terms, additionally while handling forms fields and custom post types we have to consider what names we can use or not. The restricted names are called reserved terms.
WordPress itself reserves few keywords or terms which we can not use in our coding. Using these reserved or restricted terms just break the functionality what we intend
to get.
You should avoid using these reserved terms in the following scenarios:
- Passing a term through a $_GET or $_POST array.
- Registering a taxonomy or post type slug
- Handling query variables
WordPress Codex URL: https://codex.wordpress.org/Reserved_Terms
Here is a PHP script that allows users to upload image and PDF files with a maximum size of 5 MB. The uploaded files will be renamed using the current timestamp:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_FILES["file"])) {
$allowedExtensions = array("jpg", "jpeg", "png", "pdf");
$maxFileSize = 5 * 1024 * 1024; // 5 MB in bytes
$targetDirectory = "uploads/";
$timestamp = time();
$targetFileName = $timestamp . "_" . basename($_FILES["file"]["name"]);
$targetPath = $targetDirectory . $targetFileName;
$fileExtension = strtolower(pathinfo($targetFileName, PATHINFO_EXTENSION));
if (in_array($fileExtension, $allowedExtensions) && $_FILES["file"]["size"] <= $maxFileSize) {
if (move_uploaded_file($_FILES["file"]["tmp_name"], $targetPath)) {
echo "File uploaded successfully.";
} else {
echo "Error uploading file.";
}
} else {
echo "Invalid file. Allowed file types: jpg, jpeg, png, pdf. Max file size: 5 MB.";
}
}
?>
This is HTML form for file upload.
<!DOCTYPE html>
<html>
<head>
<title>File Upload</title>
</head>
<body>
<form method="POST" enctype="multipart/form-data">
<input type="file" name="file" accept=".jpg, .jpeg, .png, .pdf" required>
<button type="submit">Upload</button>
</form>
</body>
</html>
Here’s what the script does:
- It checks if the form has been submitted and if a file has been uploaded.
- It sets the allowed file extensions ($allowedExtensions) and maximum file size ($maxFileSize).
- It defines the target directory ($targetDirectory), generates a new file name using the current timestamp, and constructs the target path.
- It checks if the uploaded file has an allowed extension and if its size is within limits.
- If the file meets the criteria, it moves the file to the target directory using move_uploaded_file() and echoes a success message.
- If the file does not meet the criteria, it echoes an error message.
- The HTML form allows users to select a file with the accept attribute specifying the allowed file types. After submitting the form, the PHP script processes the file upload.
To get the total of a MySQL field and then select the three highest totals from the table, you can use the following PHP script:
<?php
// Assuming you have already established a MySQL connection
// Retrieve the total of a field and select the three highest totals
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database_name";
// Create a new MySQL connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check the connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Prepare and execute the SQL statement to get the total and select three highest totals
$sql = "SELECT SUM(field_name) AS total FROM table_name GROUP BY field_name ORDER BY total DESC LIMIT 3";
$result = $conn->query($sql);
if ($result && $result->num_rows > 0) {
echo "Three highest totals: <br>";
while ($row = $result->fetch_assoc()) {
$total = $row['total'];
echo $total . "<br>";
}
} else {
echo "No records found.";
}
// Close the database connection
$conn->close();
?>
Make sure to replace ‘your_username’, ‘your_password’, ‘your_database_name’, ‘field_name’, and ‘table_name’ with the actual values for your MySQL configuration and table structure.
In this script, the SQL query uses the SUM function to calculate the total of the specified field (field_name) and groups the results by the field values. It then orders the results in descending order of the totals and limits the result set to the top three rows.
The script retrieves the three highest totals from the query results and prints them on the screen. If no records are found, it displays a message indicating that no records were found.
Please make sure to adjust the SQL query and table/column names according to your specific table structure and requirements.
Get total of a mysql field and then select 3 all records which have heighest total from the table
To get the total of a MySQL field and then select all records that have the highest total from the table, you can use the following PHP script:
<?php
// Assuming you have already established a MySQL connection
// Retrieve the total of a field and select all records with the highest total
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database_name";
// Create a new MySQL connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check the connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Prepare and execute the SQL statement to get the total and select all records with the highest total
$sql = "SELECT *, SUM(field_name) AS total FROM table_name GROUP BY id HAVING total = (SELECT MAX(total) FROM (SELECT SUM(field_name) AS total FROM table_name GROUP BY id) AS temp)";
$result = $conn->query($sql);
if ($result && $result->num_rows > 0) {
echo "Records with the highest total: <br>";
while ($row = $result->fetch_assoc()) {
// Access the record data
$id = $row['id'];
$fieldValue = $row['field_name'];
$total = $row['total'];
// Process or display the record as needed
echo "ID: $id, Field Value: $fieldValue, Total: $total <br>";
}
} else {
echo "No records found.";
}
// Close the database connection
$conn->close();
?>
Make sure to replace ‘your_username’, ‘your_password’, ‘your_database_name’, ‘field_name’, and ‘table_name’ with the actual values for your MySQL configuration and table structure.
In this script, the SQL query uses the SUM function to calculate the total of the specified field (field_name) for each record in the table. It then groups the results by the id column and selects only those records where the total is equal to the maximum total value across all records.
The script retrieves the records with the highest total from the query results and prints them on the screen. If no records are found, it displays a message indicating that no records were found. Please make sure to adjust the SQL query and table/column names according to your specific table structure and requirements.
In a HTML table compare every column data of every row. if any column data has changed value with respect to previous row then highlight that data.
We can achieve this using JavaScript. Here’s a basic example of how you could implement this functionality:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Highlight Changed Data</title>
<style>
.changed {
background-color: yellow;
}
</style>
</head>
<body>
<table id="data-table">
<thead>
<tr>
<th>Column 1</th>
<th>Column 2</th>
<th>Column 3</th>
</tr>
</thead>
<tbody>
<tr>
<td>Initial Value 1</td>
<td>Initial Value 2</td>
<td>Initial Value 3</td>
</tr>
<tr>
<td>Changed Value 1</td>
<td>Changed Value 2</td>
<td>Changed Value 3</td>
</tr>
<!-- Add more rows as needed -->
</tbody>
</table>
<script>
window.onload = function () {
const table = document.getElementById('data-table');
const rows = table.getElementsByTagName('tr');
for (let i = rows.length - 1; i > 0; i--) {
const currentRow = rows[i];
const previousRow = rows[i - 1];
if (!previousRow) {
break; // Exit loop if no previous row (first row)
}
const currentCells = currentRow.getElementsByTagName('td');
const previousCells = previousRow.getElementsByTagName('td');
for (let j = 0; j < currentCells.length; j++) {
const currentCell = currentCells[j];
const previousCell = previousCells[j];
if (currentCell.textContent !== previousCell.textContent) {
currentCell.classList.add('changed');
}
}
}
};
</script>
</body>
</html>
This code compares each cell of each row with the corresponding cell of the previous row. If the content of a cell is different from the content of the corresponding cell in the previous row, it adds a changed class to highlight the change. You can customise the appearance of the changed cells by modifying the CSS class .changed.
To fetch data from a MySQL database and export it to CSV using PHP, you can follow these steps:
<?php
// Database connection details
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database_name";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Fetch data from your table
$sql = "SELECT * FROM your_table";
$result = $conn->query($sql);
// Check if any rows are returned
if ($result->num_rows > 0) {
// Define CSV filename
$filename = "exported_data.csv";
// Set headers for CSV download
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="' . $filename . '"');
// Create a file pointer connected to the output stream
$output = fopen('php://output', 'w');
// Output CSV header
$header = array('ID', 'Name', 'Email');
fputcsv($output, $header);
// Output data from rows
while ($row = $result->fetch_assoc()) {
fputcsv($output, $row);
}
// Close the file pointer
fclose($output);
} else {
echo "No data found";
}
// Close the database connection
$conn->close();
?>
Explanation:
- Database Connection: Replace your_username, your_password, your_database_name, and your_table with your actual database credentials and table name.
- Fetch Data: The SQL query retrieves data from the specified table.
- CSV Headers: The header function is used to set headers for CSV download.
- CSV File Creation: We use fopen to create a file pointer connected to the output stream (php://output). Then, fputcsv is used to write the CSV header and data.
- Download CSV: Headers are set to prompt the user to download the CSV file with the specified filename.
When you run this script, it will fetch data from your MySQL table and export it to a CSV file, which will be downloaded by the user.
Here’s a detailed example of how to import data from a CSV file into a MySQL database using PHP. The script processes each row one by one, displays a success message for each successfully inserted row, and stops the process if any error occurs, showing the error message.
Prerequisites:
- Ensure you have a MySQL database and table set up to store the CSV data.
- Adjust the database connection details and table schema as needed.
Database Setup:
Assume you have a MySQL table named csv_import with columns id, name, and email.
CREATE TABLE csv_import (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL
);
Here’s a PHP script that handles the CSV import process:
<?php
// Database connection details
$servername = "your_servername";
$username = "your_username";
$password = "your_password";
$dbname = "your_dbname";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if (isset($_POST['submit'])) {
$csvFile = $_FILES['csv']['tmp_name'];
if (is_file($csvFile)) {
// Open the CSV file
if (($handle = fopen($csvFile, "r")) !== FALSE) {
$rowNumber = 0;
// Process each row of the CSV file
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$rowNumber++;
// Skip the header row
if ($rowNumber == 1) {
continue;
}
$name = $conn->real_escape_string($data[0]);
$email = $conn->real_escape_string($data[1]);
// Insert the data into the database
$sql = "INSERT INTO csv_import (name, email) VALUES ('$name', '$email')";
if ($conn->query($sql) === TRUE) {
echo "Row $rowNumber inserted successfully.<br>";
} else {
echo "Error inserting row $rowNumber: " . $conn->error . "<br>";
break;
}
}
fclose($handle);
} else {
echo "Error opening the CSV file.";
}
} else {
echo "Invalid file.";
}
}
$conn->close();
?>
Here the HTML to upload CSV file
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSV Import</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<label for="csv">Choose CSV file:</label>
<input type="file" name="csv" id="csv" required>
<button type="submit" name="submit">Import CSV</button>
</form>
</body>
</html>
Explanation:
- Database Connection: Establish a connection to the MySQL database using the mysqli extension.
- Form Handling: The script checks if the form is submitted and processes the uploaded CSV file.
- CSV File Processing: It opens the CSV file and processes each row one by one using a while loop.
It skips the header row.
It escapes the data using $conn->real_escape_string to prevent SQL injection.
It inserts the data into the csv_import table.
It shows a success message for each inserted row.
If any error occurs, it shows an error message and stops the process. - HTML Form: The form allows the user to upload a CSV file.
To accumulate values from a MySQL query inside a while loop and then calculate the total value outside the loop, you can use a variable to store the total value while iterating through the records. Here’s an example in PHP:
<?php
// Your database connection parameters
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$database = "your_database";
// Create a connection to the MySQL database
$conn = new mysqli($servername, $username, $password, $database);
// Check the connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$totalValue = 0; // Initialize total value
// Your SQL query
$sql = "SELECT value_column FROM your_table_name WHERE your_conditions";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
// Access value column and accumulate the values
$value = $row['value_column'];
$totalValue += $value;
// You can also store values in an array if needed
// $valuesArray[] = $value;
}
echo "Total value: $totalValue"; // Print total value
// If you stored values in an array, you can print or manipulate the array here
// print_r($valuesArray);
} else {
echo "No records found.";
}
// Close the database connection
$conn->close();
?>
This PHP script fetches records from the database, accumulates the values from a specific column (value_column), and calculates the total value by adding up these values inside the while loop. After the loop, it prints the total value obtained. If you need to store these values in an array for further processing, you can uncomment and modify the $valuesArray[] = $value; line accordingly.