Autor Zpráva
sheep
Profil *
Chtel jsem poprosit jestli ma nekdo radu jak vyresit problem se strankovanim a vyhledavanim zaroven...Mam dva scripty myslim si ze jednoduchy.Jeden na strankovani primo z databaze... a ten je


$result=mysql_query("SELECT id FROM prodam");
$num=mysql_num_rows($result);

if ($ctrl<>1)
{
$strana=1;
}//endif
$limit=5;
$celkovy_pocet=$num;
$pocet_stran=ceil($celkovy_pocet/$limit);
$pocatek=($strana*$limit)-$limit;

$result=mysql_query("SELECT * FROM prodam LIMIT $pocatek, $limit");
$num=mysql_num_rows($result);
for ($i = 0; $i<$num; $i++) {
$nazev = mysql_result($result, $i, "nazev");
$popis = mysql_result($result, $i, "popis");
$email = mysql_result($result, $i, "email");
$telefon = mysql_result($result, $i, "telefon");
$datum = mysql_result($result, $i, "datum");

print "<LI><strong>$nazev</strong><BR>";
print "$popis<BR>";
print "$email<BR>";
print "$telefon<BR>";
print "Inzerat byl vlozen ".$datum."<BR>";
print "<hr size=1 no shade> ";
}
print "<div align="center">";

for ($i=1; $i<=$pocet_stran; $i++)
{

if ($i<>$strana) {
echo "<small><a href="inzerat.php?show=1&ctrl=1&strana=",$i,"">",$i,"</a> | </small>";
}//konec if
else {
echo "<small><font color="#FF3300">",$i,"</font> | </small>";
}//konec else
}//konec for
print "</div>";

funguje bez problemu ale prichazi na radu script v kterem chci vyhledavat podle zadaneho slova a vystrankovat.A ten bohuzel nebezi jak ma.Protoze pokud zadam hledane slovo najde pocet stran,vypise prvni stranu.Ukaze stranky.Ale tam je zadrhel.Pokud kliknu na kteroukoli stranku,vypise mi ji zase spravne,ale hned vyskoci tolik stranek kolik obsahuje databaze odkazu.Pripada mi to ze promenou LIKE poprve prebere ale pokud se dotazuji na druhou stranku uz ji ma prazdnou a proto to vypisuje vse.Diky za kazdou radu.Prikladam script pro vyhledavani

$hledej2 = mysql_query("SELECT * FROM prodam WHERE popis LIKE '%$pomoc1%'");
$nasel2 = mysql_num_rows($hledej2);
if ($ctrl<>1)
{
$strana=1;
}//endif
$limit=5;
$celkovy_pocet=$nasel2;
$pocet_stran=ceil($celkovy_pocet/$limit);
$pocatek=($strana*$limit)-$limit;


$hlen=mysql_query("SELECT * FROM prodam WHERE popis LIKE '%$pomoc1%' LIMIT $pocatek, $limit");
$numm=mysql_num_rows($hlen);
for ($i = 0; $i<$numm; $i++) {
$nazev11 = mysql_result($hlen, $i, "nazev");
$popis11 = mysql_result($hlen, $i, "popis");
$email11 = mysql_result($hlen, $i, "email");
$telefon11 = mysql_result($hlen, $i, "telefon");
$datum11 = mysql_result($hlen, $i, "datum");

print "<LI>".$nazev11."<BR>";
print "".$popis11."<BR>";
print "".$email11."<BR>";
print "".$telefon11."<BR>";
print "".$datum11."<BR>";
print "<hr size=1 noshade><BR>";
}
print "<div align="center">";

for ($i=1; $i<=$pocet_stran; $i++)
{

if ($i<>$strana) {
echo "<small><a href="inzerat.php?ukaz=3&mot=nan&ctrl=1&strana=",$i,"">",$i,"</a> | </small>";
}//konec if
else {
echo "<small><font color="#FF3300">",$i,"</font> | </small>";
}//konec else
}//konec for
print "</div>";
Béďa
Profil *
Pripada mi to ze promenou LIKE poprve prebere ale pokud se dotazuji na druhou stranku uz ji ma prazdnou a proto to vypisuje vse.
tak vyhledávaný výraz předávej v GET (<a href="inzerat.php?ukaz=3&mot=nan&ctrl=1&strana=",$i,"">)

$result=mysql_query("SELECT id FROM prodam");
$num=mysql_num_rows($result);

je velice neefektivní, lepší by bylo
$num=mysql_query("SELECT count(*) FROM prodam");
sheep
Profil *
$result=mysql_query("SELECT id FROM prodam");
$num=mysql_num_rows($result);
je velice neefektivní, lepší by bylo
$num=mysql_query("SELECT count(*) FROM prodam");


Vim,vim ze je lepsi count,nezatezuje tolik server ale to mi nejak nemakalo....to zkusim pozdeji ladim to taky na to dojde...Zkusim tu to predavani,diky za tip..
sheep
Profil *
Tak jsem vyzkousel GET misto POST a bohuzel pro zmenu nevypise zadny zaznam...tak to nevim co stim.
Mastodont
Profil
Kde se nastaví $strana, když neplatí if ($ctrl<>1) ??
Alphard
Profil
$result = mysql_query("SELECT count(*) FROM prodam");
list ($num) = mysql_fetch_row ($result);

Tak jsem vyzkousel GET misto POST
v původním scriptu nevidím žádný formulář, nešlo by to upřesnit?
sheep
Profil *
jde to upresnit



print "<FORM ACTION="inzerat.php?ukaz=3" METHOD="post">";
print "<INPUT TYPE="text" NAME="pomoc1" SIZE=30 MAXLENGTH=30>
<input id="prod" type="radio" name="mot" VALUE="nan" checked="checked">Prodam
print "<INPUT TYPE="submit" NAME="akce" VALUE="Hledej">";
print "</form>";

if ($ukaz == '3') {
if ($mot == 'nan') {


zde zbytek skriptu.Nevim jestli je to bezny postup programovani,nejsem "guru" ale funguje,ovsem muze prave kuli tomu byt problem..
Alphard
Profil
tohle je právě funkční na první stránce, hledaný výraz je v $_POST['pomoc1'],
ale odkazy na další stránky generuješ takto:
echo "<small><a href="inzerat.php?ukaz=3&mot=nan&ctrl=1&strana=",$i,"">",$i,"</a> | </small>";
a po kliku na na některý z nich ztrácíš hledaný výraz, takže
echo "<small><a href="inzerat.php?pomoc1=$pomoc1&ukaz=3&mot=nan&ctrl=1&strana=",$i,""> ",$i,"</a> | </small>";

jestli se chceš vyhnout problémům do budoucna, tak ošetři register globals
sheep
Profil *
AlphardeDekuji maka to,bezvadne.Jeste jsem se chtel na zaver zeptat jaky problemy me muzou potkat a jak je osetrim globals.Jen mi trochu nakopni.Jinak dekuji vsem za prispevky a za namahu resit muj problem.
Alphard
Profil
http://www.edrive-hosting.cz/napoveda/php/register-globals
Toto téma je uzamčeno. Odpověď nelze zaslat.