2008-10-01 3 views
0

Я унаследовал некоторый код для пользовательской CMS, которая немного отличается от моей лиги и продолжает спотыкаться о тех же ошибках. Примечание: Неопределенная переменная: media in/Applications/MAMP/htdocs/Chapman/Chapman_cms/admin/team-2.php в строке 48. Это должно создавать новых пользователей и редактировать старых пользователей. Однако, когда я пытаюсь добавить нового пользователя, он не работает.Неопределенная переменная в php

Ниже pertinant код:

$db = new database("mysql",$dbHost,$dbName,$dbUser,$dbPass); 
$target = 'add'; 
if ($_GET['task'] == 'edit') { 
$media = $db->get_row(edit_media_item($db, $_GET['team_id'])); 
$target = 'update'; 

<p><label for="copy">Full Name:</label> 
    <input type="text" name="title" value="<?=$media['title']?>" /> 
    <textarea name="media" id="media" cols="30" rows="5" style="width: 100%"><?=$media['copy']?></textarea></p> 
    <input type="hidden" name="process" value="<?=$target.",copy,4,team-1,".$media['id'].""?>"> 
    <p><input type="submit" name="save" value="Submit" /> 
    <input type="reset" name="reset" value="Reset" /></p> 
    </form> 

Любая помощь будет оценена.

ответ

1

Уведомление не имеет значения, но этот код ничего не создает. Это происходит на странице, на которую оно отправлено. Посмотрите на выражение if на первых нескольких строках. Думаю, вам нужно вызвать его с помощью задачи = edit в URL.

2

Это может быть трудно, чтобы помочь вам, как это, но, я хотел бы видеть, где это $ db-> get_row() вызов идет и то, что он возвращает (с помощью var_dump() или что-то ...)

As общий совет, я бы рекомендовал настроить отладчик в вашей системе, чтобы вы могли отслеживать вызовы. На платформе Windows я использую xdebug с WinCacheGrind для отслеживания вызова, когда я не уверен в иерархии вызовов. В Linux настройка аналогична (xdebug, kcachegrind ...).

0

Код, который вы отправили, не создает никакого действия, так что проблема не возникает из этого бита кода.

Неопределенное извещение - <?=$media['copy']?> бит. $ media никогда не определялся. Если это не проблема, проигнорируйте ее и скажите PHP, чтобы не выводить уведомления. Это не совсем хорошая практика, но если вам не платят за исправление каждой мелочи, я бы сказал, что это приемлемая альтернатива.

Для подавления уведомления добавить этот код в любом месте до того, как уведомления происходят или еще лучше в глобальном включает:

error_reporting(E_ERROR | E_WARNING | E_PARSE); 

Для получения дополнительной информации: http://www.php.net/error_reporting

6

Чтобы удалить уведомление в правильном направлении, это сделать это с кодом

<?php if(isset($media['copy'])){ echo $media['copy']; } ?> 
1

вы можете также использовать в символ, как это:

if($_GET['undefined_key']) { 
    // blah... 
} 

if(@$_GET['undefined_key']) { 
    // blah... 
} 

он подавляет предупреждения, однако некоторые утверждают, что наилучшее время использования символа at - избегать предупреждений, которые вы не могли сделать иначе.

+0

Прохладный отзыв, я не знал, что вы можете использовать это для переменных ... только думал, что это для вызовов функций. – 2010-01-15 08:20:16

0

Это сообщение об ошибке не из этого кода.

$media указан в строке 6 предоставленного вами кода ($media = $db->get_row(..)). Я предполагаю, что вы либо удалили соответствующий код (который является строкой 48, дайте/возьмите), либо это неправильный файл (это от /Applications/MAMP/htdocs/Chapman/Chapman_cms/admin/team-2.php?).

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