استفسار عن كيفية حفظ وتعديل الملفات في php
ساعد بالإجابة
"إن في قضاء حوائج الناس لذة لا يَعرفها إلا من جربها، فافعل الخير مهما استصغرته فإنك لا تدري أي حسنة تدخلك الجنة."
الإجابات (4)
18 ساعات مضت, aml said:لسلام عليكم ورحمة الله وبركاتهالله يعطيكم العافية استخدام php ابغى ان نوع من user لنفرض انه ال student يسوي upload لل file مثلا word بعدين الاستاذ يقدر يحمله ويسوي له تعديل ويرجع يحمله منشان ال student يطلع عليه ويقدر يحمله ليشوف التعديلات ب اختصار مثلا مستخدم student1 حمل file1مستخدم teacher1 يقدر يحمل file1 ويسوي تعديل عليه ويرجع يحمله ويقدر student1 يطلع عليهقبل سالت هينا منشان اعرض file للمستخدمين وقال لي افضل شي لي upload ان يكون فيه folder داخل المشروع واخزن فيه والحمد لله ضبطت معيلكن الان احتاج ان احمل وشخص ثاني يقدر يعدل عليه ويحدف اللي قبل من folder او اي طريقه ترونها صحيحة؟!!اي استفسار انا بالخدمة شاكره لكموالله يجزاكم خير ويوفقكم لما فيه خير وصلاح
وعليكم السلام ورحمة الله وبركاته
لعملية حذف ملف من داخل مجلد upload نستطيع باستخدام الدالة unlink
<?php
unlink('test.html');
اهم شي نمرر لها مسار الملف واسم الملف بالكامل ويوجد طريقة للتحقق من اذا كان الملف موجود داخل المجلد باستخدام الدالة realpath نسطيع استخدامها داخل if للتحقق من القيمة المرجعة اذا true نقوم بحذف الملف واذا false نكتب رسالة خطأ بسيطة للمستخدم
بعدها عملية رفع ملف جديد وتحديثه بقاعدة البيانات تكون نفس الكود السابق الاختلاف يكون ب sql نستخدم update ونحدد record المراد تحديثه بقاعدة البيانات
اذا كان عندي وقت الليله بحاول اعدل الاكواد واكتبهم هنا باذن الله
نستكمل الاجابة على هذا السؤال وهو امتداد لسؤال آخر
قمت بعمل مثال سريع لك لطريقة تحديث ملف بقاعدة البيانات بملف جديد وحذف القديم
قمت بالتعديل على ملف view.php ووضع رابط لتحديث الملفات
ليصبح محتوى الملف كالتالي
<?php
//database connection config
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "3alampro-help";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM upload";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"] . " - Name: " . $row["name"] . " - Type: " . $row["type"] . " - Path: " . $row["path"] . " <a href='update.php?file_id={$row["id"]}'>update</a>" . '<br>';
}
} else {
echo "0 results";
}
$conn->close();
بعدها قمت بإنشاء ملف جديد باسم update.php
<?php
//database connection config
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "3alampro-help";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if(isset($_GET['file_id']))
{
echo '
<form action = "update.php" method = "POST" enctype = "multipart/form-data">
<input type = "file" name = "userFile" />
<input type = "hidden" name = "file_id" value = "'. $_GET['file_id'] .'" />
<input type = "submit"/>
</form>
';
}
if(isset($_FILES['userFile']) and !empty($_FILES['userFile']['name']) and isset($_POST['file_id']))
{
$file_id = $_POST['file_id'];
$file_name = $_FILES['userFile']['name'];
$file_size = $_FILES['userFile']['size'];
$file_tmp = $_FILES['userFile']['tmp_name'];
$file_type = $_FILES['userFile']['type'];
$path = 'upload/' . $file_name;
$sql = "SELECT * FROM upload WHERE id = {$file_id}";
$result = $conn->query($sql);
$row = mysqli_fetch_assoc($result);
if(file_exists($row['path']))
{
unlink($row['path']);
}else
{
die('no file was found');
}
if (move_uploaded_file($file_tmp, $path)) {
echo "The file {$file_name} has been uploaded.";
} else {
die("Sorry, there was an error uploading your file.");
}
$sql = "UPDATE upload SET name = '$file_name', type = 'file_type', size = '$file_size', path = '$path' WHERE id=$file_id";
if ($conn->query($sql) === TRUE) {
echo "File updated successfully";
} else {
echo "Error updating file: " . $conn->error;
}
}
$conn->close();
وظيفة الملف عرض نموذج رفع ملف جديد وبداخله input مخفي يحمل id الملف القديم ثم يقوم بارسال النموذج لنفس الملف لعملية الرفع والحذف والتحديث
طبعا هذا مجرد مثال لتوضيح الطريقة وتبسيط حل المشكلة يجب مراعاة الجوانب الامنية عند تنفيذ اي استعلام بقاعدة البيانات عند جلب البيانات وعند اضافة مدخلات سواء جديدة او تحديث لبيانات مخزنة
تمام ضبط .. شششكرا شكرا الله يجزاك خير ويسخر لك عباده الصالحين ويسهل امورك مثل ماساعدتن
اكرر شكري لك وعذرا بالتاخير بالرد كان لدي ظروف
بالتوفيق
2 ساعات مضت, aml said:تمام ضبط .. شششكرا شكرا الله يجزاك خير ويسخر لك عباده الصالحين ويسهل امورك مثل ماساعدتن
اكرر شكري لك وعذرا بالتاخير بالرد كان لدي ظروف
بالتوفيق
آمين وياك يارب
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !