Jump to content
php.lv forumi

php papildus info


Amerika

Recommended Posts

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

  • Replies 39
  • Created
  • Last Reply

Top Posters In This Topic

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

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

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 by Amerika
Link to comment
Share on other sites

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

$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 by Amerika
Link to comment
Share on other sites

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

$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

Guest
This topic is now closed to further replies.

×
×
  • Create New...