Avatar billede lakana Nybegynder
18. oktober 2007 - 16:46 Der er 15 kommentarer og
1 løsning

Gemme POST værdi når jeg kalder en GET side.

Jeg sidder med et kæmpe problem.

Jeg er igang med en søgefunktion til min side, men når jeg vil "skifte side" ved resultaterne, så gemmer den ikke de forrige POST-paramenter.

Hvordan gør jeg sådan, at når jeg har:
if ( isset ( $_POST['sog_side'] ) )
{
  /** her viser den de sider som er i tabellen ved de post paramenter man skrev **/
} else {
  /** vis søgeboksen **/
}

Så hvis jeg kalder den samme side, men med "/5/" i GET (side tallet), så kan jeg stadig bruge $_POST ??

Ligenu går den bare tilbage til søgeboksen da jeg ikke har trykket på "sog_side"-input-button knappen!
Avatar billede lakana Nybegynder
18. oktober 2007 - 16:48 #1
Så hvis jeg kalder den samme side, men med "/5/" i GET (side tallet), så kan jeg stadig bruge $_POST ??

skal rettes til

Men hvordan kalder jeg den samme side, med "/5/" i GET (side tallet), så kan jeg stadig bruge $_POST ??
Avatar billede terrak Nybegynder
18. oktober 2007 - 17:08 #2
Det gør du ved at smide din POST værdi i en form og lader din 'næste'-knap sende formen.
Eks.:

<form method="post" action="<?php echo basename($_SERVER['PHP_SELF']); ?>">
<input type="hidden" name="sog_side" value="<?php echo $_POST['sog_side']; ?>" />
<input type="submit" value="Næste side (<?php echo $_POST['sog_side']; ?>)" />
</form>
Avatar billede lakana Nybegynder
18. oktober 2007 - 17:11 #3
Jeg bruger ikke en knap i formen til at gå til næste side.. Det er et tekst-link..

$s.="<a href=\"" . $URI . "/sider_oversigt/" . $start . "/\">" . $page . "</a> ";

f.eks.

Så det kan ikke rigtig bruges.. :( Har du andre foreslag?
Avatar billede lakana Nybegynder
18. oktober 2007 - 17:13 #4
$c.='<form action="" method="post" style="margin:0;padding:0;">';
$c.='<div style="float:left;width:300px;">' . GetCategories() . '</div>';
$c.='<div style="float:left;width:250px;">' . SortBy() . '</div>';
$c.='<div style="float:left;width:50px;"><input type="submit" name="sog_side" value="Søg" class="bt" style="background-color:#fff;"/></div>';
$c.='<div class="Clear">&nbsp;</div>';
$c.="</form>";

$c.="resultater";

$c.="side skift...";
Avatar billede barklund Nybegynder
18. oktober 2007 - 17:14 #5
Har du noget rewrite, der fanger /5/ i urlen? Eller er det efter et "?"? Hvordan ser url'en helt præcist ud, når du hopper til næste side?
Avatar billede lakana Nybegynder
18. oktober 2007 - 17:15 #6
?page=sogesiden&page2=5

og ja har rewrite..
Avatar billede terrak Nybegynder
18. oktober 2007 - 17:16 #7
Jo det kan:

<form id="naesteside" method="post" action="<?php echo basename($_SERVER['PHP_SELF']); ?>">
<input type="hidden" name="sog_side" value="<?php echo $_POST['sog_side']; ?>" />
</form>

$s.="<a href=\"" . $URI . "/sider_oversigt/" . $start . "/\" onclick=\"document.getElementById('naesteside').submit()\">" . $page . "</a> ";
Avatar billede terrak Nybegynder
18. oktober 2007 - 17:19 #8
Måske der skal lægges 1 til sidenummeret, når nu det er næste side :-)
<input type="hidden" name="sog_side" value="<?php echo $_POST['sog_side']+1; ?>" />
Avatar billede lakana Nybegynder
18. oktober 2007 - 17:23 #9
Det vil jo aldrig virke.. Læs lige spørgsmålet igen..
Side tallet skal jo ikke gemmes i en input-hidden..  og hvor kommer $_POST['sog_side'] fra????
Avatar billede terrak Nybegynder
18. oktober 2007 - 17:34 #10
Jeg gik ud fra at $_POST['sog_side'] indeholdte sidetallet, men det er så $_GET['page2'] der gør det i stedet for?

I dine links til næste side, er adressen
\"" . $URI . "/sider_oversigt/" . $start . "/\"

Hvor kommer $start fra?
Avatar billede lakana Nybegynder
18. oktober 2007 - 17:36 #11
if ($vis_fra > 0)
{

$back= $vis_fra - $pr_side;

$s.="&nbsp;<a href=\"" . $URI . "/oversigt/" . $back . "/\">&laquo; Forrige</a> ";

}

$page = 1;


for ($start = 0; $antal > $start; $start = $start + $pr_side)
{
    if($vis_fra != $page * $pr_side - $pr_side)
    {
        $s.="<a href=\"" . $URI . "/oversigt/" . $start . "/\">" . $page . "</a> ";
    } else {
        $s.="&nbsp;<span style=\"font-size:14px;font-weight:bold;\">" . $page."</span>&nbsp;";
    }

    $page++;
}

if ($vis_fra < $antal - $pr_side)
{
    $next = $vis_fra + $pr_side;
    $s.="&nbsp;<a href=\"" . $URI . "/oversigt/" . $next . "/\">Næste &raquo;</a>";
}
Avatar billede lakana Nybegynder
18. oktober 2007 - 17:38 #12
oversigt siden er selvfølgelig der hvor man lavede sine søgeresultaterne
Avatar billede lakana Nybegynder
18. oktober 2007 - 17:44 #13
Så når jeg hoppper til oversigt/5/ skal mine post-værdier stadig virke.. det er der det går galt..
Avatar billede terrak Nybegynder
18. oktober 2007 - 17:46 #14
Jeg tror jeg stopper her, for jeg synes det er lidt svært at få overblik over hvor du er, og hvor du vil hen.

Det kan være der er andre der kan se det.
Held og lykke :-)
Avatar billede jgivoni Nybegynder
19. oktober 2007 - 08:54 #15
Hvad indeholder $_POST['sog_side'] helt præcist? Er det der, selve søgeforespørgslen gemmes? Hvis den f.eks. bare indeholder det søgeord, der søges på, er det rimelig nemt.
Men det vil blive endnu nemmere hvis du ikke insiterer på at det skal være en POST parameter - så den istedet kunne overføres som ?-parameter. Så skulle du bare indskrive den direkte i linket til næste side.

En anden mulighed var at gemme søgeordet i session eller cookie så det ikke skulle overføres hver gang. Men jeg anbefaler det ikke hvis der er andre end dig selv, der skal bruge siden, da man bl.a. ikke vil kunne bookmarke en bestemt resultatside, hvilket er bruger-uvenligt. (Du har iøvrigt samme problem med at bruge POST).
Avatar billede lakana Nybegynder
07. august 2011 - 20:44 #16
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester