Egyszerű lapozó.
Üdv!
Van egy oldalam ahol while függvénnyel kiíratok elemeket.
Első kérdésem, hogyan tudnék kiíratni csak 12 dbot nem többet.
A lap aljára meg olyan egyszerű lapozót szeretnék, ami két nyílból áll balra és jobbra, ha a jobbra nyílra kattintanak akkor ugrik a következő 12 db létező ID számú bejegyzésre és azokat íratja ki. természetesen ha a bal oldalira kattintanak akkor vissza lépeget. Viszont kikötés is kellene bele, mégpedig hogy ha az ID egyenlő a legkisebbel akkor visszafelé ne tudjon lépni ha pedig a legnagyobbal akkor előrefelé ne tudjon lépni.
Valaki tudna nekem ebbe segíteni? előre is köszönöm
Üdv!
■ Van egy oldalam ahol while függvénnyel kiíratok elemeket.
Első kérdésem, hogyan tudnék kiíratni csak 12 dbot nem többet.
A lap aljára meg olyan egyszerű lapozót szeretnék, ami két nyílból áll balra és jobbra, ha a jobbra nyílra kattintanak akkor ugrik a következő 12 db létező ID számú bejegyzésre és azokat íratja ki. természetesen ha a bal oldalira kattintanak akkor vissza lépeget. Viszont kikötés is kellene bele, mégpedig hogy ha az ID egyenlő a legkisebbel akkor visszafelé ne tudjon lépni ha pedig a legnagyobbal akkor előrefelé ne tudjon lépni.
Valaki tudna nekem ebbe segíteni? előre is köszönöm
Üdv!
Első kérdésem, hogyan tudnék
Dögivel lehet találni ilyent, csak keresni kell.
While
Első kérdésem, hogyan tudnék kiíratni csak 12 dbot nem többet.
while
az nem függvény, hanem mondjuk while ciklus, kifejezés, kulcsszó, utasítás stb.Eltárolod hogy éppen melyik oldalon áll, alapértelmezetten mondjuk a 0-on, és
GET
változóban átadod, hogy melyik oldalra szeretne lépni.Köszönöm szépen fáradozásod
include('dbconn.php');
$eredmeny = mysql_query("SELECT * FROM filmek WHERE moderate = 1 ORDER BY id DESC");
print "<table bordercolor=darkgrey cellspacing='0' width='100%' height='90%' border=1 bgcolor=lightgrey>";
$hanyszor = 0;
while($sor = mysql_fetch_array($eredmeny)){
if(!is_float($hanyszor / 4) && $hanyszor != 0){
print "<tr>";
}
?>
<td onMouseOver="style.backgroundColor='darkgray';" onMouseOut="style.backgroundColor='lightgrey';" align="center">
<div id="bubble_tooltip">
<div class="bubble_top"><span></span></div>
<div class="bubble_middle"><span id="bubble_tooltip_content"><?php print $sor['cim'] ?></span></div>
<div class="bubble_bottom"></div>
</div>
<a href="movie.php?id=<?php print $sor['id'] ?>" onMouseMove="showToolTip(event,'<?php print $sor['cim'] ?><br>Megtekintés: <?php print $sor['latogatas'] ?>');return false" onMouseOut="hideToolTip()"><img src="<?php print $sor['cover'] ?>" width="120" border="0"></a></td>
<?php
++$hanyszor;
}
print "</tr></table><br><br>";
mysql_close($con);
?>
Gondolkodj
&&
illetveand
)?operátor.
Elég ha...
Mert akkor tudnád hogy lérezik egyszerű és összetett feltétel. És ha hallottál már a while ciklusról ami egy (elől)TESZTELŐS CIKLUS, akkor hallanod kellett a feltételekről is, hiszen a tesztelős ciklusokat a feltétel teljesülése illetve nem teljesülése irányítja, mivel ügye azt teszteli...
Egyébkén ebben a kontextusban a $row = mysql_.... is egy feltétel ami mindaddig igaz lesz, amíg a lekérdezés eredményeként kapott sorok el nem fogynak. Ugyanis az értékadás logikai értéke mindig igaz.
haladás
include('dbconn.php');
$eredmeny = mysql_query("SELECT * FROM filmek WHERE moderate = 1 ORDER BY id DESC");
print "<table bordercolor=darkgrey cellspacing='0' width='100%' height='90%' border=1 bgcolor=lightgrey>";
$counter = 0;
$hanyszor = 0;
while($counter < 12&&$sor = mysql_fetch_array($eredmeny)){
if(!is_float($hanyszor / 4) && $hanyszor != 0){
print "<tr>";
}
?>
<td onMouseOver="style.backgroundColor='darkgray';" onMouseOut="style.backgroundColor='lightgrey';" align="center">
<div id="bubble_tooltip">
<div class="bubble_top"><span></span></div>
<div class="bubble_middle"><span id="bubble_tooltip_content"><?php print $sor['cim'] ?></span></div>
<div class="bubble_bottom"></div>
</div>
<a href="movie.php?id=<?php print $sor['id'] ?>" onMouseMove="showToolTip(event,'<?php print $sor['cim'] ?><br>Megtekintés: <?php print $sor['latogatas'] ?>');return false" onMouseOut="hideToolTip()"><img src="<?php print $sor['cover'] ?>" width="120" border="0"></a></td>
<?php
++$counter;
++$hanyszor;
}
print "</tr></table><br><br>"; ?>
<?php $page = isset($_GET['page']) ? max(intval($_GET['page']), 0) : 0; ?>
<?php if ($page > 0): ?>
<a href="?page=<?php print $page - 1; ?>">Előző</a>
<?php endif; ?>
Aktuális oldal: <?php print $page; ?>
<?php if ($page < $max - 1): ?>
<a href="?page=<?php print $page + 1; ?>">Következő</a>
<?php endif; ?>
<?php
mysql_close($con);
?>
</body>
</html>
Viszont az oldal alján Csak annyit ír ki, hogy Aktuális oldal: 0
Hova tűnik a következő meg az előző szó? Nem jeleníti meg. most mit nézek be?
$max
LIMIT
-et a query-be addig az egésznek nincs értelme.dupla
oldalak
nah közbe ezt meg is tettem.
$result = mysql_query($x) or die(mysql_error());
$total_rows = mysql_fetch_row($result);
$max = $total_rows[0]/12;
Most már működik alul a dolog (van 25 rekordom és 2ig enged lépni 0val együtt)
Akkor már ez is megvan.
Viszont a LIMIT-es dolgot a queryben azt nem értem jó értem a lekérésbe tegyek limitet. De ezt most nem vágom h hol kéne. Mégegy kis fényt kérek kösz :D
szerk.: Jah igen a lényeg az az hogy hiába lépek, ugyanazt a 12 rekordot adja vissza.
RTM
nemtduom
Gondolkodni
Van mondjuk 200 sorod egy adatbázisban, ezeket 20-asával akarod kirajzolni. Egyszerűen kiszámolható, hogy ez összesen 10 oldal lesz.
Ha mondjuk a 3. oldal eredményeit akarom megkapni, akkor ugye a 40. sortól a 60. sorig akarod kiolvasni az eredményeket. Ez pontosan az oldalszám minusz egy szer 20 így néz ki az alsó limit:
Ez a lapozósdi valójában nem
Ez algoritmikus kérdés. Ha tudnád, hogy a lapozásnak milyen a menete, és milyen műveleteket kell elvégezni, akkor onnantól a megvalósítás már pofonegyszerű, mert csak számolni kell. Az hogy ehhez tartozik e limit a queryben vagy sem, az gyakorlatilag mindegy. A dolog lényege, hogy adott egy elemsorozat, amiből egy intervallumra vagy csak kíváncsi. Azt a matematikai számítást kellett volna kigondolnod, amivel ennek az intervallumnak az első illetve az utolsó elemének indexét kapod meg. Ha ez a képlet megvan, akkor tulajdonképpen már csak technikai kérdés, hogy ezekkel a számokkal mit csinálsz. Adott esetben egy sql lekérdezésbe teszed bele mint határérték, vagy éppen egy ciklusba teszed bele és egy tömb elemein lépkedsz.
Amit nem tudunk, mi sem és semmilyen könyv és senki az ég világon megtanítani, az a feladat végiggondolása, és lebontása kisebb egységekre. :) És ha ezt nem tudod elsajátítani, vagy nincsen hozzá készséged, akkor ezen el kell gondolkodni. :)
Talan ez a kod segit, igaz
A lapozo fuggvenyed:
Remélem segítettem.
Üdv!