ارسال فایل با pdo در یک فرم

پرسیده شده
فعالیت 940 روز پیش
دیده شده 471 بار
0

سلام خسته نباشید 

 

view:mosavabeh-index.php

 <form class="form-group" method="post" action="<?= BASE_URL?>/process/ajax-mosavabeh.php" enctype="multipart/form-data" id="mosavabehForm">
        <fieldset class="scheduler-border">
  <legend class="scheduler-border">فرم مصوبه </legend>
<!--****************************-->
  <fieldset class="scheduler-border">
  <legend class="scheduler-border">موضوع مصوبه</legend>
            <input type="text" name="subject" id="subject" class="form-control" placeholder="موضوع مصوبه را وارد نمایید" required/>
            </fieldset>
<!--****************************-->
            <fieldset class="scheduler-border">
  <legend class="scheduler-border">متن مصوبه</legend>
            <textarea name="body" id="body" class="form-control"></textarea>
            </fieldset>
<!--****************************-->
<fieldset class="scheduler-border">
  <legend class="scheduler-border">اسم روستا را انتخاب کنید</legend>
  <select id="roosta_name" name="roosta_name" class="form-control">
                    <option value="اکبر آباد">اکبرآباد</option>
                    <option value="انبار تپه">انبار تپه</option>
                    <option value="اونق یلقی سفلی">اونق یلقی سفلی</option>
                    <option value="اونق یلقی علیا">اونق یلقی علیا</option>
                    <option value="شفتالو باغ سفلی">شفتالو باغ سفلی</option>
                    <option value="شفتالو باغ علیا">شفتالو باغ علیا</option>
                    <option value="شیخ تپه">شیخ تپه</option>
                    <option value="عطا آباد">عطا آباد</option>
                    <option value="قره تپه">قره تپه</option>
                    <option value="قزلی">قزلی</option>
                    <option value="کرد">کرد</option>
                    <option value="نصر کان سفلی">نصر کان سفلی</option>
                    <option value="پیرواش سفلی">پیرواش سفلی</option>
                    <option value="پیرواش علیا">پیرواش علیا</option>
                    <option value="اوج تپه">اوج تپه</option>
                    <option value="باغ شیخ موسی">باغ شیخ موسی</option>
                    <option value="باغ یلمه سالیان">باغ یلمه سالیان</option>
                    <option value="بدراق ملا">بدراق ملا</option>
                    <option value="بهلکه بایرام آخوند">بهلکه بایرام آخوند</option>
                    <option value="بهلکه داشلی">بهلکه داشلی</option>
                    <option value="بهلکه شیخ موسی">بهلکه شیخ موسی</option>
                    <option value="تپه ظهوریان">تپه ظهوریان</option>
                    <option value="جماران">جماران</option>
                    <option value="سازمان حیدری">سازمان حیدری</option>
                    <option value="سخی آباد">سخی آباد</option>
                    <option value="شاکریان">شاکریان</option>
                    <option value="قره داغلی">قره داغلی</option>
                    <option value="نصرت آباد">نصرت آباد</option>
                    <option value="گری دوجی">گری دوجی</option>
                    <option value="آق قبر">آق قبر</option>
                    <option value="آق زبیر">آق زبیر</option>
                    <option value="حاجی قره">حاجی قره</option>
                    <option value="حیدر آباد">حیدر آباد</option>
                    <option value="خوجه توپ">خوجه توپ</option>
                    <option value="دلیجه">دلیجه</option>
                    <option value="دوگونچی">دوگونچی</option>
                    <option value="سقر یلقی">سقر یلقی</option>
                    <option value="سید لر">سیدلر</option>
                    <option value="شورحیات">شورحیات</option>
                    <option value="صحنه سفلی">صحنه سفلی</option>
                    <option value="عثمان آباد">عثمان آباد</option>
                    <option value="قانقرمه">قانقرمه</option>
                    <option value="قربان آباد">قربان آباد</option>
                    <option value="قلعه جیق">قلعه جیق</option>
                    <option value="قوشچان آباد">قوشچان آباد</option>
                    <option value="محمد آباد">محمد آباد</option>
                    <option value="میرزاعلی یلقی">میرزاعلی یلقی</option>
                    <option value="یامپی">یامپی</option>
                    <option value="یلمه خندان">یلمه خندان</option>
                    <option value="پیرا غاچ">پیرا غاچ</option>
                    <option value="گامیشلی یلقی">گامیشلی یلقی</option>
                    <option value="سلاق یلقی">سلاق یلقی</option>
					<option value="خیوه لی">خیوه لی</option>
                </select>
            </fieldset>
<!--****************************-->
<fieldset class="scheduler-border">
  <legend class="scheduler-border">توضیحات</legend>
            <textarea name="description" id="description" class="form-control" cols="40" rows="8" ></textarea>
            </fieldset>
<!--****************************-->
<fieldset class="scheduler-border">
  <legend class="scheduler-border">مًهر روستا</legend>
  <input type="file" name="file" id="file">

</fieldset>
<!--****************************-->
            <br>
            <button type="submit" class="btn btn-block btn-primary">ارسال</button>
            <hr>
            <ul>
                    <h5 style="color: #900;">تذکرات</h5>
                    <li><b>تمامی اطلاعات شما پس از ثبت پیام دریافت میشود بنابراین از ارسال هرگونه پیام بی مورد خودداری فرمایید </b></li>
                    <li><b>تمامی مصوبات به صورت مستقیم برای دبیرخانه بخشداری ارسال میشود </b></li>
                    

                         
                    </b></li>
                </ul>
                <div style="float: none;margin: 0 auto;" id="ajax-result"></div>

               
        </form>
                    </fieldset>
         <script type="text/javascript">
            CKEDITOR.replace('body');
            CKEDITOR.replace('description');
        </script>
        </div>


                    </div>
                </div>
            </section>
</div>
<script>
$(document).ready(function(){
    var form = $("#mosavabehForm");
    var resultTag = $("#ajax-result");
    form.submit(function(event){
        event.preventDefault();
        $.ajax({
            url:form.attr('action'),
            method:form.attr('method'),
            data:form.serialize(),
            success:function(response){
                resultTag.html(response);
            }
        });
    });
});
</script>

process:ajax-mosavabeh.php

include_once "../bootstrap/init.php";
if (!isAjaxRequest()) {
    diePage("Invalid Request ! ");
}
if (isset($_POST['subject']) and !empty($_POST['subject'])) {
   $subject = $_POST['subject'];
   $body = $_POST['body'];
   $roosta_name = $_POST['roosta_name'];
   $description = $_POST['description'];
   $current_user_id = getCurrentUserId();
   $date = time();
   $sql = "INSERT INTO mosavabeh (subject,body,roosta_name,description,user_id,date) VALUES (:subject,:body,:roosta_name,:description,:user_id,:date)";
   $stmt = $pdo->prepare($sql);
   $stmt->execute(['subject'=>$subject,'body'=>$body,'roosta_name'=>$roosta_name,'description'=>$description,'user_id'=>$current_user_id,'date'=>$date]);
if ($stmt->rowCount() > 0){
    echo "
    <script>
    swal({
  title: 'تبریک !',
  text: 'ارسال اطلاعات با موفقیت انجام شد ',
  icon: 'success',
}).then(function() {
location.reload();
});
</script>
";
}else{
   echo "
   <script>
    swal({
  title: 'خطا ! ',
  text: 'ثبت نام شما با خطا مواجه شد لطفا اطلاعات خودرا مجدد وارد کنید',
  icon: 'error',
}).then(function() {
location.reload();
});
</script>
   ";
    die();
}
}

 

input برای ارسال عکس تعریف کردم 

از کد های آماده w3school هم استفاده کردم ولی این که چجوری اطلاعات عکس رو بتونم در query قرار بدم نمیدونم 

خیلی خیلی برام مهم است ممنون میشم کمک کنین 

 

 

فایل پیوست

mohammad doulatkhah
mohammad doulatkhah

5 مهر 00

0
حذف شده

سلام. 

اون چیزی که من متوجه شدم اینه که شما در ذخیره نام فایل در دیتابیس مشکل دارید؟ درسته؟ اگر اینطوره بعد اینکه فایل ذخیره شد، برای مثال:

if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    // After the file is uploaded successfully, you can execute the insert query in this section
}

و کافیست باتوجه به مثال w۳schools متغیر target_file یا نام فایل یعنی basename($_FILES["fileToUpload"]["name"]) در دیتابیس ذخیره کنید.

فایل پیوست

محسن موحد

توسط

محسن موحد

8 مهر 00

0
حذف شده

سلام و احترام

این سه تا ویدیو آپلود فایل ها رو در سرفصل جعبه ابزار رو دیدید ؟

https://7learn.ac/unit-upload-file-in-php-part001

 

https://7learn.ac/unit-upload-file-in-php-part002

 

https://7learn.ac/unit-upload-file-in-php-part003

 

الان مشکل آپلود عکس رو دارید یا اینکه میخواهید بعد از آپلود اطلاعات تصویر رو ذخیره کنید در دیتابیس؟

 

 

 

فایل پیوست

امیر صالحی

توسط

امیر صالحی

6 مهر 00

حذف شده
بیزحمت پاسخ رو مطالعه کنین
mohammad doulatkhah

7 مهر 00

0
حذف شده

سلام مجدد 

خیر ندیدم فقط دانلود کردم 
**اخه قبلا با روش mysql انجام میدادم و پردازش رو هم در همون صفحه انجام میدادم و مشکلی نداشتم **

----------------------------------------------------------------------------------------------------------------------------------------------------------
ولی بعد از تموم کردن این سرفصل که فایل های پروژه ساختارمند شده ، میخوام با این روش انجام بدم که باید اطلاعات از صفحه view گرفته بشه و ارسال بشه به پوشه process 
الان مشکلی که من دارم هم در آپلود و هم در ذخیره اطلاعات تصویر هست

 

=> 1. فیلد ذخیره عکس به نام img_mohr
2. تعریف input برای ارسال عکس  :    < input type="file" name="fileToUpload" id="fileToUpload">
3. از کد آماده php این لینک در اخره صفحه سایت استفاده میکردم 
لینک => https://www.w3schools.com/php/php_file_upload.asp
ولی الان با روش pdo که در این سرفصل یاد گرفتم نمیدونم باید چجوری عکس رو آپلود کنم و اطلاعتشو برای ثبت به صفحه process ببرم تا بتونم ذخیره کنم ، برای یک پروژه واقعی میخوام خیلی برام مهم هست ممنون میشم راهنماییم کنین 

فایل پیوست

mohammad doulatkhah

توسط

mohammad doulatkhah

6 مهر 00

1
حذف شده

سلام و احترام

اول یه فرم  html باید داشته باشید

 

<form action="upload.php" method="post" enctype="multipart/form-data">
 Select image to upload:
 <input type="file" name="fileToUpload" id="fileToUpload">
 <input type="submit" value="Upload Image" name="submit">
</form>


سمت php میتونید فایل رو به این شکل دریافت کنید و یه سری شرط براش بزارید ببنیدی که آیا فایل آپلود شده برای مثال تصویر هستش یا ن.  

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
 $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
 if($check !== false) {
   echo "File is an image - " . $check["mime"] . ".";
   $uploadOk = 1;
 } else {
   echo "File is not an image.";
   $uploadOk = 0;
 }
}

در بایلا داخل شرط $check !== false اگه وارد این شرط بشه ینی اینکه فایل تصویر هستش و میتونید فایلتون رو آپلود کنید
 

اگه خواستید سایز فایل رو چک کنید به این شکل عمل میکنید، عددی که وارد میکنید باید به byte باشه

if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

کد کامل موارد آورده شده در متن بالا:

 

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "File is an image - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "File is not an image.";
    $uploadOk = 0;
  }
}

// Check if file already exists
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}

// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 0;
}

// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
  echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
  if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
  } else {
    echo "Sorry, there was an error uploading your file.";
  }
}
?>

در آخر کد که تابع move_uploaded_file صدا زده شده این متد فایل رو جا به جا میکنه به آدرسی که در اول فایل درون متغیر $terget_file نوشته شده است

حالا برای ذخیره در در دیتابیس شما میتونید مقدار درون همین متغیر target_file رو داخل جدول مرتبط ذخیره کنید تا آدرس فایل رو داشته باشید و هر موقع خواستید با فراخوانیش به فایل برسید.

عملیات insert کردن درون دیتابیس رو هم میتونید داخل این شرط انجام بدید که در کد بالا موجوده

if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
  } 

 

فایل پیوست

امیر صالحی

توسط

امیر صالحی

9 مهر 00