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

Pobieranie zmiennej z wiersza tabeli (SQL, PHP) do Javascriptu

Fiszki IT
Fiszki IT
+1 głos
61 wizyt
pytanie zadane 18 czerwca w JavaScript przez Grzesiek9999 Nowicjusz (130 p.)

Witam, mam mały kłopot z pobraniem przez skrypt zmiennej zawartej w pętli WHILE (dane z bazy SQL). Wiem jak zawrzeć zmienną z PHP w skrypcie - jednak jest to zmienna stała, a ja chciałbym by była to zmienna, która wynika z obliczeń z danego wiersza w tabeli SQL. Celem jest zliczanie w czasie rzeczywistym dodanych w inputach wartości z wartościami zawartymi w zmiennych z pojedynczych wierszy.Poniżej przedstawiam przykład:

// pętla 
while($r = mysql_fetch_object($wynik)) {

// sumowanie i zlicznie wartości zawartych w tabeli SQL
$godziny_pracy = mysql_result(mysql_query("SELECT SUM(hours) FROM a_karta WHERE type='P' AND user LIKE '$user'"),0);
$nadgodziny = mysql_result(mysql_query("SELECT SUM(uphours) FROM a_karta WHERE type='P' AND user LIKE '$user'"),0);
$l4 = mysql_result(mysql_query("SELECT SUM(khours) FROM a_karta WHERE kind='L4' AND user LIKE '$user'"),0) / 10000;
$urlop = mysql_result(mysql_query("SELECT SUM(khours) FROM a_karta WHERE kind LIKE '%U%' AND user LIKE '$user'"),0) / 10000;
$dpopoludniowy = mysql_result(mysql_query("SELECT SUM(dnight) FROM a_karta WHERE user LIKE '$user'"),0);
$dweekendowy = mysql_result(mysql_query("SELECT SUM(dweek) FROM a_karta WHERE user LIKE '$user'"),0) / 2;
$sum_inne = mysql_result(mysql_query("SELECT COUNT(kind) FROM a_karta WHERE kind ='IN' AND MONTH(date) = '$date_month' AND YEAR(date) = '$date_year' AND user LIKE '$user'"),0);
$sum_duty = mysql_result(mysql_query("SELECT COUNT(duty) FROM a_karta WHERE duty ='TAK' AND MONTH(date) = '$date_month' AND YEAR(date) = '$date_year' AND user LIKE '$user'"),0);
$sum_dnight = mysql_result(mysql_query("SELECT COUNT(dnight) FROM a_karta WHERE dnight ='1' AND MONTH(date) = '$date_month' AND YEAR(date) = '$date_year' AND user LIKE '$user'"),0);
$sum_dweek = mysql_result(mysql_query("SELECT COUNT(dweek) FROM a_karta WHERE dweek ='1' AND MONTH(date) = '$date_month' AND YEAR(date) = '$date_year' AND user LIKE '$user'"),0);

// obliczenia z danych pobranych i wyliczonych z tabeli SQL 
$obliczenia_godziny = $godziny_pracy*$stawka;
$obliczenia_nadgodziny = $nadgodziny*1.5*$stawka;
$obliczenia_urlopy = $urlop*$stawka;
$obliczenia_l4 = $l4*0.8*$stawka;
$premia = 0;
$obliczenia_premia = ($premia/100)*($obliczenia_godziny+$obliczenia_nadgodziny);
$obliczenia_dpopołudniowy = $dpopoludniowy*50;
$obliczenia_dweekendowy = $dweekendowy*200;
$obliczenia_razem = $obliczenia_godziny + $obliczenia_nadgodziny + $obliczenia_urlopy + $obliczenia_l4 + $obliczenia_premia + $obliczenia_dpopołudniowy + $obliczenia_dweekendowy;

//Wyniki
	echo '<tr class="second">';
			echo '<td></td>'; 
			echo '<td></td>'; 
			echo '<td>'.money_format('%.2n', $obliczenia_godziny).' zł</td>'; 
			echo '<td>'.money_format('%.2n', $obliczenia_nadgodziny).' zł</td>'; 
			echo '<td>'.money_format('%.2n', $obliczenia_urlopy).' zł</td>'; 
			echo '<td>'.money_format('%.2n', $obliczenia_l4).' zł</td>'; 
			echo '<td>'.money_format('%.2n', $obliczenia_premia).' zł</td>'; 
			echo '<td>'.money_format('%.2n', $obliczenia_dpopołudniowy).' zł</td>'; 
			echo '<td>'.money_format('%.2n', $obliczenia_dweekendowy).' zł</td>'; 
			echo '<td><input type="number" min="0.00" max="1000000.00" step="0.01" id="uznaniowa'.$r->id.'" name="uznaniowa"/> zł</td>'; 
			echo '<td><input id="results'.$r->id.'" value="" name="razem"/></td>'; 
			echo '<td>'.money_format('%.2n', $obliczenia_nakonto).' zł</td>'; 
			echo '<td>'.money_format('%.2n', $obliczenia_ubezpieczenie).' zł</td>'; 
			echo '<td>'.money_format('%.2n', $obliczenia_inne).' zł</td>'; 
			echo '<td>'.money_format('%.2n', $obliczenia_doreki).' zł</td>'; 
	echo '</tr>'; 
	echo '<tr  class="last">';
	echo '</tr>'; 
	echo '</main>'; 
		} 

Do tego mam skrypt, którego zadaniem jest wyliczanie w czasie rzeczywistym sumy: $obliczenia_razem oraz wartości pobranej z inputa o id="uznaniowa". Przykład kodu:

<script>
	var razem1 = <?php echo json_encode($obliczenia_razem); ?>;
    document.getElementById('uznaniowa').addEventListener('input', e => {
    document.getElementById('results').value = e.target.value/1 + razem1/1;
});
</script>

Proszę pomóżcie :), każda odpowiedź będzie dla mnie niezmiernie cenna. Z góry dziękuję

komentarz 18 czerwca przez SzkolnyAdmin Maniak (57,360 p.)
A co konkretnie nie działa? Może AJAX pomógłby aktualizować stronę w czasie rzeczywistym.
komentarz 18 czerwca przez VBService VIP (121,500 p.)

Ten zapis powoduje nadpisanie zmiennej: $obliczenia_razem, wynikiem ostatniego obliczenia z pętli (czy o to Tobie chodzi?)

<?php
// pętla 
while($r = mysql_fetch_object($wynik)) {
  . . . 
 
  $obliczenia_razem = $obliczenia_godziny + $obliczenia_nadgodziny
                    + $obliczenia_urlopy + $obliczenia_l4 
                    + $obliczenia_premia + $obliczenia_dpopołudniowy
                    + $obliczenia_dweekendowy;
 
  . . . 
  
  echo '</main>'; 
}
?>

<script>
    var razem1 = <?php echo json_encode($obliczenia_razem); ?>;
    document.getElementById('uznaniowa').addEventListener('input', e => {
    document.getElementById('results').value = e.target.value/1 + razem1/1;
});
</script>

jak powyżej, mamy liczbę obliczoną wcześniej w $obliczenia_razem, więc wystarczy

. . .

<script>
    var razem1 = <?php echo $obliczenia_razem; ?>;
    document.getElementById('uznaniowa').addEventListener('input', e => {
    document.getElementById('results').value = e.target.value/1 + razem1/1;
});
</script>

. . .

 

komentarz 18 czerwca przez VBService VIP (121,500 p.)

Kolejna sprawa, do zapisu nazw zmiennych staramy się używać język angielski, ale nie jest to przymus  wink, jeżeli już używamy polskich nazw, nie używamy polskich "ogonków".

 

$obliczenia_dpopoludniowy = . . .;

 

1
komentarz 18 czerwca przez Grzesiek9999 Nowicjusz (130 p.)
edycja 18 czerwca przez Grzesiek9999
Dziękuję za zainteresowanie, wyjaśnię co chciałbym osiągnąć. Mam pracownika o id=1, którego  pensja, załóżmy w sumie wynosi: $obliczenia_razem = $obliczenia_premia + $obliczenia_nadgodziny + $_godziny = 1000. W formularzu (input id="uznaniowa") wpisuję 200. W czasie rzeczywistym skrypt dokonuje obliczenia uznaniowa +  $obliczenia_razem, co daje 1200. Nie ma z tym kłopotu jeśli zmienna $obliczenia_razem ma stałą wartość - skrypt działa bez zarzutu. Jednak nie dokonuje działania (przepisuje wartość z inputa) w przypadku gdy $obliczenia_razem za każdym razem ma inną wartość (wg mnie to efekt pętli, która pobiera dane z bazy SQL) po prostu jej nie dodaje. Chciałbym zapisać tak skrypt by każdemu użytkownikowi odpowiadała zmienna $obliczenia_razem.

P.S. Z zapisem (dopracuję) - dziękuję za uwagę
komentarz 18 czerwca przez VBService VIP (121,500 p.)
edycja 18 czerwca przez VBService

Pierwszy sposób jaki mi przychodzi do głowy to "zrobienie" formularza w ten sposób, że

w pole np.: id_pracownik wpisywać jego identyfikator, lub użyć pól np.: imie_pracownik, nazwisko_pracownik, ajax-em pobrać wartość $obliczenia_razem (przypisane do konkretnego pracownika) i  wtedy można w czasie rzeczywistym obliczać dane z pola (input) id="uznaniowa".

1
komentarz 18 czerwca przez Grzesiek9999 Nowicjusz (130 p.)
W ten sposób tego nie rozpatrywałem, dzisiaj posiedzę i spróbuję coś wykombinować. Dziękuję za poświęcony czas. Gdy dopracuję odpowiedni system - podzielę się z Wami swoimi "wypocinami" :).

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 168 wizyt
pytanie zadane 31 marca 2020 w PHP przez Klaudiaaa Początkujący (350 p.)
0 głosów
1 odpowiedź 41 wizyt
0 głosów
1 odpowiedź 2,706 wizyt
pytanie zadane 11 grudnia 2015 w JavaScript przez majkkel Użytkownik (530 p.)
Porady nie od parady
Zadając pytanie postaraj się o odpowiedni tytuł, kategorię oraz tagi.Tagi

84,758 zapytań

133,559 odpowiedzi

295,985 komentarzy

56,012 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...