Hogyan lehetne megoldani a kilistazasnal? (PHP+SQL)
sziasztok
kerem a magusokat, hogy ne kovezzenek.
Talaltam egy kilistazo kodot amibe van lapozasi funkcio is. alakitottam mar rajta. phpba is bele bele nyultam helyenkent, viszont nem tudok programozni.
Lenyeg az, hogy sikeresen megoldottam, hogy ha rakattintok a listaban levo egyik nevre, akkor utana csak az azzal a nevvel szereplo rekordok listazodnak ki.
Viszont, a lapozas azutan nem mukodik, mivel a masodik oldalra valo lepesnel, gyakorlatilag az osszes rekord 2. oldalara lep.
egyebkent itt a link remelem nem tilos:
http://hunited.org/barcodes/result.php
es ime itt a brillians kod:
<?php
mysql_connect("localhost","rjntvg_preshift","123456a") or die (mysql_error());
mysql_select_db("rjntvg_wp252") or die (mysql_error());
if (isset($_GET['date'])) {
$sql = mysql_query("SELECT * FROM barcodes WHERE date=\"".mysql_real_escape_string($_GET['date'])."\" ORDER BY id ASC");
} elseif (isset($_GET['user'])) {
$sql = mysql_query("SELECT * FROM barcodes WHERE user=\"".mysql_real_escape_string($_GET['user'])."\" ORDER BY id ASC");
} else {
$sql = mysql_query("SELECT * FROM barcodes ORDER BY id ASC");
}
$nr = mysql_num_rows($sql);
if (isset($_GET['pn'])) {
$pn = preg_replace('#[^0-9]#i', '', $_GET['pn']);
//$pn = ereg_replace("[^0-9]", "", $_GET['pn']);
} else {
$pn = 1;
}
$itemsPerPage = 10;
$lastPage = ceil($nr / $itemsPerPage);
if ($pn < 1) { // If it is less than 1
$pn = 1; // force if to be 1
} else if ($pn > $lastPage) {
$pn = $lastPage;
}
$centerPages = "";
$sub1 = $pn - 1;
$sub2 = $pn - 2;
$add1 = $pn + 1;
$add2 = $pn + 2;
if ($pn == 1) {
$centerPages .= ' <span class="pagNumActive">' . $pn . '</span> ';
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $add1 . $user . '">' . $add1 . '</a> ';
} else if ($pn == $lastPage) {
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $sub1 . '">' . $sub1 . '</a> ';
$centerPages .= ' <span class="pagNumActive">' . $pn . '</span> ';
} else if ($pn > 2 && $pn < ($lastPage - 1)) {
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $sub2 . '">' . $sub2 . '</a> ';
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $sub1 . '">' . $sub1 . '</a> ';
$centerPages .= ' <span class="pagNumActive">' . $pn . '</span> ';
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $add1 . '">' . $add1 . '</a> ';
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $add2 . '">' . $add2 . '</a> ';
} else if ($pn > 1 && $pn < $lastPage) {
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $sub1 . '">' . $sub1 . '</a> ';
$centerPages .= ' <span class="pagNumActive">' . $pn . '</span> ';
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $add1 . '">' . $add1 . '</a> ';
}
$limit = 'LIMIT ' .($pn - 1) * $itemsPerPage .',' .$itemsPerPage;
if (isset($_GET['date'])) {
$sql2 = mysql_query("SELECT * FROM barcodes WHERE date=\"".mysql_real_escape_string($_GET['date'])."\" ORDER BY id ASC $limit");
} elseif (isset($_GET['user'])) {
$sql2 = mysql_query("SELECT * FROM barcodes WHERE user=\"".mysql_real_escape_string($_GET['user'])."\" ORDER BY id ASC $limit");
} else {
$sql2 = mysql_query("SELECT * FROM barcodes ORDER BY id ASC $limit");
}
$paginationDisplay = "";
if ($lastPage != "1"){
$paginationDisplay .= 'Page <strong>' . $pn . '</strong> of ' . $lastPage. ' ';
if ($pn != 1) {
$previous = $pn - 1;
$paginationDisplay .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $previous . '"> Back</a> ';
}
$paginationDisplay .= '<span class="paginationNumbers">' . $centerPages . '</span>';
if ($pn != $lastPage) {
$nextPage = $pn + 1;
$paginationDisplay .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $nextPage . '"> Next</a> ';
}
}
$outputList = '';
while($row = mysql_fetch_array($sql2)){
$id = $row["id"];
$barcode = $row["barcode"];
$time = $row["time"];
$date = $row["date"];
$user = $row["user"];
$outputList .= '<tr style="border:#999 1px solid;"><td style="border:#999 1px solid;">' . $barcode . '</td><td style="border:#999 1px solid;">' . $time . '</td><td style="border:#999 1px solid;">' . $date . '</td><td style="border:#999 1px solid;"><a href="result.php?user=' . $user . '">' . $user . '</a></td></tr>';
}
?>
<html>
<head>
<title>Barcodes</title>
<style type="text/css">
<!--
.pagNumActive {
color: #000;
border:#060 1px solid; background-color: #D2FFD2; padding-left:3px; padding-right:3px;
}
.paginationNumbers a:link {
color: #000;
text-decoration: none;
border:#999 1px solid; background-color:#F0F0F0; padding-left:3px; padding-right:3px;
}
.paginationNumbers a:visited {
color: #000;
text-decoration: none;
border:#999 1px solid; background-color:#F0F0F0; padding-left:3px; padding-right:3px;
}
.paginationNumbers a:hover {
color: #000;
text-decoration: none;
border:#060 1px solid; background-color: #D2FFD2; padding-left:3px; padding-right:3px;
}
.paginationNumbers a:active {
color: #000;
text-decoration: none;
border:#999 1px solid; background-color:#F0F0F0; padding-left:3px; padding-right:3px;
}
-->
</style>
</head>
<body>
<div style="margin-left:64px; margin-right:64px;">
<h2>Total Barcodes: <?php echo $nr; ?></h2>
</div>
<div style="margin-left:58px; margin-right:58px; padding:6px; background-color:#FFF; border:#999 1px solid;"><?php echo $paginationDisplay; ?></div>
<div style="margin-left:64px; margin-right:64px;"><table style="border:#999 0px solid;"><?php print "$outputList"; ?></table></div>
<div style="margin-left:58px; margin-right:58px; padding:6px; background-color:#FFF; border:#999 1px solid;"><?php echo $paginationDisplay; ?></div>
</body>
</html>
tehat a lenyeg az lenne, hogy ha elkuldom azt hogy csak "XXXXX" nevueket listazzon, hogyan lehetne megoldani, hogy a lapozo tovabbra is mukodjon. valami sejtesem van, viszont mint irtam nem tudok kodokat irni. ollozgatok meg probalok rajonni, hogy mi hogy.
szoval valaki segitsen. koszonom. udv.
Nem tudom feltűnt-e, de az általad linkelt oldalon is, ha 10-nél több rekord tartozik egy névhez (pl.: fgjg), amit csak 2 oldalon tud megjeleníteni, akkor a 2. oldalra lépve ugyanúgy végrehajtódik a fő lekérdezés, és megjelenít mindenkit attól függetlenül, hogy te Jóskát kiválasztottad előtte.
Ha erre gondoltál, akkor az a legegyszerűbb, ha a $itemsPerPage értékét növeled.
Ha az, ha nem, én értek a PHP-hoz, de az biztos, hogy ezt a 100 sort nem fogom átbogarászni, hogy felfogjam mit is akar csinálni a kód, miért úgy lett megcsinálva, és rájöjjek, hogy hol a hiba.
Egyszerűbb lenne 0-ról megírni egy ilyet, mint ebből kitalálni a hiba okát, és helyrehozni.
Sose értettem miért vág bele ilyenbe valaki, aki nem tud programozni.
azert meg ugy is hogy nem ertek hozza ertem minden egyes sorat a kodnak, egyaltalan nem nehez.
es amit emlitettel, pont az a problemam, de le is irtam.
hogy miutan megkapja, hogy melyik user altal kuldott kodokat listazzon ki, azutan a lapozo nem mukodik, mert a 2-es gombon ami a 2. oldalra leptetne egy olyan hivatkozas kellene amiben megvan jelolve a user is.
$centerPages .= ' <span class="pagNumActive">' . $pn . '</span> ';
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $add1 . $user . '">' . $add1 . '</a> ';
} else if ($pn == $lastPage) {
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $sub1 . '">' . $sub1 . '</a> ';
$centerPages .= ' <span class="pagNumActive">' . $pn . '</span> ';
} else if ($pn > 2 && $pn < ($lastPage - 1)) {
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $sub2 . '">' . $sub2 . '</a> ';
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $sub1 . '">' . $sub1 . '</a> ';
$centerPages .= ' <span class="pagNumActive">' . $pn . '</span> ';
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $add1 . '">' . $add1 . '</a> ';
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $add2 . '">' . $add2 . '</a> ';
} else if ($pn > 1 && $pn < $lastPage) {
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $sub1 . '">' . $sub1 . '</a> ';
$centerPages .= ' <span class="pagNumActive">' . $pn . '</span> ';
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $add1 . '">' . $add1 . '</a> ';
ez az erintett kodreszlet egyebkent... ottvan hogy pn
'?pn=' . $add1
ez a resz jeloli a 2. oldalra lepo gombot.
viszont nyilvan nekem az kellene odairva lenni mint hivatkozas hogy result.php?pn=2&user=valami
megpedig az a VALAMI amit az elozoekben kilistaztattam.
az a baj, ha egy userre rámész, és több oldalnyi rekordja van, a lapozólinkekbe nem kerül be, hogy melyik user x. oldala, csak hogy x. oldal.
http://hunited.org/barcodes/result.php?user=fgjg&pn=2
ezt kéne összehozni, hogy minden linkbe bekerüljön, hogy ha megvan nyitva user, hozzá legyen adva a user=$user
pl itt is
if(isset($_GET['user'])){
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $add2 . '&user=' .$_GET['user']. '">' . $add2 . '</a> ';
}else{
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $add2 . '">' . $add2 . '</a> '; //eredeti
}
így jó hosszú lesz, de az $add változók után csinálhatsz helyette egy ilyet:
$user_link='';
if(isset($_GET['user'])) $user_link = '&user='.$_GET['user'];
ezután már csak ezt a változót kell hozzáadni, ami vagy üres, vagy tartalmazza a szükséges adatot ->
$centerPages .= ' <a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $add2 . $user_link . '">' . $add2 . '</a> ';
akkor jól gondolod, az a gond (+prev-next link is)
remélem érthetően írtam le :D
További kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!