PHP lapozó átalakítása
Üdv.
Van egy lapozóm, ezt szeretném átalakítani, pontosabban a lapozó részét, úgy hogy ez ugye a jobb alsó sarokban kiírja hogy hány darab oldal van, és ezt egy lenyíló menüvel választhassam hogy hanyadik oldalra mennyen (<select><option value="1" selected>1</option><option value="2">2</option></select>), és ha a lenyíló menüben rákattintok az egyikre mondjuk a 2-es számúra akkor vigyen a 2. oldalra, ha a 3-asra akkor 3. oldal és így tovább... Nem igazán tudom hogy hogyan kellene átírni. Valaki átírná nekem?
itt a kódom:És a MySQL tábla:Esetleg ha van valakinek egyszerűbb, ami a fentebb említett dolgot tudja, akkor azt is elfogadom, a lényeg hogy MySQL-t használjon, ne SQL-t! Köszönöm!
■ Van egy lapozóm, ezt szeretném átalakítani, pontosabban a lapozó részét, úgy hogy ez ugye a jobb alsó sarokban kiírja hogy hány darab oldal van, és ezt egy lenyíló menüvel választhassam hogy hanyadik oldalra mennyen (<select><option value="1" selected>1</option><option value="2">2</option></select>), és ha a lenyíló menüben rákattintok az egyikre mondjuk a 2-es számúra akkor vigyen a 2. oldalra, ha a 3-asra akkor 3. oldal és így tovább... Nem igazán tudom hogy hogyan kellene átírni. Valaki átírná nekem?
itt a kódom:
<?php
$db_host = 'localhost'; // Adatbázis hoszt
$db_user = 'root'; // Adatbázis felhasználónév
$db_pass = '32426b3e53'; // Adatbázis jelszó
$db_table = 'lapozo'; // Adatbázis név
mysql_connect($db_host,$db_user,$db_pass) or die(mysql_error());
mysql_select_db($db_table) or die(mysql_error());
//Változók definiálása
$egy_oldal_max = 20;
function foot_linkek($link, $tomb_szama, $oldalankenti_db, $kezdes, $act_oldal){
//Változó definiálása
$kimenet ="";
$szam = 0;
if( ($kezdes + $oldalankenti_db) > $tomb_szama){
$max = $tomb_szama;
}else{
$max = ($kezdes + $oldalankenti_db)-1;
}
$kimenet .= "<table class='oldal_szamozas' border='0' width='100%'>
<tr>
<td valign='top'>Megjelenítve <b>".$kezdes."</b> től <b>".$max."</b> -ig (összesen <b>".$tomb_szama."</b> találatból)<td>
<td align='right'>";
// Az alsó kinálati sáv kiíratása
if ($tomb_szama > $oldalankenti_db) {
$k = $tomb_szama;
$kimenet .= "Talált oldalak: ";
for ($k; $k > 0; $k=$k-$oldalankenti_db) {
$szam=$szam+1;
if($szam == $act_oldal){ $kimenet .="<b>".$szam."</b> ";
}else{
$kimenet .= '<a href="'.$link.'oldal='.$szam.'" style="text-decoration: none;">'.$szam.' </a>';
}
}
}
$kimenet .= '</td></tr></table>';
return $kimenet;
}
$sql = "SELECT COUNT(name) as db FROM name" or die(mysql_error());
$db = mysql_fetch_assoc(mysql_query($sql)) or die(mysql_error()); //Csak akkor használjuk így ha max egy eredmény lehet!
if(isset($_GET["oldal"])){
$oldal = $_GET["oldal"];
}else{
$oldal = 1;
}
$limit = (($oldal*$egy_oldal_max)-$egy_oldal_max);
//Olvassuk ki a megjelenítendő szöveget
$sql = "SELECT * FROM name ORDER BY nev_leiras ASC LIMIT ".$limit.", ".$egy_oldal_max." ";
$talalatok = mysql_query($sql) or die("Hibás lekérdezés!");
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Oldal számozás</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
</head>
<body>
<table border="0" style="background-color:#CCCCCC; padding:5px; border: 2px solid #234EF5; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; ">
<tr>
<td style="height:150px; width:480px; " valign="top"><?php
while($talalat = mysql_fetch_assoc($talalatok)){
echo $talalat["name"]."<br/>";
}
?></td>
</tr>
<tr>
<td><?php echo foot_linkek("index.php?", $db["db"],$egy_oldal_max, ($limit+1), $oldal );?></td>
</tr>
</table>
</body>
</html>
<?php
print($oldal);
?>
CREATE TABLE `name` (
`nev_leiras` varchar(1000) NOT NULL,
`name` varchar(1000) NOT NULL,
`nev` varchar(1000) NOT NULL,
`language_id` int(255) NOT NULL auto_increment,
PRIMARY KEY (`language_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
Rossz helyre írtál
---
Tudnál nekem segíteni?
De persze mindíg van, aki segít.
Van olyan változat is, ahol a kattintás után azonnal elküldi, de én azt személy szerint nem szeretem, mert könnyen mellényúl az ember és lassú, vagy korlátolt netnél ez igencsak bosszantó lehet.
A 68. sorban az 'empty' megkettőződésével ne törődj!
Van azonban néhány jótanácsom:
1. Tényleg ne nagyon írj ilyeneket, hogy valaki csinálja meg, mert a zila-éhoz hasonló válaszokat kapsz.
2. Ha legközelebb egy neten is fennt lévő honlapban kéne hibát keresni, akkor szúrj be egy linket, hogy megnézhessék (láttam már emiatt hoszzú-hosszú vitákat).
3. A PHP-ban, ha egy 'string'-et dupla (vagy szimpla) idézőjelekkel határolsz és a 'string'-ben is van ilyen karakter, akkor tegyél elé egy fordított perjelet (AltGr + Q) és akkor karakterként és nem programutasításként értelmezi.
4. Ha hosszú (főleg HTML) 'string'-et gépelsz be, akkor használhatsz egy <<< operátort. Ennek az operátornak nem tudom, hogy mi a neve, de a lényeg az, hogy az utána lévő (akármilyen -> nálam 'EOF') szöveg jelzi a 'string' kezdetét és egy új sorba írt ugyan ilyen szöveg (nem lehet elötte semmi) jelzi a végét + a pontosvessző.
5. Ha az ilyen módon létrehozott 'string'-be szeretnél változót beilleszteni, akkor használt elötte egy '{'-t utánna pedig egy '}'-t. Ha jól tudom, akkor ilyen módon fügvényeket nem hívhatsz meg.
6. Ha a MySQL tábládból csak egy mezőre van szükség, akkor csak azt kérd le és ne az összeset, mert feleslegesen lassítod a 'script'-et.
7. Ha egy asszociatív (szövegget indexelt) tömbből kérsz le adatokat, akkor érdemes szimpla idézőjelekkel határolni a szöveget, mert akadhatnak belőle problémák, ha nem így teszel (nem biztos, hogy lesz, de nekem már volt).
8. Az 'isset' helyett ebben az esetben azért jobb a '!empty', mert ha hivatozik valahogy egy rossz linkre ('index.php?oldal='), akkor az '$oldal' értéke üres 'string' => az 'isset' 'true'-t ad vissza, mert a változó létezik. Ha azonban '!empty'-t használsz, akkor 'false'-t ad vissza és ebben ez esetben neked ez a jó!
Remélem megfelel.
nincs téma
Ez nem tetszik neki: $kimenet = <<<EOF
Nem ismerem sajnos az EOF-t nem tudom mi lehet..
sörre :)
a 46. sörre már én is hibákat írnék :D
{/OFF}
hehe
De...azthiszem most jó lett...az a része, most azu utolsó sorra ír hibát: Parse error: syntax error, unexpected $end in C:\AppServ\www\lapozo.php on line 110
Ez azért van...
új sorban (ez amúgy OK) és
!!!elötte semmi mással!!! (szerintem van elötte egy 'space' vagy 'tab') ugyan az a szöveg egy ';'-vel a végén!
(Szerintem olvasd el még egyszer figyelmesen a jótanácsokat!)
"heredoc" szintaxis
Nem az EOF a lényeg, hanem a "<<<".
thx