Przycisk który wywołuje zmienną SQL

0

wynik

0

Zobacz tak, zapomniałem, że się tablice zmieniły no i jedna dodatkowa kolumna była.

<?php
  require("../macros/infopro.php");
  require("../MC/funkcje/pracownia_osoby.php");
  date_default_timezone_set('Europe/Paris');

  $loginCookie='';
  $loginUser='';
  $loginPwd5='';
  $loginStmp='';
  $dostep='';
  GET_LOGIN_COOKIE_PROG($loginCookie, $loginUser, $loginPwd5, $loginStmp, '/cgi-bin/mc/budzet/budzet.ndm/input', $dostep);

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

  $host = "127.0.0.1";
  $user="XXXXXX";
  $pass="YYYYYYY";
  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();
  }

  $library = "MACBORLIB";

  /* Czy ta część jest do czegoś potrzebna? */
  print_r ($_GET);
  print '<br>w 124 POST = ';
  print_r ($_POST);
  print '<br>';
  /* Czy to dla was taki debugger */

  if (isset($_POST['pusrid']))
    $pusrid=$_POST['pusrid'];
  else {
    if (isset($_GET['pusrid'])) {
      $pusrid=$_GET['pusrid'];
    }
    else {
      $pusrid = $loginUser;
    }
  }

  if (isset($_POST['nr_z_adr']))
    $nr_z_adr=$_POST['nr_z_adr'];
  else {
    if (isset($_GET['nr_z_adr'])) {
      $nr_z_adr=$_GET['nr_z_adr'];
    }
    else {
      $nr_z_adr = 0;
    }
  }

  $sql_adr= "select nzwskr from adr/adr where kontob=".$nr_z_adr;
  $stmt_adr = db2_query($conn, $sql_adr);

  if (!$stmt_adr) {
    print"Prepare Failed. Błąd w odczycie bazy adr <br>";
    exit();
  }

  $row_adr = db2_fetch_array($stmt_adr);

  $sql_ozs= "select ozsproc, ozsdproc, ozsod, ozsdo, ozszal, ozsdat from ".$library."/ozs where ozsid= $nr_z_adr order by ozsdo desc";
  //print '=$sql_ozs='.$sql_ozs.'=<br>';
  $stmt_ozs = db2_query($conn, $sql_ozs);

  if (!$stmt_ozs) {
    print"Prepare Failed. Błąd w odczycie bazy ozs <br>";
    exit();
  }

  $procent = array();
  $odpis = array();
  $row_ozs = db2_fetch_both($stmt_ozs);

  if (isset($row_ozs[0]) and ($row_ozs[0]!="")) {
    // $pp = $row_ozs[0]*100; - to już nie jest potrzebne
    /*poniższa instrukcja wyswietlała z kropką, a ja chcę przecinek, gdybym użyła funkcji number_format
    * musiałabym podać ilosc miejsc po przecinku
    */
    //print $pp;
    $procent = $row_ozs[0].','.$row_ozs[1];
  else {
    $procent = "";
  }

  if ($row_ozs[2] > 0) {
    $rkod = substr($row_ozs[2], 0,4);
    $msod = substr($row_ozs[2], 4,2);
  }
  else {
    $rkod = "";
    $msod = "";
  }

  if ($row_ozs[3] > 0) {
    $rkdo = substr($row_ozs[3], 0,4);
    $msdo = substr($row_ozs[3], 4,2);
  }
  else {
    $rkdo = "";
    $msdo = "";
  }

  if ($row_ozs[5] > 0) {
    $startDate = ($row_ozs[5], 0,4).'/'.substr($row_ozs[5], 4,2).'/'.substr($row_ozs[5], 6,2);
  }
  else {
    $startDate = "";
  }

  db2_close($conn);
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
</head>
<body>

  <table width=100%>
    <tr>
      <td>
        <font COLOR=GREEN ALIGN="left" size="2">
          <b>formularz: budzet/tab_zbiorcza/edytuj_odpisy.php</b>
        </font>
      </td>
      <td ALIGN="right">
        <font COLOR=GREEN size="4">
          <?php echo "$loginUser"; ?>
        </font>
      </td>
    </tr>
    <tr>
      <td>
        <font ALIGN=left size=4>
          Dzisiaj jest : <?php echo date("d.m.Y"); ?> r.
        </font>
      </td>
      <td ALIGN=right>
        <font size=4 >
          godzina : <?php echo date("H:i:s"); ?> <!-- po co tutaj to r. było -->
        </font>
      </td>
    </tr>
  </table>

  <form action="zmien_odpisy.php" method="post">
    <input type="hidden" name="pusrid" value="<?php echo $pusrid; ?>" />
    <input type="hidden" name="nr_z_adr" value="<?php echo $nr_z_adr; ?>" />

    <center>  
      <h2>
        Odpisy ze sprzeda&#380y na kom&#243rk&#281 <font color=green><?php print $nr_z_adr.' - '.$row_adr[0];  ?></font>
      </h2>
      
      <table  border=1 cellpadding=3 bgcolor='lightgreen'>
        <tr bgcolor='99CCFF'>
          <th colspan=5>
            <center>
              <input type="button" value="Powrót" onClick="location='<?php echo instancja('/cgi-bin/MC/budzet/budzet.ndm/input',0); ?>'">
              <input type="button" value="Powrót o jeden poziom" onClick="location='<?php  print trim ('wysw_lkzb1.php?nr_z_adr='.$nr_z_adr.'&pusrid='.$pusrid); ?>'">
              <input type="submit" value="Zapisz do pliku" />
            </center>
          </th>
        </tr>
        <tr bgcolor='99CCFF'>
          <th>
            <font size=2>%</font> <!-- tag <nobr> is non-standard :) -->
          </th>
          <th>
            <font size=2>
              Okres <br>
              obowi&#261zywania<br>
              Od
            </font>
          </th>
          <th>
            <font size=2>
              Okres<br>
              obowi&#261zywania<br>
              Do
            </font>
          </th>
          <th>
            <font size=2>
              Za&#322o&#380yciel
            </font>
          </th>
          <th>
            <font size=2>
              Data za&#322o&#380enia
            </font>
          </th>
        </tr>
        <tr>
          <td>
            <input type="text" name="procent" value="<?php echo $procent; ?>" size=6 />
          </td>
          <td>
            <input type="text" name="rkod" value="<?php echo $rkod; ?>" size=4 />
            <input type="text" name="msod" value="<?php echo $msod; ?>" size=2 />
          </td>
          <td>
            <input type="text" name="rkdo" value="<?php echo $rkdo; ?>" size=4 />
            <input type="text" name="msdo" value="<?php echo $msdo; ?>" size=2 />
          </td>
          <td>
            <?php echo $row_ozs[4]; ?>
          </td>
          <td>
            <?php echo $startDate; ?>
          </td>
        </tr>
      </table>
    </center>
  </form>
</body>
</html>
0

udane

udało się jakos to ułożyć :)

0

No właśnie, teraz od nowa stwórz plik zapisz_odpisy.php i uaktualnij dane. Początek pliku nie będzie się różnił niczym innym od tego (chodzi o sprawdzenie połączenia z bazą i logowanie).

0
leonpro778 napisał(a):

No właśnie, teraz od nowa stwórz plik zapisz_odpisy.php i uaktualnij dane. Początek pliku nie będzie się różnił niczym innym od tego (chodzi o sprawdzenie połączenia z bazą i logowanie).

tak ma wyglądac początek zmien_odpisy.php ?

<?php
  require("../macros/infopro.php");
  require("../MC/funkcje/pracownia_osoby.php");
  date_default_timezone_set('Europe/Paris');

  $loginCookie='';
  $loginUser='';
  $loginPwd5='';
  $loginStmp='';
  $dostep='';
  GET_LOGIN_COOKIE_PROG($loginCookie, $loginUser, $loginPwd5, $loginStmp, '/cgi-bin/mc/budzet/budzet.ndm/input', $dostep);

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

  $host = "127.0.0.1";
  $user="XXXXXX";
  $pass="YYYYY";
  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();
  }

  $library = "MACBORLIB";

0

Dokładnie, teraz musisz wyciągnąć dane z poprzedniego formularza.

0

dobrze kombinuje?

  <?php

$pusrid = $_POST['pusrid'];
$nr_z_adr= $_POST['nr_z_adr'];


print "Numer: $pusrid";
print "Numeradr: $nr_z_adr";


?>
0

Tak, oprócz tego musisz jeszcze wyciągnąć dane z formularza (z pól input). Chodzi o te pola, które Cię interesują.

0
 <?php

$pusrid = $_POST['pusrid'];
$nr_z_adr= $_POST['nr_z_adr'];
$procent= $_POST['procent'];
$rkod= $_POST['rkod'];
$msod= $_POST['msod'];
$rkdo= $_POST['rkdo'];
$msdo= $_POST['msdo'];


print "Id użytkownika: $pusrid<br>";
print "Numer działu: $nr_z_adr<br>";
print "%: $procent<br>";
print "Rok i miesiąc od kiedy: $rkod/$msod<br>";
print "Rok i miesiąc do kiedy: $rkdo/$msdo<br>";




?>

co Ty o tym myślisz?

0

No i ok. Teraz te dane musisz sformatować w TEN sposób, aby odpowiadały formatowi danych w bazie danych. Przykładowo:

w bazie dany $procent składa się z dwóch rzeczy ozsproc oraz <ozsdproc>. Musisz przerobić zmienną $procent na właśnie takie dwie składowe.

0

w taki sposób?

<?php
$procent= "ozsproc,ozsdproc";
$procent1= explode("",$procent);
echo $procent1[0];
echo $procent1[1];
?>
0

Nie. W zmiennej $procent masz już odpowiednie dane. Musisz je tylko wyciągnąć:

$procent = explode(",", $procent);
$ozsproc = $procent[0];
$ozsdproc = $procent[1];
0

tak?

$procent = explode(",", $procent);
$ozsproc = $procent[0];
$ozsdproc = $procent[1];
$rkod = explode(",", $rkod/$msod);
$ozsod = $rkod[0];
$ozsod = $msod[1];
$rkdo = explode(",", $rkdo/$msdo);
$ozsdo = $rkdo[0];
$ozsdo = $msdo[1];
?>```
0

Nie, źle robisz. Po pierwsze, w bazie musisz zaktualizować następujące pola: ozsproc, ozsdproc, ozsod, ozsdo. To po pierwsze. O ile dwa pierwsze pola ozsproc i ozsdproc masz już zrobione o tyle dwa pozostałe musisz zrobić w taki sposób aby zachowany był format przechowywania danych. Czyli pole ozsod ma format XXX.XXX (gdzie X to jakaś tam liczba). Tak naprawdę jest to "zlepienie" dwóch stringów, $rkod oraz $msod i rozdzielenie ich . za trzecim znakiem. Czyli:

$ozsod = $rkod.$msod;

Zwróci Ci to wynik 201610. Teraz musisz wstawić tutaj . za trzecim znakiem. Najprościej funkcją substr(), czyli:

$ozsod = substr($ozsod, 0, 3).".".substr($ozsod, -3);

To zwróci Tobie już format taki jaki chciałeś czyli 201.610, to samo zrób dla drugiego pola $ozsdo

0
 <?php

$pusrid = $_POST['pusrid'];
$nr_z_adr= $_POST['nr_z_adr'];
$procent= $_POST['procent'];
$rkod= $_POST['rkod'];
$msod= $_POST['msod'];
$rkdo= $_POST['rkdo'];
$msdo= $_POST['msdo'];


$procent = explode(",", $procent);
$ozsproc = $procent[0];
$ozsdproc = $procent[1];
$ozsod = $rkod.$msod;
$ozsod = substr($ozsod, 0, 4).".".substr($ozsod, -3);
$ozsdo = $rkdo.$msdo;
$ozsdo = substr($ozsdo, 0, 4).".".substr($ozsdo, -3);



print "Id użytkownika: $pusrid<br>";
print "Numer działu: $nr_z_adr<br>";
print "%: $procent<br>";
print "Rok i miesiąc od kiedy: $ozsod<br>";
print "Rok i miesiąc do kiedy: $ozsdo<br>";




?>

dobrze pozmieniałem ten kod i dopisałem tamte rzeczy?

0

Wygląda na to, że dobrze. Teraz "zbuduj" zapytanie SQL do aktualizacji. UPDATE nazwa.bazy SET pole = wartosc, pole2 = wartosc, pole3 = wartosc WHERE id = idrekordu

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

Dobrze?

EDIT: chyba źle bo nie zdefiniowałem jeszcze gdzie ma działać taka zmienna $aktualizuj, prawda?

0

Źle :) Dla ozsproc wartość jest w $ozsproc a dla ozsdproc jest $ozsdproc. Po to "rozbijałeś" tą zmienną. Co do $aktualizuj to musisz teraz wykonać to zapytanie.

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

teraz? :)

1
Drzewko96 napisał(a):
$aktualizuj= "UPDATE ".$library."/ozs SET ozsproc =".$ozsproc.", ozsdproc=".$ozsdproc.", ozsod=".$ozsod.", ozsdo=".$ozsdo." where ozsid=".$nr_z_adr."";

teraz? :)

Zapomniałeś o '

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

I dalej:

$stmt_ozs = db2_query($conn, $aktualizuj);

  if (!$stmt_ozs) {
    print"Prepare Failed. Błąd w aktualizacji bazy ozs <br>";
    exit();
  }
0

Działa! jesteś wielki, jak mogę Ci się odwdzięczyć? teraz tylko stworze do tego jakąś ładną ramke i bedzie gotowe :) Dziekuję!

0

Napiszę tylko tak, jeżeli chcesz dalej ten swój skrypt rozwijać i ogólnie uczyć się PHP to masz naprawdę fajną podstawę, Masz konkretne założenia, bazę danych, nic tylko zrobić refactor kodu :)

0

chcę sie dalej rozwijać i uczyc php i sql, masz moze jakies rady dla mnie? :)

0

Rady są chyba tylko takie abyś poczytał trochę o podstawach a następnie o bezpieczeństwie SQL bo kod co teraz masz od strony obowiązujących zasad w PHP jest bardzo niechlujne napisany :)

0

A polecasz jakies książki albo poradniki o które warto się zaczepic?
\

EDIT: Generalnie teraz walcze z tym aby jakos obrobic na stronie, aby zamiast wyswietlania np "12,700 wyswietlalo samo 12,7" i zeby wyswietlala zamiast 201808" to "2018/08" bo jak wczesniej w tym $ozsod=substr($ozsod, 0, 4).'/'.substr($ozsod, -3); to nie czytalo z baza, ale usunalem .'/'. i zaczelo czytac baze, ale teraz zle wyswietla na stronie, dlatego walcze z obrobka :)

0

Co do tych zer to zainteresuj się funkcją https://www.php.net/manual/en/function.rtrim.php

0

Udało mi się uporać z tymi zerami, posiedziałem trochę nad kodem, troche w internecie i udało mi się z tym uporać :) Teraz musze zrobic mozliwosc dodawania nowych rekordow do bazy z przegladarki, postaram sie zrobic sam :)

0

mam pytanko jeszcze, bo pojawił mi się nastepujący problem, w sytuacji gdy jakiś dział posiada kilka odpisów, zmienna $aktualizuj która zrobiliśmy zmieni wszystkie rekordy, a chcialbym aby odczytywala ze jest to ostatni rekord i zeby tylko jego zmieniala, nie wiem jak to zdefiniowac :/

zamieszczam screen z bazy z działu który ma kilka rekordów

kilka-rekordow

0

No to tutaj to już trochę klapa będzie bo z tego screena co wysłałeś tak naprawdę NIE MA takiego pola w bazie, które pozwoliłoby na jednoznaczną identyfikację rekordów. Pytałem się wcześniej, czy masz pewność, że oszid jest polem unikalnym, teraz są tego konsekwencje.
W poprzedniej wersji skryptu miałeś to zrobione w ten sposób, że na stronie edytuj_opisy.php wyświetlone były WSZYSTKIE rekordy z określonym ozsid, następnie wszystkie były ściągnięte do PHP, usuwane i zapisywane jeszcze raz. Nawet jak modyfikacja dotyczyła tylko jednego rekordu. Moim zdaniem bzdura i źle zaprojektowana baza. Pozostaje Ci chyba przerobić kod aby działał właśnie w taki sposób.

0

A w jaki sposób ten kod teraz przerobić? troche sie zrobiłem znowu zielony w tym temacie, jak troche kumałem o co chodzi tak znowu sie zagubiłem :/

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