A minap ráfutottam arra, hogy a szokásos számos lapozó helyett (1-10 || 11-20 … stb ) ABC-s kell a megrendelőnek. Az adatbázisában szereplő személyeket akarja listázni úgy, hogy mindig a nevük elso harom betűjet látod Pl: Aba Samueltol Budai Attilaig ezt: Aba – Bud.
A lapozó scriptnek viszont nem csak a személytörzsön, hanem minden névvel ellátott adatbázison futnia kell, így egy SQL változót is kapott, hogy minden kritériumnak megfelelő táblán futtatni lehessen.
Először csatlalkozunk az adatbázishoz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | define ('SQL_SERVER','localhost'); define ('SQL_USER','root'); define ('SQL_PASS','root'); define ('SQL_DATABASE', 'database'); connect (); function connect () { $connection = mysql_connect (SQL_SERVER,SQL_USER,SQL_PASS) or die("Nem tudok kapcsolódni az adatbázishoz!<br>".mysql_error()); define ("CONNECTION", $connection); mysql_select_db(SQL_DATABASE, CONNECTION ) or die ( "Nem lehet megnyitni az adatbázist: ".mysql_error() ); @mysql_query('SET CHARACTER SET latin2'); //<--- különben nem fogja szeretni a 4.x+ mysql az õû-t } |
Aztán egy SQL futtató segédfüggvényt írunk:
1 2 3 4 5 | function runQuery($query) { // query futtato $result = mysql_query ($query, CONNECTION) or die ("Nem sikerült a lekérdezés:<br><b>$query<br><br>".mysql_error()); return $result; } |
Majd jöhet a lapozó maga:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | function lapozo($min,$sql,$url){ //lapozo fuggveny $limit=10; //hanyasaval keszitse az oldalakat $query=$sql." limit ".$min.", ".$limit; $query2=$sql; $result=runQuery($query2); $array=runQuery($query); $szamresult=runQuery($query2); $szam=mysql_num_rows($szamresult); //osszes darabszam $i=0; while($row=mysql_fetch_array($result)){ //tombbe attoltjuk a nevek elso 3 betűjét $lap_array[$i]=substr($row["name"],0,3); $i++; } $db=floor($szam/$limit); //hany lap lesz //BALRA LAPOZO print '<center>'; print '<a href="'.$url.'"><img src="img/btn_page_home.gif" border="0"></a> '; if($min==0){ print '<a href="#"><img src="img/btn_page_left.gif" border="0"></a>  '; }else{ print '<a href="'.$url.'?min='.($min-$limit).'"><img src="img/btn_page_left.gif" border="0"></a>  '; } $i=0; //KIMENET if(($szam%$limit)==0){ while($i<$db){ print '<a href="'.$url.'?min='.($i*$limit).'">'.$lap_array[($i*$limit)].'-'.$lap_array[(($i*$limit)+($limit-1))].'</a> || '; $i++; } }else{ while($i<=$db){ print '<a href="'.$url.'?min='.($i*$limit).'">'.$lap_array[($i*$limit)].'-'.$lap_array[(($i*$limit)+($limit-1))].'</a> || '; $i++; } } //JOBBRA LAPOZO if($min==($db*10)){ print ' <a href="#"><img src="img/btn_page_right.gif" border="0"></a>'; }else{ print ' <a href="'.$url.'?min='.($min+$limit).'"><img src="img/btn_page_right.gif" border="0"></a>'; } if(($szam%$limit)==0){ print ' <a href="'.$url.'?min='.(($db-1)*$limit).'"><img src="img/btn_page_end.gif" border="0"></a>'; }else{ print ' <a href="'.$url.'?min='.($db*$limit).'"><img src="img/btn_page_end.gif" border="0"></a>'; } print '</center>'; return $array; } |
Ezt elmenthetjük egy function.php fileba, hogy később csak meghívni kelljen a lapozo.php-ban. Létrehozunk egy lapozo.php-t, amibe csak pár sor kerul, vagy ezt a pár sort másold be oda, ahol használni akarod a te oldaladban:
1 2 3 4 5 6 7 8 9 10 11 12 | <?php require_once("function.php"); if (!$_GET['min']) $min = 0; else $min = $_GET['min']; $sql="select * from user order by name"; $url=$_SERVER['PHP_SELF']; $result = lapozo($min,$sql,$url); //Tomb listazasa while($row=mysql_fetch_array($result)){ print $row["name"]."<br>"; } ?> |
Meghívjuk az oldalba a function.php-t, vizsgáljuk hogy paraméterben jött-e minimum, ha nem, 0-t állítunk be. Az $sql változóba adunk egy select utasítást, ügyeljünk a szintaktikára. Az $url önmagára hivatkozik, de persze át is írhatod magadnak.
Végül meghívjuk a függvényt és eredményét egy result tömbbe pakoljuk. Később a tömböt egy egyszerű bejárással kiiratjuk.
Az oldalon középen egy lapozót kapunk, míg alatta az eredményhalmazt. Használjátok egészséggel.
A leíráshoz tartozó kódok és példa letölthető: lapozo.zip (3kb)
A leírást készítette és beküldte (szerző): Gelidan
Pár észrevétel ha tutorialról van szó:
– a $min értéket jó lenne ellenőrizni mert így bizony bármilyen érték bekerülhet
– if (!$_GET[‘min’]) $min = 0; else $min = $_GET[‘min’]; ez így nem elégséges ehelyett legalább is_numeric() ellenőrzés vagy intval() kellene
– print utasításban $min egyszerűen user interface-re kiküldve további problémát okohzhat.
– $query=$sql.” limit „.$min.”, „.$limit; ez pedig egyenesen az XSS melegágya
Nekem az sql-el kapcsolatban lenne egy eszrevetelem, celszerubb lenne egy config filet csinalni neki, igy valahogy:
$szerver = ‘localhost’;
$felhasznalo = ‘root’;
$jelszo = ”;
$adatbazis = ‘teszt’;
$kapcsolat = mysql_conect($szerver, $felhasznalo, $jelszo);
mysql_select_db($kapcsolat, $adatbazis);
or die include ‘404.php’;
azert jobb igy szerintem, mert jobban tudja hasznalni egy nem hozza erto egyen, egyebkent koszi a tutorialt.
Koszi az eszreveteleket, nalam egy config fileban van a connect parameter, egy function fileban vannak a fuggvenyek es egy harmadik maga a lapozo :x)
Az XSS-es temahoz meg igaz, koszi az infot.
Nem ertek a php hez.
De szeretnem az
xls, excel -t szotaramat internetre rakni.
A legegyszerubb megoldas erdekel, hogy egy kereso, minden sor elejen
talalhato szora keressen ra. fuggetlenul a tabok szamatol. Eredmenykent az adott sort,
illetve sorokat dobja ki, amiben a keresett szot megtalalta. Milyen formatumba muszaj atrakni
az xls – t ? Valaki irjon legyszi egy php -t hozza es html filet hozza.
Koszi.
mailcimem a honlapomon a guestbook nal
Ha fizeted a programozás árát, lehet hogy lesz rá jelentkező. Sok sikert hozzá.
Helló Csongor!
Nagyon szivesen megcsinálom neked ingyen ezt az egyszerű kis scriptet, ha felkerülhet a nevem mint készítő a honlapra. Ha érdekel az ajánlatom dobj egy emailt a gorgo08[kukuc]gmaicom-ra.
gmail. com ?
koszi ! 2 helyrol is kuldtem emailt neked, varom a valaszt ! Koszi !
Hello barki !
Hasonlo feltetellel, (ingyen) varom, hogy valaki segitsen, koszi !
milyen formatumba muszaj atkonvertalni az xls, excel filet ahhoz hogy internetes kereso tipusu szotart keszithessek ? csak a keresett szovegreszekhez tartozo sorokat kellene kiadnia egy oldalon a „szotar” nak. Koszi !
Szia
Le tudnád írni, hogy min kell módosítani, hogy számozásos legyen a lapozó,
Köszi!!
Az lenne a problémám ha mysql adat táblám sorai egyel több mint a limit szorzatai akkor ezt a hibát irja ki.
és az utolso lapfülnél csak a kezdödö nevét irja az ucsot nem. Kódilag mit kéne modositani? Remélem minél hamarabb tudtok nekem segiteni. Válaszotokat elöre köszönöm.