1. #1
    [EZ]'s Avatar
    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:
    Code:
    function getLineup($selectedDay){
         $this->connectToDB();
         $sql = "SELECT * FROM lineup WHERE date = '" . $selectedDay . "'";
         ...
    Wanneer ik deze query in PhpMyAdmin ingeef, krijg ik de gewenste rijen:
    Code:
    SELECT * FROM lineup WHERE date = '2011-7-16'
    (de 7 mag ook 07 zijn heb ik ondervonden)

    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  

  2. #2
    dJeez's Avatar
    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 :
    PHP Code:
    SELECT FROM lineup WHERE `date` = '...'
    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.
    PSN: dJeezBE - Delicious bookmarks
    Disclaimer: I am currently suffering from severe CSD (Compulsive Sarcasm Disorder). - L'onion fait la farce - Facile largire de alieno
    Pastafarian by choice
    no votes  

  3. #3
    [EZ]'s Avatar
    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  

  4. #4
    Fr3aK's Avatar
    Registered
    17/07/02
    Location
    Antwerpen
    Posts
    2,614
    iTrader
    0
    Mentioned
    0 Post(s)
    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  

  5. #5
    [EZ]'s Avatar
    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:
    PHP Code:
    $sql "SELECT * FROM 10do_lineup WHERE datum = " $selectedDay
    Maar wanneer ik datum terug naar date zet, werkt het niet meer.


    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  

  6. #6
    Sick-Boy's Avatar
    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  

  7. #7
    kows's Avatar
    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  

  8. #8
    Sick-Boy's Avatar
    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  

  9. #9
    dJeez's Avatar
    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 alieno
    Pastafarian by choice
    no votes  

  10. #10
    [EZ]'s Avatar
    Registered
    03/11/05
    Location
    Dendermonde
    Posts
    7,819
    iTrader
    31 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/31
    Quote Originally Posted by Sick-Boy View Post
    This quote is hidden because you are ignoring this member. Show
    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;
    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. #11
    Sick-Boy's Avatar
    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  

  12. #12
    Dastardly's Avatar
    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

    Code:
    WHERE blabla = '" + somevariable + "'";
    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.

    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  

  13. #13
    dJeez's Avatar
    Registered
    17/07/02
    Location
    Sol System
    Posts
    10,064
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    27/78
    Quote Originally Posted by Dastardly View Post
    This quote is hidden because you are ignoring this member. Show
    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.
    Nope, toch niet, da's gewoon string replacement. Voor wat jij bedoelt gebruik je in PHP mysqli of PDO. Maar ook dat zal zijn probleem niet oplossen aangezien hij blijkbaar de variabele zelf al verkeerd binnenkrijgt.
    PSN: dJeezBE - Delicious bookmarks
    Disclaimer: I am currently suffering from severe CSD (Compulsive Sarcasm Disorder). - L'onion fait la farce - Facile largire de alieno
    Pastafarian by choice
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in