• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Mysql queries im contruct

Werbung:
Werbung:
Das konzept, das mir thecain vorgeschlagen hat ist völliger schwachsin.
Was?!?!?!?!?!?! Sag mal von welchem Planeten kommst du?

Es macht echt keinen Sinn dir hier weiter zu erklären was richtig ist und was nicht. Denn du bist der festen Überzeugung das dein Quellcode und Datenbankschema korrekt ist.

Bloß weil du eine Architektur, Ansatz was auch immer nicht verstehst, ist es nicht gleich Schwachsinn.
 
Was?!?!?!?!?!?! Sag mal von welchem Planeten kommst du?

Es macht echt keinen Sinn dir hier weiter zu erklären was richtig ist und was nicht. Denn du bist der festen Überzeugung das dein Quellcode und Datenbankschema korrekt ist.

Bloß weil du eine Architektur, Ansatz was auch immer nicht verstehst, ist es nicht gleich Schwachsinn.
Das problem ist, dass ihr in diesem statistik bereich nicht ganz drauss kommt. Dass mein Datebank konzept korrekt ist da bin ich mir sicher. Ich glaube abr auch das the cain eine falsche vorstellung meindes db konzepts hat, ich speichere nichts in einem kommaspearated array in der db falls das mal klar ist.
Aber egal. Danke für eure Hilfe.
 
Werbung:
Dass mein Datebank konzept korrekt ist da bin ich mir sicher.
Dann träum mal weiter.

Ich glaube abr auch das the cain eine falsche vorstellung meindes db konzepts hat, ich speichere nichts in einem kommaspearated array in der db falls das mal klar ist.
Er hat Ahnung, du nicht. Also würde ich auf den hören, der sich damit auskennt. Außerdem ist er nicht der einzige der dieser Meinung ist, also würde ich mir mal Gedanken machen. ;)

Aber egal. Danke für eure Hilfe.
Bitte.

Over and out...
 
Ich nehme nochmal allen Mut zusammen und wage es zu Fragen, was du für Statistiken berechnest. Du sprichst hier von verschiedenen? Zähle mal bitte auf welche.
 
Ich nehme nochmal allen Mut zusammen und wage es zu Fragen, was du für Statistiken berechnest. Du sprichst hier von verschiedenen? Zähle mal bitte auf welche.
Sorry war letztesmal ein bisschen komisch drauf :) Habe eben noch nie object orientiert mit php gearbeitet.
Also ich weis nicht ob du bei golfstatistiken draus kommts.

- ich habe 12 tabellen mit 18 spalten für jedes loch. Jede tabelle speichert einen teil vom spiel. Zum beispiel eine tabelle mit den anzahl putts pro loch eine andere mit der anzahl strafschlägen pro loch usw.
- dann muss ich statistiken generieren. Diese muss ich im query filtern können nach datum user und golfplatz. Z.B wie ist der rundendurchschnit von einem gewissen golfplatz.
- für das brauche ich eine funktion die holt die scores von der datenbank und rechnet sie zusammen. das ist eine statistike.
- aber zum beispiel die daten von den putts bracuh ich in meherer statisken. Jede statistik rechnet etwas anderes aus.
- deshalb dachte ich mir im construct alle queries nur einmal abzurufen und in eine private property zu schreiben.
- für jede statistik kann ich dan diese propertys benutzten
- im cotroller kann ich den die statistik die ich brauche abrufen.

Falls ich wirklich ein design pattern anwenden soll, kannst du mir bitte sagen wie viel klassen ich bracuhe und was wo hinnkomt.

Danke für eure Hilfe und nochmals sorry wegen gestern :/

Code bis jetzt

PHP:
<?php namespace helpers;
   
use \PDO as PDO;

/*
* Statistic Class
*
* @author Jeremy
* @version 2.0
* @date June 27, 2014
*/
class Statistic{
   
    static $db;
   
    private $userid;
    private $roundid;
    private $courseid;
    private $start;
    private $end;
   
    private $_score = array();

public function __construct($userid, $roundid = null, $start = "2000-01-01", $end = "2030-01-01", $courseid = 0){
        $this->userid = $userid;
        $this->roundid = $roundid;
        $this->start = $start;
        $this->end = $end;
        $this->courseid = $courseid;
           
        $this->queryTables();   
    }

private function queryTables(){   
        $course_query = "";
        if($this->courseid != 0){
            $course_query = "AND rounds.courseid = $this->courseid";
        }   
       
        //Create all queries
        $this->_score = self::$db->selectAssoc("SELECT score.* FROM score INNER JOIN rounds ON score.roundid = rounds.roundid WHERE rounds.userid = $this->userid AND rounds.date BETWEEN '$this->start' AND '$this->end' $course_query");

// 11 weitere queries
}

//funktion für den rundenschnitt

public function getScore(){
       
        $sum = 0;
        $count = 0;
        //Deletes roundid from array
        foreach($this->_score as $round){
            unset($round["roundid"]);
            if($round["hole1"] != 0){
                $sum += array_sum($round);
                $count++;
            }
        }
        if($count > 0){
            return $sum / $count;
        } else {
            return 0;
        }
       
    }

//statistik für die berechnung von fairway hits

public function getFir(){
       
        $fairways = array();
        //Deletes roundid from array
        foreach($this->_fir as $round){
            $i = 1;
            unset($round['roundid']);
            while($i <= count($round)) {
                array_push($fairways, $round["hole{$i}"]);
                $i++;
            }
        }
       
        $hits = array_count_values($fairways);
       
        $left = 0;
        $hit = 0;
        $right = 0;
       
        if($hits[1] != 0 && $hits[1] != NULL){
            $left = $hits[1] / (count($fairways) - $hits[0]) * 100;
        }
       
        if($hits[2] != 0 && $hits[2] != NULL){
            $hit = $hits[2] / (count($fairways) - $hits[0]) * 100;
        }
       
        if($hits[3] != 0 && $hits[3] != NULL){
            $right = $hits[3] / (count($fairways) - $hits[0]) * 100;
        }
       
        $perc = array(
            1 => $left,
            2 => $hit,
            3 => $right
        );
       
        return $perc;
    }

// es folgen ca 12 andere statistiken
 
Werbung:
Habe eben noch nie object orientiert mit php gearbeitet.
Was machst du denn mit einem Framework?!

Ich lege dir nochmal ans Herz, dein Datenbankschema von Grundauf zu überdenken. Wenn du 12 Tabellen mit jeweils 18 mal den selben Spalten hast, solltest du schon schmunzeln. Da kann schon etwas nicht stimmen, egal ob Golfstatistiken oder sonstwas.

Falls ich wirklich ein design pattern anwenden soll, kannst du mir bitte sagen wie viel klassen ich bracuhe und was wo hinnkomt.
Vielleicht sind Design Pattern imom für dich noch zu weit gegriffen. Man sollte schon entsprechnde Vorkenntnisse mitbringen.

Hier nocheinmal ein Beispiel wie eine Abstrakte Klasse in deinem Fall aussehen könnte:
PHP:
abstract class AbstractStatistic {

   public $userId;
  
   public $roundId;

   abstract function calculate();

   public function getUserId() {
        return $this->userId;
   }

   public function setUserId($userId) {
        $this->userId = $userId;
   }

   public function getRoundId() {
        return $this->roundId;
   }

   public function setRoundId($roundId) {
        $this->roundId = $roundId;
   }
}

PHP:
class AbcStatistic extends AbstractStatistic {}
 
Was machst du denn mit einem Framework?!

Ich lege dir nochmal ans Herz, dein Datenbankschema von Grundauf zu überdenken. Wenn du 12 Tabellen mit jeweils 18 mal den selben Spalten hast, solltest du schon schmunzeln. Da kann schon etwas nicht stimmen, egal ob Golfstatistiken oder sonstwas.


Vielleicht sind Design Pattern imom für dich noch zu weit gegriffen. Man sollte schon entsprechnde Vorkenntnisse mitbringen.

Hier nocheinmal ein Beispiel wie eine Abstrakte Klasse in deinem Fall aussehen könnte:
PHP:
abstract class AbstractStatistic {

   public $userId;
 
   public $roundId;

   abstract function calculate();

   public function getUserId() {
        return $this->userId;
   }

   public function setUserId($userId) {
        $this->userId = $userId;
   }

   public function getRoundId() {
        return $this->roundId;
   }

   public function setRoundId($roundId) {
        $this->roundId = $roundId;
   }
}

PHP:
class AbcStatistic extends AbstractStatistic {}
Die andere variante wäre 18 tabellen mit 12 spalten für jede statistik aber das ist müsamer mit dem auslesen.
Das framework benutze icch weil ich noch viele andere module habe als die statistik.
Ja das prinzip mit der abstrakte classe ist nicht schlecht. Das problem dan ist ich mus auf einer seite dan 12 klassen instanzieren.
 
Werbung:
Also mit dem Datenbank modell komme ich immer noch nicht weiter.
Ich werde jetz auch Laravel als Framework benutzen. Da werde ich für jeden Tabelle eine Klasse erstellen was das andere Problem ja schon mal löst. Kannst du mir nicht mal einen Vorschlag geben für das Datenbank modell?
Dann setze dich nebenbei mal mit Doctrine auseinander.

Bei deinem Datenbankschema kann ich mich nur wiederholen.
 
Ich muss jetzt mal blöd fragen:
Warum baust du die Datenbank nicht bspw. so auf, wenn du nur die Summen betrachtest:

ID --- user _ID ---loch_nr ---putts ---strafschläge ---etc.
1 --- 1 ---10 ---3 ---1 ---xyz
2 --- 3 ---2 ---5 ---0 ---xyz
3 --- 1 ---… ---… ---… ---…

Ist jetzt mal total primitiv, aber das kann man ja noch ausbauen, in dem das ganze in verschiedene Untertabellen zerlegt. Dennoch hätte man nur ein paar Tabellen und nicht so viele.
 
Werbung:
Ich muss jetzt mal blöd fragen:
Warum baust du die Datenbank nicht bspw. so auf, wenn du nur die Summen betrachtest:

user _ID ---loch_nr ---putts ---strafschläge ---etc.
1 ---10 ---3 ---1 ---xyz
3 ---2 ---5 ---0 ---xyz
1 ---… ---… ---… ---…

Ist jetzt mal total primitiv, aber das kann man ja noch ausbauen, in dem das ganze in verschiedene Untertabellen verlegt. Dennoch hätte man nur ein paar Tabellen und nicht so viele.
Das ist keine blöde Frage, das versuchen wir Ihm ja schon in zähligen Beiträgen zu erklären. :p
 
Ich muss jetzt mal blöd fragen:
Warum baust du die Datenbank nicht bspw. so auf, wenn du nur die Summen betrachtest:

ID --- user _ID ---loch_nr ---putts ---strafschläge ---etc.
1 --- 1 ---10 ---3 ---1 ---xyz
2 --- 3 ---2 ---5 ---0 ---xyz
3 --- 1 ---… ---… ---… ---…

Ist jetzt mal total primitiv, aber das kann man ja noch ausbauen, in dem das ganze in verschiedene Untertabellen zerlegt. Dennoch hätte man nur ein paar Tabellen und nicht so viele.
Danke vielmal für die Antwort.
Also ich werde es mal so probieren

Table rounds:
- roundid
- courseid
- userid
- startDate

Table score:
- roundid
- hole_num
- score
- penalties
- usw

Natürlich gibt es noch weiter tabellen wie: user, course, holes
 
Zurück
Oben