Dodanie do bazy rekordów z tablicy POST

0

Witam! Mam pewien haczyk którego nie mogę rozgryźć ;) Jestem tu nowy więc proszę o wyrozumiałość...
Mam tabelę gdzie zaznaczam chceckboxy a następnie klikam submita zmien kolor...

<form method="POST" action="mod_box.php" class="form-inline" role="form">
	<span style="font-size:14px;">Zmień status: </span>
	</div>
		<select class="form-control" name="statusall_ex2"  data-toggle="tooltip" data-placement="bottom" title="Wybierz status!" data-trigger="hover">
			<option value="st1">Wpuszczony</option>
			<option value="st2">Bez rampy</option>
			<option value="st3">Nie wjechał</option>
			<option value="st4">Odesłana</option>
	</select>
</div>
 
<div class="form-group">
<input name="statusall_ex" type="submit" value="Zmień" class="btn btn-warning">
</div>
 
<input name="idc[]" value="$idc" type="checkbox" style="width: 20px; height: 20px;">
 
</form>

Przechodzi do strony mod_box.php gdzie znajduje się kod:


			require_once "connect.php";
			
			if (!$polaczenie = mysql_connect($host,$db_login,$db_pass,$db_name)) {
			echo 'Nie można nawiązać połączenia z bazą danych';
			exit;
				
			}else
			{
			
			if (!mysql_select_db('awizacja', $polaczenie)) {
			echo 'Nie można wybrać bazy danych';
			exit;
			}	
	

					$idc=$_POST['idc']; 
									
					$idsSql = implode(', ', $idc);	
					
	
			if($result = mysql_query("SELECT * FROM appt WHERE id IN ($idsSql)", $polaczenie))
			{	
						
						
					$ilu_userow=mysql_num_rows ($result);
					if($ilu_userow>0)
					{
			

							switch($_POST['statusall_ex2'])
							{	
									

// Wpuszczony
									
										case "st1":
										
										{	
										
							

								
															$kodowanie=mysql_query('SET NAMES \'utf8\'');
												
															while($wiersz=mysql_fetch_assoc($result))
															{
															
															
															
															$idc=$_POST['idc']; 
									
															$idsSql = implode(', ', $idc);
				
															$id=$wiersz['id'];	
															$awizacja=$wiersz['awizacja'];
															$data_awizacja=$wiersz['data_awizacja'];
															$godz_awiz=$wiersz['godz_awiz'];
															$godz_pod=$wiersz['godz_pod'];
															$zamowienie=$wiersz['zamowienie'];
															$nazwa=$wiersz['nazwa'];																						
															$kanal=$wiersz['kanal'];
															$spedycja=$wiersz['spedycja'];
															$linii=$wiersz['linii'];
															$palety=$wiersz['palety'];
															$kartony=$wiersz['kartony'];
															$rampa=$wiersz['rampa'];
															$komentarz=$wiersz['komentarz'];
															$artykul=$wiersz['artykul'];
															$il_zamowien=$wiersz['il_zamowien'];
															$nr_naczepy=$wiersz['nr_naczepy'];
															$tel_kierowcy=$wiersz['tel_kierowcy'];
															$status='Wpuszczony';
															$color='#0099FF';
															$color2='#0099FF';
															$kod=$wiersz['kod'];
															$login=$_SESSION['login'];
															$data_mod=date("d-m-Y H:i:s");
															$zadanie='Change';
															
																}
															
	foreach($idc as $result)						
	{														
									
							if($result = mysql_query("INSERT INTO appt_mod VALUES(NULL,'$id','$awizacja','$data_awizacja','$godz_awiz','$godz_pod','$zamowienie','$nazwa','$kanal','$spedycja','$linii','$palety','$kartony','$rampa','$komentarz','$artykul','$il_zamowien','$nr_naczepy','$tel_kierowcy','$status','$color','$color2','$kod','$login','$data_mod','$zadanie')", $polaczenie))	
							{
																									


									
													
							}else
							{
																									
							echo "Błąd bazy danych, nie można wykonać zapytania do bazy\n";
							echo 'Błąd MySQL: ' . mysql_error();
							exit;
							}	
						

	}	
	
															
														
						
	
									
								
							}	break;
							

		
						}
		
					}
		
				}else
				{
																													
					echo "Błąd bazy danych, nie można wykonać zapytania do bazy\n";
					echo 'Błąd MySQL: ' . mysql_error();
					exit;
					
				}	

			
						
			mysql_close($polaczenie);
			
			
		}

Chodzi oto żeby dodać rekordy zaznaczone poprzez chceckboxy do innej tabeli, po uprzednim wyciągnięciu ich z bazy.. Zaznaczam 4 chceckboxy i te 4 zaznaczone wiersze chcę dodać do do innej tabeli appt_mod. Wiersze się dodają 4 ale te same, tzn. jeden wiersz dodaje się 4 razy z tymi samymi wartościami ;) Jak zmienię kod z wersją pętle foreach umieszczę wewnątrz pętli while kod poniżej:


			require_once "connect.php";
			
			if (!$polaczenie = mysql_connect($host,$db_login,$db_pass,$db_name)) {
			echo 'Nie można nawiązać połączenia z bazą danych';
			exit;
				
			}else
			{
			
			if (!mysql_select_db('awizacja', $polaczenie)) {
			echo 'Nie można wybrać bazy danych';
			exit;
			}	
	

					$idc=$_POST['idc']; 
									
					$idsSql = implode(', ', $idc);	
					
	
			if($result = mysql_query("SELECT * FROM appt WHERE id IN ($idsSql)", $polaczenie))
			{	
						
						
					$ilu_userow=mysql_num_rows ($result);
					if($ilu_userow>0)
					{
			

							switch($_POST['statusall_ex2'])
							{	
									

// Wpuszczony
									
										case "st1":
										
										{	
										
							

								
															$kodowanie=mysql_query('SET NAMES \'utf8\'');
												
															while($wiersz=mysql_fetch_assoc($result))
															{
															
															
															
															$idc=$_POST['idc']; 
									
															$idsSql = implode(', ', $idc);
				
															$id=$wiersz['id'];	
															$awizacja=$wiersz['awizacja'];
															$data_awizacja=$wiersz['data_awizacja'];
															$godz_awiz=$wiersz['godz_awiz'];
															$godz_pod=$wiersz['godz_pod'];
															$zamowienie=$wiersz['zamowienie'];
															$nazwa=$wiersz['nazwa'];																						
															$kanal=$wiersz['kanal'];
															$spedycja=$wiersz['spedycja'];
															$linii=$wiersz['linii'];
															$palety=$wiersz['palety'];
															$kartony=$wiersz['kartony'];
															$rampa=$wiersz['rampa'];
															$komentarz=$wiersz['komentarz'];
															$artykul=$wiersz['artykul'];
															$il_zamowien=$wiersz['il_zamowien'];
															$nr_naczepy=$wiersz['nr_naczepy'];
															$tel_kierowcy=$wiersz['tel_kierowcy'];
															$status='Wpuszczony';
															$color='#0099FF';
															$color2='#0099FF';
															$kod=$wiersz['kod'];
															$login=$_SESSION['login'];
															$data_mod=date("d-m-Y H:i:s");
															$zadanie='Change';
															
															
	foreach($idc as $result)						
	{														
									
							if($result = mysql_query("INSERT INTO appt_mod VALUES(NULL,'$id','$awizacja','$data_awizacja','$godz_awiz','$godz_pod','$zamowienie','$nazwa','$kanal','$spedycja','$linii','$palety','$kartony','$rampa','$komentarz','$artykul','$il_zamowien','$nr_naczepy','$tel_kierowcy','$status','$color','$color2','$kod','$login','$data_mod','$zadanie')", $polaczenie))	
							{
																									


									
													
							}else
							{
																									
							echo "Błąd bazy danych, nie można wykonać zapytania do bazy\n";
							echo 'Błąd MySQL: ' . mysql_error();
							exit;
							}	
						

	}	
	
															
															}
						
	
									
								
							}	break;
							

		
						}
		
					}
		
				}else
				{
																													
					echo "Błąd bazy danych, nie można wykonać zapytania do bazy\n";
					echo 'Błąd MySQL: ' . mysql_error();
					exit;
					
				}	

			
						
			mysql_close($polaczenie);
			
			
		}


To jest ta sama sytuacja dodają się 4 te same wiersze przy czym wyskakuje błąd : Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in D:\WebServ\httpd\mod_box.php on line 50

Już nie wiem gdzie może być problem. Dane przesyłane do tablicy $idc zaczytują się prawidłowo po zaznaczeniu chceckboxów bo sprawdziłem print_r($_POST[idc]);
Jak na razie nikt nie umiał pomóc mi rozwiązać tego problemu... Więc uśmiecham się do Was forowicze.

1
  1. Nie korzystaj z mysql_..., jak już to mysqli albo PDO
  2. W pierwszej wersji kodu to nie ma prawa działać. X razy ustawiasz rarunki, a potem X razy wykorzystujesz te ustawione w ostatnim przebiegu pierwszej pętli.
  3. Nie używaj języka polskiego pisząc kod.
  4. Popatrz ile różnych zmiennych nazywasz $result. Spróbuj je od siebie rozróżnić.

1 użytkowników online, w tym zalogowanych: 0, gości: 1