2012-04-05 4 views
-1

Итак, я все еще новичок в кодировании php, все еще учась и т. Д. Итак, если это было задано до того, как я сожалею. Я пишу это с головы, поэтому любые ошибки, опять же, извините.mysql_fetch_assoc внутри if then statement

Я хочу вывести информацию из базы данных, и если это номер, тогда вместо этого отобразите текст. Так, я думал, что что-то подобное будет работать (я должен проверить 1 - 12 с определенным словом):

if(mysql_fetch_assoc($result) == 1){ 
echo "student"; 
}else 
    "generic error"; 

или так как я должен сделать 1 - 12

if($row_members['ulevel'] == 1){ 
echo "Student"; 
}else 
"generic error"; 

При регистрации пользователей, им присваивается номер как часть вставки, поэтому не должно быть никаких ошибок. Итак, я думаю, это вопрос из нескольких частей. Как создать инструкцию для проверки ulvel и распечатать ее как текст. 1 является наблюдателем, а 12 - админом.

+0

«* I» я пишу это с моей головы * "? – Lion

+0

Я думал об использовании вышеперечисленного, но, спрашивая здесь об этом, я сначала указывал бы мне в лучшем направлении. Итак, с головы до головы, то есть: это то, что я думаю, будет работать, но я бы предпочел быть в безопасности и просить, чем сожалеть и преследовать ошибки. – BBuchanan

ответ

2

mysql_fetch_assoc() не возвращает целое значение, она возвращает ассоциативный массив строк.

Чтобы проверить статус, вы можете просто выразить выражение внутри выражения if.

$row = mysql_fetch_assoc($result); 
if($row['ulevel'] == 1){ 
echo "student"; 
} else 
    "generic error"; 

Если вы проверяете из нескольких строк

while($row = mysql_fetch_assoc($result)) { 
    if($row['ulevel'] == 1){ 
    echo "student"; 
    } else 
     "generic error"; 
} 
+0

Итак, я был на правильном пути, мне также нужно изменить номер, чтобы отобразить другое слово. Пример 1 = наблюдатель 2 = ученик вверх 12 = админ. Так был бы: 'в то время как ($ строка = mysql_fetch_assoc ($ результат)) {' ' , если ($ строки [ 'ulevel'] == 1) {' ' эхо "наблюдатель";' ' , если ($ строка [ 'ulevel'] == 2) { '' эхо "ученик"; '' } else' ' "общая ошибка";' ' } else' ' "общая ошибка"; '' } ' или это то, что перебор на каком-то уровне? – BBuchanan

+0

@BBuchanan, лучше использовать коммутатор для этой цели – Starx

+0

Итак, пример: switch ($ query) // читает db и нашел указанное число // case 1: case 1: echo "observer"; break; кейс 2: echo "student"; break; – BBuchanan

0

Один из подходов может быть:

while($row = mysql_fetch_array($res)) { 
    if(is_int($row['ulevel')) /* Or you can some other logic ex: 
           $row['ulevel'] < 12 */ 
    print "Student"; 
    else  
     print "Generic error!" 
} 
0
mysql_fetch_assoc($result) == 1 

не будет работать, потому что mysql_fetch_assoc возвращает массив, так что вы проверяете, чтобы увидеть, если массив == 1, который никогда не будет ,

предполагая, что таблица содержит поле, называемое ulevel, то есть тип Int, и предполагается, что вы уже выполнили запрос в результирующий набор называется $ Результаты:

while($result = mysql_fetch_assoc($results)){ 
    if($row["ulevel"] == 1){ 
    echo "student" 
    } 
    else if($row["ulevel"] == 2){//do something else 

    } 
    ..... 
    else{ 
    echo "Generic Error"; 
    } 
} 

Лучшим решением было бы хранить различные типы пользователей в массиве:

$user_levels = array(1=>"Student",2=>"another".....); 

, то вы можете сделать:

echo $user_levels[$result["u_level"]]; 
+0

нет, у меня есть улевель, установленный как varchar прямо сейчас, изменился, один из моих маленьких ошибок для работы. – BBuchanan

+0

Thats fine, в массиве do '1' => '' вместо 1 => '' –

0

mysql_fetch_assoc($result) извлекает ассоциативный массив, сравнивая его с 1 обыкновенной работой. Если вы имеете в виду, что это не должно быть null, вы можете использовать функцию is_null.

Если вы хотите хотите проверить все элементы в массиве быть числом, то вы можете перебрать массив, используя петлю, как в

while($row=mysql_fetch_assoc($result)) 
{ foreach ($row as $value) { 
     if($value>=1 && $value<=12) 
    {echo("student"); 

    } 

    else 
    echo("Generic error"); 
    } 

}  
0

Попробуйте

while($row=mysql_fetch_assoc($result)) 
{  
     if(in_array(1 , $row)){ 
     echo 'student'; 
     echo '<br>'; 
     }else if(in_array(12,$row)){ 
     echo 'Admin'; 
     echo '<br>'; 
     }else{ 
     echo 'Else'; 
     echo '<br>'; 
     } 

}  
+0

с этим я могу добавить несколько else if? поэтому мне нужно изменить число, считанное из базы данных, на текстовый. Итак, 1 = наблюдатель, 2 = студент полностью до 12 = admin – BBuchanan

+0

Конечно. Php in_array ищет строку или число в массиве и возвращает true или false. –