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

C++ JAVA
Post Reply
explozen
Турист
Турист
Posts: 420
Joined: Thu Feb 10, 2011 7:15 pm
Answers: 13

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

Post by explozen » Wed Sep 11, 2013 10:04 am

Здравейте :)
Сега ще правя търсачка обаче се чудя как да направя така че да има възможност да търси във 2 таблици. Някой може ли да ми помогне по някакъв начин? Представях си как ще стане ако е със чекбоксове но не знам как да го направя :D

joTunkiq
Потребител
Потребител
Posts: 829
Joined: Tue Dec 25, 2012 10:03 am
Answers: 142
Contact:

Post by joTunkiq » Wed Sep 11, 2013 11:55 am

ОМГ .. ?! ... ето как става ..
[html]<inpu type='text' name='word'>
<select name='table'>
<option value="users">Потребители</option>
<option value="tapanari">Ботове</option>
<option value="tapanari,users">Всички</option>
</select>
[/html]

[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 ...
}
[/php]

Колко просто, нали ? :?: :?:

fbian
Турист
Турист
Posts: 204
Joined: Sat May 26, 2012 3:55 pm
Answers: 18

Post by fbian » Wed Sep 11, 2013 12:29 pm

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

[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 ...
}
[/php]

Колко просто, нали ? :?: :?:
Мда...и как ще търси в две таблици едновременно с твоя пример?

User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3319
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 126

Post by dakata__92 » Wed Sep 11, 2013 12:33 pm

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

[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 ...
}
[/php]

Колко просто, нали ? :?: :?:
Предполагам, че си го писал тук във форума това! Забравил си да филтрираш данните за превент от 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

joTunkiq
Потребител
Потребител
Posts: 829
Joined: Tue Dec 25, 2012 10:03 am
Answers: 142
Contact:

Post by joTunkiq » Wed Sep 11, 2013 3:01 pm

няма значение филтрацията, това е пример.

@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."%' ");[/php]

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

fbian
Турист
Турист
Posts: 204
Joined: Sat May 26, 2012 3:55 pm
Answers: 18

Post by fbian » Wed Sep 11, 2013 6:04 pm

joTunkiq wrote:няма значение филтрацията, това е пример.

@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."%' ");[/php]

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

stonybg
Турист
Турист
Posts: 201
Joined: Sun Apr 13, 2008 2:07 pm
Answers: 13

Post by stonybg » Tue Sep 17, 2013 12:46 pm

ето това ти трябва
[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
}
}
[/php]

User avatar
deam0n
Web-tourist
Web-tourist
Posts: 3032
Joined: Sat Oct 01, 2005 4:33 pm
Answers: 204
Location: Шопландия
Contact:

Post by deam0n » Tue Sep 17, 2013 1:15 pm

Добра идея е да се направят масиви с полетата. Защото ако търсиш в таблица users и имаш хардкоднато email LIKE ... няма проблем. Но ако потребителя избере таблицата movies примерно, ще изгърми грешка, че няма такова поле email в таблицата movies.

stonybg
Турист
Турист
Posts: 201
Joined: Sun Apr 13, 2008 2:07 pm
Answers: 13

Post by stonybg » Tue Sep 17, 2013 1:45 pm

Да прав си:
Не съм го тествал но това е принципа има и още доста варияций за търсене:
[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
}
}
[/php]
deam0n wrote:Добра идея е да се направят масиви с полетата. Защото ако търсиш в таблица users и имаш хардкоднато email LIKE ... няма проблем. Но ако потребителя избере таблицата movies примерно, ще изгърми грешка, че няма такова поле email в таблицата movies.

Post Reply