2016-12-20 9 views
5

Byłem z tym od tygodni i nie mogłem znaleźć żadnego "łatwego/szybkiego" sposobu na tak przyziemną implementację. Im ograniczony znając tylko php i html (w tej chwili), ale w końcu dostałem to, co chciałem za pomocą niektórych javascript bez znajomości go na głębokości i skończyłem z brzydkie kilkaset kodów. Ale teraz, gdy jestem bardziej oszołomiony, zastanawiałem się, czy istnieje prosty sposób na zrobienie tej prostej rzeczy i poprawienie mojej poprzedniej pracy:łatwy sposób obsługi nowych treści z tabel wypełnionych dynamicznie?

Mam DB z Table1 z n Items i Table 2, Chcę wyświetlić cenę od Tabela 1 była następnie w stanie wprowadzić ilość po stronie użytkownika i automatycznie wyświetlać sumę prawną wiersza, gdy wszystkie elementy są wypełnione, a następnie wyświetlać Grandtotal jako dane wprowadzane przez użytkownika. Następnie przeczytaj wszystkie wiersze i wstaw nowe informacje (ilość i suma częściowa) do tabeli2 tabeli DB.

Something like this but with n Rows

Coś takiego, ale z n wierszy
(żółty = danych DB wejść Niebieski = user, warzywa = pola dynamiczne)

Następnie dostać wszystkie te n wierszy w DB Wszelkie reflektory dla prostego sposobu na zrobienie tego? (nawet jeśli zawiera Jquery lub JS, nie im już się ich boję) (Nie będę publikować mojego kodu, ponieważ jest bzdura, w zasadzie skończyłem słuchać wszystkich posible wierszy następnie wstawiając je na Table2 jeśli suma częściowa była większa niż 0) Z góry dziękuję!

+1

Jeśli chcesz dynamicznie zmieniać 'subtotal' i' Grandtotal' jako użytkownik zmieni 'quantity', będziesz musiał używać javascript, ponieważ php jest tylko po stronie serwera, a nie po stronie klienta. Czy możesz wyświetlić uproszczoną wersję kodu, w jaki sposób tworzysz swoją tabelę (html) z bazy danych? – Sean

+0

Dziękuję za poświęcony czas Sean !, tak, jestem świadomy php jest tylko stronie serwera, http://jsfiddle.net/1exp78zw/ to jest prawie to, co skończyłem robić (skrzypce nie obejmuje Php dynamicznego renderowania table1/brute wymuszenie wstawienia do tabeli 2) – user3166200

+0

W twoim jsFiddle masz 'price' jako pole/wartość edytowalną. Czy to jest poprawne? Tak jak w powyższym opisie, tylko użytkownik zmienia "ilość", co z kolei zmienia "sumę częściową" i "Grandtotal". Chcę tylko upewnić się, że rozumiem twoje warunki. – Sean

Odpowiedz

1

Jeśli nadzieja to działa

\t \t $(document).ready(function() { 
 
\t \t $('#mytable tr').each(function(i, elem) { 
 
\t \t  var sub = $(elem).find('.sub'); 
 

 
\t \t  // Update subtotal after the price 
 
\t \t  $(this).find('.price').change(function() { 
 
\t \t  var quant = $(this).parent().next().children('.quant'); 
 

 
\t \t  sub.val($(this).val() * quant.val()); 
 

 
\t \t  updateGrand(); 
 
\t \t  }); 
 

 
\t \t  // Update subtotal after the quantity 
 
\t \t  $(this).find('.quant').change(function() { 
 
\t \t  var price = $(this).parent().prev().children('.price'); 
 

 
\t \t  sub.val($(this).val() * price.val()); 
 

 
\t \t  updateGrand(); 
 
\t \t  }); 
 
\t \t }); 
 

 
\t \t // Function for updating the grand total 
 
\t \t function updateGrand() { 
 
\t \t  var sum = 0; 
 

 
\t \t  $('#mytable .sub').each(function() { 
 
\t \t  sum += parseInt($(this).val()); 
 
\t \t  }); 
 

 
\t \t  $('#grand span').text(sum); 
 
\t \t } 
 

 
\t \t });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form action "/someUrl" method="post"> 
 
    <table id="mytable"> 
 
    <tr> 
 
     <th>Price</th> 
 
     <th>Quantity</th> 
 
     <th>Subtotal</th> 
 
    </tr> 
 
    <tr> 
 
     <td> 
 
     <input type="number" class="price" name="price[]" value="0" min="1" /> 
 
     </td> 
 
     <td> 
 
     <input type="number" class="quant" name="quant[]" value="0" min="1" /> 
 
     </td> 
 
     <td> 
 
     <input type="number" class="sub" name="sub[]" value="0" readonly /> 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td> 
 
     <input type="number" class="price" name="price[]" value="0" min="1" /> 
 
     </td> 
 
     <td> 
 
     <input type="number" class="quant" name="quant[]" value="0" min="1" /> 
 
     </td> 
 
     <td> 
 
     <input type="number" class="sub" name="sub[]" value="0" readonly /> 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td> 
 
     <input type="number" class="price" name="price[]" value="0" min="1" /> 
 
     </td> 
 
     <td> 
 
     <input type="number" class="quant" name="quant[]" value="0" min="1" /> 
 
     </td> 
 
     <td> 
 
     <input type="number" class="sub" name="sub[]" value="0" readonly /> 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td> 
 
     <input type="number" class="price" name="price[]" value="0" min="1" /> 
 
     </td> 
 
     <td> 
 
     <input type="number" class="quant" name="quant[]" value="0" min="1" /> 
 
     </td> 
 
     <td> 
 
     <input type="number" class="sub" name="sub[]" value="0" readonly /> 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td></td> 
 
     <td>Grand total:</td> 
 
     <td id="grand"><span>0</span> 
 
     </td> 
 
    </tr> 
 
    </table> 
 
    <input type="submit" name="submit" value="Submit" /> 
 
</form>

Kod PHP

<?php 
// sample config 
$servername = "localhost"; 
$username = "root"; 
$password = "root"; 
$dbname = "sample"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 

// Check connection 
if ($conn -> connect_error) { 
    die("Connection failed: " . $conn -> connect_error); 
} 

if (isset($_POST['submit'])) { 
    $price = $_POST['price']; 
    $quant = $_POST['quant']; 
    $sub = $_POST['sub']; 

    foreach ($price as $key => $p) { 
     $quantdb = $quant[$key]; 
     $subdb = $sub[$key]; 

     $sql = "INSERT INTO table2 (price, quantity, subtotal) VALUES ('$p', '$quantdb', '$subdb')"; 

     $conn->query($sql); 
    } 
} 
?> 
+0

Tak, to prawie to, co chcę zrobić, udało mi się dynamicznie przekazać kod za pomocą php, ale teraz jest to druga część, w jaki sposób odłożyć wiersze? Wielkie dzięki za kod, jego sposób na czystsze niż moje! – user3166200

+0

Nie, tabela jest wypełniona informacjami z bazy danych. następnie użytkownik edytuje ilość i otrzymuje dynamiczne podsumy i grandtotal, gdy wprowadza dane do wiersza Ilość. jak na razie dobrze. Teraz muszę przechowywać cały stół w DB, rząd po rzędzie, ale nie jestem pewien, jak to zrobić. – user3166200

+0

W ten sposób dynamicznie podaję twój kod. – user3166200

Powiązane problemy