Избиране във коя таблица да търси

explozen

Registered
Здравейте :)
Сега ще правя търсачка обаче се чудя как да направя така че да има възможност да търси във 2 таблици. Някой може ли да ми помогне по някакъв начин? Представях си как ще стане ако е със чекбоксове но не знам как да го направя :D
 
ОМГ .. ?! ... ето как става ..
HTML:
<inpu type='text' name='word'>
<select name='table'>
  <option value="users">Потребители</option>
 <option value="tapanari">Ботове</option>
 <option value="tapanari,users">Всички</option>
</select>

PHP:
$word = $_POST['word']
$table = $_POST['table'];

$q = mysql_query("SELECT * FROM ".$table." WHERE `title` LIKE '%".$word."%' OR  `desc` LIKE '%".$word."%' OR  `tags` LIKE '%".$word."%' ORDER BY `id` DESC");
while($r = ...)
{
  // echo rezultatite ... 
}

Колко просто, нали ? :?: :?:
 
joTunkiq каза:
ОМГ .. ?! ... ето как става ..
HTML:
<inpu type='text' name='word'>
<select name='table'>
  <option value="users">Потребители</option>
 <option value="tapanari">Ботове</option>
 <option value="tapanari,users">Всички</option>
</select>

PHP:
$word = $_POST['word']
$table = $_POST['table'];

$q = mysql_query("SELECT * FROM ".$table." WHERE `title` LIKE '%".$word."%' OR  `desc` LIKE '%".$word."%' OR  `tags` LIKE '%".$word."%' ORDER BY `id` DESC");
while($r = ...)
{
  // echo rezultatite ... 
}

Колко просто, нали ? :?: :?:
Мда...и как ще търси в две таблици едновременно с твоя пример?
 
joTunkiq каза:
ОМГ .. ?! ... ето как става ..
HTML:
<inpu type='text' name='word'>
<select name='table'>
  <option value="users">Потребители</option>
 <option value="tapanari">Ботове</option>
 <option value="tapanari,users">Всички</option>
</select>

PHP:
$word = $_POST['word']
$table = $_POST['table'];

$q = mysql_query("SELECT * FROM ".$table." WHERE `title` LIKE '%".$word."%' OR  `desc` LIKE '%".$word."%' OR  `tags` LIKE '%".$word."%' ORDER BY `id` DESC");
while($r = ...)
{
  // echo rezultatite ... 
}

Колко просто, нали ? :?: :?:
Предполагам, че си го писал тук във форума това! Забравил си да филтрираш данните за превент от SQLi или XSS! :)

$word = addslashes(htmlspecialchars(trim($_POST['word'])));
$table = addslashes(htmlspecialchars(trim($_POST['table'])));

http://php.net/manual/en/function.addslashes.php
http://php.net/manual/en/function.htmlspecialchars.php
http://php.net/manual/en/function.trim.php
 
няма значение филтрацията, това е пример.

@fbian - не виждаш ли, че ползвам селект меню.. ?! от там идват таблиците .. ако искаш да не е така просто напиши на ръка двете таблици или ползвай тоя пример:
PHP:
mysql_query("SELECT * FROM `table1` as `t1`, `table2` as `t2` WHERE `t1`.`title` LIKE '%".$word."%'  OR `t1`.`desc` LIKE '%".$word."%' `t2`.`title` LIKE '%".$word."%'  OR `t2`.`desc` LIKE '%".$word."%'  ");

само заметваш .. по-просто от това няма . !
Понеже те гледам, че неможеш и елементарен код да си скълъпиш .. гледай урока на Иван Внанов за Aliacing в mysql ! :?: :?: :?: :?:
 
joTunkiq каза:
няма значение филтрацията, това е пример.

@fbian - не виждаш ли, че ползвам селект меню.. ?! от там идват таблиците .. ако искаш да не е така просто напиши на ръка двете таблици или ползвай тоя пример:
PHP:
mysql_query("SELECT * FROM `table1` as `t1`, `table2` as `t2` WHERE `t1`.`title` LIKE '%".$word."%'  OR `t1`.`desc` LIKE '%".$word."%' `t2`.`title` LIKE '%".$word."%'  OR `t2`.`desc` LIKE '%".$word."%'  ");

само заметваш .. по-просто от това няма . !
Понеже те гледам, че неможеш и елементарен код да си скълъпиш .. гледай урока на Иван Внанов за Aliacing в mysql ! :?: :?: :?: :?:
Това вече е друго.Аз исках да кажа,че не може да търси в повече от една таблица наведнъж с първия код,който даде.Просто може да си избира от коя...
 
ето това ти трябва
PHP:
$word = $_POST['word'];
$table =array("table1,table2,table3,table4");
foreach ($table as $value) {
    $query="Select `nqkoia koloma` FROM ".$value." WHERE `nqkoia koloma` LIKE '%".$word."%'" ;
    $result = mysql_query($query) or die (mysql_errno());
    while ($row = mysql_fetch_assoc($result)){
        //tuka se slaga koda za izkarvane na rezultata
    }
}
 
Добра идея е да се направят масиви с полетата. Защото ако търсиш в таблица users и имаш хардкоднато email LIKE ... няма проблем. Но ако потребителя избере таблицата movies примерно, ще изгърми грешка, че няма такова поле email в таблицата movies.
 
Да прав си:
Не съм го тествал но това е принципа има и още доста варияций за търсене:
PHP:
$word = $_POST['word'];
$table =array(
    "table1" => 'ime na kolona1',
    "table2" => 'ime na kolona2',
    "table3" => 'ime na kolona3',
    "table4" => 'ime na kolona4'
    );

    foreach ($table as $key => $value) {
      $query="Select ".$value."  FROM ".$key." WHERE `nqkoia koloma` LIKE '%".$word."%'" ;
    $result = mysql_query($query) or die (mysql_errno());
    while ($row = mysql_fetch_assoc($result)){
        //tuka se slaga koda za izkarvane na rezultata
    } 
}
deam0n каза:
Добра идея е да се направят масиви с полетата. Защото ако търсиш в таблица users и имаш хардкоднато email LIKE ... няма проблем. Но ако потребителя избере таблицата movies примерно, ще изгърми грешка, че няма такова поле email в таблицата movies.
 

Горе