Merhaba arkadaşlar laravel ile stok listemin olduğu sayfada arama yapıyorum. arama yapıyor fakat sayfalamada hata var sebebini anlayamadım yarımcı olabilirmisiz.
controller index kodlarım
public function index(Request $request)
{
// $StokKartData = StokKart::orderBy('id', 'desc')->paginate(10);
//$stokKartlar = StokKart::with('stokResimler')->orderBy('id', 'desc')->paginate(10);
//return view('stokkart.index', compact('stokKartlar'));
$stokKartlar = StokKart::where('stokadi', 'like', '%' . $request->search_string . '%')
->orWhere('stokkodu', 'like', '%' . $request->search_string . '%')
->orderBy('id', 'desc')
->paginate(5);
if ($stokKartlar->count() >= 1) {
return view('stokkart.index', compact('stokKartlar'));
} else {
return response()->json([
'status' => 'nothing_found',
]);
}
}
index sayfamda kullandığım kod.
<div class="card-body">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label for="search" class="control-label">Stok Adı</label>
<input name="search" id="search" type="text" class="form-control">
</div>
</div>
</div>
</div>
<div class="table-data">
<table class="table table-bordered">
<thead>
<tr>
<th width="150px">Resim</th>
<th>Kod</th>
<th>İsim</th>
<th>Tür</th>
<th>Grup</th>
<th>Birim</th>
<th>Altsınır</th>
<th>Üst Sınır</th>
<th>Açıklama</th>
<th>İşlemler</th>
</tr>
</thead>
<tbody class="alldata">
@foreach ($stokKartlar as $StokKartD)
<tr>
<td>
@if ($StokKartD->stokResimler->count() > 0)
<img width="150px" height="150px" src="{{ asset('storage/' . $StokKartD->stokResimler->first()->dosya) }}" alt="Stok Resmi">
@else
<span><img width="150px" height="150px" src="{{ asset('storage/stokresimleri/no-image.png') }}" alt="Stok Resmi Yok"></span>
@endif
</td>
<td>{{ $StokKartD->stokkodu }}</td>
<td>{{ $StokKartD->stokadi }}</td>
<td>{{ $StokKartD->stoktur->isim }}</td>
<td>{{ $StokKartD->stokgrup->isim }}</td>
<td>{{ $StokKartD->stokbirim->isim }}</td>
<td>{{ $StokKartD->altsinir }}</td>
<td>{{ $StokKartD->ustsinir }}</td>
<td>{{ $StokKartD->aciklama }}</td>
<td>
<a href="{{ route('stokkart.show', $StokKartD->id) }}" class="btn btn-sm btn-info">Göster</a>
<a href="{{ route('stokkart.edit', $StokKartD->id) }}" class="btn btn-sm btn-primary">Düzenle</a>
<form action="{{ route('stokkart.destroy', $StokKartD->id) }}" method="post" style="display: inline;">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-sm btn-danger" onclick="return confirm('Stok kartını silmek istediğinizden emin misiniz?')">Sil</button>
</form>
</td>
</tr>
@endforeach
</tbody>
<tbody class="searchdata">
@foreach ($stokKartlar as $StokKartD)
<tr>
<td>
@if ($StokKartD->stokResimler->count() > 0)
<img width="150px" height="150px" src="{{ asset('storage/' . $StokKartD->stokResimler->first()->dosya) }}" alt="Stok Resmi">
@else
<span><img width="150px" height="150px" src="{{ asset('storage/stokresimleri/no-image.png') }}" alt="Stok Resmi Yok"></span>
@endif
</td>
<td>{{ $StokKartD->stokkodu }}</td>
<td>{{ $StokKartD->stokadi }}</td>
<td>{{ $StokKartD->stoktur->isim }}</td>
<td>{{ $StokKartD->stokgrup->isim }}</td>
<td>{{ $StokKartD->stokbirim->isim }}</td>
<td>{{ $StokKartD->altsinir }}</td>
<td>{{ $StokKartD->ustsinir }}</td>
<td>{{ $StokKartD->aciklama }}</td>
<td>
<a href="{{ route('stokkart.show', $StokKartD->id) }}" class="btn btn-sm btn-info">Göster</a>
<a href="{{ route('stokkart.edit', $StokKartD->id) }}" class="btn btn-sm btn-primary">Düzenle</a>
<form action="{{ route('stokkart.destroy', $StokKartD->id) }}" method="post" style="display: inline;">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-sm btn-danger" onclick="return confirm('Stok kartını silmek istediğinizden emin misiniz?')">Sil</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
kullandıgım script kodu
<script>
$(document).on('keyup', function(e) {
e.preventDefault();
let search_string = $('#search').val();
let currentPage = 1; // Sayfa numarasını varsayılan olarak 1 olarak ayarlayın
if (search_string) {
$('.alldata').hide();
$('.searchdata').show();
} else {
$('.alldata').show();
$('.searchdata').hide();
}
// URL'den "page" parametresini çekmeye çalışın
const urlParams = new URLSearchParams(window.location.search);
if (urlParams.has('page')) {
currentPage = parseInt(urlParams.get('page'));
}
// URL'ye arama parametresini ekleyin
let currentUrl = window.location.href;
let newUrl = currentUrl.split('?')[0] + '?search_string=' + search_string;
history.pushState({}, '', newUrl);
// AJAX isteği gönderin
$.ajax({
url: "{{ route('stokkartsearch') }}",
method: 'GET',
data: {
search_string: search_string,
page: currentPage
}, // Sayfa numarasını ekleyin
success: function(res) {
$('.table-data').html(res);
if (res.status == 'nothing_found') {
$('.table-data').html('<tbody><tr><td colspan="10"><span class="text-danger">Kayıt yok</span>');
}
}
});
});
</script>