Проблем с търсачка в бази данни

mexx

Registered
Имам създадена база от данни с обяви и искам чрез търсачка да ги извлича по "град" и по "заглавие" (на обявата). Обаче скрипта дава грешка Error, query failed.
Ако имате идея къде греша - помагайте !

<?php

$tarsene = $_GET['search'];

$host = "localhost";
$db_username = "root";
$db_password = "parola";
$db_name = "test";

$con=mysql_connect("localhost", "root", "parola")or die("Can`t connect to DB");
mysql_select_db("test", $con) or die("cannot select DB");
$sql = mysql_query(" SELECT * FROM ads WHERE city LIKE '%$tarsene%' OR title LIKE '%$title%''") or die('Error, query failed');

$row = mysql_numrows($sql);

echo "Results for: <b><i>$tarsene</i></b>";
echo "<br />";
while($row = mysql_fetch_row($sql))
{
echo $row['city'].'<br>'.$row['title'].'<br>';

$city=$row['city'];
$title=$row['title'];

echo "$city<br />";
echo "$title<br />";
}


?>
 
$sql = mysql_query(" SELECT * FROM ads WHERE city LIKE '%$tarsene%' OR title LIKE '%$title%''") or die('Error, query failed');

трябва да е :

$sql = mysql_query(" SELECT * FROM ads WHERE city LIKE '%$tarsene%' OR title LIKE '%$title%'") or die('Error, query failed');
 
Веднага се съгласявам, но стигам до половината. Извежда "Резултат за:Пловдив" (например) обаче не извежда от базата резултат ... Къде е проблема?
 
Аз искам да вади резултат по
$city=$_POST['city']
$title=$_POST['title']

Вярно съм ги изял, но ги довабих..но резултат няма пак ... Само това изпънява:

$con=mysql_connect("localhost", "root", "parola")or die("Can`t connect to DB");
mysql_select_db("test", $con) or die("cannot select DB");
$sql = mysql_query(" SELECT * FROM ads WHERE city LIKE '%$tarsene%' OR title LIKE '%$tarsene%' ") or die('Error, query failed');

$row = mysql_numrows($sql);

echo "Results for: <b><i>$tarsene</i></b>";
echo "<br />";
 
хах .. :)
може би щото
mysql_fetch_row
връща цифрен масив :)
т.е.
$row['title'] и тем подобни ще са от рода на $row[0] $row[1] и тн в зависимост от полетата
ако ти е по лесно във while пиши print_r($row);
така ще разбереш коя цифра за кое се отнася.
:?:
 
еми вий какво задаваш и след това какво викаш.

$city=$_POST['city']
$title=$_POST['title']

(" SELECT * FROM ads WHERE city LIKE '%$tarsene%' OR title LIKE '%$tarsene%' ")

направи го така:

WHERE city LIKE '%$city%' OR title LIKE '%$title%'

П.П. bafitu той бърка още в зачвката за търсене
 
jooorooo , не
той каза , че заявката е минала извеждала му точно до цикъла където е while просто в масива няма $row['city'] или другото и връща NULL т.е. празна променлива затова и не вижда резултата.
Просто трябва с цифрички...

Ако иска да е с думи да направи така:

заменяш:

while($row = mysql_fetch_row($sql))
с

while ($row = mysql_fetch_assoc($sql))
 
Здравейте,

bafitu позна къде е ключа за палатката както се казва :) Това реши проблема - сега се извеждат само имената на градовета от базата.

А ако искам от базата да се извеждат обявите свързани с всеки град как трябва да го направя ?
 
ами това title какво е ?
Значи в момента ако напишеш
while($row = ...) {
print_r($row);
}
и ще ти изкара всички записи от таблицата в зависмост от критерия който си дал в заявката.
с print_r ще видиш нещо от рода на :
Array ( [city] => Burgas , [title] => edi kvo si ... )
Надявам се ще се оправиш , а ако не покажи структурата на таблицата и кажи в кое поле държиш обявите ?
 
Ето това е кода ми сега:

<?php

$tarsene = $_GET['search'];
$city = $_GET['city'];
$text=$_GET['text'];

$host = "localhost";
$db_username = "root";
$db_password = "parola";
$db_name = "test";

$con=mysql_connect("localhost", "root", "parola")or die("Can`t connect to DB");
mysql_select_db("test", $con) or die("cannot select DB");
$sql = mysql_query(" SELECT * FROM ads WHERE city LIKE '%$tarsene%' OR title LIKE '%$title%' ") or die('Error, query failed');

$row = mysql_numrows($sql);

echo "Results for: <b><i>$tarsene</i></b>";
echo "<br />";
while($row = mysql_fetch_assoc($sql))
{
echo $row['city'].'-'.$row['text'].'<br>';

$city=$row['city'];
$text=$row['text'];


}

?>

базата ми има полета - град, заглавие и текст. Сега като пиша Бургас вади всички записи за всички градове, а аз искам само за Бургас ...
 
значи виж сега.
1-во. никъде не си задал в заявката да филтрира по град. само таитъл и търсене.
2-ро. малко е лошо структурирано. аз лично бих направил градовете в отделна таблица. и при въвеждане на обявата да се избира град с дпоп меню, също при търсенето да се ползва дроп меню.

П.П. вий какво си направил...

$tarsene = $_GET['search'];
$city = $_GET['city'];
$text=$_GET['text'];

(" SELECT * FROM ads WHERE city LIKE '%$tarsene%' OR title LIKE '%$title%' ")

виж какво присвояваш: tarsene, city и text, а какво се мъчиш да филтрираш: tarsene или title. единствено титле съвпада със заявката.[/code]
 
$sql = mysql_query(" SELECT * FROM ads WHERE city LIKE '%$city%' OR text LIKE '%$text%'") or die('Error, query failed');

$row = mysql_numrows($sql);

echo "Намерени резултати за: <b><i>$tarsene</i></b>";
echo "<br />";
while($row = mysql_fetch_assoc($sql))
{
echo $row['city'].'-'.$row['text'].';'.'<br>';

$city=$row['city'];
$text=$row['text'];

Е хубу де как до го направя този филтър да вади обявите закачени за определен град? ... сега ми вади всички градове със обявите, отнасящи се за тях ...
Наистина вече се бъгнах и аз :)
 
Код:
$tarsene = $_GET['search']; 
$city = $_GET['city']; 
$text=$_GET['text']; 

(" SELECT * FROM ads WHERE city LIKE '%$city%' OR title LIKE '%$tarsene%' OR text LIKE '%$text%' ")

Ако ми дадеш структура на ДБ и кажеш по какви критерии искаш да търси ще ти кажа как точно да бъде.
 
ами имам 2 бази - users & ads - съответно в първата влизат регистрираните юзери а във втората влизат обявите които публикуват:

DROP TABLE IF EXISTS users;

CREATE TABLE users (
userid int NOT NULL auto_increment primary key,
username varchar (30) NOT NULL default '',
password varchar (32) NOT NULL default '',
email varchar (255) NOT NULL default ''
);

*****

DROP TABLE IF EXISTS ads;

CREATE TABLE ads(
adid int NOT NULL auto_increment primary key,
city varchar (15) NOT NULL default '',
title varchar (100) NOT NULL default '',
text varchar (600) NOT NULL default ''
);

***кода за извличане е познат - 100 пъти го пуснам докато си опитвате да ми помогнете :)
** искам от seach формата като пишат Бургас да вади всички обяви за Бургас само, а не както сега - вади всички градове и обяви ..
** знам че трябва да оправя база ADS - да сложа foreign key - но като го сложих нещо спече и затова го махнах - явно не съм го направил правилно .. имам нужда някой да ми покаже веднъж как става хавата
**
 
до тук добре, а формата за търсене какво представлява? даи и неиния код, само на формата :) да вида какви полета има
 
лудница :)

<form name="input" method="GET" action="search.php">
<table cellpadding="0" cellspacing="0" width="300px" >
<tr>
<input type="text" name="search" size="30">
<input type="submit" value="Search">
</tr>
</table>
</form>
 
Код:
$tarsene = $_GET['search']; 


(" SELECT * FROM ads WHERE city LIKE '%$tarsene%' OR title LIKE '%$tarsene%' OR text LIKE '%$tarsene%' ")

ето това е. не е най-доброто, но според структурата на ДБ толкова.
 
jorooooo златен си брато :?:
знам, ти ми каза - но като начало е нещо пак :)

Много си пекан, да знайш :?:
 
абе jorooo да не ставам много нагъл, само информативно питам - с лошо структурираната ми база данни мога ли да извеждам данни с дроп меню ?
 

Горе