Vergelijken.
Beste,
ik moet enkele records vergelijken van twéé verschillende tabellen.
De gegevens oproepen werkt uitstekend! (met Join dus).
Dit zijn de gegevens die ik oproep:
Daarna moet ik de volgende bewerking doen:
Wat hiet nu fout gaat, ik heb even de procten geechood zodat ik ook de getallen kon zien. Dit is juist.
Maar de query voert niet juist uit.
Dit is de update query:
Sorry voor de slechte inspriningen
Alvast bedankt!
Dem
Extra info:
Dit is wat ik krijg als ik alles echo. Ik heb 2 aandelen, verschillende. De uitkomst van berekening 2 klopt niet:
ik moet enkele records vergelijken van twéé verschillende tabellen.
De gegevens oproepen werkt uitstekend! (met Join dus).
Dit zijn de gegevens die ik oproep:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
// nog database connectie enz..
$sql = "SELECT
a.id,
a.aandeel,
a.gekochtvoor_prijs,
b.naam,
b.prijs
FROM
aandelen AS a
INNER JOIN
beurs AS b
ON b.naam = a.aandeel
";
// query uitvoeren en nog wat code..
?>
// nog database connectie enz..
$sql = "SELECT
a.id,
a.aandeel,
a.gekochtvoor_prijs,
b.naam,
b.prijs
FROM
aandelen AS a
INNER JOIN
beurs AS b
ON b.naam = a.aandeel
";
// query uitvoeren en nog wat code..
?>
Daarna moet ik de volgende bewerking doen:
Code (php)
1
procenten = ($row['prijs'] - $row['gekochtvoor_prijs']) / $row['gekochtvoor_prijs'] * 100;
Wat hiet nu fout gaat, ik heb even de procten geechood zodat ik ook de getallen kon zien. Dit is juist.
Maar de query voert niet juist uit.
Dit is de update query:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$sql_update = "UPDATE aandelen
SET procent='".mysql_real_escape_string(number_format(($procenten),2))."'
WHERE id='".mysql_real_escape_string($row['id'])."' AND aandeel='".mysql_real_escape_string($row['naam'])."'
";
if(!$res_update = mysql_query($sql_update))
{
echo showSQLError($sql_update,mysql_error(),'Fout updaten.');
}
else
{
echo 'Gelukt';
}
?>
$sql_update = "UPDATE aandelen
SET procent='".mysql_real_escape_string(number_format(($procenten),2))."'
WHERE id='".mysql_real_escape_string($row['id'])."' AND aandeel='".mysql_real_escape_string($row['naam'])."'
";
if(!$res_update = mysql_query($sql_update))
{
echo showSQLError($sql_update,mysql_error(),'Fout updaten.');
}
else
{
echo 'Gelukt';
}
?>
Sorry voor de slechte inspriningen
Alvast bedankt!
Dem
Extra info:
Dit is wat ik krijg als ik alles echo. Ik heb 2 aandelen, verschillende. De uitkomst van berekening 2 klopt niet:
Code (php)
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
-0,990099009901
(3.43 - 3.4643) / 3.4643 * 100
UPDATE aandelen SET procent='-0.99' WHERE id='57' AND aandeel='Air France'
Gelukt
-0,583333333333
(83.51 - 84,3451) / 84,3451 * 100
UPDATE aandelen SET procent='-0.58' WHERE id='58' AND aandeel='Solvay'
Gelukt
(3.43 - 3.4643) / 3.4643 * 100
UPDATE aandelen SET procent='-0.99' WHERE id='57' AND aandeel='Air France'
Gelukt
-0,583333333333
(83.51 - 84,3451) / 84,3451 * 100
UPDATE aandelen SET procent='-0.58' WHERE id='58' AND aandeel='Solvay'
Gelukt
Gewijzigd op 26/05/2012 19:32:08 door - Diov -
Wat voor type is het kolom PROCENT?
Het lijkt me dat -0.58 niet in een INT gaat passen.
En ook niet in een DOUBLE, maar wel in een tekst (VARCHAR of CHAR of TEXT).
Je query lijkt me prima in orde hoor.
een ID hoef je trouwens niet te mysql_real_escape_string()-en hoor. Een intval() is genoeg én zeker als het in je eigen script (zonder tussenkomst van gebruiker) wordt ingevuld.
Net als de procenten.
Het lijkt me dat -0.58 niet in een INT gaat passen.
En ook niet in een DOUBLE, maar wel in een tekst (VARCHAR of CHAR of TEXT).
Je query lijkt me prima in orde hoor.
een ID hoef je trouwens niet te mysql_real_escape_string()-en hoor. Een intval() is genoeg én zeker als het in je eigen script (zonder tussenkomst van gebruiker) wordt ingevuld.
Net als de procenten.
Het is een varchar.
Het blijkt niet te werken. Ik weet niet van waar hij die -0.58 haalt.
Het blijkt niet te werken. Ik weet niet van waar hij die -0.58 haalt.
Als het een varchar is, is dat al een probleem. Delen door een string, dat gaat niet echt lukken.
Zo had ik het nog niet bekeken.
Hoe zou ik dit wel dan kunnen doen?
De getallen kunnen positief en negatief zijn. (In de kolom moet er dus een - kunnen).
Ook een . of komma.
Oftewel met een decimal?
100% = 1.00 ofz
Hoe zou ik dit wel dan kunnen doen?
De getallen kunnen positief en negatief zijn. (In de kolom moet er dus een - kunnen).
Ook een . of komma.
Oftewel met een decimal?
100% = 1.00 ofz
Sowieso geen INT aangezien je met decimalen wilt werken.
Getallen (met decimalen) kunnen prima negatief zijn bij een DECIMAL
Lees http://dev.mysql.com/doc/refman/5.5/en/numeric-types.html eens
Getallen (met decimalen) kunnen prima negatief zijn bij een DECIMAL
Lees http://dev.mysql.com/doc/refman/5.5/en/numeric-types.html eens
Nog een vraagje, over die decimalen.
Ik werk ook gewoon met getallen, voorbeeld 3.43 en 502.53 enzo.
Moet die . een komma zijn?
Ik werk ook gewoon met getallen, voorbeeld 3.43 en 502.53 enzo.
Moet die . een komma zijn?
Nee. Probeer maar eens 1.2 en 1,2 op te slaan in die DEC-kolom.
Nee 1,2 wordt gezien als 2 argumenten: 1 en 2 En 1.2 wordt gezien als 1 decimaal.




