Mathematische Funktion

Kufstein

B1G-Software-Kunde
Hoi Leute

Ich hab ein kleines Mathematisches Problem.

Folgendermassen:
Ich habe eine Tabelle Artikelstamm, wo ich Artikelname, Basiswert und die Verkauften Einheiten drinne habe.
Jetzt wird momentan ausgerchnet wieviel von jedem Artikel verkauft worden ist, und somit wird ein Preis kalkuliert.
Der Artikel der am meisten Verkauft worden ist, wird teuerer. Der der weniger Verkauft wird wird biliger.
Das ganze wird On-The-Fly (immer vom Basiswert kalkuliert).

Soweit so gut. Hier ne Struktur der Tabelle (in Etwa)

Jetzt habe ich noch eine Tabelle Namens Verlauf, wo in Regelmassigen Zeitabständen Ein Timestamp, die ID der Artikel und die Verkauften Einheiten reinkopiert werden.


Num will ich als XML Datei dargestellt haben die nachher dazu benutzt wird, um in einem Diagramm anzuzeigen, welche Artikel gestiegen und welche gefallen sind.

Momentan sieht die Datei so aus:
Code:
<? include "function.php"; ?>

<chart>
<update url='xml.php' delay='5' timeout='5' retry='1' mode='reset' />

	<chart_data>
		<row>
			<null/>
<?
$results = mysql_query("SELECT * FROM `verlauf` GROUP BY `time` ORDER BY `verlauf`.`ID` DESC LIMIT 8");
$i = 0;
while($row = mysql_fetch_object($results))
{
echo "<string>" . date("H:i", $row->time) . "</string>
";
$i++;
}
?>
			
		</row>


<?
$results = mysql_query("SELECT * FROM `drinks`");
$i = 0;
while($arow = mysql_fetch_object($results))
{

echo "		<row>
			<string>" . $arow->name . "</string>
			";

$results2 = mysql_query("SELECT * FROM `verlauf` WHERE drink = '" . $arow->ID . "' ORDER BY `verlauf`.`ID` DESC LIMIT 8");
$ia = 0;
while($row = mysql_fetch_object($results2))
{

			echo "<number shadow='medium'>" . prozent_w($row->drink, $row->wert) . "</number>
				";


$ia++;
}
echo "</row>";
}
?>

			</chart_data>

<chart_grid_h alpha='10' thickness='1' />
	<chart_guide horizontal='true' vertical='true' thickness='1' alpha='25' type='dashed' text_h_alpha='0' text_v_alpha='0' />
	<chart_note type='flag' size='11' color='000000' alpha='70' x='-10' y='-36' background_color='aaff00' background_alpha='75' shadow='medium' bevel='note' />
	<chart_pref line_thickness='2' point_shape='circle' point_size='7' fill_shape='false' />
	<chart_rect x='50' y='100' width='320' height='150' positive_color='ffffee' positive_alpha='65' negative_color='ff8888' negative_alpha='65' bevel='bg' shadow='high' />
	<chart_transition type='slide_left' delay='.5' duration='0.5' order='series' />
	<chart_type>Line</chart_type>
	
	<draw>
		<text shadow='high' transition='dissolve' delay='0' duration='0.5' alpha='10' size='48' x='8' y='8' width='400' height='75' h_align='center' v_align='bottom'>annual report</text>
			</draw>
	<filter>
		<shadow id='low' distance='2' angle='45' alpha='20' blurX='5' blurY='5' />
		<shadow id='medium' distance='2' angle='45' alpha='40' blurX='7' blurY='7' />
		<shadow id='high' distance='5' angle='45' alpha='25' blurX='10' blurY='10' />
		<bevel id='bg' angle='45' blurX='15' blurY='15' distance='5' highlightAlpha='25' shadowAlpha='50' type='outer' />
		<bevel id='note' angle='45' blurX='10' blurY='10' distance='3' highlightAlpha='60' shadowAlpha='15' />
	</filter>
   
	<legend shadow='low' transition='dissolve' delay='0' duration='0.5' x='50' y='75' width='320' height='5' layout='horizontal' margin='5' bullet='line' size='13' color='ffffff' alpha='75' fill_color='000000' fill_alpha='10' line_color='000000' line_alpha='0' line_thickness='0' />
	
	
	<tooltip color='FFFFFF' alpha='90' background_color='8888FF' background_alpha='90' shadow='medium' />
            
	<series_color>
		<color>ff4422</color>
		<color>ffee00</color>
		<color>8844ff</color>
	</series_color>

 


</chart>

Die Zeiten zeige ich GROUP BY an.

Was für eine Rechnung muss ich jetzt in der Function prozent_w($id, $wert) hinterlegen, so dass ich Werte bekomme, ob der Verkauf der Einzelten Artikels zurück oder gestiegen ist?
 
Last edited:
Hm. Wenn du sagen willst, ob der Verkauf gestiegen oder zurückgegangen ist, brauchst du ja einen Vergleichswert. Willst du das mit dem Vortag, Vormat, ... vergleichen? Wahrscheinlich mit dem Vortag?
Und: Was soll prozent_w denn für einen Wert ausgeben? Die Veränderung gegenüber des Vortages (?) in Prozent?
 
Last edited:
Hm. Wenn du sagen willst, ob der Verkauf gestiegen oder zurückgegangen ist, brauchst du ja einen Vergleichswert. Willst du das mit dem Vortag, Vormat, ... vergleichen? Wahrscheinlich mit dem Vortag?
Und: Was soll prozent_w denn für einen Wert ausgeben? Die Veränderung gegenüber des Vortages (?) in Prozent?

Genau .. ich würd gerne den Wert davor als Referenz haben. Weis aber nicht wie ich das genau rechnen muss, und wie ich die werte Optimal aus der MySQL Datenbank raushole. Ich muss es nachher auch irgendwie (mit ner While Schleife oder so) in die XML File gepackt bekommen, sodas es die Grafik anzeigen kann. ..
 
Last edited:
Habs glaub gelöst... Ich lass einfach den Prozentwert in die Tabelle importieren...


Hab aber jetzt noch ein anderes Problem:

Ich führe folgenden Code aus, und er bingt mir die letzten 8 Datensätze:
Code:
$results2 = mysql_query("SELECT * FROM `verlauf` WHERE drink = '" . $arow->ID . "' ORDER BY `verlauf`.`ID` DESC LIMIT 8");
$ia = 0;
while($row = mysql_fetch_object($results2))
{

			echo "<number shadow='medium'>" . prozent_w($row->drink, $row->wert) . "</number>
				";


$ia++;
}
echo "</row>";
}
?>

Nun bräuchte ich die 8 Datensätze genau andersrum ausgegeben. Gibts da ne möglichkeit ?
 
dann versuch mal statt DESC ASC zu nehmen.
Ne, dass geht nicht..

mit ASC wird der Anfang der Tabelle ausgegeben. Ich brauche schon DESC da ich die letzen Datensaetze will.

Beispiel Tabelle

Spalte 1 Spalte 2
1 Wurst
2 Kaese
3 Schinken
4 Salat
5 Tomaten
6 Zwibeln
7 Gurken
8 Milch


Wenn ich jetzt ASC Limit 4; ausführe bringt er mir als Ausgabe: Wurst, Kaese, Schinken, Salat.. Ich brauch aber die Letzen 4. Wenn ich dann DESC Limit 4; ausführe bringt er mit: Milch, Gurken, Zwibeln, Tomaten.

Ich brauche aber Tomaten, Zwibeln, Gurken, Milch.

Also ich muss die letzen 4 Datensaetze Rückwerts sortiert rausbekommen.
 
Erst in ein Array packen und dann mit array_reverse umdrehen.
Also in while($row = mysql_fetch_object($results2))
{
ist es ja noch ein Objekt , wie bekomme ich es nun in eine Arry und wie kann ich es in weiterschleifen ...
 
Also in while($row = mysql_fetch_object($results2))
{
ist es ja noch ein Objekt , wie bekomme ich es nun in eine Arry und wie kann ich es in weiterschleifen ...

PHP:
$objects = array();
while($row = mysql_fetch_object($results2)) {
    $objects[] = $row;
}
$objects = array_reverse($objects);
foreach($objects as $row) {
    echo $row[0]; // Hier dein Code
}
 
PHP:
$objects = array();
while($row = mysql_fetch_object($results2)) {
    $objects[] = $row;
}
$objects = array_reverse($objects);
foreach($objects as $row) {
    echo $row[0]; // Hier dein Code
}

Scheint zu funktionieren.. merci
 
Back
Top