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");
                }

        }        ?>

avatar mr.iluminatehutan
@mr.iluminatehutan

1 Kontribusi 0 Poin

Diperbarui 1 tahun yang lalu

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>

avatar yukari06
@yukari06

137 Kontribusi 66 Poin

Dipost 1 tahun yang lalu

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.&nbsp;<br><br>Saya coba ubah kodenya seperti ini, tinggal coba disesuaikan dengan kebutuhan kasusmu aja:</div><pre>&lt;?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, &quot;SELECT gambar FROM tb_katalog WHERE idka = &#039;$idka&#039;&quot;) or die(&quot;Error query get katalog&quot;);
$katalog = mysqli_fetch_object($queryKatalog);
$queryUpdate = &quot;UPDATE tb_katalog SET nama=&#039;$nama&#039;, status=&#039;$status&#039;, tanggal=&#039;$tanggal&#039;, harga=&#039;$harga&#039;, keterangan=&#039;$keterangan&#039; &quot;;

// jika ada gambar yang diupload
if ($gambar !== &#039;&#039;) {
    //menyimapan gambar secara parmanen
    $upload = move_uploaded_file($_FILES [&#039;gambar&#039;][&#039;tmp_name&#039;], &#039;add/foto&#039;.$_FILES[&#039;gambar&#039;][&#039;name&#039;]);

    // jika upload berhasil
    if($upload) {
        // hapus gambar lama berdasarkan nama file gambar lama yang ada di database
        unlink(&quot;add/foto/&quot;.$katalog-&amp;gt;gambar);

        // concate query update
        $queryUpdate .= &quot;, gambar = &#039;$gambar&#039;&quot;;
    } else {
        die(&quot;Error: gagal upload gambar ke server...&quot;);
    }
}

// concate where id katalog
$queryUpdate .= &quot; WHERE idka = &#039;$idka&#039;&quot;;

$updateKatalog = mysqli_query($koneksi, $queryUpdate);

// jika query update berhasil dijalankan
if ($updateKatalog) {
    header(&quot;location: ../index.php?page=katalog&quot;);
} else {
    die(&quot;Error: query update katalog gagal dijalankan!&quot;);
}

}</pre><div><br>Semoga berhasil!</div>

avatar ahanafi
@ahanafi

815 Kontribusi 552 Poin

Dipost 1 tahun yang lalu

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>&lt;?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[&#039;idka&#039;]) ? sanitizeInput($_POST[&#039;idka&#039;]) : null;
$nama           = isset($_POST[&#039;nama&#039;]) ? sanitizeInput($_POST[&#039;nama&#039;]) : null;
$status         = isset($_POST[&#039;status&#039;]) ? sanitizeInput($_POST[&#039;status&#039;]) : null;
$tanggal        = isset($_POST[&#039;tanggal&#039;]) ? sanitizeInput($_POST[&#039;tanggal&#039;]) : null;
$harga          = isset($_POST[&#039;harga&#039;]) ? sanitizeInput($_POST[&#039;harga&#039;]) : null;
$keterangan     = isset($_POST[&#039;keterangan&#039;]) ? sanitizeInput($_POST[&#039;keterangan&#039;]) : null;
$gambar         = $_FILES[&#039;gambar&#039;][&#039;name&#039;] ?? null;

try {

    if ( !is_object($koneksi) )
        throw new Exception(&quot;Object mysqli object tidak dapat di load.&quot;);

    $query_sql = &quot;SELECT gambar FROM tb_katalog WHERE idka = &#039;$idka&#039;&quot;;

    $queryKatalog   = mysqli_query($koneksi, $query_sql, MYSQLI_STORE_RESULT);

    if ( !$queryKatalog )
        throw new Exception(&quot;Object mysqli object tidak dapat di load.&quot;);

    if ( !is_object($queryKatalog) )
        throw new Exception(&quot;Result mysql query tidak sesuai expektasi.&quot;);

    $katalog = mysqli_fetch_object($queryKatalog);

    $valid_inputs = array_filter([
        &quot;name&quot;          =&amp;gt; $nama,
        &quot;status&quot;        =&amp;gt; $status,
        &quot;tanggal&quot;       =&amp;gt; $tanggal,
        &quot;harga&quot;         =&amp;gt; $harga,
        &quot;keterangan&quot;    =&amp;gt; $keterangan
    ]);

    if ($gambar) {
       /*
        * Pastikan folder exists,
        * move file tidak akan create
        * folder bila folder target tidak exist.
        */
        $base_path_gambar = join( DIRECTORY_SEPARATOR, [&quot;add&quot;, &quot;foto&quot;] );

        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, &quot;gambar&quot;) ) {
            $photo_lama_source_path = join( DIRECTORY_SEPARATOR, [$base_path_gambar, $katalog-&amp;gt;gambar] );
            unlink( $photo_lama_source_path );
        }


        $photo_baru_source_path = join( DIRECTORY_SEPARATOR, [$base_path_gambar, $gambar] );
        $upload = move_uploaded_file( $_FILES[&quot;gambar&quot;][&quot;tmp_name&quot;], $photo_baru_source_path );

        /*
         * jika upload berhasil,
         * ikut sertakan update fambar di
         * prosess update database.
         */
        if( $upload ) {
            $valid_inputs[&quot;gambar&quot;] = $gambar;
        }
    }

    /*
     * Format query SQL dari array
     * dimana isi array exist bukan null atau &quot;&quot;.
     */ 
    $static_query_update = &quot;UPDATE tb_katalog SET &quot; . http_build_query($valid_inputs, null, &#039;, &#039;);

    // concate where id katalog
    $queryUpdate .= &quot; WHERE idka = &#039;$idka&#039;&quot;;

    $updateKatalog = mysqli_query($koneksi, $queryUpdate);

    if ( !$updateKatalog ) {
        $message = &quot;Proses update data tidak berhasil. Mungkin gambar akan missing, karena prosess delete gambar lama berhasil, namun update name gambar tidak.&quot;
        $message .= &quot;Jika ingin handle bug ini, tempatkan prosess delete di bawah ini.&quot;;
        $message .= &quot;Hapus fungsi diatas, dan uncomment fungsi dibawah!&quot;;

        throw new Exception(&quot;Prosess update database tidak berhasil.&quot;);
    }

    // if ( $gambar ) {
    //    ... Check folder
    //
    //    $base_path_gambar = join( DIRECTORY_SEPARATOR, [&quot;add&quot;, &quot;foto&quot;] );
    //
    //    if ( !is_dir( $base_path_gambar ) ) {
    //        mkdir( $base_path_gambar );       
    //    }
    // }

    header(&quot;location: ../index.php?page=katalog&quot;);
} catch(Exception $exception) {
    die(&quot;Error: &quot; . $exception-&amp;gt;getMessage());
}

} <br></pre>

avatar Yuant
@Yuant

4 Kontribusi 4 Poin

Dipost 1 tahun yang lalu

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,

Login untuk ikut Jawaban