Autor Zpráva
vlcekp1
Profil
Zdravím.
Jak jsem se již možná zmínil, dělám si takový malý blogovací systém.
Bohužel došlo i na vyhledávač, jenže s ním mám menší problém.
Nic mi nevyhledá.
Pro jistotu posílám celý kód.

<html>
<head>
<title>Vyhledávání</title>
</head>
<body>
<?
require_once "spojeni.php";

$search=$_POST['search'];
if ($search=="")
{
echo "<br>Vyhledávání<br>";
}
else if ($search=="".$titulek."")
{
$vysledek = mysql_query("SELECT * FROM $tabulka1 ORDER BY titulek");
$zaznam = mysql_fetch_array($vysledek);
$title=$zaznam['titulek'];


echo "<br>Výsledky hledání<br>";
echo "<p><a href='blog/vypisclanku.php?id=";
echo $zaznam["id"]; 
echo "'>";
echo "$title";
echo "</a><br> ";
}
?>
<form action="search.php"> method="post">
<label for="search">Vyhledat:</label>
<input type="text" name="search" id="search">
<input type="submit" value="hledat">
</form>
</body>
</html>


Kvůli odečítači prosím nepoužívejte zvírazňování chybného kódu.
Raději pošlete upravený kód celý.
Můj odečítač má totiž problém s kopírováním částí textu.
Díky.

Skript má prohledat celou tabulku článků a pokud najde slovo, které návštěvník najde, získá jeho id a odkáže ho na ten výpis článků.
Děkuji za jakoukoli pomoc.
Ještě mi chybí stránkování a pak to bude všechno.


Všiml jsem si chyby s $titulek, ale oprava na $title nepomohla.


Tak jsem si všiml ještě jedné blbosti.
Ale ani takhle mi to nefunguje.

<html> 
<head> 
<title>Vyhledávání</title> 
</head> 
<body> 
<? 
require_once "spojeni.php"; 

$search=$_POST['search']; 
$vysledek = mysql_query("SELECT * FROM $tabulka1 ORDER BY titulek"); 
$zaznam = mysql_fetch_array($vysledek); 
$title=$zaznam['titulek']; 
if ($search=="") 
{ 
echo "<br><h1.Vyhledávání</h1><br>"; 
} 
else if ($search=="".$title."") 
{ 
echo "<br>Výsledky hledání<br>"; 
echo "<p><a href='blog/vypisclanku.php?id="; 
echo $zaznam["id"]; 
echo "'>"; 
echo "$title"; 
echo "</a><br> "; 
} 
?> 
<form action="search.php"> method="post"> 
<label for="search">Vyhledat:</label> 
<input type="text" name="search" id="search"> 
<input type="submit" value="hledat"> 
</form> 
</body> 
</html> 

Možná bude lepší ta slova hledat v článku, nebo kdybyh věděl, jak udělat např toto:
echo $zaznam['clanek'] zobraz jen 25 znaku, tak bych ten vyhledávač ještě trošku upravil.

Moderátor Chamurappi: Zápis kódu do [prenone]kód[/pre] nevyvolává zvýrazňování.
sicario
Profil
At koukam jak koukam, zadny pokus o vyhledani v DB tam nevidim. Vzdyt se obsah promenne $_POST['search'] vubec nepromitne do SQL dotazu. Kde je vlastne definovana promenna $tabulka1?

BTW co je to "odecitac" a proc neuzaviras zdrojovy kod do [ pre] ... [ /pre] ?
vlcekp1
Profil
No to jsou ty mé pokusy.
Myslel jsem, že bude stačit porovnat ten zaslaný dotaz s tabulkou, ale asi ne.
Odečítač je program, který čte evidomým to, co je na obrazovce.
Kdybych kódy uzavíral, tak by mi odečítač nepřečetl téměř nic.
Z řádků bi mi tvořil odkazy a další blbosti.
habendorf
Profil
Z řádků bi mi tvořil odkazy a další blbosti.

Teď jsem zkoušel přečíst nějaký zdrojový kód na této diskuzi pomocí NVDA a máš pravdu. Nejde ale o blbosti, ten odečítač to čte správně, protože každá funkce ve zvýrazněném kódu je zároveň odkazem na její popis v manuálu. Ale chápu, že pro tebe je to nevhodné.
vlcekp1
Profil
Nevhodné to je, protože můj odečítač winmonitor ještě navíc používá vlastní způsob kopírování do schránky, pokud není označen celý text.
Takže mi pokud je v souboru napsáno index.php, tak on mi to při vkládání do poznámkáče napíše jako
index
.php, takže to ještě musím opravovat.
vlcekp1
Profil
A teď jsem zjistil, že to i tak dokonce čte.
habendorf
Profil
Tohle ti pomůže: Na začátku stránky je odkaz "Vypni barvení". Pak čte odečítač kód v [ pre] jako prostý text. Třeba to využiješ v jiných vláknech na zdejší diskuzi.
habendorf
Profil
Který chytrý moderátor dal to pre?
Chamurappi
Profil
Reaguji na vlckap1:
Upravil jsem teď tvůj příspěvek, aby jej zdejší zvýrazňovač kódu přehlížel. Doporučuji ale, aby sis vypnul barvení na své straně dle habendorfovy rady.

Chyba bude zřejmě v HTML kódu. Počáteční značku formuláře máš asi dříve ukončenou, většítko máš hned za action="search.php". Následující atribut, tedy method="post", už je mimo značku, takže ho prohlížeč nebere v úvahu a užívá na odeslání metodu GET.
vlcekp1
Profil
Jejky to mě nenapadlo. Pokud jsou dotazy v pořádku, tak to bylo asi jen tím.
vlcekp1
Profil
Všem děkuji za pomoc.
Ještě je tu jedna věc.
Neumím použít podmínku or.
<html>
<head>
<title>Vyhledávání</title>
</head>
<body>
<?
require_once "spojeni.php";

$search=$_POST['search'];
$kde=$_POST['kde'];
if ($kde=="menu/page.php")
$tabulka="$stranky1";
else
$tabulka="$tabulka1";

$vysledek = mysql_query("SELECT * FROM $tabulka ORDER BY titulek");
$zaznam = mysql_fetch_array($vysledek);
$title=$zaznam['titulek'];
$text=$zaznam['clanek'];

if ($search=="")
{
echo "<br><h1>Vyhledávání</h1><br>";
}
else if ($search=="".$title."" and $search=="".$text."")
{
echo "<br>Výsledky hledání výrazu $search<br>";
echo "<p><a href='$kde?id=";
echo $zaznam["id"]; 
echo "'>";
echo "$title";
echo "</a><br> ";
}
else
echo "Na váš dotaz $search nebylo nic nalezeno.";

?>
<form action="search.php" method="post">
<label for="search">Vyhledat:</label>
<input type="text" name="search" id="search">
<label for="kde">Kde hledat?</label>
<select name='kde' id='kde'>
<option selected value='menu/page.php'>Na stránkách></option>
<option value='blog/vypisclanku.php'>Na blogu></option>
</select>

<input type="submit" value="hledat">
</form>
</body>
</html>

Chtěl jsem tí říct, že pokud se to sloo najde i v článku, tak se má zobrazit, že se to taky našlo jako titulek.
Jinak úpravy, které jsem během odpoledne provedl mi jinak fungují.
vlcekp1
Profil
Vím, že místo slova and jsem tam měl dát or, ale na tomto fóru mi nejdou upravovat příspěvky.
Ve scriptu mám už napsané slovo or.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: