Търсачка в базата данни

Долното е кода.
Пробвай да видя какво ще стане.
В зелено е добавеното от мен ( не е много но ще помогне).


<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<link rel="stylesheet" href="/style.css" type="text/css">
<title></title>

</head>
<body>
<form action="index.php" method="get">
<INPUT TYPE=TEXT NAME="search"size="25">
<INPUT TYPE=SUBMIT value="Търси!">
</form>

<
<?php

require ("config.php");
$search=$_GET['search'];
mysql_connect(localhost,$dbusername,$dbpass);
mysql_select_db($dbname) or die( "Unable to select database");

// определяме колко реда да ни показва. В случая 20 на страница.
$broinastranica = 10;

// от коя страница да почне да показва.Може да искаме да е от втора или от последна.
$pageNum = 1;

// ако има получени данни $_GET['page'] ще покаже страницата с номер $_GET['page']
if(isset($_GET['page']))
{
$pageNum = $_GET['page'];
}

// проверяваме таблицата колко редове има
$chars="SET CHARACTER SET cp1251";mysql_query($chars);
$query = "SELECT COUNT(id) AS numrows FROM story where text like '$search' ";
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];


$maxPage = ceil($numrows/$broinastranica);

$self = $_SERVER['PHP_SELF'];
$nomeranastranici = '';
echo '<center><font face="Tahoma" style="font-size: 8pt">Страници:</font> ';
for($page = 1; $page <= $maxPage; $page++)
{
if ($page == $pageNum)
{
$nomeranastranici .= "<font face=\"Tahoma\" style=\"font-size: 8pt\">$page</font>";
}
else
{
$nomeranastranici .= " <font face=\"Tahoma\" style=\"font-size: 8pt\"><a href=\"$self?page=$page\">$page</a> </font>";
}
}

// създаване на ликовете [предишна] [следваща]
// както и линковете [първа] и [последна]

if ($pageNum > 1)
{
$page = $pageNum - 1;
$predishna = "<font face=\"Tahoma\" style=\"font-size: 8pt\"><a href=\"$self?page=$page\">[<<<<<]</a> </font>";

$parva = "<font face=\"Tahoma\" style=\"font-size: 8pt\"><a href=\"$self?page=1\">[първа]</a> </font>";
}
else
{
$predishna = ' ';
$parva = ' ';
}

if ($pageNum < $maxPage)
{
$page = $pageNum + 1;
$sledvashta = "<font face=\"Tahoma\" style=\"font-size: 8pt\"><a href=\"$self?page=$page\">[>>>>>]</a> </font>";

$posledna = "<font face=\"Tahoma\" style=\"font-size: 8pt\"><a href=\"$self?page=$maxPage\">[последна]</a></font>";
}
else
{
$sledvashta = ' ';
$posledna = ' ';
}

// показваме всички страници
echo $parva . $predishna . $nomeranastranici . $sledvashta . $posledna;



echo '<hr color=#BAC97F size=1>';
echo '</center>';
echo "<center><font face='Tahoma' style='font-size: 8pt'><a target='I1' href='./add.php'>Добави...</a></font>";
//тука определяме кои редове ще се показват - примерно ако $_GET['page']=2
// ще покаже от 20 до 40-ти ред.
$redove = ($pageNum - 1) * $broinastranica;
//заявката ще върне само посочените редове - примерно от 20 до 40 в зависимост от $_GET['page']
$chars="SET CHARACTER SET cp1251";mysql_query($chars);
$query = " SELECT* FROM story where text like '$search' ORDER BY posted DESC " .
" LIMIT $redove, $broinastranica";
$result = mysql_query($query) or die('Error, query failed');

echo "<table border=0>";
// print-ваме посочените редове в таблица.
while($row = mysql_fetch_array($result))
{
$id=$row[0];
$name=$row[2];
$text=$row[3];
$posted=$row[1];
$na=$row[4];

echo "<br><br</center><table width='700' align='center' style='border: 1px dotted #BAC97F' cellpadding='0' cellspacing='1'>
<tr><td width='700' bordercolor='#000000' bgcolor='#BAC97F'><font face='Tahoma' style='font-size: 8pt'><b>Добавено от: <b><i>".$name."</i></font></td>
<tr><td width='700' bordercolor='#FFFFFF' bgcolor='#FFFFFF'><div align='left'><font face='Tahoma' style='font-size: 8pt'>".$text."</font></div><div align='right'><p><font face='Tahoma' style='font-size: 9pt'>".$na."</font></div></td></table><br>";
}

echo"</table>";


?>

 
А това:

$search=$_GET['search'];

идва от друг файл в който в input с name="search" се пише това което търсим нали така?

Нещо такова:

Код:
<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<link rel="stylesheet" href="/style.css" type="text/css">
<title></title> 
</head>
<body>
<form method="POST" action="search.php">
<font face="Tahoma" style="font-size: 9pt">Търси:</font> <input class="textfield" type="text" name="search" size="30"></font>
<br><br>
</form>
</body>
</html>
 
Ето.

Това трябва да ти е index.php .



<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<link rel="stylesheet" href="/style.css" type="text/css">
<title></title>

</head>
<body>
<form action="index.php" method="get">
<INPUT TYPE=TEXT NAME="search"size="25">
<INPUT TYPE=SUBMIT value="Търси!">
</form>

<
<?php

require ("config.php");
$search=$_GET['search'];
mysql_connect(localhost,$dbusername,$dbpass);
mysql_select_db($dbname) or die( "Unable to select database");

// определяме колко реда да ни показва. В случая 20 на страница.
$broinastranica = 10;

// от коя страница да почне да показва.Може да искаме да е от втора или от последна.
$pageNum = 1;

// ако има получени данни $_GET['page'] ще покаже страницата с номер $_GET['page']
if(isset($_GET['page']))
{
$pageNum = $_GET['page'];
}

// проверяваме таблицата колко редове има
$chars="SET CHARACTER SET cp1251";mysql_query($chars);
$query = "SELECT COUNT(id) AS numrows FROM story where text like '%$search%' ";
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];


$maxPage = ceil($numrows/$broinastranica);

$self = $_SERVER['PHP_SELF'];
$nomeranastranici = '';
echo '<center><font face="Tahoma" style="font-size: 8pt">Страници:</font> ';
for($page = 1; $page <= $maxPage; $page++)
{
if ($page == $pageNum)
{
$nomeranastranici .= "<font face=\"Tahoma\" style=\"font-size: 8pt\">$page</font>";
}
else
{
$nomeranastranici .= " <font face=\"Tahoma\" style=\"font-size: 8pt\"><a href=\"$self?page=$page\">$page</a> </font>";
}
}

// създаване на ликовете [предишна] [следваща]
// както и линковете [първа] и [последна]

if ($pageNum > 1)
{
$page = $pageNum - 1;
$predishna = "<font face=\"Tahoma\" style=\"font-size: 8pt\"><a href=\"$self?page=$page\">[<<<<<]</a> </font>";

$parva = "<font face=\"Tahoma\" style=\"font-size: 8pt\"><a href=\"$self?page=1\">[първа]</a> </font>";
}
else
{
$predishna = ' ';
$parva = ' ';
}

if ($pageNum < $maxPage)
{
$page = $pageNum + 1;
$sledvashta = "<font face=\"Tahoma\" style=\"font-size: 8pt\"><a href=\"$self?page=$page\">[>>>>>]</a> </font>";

$posledna = "<font face=\"Tahoma\" style=\"font-size: 8pt\"><a href=\"$self?page=$maxPage\">[последна]</a></font>";
}
else
{
$sledvashta = ' ';
$posledna = ' ';
}

// показваме всички страници
echo $parva . $predishna . $nomeranastranici . $sledvashta . $posledna;



echo '<hr color=#BAC97F size=1>';
echo '</center>';
echo "<center><font face='Tahoma' style='font-size: 8pt'><a target='I1' href='./add.php'>Добави...</a></font>";
//тука определяме кои редове ще се показват - примерно ако $_GET['page']=2
// ще покаже от 20 до 40-ти ред.
$redove = ($pageNum - 1) * $broinastranica;
//заявката ще върне само посочените редове - примерно от 20 до 40 в зависимост от $_GET['page']
$chars="SET CHARACTER SET cp1251";mysql_query($chars);
$query = " SELECT* FROM story where text like '%$search%' ORDER BY posted DESC " .
" LIMIT $redove, $broinastranica";
$result = mysql_query($query) or die('Error, query failed');

echo "<table border=0>";
// print-ваме посочените редове в таблица.
while($row = mysql_fetch_array($result))
{
$id=$row[0];
$name=$row[2];
$text=$row[3];
$posted=$row[1];
$na=$row[4];

echo "<br><br</center><table width='700' align='center' style='border: 1px dotted #BAC97F' cellpadding='0' cellspacing='1'>
<tr><td width='700' bordercolor='#000000' bgcolor='#BAC97F'><font face='Tahoma' style='font-size: 8pt'><b>Добавено от: <b><i>".$name."</i></font></td>
<tr><td width='700' bordercolor='#FFFFFF' bgcolor='#FFFFFF'><div align='left'><font face='Tahoma' style='font-size: 8pt'>".$text."</font></div><div align='right'><p><font face='Tahoma' style='font-size: 9pt'>".$na."</font></div></td></table><br>";
}

echo"</table>";


?>

 
cold_zero каза:
Работи!

А ще ми кажеш ли дали мога да си оправя старите записи????

Ами записани са с някакъв странен енкодинг.
НЕ съм се сблъсквал с такъв проблем и незнам дали има решение. :?
 
За проба се опитах да върна старата колация, но пак се получават ?????? ???? :cry:

Имам въпросче относно търсачката, а ако искам да търся и в колонка "kategoria" как ще стане?

Код:
$kategoria=$_GET['kategoria'];
и
Код:
$query = "SELECT COUNT(id) AS numrows FROM story where text like '%$search%'  and kategoria = '$kategoria'";
 
Може и така да го направиш файла.
Виж това в червеното дето съм добавил.
За да ти пише нещо, когато няма резултати.


<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<link rel="stylesheet" href="/style.css" type="text/css">
<title></title>

</head>
<body>
<form action="index.php" method="get">
<INPUT TYPE=TEXT NAME="search"size="25">
<INPUT TYPE=SUBMIT value="Търси!">
</form>

<
<?php

require ("config.php");
$search=$_GET['search'];
mysql_connect(localhost,$dbusername,$dbpass);
mysql_select_db($dbname) or die( "Unable to select database");

// определяме колко реда да ни показва. В случая 20 на страница.
$broinastranica = 10;

// от коя страница да почне да показва.Може да искаме да е от втора или от последна.
$pageNum = 1;

// ако има получени данни $_GET['page'] ще покаже страницата с номер $_GET['page']
if(isset($_GET['page']))
{
$pageNum = $_GET['page'];
}

// проверяваме таблицата колко редове има
$chars="SET CHARACTER SET cp1251";mysql_query($chars);
$query = "SELECT COUNT(id) AS numrows FROM story where text like '%$search%' ";
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];
if ($numrows<1)
{echo "Няма намерени резултати";}


$maxPage = ceil($numrows/$broinastranica);

$self = $_SERVER['PHP_SELF'];
$nomeranastranici = '';
echo '<center><font face="Tahoma" style="font-size: 8pt">Страници:</font> ';
for($page = 1; $page <= $maxPage; $page++)
{
if ($page == $pageNum)
{
$nomeranastranici .= "<font face=\"Tahoma\" style=\"font-size: 8pt\">$page</font>";
}
else
{
$nomeranastranici .= " <font face=\"Tahoma\" style=\"font-size: 8pt\"><a href=\"$self?page=$page\">$page</a> </font>";
}
}

// създаване на ликовете [предишна] [следваща]
// както и линковете [първа] и [последна]

if ($pageNum > 1)
{
$page = $pageNum - 1;
$predishna = "<font face=\"Tahoma\" style=\"font-size: 8pt\"><a href=\"$self?page=$page\">[<<<<<]</a> </font>";

$parva = "<font face=\"Tahoma\" style=\"font-size: 8pt\"><a href=\"$self?page=1\">[първа]</a> </font>";
}
else
{
$predishna = ' ';
$parva = ' ';
}

if ($pageNum < $maxPage)
{
$page = $pageNum + 1;
$sledvashta = "<font face=\"Tahoma\" style=\"font-size: 8pt\"><a href=\"$self?page=$page\">[>>>>>]</a> </font>";

$posledna = "<font face=\"Tahoma\" style=\"font-size: 8pt\"><a href=\"$self?page=$maxPage\">[последна]</a></font>";
}
else
{
$sledvashta = ' ';
$posledna = ' ';
}

// показваме всички страници
echo $parva . $predishna . $nomeranastranici . $sledvashta . $posledna;



echo '<hr color=#BAC97F size=1>';
echo '</center>';
echo "<center><font face='Tahoma' style='font-size: 8pt'><a target='I1' href='./add.php'>Добави...</a></font>";
//тука определяме кои редове ще се показват - примерно ако $_GET['page']=2
// ще покаже от 20 до 40-ти ред.
$redove = ($pageNum - 1) * $broinastranica;
//заявката ще върне само посочените редове - примерно от 20 до 40 в зависимост от $_GET['page']
$chars="SET CHARACTER SET cp1251";mysql_query($chars);
$query = " SELECT* FROM story where text like '%$search%' ORDER BY posted DESC " .
" LIMIT $redove, $broinastranica";
$result = mysql_query($query) or die('Error, query failed');

echo "<table border=0>";
// print-ваме посочените редове в таблица.
while($row = mysql_fetch_array($result))
{
$id=$row[0];
$name=$row[2];
$text=$row[3];
$posted=$row[1];
$na=$row[4];

echo "<br><br</center><table width='700' align='center' style='border: 1px dotted #BAC97F' cellpadding='0' cellspacing='1'>
<tr><td width='700' bordercolor='#000000' bgcolor='#BAC97F'><font face='Tahoma' style='font-size: 8pt'><b>Добавено от: <b><i>".$name."</i></font></td>
<tr><td width='700' bordercolor='#FFFFFF' bgcolor='#FFFFFF'><div align='left'><font face='Tahoma' style='font-size: 8pt'>".$text."</font></div><div align='right'><p><font face='Tahoma' style='font-size: 9pt'>".$na."</font></div></td></table><br>";
}

echo"</table>";


?>

 
За проба се опитах да върна старата колация, но пак се получават ?????? ???? :cry:

Имам въпросче относно търсачката, а ако искам да търся и в колонка "kategoria" как ще стане?

Код:
$kategoria=$_GET['kategoria'];
и
Код:
$query = "SELECT COUNT(id) AS numrows FROM story where text like '%$search%'  and kategoria = '$kategoria'";
 
cold_zero каза:
За проба се опитах да върна старата колация, но пак се получават ?????? ???? :cry:

Имам въпросче относно търсачката, а ако искам да търся и в колонка "kategoria" как ще стане?

Код:
$kategoria=$_GET['kategoria'];
и
Код:
$query = "SELECT COUNT(id) AS numrows FROM story where text like '%$search%'  and kategoria = '$kategoria'";

По-скоро така :


$kategoria=$_GET['kategoria'];
и
$query = "SELECT COUNT(id) AS numrows FROM story where text like '%$search%' OR kategoria = '$kategoria'";

Ако е AND ще проверява дали търсената дума я има и в двете полета.
Искам да кажа, че ако я няма в едното поле няма да даде никакъв резултат.

Ако сложиш OR ще дава резултати дори ако търсената дума я има в едно от двете полета.
Разбираш нали?

И трябва и двете полета да са в една таблица ...
Таблицата story .
Нали?
 
ScreenShot019.gif


?
 
cold_zero каза:
Аха ясно :)

А защо не искат да се оправят тия ???? ???? като си върна старата колация :(

Защото, вече са омазани данните в самата база :(
Надявам се имаш архиви?
 
Мне :lol: не ми пречи да ги добавя на ново ще си играя 20-30 минути...но да знам за напред да не пипам по другите база данни :wink:

И да питам още нещо, за да не правя нова тема. Имам следния код
Код:
<select name="sex" size="1">
  <option <? if($v_sex=='choose'){echo 'selected';} ?>></option>
  <option <? if($v_sex=='male'){echo 'selected';} ?>>Мъж</option>
  <option <? if($v_sex=='female'){echo 'selected';} ?>>Жена</option>
  <option <? if($v_sex=='dvete'){echo 'selected';} ?>>И двете ;)</option>
        </select>

Това е код като някой си влезе в профила, за да редактира данните си, та мисълта ми е как да излиза селектираното при регистрация, а не пъртово което е празно?
 

Back
Горе