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:

 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:

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:

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>&nbsp;&nbsp;';
		if($min==0){
			print '<a href="#"><img src="img/btn_page_left.gif" border="0"></a>&nbsp;&nbsp';
		}else{
			print '<a href="'.$url.'?min='.($min-$limit).'"><img src="img/btn_page_left.gif" border="0"></a>&nbsp;&nbsp';
		}
		$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>&nbsp;||&nbsp;';
				$i++;
			}
		}else{
			while($i<=$db){
				print '<a href="'.$url.'?min='.($i*$limit).'">'.$lap_array[($i*$limit)].'-'.$lap_array[(($i*$limit)+($limit-1))].'</a>&nbsp;||&nbsp;';
				$i++;
			}
		}
		//JOBBRA LAPOZO
		if($min==($db*10)){
			print '&nbsp;&nbsp;<a href="#"><img src="img/btn_page_right.gif" border="0"></a>';
		}else{
			print '&nbsp;&nbsp;<a href="'.$url.'?min='.($min+$limit).'"><img src="img/btn_page_right.gif" border="0"></a>';
		}
		if(($szam%$limit)==0){
			print '&nbsp;&nbsp;<a href="'.$url.'?min='.(($db-1)*$limit).'"><img src="img/btn_page_end.gif" border="0"></a>';
		}else{
			print '&nbsp;&nbsp;<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:

<?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

Harder

Harder

Profil

Korábbi hozzászólások (11)

A régi blogon érkezett hozzászólások archívuma. Új hozzászólást már nem lehet írni.

  1. Scr34mscr34m.frontember.hu

    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

  2. Hápi

    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.

  3. gelidan

    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.

  4. csikcsongor

    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

  5. Harderszerzőblog.harder.hu

    Ha fizeted a programozás árát, lehet hogy lesz rá jelentkező. Sok sikert hozzá.

  6. gorgo

    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.

  7. csikcsongor

    gmail. com ?
    koszi ! 2 helyrol is kuldtem emailt neked, varom a valaszt ! Koszi !

  8. csikcsongor

    Hello barki !
    Hasonlo feltetellel, (ingyen) varom, hogy valaki segitsen, koszi !

  9. csikcsongor

    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 !

  10. asziszt83

    Szia

    Le tudnád írni, hogy min kell módosítani, hogy számozásos legyen a lapozó,

    Köszi!!

  11. Ádám

    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.

    Notice: Undefined offset: 143 in D:\CUC\EasyPHP-5.4.0RC4\www\function.php on line 80
    80. sor: print '' . $lap_array[($i * $limit)] . '-' .$lap_array[(($i * $limit) + ($limit - 1))]. ' (' . $url . '?page=' . ($i * $limit) . ')';

    é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.

Van hozzáfűznivalód? Írj nekem közvetlenül.

Kapcsolat