harristars Ответов: 1

У меня есть эта ошибка в PHP где по приведенным ниже переменным я получаю эту ошибку неопределенные переменные


Notice: Undefined variable: item_id in C:\xampp\htdocs\sites\admin_panel\student_center_system\controller\admin\editmaster.php on line 100
readonly>
Notice: Undefined variable: item_name in C:\xampp\htdocs\sites\admin_panel\student_center_system\controller\admin\editmaster.php on line 101
>
Notice: Undefined variable: description in C:\xampp\htdocs\sites\admin_panel\student_center_system\controller\admin\editmaster.php on line 102
>
Notice: Undefined variable: item_category in C:\xampp\htdocs\sites\admin_panel\student_center_system\controller\admin\editmaster.php on line 103
>
Notice: Undefined variable: pic in C:\xampp\htdocs\sites\admin_panel\student_center_system\controller\admin\editmaster.php on line 104
>


это viewitems.php
<?php 
    include "navigation.php";
    include "header.php";
    include "footer.php";
?> 
<?php
	
	include("../dbConfig.php");

	$query = "SELECT item_id,item_name,description,item_category,pic FROM lost_items_table";
	$returnD = mysql_query($query);
	$returnD1 = mysql_query($query);
	$result = mysql_fetch_assoc($returnD);

?>

            <!-- Page Content -->
        <div id="page-wrapper">
            <div class="container-fluid">
                <div class="row">
                    <div class="col-lg-12">
                    	<h1 class="page-header">View Items</h1>
                    	<div class="row">
		                    <div class="col-lg-12">
		                        <div class="panel panel-default">
		                        	<div class="panel-heading">View Items</div>
									<table width="100%" class="table table-striped table-bordered table-hover" id="dataTables-example">
										<tr>
											<th>Item Id</th>
											<th>Item Name</th>
											<th>Description</th>
											<th>Item category</th>
											<th>Picture</th>
											<th>Edit</th>
											<th>Delete</th>
										</tr>
										<?php
											while($result1 = mysql_fetch_assoc($returnD1)){
											?>
											<tr>
												<td>
													<a href="adminPage.php?activity=itemdetails&item_name=<?php echo $result1['item_name']; ?>"> <?php echo $result1['item_id']; ?> </a>
												</td>
												<td><?php echo ucfirst($result1['item_name']); ?></td>
												<td><?php echo ucfirst($result1['description']); ?></td>
												<td><?php echo ucfirst($result1['item_category']); ?></td>
												<td><?php echo ucfirst($result1['pic']); ?></td>
												<td>	
													<a href="editmaster.php?item_id=<?php echo $row["item_id"]; ?>">Edit</a>
												</td>
												<td>
													<a href="adminPage.php?activity=deleteitem&item_name=<?php echo $result1['item_name']; ?>">Delete</a>
												</td>
											</tr>
											<?php
											}
										?>
										
									</table>
	                                <!-- /.table-responsive -->
                                   </div>
								</div>
				                    <!-- /.panel -->
				            </div>
				                <!-- /.col-lg-12 -->
				        </div>
                    </div>
                    <!-- /.col-lg-12 -->
                </div>
                <!-- /.row -->
            </div>
            <!-- /.container-fluid -->
        </div>
        <!-- /#page-wrapper -->


Что я уже пробовал:

это мое editmaster.php
<?php session_start();
    include("../dbConfig.php");
    include "navigation.php";
    include "header.php";
    include "footer.php";

{

}

				    if (isset($_POST['updateitem']))
				{

				    if (is_numeric($_POST['item_id']))
				{

					$item_id = $_POST['item_id'];
					$item_name = mysql_real_escape_string(htmlspecialchars($_POST['item_name']));
					$description = mysql_real_escape_string(htmlspecialchars($_POST['description']));
					$item_category = mysql_real_escape_string(htmlspecialchars($_POST['item_category']));
					$pic = mysql_real_escape_string(htmlspecialchars($_POST['pic']));

				if ($item_name == '' || $description == '' || $item_category == '' || $pic == '')
				{

				$error = 'ERROR: Please fill in all required fields!';

				valid($item_id, $item_name, $description, $item_category, $pic, $error);
				}
				else
				{

				mysql_query("UPDATE lost_items_table SET item_name = '$item_name', description = '$description', item_category = '$item_category', pic = '$pic' WHERE item_id = '$item_id'")
				or die(mysql_error());

				header("Location: viewitems.php");
				}
				}
				else
				{

				echo 'Error!';
				}
				}
				else

				{

				if (isset($_GET['item_id']) && is_numeric($_GET['item_id']) && $_GET['item_id'] > 0)
				{

				$item_id = $_GET['item_id'];
				$result = mysql_query("SELECT * FROM lost_items_table WHERE item_id=$item_id")
				or die(mysql_error());
				$row = mysql_fetch_array($result);

				if($row)
				{

				$item_name = $row['item_name'];
				$description = $row['description'];
				$item_category = $row['item_category'];
				$pic = $row['pic'];

				valid($item_id, $item_name, $description, $item_category, $pic,'');
				}
				else
				{
				echo "No results!";
				}
				}
				else

				{
				echo 'Error!';
				}
}

?>


					
	   <!-- Page Content -->
        <div id="page-wrapper">
            <div class="container-fluid">	            
					            <!-- /.row -->
					            <div class="row">
					                <!--div class="col-md-8 col-md-offset-4"-->
					                <div class="col-lg-6">
					                    <div class="Register-panel panel panel-default">
					                    <!--div class="panel panel-default"-->
					                        <div class="panel-heading">
					                            Edit Item
					                        </div>
					                        <div class="panel-body">
					                            <div class="row">
					                                <div class="col-lg-6">
					                                	<div class="panel-body">
						                            		<form role="form" action="">
						                            					<input type="text" name="item_id" value=<?php echo $item_id; ?> readonly><br>
						                            					<input type="text" name="item_name" required autofocus placeholder="Item-Name" value=<?php echo $item_name; ?>><br>
						                            					<input type="text" name="description" required autofocus placeholder="Description" value=<?php echo $description; ?>><br>
						                            					<input type="text" name="item_category" required autofocus placeholder="Item_category" value=<?php echo $item_category; ?>><br>
						                            					<input type="text" name="pic" required autofocus placeholder="pic" value=<?php echo $pic; ?>><br>

						                            					<input type="submit" name="updateitemBtn" value="Update">
						                            		</form>
						                                </div>
					                                </div>
					                                <!-- /.col-lg-6 (nested) -->
					                            </div>
					                            <!-- /.row (nested) -->
					                        </div>
					                        <!-- /.panel-body -->
					                    </div>
					                    <!-- /.panel -->
					                </div>
					                <!-- /.col-lg-12 -->
					            </div>
					            <!-- /.row -->
			</div>
            <!-- /.container-fluid -->
        </div>
        <!-- /#page-wrapper -->

1 Ответов

Рейтинг:
5

Jochen Arndt

Локальные переменные имеют масштаб Это означает, что они доступны только в том блоке, где они определены. Видеть На PHP: область видимости переменной - инструкция[^].

Переменные из ваших сообщений об ошибках определяются в блоке, заключенном в два if условия. Таким образом, вы можете использовать их только в этом блоке.

Возможным решением было бы определить их поверх кода с пустым содержимым:

$item_id = '';
$item_name = '';
$description = '';
$item_category = '';
$pic = '';
if (isset($_POST['updateitem']))
{
    // ...
}
// The variables can be used here
Однако вам, вероятно, придется добавить дополнительную проверку, чтобы определить, что отображается, когда переменные не были установлены (все еще пусты).


harristars

когда я выбираю редактировать в форме ничего не отображается

Jochen Arndt

Прочтите мое последнее предложение.

Вы всегда отображаете форму, даже если данные не были отправлены или произошла ошибка. В таких случаях вы должны показать что-то еще, когда нет данных POST, соответственно сообщение об ошибке (как HTML-страница, которая будет видна в браузере).

Но это уже не имеет отношения к первоначальному вопросу.

harristars

да, предыдущая ошибка теперь исчезла.Проблема большая проблема заключается в том что на экране ничего не отображается editmaster.php когда я нажимаю кнопку Изменить ВКЛ viewitems.php-да.

Jochen Arndt

Опять же: это другая проблема, которая обычно требует нового вопроса.

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

Тем не менее, вы звоните editmaster.php откуда viewitems.php передача единственного аргумента 'item_id'. Но в editmaster.php вы проверяете наличие двух параметров: 'updateitem' и 'item_id'.

Таким образом, полный блок, связанный с базой данных, никогда не выполняется. Если бы вы отображали соответствующую страницу, когда нет / не все необходимые данные были опубликованы - как это было предложено мной - вы бы это заметили.

harristars

это ошибка, которую я получаю
/editmaster.php?item_id=Уведомление: Неопределенная переменная: строка in C:\xampp\htdocs\sites\admin_panel\student_center_system\controller\admin\viewitems.php на линии 49

Jochen Arndt

Кончик:
Он жалуется на переменную $row.
Откройте файл и используйте функцию поиска, чтобы найти использование этой переменной.
Результат: он находится только в строке 49.
Что это говорит вам, когда вы знаете свой код?
Что это несуществующая переменная в этом файле, и вы, вероятно, хотели бы использовать другую.
Подумайте: какая еще переменная может быть?
Посмотри на свой код. Ты должен знать.