كود رفع صور على الموقع يإستخذام php5 and MySQL

Mohaj • منذ 5 سنوات

السلام عليكم ورحمة الله وبركاته ، صباح الخير 

أعزائي انا قائمه على موقع ومن جوانبه جزء خاص بتخزين الصور على قاعده البيانات ، ولكن صادفتنا مشكله فهل هناك من يساعدني ؟

 

الخطأ : 

Undefined index: file


//dbconfig.php


<?php
// Database configuration
$dbHost     = "localhost";
$dbUsername = "root";
$dbPassword = "";
$dbName     = "codexworld";

// Create database connection
$db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);

// Check connection
if ($db->connect_error) {
    die("Connection failed: " . $db->connect_error);
}
?>

 


//upload.php


<!DOCTYPE html>
<html>
<head>
	<title>إنشاء </title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
    Select Image File to Upload:
    <input type="file" name="file">
    <input type="submit" name="submit" value="Upload">
</form>
</body>
</html>

<?php

// Include the database configuration file

include 'dbConfig.php';

$statusMsg = '';

 
 

if(isset($_POST["submit"]) && isset($_FILES["file"])){

// File upload path

$targetDir = "uploads/";

$fileName = basename($_FILES["file"]["name"]);

$targetFilePath = $targetDir . $fileName;

$fileType = pathinfo($targetFilePath,PATHINFO_EXTENSION);

// Allow certain file formats

$allowTypes = array('jpg','png','jpeg','gif','pdf');

if(in_array($fileType, $allowTypes)){

// Upload file to server

if(move_uploaded_file($_FILES["file"]["tmp_name"], $targetFilePath)){

// Insert image file name into database

$insert = $db->query("INSERT into images (file_name, uploaded_on) VALUES ('".$fileName."', NOW())");

if($insert){

$statusMsg = "The file ".$fileName. " has been uploaded successfully.";

}else{

$statusMsg = "File upload failed, please try again.";

} 

}else{

$statusMsg = "Sorry, there was an error uploading your file.";

}

}else{

$statusMsg = 'Sorry, only JPG, JPEG, PNG, GIF, & PDF files are allowed to upload.';

}

}else{

$statusMsg = 'Please select a file to upload.';

}

 

// Display status message

echo $statusMsg;

?>

 

//display.php

<?php
// Include the database configuration file
include 'dbConfig.php';

// Get images from the database
$query = $db->query("SELECT * FROM images ORDER BY uploaded_on DESC");

if($query->num_rows > 0){
    while($row = $query->fetch_assoc()){
        $imageURL = 'uploads/'.$row["file_name"];
?>
    <img src="<?php echo $imageURL; ?>" alt="" />
<?php }
}else{ ?>
    <p>No image(s) found...</p>
<?php } ?>

 

كلمات دليلية: php5

الإجابة الصحيحة

Alhoqbani • منذ 5 سنوات

مشكلتك في هذا السطر 

$fileName = basename($_FILES["file"]["name"]);

المفروض يكون بعد 

if(isset($_POST["submit"])

لان اذا فتحت الصفحة من دون ارسال المموذج المتغير $_FILES يكون فارغ

الكود بعد التعديل

php

// Include the database configuration file

include 'dbConfig.php';

$statusMsg = '';

 
 

if(isset($_POST["submit"]) && isset($_FILES["file"]){

// File upload path

$targetDir = "uploads/";

// إنشاء مجلد في حال لم يكن موجود
if ( ! file_exists($targetDir)) {
    mkdir($targetDir);
}

$fileName = basename($_FILES["file"]["name"]);

$targetFilePath = $targetDir . $fileName;

$fileType = pathinfo($targetFilePath,PATHINFO_EXTENSION);

// Allow certain file formats

$allowTypes = array('jpg','png','jpeg','gif','pdf');

if(in_array($fileType, $allowTypes)){

// Upload file to server

if(move_uploaded_file($_FILES["file"]["tmp_name"], $targetFilePath)){

// Insert image file name into database

$insert = $db->query("INSERT into images (file_name, uploaded_on) VALUES ('".$fileName."', NOW())");

if($insert){

$statusMsg = "The file ".$fileName. " has been uploaded successfully.";

}else{

$statusMsg = "File upload failed, please try again.";

} 

}else{

$statusMsg = "Sorry, there was an error uploading your file.";

}

}else{

$statusMsg = 'Sorry, only JPG, JPEG, PNG, GIF, & PDF files are allowed to upload.';

}

}else{

$statusMsg = 'Please select a file to upload.';

}

 

// Display status message

echo $statusMsg;

?>

 

 

الإجابات (1)

Alhoqbani • منذ 5 سنوات
الإجابة الصحيحة
مميز

مشكلتك في هذا السطر 

$fileName = basename($_FILES["file"]["name"]);

المفروض يكون بعد 

if(isset($_POST["submit"])

لان اذا فتحت الصفحة من دون ارسال المموذج المتغير $_FILES يكون فارغ

الكود بعد التعديل

php

// Include the database configuration file

include 'dbConfig.php';

$statusMsg = '';

 
 

if(isset($_POST["submit"]) && isset($_FILES["file"]){

// File upload path

$targetDir = "uploads/";

// إنشاء مجلد في حال لم يكن موجود
if ( ! file_exists($targetDir)) {
    mkdir($targetDir);
}

$fileName = basename($_FILES["file"]["name"]);

$targetFilePath = $targetDir . $fileName;

$fileType = pathinfo($targetFilePath,PATHINFO_EXTENSION);

// Allow certain file formats

$allowTypes = array('jpg','png','jpeg','gif','pdf');

if(in_array($fileType, $allowTypes)){

// Upload file to server

if(move_uploaded_file($_FILES["file"]["tmp_name"], $targetFilePath)){

// Insert image file name into database

$insert = $db->query("INSERT into images (file_name, uploaded_on) VALUES ('".$fileName."', NOW())");

if($insert){

$statusMsg = "The file ".$fileName. " has been uploaded successfully.";

}else{

$statusMsg = "File upload failed, please try again.";

} 

}else{

$statusMsg = "Sorry, there was an error uploading your file.";

}

}else{

$statusMsg = 'Sorry, only JPG, JPEG, PNG, GIF, & PDF files are allowed to upload.';

}

}else{

$statusMsg = 'Please select a file to upload.';

}

 

// Display status message

echo $statusMsg;

?>

 

 

Mohaj: اولا شكرا على المساعدة لكن ،للاسف يصادفني خطأ :Warning: move_uploaded_file(uploads/1456461210081.jpg): failed to open stream: No such file or directory in C:\xampp\c\htdocs\codexworld\upload.php on line 46 Warning: move_uploaded_file(): Unable to move 'C:\xampp\c\tmp\phpA7F8.tmp' to 'uploads/1456461210081.jpg' in C:\xampp\c\htdocs\codexworld\upload.php on line 46 Sorry, there was an error uploading your file.

Alhoqbani: المجلد uploads لازم يكون موجود

Mohaj: تقصد لازم انشأ مجلد جديد بإسم uploads واحفطه في codexwirld ?

Alhoqbani: ما اعرف وين codexwirld، لكن جنب ملف php حق رفع الملفات لازم يكون فيه مجلد اسمه uploads، لأن هذا المجلد اللي انت اخترتي تكون في الملفات بعد الحميل، شوف التعديل على الكود بعد تعريف المتغير $targetDir

Mohaj: يسعدلي قلبك ، شششكرا شكرا شكرا مداد السماء ، يعطيك العافيه

Mohaj: معليش ربي يرضى عليك ممكن تفيدني بكود لو كنت حابه أخزن نص مع الصورة !

Alhoqbani: أضيفي عمود للجدول في قاعدة البيانات وعدلي الكود حق الإدخال حتى يضيف النص. $insert = $db-&gt;query("INSERT into images (file_name, description, uploaded_on) VALUES ('".$fileName."', "Some description here", NOW())");

Mohaj: يعطيك العافيه ضبط معي بس المشكله انه يخزن الحكي العربي بأحرف غير مفهومة ، كيف أتفادى هذه المشكله ؟

Alhoqbani: في الغالب php لما يقراها من قاعدة البيانات راح يحولها إلى عربي، لكن الأفضل إنك تغييرين في MySQL الترميز للجدول بحيث يكون الـEncoding يساوي utf8mb4 والـCollation يساوي utf8mb4_general_ci

Mohaj: جربته لكن للأسف المشكله ما زالت موجودة !

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !