Как проверить, что объект уже был добавлен в закладки? - PullRequest
0 голосов
/ 09 июня 2019

Я работаю над этим проектом, чтобы создать веб-сайт по недвижимости, где люди могут добавлять свои любимые объекты в закладки, а также удалять их из закладок.Код ниже работает в некоторой степени.Сначала я пытаюсь проверить, было ли свойство добавлено в закладки, и в этом случае я хочу, чтобы опция удаления из закладок отображалась.Прежде чем что-либо будет добавлено в закладки, $ property_id_list, конечно, пуст, и поэтому я получаю следующее сообщение об ошибке.

Предупреждение: in_array () ожидает, что параметр 2 будет массивом, ноль задан в / kunden / 587634_20457 /00/18 / 09_Bookmarks / bookmarks.php в строке 52.

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

Я работал с этим кодом какНасколько я мог, но я признаю, что я мог упустить что-то очень очевидное здесь, поскольку я начал кодировать только 2 месяца назад ... Учитывая это, я разместил весь код ниже ...

Большое вам спасибо, что нашли время, чтобы даже прочитать это.Любой совет поможет, даже если мне придется изменить 100% моего кода.

<?php
//bookmarkrules.php



if(isset($_POST["add_to_bookmark"]))
{
	if(isset($_COOKIE["bookmark"]))
	{// Adds to bookmark
		$cookie_data = stripslashes($_COOKIE['bookmark']);
		$bookmark_data = json_decode($cookie_data, true);
    //will decode JSON string and store under this variable
	}
	else
	{
		$bookmark_data = array();
	}


	$property_id_list = array_column($bookmark_data, 'property_id');
	//checks if the property has already been bookmarked
	if(in_array($_POST["hidden_id"], $property_id_list))
	 {
	  foreach($bookmark_data as $keys => $values)
	  {
	   if($bookmark_data[$keys]["property_id"] == $_POST["hidden_id"])
	   {
      //no doubles
	   }
	  }
	 }
  else{

     //store data into $property_array variable
		$property_array = array(
			'property_id'			=>	$_POST["hidden_id"],
			'property_name'			=>	$_POST["hidden_name"],
			'property_price'		=>	$_POST["hidden_price"],
		);
		$bookmark_data[] = $property_array;
			}
//convert PHP array to JSON string
	$property_data = json_encode($bookmark_data);
	setcookie('bookmark', $property_data, time() + 3600 * 24 * 365, "/");

//data will expire after one day

}



//
if(isset($_GET["action"]))
{
	if($_GET["action"] == "delete")
	{
		$cookie_data = stripslashes($_COOKIE['bookmark']);
		$bookmark_data = json_decode($cookie_data, true);
		foreach($bookmark_data as $keys => $values)//loop
		{
			if($bookmark_data[$keys]['property_id'] == $_GET["id"])
			{
				unset($bookmark_data[$keys]);//destroy the key's array
				$property_data = json_encode($bookmark_data);
				setcookie("bookmark", $property_data, time() + (3600 * 24 * 365),"/");
			}
		}
	}
}




?>
<?php

//bookmarks.php

include('../01_Global/assets/sql/database_connection.php');
include('bookmarkrules.php');
?>
<!DOCTYPE html>
<html>
	<head>
		<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
		<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
		<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
	</head>
	<body>
		<br />
		<div class="container">
			<br />
			<h3 align="center">Bookmark using Cookies</h3><br />
			<br /><br />
			<?php
			$query = "SELECT * FROM Property";
			$statement = $connect->prepare($query);
			$statement->execute();
			$result = $statement->fetchAll();
			foreach($result as $row)
			{
			?>
			<div >
				<form method="post">
           <!---Information we want displayed--->
					 <div class="col-sm-4 col-lg-3 col-md-3">
					  <div style="border:1px solid #ccc; border-radius:5px; padding:16px; margin-bottom:16px; height:450px;">
					 	<img src="../01_Global/assets/img/Houses/'. $row['Image'] .'" alt="" class="img-responsive" >
					 	<p align="center"><strong><a href="productpage.php"><?php echo $row["Name"]; ?></a></strong></p>
					 	<h4 style="text-align:center;" class="text-danger" ><?php echo $row["Price"]; ?></h4>
					 	<p>Property Type : <?php echo $row["Property_Type"]; ?><br />
					 	<p>For : <?php echo $row["Listing_Type"]; ?><br />
					 	<p>City : <?php echo $row["City"]; ?><br />
							<!---Values stored under hidden fields--->
							<input type="hidden" name="hidden_name" value="<?php echo $row["Name"]; ?>" />
							<input type="hidden" name="hidden_price" value="<?php echo $row["Price"]; ?>" />
							<input type="hidden" name="hidden_property_type" value="<?php echo $row["Property_Type"]; ?>" />
							<input type="hidden" name="hidden_listing_type" value="<?php echo $row["Listing_Type"]; ?>" />
							<input type="hidden" name="hidden_city" value="<?php echo $row["City"]; ?>" />
							<input type="hidden" name="hidden_id" value="<?php echo $row["PropertyID"]; ?>" />

							 <!--- Add to bookmark button--->
							 <?php
    				 	 $property_id_list = array_column($bookmark_data, 'property_id');


							 $property_id_list = array_column($bookmark_data, 'property_id');
							 if (in_array($row["PropertyID"], $property_id_list)) {
	                 foreach ($bookmark_data as $keys => $values) {
	                     if ($bookmark_data[$keys]["property_id"] == $row["PropertyID"]) {
	                         ?> <a href="bookmarks.php?action=delete&id=<?php echo $values["property_id"]; ?>"><span class="text-danger">Remove</span></a><?php
	                     }
	                 }
	             }
							 else {
	                 ?>
	                 <form>
	                     <input type="submit" name="add_to_bookmark" style="margin-top:5px;"
	                         value="Add to bookmark" />
	                 </form>
	             <?php
	             }
	             ?>
	                     </div>

	                 </div>
	             </form>
	         </div>


	         <?php
	       }
	         ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...