2016-12-20 4 views
5

Ich bin seit Wochen damit beschäftigt und ich konnte keinen "einfachen/schnellen" Weg für eine solche banale Implementierung finden. Im limited durch das Wissen nur PHP und HTML (im Moment), aber ich habe endlich, was ich wollte mit einigen Javascript, ohne es in der Tiefe und ich endete mit einem hässlichen paar Hunderte von Code. Aber jetzt, wo ich mehr schwindlig war fragte ich mich, ob es eine einfache Möglichkeit gibt, diese einfache Sache zu tun und meine vorherige Arbeit zu verbessern:einfache Möglichkeit, neue Inhalte aus dynamisch gefüllten Tabellen zu behandeln?

Ich habe einen DB mit Table1 mit n Items und Tabelle 2, ich möchte den Preis von anzeigen Tabelle 1 war dann in der Lage, eine Menge auf der Benutzerseite einzugeben und automatisch die Zwischensumme der Zeile anzuzeigen, wenn alle Elemente gefüllt sind, und dann eine Gesamtsumme anzuzeigen, während der Benutzer Daten eingibt. Lesen Sie dann alle Zeilen und fügen Sie die neue Information (Menge und Zwischensumme) in die Tabelle 2 der Datenbank ein.

Something like this but with n Rows

So etwas aber mit n Zeilen
(gelb = DB-Daten, Blau = Benutzereingaben, Greens = dynamische Felder)

erhalten dann alle jene n Zeilen in den DB Alle Scheinwerfer für eine einfache Möglichkeit, dies zu tun (auch wenn es Jquery oder JS, IM nicht so Angst für sie mehr) (Ich werde nicht meinen Code, weil Mist ist, im Grunde hörte ich alle möglichen Zeilen hören dann auf der Tabelle2 einfügen wenn die Zwischensumme mehr als 0 war) Vielen Dank im Voraus!

+1

Wenn Sie die 'subtotal' und die' Grandtotal' dynamisch ändern, wenn der Benutzer die Änderungen 'menge', müssen Sie Javascript verwenden, da PHP nur serverseitig, nicht clientseitig ist. Können Sie eine vereinfachte Codeversion anzeigen, wie Sie Ihre Tabelle (html) aus Ihrer Datenbank erstellen? – Sean

+0

Danke für deine Zeit Sean !, yep, ich bin mir bewusst, dass PHP nur Serverseite ist, das ist ziemlich genau das, was ich getan habe (die Geige enthält nicht das php dynamische Rendering Table1/Brute erzwinge Einfügen in Tabelle 2) – user3166200

+0

In Ihrem jsFiddle haben Sie den 'Preis' als bearbeitbares Feld/Wert. Ist das korrekt? Wie in Ihrer Beschreibung oben, haben Sie nur den Benutzer die 'Menge' zu ​​ändern, die wiederum die 'Zwischensumme' und 'Gesamtmenge' ändert. Ich möchte nur sicherstellen, dass ich Ihre Bedingungen verstehe. – Sean

Antwort

1

Wenn Hoffnung das funktioniert

\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>

Der PHP-Code

<?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

Ja, es ist ziemlich genau das, was ich tun möchte, ich habe es geschafft, deinen Code dynamisch mit PHP zu füttern, aber jetzt ist es der zweite Teil, wie speichere ich die Zeilen zurück? Vielen Dank für den Code, seinen Weg sauberer als meins! – user3166200

+0

Nein, die Tabelle enthält Informationen aus der Datenbank. dann bearbeitet der Benutzer die Menge und erhält dynamische Zwischensummen und Gesamtsummen, wenn er Daten in die Menge-Reihe eingibt. So weit, ist es gut. Jetzt muss ich die ganze Tabelle in der DB speichern, Reihe für Reihe, aber ich bin nicht ganz sicher, wie es geht. – user3166200

+0

So gibt Im dynamisch Ihren Code ein. – user3166200

Verwandte Themen