Az alábbi kódban hol a hiba? Elvileg működnie kellene a keresőnek (persze ha megadom az adatbázis adatokat)
<?php
$button = $_GET ['submit'];
$search = $_GET ['search'];
if(!$button)
echo "Nem adta meg a keresési feltételeket!";
else
{
if(strlen($search)<=1)
echo "A keresett szó túl rövid!";
else{
echo "A következőkre keresett rá: <b>$search</b> <hr size='1'></br>";
mysql_connect("","","");
mysql_select_db("");
$search_exploded = explode (" ", $search);
foreach($search_exploded as $search_each)
{
$x++;
if($x==1)
$construct .="keywords LIKE '%$search_each%'";
else
$construct .="AND keywords LIKE '%$search_each%'";
}
$construct ="SELECT * FROM pinceszet WHERE $construct";
$run = mysql_query($construct);
$foundnum = mysql_num_rows($run);
if ($foundnum==0)
echo "Sajnos nincs találat a következőkre: <b>$search</b>.</br>Ellenőrizze le, hogy helyesen adta e meg a keresett szót!";
else
{
echo "$foundnum results found !<p>";
while($runrows = mysql_fetch_assoc($run))
{
$title = $runrows ['title'];
$desc = $runrows ['description'];
$url = $runrows ['url'];
echo "
<a href='$url'><b>$title</b></a><br>
$desc<br>
<a href='$url'>$url</a><p>
";
}
}
}
}
?>
Eltekintve attól, hogy ez a "nemtudomhonnankukázottkód" php elemeket (mysql), felesleges kódokat (foreach kiváltható egyetlen implode-dal), botrányos html és php megoldásokat tartalmaz, ellenőrizetlen adatokkal dolgozik, szintaktikailag nincs benne hiba.
Nem lehetséges, hogy az adatok $_POST-ba érkeznek, és nem $_GET-be?
A foreach elé tegyél ilyet:
$construct = "";
Egyrészt ugye lokális változó volt a cikluson belül, így kívül nem volt értéke, másrészt nem volt mihez hozzáfűzni szöveget.
A hozzáfűzéseknél tennék szóközt a string-ben előre és a végére, nehogy az sql összefolyjon és ez legyen a hiba:
$construct .=" keywords LIKE '%$search_each%' ";
else
$construct .=" AND keywords LIKE '%$search_each%' ";
Így első ránézésre ezt tippelném. Hibaüzenetnek, vagy leírásnak, hogy mit produkál örülnénk. Akkor könnyebb volna kitalálni hol a hiba.
mivel írtátok, hogy ez így veszélyes és rossz megoldás ezért nem erőltetném ezt a megoldást. most egy hasonlóval próbálkozom:
<?PHP
##############################
$_MYSQL['HOST'] = ""; // MySQL host
$_MYSQL['USER'] = ""; // MySQL felhasználónév
$_MYSQL['PASSWORD'] = ""; // MySQL jelszó
$_MYSQL['DB'] = ""; // MySQL adatbázis
$_CONF['TABLA'] = "menu"; // Amelyik táblában akarunk keresni
$_CONF['MEZO'] = "text"; // Abba egy bizonyos mezõ amelyben keresünk
##############################
mysql_connect( $_MYSQL['HOST'], $_MYSQL['USER'], $_MYSQL['PASSWORD'] );
mysql_select_db( $_MYSQL['DB'] );
if(!IsSet($_REQUEST['search_text']) || empty($_REQUEST['search_text'])) {
print'
<form method="GET" action="search.php">
<input type="text" name="search_text" size="25">
<input type="Submit" value="Keresés">
</form>';
} else {
$search_text = mysql_escape_string($_REQUEST['search_text']);
$eredmeny = mysql_query("SELECT * FROM ".$_CONF['TABLA']." WHERE ".$_CONF['MEZO']." LIKE '%$search_text%'");
while($sor = mysql_fetch_object($eredmeny))
{
$cim = $sor->cim;
$uzenet = $sor->uzenet;
$datum = $sor->datum;
$id = $sor->id;
echo "<p>".$id.". ".$cim."<hr>".$uzenet."<hr>".$datum."</p>";
}
}
?>
itt látszik, hogy kapcsolódott az adatbázishoz és jelzi is, hogy hány találat van az adott keresőkulcsra a táblában. viszont a tartalmát nem tudom, hogyan kellene kiiratni...
illetve, hogy ez a rész minek van benne:
$cim = $sor->cim;
$uzenet = $sor->uzenet;
$datum = $sor->datum;
$id = $sor->id;
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!