- A karmos/ujjbegyes fogásokkal nyomulók örömére megjött az Arye szénszálas egere
- ISA dokumentáció árulkodik az Intel közelgő magjairól
- TMR technológiás Keychron billentyűzet, ezúttal teljesen kerámiából
- Bemutatkoztak az NZXT legfrissebb, C Gold Core sorozatú tápjai
- Ha eGPU-ról van szó, akkor az OCuLink a teljesítménybajnok
Aktív témák
-
cucka
addikt
de, valamennyivel biztos lassabb, bár nem hinném, hogy számottevő lenne a különbség.
ha 1 text mezőben tárolod a 220 oszlopot, akkor annak a kezelhető formára hozása is időigényes. egyébként ha nem extrém terhelésre készíted az alkalmazásodat, akkor kb. teljesen fölösleges ilyen apró sebességkülönbségek miatt szenvedni egy rossz, nehezen kezelhető, átláthatatlan kóddal. -
cucka
addikt
mit jelent a teljes egyezés? ugye szavakra bontod, ha akarod, hogy csak akkor számítson találatnak, ha a szövegben is szó a keresett szöveg, akkor LIKE '% szoveg %' a feltételed, megfigyelheted, hogy előtte-utána szóköz van. persze ez nem fog működni mondat első-utolsó karakterére, vagy ha vessző van a szó után, stb..
szerintem a legegyszerűbb úgy megoldani, ha az eddigi módon leválogatod a találatokat, majd php-vel kiszűröd azokat, amelyek nem jók. ennek rengeteg módja lehet, a legcélszerűbb mondjuk reguláris kifejezéseket használni. (eregi vagy preg_match függvények, attól függően, hogy milyen fajta reg.kifejezésekhez van gusztusod. perl-es változat mondjuk jóval hatékonyabb) -
cucka
addikt
egyrészt ez a kód nem igazán jó, pl. egyik if-ben használsz egy $wordcount nevű inicializálatlan változót. ezen kívül az sql lekérdezés LIKE részének átírásával tudod alakítani azt, hogy milyen találatokat kapj. select distinct használata miért indokolt? csak mert elég lassú dolog.
-
-
L3zl13
nagyúr
PH-n is submitol. Vagy arra gondolsz, hogy ne kelljen külön gombot nyomni?
Ahhoz a select boxnál be kell állítani az onChange eseményre a submit-ot. (vagy egy átirányítást, és GET-es értékátadást, mint itt a PH esetében)
Mellesleg nem gondoltál még olyanra, hogy esetleg megnézd az oldal forrását, és egy kis önszorgalommal kilogikázd saját magad?
Ez már régen nem PHP+MySQL kérdés...
[Szerkesztve] -
faster
nagyúr
list($hirek_szama) = mysql_fetch_row(mysql_query('SELECT count(*) FROM emberek'));
A hírek számának lekérdezése, ugyanazt írtam, amit Tyrael, csak egy sorba belesűrítettem az egészet.
if(!$page) $page = 1;
Ha nincs oldalszám, akkor az első oldal az aktuális.
echo '<table cellpadding=''3''><tr>';
...
echo '</tr></table>';
Ez egy HTML táblázat a táblázat celláiba kerülnek az oldalszámok.
for($i=1;$i<=ceil($hirek_szama/$darabperlap);$i++) {
Ez a ciklus írja ki az oldalak számait, egytől a maximális oldal számáig. A max. oldal száma attól függ, hány elem kerül egy oldalra ($darabperlap), és összesen hány elem van ($hirek_szama), ezt kell elosztani egymással, és felfelé kerekíteni, hogy ne törtszámot kapjunk (ceil).
if($i == $page) echo '<td><b>'.$i.'</b></td>';
Ha épp az aktuális oldal számát írjuk ki, akkor csak kiírjuk a számjegyet, jelen esetben bold formázással.
else echo '<td><a href='.$_SERVER['SCRIPT_NAME'].'?page='.$i.'>'.$i.'</a></td>';
Minden más oldalnál az oldal számát kattintható hivatkozásként írjuk ki, a hivatkozás linkjébe kerül a futtató program neve ($_SERVER['SCRIPT_NAME']), a page nevű paraméterbe kerül az aktuális oldal száma.
Röviden ennyi.
[Szerkesztve] -
faster
nagyúr
Arra a részre, ahova az oldalszámok mennek:
oldalak:
<?
list($hirek_szama) = mysql_fetch_row(mysql_query('SELECT count(*) FROM emberek'));
if(!$page) $page = 1;
echo '<table cellpadding=''3''><tr>';
for($i=1;$i<=ceil($hirek_szama/$darabperlap);$i++) {
if($i == $page) echo '<td><b>'.$i.'</b></td>';
else echo '<td><a href='.$_SERVER['SCRIPT_NAME'].'?page='.$i.'>'.$i.'</a></td>';
}
echo '</tr></table>';
?>
Remélem, nem gépeltem el semmit. -
faster
nagyúr
$hirek=mysql_query(''SELECT * FROM emberek ORDER BY nev DESC LIMIT $offset,$darabperlap'');
while ($sor = mysql_fetch_array($hirek))
{
$sorok[]=$sor;
}
$hirek=$sorok;
foreach ( $hirek as $sorok => $ertek )
{
print ''$sorok = $ertek<br>'';
}
Ezt a részt nem értem, nem oldalszámokat akarsz megjeleníteni? -
Tyrael
senior tag
megvan a megoldas.
te nem is nyerted vissza a hirekbol a sorokat.
nekem kulon fuggvenyem van ra, lenyeg az, hogy mysql_query altal nem tombot, vagy ilyesmi fogsz visszakapni, hanem egy resource-ot (eroforrast), ezt fel kell dolgoznod a mysql_fetch_ fuggvenyek valamelyikevel.
te esetedben mysql_fetch_array kellene
tehat pl:
$hirek_szama=mysql_query(''SELECT count(*) FROM emberek'');
$hirek_szama=mysql_fetch_array($hirek_szama);
$hirek_szama=$hirek_szama[0];
ha minden igaz, akkor itt mar meglesz a hirek szama, szamkent a $hirek_szama valtozoban.
ezutan:
$hirek=mysql_query(''SELECT * FROM emberek ORDER BY nev DESC LIMIT $offset,$darabperlap'');
while ($sor = mysql_fetch_array($hirek))
{
$sorok[]=$sor[];
}
$hirek=$sorok;
ha minden igaz, ezek utan benne lenne a $hirek tombben az x darab hir.
Tyrael -
Tyrael
senior tag
$parancs = ''SELECT * FROM emberek ORDER BY NEV LIMIT 0,20'';
kivalasztja az osszes embert az emberek mezobol, nev szerint rendezi, majd az elso 20 talalatot visszaadja.
mi ezzel a baj?
ami a lenyeg:
LIMIT honnan, mennyit
honnan. szamu sor NEM LESZ BENNE A TALALATOKBAN
ergo ha LIMIT 1, 20 lenne a lekerdezes, akkor a 2-21 kozti tartomanyt adna neked vissza a szerver.
neked pedig ezek az intervallumok kellenek:
1-20
21-40
stb.
jo az a lekerdezes.
Tyrael
[Szerkesztve] -
Tyrael
senior tag
gondolom kevesebb hired van, mint amennyi a $darabperlap erteke.
nalam 1 lapra 5 hir kerult, ha adatbazisban 5, vagy annal kevesebb hir volt, akkor csak 1 lap kellett, ha tobb, akkor tobb.
es az aktualis lapra nem lehet ranyomni, ugy csinaltam meg (igy ha sok lap kozott navigal, akkor lehet tudni, melyiken van epp most)
Tyrael -
darabka
tag
-
Tyrael
senior tag
en igy oldottam meg magamnak phpval (hirek listazasat oldalankent 10 hirrel):
$oldal=(int) $_GET['oldal';
$dbperlap=10;
$mettol=$oldal*$dbperlap;
mysql_lekerdezes(SELECT * FROM tabla WHERE feltetel LIMIT $mettol, $dbperlap);
es a hirek ala kiraktam linkeket az osszes oldalra
$hirek_szama=mysql_lekerdezes(SELECT count(*) FROM tabla);
$lapok_szama=$hirek_szama/$oldal;
for($i=0,$i<=$lapok_szama,$i++)
{
$sorszam=$i+1;
echo ''<a href='hirek.php?oldal=$sorszam'>$sorszam</a>'';
}
vagy valami hasonlot (fejbol irtam, biztos bugos)
Tyrael -
Aktív témák
- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Milyen belső merevlemezt vegyek?
- Vicces képek
- Szünetmentes tápegységek (UPS)
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Windows 11
- Kuponkunyeráló
- További aktív témák...
- Gamer PC-Számítógép! Csere-Beszámítás! R5 3600 / RX 5700 / 16GB DDR4 / 512GB SSD
- AKCIÓ! Apple MacBook Pro 16 2024 M4 Max 48GB 1TB SSD macbook garanciával hibátlan működéssel
- GYÖNYÖRŰ iPhone 13 128GB Starlight- 1 ÉV GARANCIA, Kártyafüggetlen,,MS3433
- iPhone XR 64GB Black -1 ÉV GARANCIA - Kártyafüggetlen, MS3115
- Bomba ár! Dell Latitude E5550 - i5-5GEN I 8GB I 256GB SSD I 15,6" I W10 I HDMI I Cam I Gari!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest