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> ';
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:
<?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
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.
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.
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