Две проблемчета - как да ги разреша?

SLADE

Registered
Здравейте, колеги. Пускам една тема за два проблема, защото според мен са дребни и няма нужда от две теми.
Та първия проблем ми е, че изкарвам последните 10 статии(следователно те са със странициране), но статията най-отгоре която е на 1-ва страница трябва да е най-новата статия, а то ми излиза последната. Последната примерно е добавена на 10.10.2010г., а най-новата е на 03.03.2012г.
Та искам най-новата да е първа на 1-ва страница, а не както е сега, последна на последна страница. Ето го кода:
PHP:
<?php
include ("config.php");
function secure($var) {
return addslashes(htmlspecialchars($var));
}
$id = secure(@$_GET['id']);

$page = mysql_query("SELECT COUNT(*) as cnt FROM `news` WHERE `catid`='".$id."'") or die (mysql_error());   //Първа заявка, която взима броя на новините

$rpage = mysql_fetch_array($page);
$limit = 10; //По колко резултата да се показват на страница
$max_pages = ceil($rpage['cnt']/$limit);

if((int)$_GET['p']>0) {
$pages = (int)$_GET['p'];
} else {
$pages = 0;
}

$query = mysql_query("SELECT * FROM news WHERE catid = '$id' LIMIT ".($limit*$pages).",".$limit)or die(mysql_error());
$nums = mysql_num_rows($query);

while($row = mysql_fetch_object($query)) {
	if(($nums > 0) && ($id != NULL)) {

	$title = $row -> title;
	$novinata = $row -> novinata;
	$source = $row -> source;
	$kateto = $row -> catid;
	$pics = $row -> picture;
	$namepicture = $row -> namepicture;
	$date = $row -> date;
	$id = $row -> id;
	$views = $row -> views;

$title = utf8_wordwrap($title, 120, " ", '<br />\n');
$novinata = utf8_wordwrap($novinata, 100, " ", '<br />\n');

$novinata = str_replace(array('[b]', '[/b]', '[i]', '[/i]'), array('<b>', '</b>', '<i>', '</i>'), $novinata);

$comments = mysql_query("SELECT COUNT(id) AS `comments_counter` FROM `comment` WHERE `id_news` = ".$id) or die(mysql_error());
$comments = mysql_fetch_assoc($comments);

	if($kateto==1){
	$catss='Светско';
	}
	if($kateto==2){
	$catss='Скандално';
	}
	if($kateto==3){
	$catss='Криминално';
	}
	if($kateto==4){
	$catss='Made in BG';
	}
	if($kateto==5){
	$catss='По света';
	}
	if($kateto==6){
	$catss='Градски легенди';
	}
	if($kateto==7){
	$catss='Любопитно';
	}
	if($kateto==8){
	$catss='Секс';
	}
	if($kateto==9){
	$catss='Продукти';
	}

echo $novinata = "
<img src='".$pics."' width='120px' align='center' height='70px' style='float:left;margin-left:5px;margin-top:5px;' />
<div style='font-family: Georgia, serif;'><h3><a href='view.php?id=$id'><b>$title</b></a></h3></div>
<p class='author'><span>$date</span> | коментари <img src='img/ico_comment.gif'> ".$comments['comments_counter']." | видяна <img src='img/ico_sawn.gif'> $views</p><BR>";
	}
}

/*================ Странициране ======================*/
				if( $rpage['cnt'] > $limit )
				{
					//pagination
					$pagination="";
					
					if($_GET['p'] > 0)
					{
						$pagination .= '
						<a href="view1.php?id='.$_GET['id'].'&p='.($_GET['p']-1).'">Назад</a> ';
					}
												
					$max_on_the_pp = 9;

					if($_GET['p'] >= 3)
					{
					$ravno = $_GET['p']-3;
					}
												
					if($_GET['p'] >= 5)
					{
					$ravno = $_GET['p']-5;
					}
														
					for($i=$ravno-0;$i<($_GET['p']+$max_on_the_pp);$i++)
					{
						if(($i+1) <= $max_pages)
						{
							if($_GET['p'] == $i)
							{
								$pagination .= '<span class="current">'.($i+1).'</span>   ';
							}
							else
							{
								$pagination .= '<a href="view1.php?id='.$_GET['id'].'&p='.$i.'" class="page">'.($i+1).'</a>  ';
							}
						}
					}

						echo $pagination;
												
						if($_GET['p'] != $max_pages-1)
						{
							echo '<a href="view1.php?id='.$_GET['id'].'&p='.($_GET['p']+1).'">Напред</a>';
						}
				}
/*================ Странициране ======================*/

if(($nums > 0) && ($id != NULL)) {
} else if(!$_GET['id']) {
echo "<BR><b>Моля изберете категория, която да видите.</b>";
}
elseif ($nums == 0) {
echo "<BR><b>Грешка:</b> Все още няма качени новини в тази категория.";
}
?>



Втория проблем е следния:
PHP:
<?php
$nn=mysql_query("SELECT * FROM news WHERE catid='$idnovina' ORDER BY id DESC LIMIT 0,3");
while($n=mysql_fetch_assoc($nn)){

$i++;
$idnn=$n['id'];
$datenovina=$n['date'];
$broikata=$n['broikai'];
$titlenovina = stripslashes($n['title']);
$novina = stripslashes($n['novinata']);
$views = $n['views'];

$titlenovina = utf8_wordwrap($titlenovina, 25, " ", '<br />\n');
if(mb_strlen($novina,'UTF-8')>130){
$novina = mb_substr($novina,0, 130,'UTF-8')."...";
}

if($i==1 || $i==4 || $i==7 || $i==10 || $i==13){
	echo "<ul><li><a href='view.php?id=".$idnn."'><img src='".$n['picture']."' width='100px' height='50px' style='float:left;margin-top:5px;padding:5px;' /></a><div style='font-family: Georgia, serif;'><h4><a href='view.php?id=".$idnn."'><b>".$titlenovina."</b></a></h4></div><h6>".$n['date']."</h6> <h6>".$novina."</h6>
	</li></ul>";
}else{
if($idnovina == 1 || $idnovina == 2 || $idnovina == 3 || $idnovina == 4 || $idnovina == 5 || $idnovina == 6 || $idnovina == 7 || $idnovina == 8){
	echo "<ul><li><a href='view.php?id=".$idnn."'>".$titlenovina."</a>
	</li></ul>";
	}
}
}
?>
Така изкарвам 8 категории с по 3 статии в тях, но искам в едните да изкарвам 3 статии, а в другите 6 статии. Как ще стане това?

От if($i==1 || $i==4 || $i==7 || $i==10 || $i==13) изкарвам 5 категории - там са си 3 статии, но от if($idnovina == 1 || $idnovina == 2 || $idnovina == 3 || $idnovina == 4 || $idnovina == 5 || $idnovina == 6 || $idnovina == 7 || $idnovina == 8) искам да изкарам по 6 статии, а то пак изкарва 3. Как да го направя за едното да са по 3 статии, а в другото по 6 статии. Има ли такъв вариант?
Надявам се да успеете да ми помогнете. Благодаря Ви предварително!
 
за първия ти проблем ще се реши така ако сам те разбраал правилно в завката която вземаш новините добави това
Код:
ORDER BY `id`
 
Сложих го, колега, ама нищо.
PHP:
<?php
include ("config.php");
function secure($var) {
return addslashes(htmlspecialchars($var));
}
$id = secure(@$_GET['id']);

$page = mysql_query("SELECT COUNT(*) as cnt FROM `news` WHERE `catid`='".$id."' ORDER BY `id`") or die (mysql_error());   //Първа заявка, която взима броя на новините

$rpage = mysql_fetch_array($page);
$limit = 10; //По колко резултата да се показват на страница
$max_pages = ceil($rpage['cnt']/$limit);

if((int)$_GET['p']>0) {
$pages = (int)$_GET['p'];
} else {
$pages = 0;
}

$query = mysql_query("SELECT * FROM news WHERE catid = '$id' LIMIT ".($limit*$pages).",".$limit)or die(mysql_error());
$nums = mysql_num_rows($query);

while($row = mysql_fetch_object($query)) {
	if(($nums > 0) && ($id != NULL)) {

	$title = $row -> title;
	$novinata = $row -> novinata;
	$source = $row -> source;
	$kateto = $row -> catid;
	$pics = $row -> picture;
	$namepicture = $row -> namepicture;
	$date = $row -> date;
	$id = $row -> id;
	$views = $row -> views;

$title = utf8_wordwrap($title, 120, " ", '<br />\n');
$novinata = utf8_wordwrap($novinata, 100, " ", '<br />\n');

$novinata = str_replace(array('[b]', '[/b]', '[i]', '[/i]'), array('<b>', '</b>', '<i>', '</i>'), $novinata);

$comments = mysql_query("SELECT COUNT(id) AS `comments_counter` FROM `comment` WHERE `id_news` = ".$id) or die(mysql_error());
$comments = mysql_fetch_assoc($comments);

	if($kateto==1){
	$catss='Светско';
	}
	if($kateto==2){
	$catss='Скандално';
	}
	if($kateto==3){
	$catss='Криминално';
	}
	if($kateto==4){
	$catss='Made in BG';
	}
	if($kateto==5){
	$catss='По света';
	}
	if($kateto==6){
	$catss='Градски легенди';
	}
	if($kateto==7){
	$catss='Любопитно';
	}
	if($kateto==8){
	$catss='Секс';
	}
	if($kateto==9){
	$catss='Продукти';
	}

echo $novinata = "
<img src='".$pics."' width='120px' align='center' height='70px' style='float:left;margin-left:5px;margin-top:5px;' />
<div style='font-family: Georgia, serif;'><h3><a href='view.php?id=$id'><b>$title</b></a></h3></div>
<p class='author'><span>$date</span> | коментари <img src='img/ico_comment.gif'> ".$comments['comments_counter']." | видяна <img src='img/ico_sawn.gif'> $views</p><BR>";
	}
}

/*================ Странициране ======================*/
				if( $rpage['cnt'] > $limit )
				{
					//pagination
					$pagination="";
					
					if($_GET['p'] > 0)
					{
						$pagination .= '
						<a href="view1.php?id='.$_GET['id'].'&p='.($_GET['p']-1).'">Назад</a> ';
					}
												
					$max_on_the_pp = 9;

					if($_GET['p'] >= 3)
					{
					$ravno = $_GET['p']-3;
					}
												
					if($_GET['p'] >= 5)
					{
					$ravno = $_GET['p']-5;
					}
														
					for($i=$ravno-0;$i<($_GET['p']+$max_on_the_pp);$i++)
					{
						if(($i+1) <= $max_pages)
						{
							if($_GET['p'] == $i)
							{
								$pagination .= '<span class="current">'.($i+1).'</span>   ';
							}
							else
							{
								$pagination .= '<a href="view1.php?id='.$_GET['id'].'&p='.$i.'" class="page">'.($i+1).'</a>  ';
							}
						}
					}

						echo $pagination;
												
						if($_GET['p'] != $max_pages-1)
						{
							echo '<a href="view1.php?id='.$_GET['id'].'&p='.($_GET['p']+1).'">Напред</a>';
						}
				}
/*================ Странициране ======================*/

if(($nums > 0) && ($id != NULL)) {
} else if(!$_GET['id']) {
echo "<BR><b>Моля изберете категория, която да видите.</b>";
}
elseif ($nums == 0) {
echo "<BR><b>Грешка:</b> Все още няма качени новини в тази категория.";
}
?>
Ето така го направих, но без резултат...
 
Това
PHP:
$query = mysql_query("SELECT * FROM news WHERE catid = '$id' LIMIT ".($limit*$pages).",".$limit)or die(mysql_error());
Трябва да стане така

PHP:
$query = mysql_query("SELECT * FROM news WHERE catid = '$id' ORDER BY` id` DESC LIMIT ".($limit*$pages).",".$limit)or die(mysql_error());

Това е
 

Back
Горе