Amerika Posted July 16, 2012 Report 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; } ..
Amerika Posted July 16, 2012 Author Report Posted July 16, 2012 Izmēģini pats: print_r($_GET); Perfekti! Dank schun.
daGrevis Posted July 17, 2012 Report Posted July 17, 2012 `?a=foo&b=bar` nav gan mod_rewrite, waplet!
waplet Posted July 17, 2012 Report Posted July 17, 2012 `?a=foo&b=bar` nav gan mod_rewrite, waplet! Jap, es te bišķi pārskatījos to pirmo linku :)
Amerika Posted July 17, 2012 Author Report 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.
Grey_Wolf Posted July 18, 2012 Report 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
Amerika Posted July 19, 2012 Author Report 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
briedis Posted July 19, 2012 Report 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.
Maris-S Posted July 19, 2012 Report 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
Amerika Posted July 19, 2012 Author Report 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
briedis Posted July 19, 2012 Report 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?
Amerika Posted July 19, 2012 Author Report 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.
Recommended Posts