cześć, posiadam taki kod, probuje od kilku dni znalezc rozwiazanie na roznych forach jak temu zapobiec ale opadłem z sił, chodzi mi o to, aby wykonywał "update" tylko i wyłącznie w miejscu gdzie zostały zmienione dane w formularzu na stronie wcześniejszej, niestety, aktualnie działa to tak, ze nadpisuje wszystkie rekordy, zamiast ominąć nie edytowane.
<?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óba włamania 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="XXXXXX";
$pass="YYYYYY";
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 = "";
}
}
$svkom = $_POST['svkom'];
$ostedit = $_POST['ostedit'];
$ostedycja = $_POST['ostedycja'];
$svzal=$loginUser;
$svdat=date('Ymd');
$svkom = array();
foreach ($_POST as $key1 => $value)
{
//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 = 'lista_sv.php?&pusrid='.$loginUser;
?>
<script language="JavaScript">
window.alert('Komentarze sa za dlugie maksymalnie 120 znaków');
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]);
}
}
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 count(*) 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>";
exit();
}
$row_sv = db2_fetch_array($stmt_sv);
$jest_sv = $row_sv[0];
//print '<br>w 196 $jest_sv='.$jest_sv.'=<br>';
$svkom1 = $svkom[$key];
$svprc1= $svprc[$key];
//brak zapisu dla zadania
if ($jest_sv == 0) {
if (($svprc1 > 0) or (strlen($svkom1) > 0)){
$sql_sv_i="INSERT INTO ".$library."/sv VALUES($svprc1, '$svkom1', '$svzal', $svdat)";
print '<br> w 209 $sql_sv_i='.$sql_sv_i.'=<br>';
$stmt_sv_i = db2_query($conn, $sql_sv_i);
if (!$stmt_sv_i) {
print '<center><font size="5" color="Maroon">';
print"Wystąpił błąd podczas zapisu do bazy sv<br>";
exit();
}
}
}
//jest zapis dla zadania
else {
if (($svprc1 > 0) or (strlen($svkom1) > 0)){
$sql_sv_u="update ".$library."/sv set svprc= $svprc1, svkom = '$svkom1', svzal='$svzal', svdat=$svdat where svdtp=$id[1] and svsbl='$id[0]'";
print 'w 238 $sql_sv_u='.$sql_sv_u;
$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();
}
}
else {
$sql_sv_d="delete ".$library."/sv where svprc = ".$svprc1." and svkom = '".$svkom1."' and svzal = ".$svzal." and svsbl = ".$svsbl." and svdtp = ".$svdtp;
//print 'w 232 $sql_sv_d='.$sql_sv_d.'=<br>';
$stmt_sv_d = db2_query($conn, $sql_sv_d);
if (!$stmt_sv_d) {
print"Wystąpił błąd podczas usuwania rekordu z bazy sv<br>";
exit();
}
}
}
}
}
exit();
$adres_powrot = 'lista_sv.php?&pusrid='.$loginUser;
//print 'w 96 $adres='.$adres.'=<br>';
?>
<
<script language="JavaScript">
location="<?echo $adres_powrot; ?>";
</script>
<?php
db2_close($conn);
?>
zdjęcie wyników jakie zwraca po wyświetleniu "print"
EDIT: jeżeli usunę jeden "}" na koncu i dodam w linijce 136 to zmienia tylko ostatni rekord, czyli tez jest błąd