PHP: Upload sebuah files

Assalamu'alaikum warahmatullahi wabarakatuh.

Halo teman-teman semuanya! Bagaimana kabarnya? 

Semoga dalam kondisi dan keadaan yang prima dan baik-baik saja ya! 

Perkenalkan kembali lagi bersama saya Ilham, saya dari kelas XI RPL 2 yang sekarang dalam artikel kali ini, kita akan membahas mengenai Meng-upload sebuah file pada bahasa pemrograman PHP,   tanpa berlama-lama lagi mari langsung saja kita ke inti bahasan materinya!


Upload File 

Pada struktur database sebelumnya tambahkanlah sebuah field baru yakni field avatar. Lalu tambahkan juga sebuah gambar/image sebagai default avatar yang digunakan oleh seorang user, disimpan di folder assets/css/img/students/default.jpg

File views/insert.php 
<form action="<?= $action ?>.php" method="POST" enctype="multipart/form-data">
    <div class="form-group">
        <label for="nis">NIS</label>
        <input type="number" class="form-control" id="nis" name="nis" value="<?= @$student["nis"] ?>" required>
    </div>
    <div class="form-group">
        <label for="name">Nama Lengkap</label>
        <input type="text" class="form-control" id="name" name="name" value="<?= @$student["name"] ?>" required>
    </div>
    <div class="form-group">
        <label for="gender">Jenis Kelamin</label> <br>
        <div class="form-check form-check-inline">
            <input class="form-check-input" type="radio" name="gender" id="L" value="L" <?= @$student["gender"] == "L" ? "checked" : "" ?> required>
            <label class="form-check-label" for="L">Laki - laki</label>
        </div>
        <div class="form-check form-check-inline">
            <input class="form-check-input" type="radio" name="gender" id="P" value="P" <?= @$student["gender"] == "P" ? "checked" : "" ?> required>
            <label class="form-check-label" for="P">Perempuan</label>
        </div>
    </div>
    <div class="form-group">
        <label for="address">Alamat</label>
        <textarea name="address" id="address" class="form-control" required><?= @$student["address"] ?></textarea>
    </div>
    <div class="form-group">
        <label for="phone_number">Nomor Telepon</label>
        <input type="number" class="form-control" id="phone_number" name="phone_number" value="<?= @$student["phone_number"] ?>" required>
    </div>
    <div class="form-group">
        <label for="class">Kelas</label>
        <input type="text" class="form-control" id="class" name="class" value="<?= @$student["class"] ?>" required>
    </div>
    <div class="form-group">
        <label for="avatar">Foto</label>
        <?php if ($action == "edit") : ?>
            <?php if (strlen(@$student["avatar"]) > 0) : ?>
                <img src="assets/img/students/<?= @$student["avatar"] ?>" alt="<?= @$student["name"] ?>" width="80px" class="d-block mb-2">
            <?php else : ?>
                <img src="assets/img/students/default.jpg" alt="Default Avatar" width="80px" class="d-block mb-2">
            <?php endif; ?>
            <input type="hidden" name="avatar" value="<?= @$student["avatar"] ?>">
        <?php endif; ?>
        <input type="file" name="avatar" id="avatar" class="form-control">
    </div>
    <div class="row">
        <div class="col-md-12 d-flex justify-content-end">
            <button class="btn btn-primary text-capitalize" type="submit"><?= $action ?> Data</button>
        </div>
    </div>
</form>

Gunakan atribut enctype untuk mengupload file.

File insert.php 
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $nis = $_POST["nis"];
    $name = $_POST["name"];
    $gender = $_POST["gender"];
    $address = $_POST["address"];
    $phone_number = $_POST["phone_number"];
    $class = $_POST["class"];
    $avatar = $_FILES["avatar"];

    if (!empty($avatar) and $avatar["error"] == 0) {
        $path = "./assets/img/students/";
        $upload = move_uploaded_file($avatar["tmp_name"], $path . $avatar["name"]);

        if (!$upload) {
            flash("error", "Upload file gagal!");
            header("Location: index.php");
        }

        $avatar = $avatar["name"];
    } else {
        $avatar = "default.jpg";
    }

    $query = "INSERT INTO students (nis, name, gender, address, phone_number, class, avatar) 
        VALUES ('$nis', '$name', '$gender', '$address', '$phone_number', '$class', '$avatar')";

    $mysqli->query($query) or die($mysqli->error);

    header("Location: index.php");
}
Terdapat percabangan untuk mengecek apakah user memilih sebuah file atau tidak, kalo iya arahkan path ke assets/img/students lalu diuploadlah filenya. 
Dan apabila upload file gagal maka tampilkan sebuah flash message berupa pesan kesalahan ke index.php.
Lalu, jika user tidak memilih file, maka secara otomatis $avatar diisi dengan default.jpg

File edit.php 
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $nis = $_POST["nis"];
    $name = $_POST["name"];
    $gender = $_POST["gender"];
    $address = $_POST["address"];
    $phone_number = $_POST["phone_number"];
    $class = $_POST["class"];
    $avatar = $_POST["avatar"];
    $avatarUpload = $_FILES["avatar"];

    if (!empty($avatarUpload) and $avatarUpload["error"] == 0) {
        $path = "./assets/img/students/";
        $upload = move_uploaded_file($avatarUpload["tmp_name"], $path . $avatarUpload["name"]);

        if (!$upload) {
            flash("error", "Upload file gagal!");
            header("Location: index.php");
        }

        $avatar = $avatarUpload["name"];
    }

    $query = "UPDATE students SET
        nis = '$nis',
        name = '$name',
        gender = '$gender',
        address = '$address',
        phone_number = '$phone_number',
        class = '$class',
        avatar = '$avatar'
        WHERE nis = '$nis'
    ";

    $mysqli->query($query) or die($mysqli->error);

    header("Location: index.php");
}

File views/index.php 

Menambahkan sebuah filed baru yakni field foto setelah fileld #
<!-- thead dan tfoot tambahkan <th>Foto</th> setelah # -->
<thead>
    <tr>
        <th>#</th>
        <th>Foto</th>
        <th>
            NIS
            <a href="index.php?sort=nis&order=asc"></a>
            <a href="index.php?sort=nis&order=desc"></a>
        </th>
        <th>
            Nama Lengkap
            <a href="index.php?sort=name&order=asc"></a>
            <a href="index.php?sort=name&order=desc"></a>
        </th>
        <th>
            Jenis Kelamin
            <a href="index.php?sort=gender&order=asc"></a>
            <a href="index.php?sort=gender&order=desc"></a>
        </th>
        <th>
            Alamat
            <a href="index.php?sort=address&order=asc"></a>
            <a href="index.php?sort=address&order=desc"></a>
        </th>
        <th>
            No Telepon
            <a href="index.php?sort=phone_number&order=asc"></a>
            <a href="index.php?sort=phone_number&order=desc"></a>
        </th>
        <th>
            Kelas
            <a href="index.php?sort=class&order=asc"></a>
            <a href="index.php?sort=class&order=desc"></a>
        </th>
        <th>Action</th>
    </tr>
</thead>
<tfoot>
    <tr>
        <th>#</th>
        <th>Foto</th>
        <th>NIS</th>
        <th>Nama Lengkap</th>
        <th>Jenis Kelamin</th>
        <th>Alamat</th>
        <th>No Telepon</th>
        <th>Kelas</th>
        <th>Action</th>
    </tr>
</tfoot>
Setelah itu pada <tbody>, tambahkan data avatar setelah nomor data:
<td><?= $i++ ?></td>
<td align="center">
    <?php if (strlen($student["avatar"]) > 0) : ?>
        <img src="assets/img/students/<?= $student["avatar"] ?>" alt="<?= $student["name"] ?>" width="80px">
    <?php else : ?>
        <img src="assets/img/students/default.jpg" alt="Default Avatar" width="80px">
    <?php endif; ?>
</td>
Aturan yang digunakan sama seperti sebelumnya jika data avatarnya tidak null atau ada, maka tampilkan gambarnya, namun apabila tidak ada maka tampilkan gambar default.jpg



Mungkin cukup sekian materi Searching dan Order PHP nya. 
Semoga sobat-sobat codingers paham, mengerti dan menguasainya. 
Dan mohon maaf atas semua kesalahan yang telah saya perbuat, tolong berikan koreksi mengenai bagian mana yang salah/kurang pas dalam postingan ini, untuk pengembangan lebih baik kedepannya.

Sekian, saya ucapkan terimakasih banyak atas waktu yang telah diluangkan, saya ucapkan kembali mohon maaf atas segalanya kesalahan. 

Wabilahiltaufik walhidayah, Wassalamu'alaikum warahmatullahi wabarakatuh.
Keep Coding Stay Awesome

0 Response to "PHP: Upload sebuah files"

Post a Comment

Postingan Terbaru

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel