page - search code php



البحث عن كلمات رئيسية متعددة مع فب و ميسكل(حيث X مثل) (2)

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

'playstation3' أو 'اللعب بارد station3'

وانا ابحث عن:

بلاي ستيشن

لن تكون هناك نتائج. أود أن أعرف إذا كان من الممكن تعديل الرمز الخاص بي حتى أتمكن من البحث 2 أو أكثر من الكلمات الرئيسية أو الكلمات مفصولة مسافة أو كلمة أخرى أو دوت أو تسطير أسفل السطر أو (-) أو (+) أو (٪) أو (أي شيء آخر لول).

أعرف أنني يجب أن تستخدم بدو أو ميسكلي ولكن أنا باستخدام هذا للاختبار فقط!

$queried = $_POST['query'];



$search = mysql_query("SELECT * FROM links WHERE name LIKE '%$queried%'");
while($searche = mysql_fetch_array($search)){
    echo "".$searche['link']."</br>".$searche['name']."</br>".$searche['size']."</br>".$searche['category']."<hr></br></br>";

    }

https://src-bin.com


Answer #1

لا تستخدم وظائف mysql_* حتى testing بعد الآن. أنها ليست أسهل من mysqli ، فقط في حال كنت تعتقد سهلة لاختبار هنا ثم نقل.

ومع ذلك يمكنك تقسيم المدخلات الخاصة بك على , ومحاولة هذا

<?php

$queried="abc,test, testing";
$values=explode(',',$queried);


$sql="SELECT * FROM links WHERE";
$i=0;
foreach($values as $v)
{
$v=trim($v);
if($i==0)
{
$sql.=" name LIKE '%$v%'";
}
else
{
$sql.=" OR name LIKE '%$v%'";
}

$i++;
}

$search = mysql_query($sql);
while($searche = mysql_fetch_array($search)){
    echo "".$searche['link']."</br>".$searche['name']."</br>".$searche['size']."</br>".$searche['category']."<hr></br></br>";

    }    
?>

Answer #2

للبحث بشكل ديناميكي عن جميع الكلمات الرئيسية، يمكنك استخدام وظيفة التفجير لتفريق جميع الكلمات الرئيسية؛

$queried = mysql_real_escape_string($_POST['query']); // always escape

$keys = explode(" ",$queried);

$sql = "SELECT * FROM links WHERE name LIKE '%$queried%' ";

foreach($keys as $k){
    $sql .= " OR name LIKE '%$k%' ";
}

$result = mysql_query($sql);

ملاحظة 1: الهروب دائما إدخال المستخدم قبل استخدامه في الاستعلام الخاص بك.

ملاحظة 2: يتم إيقاف وظائف mysql_ *، استخدام ميسكلي أو بدو كبديل





search