انتقل إلى محتوى الدرس

Limiting and Formatting JSON Matches تحديد سقف النتائج وتنسيق مخرجات JSON

ابنِ محرك بحث فوري الإكمال التلقائي باستخدام PHP 8 واستعلامات PDO المحضرة بـ LIKE واستجابات JSON وتأخير الإدخال Debounce.
1 صفوف تعليمية
PHP
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

لا ينبغي لقائمة الإكمال التلقائي أن تُرجع آلاف السجلات؛ لذا قيّد استعلام البحث الفوري دائماً بـ LIMIT 8 أو LIMIT 10 ونسّق عناصر المصفوفة.

  • قيّد الحد الأقصى لطول نص البحث (مثلاً mb_substr($q, 0, 60)) قبل تمريره للاستعلام.
  • حوّل صفوف قاعدة البيانات إلى مصفوفة نظيفة تضم المفاتيح المطلوبة فقط للعرض مثل id وtitle وurl.
  • أرفق مفتاح العدد count ومصفوفة النتائج results في كائن JSON النهائي.

تحول دالة array_map() صفوف قاعدة البيانات الخام إلى كائنات جاهزة للاستخدام المباشر في الواجهة مع بناء مسار الرابط url.

مخطط تدفق التنفيذ العملي لقسم تحديد سقف النتائج وتنسيق مخرجات JSON في لغة PHP
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";