0
0

В уроке 62, после того как заполнил БД данными, необходимо было удалить их. Сделал все как в уроке, но данные не удалились и поменяли свой id на +25.

https://pastenow.ru/46c490fc3cd02a7d4a8a55e134558677 вот так стала выглядеть БД

https://pastenow.ru/9997c011531ee9510fcd98cc1d413be7 снова удаляю все данные

https://pastenow.ru/66fc7e230efc2bb6bf9d76c892015503 результат

Код тоже скину на всякий

<?php

	function insert($name, $desc, $year, $rating, $poster) {
		$mysqli = new mysqli('localhost', 'root', '', 'kinomonster');

		if(mysqli_connect_errno()) {
			print_r("Соединение не установлено");
			exit();
		}

	$mysqli->set_charset("utf8");

	$query = "INSERT INTO movie VALUES(null, '$name', '$desc', '$year', '$rating', '$poster', Now(), 'category_id')";

	


	$result = false;

	if($mysqli->query($query)) {
		$result = true;

	}
		return $result;
	}


	$xml = simplexml_load_file("xml_files/movies.xml") or die("error: cannot create object");

	/*echo count($xml);*/

	$title = null;
	$title_orign = null;
	$post = null;
	$rating = null;
	$year = null;


	foreach ($xml as $moviekey => $movie) {
		$title = $movie->title_russian;
		$title_orign = $movie->title_original;
		$year = $movie->year;


		foreach ($movie->poster->big->attributes() as $posterkey => $poster) {
			$post = $poster;
		}

		

		if ($movie->imdb) {
			$rating = $movie->imdb->attributes()['rating'];
		}else{
			$rating = null;
		}

		insert($title, $title_orign, $year, $rating, $post, 1);


	}

	echo "<pre>";
	print_r($xml);
	echo "</pre>";

	
$mysqli->close();






























?>

Владислав Андрианов
4 years ago






Разумеется, есть. Нужно привязать выполнение скрипта к какой-нибудь проверке. Универсального способа нет, так как их может быть очень много разных, но это может быть, например, наличие какой-нибудь "кнопки" на странице, при нажатии на которую скрипт срабатывает. Правда, именно вот такой фокус удобнее будет сделать с помощью javascript. Хотя можно и без него, опять же, как и сказал, вариантов много. Так что пока я советую не торопиться, просто поудалять лишние дубликаты из БД и закомментировать скрипт. В дальнейших уроках вы с такой проблемой не столкнетесь, так как парсить данные из xml не придется, а когда изучите нужные разделы - сами поймете, как можно было все исправить, потому что вы в любом случае изучите информацию, которая позволит вам хотя бы некоторые способы решения этой проблемы придумать и реализовать.

Иван Романов
4 years ago

Скорее всего, данные удалились, просто ваш скрипт добавления данных в базу уже отработал несколько раз. PHPMyAdmin вам показывает на странице только 25 значений (или столько, сколько указано в настройках отображения именно у вас), но по факту в вашей базе просто несколько одинаковых страниц. Скрипт срабатывает каждый раз, когда вы открываете страницу, снова либо обновляете ее.

Иван Романов
4 years ago

Понял. Как тогда можно решить эту проблему и не мучаться в будущем??? Просто сейчас я нашел выход: не обновлять страницу со скриптом. Но есть же какой либо другой лайфхак

Владислав Андрианов
4 years ago

3 ответов