Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.05.2015, 18:45
Новичок на форуме
Отправить личное сообщение для Grover Посмотреть профиль Найти все сообщения от Grover
 
Регистрация: 25.02.2015
Сообщений: 7

Добавить / удалить элемент из одного selecta в другой по клику
Всем привет! не работает (( не могу найти ошибку у себя, помогите, пожалуйста:

Есть 2 окна селекта, в одном фильмы, где актер играет, в другом где не играет. По клику мыши на фильм он должен перескакивать из одного селекта в другой. код у меня такой:

Здесь я делаю 1) список фильмов, которые есть и которых нет у актера и 2) потом функции добавления и удаления фильма из одного списка в другой:
function genSelectAktorNotInFilms($pdo,$id_aktora,$inner=false)
{
	$returned_HTML="";
	$stmt = $pdo->prepare ('SELECT id_filmu, tytul from filmy where id_filmu not in 
			( SELECT DISTINCT id_filmu from obsada where id_aktora = :id_aktora)');
	
	$stmt-> bindValue(':id_aktora', $id_aktora, PDO::PARAM_INT);
	$stmt->execute ();
	if ($inner==false)
		$returned_HTML.='<select id=MoviesNo name="MoviesNo[]" size="12">'.PHP_EOL;
	foreach($stmt as $row) 
	{
	$returned_HTML.='<option value="'.$row['id_filmu']
	
	.'" onClick=swapMovies('.$id_aktora.',this.value,0)>'
	.$row['tytul'].'</option>'.PHP_EOL;		
	
	}
	$stmt->closeCursor();
	if ($inner==false)
		$returned_HTML.='</select>'.PHP_EOL;
	return $returned_HTML;	
	}
	

function genSelectAktorInFilms ($pdo,$id_aktora,$inner=false)

{
	$returned_HTML="";
	$stmt = $pdo->prepare ('SELECT id_filmu, tytul from filmy where id_filmu in
			( SELECT DISTINCT id_filmu from obsada where id_aktora = :id_aktora)');

	$stmt-> bindValue(':id_aktora', $id_aktora, PDO::PARAM_INT);
	$stmt->execute ();
	if ($inner==false)
		$returned_HTML.='<select id=MoviesYes name="MoviesYes[]" size="8">'.PHP_EOL;
	foreach ( $stmt as $row )
	{
		$returned_HTML .= '<option value=" '.$row ['id_filmu']
		.'" onClick=swapMovies('.$id_aktora.',this.value,0)>'
				.$row['tytul'].'</option>'.PHP_EOL;

	}
	$stmt -> closeCursor();
	if ($inner==false)
		$returned_HTML.='</select>'.PHP_EOL;
	return $returned_HTML;
}

function RemMovieFromAktor ($pdo,$id_aktora,$id_filmu)
{
	$stmt =$pdo -> prepare ('delete from obsada where id_filmu= :id_filmu' );
			$result->bindParam(':id_filmu', $id_filmu);
	$result->execute();
	$stmt->closeCursor();
	
}

Последний раз редактировалось Grover, 30.05.2015 в 00:09.
Ответить с цитированием
  #2 (permalink)  
Старый 28.05.2015, 19:00
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

А зачем два запроса для определения "да"/"нет", если это определяется одной таблицей obsada?
Потом, ведь можно и не DELETE/INSERT, а REPLACE для уникального индекса.
Ну и PHP_EOL для HRML, это просто мусор, а идеальный html-код, это вытянутый в одну строку. Отладчик покажет иерархию, можно не волноваться, тем более что список вы не руками пишите.
Ответить с цитированием
  #3 (permalink)  
Старый 28.05.2015, 19:51
Новичок на форуме
Отправить личное сообщение для Grover Посмотреть профиль Найти все сообщения от Grover
 
Регистрация: 25.02.2015
Сообщений: 7

Написано 2 раза да/нет, т.к. это разные поля на странице. Оня выглядит вот так:
<?php 

include 'include/settings.php';
include 'include/aktors_function.php';
try {
	$TRESC="";
	$pdo=pdo_connect();
	$id_aktora = 1;
	$aktor=getAktor($pdo, $id_aktora);
	$aktor=$aktor['imie']." ".$aktor['nazwisko'];

	echo '<br/><b>Filmy with aktor: </b>'.$aktor.'<br/>'.PHP_EOL; 
	echo genSelectAktorInFilms($pdo, $id_aktora);
	echo '<br/><b>Filmy with no:</b>'.$aktor.'<br/>'.PHP_EOL;
	echo genSelectAktorNotInFilms($pdo, $id_aktora);

}
catch (PDOException $e)
{
	echo 'error' . $e->getMessage();
}

?>


Подозреваю, что ошибка где-то здесь:

.'" onClick=swapMovies('.$id_aktora.',this.value,0)>' .
Что делает 'this.value,0' ?
Ответить с цитированием
  #4 (permalink)  
Старый 28.05.2015, 20:15
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Ваши оба запроса отличаются только логикой - IN и NOT IN. Почему тогда не сразу SELECT к filmy и JOIN к obsada, и формировать сразу два списка, первый для тех, которым JOIN вернул значение, а второй, для тех что нет?
Как собственно любые иные поля отобразить по этому результату.

И у вас проблема не в onClick, а на сервере - DELETE/INSERT спокойно можно выбросить заменив на REPLACE, а уж под это и определять действия на клиенте.
Ответить с цитированием
  #5 (permalink)  
Старый 30.05.2015, 00:11
Новичок на форуме
Отправить личное сообщение для Grover Посмотреть профиль Найти все сообщения от Grover
 
Регистрация: 25.02.2015
Сообщений: 7

Всем спасибо) Разобрались ) ошибка в неправильном delete. и 0 и 1 должны чередоваться. На replace не менял, т.к. надо было довести до конца то, что есть
Ответить с цитированием
  #6 (permalink)  
Старый 30.05.2015, 04:33
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Grover
ошибка в неправильном delete. и 0 и 1 должны чередоваться. На replace не менял, т.к. надо было довести до конца то, что есть
Может я и ошибаюсь, не верно понимая назначение этого "перескакивания", да еще теперь куда-то делся INSERT, но чувство "странно" все равно не покидает. )
Ответить с цитированием
  #7 (permalink)  
Старый 31.05.2015, 18:59
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от Grover
в другом где не играет
Актер не играл во всех фильмах кроме тех, в которых играл. Реальность запроса обсулавливается лишь сугубым размерчиком вашей базы данных. Если бы это была imdb вам бы пользователи сразу сказали что так нельзя делать.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить элемент из дерева DOM dummer jQuery 13 16.01.2011 16:19
Как удалить элемент массива? velo Общие вопросы Javascript 2 05.02.2010 15:58
Как добавить элемент в обьект json Юрий Игоревич Общие вопросы Javascript 2 26.10.2009 15:01
Добавить активный элемент Wirty jQuery 5 09.08.2009 16:06
имея this как удалить элемент из тела html clgs Общие вопросы Javascript 1 13.05.2009 17:55