Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Помощ за търсачка

Featured Replies

Ето кода ми.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-88">
<title>Търсене</title>
<form name='search' method='GET'>
Търсене: <input type='text' name='duma' />
<select name='table'>
<option value="program">program</option>
<option value="news">news</option>
</select>
<br /><input type='submit' name='submit' value='Търси' /><br />
<form>
<<?
include("conf.php");
$button = $_GET ['submit'];

$duma = $_GET['duma'];
$table = $_GET['table'];



if (strlen($duma) < 4) {
echo "Трябва да въведете повече от 4 символа.";
}
else {
	$constructs ="SELECT * FROM '$table' namepr, name LIKE'%$duma%'";
$run = $conn->query($constructs);
    
$foundnum =  $run->num_rows; 
    

  
$per_page = 1;
$start = isset($_GET['start']) ? $_GET['start']: '';
$max_pages = ceil($foundnum / $per_page);
if(!$start)
$start=0; 
$sql = "LIMIT $start, $per_page" ;
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "Name: " . $row["namepr"]. "<br>";
		        echo "Name: " . $row["name"]. "<br>";

		
    }
} else {
    echo "0 results";
}

Но търсачката не работи. Искам да мога да търсия и в двете таблици , но да избирам в коя таблица да търся.

  • Автор

Как да направя търсачка която да търси в два таблици? С опция за избор на таблица в която да търси

Как да направя търсачка която да търси в два таблици? С опция за избор на таблица в която да търси

 

Не работи, защото имаш елементарни грешки в кода.

Виж как отваряш php кода ?

А къде го затваряш ?

Търси си грешките, които се извеждат в браузъра поне !

  • Автор

Проблема не е от това По надоло го затварям, че имам странициране а в браузъра не дава грешка. А това пише на адрес бара search.php?duma=test&table=program&submit=Търси

  • Автор

Значи трябва да е така ли?

if (strlen($duma) < 4) {
echo "Трябва да въведете повече от 4 символа.";

else {
}

 

Значи трябва да е така ли?

if (strlen($duma) < 4) {
echo "Трябва да въведете повече от 4 символа.";

else {
}

 

Не знам. Кодът е твой. Ти не показваш целия файл, а само част от него.

Възможно е да се затваря и някъде по-надолу.

Но пак ти казвам - оправи си първо грешките из кода и обясни какво означава "търсачката не работи".

  • Автор

Ето целя код!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-88">
<title>Търсене</title>
<form name='search' method='GET'>
Търсене: <input type='text' name='duma' />
<select name='table'>
<option value="program">program</option>
<option value="news">news</option>
</select>
<br /><input type='submit' name='submit' value='Търси' /><br />
<form>
<?
include("conf.php");
$button = $_GET ['submit'];

$duma = $_GET['duma'];
$table = $_GET['table'];



if (strlen($duma) < 4) {
echo "Трябва да въведете повече от 4 символа.";
}
else {
	$constructs ="SELECT * FROM '$table' namepr, name LIKE'%$duma%'";
$run = $conn->query($constructs);
    
$foundnum =  $run->num_rows; 
    

  
$per_page = 1;
$start = isset($_GET['start']) ? $_GET['start']: '';
$max_pages = ceil($foundnum / $per_page);
if(!$start)
$start=0; 
$sql = "SELECT * FROM '$table' namepr, name LIKE'%$duma%' LIMIT $start, $per_page" ;
result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "Name: " . $row["namepr"]. "<br>";
		        echo "Name: " . $row["name"]. "<br>";

		
    }
} else {
    echo "0 results";
}
echo "<center>";
  
$prev = $start - $per_page;
$next = $start + $per_page;
                       
$adjacents = 3;
$last = $max_pages - 1;
  
if($max_pages > 1)
{   
//previous button
if (!($start<=0)) 
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$prev'>Prev</a> ";    
          
//pages 
if ($max_pages < 7 + ($adjacents * 2))   //not enough pages to bother breaking it up
{
$i = 0;   
for ($counter = 1; $counter <= $max_pages; $counter++)
{
if ($i == $start){
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$i'><b>$counter</b></a> ";
}
else {
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$i'>$counter</a> ";
}  
$i = $i + $per_page;                 
}
}
elseif($max_pages > 5 + ($adjacents * 2))    //enough pages to hide some
{
//close to beginning; only hide later pages
if(($start/$per_page) < 1 + ($adjacents * 2))        
{
$i = 0;
for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
{
if ($i == $start){
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$i'><b>$counter</b></a> ";
}
else {
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$i'>$counter</a> ";
} 
$i = $i + $per_page;                                       
}
                          
}
//in middle; hide some front and some back
elseif($max_pages - ($adjacents * 2) > ($start / $per_page) && ($start / $per_page) > ($adjacents * 2))
{
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=0'>1</a> ";
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$per_page'>2</a> .... ";
 
$i = $start;                 
for ($counter = ($start/$per_page)+1; $counter < ($start / $per_page) + $adjacents + 2; $counter++)
{
if ($i == $start){
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$i'><b>$counter</b></a> ";
}
else {
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$i'>$counter</a> ";
}   
$i = $i + $per_page;                
}
                                  
}
//close to end; only hide early pages
else
{
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=0'>1</a> ";
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$per_page'>2</a> .... ";
 
$i = $start;                
for ($counter = ($start / $per_page) + 1; $counter <= $max_pages; $counter++)
{
if ($i == $start){
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$i'><b>$counter</b></a> ";
}
else {
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$i'>$counter</a> ";   
} 
$i = $i + $per_page;              
}
}
}
          
//next button
if (!($start >=$foundnum-$per_page))
echo " <a href='search.php?search=$search&duma=$duma&Търси&start=$next'>Next</a> ";    
}   
echo "</center>";
} 




?>

"търсачката не работи"  означава, че като напиша нещо в търсачката и избера таблица и дам търсене ми дава това 0 results.

А защо не използваш WHERE в SQL заявките ?

 

$sql = "SELECT * FROM '$table' namepr, name where (namepr LIKE'%$duma%') or (name LIKE'%$duma%') LIMIT $start, $per_page" ;

 

Малко по-нагоре имаш още една подобна заявка.

  • Автор
$sql = "SELECT * FROM '$table' namepr, name where (namepr LIKE'%$duma%') or (name LIKE'%$duma%') LIMIT $start, $per_page" ;

Промених го така и пак не търси

$sql = "SELECT * FROM '$table' namepr, name where (namepr LIKE'%$duma%') or (name LIKE'%$duma%') LIMIT $start, $per_page" ;

Промених го така и пак не търси

 

 

Хайде промени го тогава така :

 

$sql = "SELECT * FROM '$table' where (namepr LIKE'%$duma%') or (name LIKE'%$duma%') LIMIT $start, $per_page" ;

Научи се да пишеш сам кода си.

Не се доверявай сляпо на всичко, което ти дадат.

  • Автор

Ето целя код!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-88">
<title>Търсене</title>
<form name='search' method='GET'>
Търсене: <input type='text' name='duma' />
<select name='table'>
<option value="program">program</option>
<option value="news">news</option>
</select>
<br /><input type='submit' name='submit' value='Търси' /><br />
<form>
<?
include("conf.php");
$button = $_GET ['submit'];

$duma = $_GET['duma'];
$table = $_GET['table'];



if (strlen($duma) < 4) {
echo "Трябва да въведете повече от 4 символа.";
}
else {
	$constructs ="SELECT * FROM '$table' namepr, name LIKE'%$duma%'";
$run = $conn->query($constructs);
    
$foundnum =  $run->num_rows; 
    

  
$per_page = 1;
$start = isset($_GET['start']) ? $_GET['start']: '';
$max_pages = ceil($foundnum / $per_page);
if(!$start)
$start=0; 
$sql = "SELECT * FROM '$table' namepr, name LIKE'%$duma%' LIMIT $start, $per_page" ;
result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "Name: " . $row["namepr"]. "<br>";
		        echo "Name: " . $row["name"]. "<br>";

		
    }
} else {
    echo "0 results";
}
echo "<center>";
  
$prev = $start - $per_page;
$next = $start + $per_page;
                       
$adjacents = 3;
$last = $max_pages - 1;
  
if($max_pages > 1)
{   
//previous button
if (!($start<=0)) 
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$prev'>Prev</a> ";    
          
//pages 
if ($max_pages < 7 + ($adjacents * 2))   //not enough pages to bother breaking it up
{
$i = 0;   
for ($counter = 1; $counter <= $max_pages; $counter++)
{
if ($i == $start){
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$i'><b>$counter</b></a> ";
}
else {
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$i'>$counter</a> ";
}  
$i = $i + $per_page;                 
}
}
elseif($max_pages > 5 + ($adjacents * 2))    //enough pages to hide some
{
//close to beginning; only hide later pages
if(($start/$per_page) < 1 + ($adjacents * 2))        
{
$i = 0;
for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
{
if ($i == $start){
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$i'><b>$counter</b></a> ";
}
else {
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$i'>$counter</a> ";
} 
$i = $i + $per_page;                                       
}
                          
}
//in middle; hide some front and some back
elseif($max_pages - ($adjacents * 2) > ($start / $per_page) && ($start / $per_page) > ($adjacents * 2))
{
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=0'>1</a> ";
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$per_page'>2</a> .... ";
 
$i = $start;                 
for ($counter = ($start/$per_page)+1; $counter < ($start / $per_page) + $adjacents + 2; $counter++)
{
if ($i == $start){
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$i'><b>$counter</b></a> ";
}
else {
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$i'>$counter</a> ";
}   
$i = $i + $per_page;                
}
                                  
}
//close to end; only hide early pages
else
{
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=0'>1</a> ";
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$per_page'>2</a> .... ";
 
$i = $start;                
for ($counter = ($start / $per_page) + 1; $counter <= $max_pages; $counter++)
{
if ($i == $start){
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$i'><b>$counter</b></a> ";
}
else {
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$i'>$counter</a> ";   
} 
$i = $i + $per_page;              
}
}
}
          
//next button
if (!($start >=$foundnum-$per_page))
echo " <a href='search.php?search=$search&duma=$duma&Търси&start=$next'>Next</a> ";    
}   
echo "</center>";
} 




?>

"търсачката не работи"  означава, че като напиша нещо в търсачката и избера таблица и дам търсене ми дава това 0 results.

Ето ми кода

  • Автор

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-88">
<title>Търсене</title>
<form name='search' method='GET'>
Търсене: <input type='text' name='duma' />
<select name='table'>
<option value="program">program</option>
<option value="news">news</option>
</select>
<br /><input type='submit' name='submit' value='Търси' /><br />
<form>
<?
include("conf.php");
$button = $_GET ['submit'];

$duma = $_GET['duma'];
$table = $_GET['table'];



if (strlen($duma) < 4) {
echo "Трябва да въведете повече от 4 символа.";
}
else {
	$constructs ="SELECT * FROM $table  where (namepr LIKE'%$duma%')or (name LIKE'%$duma%')   ";
$run = $conn->query($constructs);
    
$foundnum =  $run->num_rows; 
    

  
$per_page = 1;
$start = isset($_GET['start']) ? $_GET['start']: '';
$max_pages = ceil($foundnum / $per_page);
if(!$start)
$start=0; 
$sql = "SELECT * FROM $table  where (namepr LIKE'%$duma%')or (name LIKE'%$duma%')  LIMIT $start, $per_page" ;
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "Name: " . $row["namepr"]. "<br>";
		        echo "Name: " . $row["name"]. "<br>";

		
    }
} else {
    echo "0 results";
}
echo "<center>";
  
$prev = $start - $per_page;
$next = $start + $per_page;
                       
$adjacents = 3;
$last = $max_pages - 1;
  
if($max_pages > 1)
{   
//previous button
if (!($start<=0)) 
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$prev'>Prev</a> ";    
          
//pages 
if ($max_pages < 7 + ($adjacents * 2))   //not enough pages to bother breaking it up
{
$i = 0;   
for ($counter = 1; $counter <= $max_pages; $counter++)
{
if ($i == $start){
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$i'><b>$counter</b></a> ";
}
else {
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$i'>$counter</a> ";
}  
$i = $i + $per_page;                 
}
}
elseif($max_pages > 5 + ($adjacents * 2))    //enough pages to hide some
{
//close to beginning; only hide later pages
if(($start/$per_page) < 1 + ($adjacents * 2))        
{
$i = 0;
for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
{
if ($i == $start){
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$i'><b>$counter</b></a> ";
}
else {
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$i'>$counter</a> ";
} 
$i = $i + $per_page;                                       
}
                          
}
//in middle; hide some front and some back
elseif($max_pages - ($adjacents * 2) > ($start / $per_page) && ($start / $per_page) > ($adjacents * 2))
{
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=0'>1</a> ";
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$per_page'>2</a> .... ";
 
$i = $start;                 
for ($counter = ($start/$per_page)+1; $counter < ($start / $per_page) + $adjacents + 2; $counter++)
{
if ($i == $start){
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$i'><b>$counter</b></a> ";
}
else {
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$i'>$counter</a> ";
}   
$i = $i + $per_page;                
}
                                  
}
//close to end; only hide early pages
else
{
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=0'>1</a> ";
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$per_page'>2</a> .... ";
 
$i = $start;                
for ($counter = ($start / $per_page) + 1; $counter <= $max_pages; $counter++)
{
if ($i == $start){
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$i'><b>$counter</b></a> ";
}
else {
echo " <a href='search.php?search=$search&duma=$duma&submit=Search+source+code&start=$i'>$counter</a> ";   
} 
$i = $i + $per_page;              
}
}
}
          
//next button
if (!($start >=$foundnum-$per_page))
echo " <a href='search.php?search=$search&duma=$duma&table=$table&Търси&start=$next'>Next</a> ";    
}   
echo "</center>";
} 




?>

Ето ми кода. Ако променя заявките така търси $sql = "SELECT * FROM $table  where (namepr LIKE'%$duma%')  LIMIT $start, $per_page" ; Само в таблица програми, но ако променя това namepr на name търси в таблица новини. Как да оправя заявката та да търси в поле на таблица новини.

 

  • Автор

Пробах заявките така.

 $constructs ="SELECT * FROM $table  where (namepr OR name LIKE'%$duma%')   ";

$sql = "SELECT * FROM $table  where (namepr OR name LIKE'%$duma%')  LIMIT $start, $per_page" ;

И така.

 $constructs ="SELECT * FROM $table  where (namepr LIKE'%$duma%') OR  (name LIKE'%$duma%')";
$sql = "SELECT * FROM $table  where (namepr  LIKE'%$duma%') OR  (name LIKE'%$duma%') LIMIT $start, $per_page" ;


И по двата начина не търси.

В съответствие с избраната таблица променяш името и в заявката.

Променяй и името на полето, по което ще търсиш, ако е необходимо.

Нали си съгласен, че няма как да знам коя твоя таблица, какви полета има ?

  • Автор

Ще сложа защита щом търсачката я завърша. 

Търсачката трябва да търси в две таблици. Едната таблица е news  колона за търсене е name тип на полето varchar(255).

Втората таблица е program  колона за търсене е namepr тип на полето varchar(255).

Ще сложа защита щом търсачката я завърша. 

Търсачката трябва да търси в две таблици. Едната таблица е news  колона за търсене е name тип на полето varchar(255).

Втората таблица е program  колона за търсене е namepr тип на полето varchar(255).

 

https://dev.mysql.com/doc/refman/5.0/en/union.html

  • Автор

Пробвах и с UNION заявките и пак не намира нищо. Ето как пробвах заявките.

 $constructs ="(SELECT namepr FROM $table  where (namepr LIKE'%$duma%'))  UNION  (SELECT name FROM $table  where (name LIKE'%$duma%'))";

 

$sql = "(SELECT namepr FROM $table  where (namepr LIKE'%$duma%') ) UNION  (SELECT name FROM $table  where (name LIKE'%$duma%')) LIMIT $start, $per_page" ;

 

UNION заявката е ако ще търсиш едновременно в двете таблици. Тогава ще е нещо такова:

(SELECT namepr as name FROM table1  where (namepr LIKE'%$duma%'))  UNION  (SELECT name FROM table2  where (name LIKE'%$duma%'))

Таблиците трябва да са указани със съответните си имена, а не с $table. Ти реално гледаш в една таблица за несъществуващо име.

 

Ако ще търсиш само в една, като заместваш името на таблицата, замествай и името на полето. И нямаш нужда от UNION

 

Когато е избрана едната таблица ще имаш:

SELECT namepr as name FROM $table  where (namepr LIKE'%$duma%')

А когато е другата :

SELECT name as name FROM $table  where (namepr LIKE'%$duma%')

Редактирано от Ken (преглед на промените)

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    26%
    Дарени 256.00 EUR от нужните 1,000.00 EUR

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.