И при мен някакъв проблем при elseif...

SLADE

Registered
Код:
<?php
if ($a['level'] == 2){
	echo '<font size="1" style="color: red;"><b>модератор</b></font>';
}
 elseif($a['level'] == 3){
	echo '<font size="1" style="color: blue;"><b>администратор</b></font>';
}
 else {
	if($a['total_activity'] >= 1){
		echo '<font size="1">начинаещ</font>';
	} elseif($a['total_activity'] >= 20){
		echo '<font size="1">напредващ</font>';
	} elseif($a['total_activity'] >= 60){
		echo '<font size="1">зарибен</font>';
	} elseif($a['total_activity'] >= 120){
		echo '<font size="1">маниак</font>';
	} else {
		echo '<font size="1">нов</font>';
	}
}

?>

Проблема е, че ранговете ми ги отчита, както и това отдолу до "начинаещ", но след това другите не.
Демек "нов" и "начинаещ" се показват, но ако сложа някой на "напредващ", "зарибен" или "маниак" не става нищо, продължава да си седи на "начинаещ", а ако го сложа на "нов" си го показва.
От къде идва проблема? Надявам се да ми помогнете.
Благодаря Ви предварително!
 
След администратор вместо елсе иф си написал само елсе смени го на елсе иф и ще се оправи.
 
@svet1bg айде не говори глупости, ако обичаш.

Код:
else { 
   if($a['total_activity'] >= 1){ 
      echo '<font size="1">начинаещ</font>'; 
   } elseif($a['total_activity'] >= 20 && $a['total_activity'] <= 59){ 
      echo '<font size="1">напредващ</font>'; 
   } elseif($a['total_activity'] >= 60 && $a['total_activity'] <= 119){ 
      echo '<font size="1">зарибен</font>'; 
   } elseif($a['total_activity'] == 120){ 
      echo '<font size="1">маниак</font>'; 
   } else { 
      echo '<font size="1">нов</font>'; 
   } 
}

така опитай...
 
Не става. Продължава да си седи на "начинаещ". :?
Някой да има друга идея?
 
Така, нормалано е да ти показва само начинаещ.
Виж си условието на if-а.
if($a['total_activity'] >= 1)

С една дума ако$a['total_activity'] е по-голямо или равно на едно ще дава "начинаещ" и никога няма да върне друго докато $a['total_activity'] не стане по-малко от 1.
За това ти се въртят само нов и начинаещ.
За да оправиш проблема направи първия if по следния начин:

if($a['total_activity'] >= 1 && $a['total_activity'] < 20){
 
HunteR каза:
Така, нормалано е да ти показва само начинаещ.
Виж си условието на if-а.
if($a['total_activity'] >= 1)

С една дума ако$a['total_activity'] е по-голямо или равно на едно ще дава "начинаещ" и никога няма да върне друго докато $a['total_activity'] не стане по-малко от 1.
За това ти се въртят само нов и начинаещ.
За да оправиш проблема направи първия if по следния начин:

if($a['total_activity'] >= 1 && $a['total_activity'] < 20){

OMG аз уж щях да го пиша това в моя пример, който дадох и забравих :D:D карай, ти поне ме поправи :D
 
Демек като цяло кода трябва да стане така:

Код:
else {
   if($a['total_activity'] >= 1 && $a['total_activity'] < 20){
      echo '<font size="1">начинаещ</font>';
   } elseif($a['total_activity'] >= 20 && $a['total_activity'] <= 59){
      echo '<font size="1">напредващ</font>';
   } elseif($a['total_activity'] >= 60 && $a['total_activity'] <= 119){
      echo '<font size="1">зарибен</font>';
   } elseif($a['total_activity'] == 120){
      echo '<font size="1">маниак</font>';
   } else {
      echo '<font size="1">нов</font>';
   }
}

Или така:

Код:
else {
   if($a['total_activity'] >= 1 && $a['total_activity'] < 20){
      echo '<font size="1">начинаещ</font>';
   } elseif($a['total_activity'] >= 20 && $a['total_activity'] <= 60){
      echo '<font size="1">напредващ</font>';
   } elseif($a['total_activity'] >= 60 && $a['total_activity'] <= 120){
      echo '<font size="1">зарибен</font>';
   } elseif($a['total_activity'] == 120){
      echo '<font size="1">маниак</font>';
   } else {
      echo '<font size="1">нов</font>';
   }
}

Мерси!
 
else {
if($a['total_activity'] >= 1 && $a['total_activity'] < 20){
echo '<font size="1">начинаещ</font>';
} elseif($a['total_activity'] >= 20 && $a['total_activity'] <= 60){
echo '<font size="1">напредващ</font>';
} elseif($a['total_activity'] >= 60 && $a['total_activity'] <= 120){
echo '<font size="1">зарибен</font>';
} elseif($a['total_activity'] >= 120){
echo '<font size="1">маниак</font>';
} else {
echo '<font size="1">нов</font>';
}
}
 
Така останалите проработиха, но когато го сложа на "маниак" то седи на "зарибен". Някакви идеи?
 
Просто обърни последователността на условията. Ако е > от 200, след това ако е > 150, след него ако е > 100 и т.н.
 
else {
if($a['total_activity'] >= 1 && $a['total_activity'] < 20){
echo '<font size="1">начинаещ</font>';
} elseif($a['total_activity'] >= 20 && $a['total_activity'] <= 60){
echo '<font size="1">напредващ</font>';
} elseif($a['total_activity'] >= 60 && $a['total_activity'] < 120){
echo '<font size="1">зарибен</font>';
} elseif($a['total_activity'] >= 120){
echo '<font size="1">маниак</font>';
} else {
echo '<font size="1">нов</font>';
}
}
 
Мерси много. Стана и по двата начина... +1
Но само да попитам как е по-добре да го направя?

Така:
Код:
elseif($a['total_activity'] >= 20 && $a['total_activity'] <= 60){

Или така:
Код:
elseif($a['total_activity'] >= 20 && $a['total_activity'] < 60){

Благодаря много!
 

Back
Горе