Onclick JQuery Save Database

Selamat sore, sehat selalu buat kita semua.. Amiin

pada kesempatan kali ini saya ingin membagikan sebuah tulisan masih mengenai seputar pemrograman khususnya framework laravel, kasus yang akan dibahas kali adalah event onclik save database

Kita buat migration nya terlebih dahulu, sebagai contoh disini menggunakan database dengan nama table product_images yang sudah berelasi dengan product, untuk relasinya sendiri tidak diharuskan dalam kasus yang akan kita bahas ini, karena penulis memakai project yang sedang dikerjakan (abaikan saja untuk relasinya ^_^)

jangan lupa di migrate setelah kita selesai membuat migration nya

public function up()
    {
        Schema::create('product_images', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->unsignedBigInteger('product_id');
            $table->string('images')->default('no-image.png');
            $table->string('title');
            $table->boolean('featured')->default(0);
            $table->timestamps();

            $table->foreign('product_id')->references('id')->on('products')
                ->onUpdate('cascade')->onDelete('cascade');
        });
    }

untuk event onclick nya sendiri kita akan menggunakan colomn "featured" dengan nilai default 0 dan ketika disimpan berubah menjadi 1 untuk nilainya

Penulis tidak akan membahas routes atau controller untuk menampilkan gambar seperti dibawah ini, penulis yakin pembaca sudah paham dan lebih mengetahui dari penulis sendiri ^_^

1_1

untuk form nya sendiri kurang lebih seperti dibawah ini

<div class="tab-pane p-3" id="gambar" role="tabpanel">
                            <div class="col-md-8">
                                {!! Form::model($product_images, ['url' => route('product-gambar.update', $product->id), 'method'=>'put', 'class' => 'form-horizontal group-border-dashed', 'enctype=multipart/form-data']) !!}
                                    <table class="table table-condensed table-bordered" id="table-gambar">
                                        <thead>
                                            <tr>
                                                <th>Gambar</th>
                                                <th>Titel</th>
                                                <th>Featured</th>
                                                <th>Update</th>
                                                <th style="width: 15%">Aksi</th>
                                            </tr>
                                        </thead>
                                        <tbody>
                                            @foreach ($product_images as $row)
                                            <tr>
                                                <td>
                                                    @if($row->images)
                                                    <img src="{{asset('storage/'.$row->images)}}"
                                                    width="70px"/>
                                                    @else
                                                    <img src="{{asset('storage/upload/no-image.png')}}" />
                                                    @endif
                                                </td>
                                                <td>{{$row->title}}</td>
                                                <td class="text-center">
                                                    <a href="javascript:void(0)" class="heart" data-id="{{$row->id}}" data-url="{{ route('product.change-fetaured', $row->id) }}">
                                                        <i class="far fa-heart {{ ($row->featured == 0) ? '' : 'text-danger'}}"></i>
                                                    </a>
                                                </td>
                                                <td>{{ \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $row->updated_at)->diffForHumans() }}</td>
                                                <td>
                                                    <a class="icon-trash-bin delete-gambar btn btn-danger btn-sm" href="javascript:void(0)" data-url="{{ route('product-gambar.delete', $row->id) }}">
                                                    </a>
                                                </td>
                                                </tr>
                                            @endforeach
                                        </tbody>
                                    </table>
                                    <button class="btn btn-space btn-success" type="button" id="add-gambar">
                                        <span class="mdi mdi-plus-circle"></span>
                                    </button>
                                {!! Form::close() !!}
                            </div>
                        </div>

 untuk javascriptnya kurang lebih seperti ini 

$(document).on('click', '.heart', function(e){
            $('.fa-heart').removeClass('text-danger');
            $(this).children('.fa-heart').addClass('text-danger');
            $(this).addClass('heart-active');
            var id = $(this).data('id');
            var url = $(this).data('url');
            $.ajax({
                type: 'POST',
                url: url,
                data: {
                    '_token': $('input[name=_token]').val(),
                    'id': id
                },
                success: function(data) {
                    // empty
                    toastr.success("Gambar telah dijadikan thumbail !!")
                }
            })
        })

Dalam pembahasan kasus kali ini yang menjadi point pertama adalah bagaimana cara save onclick kedalam database, kita fokus pada tag html yang dibawah ini saja

<td class="text-center">
<a href="javascript:void(0)" class="heart" data-id="{{$row->id}}" data-url="{{ route('product.change-fetaured', $row->id) }}">
      <i class="far fa-heart {{ ($row->featured == 0) ? '' : 'text-danger'}}"></i>
   </a>
</td>

Didalam tag hmtl tsb kita harus membuat sebuah class untuk memudahkan ketika hendak dipanggil oleh javascript, pada contoh diatas saya memakai nama class="heart" dan juga font-awesome dengan class="far fa-heart"untuk mengisi pada table row dengan nama Featured seperti gambar diatas

Dan terakhir kita harus membuat Controller nya untuk menangkap update dari form tersebut

public function changeFeatured($id)
    {
        $product_images = ProductImages::findOrFail($id);
        $remove_featured = ProductImages::where('product_id', $product_images->product_id)->where('featured', 1)->first();
        if ($remove_featured) {
            $remove_featured->featured = 0;
            $remove_featured->update();
        }
    }

DONE..!!!

Mohon maaf apabila dalam penjelasannya kurang bisa dimengerti dan blepotan kemana-mana ^_^

2

Dan untuk hasil ahirnya bisa dilihat gambar ditas, ketika kita klik icon heart nya berubah menjadi warna merah dan ada notif "gambar berhasil dijadikan thumbail"

Hatur Nuhun ... ^_^

 

 

Related Articles

Comments