شرح صفوف ومحتوى الفقرة
لا ينبغي لقائمة الإكمال التلقائي أن تُرجع آلاف السجلات؛ لذا قيّد استعلام البحث الفوري دائماً بـ LIMIT 8 أو LIMIT 10 ونسّق عناصر المصفوفة.
- قيّد الحد الأقصى لطول نص البحث (مثلاً
mb_substr($q, 0, 60)) قبل تمريره للاستعلام. - حوّل صفوف قاعدة البيانات إلى مصفوفة نظيفة تضم المفاتيح المطلوبة فقط للعرض مثل
idوtitleوurl. - أرفق مفتاح العدد
countومصفوفة النتائجresultsفي كائن JSON النهائي.
تحول دالة array_map() صفوف قاعدة البيانات الخام إلى كائنات جاهزة للاستخدام المباشر في الواجهة مع بناء مسار الرابط url.
PHP
<?php
$rows = [
['id' => 89, 'title' => 'PHP AJAX Intro', 'slug' => 'php-ajax-introduction'],
['id' => 91, 'title' => 'AJAX Live Search', 'slug' => 'php-ajax-live-search'],
];
$formatted = array_map(fn(array $r): array => [
'id' => (int) $r['id'],
'title' => $r['title'],
'url' => '/tutorials/php/' . $r['slug'],
], $rows);
echo json_encode(['ok' => true, 'count' => count($formatted), 'results' => $formatted]) . "\n";