Postingan lainnya
Bagaimana cara vallidasi gambar
saya ingin membatasi ukuran dan tipe gambar saat diupload. saya coba menggunakan 2 code tapi masih error. code pertama
if (isset($_POST["submit"])) {
$bukti = $_FILES['bukti']['tmp_name'];
$size = $_FILES['bukti']['size'];
$format = $_FILES['bukti']['type'];
$kd_bayar = isset($_POST['kd_bayar']) ? $_POST['kd_bayar'] : '';
$kd_detail = isset($_POST['kd_detail']) ? $_POST['kd_detail'] : '';
$target = "../img/".basename($_FILES['bukti']['name']);
if ($size < 2000000) {
if ($format == 'image/jpg' || 'image/jpeg' || 'image/png') {
move_uploaded_file($_FILES['bukti']['tmp_name'], $terget);
$sql = "INSERT INTO pembayaran (kd_bayar,kd_detail,bukti) VALUES ('$kd_bayar','$kd_detail','$bukti')";
$query = mysqli_query($conn,$sql);
$kd_bayar = mysqli_insert_id($conn);
$detail = "INSERT INTO detail_pembayaran (kd_bayar,status_bayar) VALUES ('".$kd_bayar."','lunas')";
$ok = mysqli_query($conn,$detail);
if ($ok) {
header('location:../mybooking.php');
}else{
header('location:../mybooking.php?status=error');
}
}else{
echo "<script language='javascript'>alert('Maaf format gambar harus JPG,JPEG,PNG')</script>";
echo "<script language='javascript'>window.location = '../mybooking.php'</script>";
exit();
}
}else{
echo "<script language='javascript'>alert('Maaf file gambar terlalu besar. Max 2MB')</script>";
echo "<script language='javascript'>window.location = '../mybooking.php'</script>";
exit();
}
}
?>
hasilnya malah seperti ini
kemudian saya coba validasi dengan code lain seperti ini
include 'fungsi_validasi_image.php';
if (isset($_POST["submit"])) {
$lokasi_file = $_FILES['bukti']['tmp_name'];
$tipe_file = $_FILES['bukti']['type'];
$bukti = $_FILES['bukti']['name'];
$direktori = "../img/".basename($_FILES['bukti']['name']);
$kd_bayar = isset($_POST['kd_bayar']) ? $_POST['kd_bayar'] : '';
$kd_detail = isset($_POST['kd_detail']) ? $_POST['kd_detail'] : '';
$hasil = cekTypeImageUpload($tipe_file);
if ($hasil == 1) {
echo "<script language='javascript'>alert('Maaf hanya menerima file gambar yang bertipe jpg')</script>";
echo "<script language='javascript'>window.location = '../mybooking.php'</script>";
exit();
}
if (!empty($lokasi_file)) {
move_uploaded_file($lokasi_file, $direktori);
}
$sql = "INSERT INTO pembayaran (kd_bayar,kd_detail,bukti) VALUES ('$kd_bayar','$kd_detail','$bukti')";
$query = mysqli_query($conn,$sql);
$kd_bayar = mysqli_insert_id($conn);
$detail = "INSERT INTO detail_pembayaran (kd_bayar,status_bayar) VALUES ('".$kd_bayar."','lunas')";
$ok = mysqli_query($conn,$detail);
if ($ok) {
header('location:../mybooking.php');
}else{
header('location:../mybooking.php?status=error');
}
}
?>
pada file fungsi
<?php
function cekTypeImageUpload($type_file){
$hasil = 0; // kondisikan terlebih dahulu kalau image benar
$tipe = isset($tipe_file);
if ($tipe !== "image/jpg") {
$hasil = 1; // kondisikan kalau image salah
}
return $hasil;
}
?>
tapi hasilnya hanya selalu seperti ini, padahal gambar yang saya masukan bertipe jpg.
satu lagi master, bagaiman agar gambar yang lama di replace oleh gambar yang baru jika diinputkan pada id yang sama.
terima kasih
2 Jawaban:
<img src=' https://www.imageupload.co.uk/images/2018/09/23/Untitled.png '>
Saya bantu untuk mengubah kodenya agar lebih kompleks lagi,
function.php <pre>
<?php $koneksi = mysqli_connect('localhost', 'root', '', 'phpdasar'); // Koneksi Database
if (!$koneksi){ echo 'Koneksi gagal' . mysqli_error($koneksi); }
function query($query){ global $koneksi; // Variable Scope, Memanggil $koneksi kedalam function query
$result = mysqli_query($koneksi, $query); $rows = []; // Membuat variable kosong untuk diisi dengan variable $row dalam bentuk array assosiative while ($row = mysqli_fetch_assoc($result)) { $rows[] = $row; } return $rows; // Mengembalikan nilai dari $rows dalam bentuk array; }
// Insert Gambar
function daftar(){ // buat fungsi daftar global $koneksi;
$ekstensi_valid = ['png','jpg']; // Ektensi gambar yg diperbolehkan misalnya ['jpeg','bmp'] $nama = $_FILES['file']['name']; // Nama gambar yg diupload $extensigambar = explode('.', $nama); // nama gambar dipecah contohnya gambar.jpg maka akan dipisah menjadi "gambar", ".", "jpg" untuk memudahkan proses selanjutnya $extensigambar = strtolower(end($extensigambar)); // nama gambar akan dipaksa menggunakan huruf kecil jika ada Nama.JPg === nama.jpg $ukuran = $_FILES['file']['size']; // ukuran gambar $file_tmp = $_FILES['file']['tmp_name']; // tempat penyimpanan sementara gambar $error = $_FILES['file']['error']; // error yg akan dihasilkan jika terjadi error
if (!in_array($extensigambar, $ekstensi_valid)){ echo " <script> alert('Yang anda upload bukan gambar'); </script> "; return false; }
if ($error === 4){ // error === 4 artinya gambar belum diupload, ada banyak error2 di php bisa dilihat di dokumentasi php echo " <script> alert('foto belum dimasukan'); </script> "; return false; }
if ($ukuran > 1044070){ // ukuran gambar dalam bentuk byte echo " <script> alert('File yg anda upload terlalu besar'); </script> "; return false; }
//generate nama // mengacak nama gambar agar menjadi unik. $namabaru = uniqid(); $namabaru .= '.'; $namabaru .= $extensigambar;
move_uploaded_file($file_tmp, 'files/'.$namabaru); // 'files/' adalah nama folder tempat penyimpanan gambar. $query = "INSERT INTO upload VALUES ( '', '$namabaru') ";
mysqli_query($koneksi, $query);
return mysqli_affected_rows($koneksi);
} ?> </pre>
buat index.php <pre>
<?php include 'function.php';
if (isset($_POST["submit"])){ if (daftar($_POST) > 0){ echo " <script> alert('foto berhasil diupload'); </script> "; } }
$gambar = query("SELECT * FROM upload"); //Nama database
?> <!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title></title> </head> <body> <form class="" action="" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <button type="submit" name="submit">Submit!</button> </form>
<table border="1" cellpadding="10" cellspacing="0"> <tr> <th>id</th> <th>gambar</th> </tr> <?php foreach($gambar as $gbr): ?> <tr> <td><?= $gbr["id"]; ?></td> <td><img src="files/<?= $gbr["nama_file"]; ?>" height="100" width="100"></td> </tr> <?php endforeach; ?> </table> </body> </html>
</pre>
kenapa saya bisa error di bagian fungsi query $row = []; mas?
<pre>
<?php
include '../config/connection.php';
if (!$conn) { echo "Koneksi gagal!" .mysqli_error($conn); }
function query($query){ global $conn;
$result = mysqli_query($conn, $query); $rows = []; while ($row = mysqli_fetch_assoc($result)) { $rows[] = $row; } return $rows; }
// Insert Gambar
function daftar(){ global $conn;
$ekstensi_valid = ['png','jpg']; $bukti = $_FILES['bukti']['name']; $kd_bayar = isset($_POST['kd_bayar']) ? $_POST['kd_bayar'] : ''; $kd_detail = isset($_POST['kd_detail']) ? $_POST['kd_detail'] : ''; $extensigambar = explode('.', $bukti); $extensigambar = strtolower(end($extensigambar)); $ukuran = $_FILES['bukti']['size']; $file_tmp = $_FILES['bukti']['tmp_name']; $error = $_FILES['bukti']['error'];
if (!in_array($extensigambar, $ekstensi_valid)){ echo " <script> alert('Yang anda upload bukan gambar'); </script> "; return false; }
if ($error === 4){ echo " <script> alert('foto belum dimasukan'); </script> "; return false; }
if ($ukuran > 1044070){ echo " <script> alert('File yg anda upload terlalu besar'); </script> "; return false; }
$namabaru = uniqid(); $namabaru .= '.'; $namabaru .= $extensigambar;
move_uploaded_file($file_tmp, '../img/'.$namabaru); $query = "INSERT INTO pembayaran (kd_bayar,kd_detail,bukti) VALUES ('$kd_bayar','$kd_detail','$namabaru') "; mysqli_query($conn, $query); $kd_bayar = mysqli_insert_id($conn);
$detail = "INSERT INTO detail_pembayaran (kd_bayar,status_bayar) VALUES ('".$kd_bayar."','lunas')";
$ok = mysqli_query($conn,$detail);
if ($ok) {
header('location:../mybooking.php');
}else{
header('location:../mybooking.php?status=error');
}
return mysqli_affected_rows($conn);
} ?> </pre>
<img src='https://i.imgur.com/PO8NGf6.png'>