Mam taka baze linkow zapisana w pliku tekstowym w postaci
{keyword11} {keyword12} {keyword13} {keyword14} {http://link1.com} {opis1}
:
{keywordx1} {keywordx2} {keywordx3} {keywordx4} {http://linkx.com} {opisx}
Niektore pola keywordow czasami sa puste (ale nawiasy sa zawsze) lub w rzeczywistosci zawieraja dwa lub trzy wyrazy.
Dlaczego taka baza to nie moja sprawa, taka jest i taka ma pozostac.
Chce stworzyc do bazy 'wyswietlarke' i wyszukiwarke po tych keywordach.
Stworzylem przykladowy plik z baza
links.txti taki kod php:
<?php
function wyswietl_wynik($tablica) {
echo("<br /><b>Wynik:</b>");
if (count($tablica)=="0") {
echo("<br /><br />Brak wynikow.<br /><br />");
} else {
for ($x=0; $x<count($tablica); $x++) {
<li>".$tablica[$x][0]." ".$tablica[$x][1]." ".$tablica[$x][2]." ".$tablica[$x][3]."<br />
<a href="".$tablica[$x][4]."">".$tablica[$x][4]."</a><br />
".$tablica[$x][5]."<br />
");
}
}
}
$plik = file('links.txt');
echo("<a href="links
.txt
">links.txt</a>");
echo("<br /><br /><hr width="100%" size="1" color="black
" /><br />");
// wyswietlarka
if ((!isset($_POST['krok1'])) || (($_POST['key1'] == "0") && ($_POST['key2'] == "0") && ($_POST['key3'] == "0") && ($_POST['key4'] == "0"))) {
Wybierz conajmniej jedno pole formularza. <br /><br />
<form action="index.php" method="post">
<input type="hidden" name="krok1" value="1">
<select name="key1"><option value="0">...</option><option value="Keyword_A_1">Keyword_A_1</option><option value="Keyword_A_2">Keyword_A_2</option><option value="Keyword_A_3">Keyword_A_3</option><option value="Keyword_A_4">Keyword_A_4</option></select>
<select name="key2"><option value="0">...</option><option value="Keyword_B_1">Keyword_B_1</option><option value="Keyword_B_2">Keyword_B_2</option><option value="Keyword_B_3">Keyword_B_3</option><option value="Keyword_B_4">Keyword_B_4</option></select>
<select name="key3"><option value="0">...</option><option value="Keyword_C_1">Keyword_C_1</option><option value="Keyword_C_2">Keyword_C_2</option><option value="Keyword_C_3">Keyword_C_3</option><option value="Keyword_C_4">Keyword_C_4</option></select>
<select name="key4"><option value="0">...</option><option value="Keyword_D_1">Keyword_D_1</option><option value="Keyword_D_2">Keyword_D_2</option><option value="Keyword_D_3">Keyword_D_3</option><option value="Keyword_D_4">Keyword_D_4</option></select>
<input type="submit" value="OK">
</form>
");
} elseif($_POST['krok1']=="1") {
$j=0;
for ($i=0; $i<count($plik); $i++) {
$line = ltrim($line, '{'); $line = rtrim($line, '}'); $line_tab = split("} {", $line, 6
);
if (($line_tab[0] == $_POST['key1']) || ($_POST['key1'] == "0") || ($line_tab[0] == "")) {
$res_tab3[$j][0] = $line_tab[0]; $res_tab3[$j][1] = $line_tab[1]; $res_tab3[$j][2] = $line_tab[2]; $res_tab3[$j][3] = $line_tab[3]; $res_tab3[$j][4] = $line_tab[4]; $res_tab3[$j][5] = $line_tab[5];
$j++;
}
}
$j=0;
for ($i=0; $i<count($res_tab3); $i++) {
if (($res_tab3[$i][1] == $_POST['key2']) || ($_POST['key2'] == "0") || ($res_tab3[$i][1] == "")) {
$res_tab2[$j][0] = $res_tab3[$i][0]; $res_tab2[$j][1] = $res_tab3[$i][1]; $res_tab2[$j][2] = $res_tab3[$i][2]; $res_tab2[$j][3] = $res_tab3[$i][3]; $res_tab2[$j][4] = $res_tab3[$i][4]; $res_tab2[$j][5] = $res_tab3[$i][5];
$j++;
}
}
$j=0;
for ($i=0; $i<count($res_tab2); $i++) {
if (($res_tab2[$i][2] == $_POST['key3']) || ($_POST['key3'] == "0") || ($res_tab2[$i][2] == "")) {
$res_tab1[$j][0] = $res_tab2[$i][0]; $res_tab1[$j][1] = $res_tab2[$i][1]; $res_tab1[$j][2] = $res_tab2[$i][2]; $res_tab1[$j][3] = $res_tab2[$i][3]; $res_tab1[$j][4] = $res_tab2[$i][4]; $res_tab1[$j][5] = $res_tab2[$i][5];
$j++;
}
}
$j=0;
for ($i=0; $i<count($res_tab1); $i++) {
if (($res_tab1[$i][3] == $_POST['key4']) || ($_POST['key4'] == "0") || ($res_tab1[$i][3] == "")) {
$res_tab[$j][0] = $res_tab1[$i][0]; $res_tab[$j][1] = $res_tab1[$i][1]; $res_tab[$j][2] = $res_tab1[$i][2]; $res_tab[$j][3] = $res_tab1[$i][3]; $res_tab[$j][4] = $res_tab1[$i][4]; $res_tab[$j][5] = $res_tab1[$i][5];
$j++;
}
}
echo("<b>Wyswietl wszystkie rekordy zawierajace slowo:</b><br />"); if ($_POST['key1'] != "0") echo("- ".$_POST['key1']."<br />"); if ($_POST['key2'] != "0") echo("- ".$_POST['key2']."<br />"); if ($_POST['key3'] != "0") echo("- ".$_POST['key3']."<br />"); if ($_POST['key4'] != "0") echo("- ".$_POST['key4']."<br />");
wyswietl_wynik($res_tab);
}
echo("<br /><hr width="100%" size="1" color="black
" /><br />");
// wyszukiwarka
if ((!isset($_POST['krok2'])) || ($_POST['search'] == "")) {
Wpisz cos. <br /><br />
<form action="index.php" method="post">
<input type="hidden" name="krok2" value="1">
<input type="text" name="search">
<input type="submit" value="Search">
</form>
");
} elseif($_POST['krok2']=="1") {
$szukane_slowa = split(" ", $szukane);
echo("<b>Szukana fraza: </b>"); for($i=0; $i<count
($szukane_slowa); $i++) echo($szukane_slowa[$i]." ");
$k=0;
for ($i=0; $i<count($plik); $i++) {
$line = ltrim($line, '{'); $line = rtrim($line, '}'); $line_tab = split("} {", $line, 6
);
for($j=0; $j<count($szukane_slowa); $j++) {
if ($szukane_slowa[$j] != "") {
if ((eregi($szukane_slowa[$j], $line_tab[0
])) || (eregi($szukane_slowa[$j], $line_tab[1
])) || (eregi($szukane_slowa[$j], $line_tab[2
])) || (eregi($szukane_slowa[$j], $line_tab[3
]))) { $bingo[$k][0] = $line_tab[0]; $bingo[$k][1] = $line_tab[1]; $bingo[$k][2] = $line_tab[2]; $bingo[$k][3] = $line_tab[3]; $bingo[$k][4] = $line_tab[4]; $bingo[$k][5] = $line_tab[5];
$k++;
}
}
}
}
wyswietl_wynik($bingo);
}
} else {
echo("Plik z baza nie istnieje.");
}
?>
---
nosporKtory dziala
tak.
Jako, ze docelowy plik z baza ma zawierac okolo 500-600 rekordow, chcialbym poznac jakies uwagi dotyczace optymalnosci kodu i ogolnie czy dobrze rozwiazalem problem.
Pozatym czy pole search nie powinno byc jakos lepiej zabezpieczone.
Z gory dzieki za pomoc