Bestes Ergebnis an erster Stelle setzen

prom.night

Grünschnabel
Code:
$result = "SELECT * 
                          FROM shop
                          WHERE product LIKE '%$keyword_product%'";
alle Ergebnisse ausgeben die in das Suchfeld eingegeben worden. Dann lasse ich im nächsten Schritt mit folgenden Formeln
Code:
$umsatz = $verkaufsmenge * $verkaufspreis;
$kosten = $einkaufsmenge * $einkaufspreis;
$gewinn = $umsatz - $kosten;

den Gewinn berechnen. Jetzt kommt der Punkt wo es bei mir hängt. Jetzt soll der Eintrag der durch diese Berechnung den meisten Gewinn erbringt an erster stelle stehen und der Rest absteigend dort drunter.

Code:
$result = "SELECT * 
                          FROM shop
                          WHERE product LIKE '%$keyword_product%'";

$query = mysql_query($result) or die(mysql_error());

 while($row = mysql_fetch_array($query)){
            $verkaufsmenge = $row["verkaufsmenge"];
             $verkaufspreis = $row["verkaufspreis"];
             $einkaufspreis = $row["einkaufspreis"];
            $einkaufsmenge = $row["einkaufsmenge"];

           $umsatz = $verkaufsmenge * $verkaufspreis;
            $kosten = $einkaufsmenge * $einkaufspreis;
            $gewinn = $umsatz - $kosten;

 $output .= "$gewinn"

}

Jetzt sind mir die Ideen ausgegangen wie ich diese Sortierung hinbekommen kann, da ich mir nicht sicher bin, ob ich diese Berechnung ggf. auch in der SQL Abfrage machen kann.

Liebe Grüße
 
PHP:
$umsatz = $verkaufsmenge * $verkaufspreis;
$kosten = $einkaufsmenge * $einkaufspreis;
$gewinn = $umsatz - $kosten;
Ich bin mir nicht sicher, aber hier könnte es vielleicht schon ein kleineres Problem geben, weil du hier auch im weiteren Gang das Vorzeichen beachten musst, denn wenn du viele auf Lager hast und die Gewinnspanne gering ist, aber dennoch besser lief als andere Artikel, dann doch noch lange nicht an der Spitze stehen muss, obwohl der Gewinn höher bzw. bereits vorhanden ist, denn wenn du nach deiner Rechnung ein Minus vorn hast, dann ist es ja noch kein Gewinn. ;)

Daher würde ich diese Rechnung wie folgt umstellen.
PHP:
$sort = ($verkaufspreis / $einkaufspreis) * ($verkaufsmenge / $einkaufsmenge);
//Beispiel 1
$sort = (100 / 20) * (20 / 100);
$sort = 5 * 0,2;
$sort = 1;
//Beispiel 2
$sort = (40 / 20) * (80 / 100);
$sort = 2 * 0,8;
$sort = 1,6;

EDIT: Und stell bitte auch auf PDO oder MySQLi die Datenbankverbindungen um, weil die MySQL-Befehle vielleicht bald nicht mehr unterstützt werden.

EDIT2: Dann solltest du vom $row auch die ID des Artikels abfragen und bei der Ausgabe lässt du dann die Artikel mit der ID nach dem Wert vom $sort sortiert ausgeben.

EDIT3: Mit ist ja auch noch eingefallen, dass du ja den Zeitraum bei dieser Berechnung außer acht gelassen hast. Also es sollte auch relevant sein, ob ein Artikel 1 Monat oder 10 Jahre für die Berechnung verfügbar war.
Dazu kommt dann noch, dass du am besten bei jedem Verkauf diesen sort-Wert (EDIT4: oder noch besser stündlich oder täglich durch einen Cronjob) aktualisierst und mit in der DB abspeicherst, dann brauchst du nicht mehr bei den Artikelauflistungen diesen Berechnen, sondern gleich in Aufrufen der Artikelliste sortieren lassen.
 
Zuletzt bearbeitet:
Wenn du schon eine Datenbank hast, benutz die auch, um die Berechnungen durchzführen und zu sortieren ;) Dafür ist die nänlich gemacht... Du kannst die Sachen prinzipiell genau so in deine Abfrage schreiben, da MySQL einfache arithmetische Operationen unterstützt. Danach ist das nur noch nen einfaches ORDER BY dazu.
 
Zurück