Amerika Posted July 16, 2012 Report Share Posted July 16, 2012 Forumos un visādās online formās esmu redzējis adresi šādi: http://kautkas.lv/index.php?245 http://kautkas.lv/index.php?/forum/view.php&25 Nojaušu, ka pēc "?" index.php tiek iedota papildus informācija, kas nosaka ko skriptam darīt tālāk. Nēsu redzējis kodu tam, bet vai tas līdzinās kaut kam šādām? Un ja nē tad kā ir? $value kā pirmie dati pēc "?" $value2 kā dati pēc "&" .. if ($value > 200) { echo 'works'; } else { echo 'doesn't work'; } .. .. if ($value == '/forum/view.php') { $mysql = mysql_connect(utt.); $data = mysql_query(SELECT text FROM topics WHERE $value2); echo $data; } .. Link to comment Share on other sites More sharing options...
briedis Posted July 16, 2012 Report Share Posted July 16, 2012 Izmēģini pats: print_r($_GET); Link to comment Share on other sites More sharing options...
waplet Posted July 16, 2012 Report Share Posted July 16, 2012 mod rewrite saucās tas :) Link to comment Share on other sites More sharing options...
Amerika Posted July 16, 2012 Author Report Share Posted July 16, 2012 Izmēģini pats: print_r($_GET); Perfekti! Dank schun. Link to comment Share on other sites More sharing options...
daGrevis Posted July 17, 2012 Report Share Posted July 17, 2012 `?a=foo&b=bar` nav gan mod_rewrite, waplet! Link to comment Share on other sites More sharing options...
waplet Posted July 17, 2012 Report Share Posted July 17, 2012 `?a=foo&b=bar` nav gan mod_rewrite, waplet! Jap, es te bišķi pārskatījos to pirmo linku :) Link to comment Share on other sites More sharing options...
Amerika Posted July 17, 2012 Author Report Share Posted July 17, 2012 Taisu komentāru sistēmu, bet nevaru īsti izdomāt kā uztaisīt iespēju šķirstīt pa komentāru lapām attiecīgaja topikā. http://www.imagebam.com/image/c4999a202027568 Šeit var redzēt pirmos 10 ierakstus. Mysql līnījā LIMIT 10. Vai kāds nevar pateikt kādu skriptu vai piemēru kā izskatās vairāku komentāru izdalīšana pa lapām? Ceru ka sapratāt. $_GET izmantoju lai skripts zinātu kurus ierakstus jārāda. Link to comment Share on other sites More sharing options...
Grey_Wolf Posted July 18, 2012 Report Share Posted July 18, 2012 Taisu komentāru sistēmu, bet nevaru īsti izdomāt kā uztaisīt iespēju šķirstīt pa komentāru lapām attiecīgaja topikā. .... Vai kāds nevar pateikt kādu skriptu vai piemēru kā izskatās vairāku komentāru izdalīšana pa lapām? Ceru ka sapratāt. $_GET izmantoju lai skripts zinātu kurus ierakstus jārāda. iemācies meklēt: ir speciāla sadaļa kur aprunāti daudzi jautājumi Link to comment Share on other sites More sharing options...
daGrevis Posted July 18, 2012 Report Share Posted July 18, 2012 Atslēgvārds: «pagination». Link to comment Share on other sites More sharing options...
Amerika Posted July 19, 2012 Author Report Share Posted July 19, 2012 (edited) iemācies meklēt: ir speciāla sadaļa kur aprunāti daudzi jautājumi Paldies par šo lapu. Izveidoju to ka rādas lapas, bet problēma ir saskaņot ar komentāru izvadītāju skriptu. Mēģinu izmantot šo principu http://php.lv/f/topi...ndpost__p__8447 ,bet LIMIT vērtībās nevar likt variabļus. Tā būtu saskaņojis, kad address barā parādās noteiktā vērtība, kad piespiež citu lappusi, tad parādītos noteiktie komentāri. Ir kāds savādāks veids kā noteiktos komentārus izvadīt ar $_GET palīdzību. Lappušu izveidošanai ņēmu palīgā šo skriptu http://php.lv/f/topi...dpost__p__14190 Edited July 19, 2012 by Amerika Link to comment Share on other sites More sharing options...
briedis Posted July 19, 2012 Report Share Posted July 19, 2012 Nosaki cik vienā lapā ierakstus attēlosi: X = 10 Nosaki, cik ierakstu vispār ir datubāzē Y = (SELECT COUNT(*) ... ) Nolasi no $_GET lapaspuses numuru Z = $_GET['lpp'] Izrēķini, cik lapaspuses kopumā ir pieejamas: W = noapaļot_uz_augšu( Y / X ) Izrēķini kvērija LIMIT offsetu OFFSETS = Z * X - X Atlasi vienas konkrētas lapas ierakstus: SELECT * FROM BLA LIMIT OFFSETS, X Izdrukā lapaspuses: for( i = 0; i < W; i++) echo <a href="?lpp=i">i</a> Izdrukā visus ierakstus: while($row = mysql_fetch_assoc... Easy peasy, sākumskolas matemātika. Tik smadzenes drusciņ jāpakustina. P.S. Tas kods, ko tu ņēmi ir ļoti sūdīgs, jo tur ir gan izmantots @ operators, gan SQL injekcijas pieļautas, fuj. Link to comment Share on other sites More sharing options...
Maris-S Posted July 19, 2012 Report Share Posted July 19, 2012 Nosaki, cik ierakstu vispār ir datubāzē Y = (SELECT COUNT(*) ... ) Tēmas autoram tas iespējams vēl būs mazliet par sarežģītu, bet tomēr es ieteiktu paskatīties MySql funkciju FOUND_ROWS. http://dev.mysql.com/doc/refman/5.0/en/information-functions.html Link to comment Share on other sites More sharing options...
Amerika Posted July 19, 2012 Author Report Share Posted July 19, 2012 (edited) $X = 10; $Y = mysql_query("SELECT COUNT(*) FROM news_comments WHERE news_id = '$_GET[n]'"); $row3 = mysql_fetch_array($Y); $Z = $_GET['lpp']; $W = round($row3['COUNT(*)']/$X); $OFFSET = $Z*$X-$X; $data4 = mysql_query("SELECT * FROM news_comments WHERE news_id = '$_GET[n]' LIMIT $OFFSET,$X") or die(mysql_error()); Augšējais kods strādā, kā arī ziņu izdalīšana. Problēma ir kad crasho scripts dēļ lapušu izdales. Kas tur ir nepareizs? Īsti nesapratu kas bija domāts "i". for( i = 0; i < $W; i++) { echo '<a href="?lpp=i">i</a>'; } Edited July 19, 2012 by Amerika Link to comment Share on other sites More sharing options...
briedis Posted July 19, 2012 Report Share Posted July 19, 2012 Mans kods nebija domāts copy-paste :) Pieškir mainīgajiem normālus nosaukumus i ir parastsmainīgais. Tikai kaut kas trūkst tam "i", lai tas būtu normāls mainīgais..bet kas? Salabo SQL pieprasījumus, lai nebūtu iespējamas SQL injekcijas Lietojot round() notiek apaļošana uz augšu, ja ir .5. Tagad padomā, kas notiks, ja tev būs 101 ieraksts? Cik lapām būtu jābūt, ja vienā lapā ir 10 ieraksti? 101 / 10 = 10.1, kas noapaļojot ir 10. Bet vai tas ir pareizi? Link to comment Share on other sites More sharing options...
Amerika Posted July 19, 2012 Author Report Share Posted July 19, 2012 $limits = 10; $data3 = mysql_query("SELECT COUNT(*) FROM news_comments WHERE news_id = '$_GET[n]'"); $row3 = mysql_fetch_array($data3); $lpp = $_GET['lpp']; $ceil = ceil($row3['COUNT(*)']/$limits); $OFFSET = $lpp*$limits-$limits; $data4 = mysql_query("SELECT * FROM news_comments WHERE news_id = '$_GET[n]' LIMIT $OFFSET,$limits") or die(mysql_error()); $page = 1; for( $adrpage = 0; $adrpage < $ceil; $adrpage++) { echo '<a href="', '?n=' , $_GET[n] , '&lpp=' , $adrpage ,'">' . $page . '</a>'; $page++; } Viss tagat strādā. bet kā lai izdara lai $adrpage nebūtu nekad 0, lai sākas ar 1. Un varētu paprasīt piemēru pareizai un nepareizai sql rindai, kas izraisītu sql injekciju? Neko nezinu par injekciju izmantošanu. Link to comment Share on other sites More sharing options...
Recommended Posts