Я унаследовал некоторый код для пользовательской CMS, который немного отличается от моей лиги, и все время натыкаюсь на те же ошибки, Примечание: неопределенная переменная: носитель в /Applications/MAMP/htdocs/Chapman/Chapman_cms/admin/team-2.php в строке 48. Это должно создавать новых пользователей и редактировать старых пользователей. Однако это не работает, когда я пытаюсь добавить нового пользователя.
Ниже приведен соответствующий код:
$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>
Любая помощь приветствуется.






Уведомление не имеет значения, но этот код ничего не создает. Это происходит на странице, на которую оно отправлено. Посмотрите на оператор if в первых нескольких строках. Я думаю, вам нужно вызвать его с помощью task = edit в URL-адресе.
Возможно, вам будет трудно помочь, но я бы посмотрел, куда идет этот вызов $ db-> get_row () и что он возвращает (используя var_dump () или что-то в этом роде ...)
В качестве общего совета я бы порекомендовал настроить отладчик в вашей системе, чтобы вы могли отслеживать вызовы. На платформе Windows я использую xdebug с WinCacheGrind для отслеживания вызовов, когда я не уверен в иерархии вызовов. В Linux настройка аналогична (xdebug, kcachegrind ...).
Код, который вы опубликовали, не создает, поэтому проблема не связана с этим фрагментом кода.
Неопределенное уведомление от бита <?=$media['copy']?>. $ media никогда не определялся. Если это не проблема, проигнорируйте это и скажите PHP не выводить уведомления. Это не совсем хорошая практика, но если вам не платят за то, чтобы исправить каждую мелочь, я бы сказал, что это реальная альтернатива.
Чтобы подавить уведомления, добавьте этот код в любое место до появления уведомлений или, что еще лучше, в глобальное включение:
error_reporting(E_ERROR | E_WARNING | E_PARSE);
Для получения дополнительной информации: http://www.php.net/error_reporting
Чтобы правильно удалить уведомление, нужно сделать это с помощью кода
<?php if (isset($media['copy'])){ echo $media['copy']; } ?>
вы также можете использовать символ at следующим образом:
if ($_GET['undefined_key']) {
// blah...
}
if (@$_GET['undefined_key']) {
// blah...
}
он подавляет предупреждения, однако некоторые утверждают, что лучше всего использовать символ at, чтобы избежать предупреждений, которые вы не могли бы сделать иначе.
Это сообщение об ошибке не из этого кода.
$media назначается в строке 6 предоставленного вами кода ($media = $db->get_row(..)). Я предполагаю, что вы либо удалили соответствующий код (это строка 48, плюс / минус), либо это неправильный файл (это из /Applications/MAMP/htdocs/Chapman/Chapman_cms/admin/team-2.php?).
Классный совет, я не понимал, что вы можете использовать это для переменных ... только думал, что это для вызовов функций.