سؤال

لدي سؤال ربما عرجاء لكنه جعلني عالقًا لدي استعلام DB

 $query_Recordset10 = "SELECT * FROM products 
  WHERE razdel='mix' AND ID='$ID+1' AND litraj='$litri' ORDER BY ID ASC";
$Recordset10 = mysql_query($query_Recordset10, $victor) or die(mysql_error());
$row_Recordset10 = mysql_fetch_array($Recordset10);
$totalRows_Recordset10 = mysql_num_rows($Recordset10);

هذا هو الاستعلام للمنتج التالي في السطر القائم على معرف المنتج الحالي الموجود على الصفحة.

ولكن إذا كان المنتج التالي الذي يتوافق مع المعايير في الاستعلام هو 2 أو أكثر من معرفتي قبل فترات الاستراحة الخاصة بي. لذلك هل هناك طريقة لتخطي هذه الصفوف والحصول على المعرف التالي الذي يطابق المعايير.

شكرا جزيلا لك.

هل كانت مفيدة؟

المحلول

تغيير استفسارك لهذا:

$query_Recordset10 = "SELECT * FROM products 
    WHERE razdel='mix' AND ID > '$ID' AND litraj='$litri' ORDER BY ID ASC LIMIT 1";

لذلك لا تزال تحصل على صف واحد فقط (إذا كان هناك أي شيء لإرجاعه) ، لكنك ستعيد الصف التالي (وفقًا لـ Order by ID ASC) مقابل (محتمل) الصف مع معرف تدريجي.

نصائح أخرى

SELECT * FROM products
WHERE razdel='mix' AND id> $ id AND litraj='$litri' ORDER BY ID ASC";

تم حل المشكلة. أنا مازل عندي الكثير لأتعلمه.

SELECT * FROM products WHERE razdel='mix' AND ID>'$ID' AND litraj='$litri' ORDER BY ID ASC LIMIT 1

هذا هو خط رايت ولكن خطأي كان كيف يتم إنشاء $ ID.

شكرا لكم جميعا.

استخدم foreach للحلق على صفيف بدلاً من محاولة الوصول بواسطة الفهارس (إذا كنت تجلب كل قيمة):

foreach ($records as $record) {
}

بدلاً من

for ($i = 0; $i < count($records); $i++) {
}

أو

$i = 0;
while ($i < count($records)) {

    $i++;
}

أو

$i = 0;
do {

} while (++$i < count($records));

استخدم هذا الاستعلام بدلاً من ذلك:

SELECT * FROM products WHERE razdel='mix' AND ID>$ID AND litraj='$litri' ORDER BY ID ASC LIMIT 1

سيعطيك هذا العنصر التالي بعد العنصر الذي يحتوي على معرف $ $.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top