Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Условие if обрабатывается не правильно,в чем может быть проблема?

Условие if обрабатывается не правильно,в чем может быть проблема?


     13.02.2018    php, mysql, if    Все вопросы » Общие вопросы по PHP    808

вопрос
Всем привет! Снов появляются ошибки в условии if. Сразу к делу. Вот код
case "delcomm":
			
			$id = intval($_POST['id']);
			$purl = $db->safesql(totranslit($_POST['purl']));
			
			//Выводим данные о комментариии
			$row = $db->super_query("SELECT tb1.forphoto, auser_id, tb2.ouser_id FROM `".PREFIX."_attach_comm` tb1, `".PREFIX."_attach` tb2 WHERE tb1.id = '{$id}' AND tb1.forphoto = '{$purl}'");
			$tab_photos = false;

			//Если нет фотки в таблице PREFIX_attach то проверяем в таблице PREFIX_photos
			if(!$row){
				
				//Проверка в таблице PREFIX_photos
				$row_photos = $db->super_query("SELECT tb1.pid, owner_id, tb2.user_id FROM `".PREFIX."_photos_comments` tb1, `".PREFIX."_photos` tb2 WHERE tb1.id = '{$id}' AND tb1.photo_name = '{$purl}'");
				$tab_photos = true;
				
				$row['auser_id'] = $row_photos['owner_id'];
				$row['ouser_id'] = $row_photos['user_id'];
				$row['pid'] = $row_photos['pid'];
				
			}
                          
                        
			if($row['ouser_id'] == $user_id OR $row['auser_id'] == $user_id){
				
				//Если нет фотки в таблице PREFIX_attach то проверяем в таблице PREFIX_photos
				if($tab_photos){
					
					$db->query("DELETE FROM `".PREFIX."_photos_comments` WHERE id = '{$id}'");
					$db->query("UPDATE `".PREFIX."_photos` SET comm_num = comm_num-1 WHERE id = '{$row['pid']}'");
					
					$row2 = $db->super_query("SELECT album_id FROM `".PREFIX."_photos` WHERE id = '{$row['pid']}'");
					
					$db->query("UPDATE `".PREFIX."_albums` SET comm_num = comm_num-1 WHERE aid = '{$row2['album_id']}'");
				
				} else {
				
					//Обновляем кол-во комментов
					$db->query("UPDATE `".PREFIX."_attach` SET acomm_num = acomm_num-1 WHERE photo = '{$row['forphoto']}'");
					
					//Удаляем комментарий
					$db->query("DELETE FROM `".PREFIX."_attach_comm` WHERE forphoto = '{$row['forphoto']}' AND id = '{$id}'");
				
				}
				
			}
			
		break;

Проблема в том, что
if($row['ouser_id'] == $user_id OR $row['auser_id'] == $user_id)

работает не правильно. Причина в том, что (к каждой строчке кода есть комментарии), если тянуть данные из таблицы PREFIX_photos - все работает правильно, но как только данные тянутся из PREFIX_attach, js-скрипт выполняется свою работу, но php не удаляет комментарий - т.е. он остается после обновления страницы. Если удалить
if($row['ouser_id'] == $user_id OR $row['auser_id'] == $user_id)
все работает, пробовал уже много вариантов - но все без успешно. $user_id - это id пользователя который обращается к скрипту. Он работает правильно, так как в этом же файле есть строчки добавления комментария - и они работают с участием $user_id правильно. Суть кода в том, что комментарий может удалить или автор комментария или автор прикрепленной картинки. Так вот автор комментария - спокойно удаляет свой коммент, а автор "поста"(картинки) не может удалить чужой коммент, но идея в том,что он должен иметь возможность удалить.
Не могу понять из-за чего проблема, что в коде не так?

Ответа пока нет


1 комментарий

estverum
Юзер

estverum - 13 февраля 2018 15:25 -

if(($row['auser_id'] OR $row['ouser_id']) == $user_id){

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

P.S. Он не работает, так как проверку не делает.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх