Postingan lainnya
Kelas Premium!
Belajar bikin website dari nol sekarang
Gunakan kupon "lebihcepat" untuk diskon 25%!
kenapa data update foto tidak terupdate? sedangkan di database nama filenya sudah terupdate
UPDATE
<?php
include('../../conf/koneksi.php');
if(isset($_POST['simpan'])) {
$idka = $_POST['idka'];
$nama = $_POST['nama'];
$status = $_POST['status'];
$tanggal = $_POST['tanggal'];
$harga = $_POST['harga'];
$keterangan = $_POST['keterangan'];
$gambar = $_FILES['gambar']['name'];
// $file_temp = $_FILES ['gambar']['tmp_name'];
//cek jika ada fotobaru
if($gambar){
//kalau ada gambar baru
//hapus gambar lama
unlink("add/foto/".$gambar);
//menyimapan gambar secara parmanen
move_uploaded_file($_FILES ['gambar']['tmp_name'], 'add/foto'.$_FILES['gambar']['name']);
//membuat query
$updatektl = mysqli_query($koneksi, "UPDATE tb_katalog SET nama='$nama', status='$status', tanggal='$tanggal', harga='$harga', keterangan='$keterangan', gambar='$gambar' WHERE idka='$idka'") or die(mysqli_error($koneksi));
header("location: ../index.php?page=katalog");
}else{
$updatektl = mysqli_query($koneksi, "UPDATE tb_katalog SET nama='$nama', status='$status', tanggal='$tanggal', harga='$harga', keterangan='$keterangan' WHERE idka='$idka'") or die(mysqli_error($koneksi));
header("location: ../index.php?page=katalog");
}
} ?>
3 Jawaban:
<div>coba di else nya di kasi penanda dulu aja... misal :</div><pre>UPDATE tb_katalog SET nama='ini else'</pre><div>untuk ngecek $gambar TRUE or FALSE,,,<br>kalo udah, cek,, namanya jadi "ini else" ga,,, kalo iya,, berarti ada yang salah di $gambar nya</div>
Tanggapan
Terima Kasih Mas Atas Koreksinya
<div>Sepertinya logic untuk hapus gambar/foto lama-nya kurang tepat deh. Harusnya kamu hapus foto/gambar lama berdasarkan data (nama file gambar) yang ada di database, bukan mengambil nama file yang baru di-upload, sehingga file gambar lama akan tetap exist. <br><br>Saya coba ubah kodenya seperti ini, tinggal coba disesuaikan dengan kebutuhan kasusmu aja:</div><pre><?php include('../../conf/koneksi.php'); if(isset($_POST['simpan'])) { $idka = $_POST['idka']; $nama = $_POST['nama']; $status = $_POST['status']; $tanggal = $_POST['tanggal']; $harga = $_POST['harga']; $keterangan = $_POST['keterangan']; $gambar = $_FILES['gambar']['name'];
$queryKatalog = mysqli_query($koneksi, "SELECT gambar FROM tb_katalog WHERE idka = '$idka'") or die("Error query get katalog");
$katalog = mysqli_fetch_object($queryKatalog);
$queryUpdate = "UPDATE tb_katalog SET nama='$nama', status='$status', tanggal='$tanggal', harga='$harga', keterangan='$keterangan' ";
// jika ada gambar yang diupload
if ($gambar !== '') {
//menyimapan gambar secara parmanen
$upload = move_uploaded_file($_FILES ['gambar']['tmp_name'], 'add/foto'.$_FILES['gambar']['name']);
// jika upload berhasil
if($upload) {
// hapus gambar lama berdasarkan nama file gambar lama yang ada di database
unlink("add/foto/".$katalog-&gt;gambar);
// concate query update
$queryUpdate .= ", gambar = '$gambar'";
} else {
die("Error: gagal upload gambar ke server...");
}
}
// concate where id katalog
$queryUpdate .= " WHERE idka = '$idka'";
$updateKatalog = mysqli_query($koneksi, $queryUpdate);
// jika query update berhasil dijalankan
if ($updateKatalog) {
header("location: ../index.php?page=katalog");
} else {
die("Error: query update katalog gagal dijalankan!");
}
}</pre><div><br>Semoga berhasil!</div>
Tanggapan
Terima Kasih Mas , Sudah Bantuin Koreksi Codingannya
<div>Path direktori gambar nya mungkin perlu di perhatikan.<br><br>Kamu bisa lihat seperti contoh code dibawah ini:<br><br></div><pre><?php
include('../../conf/koneksi.php');
protected function sanitizeInput( $input ) { if ( isset($input) ) { return filter_var($_POST['idka'], FILTER_SANITIZE_STRING); }
return $input;
}
if( isset($_POST['simpan']) ) {
$idka = isset($_POST['idka']) ? sanitizeInput($_POST['idka']) : null;
$nama = isset($_POST['nama']) ? sanitizeInput($_POST['nama']) : null;
$status = isset($_POST['status']) ? sanitizeInput($_POST['status']) : null;
$tanggal = isset($_POST['tanggal']) ? sanitizeInput($_POST['tanggal']) : null;
$harga = isset($_POST['harga']) ? sanitizeInput($_POST['harga']) : null;
$keterangan = isset($_POST['keterangan']) ? sanitizeInput($_POST['keterangan']) : null;
$gambar = $_FILES['gambar']['name'] ?? null;
try {
if ( !is_object($koneksi) )
throw new Exception("Object mysqli object tidak dapat di load.");
$query_sql = "SELECT gambar FROM tb_katalog WHERE idka = '$idka'";
$queryKatalog = mysqli_query($koneksi, $query_sql, MYSQLI_STORE_RESULT);
if ( !$queryKatalog )
throw new Exception("Object mysqli object tidak dapat di load.");
if ( !is_object($queryKatalog) )
throw new Exception("Result mysql query tidak sesuai expektasi.");
$katalog = mysqli_fetch_object($queryKatalog);
$valid_inputs = array_filter([
"name" =&gt; $nama,
"status" =&gt; $status,
"tanggal" =&gt; $tanggal,
"harga" =&gt; $harga,
"keterangan" =&gt; $keterangan
]);
if ($gambar) {
/*
* Pastikan folder exists,
* move file tidak akan create
* folder bila folder target tidak exist.
*/
$base_path_gambar = join( DIRECTORY_SEPARATOR, ["add", "foto"] );
if ( !is_dir( $base_path_gambar ) ) {
mkdir( $base_path_gambar );
}
/*
* kalau ada gambar baru, hapus gambar lama,
* nama file gambar lama dari database.
*
* Proses hapus akan sekali jalan,
* bila tidak dapat di hapus file lama
* oleh karena error prosess, make proses
* akan berlanjut.
*/
if( property_exists($katalog, "gambar") ) {
$photo_lama_source_path = join( DIRECTORY_SEPARATOR, [$base_path_gambar, $katalog-&gt;gambar] );
unlink( $photo_lama_source_path );
}
$photo_baru_source_path = join( DIRECTORY_SEPARATOR, [$base_path_gambar, $gambar] );
$upload = move_uploaded_file( $_FILES["gambar"]["tmp_name"], $photo_baru_source_path );
/*
* jika upload berhasil,
* ikut sertakan update fambar di
* prosess update database.
*/
if( $upload ) {
$valid_inputs["gambar"] = $gambar;
}
}
/*
* Format query SQL dari array
* dimana isi array exist bukan null atau "".
*/
$static_query_update = "UPDATE tb_katalog SET " . http_build_query($valid_inputs, null, ', ');
// concate where id katalog
$queryUpdate .= " WHERE idka = '$idka'";
$updateKatalog = mysqli_query($koneksi, $queryUpdate);
if ( !$updateKatalog ) {
$message = "Proses update data tidak berhasil. Mungkin gambar akan missing, karena prosess delete gambar lama berhasil, namun update name gambar tidak."
$message .= "Jika ingin handle bug ini, tempatkan prosess delete di bawah ini.";
$message .= "Hapus fungsi diatas, dan uncomment fungsi dibawah!";
throw new Exception("Prosess update database tidak berhasil.");
}
// if ( $gambar ) {
// ... Check folder
//
// $base_path_gambar = join( DIRECTORY_SEPARATOR, ["add", "foto"] );
//
// if ( !is_dir( $base_path_gambar ) ) {
// mkdir( $base_path_gambar );
// }
// }
header("location: ../index.php?page=katalog");
} catch(Exception $exception) {
die("Error: " . $exception-&gt;getMessage());
}
} <br></pre>
Tanggapan
sebelumya terima kasih mas atas koreksinya tapi masih message erornya, Parse error: syntax error, unexpected 'protected' (T_PROTECTED), expecting end of file in C:\xampp\htdocs\sielang\app\update\update_katalog.php on line 5,