Thread: Datums met AMFPHP
-
09-08-2011, 12:26 #1Member
- Registered
- 03/11/05
- Location
- Dendermonde
- Posts
- 7,819
- iTrader
- 31 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/31
Datums met AMFPHP
Hoi
Ik zit hier met een probleempje: via AMFPHP zou ik data uit mijn database willen halen, via de datum, mijn SQL ziet er zo uit:
Wanneer ik deze query in PhpMyAdmin ingeef, krijg ik de gewenste rijen:Code:function getLineup($selectedDay){ $this->connectToDB(); $sql = "SELECT * FROM lineup WHERE date = '" . $selectedDay . "'"; ...
(de 7 mag ook 07 zijn heb ik ondervonden)Code:SELECT * FROM lineup WHERE date = '2011-7-16'
Maar via de AMFPHP-service krijg ik het maar niet in orde, nochthans is er wel een verbinding met de database etc, want wanneer ik de query uit de code hierboven hard-code in de service.php werkt het wel.
Ik zit er nu al 2u op te zoeken en te vloeken en vind er niks van op het internet.
Weet iemand waaraan het kan liggen?
Mvg
EZ
edit:
Als datatype voor de datums in de SQL gebruik ik date btw.
En wanneer ik date in m'n service date vervang door bvb. id, en bij selectedDay in m'n AMFPHP bvb. 4 ingeef, krijg ik ook een rij terug. Dus het lijkt echt of hij niet met een datum omkan?no votes
-
-
09-08-2011, 20:41 #2Member
- Registered
- 17/07/02
- Location
- Sol System
- Posts
- 10,064
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 27/78
date is een gereserveerd woord in MySQL, dus hapert die wellicht al op je query. Ofwel hernoem je die date kolom dus naar iets anders dan simpelweg date (dat is sowieso al aan te raden), ofwel zet je er backticks rond :
Het kan best zijn dat dit je probleem al oplost, zoniet zal je die service moeten debuggen. PHP error logging (naar file) aanzetten kan al veel helpen om dergelijke fouten op te sporen.PHP Code:SELECT * FROM lineup WHERE `date` = '...';
PSN: dJeezBE - Delicious bookmarks
Disclaimer: I am currently suffering from severe CSD (Compulsive Sarcasm Disorder). - L'onion fait la farce - Facile largire de alienoPastafarian by choiceno votes
-
09-08-2011, 21:25 #3Member
- Registered
- 03/11/05
- Location
- Dendermonde
- Posts
- 7,819
- iTrader
- 31 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/31
"date" had ik ondertussen al veranderd naar "datum", ik heb het datatype ook eens veranderd naar varchar en het werkt nog niet.
Om het eens te testen heb ik het is vlug in een PHP-projectje gestoken (dus zonder AMFPHP) en dan werkte het wel, dus ik doe echt iets fout met die AMFPHP precies.
Zal eens zoeken hoe ik dat kan laten loggen.
edit:
Log gevonden, zegt niks speciaals, hij kan verbinden met de db (zoals ik al dacht omdat het met andere parameters wel werkt)
dit werkt bvb.:
PHP Code:function getLineup(){
$this->connectToDB();
$selectedDay = "2011-07-15";
$sql = "SELECT * FROM 10do_lineup WHERE datum = '" . $selectedDay . "'";
if($result = mysql_query($sql)){
while($row = mysql_fetch_assoc($result)){
$arrLineup[] = $row;
}
return $arrLineup;
}else{
return "Error with MYSQL";
}
}
edit2:
Eens geprobeerd om een datum in db te noteren zoals dit: 20110715 (varchar), deze vindt hij wel (als ik 20110715 als argument ingeef in de AMFPHP browser natuurlijk). Dus de streepjes uit 2011-07-15 moet ik blijkbaar escapen ofzo?Last edited by [EZ]; 09-08-2011 at 21:52.
no votes
-
10-08-2011, 00:40 #4
PHP heeft zoveel manieren om te debuggen, gooi daar een 'echo $selectedDay' tussen en dan weet je direct waar het foutloopt. Zo kan het bvb zijn dat je datum in een andere vorm wordt doorgegeven (DD-MM-YYYY of zelfs MM-DD-YYYY).
no votes
-
10-08-2011, 12:43 #5Member
- Registered
- 03/11/05
- Location
- Dendermonde
- Posts
- 7,819
- iTrader
- 31 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/31
Allright, merci, had er nog niet aan gedacht om dat eens te proberen (nog niet veel ervaring en 't was vooral lang geleden
)
Bij echo geeft hij fouten, maar als 'k $selectedDay return en 2011-07-15 ingeef, returnt hij 2011
Bij 20110715 returnt hij wel 20110715, dus 't is op dat streepje dat hij crasht, tussen "" zetten werkt ook niet omdat hij het dan als string ziet en niet als datum.
Op deze manier werkt het wanneer ik de datum als varchar laat en hem ingeef met "" rond:
Maar wanneer ik datum terug naar date zet, werkt het niet meer.PHP Code:$sql = "SELECT * FROM 10do_lineup WHERE datum = " . $selectedDay;
Op zich is het niet zo erg als ik de datum als varchar laat, de database moet niet dynamisch aangevuld worden dus veel maakt het niet uit.no votes
-
10-08-2011, 14:44 #6Approved 9liver
- Registered
- 20/01/07
- Location
- Mechelen
- Posts
- 942
- iTrader
- 28 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 7/20
Heb je ; na de echo staan?
Want anders zou dat geen fouten mogen geven, dan is er iets anders mis.
En werkt het niet of geeft het gewoon geen resultaat? Bij het eerste is je query fout en moet je daar zoeken, maar bij het tweede zou dat willen zeggen dat er iets scheelt aan manier waarop je een datum weergeeft.
Je hebt die quotes nodig om aan te geven dat de inhoud characters zijn en geen operatoren (minteken). Normaal gezien scheelt er niks met die query uit je eerste post (behalve dan de naam date).
Misschien kan je eens proberen de query te printen: echo $sql;- Vice-President of Awesome -no votes
-
10-08-2011, 15:26 #7Approved 9-lifer
- Registered
- 21/06/03
- Location
- Lichtervelde/Gent
- Posts
- 1,009
- iTrader
- 21 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 1/9
convert(date,'15-07-2011',103) in uw query? (is toch zo voor mssql, mysql wss anders :/)
no votes
-
10-08-2011, 15:51 #8Approved 9liver
- Registered
- 20/01/07
- Location
- Mechelen
- Posts
- 942
- iTrader
- 28 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 7/20
Jup dat is ongeveer hetzelfde in MySQL.
Het wordt dan: CONVERT( '15-07-2011', DATE ).
Of rechtstreeks met DATE('15-07-2011').
Maar het zou ook zo moeten werken, ik vermoed dat er iets fout zit met $selectedDay.- Vice-President of Awesome -no votes
-
10-08-2011, 21:33 #9Member
- Registered
- 17/07/02
- Location
- Sol System
- Posts
- 10,064
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 27/78
Hoe heb je die datum eigenlijk gedefinieerd in Flash? Want AMFPHP heeft blijkbaar een DateWrapper klasse om datums te converteren... Check de docs : Flash remoting for PHP: A responsive Client-Server Architecture for the Web
PSN: dJeezBE - Delicious bookmarks
Disclaimer: I am currently suffering from severe CSD (Compulsive Sarcasm Disorder). - L'onion fait la farce - Facile largire de alienoPastafarian by choiceno votes
-
11-08-2011, 12:07 #10Member
- Registered
- 03/11/05
- Location
- Dendermonde
- Posts
- 7,819
- iTrader
- 31 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/31
Jep een ; stond er achter, als 'k een echo in de functie zet (of het nu echo $selectedDay of echo "test" is) krijg ik deze melding in het results-venster:
(Object)#0
message = "faultCode:INVALID_AMF_MESSAGE faultString:'Invalid AMF message' faultDetail:'2011
Fatal error: Uncaught exception 'VerboseException' with message 'Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/AS3_libraries/amfphp/services/devine/TendaysofService.php:34)' in /Applications/MAMP/htdocs/AS3_libraries/amfphp/core/amf/app/Gateway.php:191
Stack trace:
#0 [internal function]: amfErrorHandler(2, 'Cannot modify h...', '/Applications/M...', 191, Array)
#1 /Applications/MAMP/htdocs/AS3_libraries/amfphp/core/amf/app/Gateway.php(191): header('Content-type: a...')
#2 /Applications/MAMP/htdocs/AS3_libraries/amfphp/gateway.php(154): Gateway->service()
#3 {main}
thrown in /Applications/MAMP/htdocs/AS3_libraries/amfphp/core/amf/app/Gateway.php on line 191
'"
name = "Error"
rootCause = (null)
In Flash heb ik momenteel nog niks, ik wou het eerst laten werken op zich (door met de AMFPHP browser te testen), en dan pas in Flash gebruiken. Dus die datewrapper kan ik nu nog niet gebruiken.
Kzal het nu eens met die convert-functie proberen.no votes
-
11-08-2011, 14:05 #11Approved 9liver
- Registered
- 20/01/07
- Location
- Mechelen
- Posts
- 942
- iTrader
- 28 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 7/20
Doe dan eens in plaats van echo: die($sql);
Die error toont aan dat er ergens in de code een stukje staat dat geen output verwacht, zoals header.- Vice-President of Awesome -no votes
-
13-08-2011, 18:47 #12Approved 9-lifer
- Registered
- 20/08/09
- Location
- ...
- Posts
- 3,812
- iTrader
- 6 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 7/127
zijn veel van dat soort problemen niet gewoon op te lossen door een parameterised query (weet niet hoe 't noemt in het nl) te gebruiken?
ik krijg eerlijk gezegd al kriebels als ik ergens
zie staan. geeft een hoop rommel doorheen bij grotere queries en 't is gewoon zo onveilig dat de grootste idioot die is grappig probeert te zijn heel uw database naar de zak kan helpen.Code:WHERE blabla = '" + somevariable + "'";
ik ben zelf niet bezig met PHP, maar voorbeeld 2 lijkt mij een manier te zijn om een parameterised query uit te voeren in PHP.Gory, gory, what a hell of way to die.no votes
-
14-08-2011, 23:20 #13Member
- Registered
- 17/07/02
- Location
- Sol System
- Posts
- 10,064
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 27/78
PSN: dJeezBE - Delicious bookmarks
Disclaimer: I am currently suffering from severe CSD (Compulsive Sarcasm Disorder). - L'onion fait la farce - Facile largire de alienoPastafarian by choiceno votes

