Цикъл с настройка на извеждането

dakata__92

Super Moderator
Имам цикъл с който си вадя информацията от базата. Няма провлем, но ако искам примерно един от резултатите да се показва най-отгоре на извеждането както е тук във форума, когато примерно има важна тема се качва най-отгоре над темите.

PHP:
$query = ("SELECT * FROM table ORDER BY id DESC"); 
$result = mysql_query($query);
$i = 0; 
while($r = mysql_fetch_array($result)) 
{ 
$text= $r["text"]; 
$title= $r["title"];
$description= $r["description"];
echo "$i. $title - $text - $description";
$i++;
}

Искам да кажа, като добавя някоя тема и я направя важна да се показва най-отгоре на страницата и чак тогава да показва останалите.
 
Правиш си отделна заявка над цикъла, с която взимаш последната тема (или каквото изкарваш), която е важна.

[sql]SELECT * FROM `table` WHERE important='1' LIMIT 0,1[/sql]

Проверяваш с mysql_num_rows дали изобщо има такава тема и ако има изкарваш информация. Всичко това се случва над цикъла.
 
Е да но после ще се появи и в долната заявка ! Не е ли възможно да се направи с една заявка и едно извеждане ?
 
dakata__92 каза:
Е да но после ще се появи и в долната заявка ! Не е ли възможно да се направи с една заявка и едно извеждане ?

Кое ще ти се появи в долната заявка?

Просто долната я променяш:
[sql]WHERE important != '1'[/sql]

Иначе е възможно.В цикъла проверяваш всеки 1 резултат:

PHP:
if($r['important'] == 1) {
     $normal .= "$i. $title - $text - $description<br />";
} else {
     $important .= "ВАЖНА: $title - $text - $description<br />";
}

И след цикъла.
PHP:
echo $important."<br />".$normal;
 
critrate каза:
SELECT * FROM `news` ORDER BY important ASC , name DESC

Такава структора на подреждане как ще изведе информацията ако имам теми с id


1 5
2 7
3 1
4 2
5 - Важна 3
6 4
7 - Важна 6
8 8
9 9
10 10

и искам 5-тата тема да се качи най отгоре като Важна ?
 
Код:
$justQ = mysql_query("SELECT * FROM news ORDER BY (important/id) DESC") or die (mysql_error());


туку-що го опитах и работи :)
 
critrate каза:
Код:
$justQ = mysql_query("SELECT * FROM news ORDER BY (important/id) DESC") or die (mysql_error());


туку-що го опитах и работи :)

Аааа не прави това което трябва :)
 
е как нали искаш първо да извади важната новина и след това да продължава като ги прави да са подредени по ИД?
 
не.прави това което ти казах миналия пост. поне така работи при мен ако искаш мога и снимка да ти дам
 

Back
Горе