etwas zum knobeln ;) problem mit db + php

  • hallo,

    wie einige von euch vllt schon mitbekommen haben, bastel ich an einem tarifvergleich. ich habe nun einen tarifrechner, wo man werte für festnetztelefonie, mobilfunk, anzahl sms und mailboxabfragen...

    nun gibt er mir auf der nächsten seite eine tabelle mit allen anbieter aus und rechnet fixkosten (grundgebühr) mit den telefonie und messaging kosten zusammen.

    Jetzt möchte ich versuchen, das immer nur die 10 günstigsten tarife angezeigt werden, sortiert nach dem günstigsten absteigend. nun kommt aber gerade der monatliche gesamtpreis nicht aus der datenbank sondern wurde ja eben erst errechnet...

    Nun könnte ich den wert in der datenbank ablegen und dann wieder sortiert ausgeben lassen...aber das würde doch auf dauer komplett alles sprengen wenn für jeden tarifvergleich ein eintrag angelegt wird?


    gibt es da noch andere lösungen?

    gruß

    Max

  • Du geizt mit Informationen. Wie sieht die Tabelle aus, was wird wie berechnet?

  • Schritt 1:
    Du hast ein Array mit den Tarifen
    Schritt 2:
    Du legst ein zweites Array mit den selben Indizes aber anderen Werten an
    Schritt 3:
    asort anwenden
    Schritt 4:
    Mit foreach oder current/next/each/key die ersten zehn ausgeben

    Viele liebe Grüße
    The User

  • hier mal die website, damit ihr mehr infos bekommt... wie gesagt: noch im aufbau ;)

    http://www.simkarten-discounter.de/simkarten-test…ner_results.php

    werte können schon eingegeben werden, die auswertung findet auch schon statt...

    Das ganze ist so aufgebaut:



    .....

    PHP
    <?
    $einrichtung = $tarif[einrichtungspreis] - $tarif[startguthaben]; 
    ?>
    
    
    <? echo $einrichtung; ?>



    .....

    PHP
    <?
    $fix = $tarif[grundgebuehr] + $tarif[mindestumsatz]; 
    ?>
    
    
    <? echo $fix; ?>



    .....



    .....



    .....

    wie kann ich die werte denn in ein array bringen und das sortiert ausgeben? wie ich die ausgabe auf 10 stück reduziere bekomm ich glaube noch selbst hin. danke

  • Im Moment kann ich mir das nicht in Ruhe ansehen, erst heute Abend. Aber bis dahin kannst du schon mal an den Anfang deiner Scripte diese Zeilen

    PHP
    error_reporting(E_ALL);
    ini_set("display_errors", true); // Falls hier ein Warning (ini_set disabled)ausgespuckt wird, Zeile wieder rausnehmen

    einbauen und sämtliche Meldungen ausbügeln. Damit hast du dann schon mal was zu tun.

    Und noch ein Hinweis:

    PHP
    $result = mysql_query("SELECT * FROM tarif WHERE anbieternr!='' ORDER BY tarif asc ", $connectionid);
    $f=mysql_num_rows($result);


    Nur um die Anzahl herauszubekommen ein "Select *" auf die DB loszulassen, ist GRAUSAM!!!

    Einmal editiert, zuletzt von bandit600 (20. März 2009 um 14:10)

  • Also, ich habe das mal kurz überflogen, dabei sind folgende Probleme aufgefallen:

    • Du postest einen gestückelten Quellcode
    • Der Quellcode ist nicht ordentlich eingerückt und somit für eine Problemanalyse unbrauchbar.
  • nun ja...eine problemanalyse ist auch nicht unbedingt notwendig... der code funktioniert ja. du wolltest etwas mehr über die tabelle wissen, die erstellt wird, ich hab dir den link zur website gepostet. ich versuche nur herauszufinden, wie ich das mit den arrays machen muss, damit er mir die tabelle nach "$summe" absteigend anzeigt

  • eine problemanalyse ist auch nicht unbedingt notwendig


    Und warum gibt es dann diesen Thread???


    der code funktioniert ja.


    Aber nicht wie er soll.

    ich versuche nur herauszufinden, wie ich das mit den arrays machen muss, damit er mir die tabelle nach "$summe" absteigend anzeigt


    Schön, aber um dir da helfen zu können, muss man zuerst einmal einen Überblick bekommen, wie wo wann was berechnet wird. Und da dies mit dem verstümmelten und unleserlichen Quellcode nur sehr schwer ist, wirst du auf meine Hilfe verzichten müssen. Ich habe keine Lust, erst mal alles ordentlich einzurücken, wobei das fast unmöglich ist, wenn man den Zusammenhang nicht erkennen kann.

    Daher wünsche ich dir viel Erfolg bei der Lösungsfindung.

  • Also du solltest count(*) verwenden, um die Größe auszulesen.

    SQL
    SELECT count(*) FROM `table` WHERE condition


    Aus dem Teil, der für die Berechnung zuständig ist, solltest du wenigsten mal eine Funktion machen:


    Und jetzt kannst du auch meine Methode anwenden:


    Ist einfach nur das, was ich vorher beschrieben hatte... ;)

    Viele liebe Grüße
    The User