2013-03-25 2 views
0

У меня есть приостановленное булево для каждого сотрудника. при отображении сотрудников в таблице я хочу показать, либо текст «ПОДВЕСНОЙ» или «НЕ ПОДВЕСНОЙ», а не 1 или 0.IF в пределах WHILE (ИСПОЛЬЗОВАНИЕ НЕОПРЕДЕЛЕННОГО ПОСТОЯННОГО)

Я продолжаю получать сообщение об ошибке, Примечания: Использовании неопределенной константы Staff_Suspension - предполагаемые «Staff_Suspension ' Я уверен, что это просто im довольно новое для php, просто застряло и не хочет тратить больше времени, пытаясь разобраться в этом, и никуда не денутся. помощь

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
{ 
    echo "\t<tr>\n"; 
     echo "\t\t<td> $row[Staff_ID] </td>\n"; 
     echo "\t\t<td> $row[Staff_Forename] </td>\n"; 
     echo "\t\t<td> $row[Staff_Surname] </td>\n"; 
     echo "\t\t<td> $row[Staff_Email] </td>\n"; 
     echo "\t\t<td>"; 

     if ($row[Staff_Suspension] == 1){ 
      echo 'Suspended'; 
     } else if ($row[Staff_Suspension] == 0){ 
      echo 'Not Suspended'; 
     } 

     echo "</td>\n"; 
     echo "\t\t<td> $row[Staff_Delete_Permissions] </td>\n"; 
    echo "\t</tr>\n"; 

} 
+2

Вы просмотрели руководство по PHP? http://php.net/manual/en/language.types.array.php. Вы должны указать строки, используемые в качестве индексов массива. – patrickmdnet

+0

конечно, тот что случается, когда u работа до 2am. cheers – Kam

ответ

3

Вы должны указать индексы. В противном случае PHP предполагает, что у вас есть defined a constant с именем Staff_Suspension. Если такой константы не существует, тогда предполагается, что вы хотите указать строковый литерал. Цитирование отнимает любую догадку (и, следовательно, любое уведомление):

if ($row['Staff_Suspension'] == 1) { 
    echo 'Suspended'; 
} elseif ($row['Staff_Suspension'] == 0) { 
    echo 'Not Suspended'; 
} 

или упрощены:

echo $row['Staff_Suspension'] ? 'Suspended' : 'Not Suspended'; 
+0

Зачем его обертывать в кавычки? Это то, что должно быть комментарием –

+0

@Daryl, сообщение об ошибке уже описывает, почему оно должно быть в кавычках (PHP сначала проверяет, ссылаетесь ли вы на константу). – webbiedave

+0

Операция указала, что он новичок в PHP, поэтому я включил грубую информацию о том, почему это требуется, потому что люди, которые некоторое время используют PHP, знают эту проблему, новички могут не понимать, почему –

3

Ответ:

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
{ 
    echo "\t<tr>\n"; 
     echo "\t\t<td>". $row['Staff_ID'] ".</td>\n"; 
     echo "\t\t<td>". $row['Staff_Forename'] ."</td>\n"; 
     echo "\t\t<td>". $row['Staff_Surname']". </td>\n"; 
     echo "\t\t<td>". $row['Staff_Email'] ".</td>\n"; 
     echo "\t\t<td>"; 

     if ($row['Staff_Suspension'] == 1){ 
      echo 'Suspended'; 
     } else if ($row['Staff_Suspension'] == 0){ 
      echo 'Not Suspended'; 
     } 

     echo "</td>\n"; 
     echo "\t\t<td>". $row['Staff_Delete_Permissions'] ".</td>\n"; 
    echo "\t</tr>\n"; 

} 

Грубо Разъяснения

Использование констант c Omes в основном из define(); которые не требуют переменную для постоянных значений

причина вы представляются с этой ошибкой происходит от линии:

if ($row[Staff_Suspension] == 1){ 
     echo 'Suspended'; 
    } else if ($row[Staff_Suspension] == 0){ 
     echo 'Not Suspended'; 
    } 

Поскольку вы указываете ключ массива по названию. Вы должны обернуть это в кавычки, двойной или одиночный до вас.

Пример константы:

define ('Name', 'ConstantValue'); 
echo Name; 

Этот выход будет: ConstantValue

сейчас, от чтения выше:

http://php.net/manual/en/function.define.php

ссылка является грубой explination на постоянных значений ,

Теперь для вашего конкретного вопроса.

$row[Staff_Suspension] Вы определили постоянное значение, так как это имя столбца, это должно быть заключено в кавычки.

Если вы указали номер с ключом: $row[0]; это совсем другая история, которая не имеет отношения к вашему вопросу.

+0

Что вы подразумеваете под *** в основном ** происходит от *? – webbiedave

+0

После редактирования фрагмента могли возникнуть другие причины этой ошибки. Я забыл добавить эту заметку, сравнить свое редактирование с оригиналом OPs –

+0

Я действительно сравнивал его. Где еще в его коде могла возникнуть ошибка? – webbiedave

Смежные вопросы

 Смежные вопросы