Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.
Veld Type Standaardwaarde
begin_datum date 0000-00-00
dus neem aan dat het dan goed is..
btw de testgegevens waarmee ik dit test:
$aanvraagdatum = 2005-11-03
$termijn = 12
begin_datum = 2005-11-01
eind_datum = 2005-11-30
wat als resultaat dus moet komen is dit:
sbonus12 = 220
[ Voor 40% gewijzigd door Tijgertje84 op 03-11-2005 16:07 ]
Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H
$termijn == 12?

Dan staat er dus dit:
1
| SELECT 12 |
Dan maakt het niet uit wat eronder staat, het enige dat dat nu nog beïnvloedt is of je een record terugkrijgt. Je zal toch echt een veld moeten selecteren, geen integer.
[ Voor 52% gewijzigd door NMe op 03-11-2005 16:10 ]
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.
4
| $query_bonus = 'SELECT sbonus'.$termijn.'' |
(Door te proberen ben ik soms wat dingen te undo'en.. ><)
de kolommen waar de bonussen in staan heten: sbonus6, sbonus12, sbonus24 en sbonus36
maar omdat de termijn bepaald welke kolom hij moet nemen doet hij dit maar
maar dit werkt dus ook niet dus had ik van te voren ook al dit geprobeerd:
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| if($termijn == 6){ $sbonus = 'sbonus6'; } elseif($termijn == 12){ $sbonus = 'sbonus12'; } elseif($termijn == 24){ $sbonus = 'sbonus24'; } elseif($termijn == 36){ $sbonus = 'sbonus36'; } //standard bonus ophalen bij aangemaakte abonnement $query_bonus = 'SELECT '.$sbonus.' FROM Abonvormen WHERE abonnr = '.$abonnr .' AND '.$aanvraagdatum.' BETWEEN begin_datum AND eind_datum LIMIT 1'; |
maar dat werkt ook niet..
heb egt vanalles gedaan of geprobeerd maar zal wel of iets zeer moeilijks zijn ben ik bang..
[ Voor 210% gewijzigd door Tijgertje84 op 03-11-2005 16:22 ]
Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.
ofwel hij komt gewoon leeg uit de query
de select klopt niet ik bedoel hij selecteerd geen kolom op de manier zoals ik het nu doe..
dat werkt niet en lijkt me ook wel logisch maar hoe kan het wel
kijk ik kan natuurlijk wel met ifs werken en bij if termijn = 6 bla dan een query uitvoeren en dit voor elke soort termijn doen, maar dat is dus 4x zoveel code terwijl het lijkt me ook korter moet lukken...
ik ga het dan wel even de makkelijke manier doen (ook al heb ik dit zelf nog niet geprobeerd)
en dan kan ik het altijd nog aanpassen mocht het korter kunnen...
$aanvraag datum haalt hij ook uit de dbase uit een andere tabel dus zelfde type -> date
ok simpele versie:
4
5
6
7
8
9
10
11
12
13
| if($termijn == '6'){ $query_bonus = 'SELECT sbonus6 FROM Abonvormen WHERE abonnr = '.$abonnr .' AND '.$aanvraagdatum.' BETWEEN begin_datum AND eind_datum LIMIT 1'; } //plus die ander 3 mogelijkheden... $res_bonus = mysql_query($query_bonus, $conn); $standardbonus = mysql_result($res_bonus,0); |
nu heb ik de code weggehaald dat als hij leeg is dat die bonus dan 0 is
maar nu krijg ik de melding dat hij undefined is..
dit is dus eigenlijk hetzelfde als 'leeg'..., want ik maak gebruik van aarrays maar deze werken perfect want met die
4
5
6
| if(empty($standardbonus)){ $standardbonus = '0'; } |
werkt het wel maar dan komt er 0 uit..
de vraag nu dus luid waar gaat het mis..
[ Voor 50% gewijzigd door Tijgertje84 op 03-11-2005 16:38 ]
Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H
1
| AND '.$aanvraagdatum.' BETWEEN begin_datum AND eind_datum |
Ik vind deze actie wel leuk. Ik weet niet zeker of je een between kan doen op 2 database velden. Dan begrijpt de sql er niet al te veel meer van. Mischien kan je gewoon een:
1
2
| AND `beginDatum` > $datum AND `eindDatum` < $datum |
[ Voor 4% gewijzigd door disjfa op 03-11-2005 16:38 ]
disjfa - disj·fa (meneer)
disjfa.nl
Die between moet gewoon kloppen. Ik vermoed alleen dat die aanvraagdatum niet als datum gezien wordt, maar als integer (2005-11-03 = 1991), en dat het daarom fout gaat. Probeer daaromheen eens juist wèl DATE() te zetten.
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.
dat had ik ook al maar ik krijg nog steeds de waarde 0 terugdisjfa schreef op donderdag 03 november 2005 @ 16:37:
SQL:
1 2 AND `beginDatum` > $datum AND `eindDatum` < $datum
en nu weer geprobeerd.. en geen resultaat
je gebruikt hier ``???? is dat nodig???
edit:
ok maakt eht dan uit welke manier ik gebruik:
1
2
3
4
| //1: '...DATE('.$aanvraagdatum.')...' //2: '....DATE($aanvraagdatum)...' |
hmm allebei getest maar beide geen resultaat..
[ Voor 47% gewijzigd door Tijgertje84 op 03-11-2005 16:46 ]
Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H
1
2
3
4
5
| $query_bonus = 'SELECT sbonus'.$termijn.' FROM Abonvormen WHERE abonnr = '.$abonnr .' AND DATE(\''.$aanvraagdatum.'\') BETWEEN begin_datum AND eind_datum LIMIT 1'; |
Zo dan?
Die backticks (`) zijn niet verplicht, maar wel netter. Die geven aan dat alles ertussenin de tabel- of veldnaam is.
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.
zou het dan toch aan die $aanvraagdatum liggen??
maar als ik deze meteen aanroep komt er gewoon die datum uit: 2005-11-03
dit word in een andere file uit een database gehaald
het bestand waar ik nu in werk is een include in dat andere bestand maar dat moet niets uitmaken aangezien hij wel die 0 kan meegeven...

edit ok ook deze werkt niet
had eerst die 1ste geprobeerd maar toen ik dit poste was de query iets anders met // maar dat mocht dus ook niet baten...
[ Voor 23% gewijzigd door Tijgertje84 op 03-11-2005 16:54 ]
Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.
met een beetje pech pas morgen ochtend...
loop namelijk stage en het is nu al 17.00
stay tuned ^^
Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H
even terzijde ik maak hier gebruik van de AJAX methode..
en dit zijn de functie bestanden waar de queries in rerunt worden
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| //$abonnr opvragen: is een int(4) $query7 = 'SELECT abonnr FROM Abonnementen WHERE id = ' .$abonid .' LIMIT 1'; $res7 = mysql_query($query7, $conn); $abonnr = mysql_result($res7,0,0); //$aanvraagdatum opvragen: is een Date $query9 = 'SELECT aanvraagd FROM Abonnementen WHERE id = ' .$abonid .' LIMIT 1'; $res9 = mysql_query($query9, $conn); $aanvraag = mysql_result($res9,0,0); $aanvraagdatum = $aanvraag; //hierna wordt er verder wat gedaan met de $aanvraag zelf maar dat is nvt //$termijn opvragen: is een int(2) $query18 = 'SELECT termijn FROM Abonnementen WHERE id = ' .$abonid .' LIMIT 1'; $res18 = mysql_query($query18, $conn); $termijn = mysql_result($res18,0,0); //dan wordt er een include gebruikt include("../functions/function_get_sbonus.php"); //in deze include staat dus de query waar dit topic over gaat. |
ok ik heb ook al dit getest en dit werkt en resultaat is dan gewoon 220
4
5
6
7
8
9
10
| elseif($termijn == '12'){ $query_bonus = 'SELECT sbonus12 FROM Abonvormen WHERE abonnr = '.$abonnr .' //zonder die between regel LIMIT 1'; } |
dus ik neem aan dat de fout toch in die regel zit......
maar jah ik heb al zoveel mogelijke varianten geprobeerd maar het wil gewoon niet lukken.. (stom ding..)
ik heb afzonderlijk getest om te waarde meteen terug te geven zonder de queries te doen en deze gegevens kloppen gewoon..-NMe- schreef op donderdag 03 november 2005 @ 16:54:
Druk eens de precieze query die uitgevoerd wordt af. Volgens mij bevat een van die variabelen gewoon niet de waarde die jij verwacht.
(zie post 3 van de betreffende gegevens...)
[ Voor 6% gewijzigd door Tijgertje84 op 04-11-2005 09:01 ]
Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H
Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H
Als je 'between' periode altijd een complete maand is, kan je ook het volgende proberen:
1
2
3
4
5
| $query = "SELECT id, name, date FROM $this->table_name WHERE date_format(date, '%m') = 11 AND date_format(date, '%Y') = 2005 AND date >= CURDATE() "; |
Hiermee selecteer ik dus alles waar het maand element van attribuut 'date' gelijk is aan 11 en het jaar element gelijk is aan 2005. Dit principe wordt denk ik wel duidelijk aan de hand van bovenstaande query.
De keren dat ik met 'BETWEEN' heb gewerkt was dat altijd met timestamps - ik weet niet of dit ook wel goed werkt met normale datums.
[ Voor 16% gewijzigd door PhoeniX- op 08-11-2005 13:22 ]
heb het nu alleen een beetje zwaar omslachtig gedaan maar het werkt wel
ik zal nog wel even kijken of jou manier werkt
Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H
Oh, dus nu ben ik ineens niemand?Tijgertje84 schreef op woensdag 09 november 2005 @ 10:40:
ok thnx ik had het al zelf maar opgelost aangezien er niemadn reageerde
heb het nu alleen een beetje zwaar omslachtig gedaan maar het werkt wel
ik zal nog wel even kijken of jou manier werkt
Die data_format functie is even puzzelen, maar uiteindelijk werkt het bij mij heel generiek! Check bij BETWEEN even of het wel met timestamps werkt ipv. met een datum .. zou me niet verbazen dat het daarop fout ging namelijk.
btw het gaat niet altijd over hele maanden soms ook van 3-nov tot 3-dec bijvoorbeeld
en niemadn had gepost binnen 4 dagen.. vandaar
het lukt niet egt ik zal het wel weer verkeerd doen maarjah ben niet voor niest beginner eh
ik heb op een geweldige meest omslachtige manier gedaan zoals hieronder staat vermeld
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
| //generate datum $query_datum = 'SELECT begin_datum, eind_datum FROM Abonvormen WHERE abonnr = '.$abonnr .''; $res_datum = mysql_query($query_datum, $conn); $begin_datum = mysql_result($res_datum,0,0); $eind_datum = mysql_result($res_datum,0,1); $begin_datum2 = explode("-",$begin_datum); $begin_datum_dag = $begin_datum2[2]; $begin_datum_maand = $begin_datum2[1]; $begin_datum_jaar = $begin_datum2[0]; $eind_datum2 = explode("-",$eind_datum); $eind_datum_dag = $eind_datum2[2]; $eind_datum_maand = $eind_datum2[1]; $eind_datum_jaar = $eind_datum2[0]; $aanvraagdatum2 = explode("-",$aanvraagdatum); $aanvraag_datum_dag = $aanvraagdatum2[2]; $aanvraag_datum_maand = $aanvraagdatum2[1]; $aanvraag_datum_jaar = $aanvraagdatum2[0]; //check aanvraagdatum met de datum waarop de bonus geldig is //true = met termijn de bonus ophalen if($aanvraag_datum_dag >= $begin_datum_dag && $aanvraag_datum_dag <= $eind_datum_dag && $aanvraag_datum_maand >= $begin_datum_maand && $aanvraag_datum_maand <= $eind_datum_maand && $aanvraag_datum_jaar >= $begin_datum_jaar && $aanvraag_datum_jaar <= $eind_datum_jaar){ if($termijn == '6'){ $query_bonus = 'SELECT sbonus6 FROM Abonvormen WHERE abonnr = '.$abonnr .' LIMIT 1'; } elseif($termijn == '12'){ $query_bonus = 'SELECT sbonus12 FROM Abonvormen WHERE abonnr = '.$abonnr .' LIMIT 1'; } elseif($termijn == '24'){ $query_bonus = 'SELECT sbonus24 FROM Abonvormen WHERE abonnr = '.$abonnr .' LIMIT 1'; } elseif($termijn == '36'){ $query_bonus = 'SELECT sbonus36 FROM Abonvormen WHERE abonnr = '.$abonnr .' LIMIT 1'; } |
main thing is... het werkt
[ Voor 170% gewijzigd door Tijgertje84 op 09-11-2005 11:17 ]
Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| //generate datum $query_datum = 'SELECT begin_datum, eind_datum FROM Abonvormen WHERE abonnr = '.$abonnr .''; $res_datum = mysql_query($query_datum, $conn); $begin_datum = strtotime(mysql_result($res_datum,0,0)); $eind_datum = strtotime(mysql_result($res_datum,0,1)); $aanvraagdatum = strtotime($aanvraagdatum); //check aanvraagdatum met de datum waarop de bonus geldig is //true = met termijn de bonus ophalen if ($aanvraagdatum >= $begin_datum && $aanvraagdatum <= $eind_datum) { $query_bonus = 'SELECT sbonus'.$termijn.' FROM Abonvormen WHERE abonnr = '.$abonnr .' LIMIT 1'; } |
Maar ik blijf erbij dat het in MySQL ook gewoon moet kunnen en er waarschijnlijk gewoon een tikfoutje in je query zit ofzo.
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.