2016-08-12 1 views
1

Ich habe erfolgreich das PHP-Skript, die Verbindung zu meiner Datenbank und die gewünschten Daten zurückgeben. Aber ich muss dieses Skript erweitern, um eine Variable einzufügen, die den Preis mit einigen Berechnungen anzeigt (Steuern, keine Steuer, Marge usw.).Wie PHP-Variablen in MySQL-Abfragen mit WHILE abgerufenen Zeilen verwenden?

Dieses Skript zeigt mir nur Preiswert der ersten Datenbankzeile 0,00 in allen abgerufenen Zeilen und es ist nicht korrekt - für die erste Datenbankzeile ist ok, weil Produkt 0,0000 Preis haben, aber die anderen Zeilen sind mit korrekten Werten gefüllt. Es scheint, als würde die while-Schleife meine $ styledprice-Variable nicht mögen. Ich kann nicht herausfinden, wie korrekte Feldwerte in allen Zeilen angezeigt werden. Irgendwelche Ideen viel approved? Ich bin ein PHP-Anfänger!

$pricequery = "SELECT rrp FROM my_products"; 
$b2bprice = mysql_query($pricequery); 
$rrps = mysql_fetch_array($b2bprice); 
$price = $rrps['rrp']; 
$styledprice = number_format($price, 2, '.', ''); 

$query = mysql_query(" 
SELECT 
CONCAT(' <td> ',p.id,' </td><td> ',p.manufacturer,' </td><td> ',p.reference,' </td><td> ',p.name,' </td><td> ',p.quantity,' <td> ','".$styledprice."',' </td> ') AS row 
FROM my_products p 
"); 

echo " 
<table> 
    <tr> 
     <td><h5>ID</h5></td> 
     <td><h5>Manufacturer</h5></td> 
     <td><h5>PN</h5></td> 
     <td><h5>Name</h5></td> 
     <td><h5>Quantity</h5></td> 
     <td><h5>Price</h5></td> 
    </tr>"; 

while($row=mysql_fetch_array($query)) 
    { 
     echo "<tr>".$row['row']."</tr>"; 
    } 

echo " 
</table>"; 

Ja ich weiß, über mysql_ Funktionen, die veraltet sind.

+1

es nicht üblich ist, html, das gemischt in die SQL-Anweisung selbst – RamRaider

+1

Ich bin überrascht zu sehen, solche Abfrage Wesen zu sehen in HTML-Tags enthalten. –

+0

@RamRaider aber es funktioniert;) – PipBoy2000

Antwort

2

So etwas sollte besser funktionieren. Es trennt das Resultset von der Datenbank und die Ausgabe über HTML.

// Get the Result Set 
$result = mysql_query("SELECT p.id, p.manufacturer, p.reference, p.name, p.quantity FROM my_products p"); 

// Convert the rows and columns from the Result Set to a PHP Array 
$data = array(); // empty array 
while ($row = mysql_fetch_assoc($result)) { 
    $data[] = $row; 
} 

// Now you have access any row or column 
echo "<table>"; 
foreach($data as $row){ 

    // prepare the data 
    $formatttedQuantity = number_format($row['quantity'], 2, '.', ''); 

    // show each Table Row 

    echo "<tr>"; 
    echo "<td>" . $row['id'] . "</td>"; 
    echo "<td>" . $row['manufacturer'] . "</td>"; 
    echo "<td>" . $row['reference'] . "</td>"; 
    echo "<td>" . $row['name'] . "</td>"; 
    echo "<td>" . $formatttedQuantity . "</td>"; 
    echo "</tr>"; 
} 
echo "</table>"; 
+0

Danke für Ihre Mühe @ Cagy79! Ich werde es innerhalb von Minuten überprüfen! – PipBoy2000

+1

Erstklassig! Genau das brauche ich und mit diesem kann ich viele flexible Modifikationen vornehmen! +1 und Antwort – PipBoy2000

1

Es sieht aus wie Sie das alles in einem SQL-Befehl tun können, wie:

<?php 

    $sql = "SELECT * FROM my_products"; 
    $result = mysql_query($sql); 

    echo " 
    <table> 
     <tr> 
      <td><h5>ID</h5></td> 
      <td><h5>Manufacturer</h5></td> 
      <td><h5>PN</h5></td> 
      <td><h5>Name</h5></td> 
      <td><h5>Quantity</h5></td> 
      <td><h5>Price</h5></td> 
     </tr>"; 

    while($row=mysql_fetch_array($result)){ 

     $price=$row['rrp']; 
     $styledprice = number_format($price, 2, '.', ''); 

     echo " 
      <tr> 
       <td>{$row['id']}</td> 
       <td>{$row['manufacturer']}</td> 
       <td>{$row['reference']}</td> 
       <td>{$row['name']}</td> 
       <td>{$row['quantity']}</td> 
       <td>{$styledprice}</td> 
      </tr>"; 
    } 

    echo " 
    </table>"; 

?> 
+0

Danke @RamRaider! Sieht sehr einfach aus! Ich werde es prüfen! :) – PipBoy2000

Verwandte Themen