Zmiana tylko jednego wiersza

0

Cześć wszystkim, walczę od kilku dni z tym kodem, zadaniem tego kodu ma być przesłanie całej tabeli która jest zamieszczona na screenie i zmienic tylko wiersz w którym zostały zmienione dane, niestety nie działa mi to w taki sposób, bo edytuje wszystkie wiersze, wstawiam kod, może ktoś znajdzie mój błąd ;/

Jeśli chodzi w jaki sposób sprawdzam czy zmienia jeden rekord czy wszystkie to zmieniam sobie recznie w bazie kolumne ostatnia edycja i sprawdzam czy zmienilo tylko jeden wiersz czy wszystkie po przeładowaniu strony

<?php
/*
 program sprawdza poprawność danych i zapisuje rekordy "sv" 
-- jeśli ju z istnieją - to te wczesniejsze usuwa
 */
require("../../macros/infopro.php");
require("../../MC/funkcje/pracownia_osoby.php"); 

     

            $loginCookie='';
            $loginUser='';
            $loginPwd5='';
            $loginStmp='';
            $dostep='';
            $adres = maszyna().'zest_pom/daty_przekaz.php';

            GET_LOGIN_COOKIE_PROG($loginCookie, $loginUser, $loginPwd5, $loginStmp, $adres, $dostep);

            if (!strcasecmp($dostep, 't') == 0)
               {
                 echo "<h2>Pr&#243ba w&#322amania do systemu<font color=red></font></h2>";
                 exit();
               }
     
   
?>


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
</head>
<?php
$host = "127.0.0.1";
$user="XXXX";
$pass="YYYY";
setlocale (LC_COLLATE, 'pl_PL');

$OPTIONS = array( i5_naming => DB2_I5_NAMING_ON );

$conn = db2_connect("*LOCAL", $user, $pass, $OPTIONS);
if (!$conn) {
	echo "Connection failed. SQL Err:";
	echo db2_conn_error();
	echo "<br>";
	echo db2_conn_errormsg();
    exit();
}
//print 'w 44 w zapisz_zkm GET = ';
//print_r ($_GET);
print '<br>w 124 POST = ';
print_r ($_POST).'<br>'; 
print '<br>';
//exit();


 if (isset($_POST['library']))
    $library=$_POST['library'];
  else {
    if (isset($_GET['library'])) {
      $library=$_GET['library'];
    }
    else {
      $library = "";
    }
  }



$rk = $_POST['rk'];
$msc = $_POST['msc'];
$dzn = $_POST['dzn']; 
$svkom = $_POST['svkom'];
$svsbl = $_POST['svsbl'];

$ostedit = $_POST['ostedit'];
$ostedycja = $_POST['ostedycja'];


$svzal=$loginUser;
$svdat=date('Ymd');
$svkom = array();


foreach ($_POST as $key1 => $value) 
{  

//rok
if ($key1 == "rk"){	  
                    foreach ($_POST['rk'] as $key2 => $value2){
 //print '<br>w 90 $key2='.$key2.'=$value2='.$value2;                   	
	                        $rk[$key2] =  str_replace(" ", 0,$value2);          
                    }
	  }
	  
 //miesiac
if ($key1 == "msc"){	  
	          // print_r($value);
	              foreach ($_POST['msc'] as $key3 => $value3){
//print '<br>w 99 $key3='.$key3.'=$value3='.$value3;
	                         $msc[$key3] =  str_replace(" ", 0,$value3);          
	              }
	  }
print '<br>';
//dzien
 if ($key1 == "dzn"){	  
	          // print_r($value);
	              foreach ($_POST['dzn'] as $key4 => $value4){
//print '<br>w 108 $key4='.$key4.'=$value4='.$value4;
	                         $dzn[$key4] =  str_replace(" ", 0,$value4);          
	              }
	  }
	 print '<br>';

	
print_r($key1).'<br>'; 
//svkom
if ($key1 == "svkom"){	  
// print_r($value);
	              foreach ($_POST['svkom'] as $key5 => $value5){
//print '<br>w 108 $key5='.$key5.'=$value5='.$value5;
	                         $svkom[$key5] = trim($value5);
	                         $dlug = strlen($svkom[$key5]);
	                         
//print 'w 132 $dlug='.$dlug.'=<br>';	                         
	                         
                            if ($dlug>120){   
                            
                            $adres_back = maszyna().'lista_sv.php?&pusrid='.$loginUser.
										 '&rk='.$rk.'&msc='.$msc.'&dzn='.$dzn;
                                         
    	                    ?>
      	                    <script language="JavaScript">
      	                               window.alert('Komentarze sa za dlugie');
                                       location="<?echo $adres_back; ?>";
      	                    </script>
      	                    <?
                            }


                            $svkom[$key5] =str_replace("\r\n", " ",$svkom[$key5]);
                            $svkom[$key5]=str_replace("'", " ",$svkom[$key5]);
                            $svkom[$key5]=str_replace('"', '',$svkom[$key5]);
                            $svkom[$key5]=trim($svkom[$key5]);
                         

						 
	              }
	  }
	  
	  


//print_r($svkom).'<br>';


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

print '<br>w 251 $sql_tpd='.$sql_tpd.'=<br>';


print_r($key);

         $stmt_tpd = db2_query($conn, $sql_tpd);
        
         if (!$stmt_tpd) {
         	print '<center><font size="5" color="Maroon">';
            print"Wystąpił błąd podczas odczytu bazy sv<br>";
            exit();
         } 
         $row_tpd = db2_fetch_array($stmt_tpd);
         $jest_tpd = $row_tpd[0];
print '<br>w 196 $jest_tpd='.$jest_tpd.'=<br>';
        if (($rk[$key]  == 0) or ($msc[$key] == 0) or ($dzn[$key] == 0))
         { 
         	$svdtp = 0;
         }
         else {
            $svdtp = $rk[$key] * 10000 + $msc[$key] * 100 + $dzn[$key];
         }
         $svkom1 = $svkom[$key];
		 $svprc1= $svprc[$key];
		
		 
		 	 //print_r($svprc1);
       //brak zapisu dla zadania
         if ($jest_tpd == 0)  			 {
         	if (($svdtp > 0) or (strlen($svkom) > 0)){
	                        $sql_tpd_i="INSERT INTO ".$library."/sv VALUES( $svdtp, '$svsbl', $svprc1, '$svkom1', '$svzal', $svdat)" ;
 
		                        
                                  $stmt_tpd_i = db2_query($conn, $sql_tpd_i);
       print '<br>w 214 $sql_tpd_i'.$sql_tpd_i.'=<br>';  
             if (!$stmt_tpd_i) {
                 print '<center><font size="5" color="Maroon">';
                 print"Wyst&#261pił bł&#261d podczas zapisu do bazy sv<br>";
                 exit();
             } 
         	}
     }
	 
         //jest zapis dla zadania
         else {
         	
			
            if (($svdtp > 0) or (strlen($svdtp) > 0)){
     	    $sql_tpd_u="update ".$library."/sv set svsbl='$svsbl', svdtp=$svdtp, svprc= $svprc1, svkom = '$svkom1', svzal='$svzal', svdat=$svdat where svdtp=$id[1] and svsbl='$id[0]'";  
print 'w 238 $sql_tpd_u='.$sql_tpd_u.'=<br>';                            
             $stmt_tpd_u = db2_query($conn, $sql_tpd_u);
        
			$stmt_tpd_u = db2_query($conn, $sql_tpd_u);
			if (!$stmt_tpd_u) {
				print '<center><font size="5" color="Maroon">';
				print"Wystąpił błąd podczas modyfikacji rekordu bazy sv<br>";
				exit();
		
           
             } 
			 
         	 }
        
     }        
     
     
	  }
} 


$adres_powrot = 'lista_sv.php?&pusrid='.$loginUser.
                                         '&rk='.$rk.'&msc='.$msc.'&dzn='.$dzn; 
//print 'w 96 $adres='.$adres.'=<br>';                        


?>
<
       <script language="JavaScript">     	        
      	       location="<?echo $adres_powrot; ?>";
         </script>
<?php


db2_close($conn);

?>

SCREEN

0

W linii 200 odpowiedzialnej za UPDATE nie masz określonego rekordu jaki chcesz uaktualnić i uaktualnia wszystkie.

0

Czyli mam źle sformułowane polecenie mysql? hmm musze nad tym pomysleć, nakierowałbyś mnie troche? ;x

0

Już to przerabialiśmy :) :

$aktualizuj= "UPDATE ".$library."/ozs SET ozsproc ='$ozsproc', ozsdproc='$ozsdproc', ozsod='$ozsod', ozsdo='$ozsdo' where ozsid=$nr_z_adr";
0

Porównując oby dwa polecenia, to składnia ich jest taka sama, tylko tutaj chyba jest błąd w zmiennych które deklaruje?

0

A co wyświetla var_dump($id) ?

0

array(2) { [0]=> string(1) "A" [1]=> string(8) "22220101" }
array(2) { [0]=> string(1) "C" [1]=> string(8) "22220101" }
array(2) { [0]=> string(1) "E" [1]=> string(8) "33330101" }

i tak dla kazdego wiersza

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