ugrás a tartalomhoz

Kereső PHP-ben Post-tal+ lapozás

toldigabor · 2011. Ápr. 11. (H), 11.51
Sziasztok.
Hogyan lehet azt megoldani PHP-ben, hogyha keresőmezőből küldök egy kifejezést POST-tal, akkor a lapozást is meg tudjam oldani? Ugyanis akkor már nem tudom a keresendő kifejezést (és a FORM-ról elküldött egyéb beállításokat).
Köszi
 
1

SESSION

Poetro · 2011. Ápr. 11. (H), 12.11
Eltárolhatod a beállításokat SESSION változóban, vagy létrehozol a beállításokból serializált stringet, abból egy hash-t (pl md5), ezt a párost eltárolod, és a felhasználót a hash által meghatározott oldalra dobod. Például, amennyiben a $search az eredeti POST:
$search = array(
  'query' => 'abc',
  'type'  => 'news',
  'other' => 'setting',
  'another' => 'setting',
);
$data = serialize($search);
$hash = md5($data);
mysql_query(
  sprintf(
    "INSERT INTO search SET data = '%s', hash = '%s'",
    mysql_real_escape_string($data),
    mysql_real_escape_string($hash)
  )
);
header('Location: search.php?hash=' . urlencode($hash));
És lapozáshoz pedig egyszerűen továbbra is használod a hash GET paramétert, valamint még egyet, hogy tudd melyik lapon vagy. A többi oldalon pedig egyszerűen kikeresed adatbázisból az adatot, unserialize-olod, és máris tudod, mik voltak a paraméterek.

Persze a fenti módszernél érdemesebb valami hatékonyabb módszerrel tárolni a kereséseket, például érdemes törölni a régi bejegyzéseket, valamint a duplikátumokat.
2

Session

toldigabor · 2011. Ápr. 12. (K), 21.23
És sessionokkal hogyan kell? A php fájl elején eltárolom a POST által küldött paramétereket egy SESSION változóba?
3

SESSION

Poetro · 2011. Ápr. 12. (K), 21.33
Alapvetően elindítod a fájl elején a munkamenetet (session), és eltárolod a megfelelő $_POST változókat (szigorú ellenőrzés után) a $_SESSION tömbbe.
4

Lapozáskor adat átadás

toldigabor · 2011. Ápr. 16. (Szo), 16.07
Amikor a lapozok, akkor a SESSIONba elmentett értékeket, hogy adjam át?
5

Keresésnél használj GET-et,

Hidvégi Gábor · 2011. Ápr. 16. (Szo), 17.43
Keresésnél használj GET-et, mert akkor az X keresést tartalmazó találati oldal URL-jét el lehet menteni a Kedvencek közé vagy el lehet küldeni. Magyarul felhasználóbarátabb.
6

Inkább POST

toldigabor · 2011. Ápr. 16. (Szo), 19.43
Ennek olyan a jelleg, hogy nem igen kell Kedvencekbe tenni a keresést, mert onnan a linkekre kattintva azok már GET-esek, azokat már mindet szépen el lehet menteni és meg is lehet osztani.
A keresést POST-tal akartam megoldani.
7

és a keresőoptimalizálás?

_subi_ · 2011. Ápr. 16. (Szo), 21.56
SEO szempontból is jobb lenne a GET, persze lehet, hogy az sem szempont.
8

SEO

toldigabor · 2011. Ápr. 17. (V), 06.34
SEO-ra inkább az egyes aloldalak vannak kihegyezve, ahol a tényleges videó oldalak vannak, beágyazva.
9

Miért ragaszkodsz ennyire a

Hidvégi Gábor · 2011. Ápr. 17. (V), 07.01
Miért ragaszkodsz ennyire a POST-hoz?
10

Megoldás

toldigabor · 2011. Május. 12. (Cs), 08.44
Végül is egy adag keresgélés, tanulmányozás, többszöri próbálkozásra ez jött ki (már néhány hete :) ):
if (strpos($_SERVER['HTTP_USER_AGENT'],"MSIE") === false)
    echo "       <A href='#' title='" . ($oldalszam-1) . ". oldal' onClick='document.kereso.oldal.value=parseInt(kereso.oldal.value)-1; document.getElementById(\"kuldesid\").type=\"hidden\"; document.getElementById(\"keresoid\").submit(); return false'>előző<BR>oldal</A>\n";
   else
    echo "       <A href='javascript: document.kereso.oldal.value=parseInt(kereso.oldal.value)-1; document.kereso.kuldes.click();' title='" . ($oldalszam-1) . ". oldal'>előző<BR>oldal</A>\n";


Illetve:
echo "      <SELECT onChange='document.kereso.oldal.value=this.options[this.selectedIndex].value; document.kereso.kuldes.click()'>\n";
 echo "       <OPTION>Konkrét oldalra ugrás\n";
 for ($i=1; $i<=$oldalak_szama; $i++)
  echo "       <OPTION value=" . $i . ">" . $i . ". oldal\n";
 echo "      </SELECT>\n";


Az űrlapot minden lapozáskor, amikor betöltődik az új oldal fel kell tölteni. Én JavaScripttel töltöttem fel, de lehet közvetlenül PHP-vel:
<?php echo " <BODY onLoad=\"urlap_feltolt('" . $_POST['kifejezes'] . "','" . $_POST['tipus'] . "','" . $oldalszam . "')\">\n"; ?>


Ez működik Internet Explorer alatt is és Mozilla Firefox alatt is. PHP-s keresés lapozással tisztán POST-tal.