Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Подскажите где ошибка в коде (https://javascript.ru/forum/css-html/76479-podskazhite-gde-oshibka-v-kode.html)

Богдан94 15.01.2019 13:20

Подскажите где ошибка в коде
 
<script type="text/javascript">
var nomer=<?=$id?>;
$(function(){
$('#plus'+nomer).submit(function(e){
e.preventDefault();
var data = $(this).serialize();
$.ajax({
type: "POST",
url: "plus.php",
data: data,
success: function(result+nomer){
$('#result'+nomer).html(result+nomer);
}
});
});
});


$(function(){
$('#minus'+nomer).submit(function(e){
e.preventDefault();
var data = $(this).serialize();
$.ajax({
type: "POST",
url: "minus.php",
data: data,
success: function(result+nomer){
$('#result'+nomer).html(result+nomer);
}
});
});
});

</script>
<?

echo'<tr class="'.$color.'">
<td class="t_title">'.$cat['name'].'</td>
<td>'.$cat['characteristic'].'</td>



<td>
<form method="POST" action="" id="minus" style="float:right">
<input class="serle" name="test" value="'.$id.'">
<input onclick="minus()" id="result" type="submit" value=" – ">
</form>
<span style ="margin-left:3px" id="inc'.$id.'">'.$zamowienie[$id].'</span> шт.

<form method="POST" action="" id="plus" style="float:left">
<input class="serle" name="test" value="'.$id.'">
<input onclick="plus()" id="result" type="submit" value=" + ">
</form>


</td>
<td>'.$cat['price'].' р</td>
<td class="nie_maly">2000 р</td>
</tr>';

?>
<script>
var inc=<?=$zamowienie[$id]?>;
function minus() {
inc=inc-1;
if(inc>0){
inc=inc;
}
else{inc=0}

document.getElementById("inc"+nomer).innerHTML = inc;
}
</script>

<script>
var inc=<?=$zamowienie[$id]?>;
function plus() {
inc=inc+1;
document.getElementById("inc"+nomer).innerHTML = inc;
}
</script>
<?
}
}
?>

j0hnik 15.01.2019 13:37

их тут много
var nomer=<?=$id?>;

что за тип данных ?
если строка то почему без кавычек?

рони 15.01.2019 13:59

Богдан94,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

laimas 15.01.2019 14:02

Цитата:

Сообщение от j0hnik
что за тип данных ?

Конечно Integer, но кавычки в любом случае нужны, от ляпов случайных, на входе то все равно строка.

j0hnik 15.01.2019 14:08

Цитата:

Сообщение от laimas
Конечно Integer,

ок
Цитата:

Сообщение от Богдан94
Подскажите где ошибка в коде

много лишних });
поудаляйте

success: function(result+nomer)

Богдан94 15.01.2019 16:29

Цитата:

Сообщение от j0hnik (Сообщение 502095)
ок

много лишних });
поудаляйте

success: function(result+nomer)

Я не могу понять почему кнопки в цикле не работают, а работают только в первом круге

j0hnik 15.01.2019 17:09

не увидел цикла, но может это вам поможет
https://javascript.ru/basic/closure#...-ispolzovaniya

Богдан94 16.01.2019 10:46

Цитата:

Сообщение от j0hnik (Сообщение 502114)
не увидел цикла, но может это вам поможет
https://javascript.ru/basic/closure#...-ispolzovaniya

у меня все работает вне цикла, в цикле происходит какая то ерунда
все работает даже если в цикле один круг

j0hnik 16.01.2019 12:16

не пойму про какой вы цикл

Богдан94 16.01.2019 13:15

Цитата:

Сообщение от j0hnik (Сообщение 502156)
не пойму про какой вы цикл

while (($cat = mysqli_fetch_assoc($products))){
				$id=$cat['id'];
				
				$order = mysqli_query($connection, "SELECT * FROM `order` WHERE `id`=1"); //// products
				$zamowienie = mysqli_fetch_assoc($order);
				
				if($zamowienie[$id]>0){
				$x++;
				$y=$x%2;
				if($y==1){
					$color='czemny';
					}else{$color='szwetly';}
					
				
					
				echo'<tr class="'.$color.'">
					<td class="t_title">'.$cat['name'].'</td>
					<td>'.$cat['characteristic'].'</td>
					
					
					
					<td>
						<form method="POST" action="" id="minus'.$id.'" style="float:right">
						<input class="serle" name="test" value="'.$id.'">
						<input onclick="minus()"   id="result'.$id.'" type="submit" value=" – ">
						</form>	
						<span style ="margin-left:3px" id="inc'.$id.'">'.$zamowienie[$id].'</span> шт.
					
						<form method="POST" action="" id="plus'.$id.'" style="float:left">
						<input class="serle" name="test" value="'.$id.'">
						<input onclick="plus()"   id="result'.$id.'" type="submit" value=" + ">
						</form>	
					
					
					</td>
					<td>'.$cat['price'].' р</td>
					<td class="nie_maly"><span id="summ'.$id.'">'.$zamowienie[$id]*$cat['price'].'</span> р</td>
				</tr>';



?>
<script type="text/javascript">

					
				var id="<?=$id?>";
				
				var plus_ = '#plus'+id;
				var minus_ = '#minus'+id;
				
				var result_ = 'result'+id;
				
				$(function(){
					$(plus_).submit(function(e){
						e.preventDefault();
						var data = $(this).serialize();
						$.ajax({
							type: "POST",
							url: "plus.php",
							data: data,
							success: function(result_){
								$(result_).html(result_);
							}
							});
						});
					});
				 
			 
				$(function(){
					$(minus_).submit(function(e){
						e.preventDefault();
						var data = $(this).serialize();
						$.ajax({
							type: "POST",
							url: "minus.php",
							data: data,
							success: function(result_){
								$(result_).html(result_);
							}
							});
						});
					});
				
				
				</script>
				 
				
				<script>  
			
				var inc_ ='inc'+id;
				var summ_ ='summ'+id;
				
				
				
				var inc=<?=$zamowienie[$id]?>; // ilosc towaru
				var kosz=<?=$cat['price']?>;   // cena towaru
				function minus() {
					
					inc=inc-1;
					if(inc>0){
					inc=inc;	
					}
					else{inc=0;}
					
					document.getElementById(inc_).innerHTML = inc; 
					var sum=inc*kosz;
					document.getElementById(summ_).innerHTML = sum; 
				}
				 
				function plus() {
					inc=inc+1;
					document.getElementById(inc_).innerHTML = inc;   
					var sum=inc*kosz;
					document.getElementById(summ_).innerHTML = sum; 
				}
				</script>



цикл while

Богдан94 16.01.2019 13:21


вот такая таблица если в цикле один оборот то все работает если два и более то работает только последний и то не корректно.

Malleys 16.01.2019 14:46

Там где в цикле выводится таблица замените вывод таблицы на
echo '
	<tr class="'.$color.'">
		<td class="t_title">'.$cat['name'].'</td>
		<td>'.$cat['characteristic'].'</td>
		<td>
			<form method="POST" onsubmit="" id="minus'.$id.'" style="float:right">
				<input class="serle" name="test" value="'.$id.'">
				<input onclick="minus(\'inc'.$id.'\', \'summ'.$id.'\', '.$zamowienie[$id].', '.$cat['price'].')" id="result'.$id.'" type="submit" value=" – ">
			</form>  
			<script>registerSubmitForm("#minus'.$id.'", "#result'.$id.'", "minus.php");</script>
			
			<span style ="margin-left:3px" id="inc'.$id.'">'.$zamowienie[$id].'</span> шт.

			<form method="POST" id="plus'.$id.'" style="float:left">
				<input class="serle" name="test" value="'.$id.'">
				<input onclick="plus(\'inc'.$id.'\', \'summ'.$id.'\', '.$zamowienie[$id].', '.$cat['price'].')" id="result'.$id.'" type="submit" value=" + ">
			</form>
			<script>registerSubmitForm("#plus'.$id.'", "#result'.$id.'", "plus.php");</script>
		</td>
		<td>'.$cat['price'].' р</td>
		<td class="nie_maly"><span id="summ'.$id.'">'.$zamowienie[$id]*$cat['price'].'</span> р</td>
	</tr>
';


там где идут скрипты JavaScript в цикле, удалите их оттуда и ВНЕ цикла на странице укажите это (ПЕРЕД циклом)
<script type="text/javascript">

function registerSubmitForm(formSelector, resultSelector, url) {
	$(formSelector).submit(function(e) {
		e.preventDefault();
		var data = $(this).serialize();
		$.ajax({
			type: "POST",
			url: url,
			data: data,
			success: function(result) {
				$(resultSelector).html(result);
			}
		});
	});
}

function minus(inc_, summ_, inc, kosz) {
	inc = inc - 1;

	if (inc > 0) {
		inc = inc;
	} else {
		inc = 0;
	}

	document.getElementById(inc_).innerHTML = inc;
	var sum = inc * kosz;
	document.getElementById(summ_).innerHTML = sum;
}

function plus(inc_, summ_, inc, kosz) {
	inc = inc + 1;
	document.getElementById(inc_).innerHTML = inc;
	var sum = inc * kosz;
	document.getElementById(summ_).innerHTML = sum;
}

</script>

Богдан94 16.01.2019 15:17

Цитата:

Сообщение от Malleys
там где идут скрипты JavaScript в цикле, удалите их оттуда и ВНЕ цикла на странице укажите это (ПЕРЕД циклом)

JS стал работать во всех строчках но не правильно, во первых скрипт по увеличению или уменьшению числа на 1 не срабатывает более одного раза подряд, во вторых если изначально число было 20 то нажав на + получим 21 а затем нажав - получим 19.

Malleys 16.01.2019 15:20

Цитата:

Сообщение от Богдан94
JS стал работать во всех строчках но не правильно, во первых скрипт по увеличению или уменьшению числа на 1 не срабатывает более одного раза подряд, во вторых если изначально число было 20 то нажав на + получим 21 а затем нажав - получим 19.

Да, да, да, я тоже заметил, уже исправил!

echo '
	<tr class="'.$color.'">
		<td class="t_title">'.$cat['name'].'</td>
		<td>'.$cat['characteristic'].'</td>
		<td>
			<form method="POST" onsubmit="" id="minus'.$id.'" style="float:right">
				<input class="serle" name="test" value="'.$id.'">
				<input onclick="minusOrPlus(\''.$id.'\', '.$cat['price'].', -1)" data-inc="'.$zamowienie[$id].'" class="result'.$id.'" type="submit" value=" – ">
			</form>  
			<script>registerSubmitForm("#minus'.$id.'", "#result'.$id.'", "minus.php");</script>
			
			<span style ="margin-left:3px" id="inc'.$id.'">'.$zamowienie[$id].'</span> шт.

			<form method="POST" id="plus'.$id.'" style="float:left">
				<input class="serle" name="test" value="'.$id.'">
				<input onclick="minusOrPlus(\''.$id.'\', '.$cat['price'].', 1)" data-inc="'.$zamowienie[$id].'" class="result'.$id.'" type="submit" value=" + ">
			</form>
			<script>registerSubmitForm("#plus'.$id.'", "#result'.$id.'", "plus.php");</script>
		</td>
		<td>'.$cat['price'].' р</td>
		<td class="nie_maly"><span id="summ'.$id.'">'.$zamowienie[$id]*$cat['price'].'</span> р</td>
	</tr>
';


<script type="text/javascript">

function registerSubmitForm(formSelector, resultSelector, url) {
	$(formSelector).submit(function(e) {
		e.preventDefault();
		var data = $(this).serialize();
		$.ajax({
			type: "POST",
			url: url,
			data: data,
			success: function(result) {
				$(resultSelector).html(result);
			}
		});
	});
}

function minusOrPlus(id, kosz, amount) {
	var inc = +$(".result" + id).data("inc");
	inc = Math.max(0, inc + amount);

	document.getElementById("inc" + id).innerHTML = inc;
	var sum = inc * kosz;
	document.getElementById("summ" + id).innerHTML = sum;
	$(".result" + id).data("inc", inc);
}

</script>

Богдан94 16.01.2019 15:35

Цитата:

Сообщение от Malleys
Да, да, да, я тоже заметил, уже исправил!

Огромное Вам спасибо!! Очень выручили...


Часовой пояс GMT +3, время: 01:36.