Hoe op te bouwen?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Shakes

Shakes

29/04/2007 20:56:00
Quote Anchor link
Hallo,

Ik wil het volgende gaan doen.
Ik heb een tabel waarbij de kolommen maanden zijn (vanaf 1988) met een uitzondering, dat is een naam.

Iedere maand is er per naam een waarde. Iedere maand moet ik de 10 hoogste en de 10 laagste waarde hebben.

De hoogste waarden moet vervolgens door de laagste gedeeld worden om een verhouding te krijgen.

Daarna komt de volgende stap. Op basis van de verhouding wordt aan 10 laagste en 10 hoogste waarden van die maand per naam een waarde toegekend. Te beginnen bij bijv. 100. Dit cijfer kan op basis van andere gegevens (andere tabel) toenemen of afnemen per maand, dus de tweede maand moet de uitkomst van maand 1 gebruikt worden etc.

Dus mijn vraag: Hoe kan dit effect gescript worden in php/mysql?

Nu heb ik, om te testen slechts voor de eerste twee maanden, per maand 2 queries. Eentje descending, de ander ascending limit 10. Dan print ik de naam en de bijbehorende waarde.

Hoe kan ik vervolgens met die waarden de verhoudingen gaan berekenen? Ik heb dus 2 aparte queries waar met behulp van mysql_fetch_array de 10 hoogste (of laagste) waardes uitrollen. Die moet ik, dus van aparte queries, door elkaar delen. Dit moet ook per maand.

Hopelijk ben ik een beetje duidelijk.

Als dat eenmaal gelukt is moet ik dus uit een andere tabel een waardeverandering halen en die verrekenen met de waardes om op een nieuw totaal uit te komen, op basis van dat totaal moet ik in de volgende maand weer nieuwe waardes toekennen.

Mijn (eerste) probleem:
Hoe deel ik waardes uit 2 verschillende queries als de gegevens uit dezelfde tabel komen dus de kolomnamen identiek zijn.

Als het verhaal duidelijk is... kan het niet simpeler?
 
PHP hulp

PHP hulp

22/12/2024 19:13:48
 
Nvt nvt

nvt nvt

29/04/2007 21:11:00
Quote Anchor link
uh ik snap t eerste stukje niet egt eigenlijk

ooh je bedoelt een dubbele query
Gewijzigd op 01/01/1970 01:00:00 door nvt nvt
 
Shakes

Shakes

29/04/2007 21:35:00
Quote Anchor link
Ok, dit is wat ik nu heb (output):
http://www.kartfoto.nl/thesis/aandelen2.php

De dubbele query dus.

Ten eerste: Kan dit niet simpeler? Want dit moet tot nu (april 2007), anders heb ik 232x een dubbele query -> dat zijn veel queries.

Daarna moet ik de hoogste door de laagste delen (degene die onder elkaar staan) om een verhouding te krijgen, op basis daarvan bepaal ik welk bedrag geinvesteerd wordt in die aandelen (iets lastiger dan dit maar komt hier op neer). De waarde van de portefeuille begint bijv. dus met 1000 in januari 1988, op basis van het rendement in januari is dat dus anders in februari en dat bedrag moet ik dan weer investeren.
 
Shakes

Shakes

30/04/2007 01:43:00
Quote Anchor link
Even een update, dit heb ik nu:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
<?
include ('config.php');

/*
--------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------
Januari 1988
--------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------
*/



echo '<h1>Januari 1988</h1>';
echo '<table><tr>';
$query = "SELECT * FROM Betaandeel WHERE `1-1-1988` > '0'
ORDER BY `1-1-1988` ASC LIMIT 0,10
"
;
$res = mysql_query($query) or die ("query mislukt");

$kleur1 = "#dddddd";
$kleur2 = "#dddddd";
 
$i = 1;

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

    $bg_kleur = ( $i % 2 == 0 ) ? $kleur1 : $kleur2;  

     
echo '<td style="background-color: ' . $bg_kleur . '">

'
.$row['Aandeel'].'
        


</td>'
;
            

    $i++;           
        }

       echo '</tr><tr>';
$query = "SELECT * FROM Betaandeel WHERE `1-1-1988` > '0'
ORDER BY `1-1-1988` ASC LIMIT 0,10
"
;
$res = mysql_query($query) or die ("query mislukt");

$kleur1 = "#eeeeee";
$kleur2 = "#eeeeee";
 
$i = 1;

$jan88 = array();
while($row = mysql_fetch_array($res))
        {

    $bg_kleur = ( $i % 2 == 0 ) ? $kleur1 : $kleur2;  

     
echo '<td style="background-color: ' . $bg_kleur . '">

'
.$row['1-1-1988'].'
        


</td>'
;
array_push($jan88, $row['1-1-1988']);      
            


    $i++;           
        }
  

echo '</tr><tr>';

$query = "SELECT * FROM Betaandeel WHERE `1-1-1988` > '0'
ORDER BY `1-1-1988` DESC LIMIT 0,10
"
;
$res = mysql_query($query) or die ("query mislukt");

$kleur1 = "#dddddd";
$kleur2 = "#dddddd";
 
$i = 1;

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

    $bg_kleur = ( $i % 2 == 0 ) ? $kleur1 : $kleur2;  

     
echo '<td style="background-color: ' . $bg_kleur . '">

'
.$row['Aandeel'].'
        


</td>'
;
            

    $i++;           
        }

       echo '</tr><tr>';
$query = "SELECT * FROM Betaandeel WHERE `1-1-1988` > '0'
ORDER BY `1-1-1988` DESC LIMIT 0,10
"
;
$res = mysql_query($query) or die ("query mislukt");

$kleur1 = "#eeeeee";
$kleur2 = "#eeeeee";
 
$i = 1;
$jan88b = array();
while($row = mysql_fetch_array($res))
        {

    $bg_kleur = ( $i % 2 == 0 ) ? $kleur1 : $kleur2;  

     
echo '<td style="background-color: ' . $bg_kleur . '">

'
.$row['1-1-1988'].'
        


</td>'
;
            
$beta2 = $row['1-1-1988'];
array_push($jan88b, $row['1-1-1988']);
    $i++;           
        }
        
        
$verh1 = round($jan88b[0] / $jan88[0],2);
$verh2 = round($jan88b[1] / $jan88[1],2);
$verh3 = round($jan88b[2] / $jan88[2],2);
$verh4 = round($jan88b[3] / $jan88[3],2);
$verh5 = round($jan88b[4] / $jan88[4],2);
$verh6 = round($jan88b[5] / $jan88[5],2);
$verh7 = round($jan88b[6] / $jan88[6],2);
$verh8 = round($jan88b[7] / $jan88[7],2);
$verh9 = round($jan88b[8] / $jan88[8],2);
$verh10 = round($jan88b[9] / $jan88[9],2);
      
echo '</tr><tr>
<td>'
.$verh1.'</td>
<td>'
.$verh2.'</td>  
<td>'
.$verh3.'</td>  
<td>'
.$verh4.'</td>  
<td>'
.$verh5.'</td>  
<td>'
.$verh6.'</td>  
<td>'
.$verh7.'</td>  
<td>'
.$verh8.'</td>  
<td>'
.$verh9.'</td>  
<td>'
.$verh10.'</td>       ';    
        
        
        
        
        
echo '</tr></table>';




?>


Ziet er niet echt efficient uit. De uitgelezen waarden na een query zet ik in een array zodat ik er later mee kan rekenen.

Dit is nu voor een maand, er zijn er 232... In plaats van dit deel steeds te kopieren en plakken (en dan maanden aan te passen) moet het toch mogelijk zijn dat automatisch te doen?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.