🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۵ رضا نوزادی
عدم اجرا شدن بلاک if
جامعه پی اچ پی ایجاد شده در ۰۸ شهریور ۱۴۰۲

سلام وقت بخیر

من مطابق ویدیو که دیدم کد زیر را زدم ولی زمانی که کد میرسه به if سوم که باید ست شدن و خالی نبودن uploadedFile چک کنه ، عملیات چک کردن انجام نمیشه یعنی زمانی که حتی یک فایل اپلود می‌کنید بلاک else رو اجرا می‌کنه و لطفا فایل مورد نظر را انتخاب کنید رو چاپ می‌کنه!!

ویدیو رو هم چند بار دیدم استاد دقیقا مثل همین مدل کدی که زدم رو کد زدند!!!

کد php:


session_start();
$msg=null;
if($_SERVER["REQUEST_METHOD"]=="POST"){
    if(isset($_POST["uploadBtn"])&& $_POST["uploadBtn"]=="Upload"){
        if(isset($_POST["uplodedFile"]) && !empty($_POST["uploadFile"]) ){
            echo $msg="ok";
        }else{
               echo $msg="lotfan file mord nazar ra upload konid!!!";
        }
    }
}

کد html,css:

html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Documenttitle>
    <style>
        .container{
            max-width: 600px;
            background: #fff;
            position: relative;
            height: 151px;
            border-radius: 5px;
            margin: 0 auto;
            margin-top: 300px;
            box-shadow: 0px 0px 6px 1px #efefef;
            padding-top: 118px;
        }
        .msg{
            position: absolute;
            top: -14px;
            background: #f9f9f9;
            width: 100%;
            padding: 14px 16px;
            box-sizing: border-box;
            color: #000;
            text-align: right;
            width: 85%;
            left: 0;
            transform: translate(8%,50%);
            border-right: 3px solid #00ceff;
        }
        form{
            justify-content: center;
            align-items: center;
            flex-direction: column;
            margin: 0 40px;
        }
        div.upload-wrapper{
            color: white;
            font-weight: bold;
            display: flex;
        }
        input[type="file"] {
            position: absolute;
            left: -9999px;
        }
        input[type="submit"]{
            color: white;
            background: #33bb30;
            margin: 10px 0;
            border-radius: 5px;
            font-weight: bold;
            padding: 9px 30px;
            cursor: pointer;
            border: none;
        }
        input[type="submit"]:hover{
            background: #555;
        }
        label[for="file-upload"]{
            padding: 0.7rem;
            display: inline-block;
            background: #5d9eff;
            cursor: pointer;
            border-radius: 0 5px 5px 0;
            border-left: 0;
        }
        label[for="file-upload"]:hover{
            background: #ca3103;
        }
        span.file-name{
            padding:0.7rem 14rem 0.7rem 0.7rem;
            white-space: nowrap;
            overflow: hidden;
            background: #ececec;
            color: black;
            border: 1px solid #ececec;
            border-radius: 5px 0 0 5px;
            border-right: 0;
            width: 100%;
        }
    style>
head>
<body>
<body>
    <div class="container">
        <form method="POST" action="upload.php">
            <div class="upload-wrapper">
                <span class="file-name">Choose a file...span>
                <label for="file-upload">Browse
                    <input type="file" id="file-upload" name="uplodedFile">
                label>
            div>
            <input type="submit" name="uploadBtn" value="Upload"/>
        form>
    div>
body>
body>
html>

سلام،

جلسه بعدی مباحث را تکمیل میکند.

موردی که برای آپلود فایل باید اضافه شود، اتریبیوت enctype="multipart/form-data" به تگ form باید اضافه شود تا فایل آپلود شود. بعد از صفت action میتونید این صفت رو اضافه کنید.

محسن موحد ۰۸ شهریور ۱۴۰۲، ۲۲:۳۳

سلام مجدد ممنون از پاسخ گویی تون

برنامه رو می‌خوام صرفا بعد از اپلود فایل و کلیک روی دکمه upload درصورتی که فرد فایلی اپلود کرد بود عبارت ok را چاپ کند در غیر این صورت عبارت فایل مورد نظر را انتخاب کنید را چاپ کند(فعلا نمی‌خواهم نوع فایل و.... رو به برنامه اضافه کنم)

طبق دقیقه‌های اول ویدیو من عمل کردم ولی بلاک if سوم که گفتیم اگر ست شده بود و خالی نبود عبارت ok رو چاپ کنه اجرا نمی‌شود ولی وقتی استاد صالحی برنامه رو run می‌کردند این مشکل را نداشتند.

اتریبیوت enctype="multipart/form-data به کد‌های html اضافه کردم ولی مشکل حل نشد!

دلیل انادیده گرفتن بلاک if چه چیزیه؟

کد‌های دیباگ شده:

کد php:


session_start();
$msg=null;
if($_SERVER["REQUEST_METHOD"]=="POST"){
    if(isset($_POST["uploadBtn"])&& $_POST["uploadBtn"]=="Upload"){
        if(isset($_POST["uplodedFile"]) && !empty($_POST["uploadFile"]) ){
            echo $msg="ok";
        }else{
               echo $msg="lotfan file mord nazar ra entekhab konid";
        }
    }
}
?>

کد‌های html و css:

html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Documenttitle>
    <style>
        .container{
            max-width: 600px;
            background: #fff;
            position: relative;
            height: 151px;
            border-radius: 5px;
            margin: 0 auto;
            margin-top: 300px;
            box-shadow: 0px 0px 6px 1px #efefef;
            padding-top: 118px;
        }
        .msg{
            position: absolute;
            top: -14px;
            background: #f9f9f9;
            width: 100%;
            padding: 14px 16px;
            box-sizing: border-box;
            color: #000;
            text-align: right;
            width: 85%;
            left: 0;
            transform: translate(8%,50%);
            border-right: 3px solid #00ceff;
        }
        form{
            justify-content: center;
            align-items: center;
            flex-direction: column;
            margin: 0 40px;
        }
        div.upload-wrapper{
            color: white;
            font-weight: bold;
            display: flex;
        }
        input[type="file"] {
            position: absolute;
            left: -9999px;
        }
        input[type="submit"]{
            color: white;
            background: #33bb30;
            margin: 10px 0;
            border-radius: 5px;
            font-weight: bold;
            padding: 9px 30px;
            cursor: pointer;
            border: none;
        }
        input[type="submit"]:hover{
            background: #555;
        }
        label[for="file-upload"]{
            padding: 0.7rem;
            display: inline-block;
            background: #5d9eff;
            cursor: pointer;
            border-radius: 0 5px 5px 0;
            border-left: 0;
        }
        label[for="file-upload"]:hover{
            background: #ca3103;
        }
        span.file-name{
            padding:0.7rem 14rem 0.7rem 0.7rem;
            white-space: nowrap;
            overflow: hidden;
            background: #ececec;
            color: black;
            border: 1px solid #ececec;
            border-radius: 5px 0 0 5px;
            border-right: 0;
            width: 100%;
        }
    style>
head>
<body>
<body>
    <div class="container">
        <form method="POST" action="upload.php"  enctype="multipart/form-data">
            <div class="upload-wrapper">
                <span class="file-name">Choose a file...span>
                <label for="file-upload">Browse
                    <input type="file" id="file-upload" name="uplodedFile">
                label>
            div>
            <input type="submit" name="uploadBtn" value="Upload"/>
        form>
    div>
body>
body>
html>


رضا نوزادی ۰۹ شهریور ۱۴۰۲، ۰۹:۰۳

دقیقه ویدیو رو مشخص کنید منظورتون از کار استاد رو متوجه بشم.

محسن موحد ۰۹ شهریور ۱۴۰۲، ۰۹:۴۷

دقیقه 13:11تا 13:28 استاد دقیقا همین کد را run می‌کند و بلاک if سوم که خالی بودن و ست شدن را چک می‌کند اجرا می‌شود ولی در کد من بلاک if را در نظر نمی‌گیرد

رضا نوزادی ۰۹ شهریور ۱۴۰۲، ۰۹:۵۶

الان متوجه شدم،

if اول رو منظورتونه.

اتریبیوت name رو باید درست بنویسید. در شرط اول uplodedFile نوشتید و در شرط دوم uploadFile (که اشتباه است):

if (isset($_POST["uplodedFile"]) && !empty($_POST["uplodedFile"])) {

داخل تگ‌های html نوشته اید name="uplodedFile"

بهترین پاسخ
محسن موحد ۰۹ شهریور ۱۴۰۲، ۱۴:۴۶