Postingan lainnya
Buku Ini Koding!
Baru!
Buku ini akan jadi teman perjalanan kamu belajar sampai dapat kerjaan di dunia programming!
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,