• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Dodanie do bazy wszystkich rekordów z tablicy POST

Object Storage Arubacloud
0 głosów
216 wizyt
pytanie zadane 8 lutego 2018 w PHP przez hiper007 Stary wyjadacz (11,270 p.)
zamknięte 10 lutego 2018 przez hiper007

Witam!

Mam pytanko. Przesyłam elementy idc do tablicy POST poprzez checkboxy, a następnie dodaje do bazy te rekordy. Problem w tym, że dodaje się tylko ostatni kliknięty checkbox. Zaznaczę 5 a do bazy dodaje mi się tylko ostatni zaznaczony... poniżej kod... mogę prosić o jego weryfikację?? ;)

			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\'');
												
															$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';
															
											
							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))	
							{
																									

									if($result = mysql_query("UPDATE appt SET status='Wpuszczony', color='#0099FF', color2='#0099FF' WHERE id IN ($idsSql)", $polaczenie))
									{
										
																			
									$_SESSION['stat2']="Status dla ID: <span style='color:red;'>$idsSql</span> został zmieniony na <span style='color:red;'>Wpuszczony!</span>";
									unset($_SESSION['id']);
									require_once "header.php";
									exit();
					
																				
																
									}else
									{
							
										echo "Błąd bazy danych, nie można wykonać zapytania do bazy\n";
										echo 'Błąd MySQL: ' . mysql_error();
										exit;

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

						
									
								
							}	break;

 

Z góry dzięki

komentarz zamknięcia: Problem rozwiązany

1 odpowiedź

+1 głos
odpowiedź 8 lutego 2018 przez Mariusz08 Maniak (62,300 p.)
wybrane 10 lutego 2018 przez hiper007
 
Najlepsza
Z tego co widzę to dajesz INSERT INTO dla jednego rekordu. Podpowiem Ci: pętle.

Poza tym: Zamiast mysql_*, mysqli_* a najlepiej PDO i angielskie nazewnictwo zmiennych.
komentarz 8 lutego 2018 przez hiper007 Stary wyjadacz (11,270 p.)

Problem w tym, że dodaje mi się tyle rekordów co zaznaczyłem ;), ale takich samych. Kod poniżej... zaznaczyłem 5 checkboxow. dodał mi się 5 razy ten sam rekord czyli ostatni zaznaczony ;) a nie wszystkie 5 przechowywane w tablicy POST

			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\'');
												
															$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';
															
						

						for ($i = 0; $i < count($idc); $i++) 
						{
 
							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))	
							{
							
							echo "Błąd bazy danych, nie można wykonać zapytania do bazy\n";
							echo 'Błąd MySQL: ' . mysql_error();
							exit;
							
							}	
							
						}
						
						
						if($result = mysql_query("UPDATE appt SET status='Wpuszczony', color='#0099FF', color2='#0099FF' WHERE id IN ($idsSql)", $polaczenie))
						{
														
						$_SESSION['stat2']="Status dla ID: <span style='color:red;'>$idsSql</span> został zmieniony na <span style='color:red;'>Wpuszczony!</span>";
						unset($_SESSION['id']);
						require_once "header.php";
						exit();
								
												
						}else
						{
										
						echo "Błąd bazy danych, nie można wykonać zapytania do bazy\n";
						echo 'Błąd MySQL: ' . mysql_error();
						exit;
						
						}	

	
								
							}	break;

 

komentarz 8 lutego 2018 przez Mariusz08 Maniak (62,300 p.)

Pokaż co wypluwa:

print_r($_POST);

 

komentarz 8 lutego 2018 przez hiper007 Stary wyjadacz (11,270 p.)
Tablica przechowuje dobre wartosci bo UPDATE ktory jest w kodzie zmienia kolor wszystkim zazaczonym checkbixom :) tylko vos nie idzie z dodaniem do bazy wszystkich rekordow
komentarz 8 lutego 2018 przez Mariusz08 Maniak (62,300 p.)
foreach($idsSql as $result)
{
 //wstawianie do bazy
}

Spróbuj to.

komentarz 8 lutego 2018 przez hiper007 Stary wyjadacz (11,270 p.)

Błąd :

Warning: Invalid argument supplied for foreach() in D:\WebServ\httpd\color_box.php on line 251

			r
equire_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":
										
										{	
										
							foreach($idsSql as $result)
							{
								
															$kodowanie=mysql_query('SET NAMES \'utf8\'');
												
															$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';
															
											
							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))	
							{
																									

									if($result = mysql_query("UPDATE appt SET status='Wpuszczony', color='#0099FF', color2='#0099FF' WHERE id IN ($idsSql)", $polaczenie))
									{
										
																			
									$_SESSION['stat2']="Status dla ID: <span style='color:red;'>$idsSql</span> został zmieniony na <span style='color:red;'>Wpuszczony!</span>";
									unset($_SESSION['id']);
									require_once "header.php";
									exit();
					
																				
																
									}else
									{
							
										echo "Błąd bazy danych, nie można wykonać zapytania do bazy\n";
										echo 'Błąd MySQL: ' . mysql_error();
										exit;

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

						}
									
								
							}	break;

i nie działa ;(

komentarz 8 lutego 2018 przez Mariusz08 Maniak (62,300 p.)
Zamiast $idsSql daj $idc
komentarz 8 lutego 2018 przez hiper007 Stary wyjadacz (11,270 p.)

Działa o tyle,że dodaje tylko jeden rekord do bazy a nie tyle ile było klikniętych checkboxow..

 

			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":
										
										{	
										
				
										
							foreach($idc as $result)
							{
								
															$kodowanie=mysql_query('SET NAMES \'utf8\'');
												
															$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';
															
											
							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))	
							{
																									
									require_once "header.php";
									exit();
													
							}else
							{
																									
							echo "Błąd bazy danych, nie można wykonać zapytania do bazy\n";
							echo 'Błąd MySQL: ' . mysql_error();
							exit;
							}	
						

						}
						

						
									
								
							}	break;

 

komentarz 9 lutego 2018 przez hiper007 Stary wyjadacz (11,270 p.)

Teraz dodaje mi do bazy tyle razy ile zaznaczę checkboxow. Z tym, że dodaje mi te same rekordy.. Zaznaczę trzy checkboxy i doda do bazy trzy rekordy... tylko te same...
 

if(isset($_SESSION['statusall_ex']))							
{	
 
			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))
													{	
 
															$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);
 
 
		}
 
}

 

HTML:

<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>

może ktoś mi pomóc  z tym ... hmm

Podobne pytania

0 głosów
1 odpowiedź 2,452 wizyt
0 głosów
3 odpowiedzi 226 wizyt
pytanie zadane 7 maja 2016 w PHP przez niezalogowany
0 głosów
2 odpowiedzi 488 wizyt

92,555 zapytań

141,403 odpowiedzi

319,554 komentarzy

61,939 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...