Autor | Zpráva | ||
---|---|---|---|
Ruda Profil |
#1 · Zasláno: 2. 2. 2008, 21:31:00
Zdary. Nenašel by se někdo kdo mi poradí kde dělám chybu. Tenhle script používám na svý stránce na stránkování článků. Teď jsem ho chtěl upravit aby tahal z databáze jen články s určitý kategorie, ale nějak to nemůžu rozchodit. Pořád to vypisuje všechny články. Předem dík za radu.
|
||
Ruda Profil |
#2 · Zasláno: 2. 2. 2008, 21:32:12
Bože já sem jalovice.Tady je ten script
<?php require_once "spojeni.php"; //pripojeni k db mysql_query("SET NAMES 'utf8'") or die('Could not set names'); $radku = mysql_num_rows(mysql_query("SELECT id FROM clanky WHERE kategorie='".($_GET["id"]."'"))); $po = 5; /* počet řádků na stránku */ $max_stranek = ceil($radku / $po); /* počet stránek */ $url_stranka = ($_GET["stranka"] / $po) + 1; /* Aktuální stránka */ if(empty($_GET["stranka"])) {$stranka = 0;} else {$stranka = $_GET["stranka"];} $vyber = mysql_query("SELECT * FROM clanky ORDER BY id DESC LIMIT ".intval($stranka).",$po"); while($vypis = mysql_fetch_array($vyber)) { $id=$vypis["id"]; $obrazek=$vypis["obrazek"]; $titulek=$vypis["titulek"]; $text=$vypis["text"]; $datumdb = $vypis["datum"]; $datum = Date("d.n Y",$datumdb); $kategorie=$vypis["kategorie"]; $autor=$vypis["autor"]; echo "$obrazek"; echo "<h3>$titulek</h3>"; echo "$text"; echo "<div class=autor><br> $autor I $datum I $kategorie</div>"; } echo '<div class=pod>'; echo(" <div id=pager><br><br>"); for($i=0; $i < $max_stranek; $i++) { $cislo = ($i + 1); $url_cislo = ($cislo * $po) - $po; if($url_stranka != $cislo) { echo "<a href=\"?stranka=".$url_cislo."\">".($i + 1)."</a>\n"; } else { echo "<strong>".($i + 1)."</strong>\n"; } |
||
Alphard Profil |
#3 · Zasláno: 2. 2. 2008, 21:55:13
$radku = mysql_num_rows(mysql_query("SELECT id FROM clanky WHERE kategorie='".($_GET["id"]."'")));
méně efektivní je už jenom použití * $vyber = mysql_query("SELECT * FROM clanky ORDER BY id DESC LIMIT ".intval($stranka).",$po"); tady jsi zapomněl na where ... kategorie='".($_GET["id"]."'" přidej nápis: neošetřené sql injection, nedělejte mi prosím bordel v systému :-) |
||
Ruda Profil |
#4 · Zasláno: 2. 2. 2008, 22:12:28
Dík moc jdu to zkusit. A na to ošetření sql inj. Odkaz na nějakej dobrej návod nebo článek by nebyl ? :-) Já moc databázím nerozumim. Co to může spáchat.
|
||
Alphard Profil |
#5 · Zasláno: 2. 2. 2008, 22:25:26
řetězce prožeň funkcí mysql_real_escape_string(), u čísel stačí překonvertovat na číslo (int)
WHERE kategorie=".((int) $_GET["id"]))); |
||
Ruda Profil |
#6 · Zasláno: 2. 2. 2008, 22:35:10
Tak člověče o tom zabezpečení si jsem toho našel hromadu, tak to proštuduju, ale s tím where je to nějak divný ať to zkouším jak chci tak to nechodí. Pořád mi to hází synt.chybu. Asi to dávam špatně.
|
||
Ruda Profil |
#7 · Zasláno: 2. 2. 2008, 22:40:41
Dík Za radu. Hned to udělám. Ty mi radíš rychlejc než se ptám :-)
|
||
Alphard Profil |
#8 · Zasláno: 2. 2. 2008, 22:42:32
Pořád mi to hází synt.chybu
jakou? |
||
Ruda Profil |
#9 · Zasláno: 2. 2. 2008, 22:44:10
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\MTB\soubory_mtb\vypiskategorie12.php on line 13
|
||
Ruda Profil |
#10 · Zasláno: 2. 2. 2008, 22:45:52
No to není zrovna synt.chyba
|
||
Alphard Profil |
#11 · Zasláno: 2. 2. 2008, 22:48:15
chyba je v dotaze
vlož za něj echo mysql_error(); pozor na pořadí, má být select, where, order, limit |
||
Ruda Profil |
#12 · Zasláno: 2. 2. 2008, 22:56:55
tak teď už je tam snad jen nějaká blbina ,ale to snad najdu.
Parse error: syntax error, unexpected T_STRING in C:\wamp\www\MTB\soubory_mtb\vypiskategorie12.php on line 11 |
||
Ruda Profil |
#13 · Zasláno: 2. 2. 2008, 23:35:25
Dík moc .Tak jsem to rozchodil. Vzhledem k tomu jaká jsem lamka tak docela brzo. :-) Ještě jednou dík
|
||
Alphard Profil |
#14 · Zasláno: 2. 2. 2008, 23:47:21 · Upravil/a: Alphard
není zač, při problémech si vypisuj chyby a neustále mysli na efektivitu a bezpečnost
$radku = mysql_num_rows(mysql_query("SELECT id FROM clanky WHERE kategorie='".($_GET["id"]."'"))); lze výhodněji nahradit za: $radku = mysql_result (mysql_query ("select count(*) from clanky where kategorie = ".((int) $_GET['kategorie'])), 0, 0); |
||
Ruda Profil |
#15 · Zasláno: 2. 2. 2008, 23:57:34
To je na mě zatím moc. Já si tu bastlím svoje stránky a učím se za pochodu. Mám to jen jako koníčka. Nehodlám se tím živit a nehodlam to dělat ani pro kamarády, páč mám jen jedny nervy a ty si už ničim svejma stránkama :-) Tak jsem rád když mi takhle někdo píchne. Dík a třeba zas někdy až tu budu zoufat :-) , ale já než bych votravoval tak radši dlouho zkouším a ještě dýl hledám po netu. Tý jo nějak jsem se rozepsal. Taj ještě jednou Ď a zdary.
|
||
Časová prodleva: 16 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0