Sprawdzenie czy rekord w bazie istnieje

0
foreach ($svkom as $key => $value) 
			  {
				
	//print 'w 178 <br> key='.$key;	  
			 $id = explode("/",$key);
	//print_r ($id);  
			 $svsbl =  $id[0];
			 $svdtp =  $id[1];
				
	//print 'w 246 $key_p='.$key_p.'=$value_p='.$value_p.'=<br>';
	//$key_p - nr pracowni
	//dla każdej pracowni trzeba sprawdzić czy jest rekord dla bieżąego okresu
			$sql_sv="select * from ".$library."/sv where svsbl='$svsbl' and svdtp=$svdtp";
			

	print '<br> w 251 $sql_sv='.$sql_sv.'=<br>'.'<br>';
		$stmt_sv = db2_query($conn, $sql_sv);
		
		if (!$stmt_sv) 			{
	print '<center><font size="5" color="Maroon">';
	print"Wystąpił błąd podczas odczytu bazy sv<br>";
	
								} 
		 
	
			   
		$svkom1 = $svkom[$key];
		$svprc1= $svprc[$key];
			$row_sv= db2_num_rows($stmt_sv);  
			 
			if($row_sv = 1) {	
			}
		elseif ($row_sv = 0) {			
		$sql_sv_u="update ".$library."/sv set  svprc= $svprc1, svkom = '$svkom1', svzal='$svzal', svdat=$svdat where svdtp=$svdtp and svsbl='$svsbl'"; 
		}
	print 'w 238 $sql_sv_u='.$sql_sv_u;                            
	print '<br> w 149 $row_sv='.$row_sv;	
		$stmt_sv_u = db2_query($conn, $sql_sv_u);
		
		if (!$stmt_sv_u) {
	print '<center><font size="5" color="Maroon">';
	print"Wystąpił błąd podczas modyfikacji rekordu bazy sv<br>";
	exit();
	
	
		
													}
			 }        
										
							}

exit();

Stworzyłem taką pętle, który sprawdzi czy rekord w bazie istenieje, jesli istnieje i jest zgodny z przesłanym z wcześniejszego formularza to ma go ominąć, jesli sie rozni to ma go edytować, niestety nie działa to tak jak powinno, czy ktoś jest w stanie mnie nakierować gdzie popełniłem błąd?

0

Auć, moje oczy!!! HTML w PHPie, i to rodem z lat 90tych...

<center><font size="5" color="Maroon">

title

0

@serek: tu masz jeszcze JS'a w tym samym pliku :-)

Odnośnie tematu.

@Drzewko96 powielasz wątki. Myślisz, że jak wytniesz fragment kodu z poprzedniego tematu i wkleisz g9 do nowego to będzie szybsza odpowiedź? Otóż nie, i to nie dlatego, że nikt Ci nie chce pomóc tylko dlatego, że tak jak w poprzednim temacie Ci napisano, Twój kod jest MEEEGA nieczytelny.

O ile dobrze pamiętam, to już kiedyś też miałeś problem z tym samym kodem i tam też poradzono Tobie, żeby przepisać ten kod od nowa.

0

if (empty($row)) { do costam }

0

Tak w ogóle zacznij od podstaw podstaw, bo z tym masz problem. Np. poczytaj sobie czym różni się operator przypisania od porównania.

1

Kolego, nie jestem w stanie Ci pomóc, ale wisisz mi chemioterapię....

0

Powiem, że specyfikacja problemu jest niejasna, intuicyjnie sprawdzanie rekordu w bazie danych i z tym wpisanym wcześniej w formularzu wygląda na źle sformułowany...

Ten kod jest dość zastanawiający, nie ma css'a ... nie wiem, jak on przejdzie walidację i generalnie nie ma możliwości szybkiej edycji wyglądu (stylowania) strony.

https://validator.w3.org

Taki znacznik <center> był już wycofywany w HTML4 a w najnowszym standardzie HTML5 nie istnieje. Do tego wyszukiwarki nie lubią starych standardów.

Wygląda też, że strona nie jest asynchroniczna tylko przeładowywana. Tak tego się już nie robi. Ogólnie trzeba też pomyśleć przy wielu użytkownikach o transakcjach na bazie danych - bo dojdzie do zrujnowania danych w bazie. Czyli masz jeszcze jeden czynnik w kodzie (element w układance) do ogarnięcia.

0
Vorname Name napisał(a):

Ogólnie trzeba też pomyśleć przy wielu użytkownikach o transakcjach na bazie danych - bo dojdzie do zrujnowania danych w bazie.

On ma problem z rozróżnieniem czym się różni = od ===, a Ty mu o transakcjach wyskakujesz? :P Najpierw niech się nauczy podstaw, a potem dopiero niech przejdzie do rzeczy bardziej zaawansowanych.

1
serek napisał(a):
Vorname Name napisał(a):

Ogólnie trzeba też pomyśleć przy wielu użytkownikach o transakcjach na bazie danych - bo dojdzie do zrujnowania danych w bazie.

On ma problem z rozróżnieniem czym się różni = od ===, a Ty mu o transakcjach wyskakujesz? :P Najpierw niech się nauczy podstaw, a potem dopiero niech przejdzie do rzeczy bardziej zaawansowanych.

Nie jestem pedagogiem, jednak czasami początki są trudne, trudno przestawić myślenie na komputery. Solidne roczne programowanie z rozwiązywaniem zadań i projektami jest konieczne, żeby sobie wpoić zasady, styl, logikę programowania. Po roku można zobaczyć, jak człowiek się w tym czuje. Rzucając się od razu na głęboką wodę, nie będzie z tego wiadom nic, gdzie jest przyczyna.

Przy takich dość prostych problemach w wyrzucaniu tego, czego się nie oczekiwało, to trzeba sobie przeprowadzić debugowanie kodu. Po czym zobaczyć, w którym miejscu program podaje dane niezgodne z oczekiwaniami. I znaleźć przyczynę. To podstawa rozwiązywania problemów.

Ja testuje prowizorycznie w razie problemów tak:

$debug = 1;

if($debug == 1){
 $myfile = fopen("raport.txt", "w") or die("Unable to open file!");
 fwrite($myfile, "Raport: testedfile.php \r\n");
}

Potem dla wszystkich kluczowych (podejrzanych) zmiennych:

if($debug == 1){
 fwrite($myfile, "\$varible: " . $varible . "\r\n");
}

if($debug == 1){
 fwrite($myfile, "Condition #1:  \$varible1 > \$varible2" . 'true' . "\r\n");
}


if($debug == 1){
 fwrite($myfile, "Condition #1:  \$varible1 > \$varible2" . 'false' . "\r\n");
}

Na koniec zamknięcie pliku:

if($debug == 1){
 fclose($myfile);
}

Kod testujący można włączyć na przyszłość w razie zgłaszanych przez użytkowników problemów. Można jeszcze bardziej rozbudować kod testujacy - sprawdzać wzorce pobieranych (oczekiwanych) i zwaracanych przez istotne fragmenty kodu dane (przepływ danych). Wtedy w razie problemów realnych użytkowników można szybko znaleŹć błąd i go naprawić.

0

rozumiem, że kod może być dla Was programistów bardzo trudny, ale zostałem zostawiony z takim kodem którego sam po części nie rozumiem, a niestety pisała te kody osoba która już jest w wieku 55+, dlatego też przyszedłem z pomocą na forum, sam jestem laikiem w tych sprawach i liczyłem na jakiekolwiek naprowadzenie, jak sie za to zabrać, Zmieniłem kod na taki, ale powstaje niestety taki problem, iż edytuje wszystkie rekordy i przepisuje je, nie sprawdzajac czy istnieje juz w bazie.

Tylko jeden uzytkownik bedzie w jednym momencie dzialac na tym pliku, wiec omijam opcje ze dwie osoby moglyby to edytowac jednoczesnie

	foreach ($svkom as $key => $value) 
			  {
				
	//print 'w 178 <br> key='.$key;	  
			 $id = explode("/",$key);
	//print_r ($id);  
			 $svsbl =  $id[0];
			 $svdtp =  $id[1];
				
	//print 'w 246 $key_p='.$key_p.'=$value_p='.$value_p.'=<br>';
	//$key_p - nr pracowni
	//dla każdej pracowni trzeba sprawdzić czy jest rekord dla bieżąego okresu
			$sql_sv="select svprc, svkom from ".$library."/sv where svsbl='$svsbl' and svdtp=$svdtp";
			

	print '<br> w 251 $sql_sv='.$sql_sv.'=<br>'.'<br>';
		$stmt_sv = db2_query($conn, $sql_sv);
		
		if (!$stmt_sv) 			{
	
	print"Wystapil blad podczas odczytu bazy sv<br>";
	
								} 
	
	$row_sv= db2_fetch_array($stmt_sv);
		$svprc_old = $row_sv[0];
		$svkom_old = $row_sv[1];
			   
		$svkom1 = $svkom[$key];
		$svprc1= $svprc[$key];
	
		
		print ' $svprc_old='.$svprc_old;
		print '<br>';
		print ' $svkom_old='.$svkom_old;
	
	if ($svprc_old !== $svprc1)
	{
	$sql_sv_u="update ".$library."/sv set  svprc= $svprc1, svzal='$svzal', svdat=$svdat where svdtp=$id[1] and svsbl='$id[0]'";   
		                          
                $stmt_sv_u = db2_query($conn, $sql_sv_u);
	}
	
    elseif ($svkom_old !== $svkom1)
	{
     $sql_sv_u="update ".$library."/sv set svkom = '$svkom1', svzal='$svzal', svdat=$svdat where svdtp=$id[1] and svsbl='$id[0]'";   
		                          
                $stmt_sv_u = db2_query($conn, $sql_sv_u);
	}
	else
	{
		echo " nie wprowadzono zmian";
	}
	
	

		}
		
													}
			        
										
							
exit();

Uczę się z książki php i mysql (Wydanie czwarte) od pana Luke Welling'a i Laury Thomson, nie wiem czy to dobry wybór

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