gambar lama tidak mau terhapus ketika di ubah gambar yang baru

misi mas , saya mau tanya , ada problem di bagian edit saya , ketika gambar di edit dan mau mengganti gambar yang baru , gambar lama tidak mau terhapus yang ada di direktori folder

ini koding proses ubah saya

 <?php
// Panggil koneksi database
require_once "../koneksi.php";

if (isset($_POST['simpan'])) {
	if (isset($_POST['id_guru'])) {
		// ambil data hasil submit dari form
		$nim                = trim($_POST['id_guru']);
		$nama               = trim($_POST['nama']);
		$nip               = trim($_POST['nip']);
		$posisi               = trim($_POST['posisi']);

		$nama_file          = $_FILES['image']['name'];
		$ukuran_file        = $_FILES['image']['size'];
		$tipe_file          = $_FILES['image']['type'];
		$tmp_file           = $_FILES['image']['tmp_name'];

		// tentukan extension yang diperbolehkan
		$allowed_extensions = array('JPG','jpg','jpeg','png');

		// Set path folder tempat menyimpan gambarnya
		$path_file          = "foto_guru/".$nama_file;

		// check extension
		$file               = explode(".", $nama_file);
		$extension          = array_pop($file);

		try {
			// jika foto diubah
			if (empty($_FILES['image']['name'])) {
				// sql statement untuk mengubah data pada tabel is_mahasiswa
		        $query = "UPDATE guru SET nama 		= :nama,
		        						nip 		= :nip,
		        						posisi      = :posisi
						WHERE id_guru 			= :nim";
		        // membuat prepared statements
		        $stmt = $pdo->prepare($query);
		          unlink("foto_guru/".$data['image']);

		        // mengikat parameter
				$stmt->bindParam(':nim', $nim);
				$stmt->bindParam(':nama', $nama);
				$stmt->bindParam(':nip', $nip);
				$stmt->bindParam(':posisi', $posisi);


			}

 // jika foto tidak diubah
			else {
				// Cek apakah tipe file yang diupload sesuai dengan allowed_extensions
				if (in_array($extension, $allowed_extensions)) {
	                // Jika tipe file yang diupload sesuai dengan allowed_extensions, lakukan :
	                if($ukuran_file <= 5000000) { // Cek apakah ukuran file yang diupload kurang dari sama dengan 1MB
	                    // Jika ukuran file kurang dari sama dengan 1MB, lakukan :
	                    // Proses upload
	                    if(move_uploaded_file($tmp_file, $path_file)) { // Cek apakah gambar berhasil diupload atau tidak
	                		// Jika gambar berhasil diupload, Lakukan :
					        // sql statement untuk mengubah data pada tabel is_mahasiswa
					        $query = "UPDATE guru SET nama 					= :nama,
					        							nip					= :nip,
					        							posisi 				= :posisi,
														image 				= :foto
												  WHERE id_guru				= :nim";
					        // membuat prepared statements
					        $stmt = $pdo->prepare($query);

					        // mengikat parameter
							$stmt->bindParam(':nim', $nim);
							$stmt->bindParam(':nama', $nama);
							$stmt->bindParam(':nip', $nip);
							$stmt->bindParam(':posisi', $posisi);

							$stmt->bindParam(':foto', $nama_file);
avatar zulfiyanto
@zulfiyanto

26 Kontribusi 0 Poin

Diperbarui 6 tahun yang lalu

12 Jawaban:

kayanya gara2 bikin file sesuai nama file.. jadi unlinknya gagal, solusinya ya select dulu nama filenya baru unlink, kalo mau lebih gampang ya simpen filenya di fix aja.. misalnya by nim..

avatar apem
@apem

72 Kontribusi 27 Poin

Dipost 6 tahun yang lalu

apa kayak gini mas ?

  $query = "SELECT * FROM guru WHERE id_guru=:nim";
      // membuat prepared statements
      $stmt = $pdo->prepare($query);

      //mengikat parameter
      $stmt->bindParam(':nim', $_GET['id_guru']);

      // eksekusi query
      $stmt->execute();

      // mengambil data mahasiswa
      $data = $stmt->fetch(PDO::FETCH_ASSOC);

    unlink("foto_guru/".$data['image']);
avatar zulfiyanto
@zulfiyanto

26 Kontribusi 0 Poin

Dipost 6 tahun yang lalu

// jika foto diubah


if (empty($_FILES['image']['name'])) {

Kan harusnya kan

if (!empty($_FILES['image']['name'])) {

Saran dari @apem bagus tuh,. gambar pake nim aja.. jadi ndk perlu hapus gambar yg lama karena langsung di replace caranyo Begini gan..

 // Set path folder tempat menyimpan gambarnya
$path_file = "foto_guru/".$nama_file;

Ganti

 // Set path folder tempat menyimpan gambarnya
$path_file = "foto_guru/".$nim . "." . $extension; //kalau disimpan extensi jgn lupa tambah $extension..kalau ndk ya no problemo.....

Tapi kalau kondisinya nama file gambar harus ambil berdasarkan nama file yg diupload ya bisa aja.. tp kalau pake select kan 2 kali kerja..lebih lama..walaupun sekian detik...lebih efektif waktu di FORM EDIT sertakan 1 input hidden. yg isinya field "foto" tsb.. contoh spt ini :

 <input type="hidden" name="foto_lama" value="<? echo $foto ?>"/>

Untuk Hapusnya Nanti

 unlink("foto_guru/".$foto_lama);

Tapi ya semua terserah padamu.. aku begini adanyaa...hehe (nyanyi malah).. 2 cara diatas sama2 work..tentukan pilihanmu sekarang...!!! hehe

Semoga Membantu.. \(^_^)

avatar ciloxz
@ciloxz

284 Kontribusi 139 Poin

Dipost 6 tahun yang lalu

@ciloxz nggk mau mas pake cara yg pertama

 <?php
// Panggil koneksi database
require_once "../koneksi.php";

if (isset($_POST['simpan'])) {
	if (isset($_POST['id_guru'])) {
		// ambil data hasil submit dari form
		$nim                = trim($_POST['id_guru']);
		$nama               = trim($_POST['nama']);
		$nip               = trim($_POST['nip']);
		$posisi               = trim($_POST['posisi']);

		$nama_file          = $_FILES['image']['name'];
		$ukuran_file        = $_FILES['image']['size'];
		$tipe_file          = $_FILES['image']['type'];
		$tmp_file           = $_FILES['image']['tmp_name'];

		// tentukan extension yang diperbolehkan
		$allowed_extensions = array('JPG','jpg','jpeg','png');

		// Set path folder tempat menyimpan gambarnya
		$path_file = "foto_guru/".$nim . "." . $extension;

		// check extension
		$file               = explode(".", $nama_file);
		$extension          = array_pop($file);

		try {

			// jika foto diubah
			if (empty($_FILES['image']['name'])) {

				// sql statement untuk mengubah data pada tabel is_mahasiswa
		        $query = "UPDATE guru SET nama 			= :nama,
		        							nip 		= :nip,
		        							posisi      = :posisi
								WHERE id_guru 			= :nim";
		        // membuat prepared statements
		        $stmt = $pdo->prepare($query);
avatar zulfiyanto
@zulfiyanto

26 Kontribusi 0 Poin

Dipost 6 tahun yang lalu

Salah broo.masak $extension belum dibuat dipanggil

// Set path folder tempat menyimpan gambarnya
$path_file = "foto_guru/".$nim . "." . $extension;

// check extension
$file               = explode(".", $nama_file);
$extension          = array_pop($file);

Ganti Baju dulu...hehe

// check extension
$file               = explode(".", $nama_file);
$extension          = array_pop($file);

// Set path folder tempat menyimpan gambarnya
$path_file = "foto_guru/".$nim . "." . $extension;

Terus Bagian ini...salah //komentar nya atau gimana ???? kan kalau empty() artinya user gk upload foto ... kog


// jika foto diubah
if (empty($_FILES['image']['name'])) {

Bukannya gini kalau user upload ...


// jika foto diubah
if (!empty($_FILES['image']['name'])) {

avatar ciloxz
@ciloxz

284 Kontribusi 139 Poin

Dipost 6 tahun yang lalu

nama file nya di tambahin time aja biar gak duplikat dan untuk form post nya tambahin input hidden value nya gambar lama bener kata suhu yang dia atas contoh dasar aja ini ane coba bantu moga aja bermanfaat.

Kode form input html


<form method="post" enctype="multipart/form-data">
<input type="hidden" name="foto_lama" value="<? echo $foto ?>"/>
<input type="text" name="nama" />
<input type="file" name="foto_baru" />
<input type="submit" name="btnSimpan" value="Simpan" />
</form>

Kode Php ketika eksekusi:


if(isset($_POST['btnSimpan'])){
   $nama = $_POST['nama'];
   $foto_lama = $_POST['foto_lama'];
   $path ="namafolder/";
   //jika ada file upload
   if(!empty($_FILES['foto_baru']['name']))
   { //isi eksekusi upload file
     //klo uda hasil nama file upload di tambahin time(); dan bikin variable nama file baru
     $url_img = $nama.'-'.time().$extension;
     //jangn lupa hapus gambar lama dan cek file lama nya ada gk di folder
     if(file_exists($folder.$old_image)){
	 unlink($path.$foto_lama);
     }
   }else// jika gk ada pake foto yang lama
   {
     $url_img = $foto_lama;
   }

   //baru deh update data ke database di bawa ini
   $sql= "UPDATE nama_table SET nama= ?, img =?  WHERE id =?";
   $stmt = $pdo->prepare($query);
   $stmt->bindValue(1,$nama);
   $stmt->bindValue(2,$url_img);
   $stmt->bindValue(3,$id);
   $stmt->execute();
}
avatar budiliauw87
@budiliauw87

20 Kontribusi 12 Poin

Dipost 6 tahun yang lalu

@ciloxz nggk work jg mas , di alert nya berhasil , tapi foto nya tetep nggk berubah di drectory jg nggk ada , tapi pas saya hapus tanda "!" , bisa di upload tp di view nya error di directory ada fotonya tp nggk ke ganti jg foto yg lama

avatar zulfiyanto
@zulfiyanto

26 Kontribusi 0 Poin

Dipost 6 tahun yang lalu

coba lihat full code bagian proses update data.. itu ada yg kepotong.. dan full code bagian form_edit nya..

avatar ciloxz
@ciloxz

284 Kontribusi 139 Poin

Dipost 6 tahun yang lalu

 <?php
// Panggil koneksi database
require_once "../koneksi.php";

if (isset($_POST['simpan'])) {
	if (isset($_POST['id_guru'])) {
		// ambil data hasil submit dari form
		$nim                = trim($_POST['id_guru']);
		$nama               = trim($_POST['nama']);
		$nip               = trim($_POST['nip']);
		$posisi               = trim($_POST['posisi']);

		$nama_file          = $_FILES['image']['name'];
		$ukuran_file        = $_FILES['image']['size'];
		$tipe_file          = $_FILES['image']['type'];
		$tmp_file           = $_FILES['image']['tmp_name'];

		// tentukan extension yang diperbolehkan
		$allowed_extensions = array('JPG','jpg','jpeg','png');

		$file               = explode(".", $nama_file);
		$extension          = array_pop($file);
		// Set path folder tempat menyimpan gambarnya
		$path_file = "foto_guru/".$nim;

		// check extension


		try {

			// jika foto diubah
			if (empty($_FILES['image']['name'])) {

				// sql statement untuk mengubah data pada tabel is_mahasiswa
		        $query = "UPDATE guru SET nama 			= :nama,
		        							nip 		= :nip,
		        							posisi      = :posisi
								WHERE id_guru 			= :nim";
		        // membuat prepared statements
		        $stmt = $pdo->prepare($query);


		        // mengikat parameter
				$stmt->bindParam(':nim', $nim);
				$stmt->bindParam(':nama', $nama);
				$stmt->bindParam(':nip', $nip);
				$stmt->bindParam(':posisi', $posisi);


			}
			// jika foto tidak diubah
			else {
				// Cek apakah tipe file yang diupload sesuai dengan allowed_extensions
				if (in_array($extension, $allowed_extensions)) {
	                // Jika tipe file yang diupload sesuai dengan allowed_extensions, lakukan :
	                if($ukuran_file <= 5000000) { // Cek apakah ukuran file yang diupload kurang dari sama dengan 1MB
	                    // Jika ukuran file kurang dari sama dengan 1MB, lakukan :
	                    // Proses upload
	                    if(move_uploaded_file($tmp_file, $path_file)) { // Cek apakah gambar berhasil diupload atau tidak
	                		// Jika gambar berhasil diupload, Lakukan :
					        // sql statement untuk mengubah data pada tabel is_mahasiswa
					        $query = "UPDATE guru SET nama 					= :nama,
					        							nip					= :nip,
					        							posisi 				= :posisi,
														image 				= :foto
												  WHERE id_guru				= :nim";
					        // membuat prepared statements
					        $stmt = $pdo->prepare($query);

					        // mengikat parameter
							$stmt->bindParam(':nim', $nim);
							$stmt->bindParam(':nama', $nama);
							$stmt->bindParam(':nip', $nip);
							$stmt->bindParam(':posisi', $posisi);

							$stmt->bindParam(':foto', $nama_file);
	                    } else {
	                        // Jika gambar gagal diupload, tampilkan pesan gagal upload
	                        header("location: fguru.php?alert=5");
	                    }
	                } else {
	                    // Jika ukuran file lebih dari 1MB, tampilkan pesan gagal upload
	                    header("location: fguru.php?alert=6");
	                }
	            } else {
	                // Jika tipe file yang diupload bukan jpg, jpeg, png, tampilkan pesan gagal upload
	                header("location: fguru.php?alert=7");
	            }
	        }

			// eksekusi query
	        $stmt->execute();

	        // jika berhasil tampilkan pesan berhasil update data
			header('location: fguru.php?alert=2');

			// tutup koneksi database
	        $pdo = null;
		} catch (PDOException $e) {
			// tampilkan pesan kesalahan
	        echo "ada kesalahan : ".$e->getMessage();
		}
	}
}
?>
 <?php require_once "auth.php"; ?>
  <?php
  // Panggil koneksi database
  require_once "../koneksi.php";

  if (isset($_GET['id_guru'])) {
    try {
      // sql statement untuk menampilkan data dari tabel is_mahasiswa berdasarkan nim
      $query = "SELECT * FROM guru WHERE id_guru=:nim";
      // membuat prepared statements
      $stmt = $pdo->prepare($query);

      //mengikat parameter
      $stmt->bindParam(':nim', $_GET['id_guru']);

      // eksekusi query
      $stmt->execute();

      // mengambil data mahasiswa
      $data = $stmt->fetch(PDO::FETCH_ASSOC);

      // nilai untuk mengisi form
      $nim           = $data['id_guru'];
      $nama          = $data['nama'];
      $nip          = $data['nip'];
      $posisi          = $data['posisi'];

      $foto          = $data['image'];

      // tutup koneksi database
      $pdo = null;
    } catch (PDOException $e) {
      // tampilkan pesan kesalahan
      echo "ada kesalahan pada query : ".$e->getMessage();
    }
  }
  ?>

  <script type="text/javascript">
    $(function () {
      //datepicker plugin
      $('.date-picker').datepicker({
        autoclose: true,
        todayHighlight: true
      });
    })
  </script>

  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
        <h4 class="modal-title" id="myModalLabel">
          <i class="glyphicon glyphicon-edit"></i>
          Ubah Data Guru
        </h4>
      </div>

      <div class="modal-body">
        <form action="proses-ubah-guru.php" method="POST" name="modal_popup" enctype="multipart/form-data" >
          <div class="form-group">

            <input type="hidden" class="form-control" name="id_guru" value="<?php echo $nim; ?>" readonly required/>
          </div>

          <div class="form-group">
            <label>Nama Guru</label>
            <input type="text" class="form-control" name="nama" autocomplete="off" value="<?php echo $nama; ?>" required/>
          </div>

           <div class="form-group">
            <label>NIP</label>
            <input type="text" class="form-control" name="nip" autocomplete="off" value="<?php echo $nip; ?>" required/>
          </div>

           <div class="form-group">
            <label>Posisi</label>
            <input type="text" class="form-control" name="posisi" autocomplete="off" value="<?php echo $posisi; ?>" required/>
          </div>



          <div class="form-group">
            <label>Foto</label> <br>
            <?php
            if ($foto=="") { ?>
              <img class="img-mahasiswa" src="foto/default_user.png" alt="image" width="110">
            <?php
            } else { ?>
              <img class="img-mahasiswa" src="foto_guru/<?php echo $foto; ?>" alt="image" width="110">
            <?php
            }
            ?>
            <br><br>
            <input type="file" name="image">
            <p class="help-block">
              <small>Catatan :</small> <br>
              <small>- Pastikan file yang diupload bertipe *.JPG atau *.PNG</small> <br>
              <small>- Ukuran file foto max 3 Mb</small>
            </p>
          </div>

          <div class="modal-footer">
            <input type="submit" class="btn btn-success btn-submit" name="simpan" value="Simpan">
            <button type="reset" class="btn btn-danger btn-reset" data-dismiss="modal" aria-hidden="true">Batal</button>
          </div>
        </form>
      </div>
    </div>
  </div>
avatar zulfiyanto
@zulfiyanto

26 Kontribusi 0 Poin

Dipost 6 tahun yang lalu

Jawaban Terpilih

bagian form_edit [OK] bagian update => bagian yg salah ane kasih tanda

/************EDITED************/

untuk salahnya apa coba dibandingkan aj ye.. sekalian belajar..kalau masih gk paham ya reply balik aj...

<?php
// Panggil koneksi database
require_once "../koneksi.php";

if (isset($_POST['simpan'])) {
	if (isset($_POST['id_guru'])) {
		// ambil data hasil submit dari form
		$nim                = trim($_POST['id_guru']);
		$nama               = trim($_POST['nama']);
		$nip               = trim($_POST['nip']);
		$posisi               = trim($_POST['posisi']);

		$nama_file          = $_FILES['image']['name'];
		$ukuran_file        = $_FILES['image']['size'];
		$tipe_file          = $_FILES['image']['type'];
		$tmp_file           = $_FILES['image']['tmp_name'];

		// tentukan extension yang diperbolehkan
		$allowed_extensions = array('JPG','jpg','jpeg','png');

		$file               = explode(".", $nama_file);
		$extension          = array_pop($file);
		// Set path folder tempat menyimpan gambarnya

		/************EDITED************/
		$path_file = "foto_guru/".$nim. ".". $extension;

		// check extension


		try {

			/************EDITED************/
			// jika foto TIDAK diubah
			if (empty($_FILES['image']['name'])) {

				// sql statement untuk mengubah data pada tabel is_mahasiswa
		        $query = "UPDATE guru SET nama 			= :nama,
		        							nip 		= :nip,
		        							posisi      = :posisi
								WHERE id_guru 			= :nim";
		        // membuat prepared statements
		        $stmt = $pdo->prepare($query);


		        // mengikat parameter
				$stmt->bindParam(':nim', $nim);
				$stmt->bindParam(':nama', $nama);
				$stmt->bindParam(':nip', $nip);
				$stmt->bindParam(':posisi', $posisi);


			}
			/************EDITED************/
			// jika foto DI UBAH
			else {
				// Cek apakah tipe file yang diupload sesuai dengan allowed_extensions
				if (in_array($extension, $allowed_extensions)) {
	                // Jika tipe file yang diupload sesuai dengan allowed_extensions, lakukan :
	                /************EDITED************/
	                if($ukuran_file <= 3000000) { // Cek apakah ukuran file yang diupload kurang dari sama dengan 3MB
	                    // Jika ukuran file kurang dari sama dengan 1MB, lakukan :
	                    // Proses upload
	                    if(move_uploaded_file($tmp_file, $path_file)) { // Cek apakah gambar berhasil diupload atau tidak
	                		// Jika gambar berhasil diupload, Lakukan :
					        // sql statement untuk mengubah data pada tabel is_mahasiswa
					        $query = "UPDATE guru SET nama 					= :nama,
					        							nip					= :nip,
					        							posisi 				= :posisi,
														image 				= :foto
												  WHERE id_guru				= :nim";
					        // membuat prepared statements
					        $stmt = $pdo->prepare($query);

					        // mengikat parameter
							$stmt->bindParam(':nim', $nim);
							$stmt->bindParam(':nama', $nama);
							$stmt->bindParam(':nip', $nip);
							$stmt->bindParam(':posisi', $posisi);

							/************EDITED************/
							$foto = $nim. ".". $extension;
							$stmt->bindParam(':foto', $foto);
	                    } else {
	                        // Jika gambar gagal diupload, tampilkan pesan gagal upload
	                        header("location: fguru.php?alert=5");
	                    }
	                } else {
	                    // Jika ukuran file lebih dari 1MB, tampilkan pesan gagal upload
	                    header("location: fguru.php?alert=6");
	                }
	            } else {
	                // Jika tipe file yang diupload bukan jpg, jpeg, png, tampilkan pesan gagal upload
	                header("location: fguru.php?alert=7");
	            }
	        }

			// eksekusi query
	        $stmt->execute();

	        // jika berhasil tampilkan pesan berhasil update data
			header('location: fguru.php?alert=2');

			// tutup koneksi database
	        $pdo = null;
		} catch (PDOException $e) {
			// tampilkan pesan kesalahan
	        echo "ada kesalahan : ".$e->getMessage();
		}
	}
}
?>

Mudah2 an gk error lagi... owh ya dites nya cek direktori dulu.. baru nanti dibrowsernya ... kalau gk work...biasanya nyangkut..,, kosongkan cache => empty cache & hard reload chrome (f12) pojok kiri atas....

Good Luck \(^_^)...And Good Night,, istirahat dulu brooo.. ($_$)

avatar ciloxz
@ciloxz

284 Kontribusi 139 Poin

Dipost 6 tahun yang lalu

work!!! , makasih banyak loh mas , sekalian belajar2

avatar zulfiyanto
@zulfiyanto

26 Kontribusi 0 Poin

Dipost 6 tahun yang lalu

Welcome broo... :D

avatar ciloxz
@ciloxz

284 Kontribusi 139 Poin

Dipost 6 tahun yang lalu

Login untuk ikut Jawaban