abonnement Unibet Coolblue Bitvavo
  zondag 21 juni 2009 @ 14:03:49 #1
85919 Likkende_Lassie
Doe eens wat aan je ondertitel
pi_70219986

cd niet bijgeleverd

Als je vragen hebt over PHP/MySQL, dan zit je hier goed met een vaste kliek guru's en een groot aantal regelmatige bezoekers. Beperk je vragen niet tot "hij doet het niet" of "hij geeft een fout" - onze glazen bol is kapot en we willen graag van je weten wát er niet lukt en wélke foutmelding je precies krijgt

Vorige delen:
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,
7172


Zie ook:
  • PHP Dataverwerking
  • Officiële PHP website
  • PHP Documentatie
  • MySQL Reference Manual
  • Yet Another PHP Faq
  • PHP Cheat Sheet
  • PHP5 Power Programming - boek met uitleg over OOP, Pear, XML, etc

    Tutorials:
  • W3Schools PHP
  • W3Schools SQL

    Deze OP en instructies voor nieuw topic: http://wiki.fok.nl/index.php/OP/PHP
  •   zondag 21 juni 2009 @ 14:04:47 #2
    85919 Likkende_Lassie
    Doe eens wat aan je ondertitel
    pi_70220022
    Mijn vraag uit het vorige topic

    Ik had het voorbeeld van http://www.dmxzone.com/forum/topic.asp?topic_id=14260.
    Omgezet naar 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
    26
    27
    <?php
    $from
    ['Lat'] = 51.5007359;
    $from['Lng'] = 3.6112547;
       
    $iRadius 100;

    $istartlat $from['Lat'];
    $istartlong $from['Long'];

    $LatRange = ($iRadius / ((6076 5280) * 60));

    $floatthis = ($iStartLat 3.141592653589 180);
    $LongRange = ($iRadius / (((cos(settype($floatthis"float")) * 6076.) / 5280.) * 60));

    $LowLatitude = ($istartlat $LatRange);
    $HighLatitude = ($istartlat $LatRange);
    $LowLongitude = ($istartlong $LongRange);
    $HighLongitude = ($istartlong $LongRange);

    echo 
    "
    SELECT * FROM cor WHERE 
    cor.Lat <= $HighLatitude AND 
    cor.Lat >= $LowLatitude AND 
    cor.Lng >= $LowLongitude AND 
    cor.Lng <= $HighLongitude 
    "
    ;
    ?>


    Maar hier geeft hij geen resultaten weer. Zodra ik de $iRadius hoger dan 130 zet wel, maar dat klopt natuurlijk niet. Wel liggen alle punten redelijk in de buurt.

    $iRadius = in miles

    [ Bericht 2% gewijzigd door Likkende_Lassie op 21-06-2009 14:11:29 ]
      zondag 21 juni 2009 @ 14:06:18 #3
    178193 Juicyhil
    Bekende FOK!ker
    pi_70220082
    tvphp
    Op dinsdag 9 augustus 2011 23:01 schreef SuperrrTuxxx het volgende:
    Ik hou zoveel van jou, ik doe alles voor je! O+
      zondag 21 juni 2009 @ 14:10:31 #4
    107951 JortK
    Immer kwaliteitsposts
      zondag 21 juni 2009 @ 14:10:36 #5
    63192 ursel
    "Het Is Hier Fantastisch!
    pi_70220239
    present
    pi_70220729
    Er is ook een functie pi()

    Uit het commentaar daar:
    quote:
    Pi is often usefull in con/sin/tan functions..
    There are also other Pi related constants.
    These are most of them:

    M_PI = 3.14159265358979323846 // pi

    // The following were added in PHP 4.0.0
    M_PI_2 = 1.57079632679489661923 // pi/2
    M_PI_4 = 0.78539816339744830962 // pi/4
    M_1_PI = 0.31830988618379067154 // 1/pi
    M_2_PI = 0.63661977236758134308 // 2/pi
    M_SQRTPI = 1.77245385090551602729 // sqrt(pi) (Only in PHP 4.0.2+)
    M_2_SQRTPI = 1.12837916709551257390 // 2/sqrt(pi)
      zondag 21 juni 2009 @ 14:33:34 #7
    136730 PiRANiA
    All thinking men are atheists.
    pi_70221061
    Leuke reeks
      FOK!-Schrikkelbaas zondag 21 juni 2009 @ 14:39:16 #8
    1972 Swetsenegger
    Egocentrische Narcist
    pi_70221222
    tvp, weer bezig met een webshopje.
      zondag 21 juni 2009 @ 14:43:41 #9
    85919 Likkende_Lassie
    Doe eens wat aan je ondertitel
    pi_70221361
    @light, thanks,

    Functie is nu als volgt geworden:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php
    function getRadiusCords($radius$startLat$startLong){
       
       
    $radius = ($radius 0.50);
       
       
    $latRange  = ($radius / ((6076 5280) * 60));
       
    $floatthis = ($startLat pi() / 180);
       
    $longRange = ($radius / (((cos(settype($floatthis,"float")) * 6076.8) / 5280) * 60));   
       return 
    "(
                cor.Lat <= "
    .($startLat $latRange)." AND 
                cor.Lat >= "
    .($startLat $latRange)." AND 
                cor.Lng >= "
    .($startLong $longRange)." AND 
                cor.Lng <= "
    .($startLong $longRange).
               )"
    ;
    }
    ?>


    Lijkt nu 100% te werken. Toch nog even goed testen

    Wat ik wel erg raar vind, is dat ik de $radius moet vermenigvuldigen met 0.50 zodat ik kilometers kan gebruiken Ergens moet er dan iets fout zijn, want eigenlijk zou ik het moeten vermenigvuldigen met 0.62

    [ Bericht 3% gewijzigd door Likkende_Lassie op 21-06-2009 15:27:38 ]
    pi_70240782
    quote:
    Op zondag 21 juni 2009 14:23 schreef Light het volgende:
    Er is ook een functie pi()

    Uit het commentaar daar:
    [..]
    Korte tip: de constanten gebruiken is altijd beter als weer een extra functieaanroep (performance-wise).. Dat geldt voor wel meer dingen in PHP... __CLASS__ in plaats van get_class($this), PHP_VERSION in plaats van phpversion(), en dat soort dingen

    Tevens goed gemaskeerde TVP
    pi_70243592
    quote:
    Op maandag 22 juni 2009 00:32 schreef Intrepidity het volgende:

    [..]

    Korte tip: de constanten gebruiken is altijd beter als weer een extra functieaanroep (performance-wise).. Dat geldt voor wel meer dingen in PHP... __CLASS__ in plaats van get_class($this), PHP_VERSION in plaats van phpversion(), en dat soort dingen

    Tevens goed gemaskeerde TVP
    En afgezien daarvan vind ik pi() en M_PI beter leesbaar dan 3.14159265358979323846
    pi_70243736
    quote:
    Op maandag 22 juni 2009 09:01 schreef Light het volgende:

    [..]

    En afgezien daarvan vind ik pi() en M_PI beter leesbaar dan 3.14159265358979323846
    Ach, ik heb wel eens gekker gezien hoor Wat dacht je van een regel of 50 aan code om pi (bij iedere paginaoproep uiteraard) opnieuw te berekenen met een ander algoritme dat nauwkeuriger was na de 200e decimaal. In die applicatie was die precisie uiteraard helemaal niet nodig, maar de betreffende programmeur stoorde zich er nog al aan
    Daarnaast zijn floats in PHP uiteraard lang niet zo nauwkeurig als het algoritme, en ik vraag me af of er uberhaupt wel zoveel decimalen in een float in PHP passen..
    Maar het was ECHT beter zo hoor!
    pi_70246318
    Iemand ervaring met UTF-16 in combinatie met SimpleXML/DOM? Ik wil een XML-bestand openen in SimpleXML of DOM, maar krijg de volgende error: SimpleXMLElement::__construct() [simplexmlelement.--construct]: Entity: line 1: parser error : Start tag expected, '<' not found
    Dit teken staat er wel degelijk, en er staat geen witregel of spatie voor. Zodra ik de inhoud van dit bestand in een string stop in PHP en de string probeer te laden gaat het wel goed..
    Betreffende eerste regel:
    1<?xml version="1.0" encoding="UTF-16"?>
      maandag 22 juni 2009 @ 11:27:51 #14
    58834 Catbert
    The evil HR Director.
    pi_70246977
    quote:
    Op zondag 21 juni 2009 14:43 schreef Likkende_Lassie het volgende:
    @light, thanks,

    Functie is nu als volgt geworden:
    [ code verwijderd ]

    Lijkt nu 100% te werken. Toch nog even goed testen

    Wat ik wel erg raar vind, is dat ik de $radius moet vermenigvuldigen met 0.50 zodat ik kilometers kan gebruiken Ergens moet er dan iets fout zijn, want eigenlijk zou ik het moeten vermenigvuldigen met 0.62
    Het werkt sowieso gewoon niet. In de eerste plaats selecteer je postcodes uit een 'vierkant', en niet binnen een cirkel. Ten tweede is de aarde een bol, en lopen de meridianen niet parallel. Wat je kunt doen is de range vrij groot houden, en dan in een postprocessing stap alle postcodes die je terugkrijgt nog even te checken door de daadwerkelijke afstand uit te rekenen. Hoe je dat doet staat hier:

    http://www.movable-type.co.uk/scripts/gis-faq-5.1.html

    Oh, en dat je door 0.5 moet delen komt waarschijnlijk doordat uitgegaan wordt van zeemijlen i.p.v. landmijlen. Een zeemijl is 1.85 km ongeveer, en komt dus dicht bij 2km. Je factor zou dus 1/1.85 = 0.54 moeten zijn.
    "[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
      maandag 22 juni 2009 @ 11:33:40 #15
    58834 Catbert
    The evil HR Director.
    pi_70247117
    quote:
    Op maandag 22 juni 2009 00:32 schreef Intrepidity het volgende:
    Korte tip: de constanten gebruiken is altijd beter als weer een extra functieaanroep (performance-wise).
    Ik hoop van harte dat PHP niet zo brak is, dat dat het geval is.
    "[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
    pi_70247489
    quote:
    Op maandag 22 juni 2009 11:33 schreef Catbert het volgende:

    [..]

    Ik hoop van harte dat PHP niet zo brak is, dat dat het geval is.
    Hoezo? constanten staan altijd in geheugen.. Functieaanroep betekent extra dingen op de stack, geheugenlocatie veranderen, uitvoeren van die functie, terugspringen naar vorige locatie.. Dat is in iedere taal zo.. Functieaanroepen geven nou eenmaal overhead omdat ze aanzienlijk complexer zijn dan even een variabele uit het geheugen vissen.. Je moet gewoon geen functies gebruiken voor enkele regels code en dat soort ongein.. Waarschijnlijk doet pi() niets anders dan return M_PI;
      maandag 22 juni 2009 @ 11:47:58 #17
    87680 Mirel
    Mirel wil een bongophone.
    pi_70247504
    Ik heb wat moeilijkheden met het 'simplest forum' forumcomponent in Joomla 1.5.10 op: http://www.jonginarnhem.nl/index.php?option=com_simplestforum&view=topiclist&Itemid=100

    Ik heb zelf een leeftijdsveld proberen toe te voegen. Een bezoeker post anoniem, en de bedoeling is dat bij de post de uitgekozen leeftijd te zien is.

    Dit is een bestaande aangepaste naamveld. Ipv een naam te typen, heb ik er een kiesoptie van gemaakt, voor jongen en meisje. Deze doet het ook prima:
    1
    2
    3
    4
    5
    6
    7
    8
                  <td width="47"><label for="name" class="lettertype"><?php echo JText::_('NAME'); ?></label></td>
               
             <td width="327">
                <select name="name" type="text" class="tabel" id="name">             
                <option>jongen</option>
                <option>meisje</option>
                </td>
                </tr>


    Het wordt dan in een ander bestand zo ge'echoed:
    1<?php echo $item->name; ?>


    Dit is degene die ik wil toevoegen:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
             <tr>
                <td width="47"><label for="age" class="lettertype"><?php echo JText::_('AGE'); ?></label></td>
                   <td width="327">
                   <select name="age" type="text" class="tabel" id="age"  size="1" maxlength="2" />             
                   <option>10</option>
                   <option>11</option>
                   <option>12</option>
                   <option>13</option>
                   <option>14</option>
                   <option>15</option>
                   <option>16</option>
                   <option>17</option>
                   <option>18</option>
                   <option>19</option>
                   <option>20</option> 
                </td>
             </tr>   

    En wordt zo ge'echoed:
    1<?php echo $item->age; ?>


    In phpmyadmin ziet het er zo uit:


    Ik weet niet of dat veld ook goed is aangemaakt, daar weet ik niks vanaf eigenlijk


    Uiteindelijk moet er een leeftijd staan achter "2 Seconden geleden ingezonden door een jongen". Nu staat er overal 0. Het is alsof het niet doorgevoerd wordt. Heb ik dat met die <option>'s fout gedaan?

    [ Bericht 3% gewijzigd door Mirel op 22-06-2009 12:08:10 ]
    When all else fails, you always have delusion.
      maandag 22 juni 2009 @ 12:18:47 #18
    87680 Mirel
    Mirel wil een bongophone.
    pi_70248337
    Ik heb overigens in phpmyadmin nu dezelfde waarden overgenomen uit 'AuthorID'. Ik vraag me alleen af waarom dat niet 'name' is.

    edit, dat 'name' komt uit een andere tabel. Maar die is voor de forumview, niet de postview. Ik snap er niks van

    [ Bericht 37% gewijzigd door Mirel op 22-06-2009 12:26:15 ]
    When all else fails, you always have delusion.
    pi_70249072
    ik vraag me af of je in een textarea een br kan invoeren zodat hij in weergave enters weergeeft ipv weergave

    text blablabalba <br> blablablabla

    text blablablabla
    blablablablabla

    iemand een oplossing?
    Redacted
      maandag 22 juni 2009 @ 12:51:26 #20
    87680 Mirel
    Mirel wil een bongophone.
    pi_70249272
    Een textarea zet het om naar gewone tekst. Juist als je een enter doet, hoort het goed te gaan. Of bedoel je met php de tekst echoen? dan is het dacht ik < /br>, en /n doet ook 'iets'
    When all else fails, you always have delusion.
      maandag 22 juni 2009 @ 12:55:31 #21
    87680 Mirel
    Mirel wil een bongophone.
    pi_70249427
    edit: foute forum
    When all else fails, you always have delusion.
      FOK!-Schrikkelbaas maandag 22 juni 2009 @ 13:01:31 #22
    1972 Swetsenegger
    Egocentrische Narcist
    pi_70249868
    ik bedoel we echoeen het in een textarea we hebben al <br> en nu willen we dat die enters veroorzaken ipv /n
    is hier iets mogelijk voor?

    want hij echo't plaint text.
    Redacted
      maandag 22 juni 2009 @ 13:11:07 #24
    75592 GlowMouse
    l'état, c'est moi
    pi_70249989
    Het is \n ipv /n.
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
      FOK!-Schrikkelbaas maandag 22 juni 2009 @ 13:21:22 #25
    1972 Swetsenegger
    Egocentrische Narcist
    pi_70250331
    quote:
    Op maandag 22 juni 2009 13:07 schreef cablegunmaster het volgende:
    ik bedoel we echoeen het in een textarea we hebben al <br> en nu willen we dat die enters veroorzaken ipv /n
    is hier iets mogelijk voor?

    want hij echo't plaint text.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    /**
     * Convert BR tags to nl
     *
     * @param string The string to convert
     * @return string The converted string
     */
    function br2nl($string)
    {
        return 
    preg_replace('/\<br(\s*)?\/?\>/i'"\n"$string);
    }
    ?>
      maandag 22 juni 2009 @ 14:12:06 #26
    87680 Mirel
    Mirel wil een bongophone.
    pi_70251975
    Nu ik! Nu ik!
    When all else fails, you always have delusion.
      maandag 22 juni 2009 @ 15:16:08 #27
    58834 Catbert
    The evil HR Director.
    pi_70254338
    quote:
    Op maandag 22 juni 2009 11:47 schreef Intrepidity het volgende:
    Hoezo? constanten staan altijd in geheugen.. Functieaanroep betekent extra dingen op de stack, geheugenlocatie veranderen, uitvoeren van die functie, terugspringen naar vorige locatie.. Dat is in iedere taal zo..
    Al sinds C worden simpele functies geinlined, dit geldt ook voor functies waar hele simpele berekeningen gedaan worden. Je moet de compiler / runtime lekker dat soort optimalisaties laten doen. Moeilijk gaan doen over een functieaanroep is gewoon premature optimization. Helemaal als het ten koste gaat van leesbaarbeid (__CLASS__ is een goed voorbeeld, WTF?) is het gewoon een slecht idee.
    "[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
    pi_70254410
    teeveepee
      maandag 22 juni 2009 @ 15:38:37 #29
    187069 slacker_nl
    Sicko pur sang
    pi_70255169
    quote:
    Op maandag 22 juni 2009 13:21 schreef Swetsenegger het volgende:

    [..]
    1
    2
    3
    4
    5
    6
    <?php
    function br2nl($string)
    {
        return 
    preg_replace('/\<br(\s*)?\/?\>/i'"\n"$string);
    }
    ?>
    1
    2
    3
    4
    5
    6
    <?php
    function br2nl($string)
    {
        return 
    preg_replace('/\<br\s*\/?\>/i'"\n"$string);
    }
    ?>


    Die \s* is al 0 of meer whitespace characters, die ? is overbodig.
    In theory there is no difference between theory and practice. In practice there is.
      maandag 22 juni 2009 @ 16:58:35 #30
    85919 Likkende_Lassie
    Doe eens wat aan je ondertitel
    pi_70258217
    quote:
    Op maandag 22 juni 2009 11:27 schreef Catbert het volgende:

    [..]

    Het werkt sowieso gewoon niet. In de eerste plaats selecteer je postcodes uit een 'vierkant', en niet binnen een cirkel. Ten tweede is de aarde een bol, en lopen de meridianen niet parallel. Wat je kunt doen is de range vrij groot houden, en dan in een postprocessing stap alle postcodes die je terugkrijgt nog even te checken door de daadwerkelijke afstand uit te rekenen. Hoe je dat doet staat hier:

    http://www.movable-type.co.uk/scripts/gis-faq-5.1.html

    Oh, en dat je door 0.5 moet delen komt waarschijnlijk doordat uitgegaan wordt van zeemijlen i.p.v. landmijlen. Een zeemijl is 1.85 km ongeveer, en komt dus dicht bij 2km. Je factor zou dus 1/1.85 = 0.54 moeten zijn.
    Maar ik selecteer helemaal geen postcodes, maar coordinaten.
    Toch werkt het zo goed hoor, waarom zou het niet moeten werken?
    pi_70260806
    quote:
    Op maandag 22 juni 2009 15:16 schreef Catbert het volgende:

    [..]

    Al sinds C worden simpele functies geinlined, dit geldt ook voor functies waar hele simpele berekeningen gedaan worden. Je moet de compiler / runtime lekker dat soort optimalisaties laten doen. Moeilijk gaan doen over een functieaanroep is gewoon premature optimization. Helemaal als het ten koste gaat van leesbaarbeid (__CLASS__ is een goed voorbeeld, WTF?) is het gewoon een slecht idee.
    En toch scheelt het 20-25%:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php
    // Constante
    $timestart microtime();
    for(
    $i 0$i 10000$i++)
    {
       
    $pi M_PI;
    }
    $timeconst = (microtime() - $timestart);
    echo 
    "Tijd voor 10.000 x constante: " $timeconst "<br />";

    // Functieaanroep
    $timestart microtime();
    for(
    $i 0$i 10000$i++)
    {
       
    $pi pi();
    }
    $timefunc = (microtime() - $timestart);
    echo 
    "Tijd voor 10.000 x functieaanroep: " $timefunc "<br />";

    echo 
    "Factor func. vs const.: " $timefunc $timeconst;
    ?>


    Resultaat:
    1
    2
    3
    Tijd voor 10.000 x constante: 0.0012489999999999
    Tijd voor 10.000 x functieaanroep: 0.0015500000000001
    Factor func. vs const.: 1.2409927942355
      maandag 22 juni 2009 @ 20:43:28 #32
    67978 HenryHill
    Fake it 'till you make it
    pi_70267206
    quote:
    Op maandag 22 juni 2009 11:05 schreef Intrepidity het volgende:
    Iemand ervaring met UTF-16 in combinatie met SimpleXML/DOM? Ik wil een XML-bestand openen in SimpleXML of DOM, maar krijg de volgende error: SimpleXMLElement::__construct() [simplexmlelement.--construct]: Entity: line 1: parser error : Start tag expected, '<' not found
    Dit teken staat er wel degelijk, en er staat geen witregel of spatie voor. Zodra ik de inhoud van dit bestand in een string stop in PHP en de string probeer te laden gaat het wel goed..
    Waarschijnlijk is je encoding nog gewoon ASCII of UTF-8 (ook al zegt je instruction dat het om UTF-16 gaat). Om dit te controleren, open het betreffende XML-bestand met een teksteditor die ook ondersteuning biedt om in verschillende encodings op te slaan (i.e. niet notepad), of open je document in een hex-editor en verifieer dat elk karakter uit 2 bytes bestaat (en niet 1).

    Wellicht dat het volgende verhaal verhelderend voor je is:
    The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets.
    So this is how liberty dies... with thunderous applause.
    Truth? What's so great about the truth? Try lying for a change, it's the currency of the world
      maandag 22 juni 2009 @ 20:44:47 #33
    75592 GlowMouse
    l'état, c'est moi
    pi_70267260
    quote:
    Op maandag 22 juni 2009 11:05 schreef Intrepidity het volgende:
    Iemand ervaring met UTF-16 in combinatie met SimpleXML/DOM? Ik wil een XML-bestand openen in SimpleXML of DOM, maar krijg de volgende error: SimpleXMLElement::__construct() [simplexmlelement.--construct]: Entity: line 1: parser error : Start tag expected, '<' not found
    Dit teken staat er wel degelijk, en er staat geen witregel of spatie voor. Zodra ik de inhoud van dit bestand in een string stop in PHP en de string probeer te laden gaat het wel goed..
    Betreffende eerste regel:
    [ code verwijderd ]
    BOM?
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
      FOK!-Schrikkelbaas maandag 22 juni 2009 @ 23:10:27 #34
    1972 Swetsenegger
    Egocentrische Narcist
    pi_70273891
    Ik heb mezelf weer in een lastige mysql hoek gemanoeuvreerd....

    1
    2
    3
    4
    5
    6
    id    artid    kleur           maat  
    1     1        10              s
    2     1        10              m
    3     1        10              l
    4     1        12567431        l
    5     1        10678096        m


    Nu moet ik als de artID en kleur gelijk is dit behandelen als 1 product in verschillende maten. Dus bovenstaand moet als volgt geparsed worden

    1
    2
    3
    <tr><td>Kleur:</td><td>10</td><td>maat</td>s, m, l</td></tr>
    <tr><td>Kleur:</td><td>12567431</td><td>maat</td>l</td></tr>
    <tr><td>Kleur:</td><td>10678096</td><td>maat</td>m</td></tr>


    Hoe ga ik dit het handigst aanpakken. Ik zat er zelf aan te denken om in de while lus te controleren of de kleur gelijk is aan het vorige rondje, maar.... hoe pas ik dan de cel 'maat' aan in de regel ervoor....

    Iemand een briljant idee?
      maandag 22 juni 2009 @ 23:12:16 #35
    136730 PiRANiA
    All thinking men are atheists.
    pi_70273955
    quote:
    Op maandag 22 juni 2009 23:10 schreef Swetsenegger het volgende:
    Ik heb mezelf weer in een lastige mysql hoek gemanoeuvreerd....
    [ code verwijderd ]

    Nu moet ik als de artID en kleur gelijk is dit behandelen als 1 product in verschillende maten. Dus bovenstaand moet als volgt geparsed worden
    [ code verwijderd ]

    Hoe ga ik dit het handigst aanpakken. Ik zat er zelf aan te denken om in de while lus te controleren of de kleur gelijk is aan het vorige rondje, maar.... hoe pas ik dan de cel 'maat' aan in de regel ervoor....

    Iemand een briljant idee?
    apart tabelletje voor maten, en die linken aan het id?
      maandag 22 juni 2009 @ 23:13:02 #36
    75592 GlowMouse
    l'état, c'est moi
    pi_70273996
    Niet je output eruit gooien middenin je code. Eerst een arraytje opbouwen $data[$artid][$kleur][] = $row.
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
    pi_70275708
    quote:
    Op maandag 22 juni 2009 23:13 schreef GlowMouse het volgende:
    Niet je output eruit gooien middenin je code. Eerst een arraytje opbouwen $data[$artid][$kleur][] = $row.
    Dat lijkt me idd de beste optie
      maandag 22 juni 2009 @ 23:55:56 #38
    136730 PiRANiA
    All thinking men are atheists.
    pi_70275752
    quote:
    Op maandag 22 juni 2009 23:54 schreef Light het volgende:

    [..]

    Dat lijkt me idd de beste optie
    Ondanks alle redundante data die op deze manier blijft bestaan?
      maandag 22 juni 2009 @ 23:59:22 #39
    75592 GlowMouse
    l'état, c'est moi
    pi_70275852
    quote:
    Op maandag 22 juni 2009 23:55 schreef PiRANiA het volgende:

    [..]

    Ondanks alle redundante data die op deze manier blijft bestaan?
    Als je het in een andere tabel zet zoals jij voorstelt, dan zul je alsnog wat met mijn post moeten doen.
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
      FOK!-Schrikkelbaas dinsdag 23 juni 2009 @ 08:23:30 #40
    1972 Swetsenegger
    Egocentrische Narcist
    pi_70279393
    quote:
    Op maandag 22 juni 2009 23:12 schreef PiRANiA het volgende:

    [..]

    apart tabelletje voor maten, en die linken aan het id?
    Het is nu al in 3 tabellen opgebroken ivm de schaalbaarheid. Hoofdeigenschappen (die voor elke kleur en maat gelden) dan de eigenschappen zoals kleur, maat, etc. en een tabel foto's.
    quote:
    Op maandag 22 juni 2009 23:13 schreef GlowMouse het volgende:
    Niet je output eruit gooien middenin je code. Eerst een arraytje opbouwen $data[$artid][$kleur][] = $row.
    Hmz, help me even op weg, hoe krijg ik in mijn while lus de info bij gelijke kleur in desbetreffende array entry erbij geschoven? Als ik als key gewoon de kleur pak kan ik natuurlijk de value manipuleren.... toch?
    pi_70280178
    ik vraag me af ik heb een array gegevens a 2 a 3 arrays bvb een verkooplijstje
    en die wil ik in een verkoop order - verkooporder regels
    dan doe ik de array weer in een

    creer verkoop regel
    foreach $array as $id
    {
    haal de laatste verkooporder op * query * voor het ID nummer
    insert into verkoopregel het verkooporderid en alle andere informatie
    }

    als ik dit uitvoer krijg ik dan geen problemen als 2 klanten precies op het zelfde moment het script uitvoeren?
    Redacted
      FOK!-Schrikkelbaas dinsdag 23 juni 2009 @ 09:14:41 #42
    1972 Swetsenegger
    Egocentrische Narcist
    pi_70280256
    quote:
    Op dinsdag 23 juni 2009 08:23 schreef Swetsenegger het volgende:

    [..]

    Het is nu al in 3 tabellen opgebroken ivm de schaalbaarheid. Hoofdeigenschappen (die voor elke kleur en maat gelden) dan de eigenschappen zoals kleur, maat, etc. en een tabel foto's.
    [..]

    Hmz, help me even op weg, hoe krijg ik in mijn while lus de info bij gelijke kleur in desbetreffende array entry erbij geschoven? Als ik als key gewoon de kleur pak kan ik natuurlijk de value manipuleren.... toch?
    proberen en falen als het in de database staat kun je een variabele where kleur = ' ".$kleur" ' doen en dat foreach $array as $id en daarna het weer outputten
    Redacted
    pi_70280264
    quote:
    Op dinsdag 23 juni 2009 09:14 schreef Swetsenegger het volgende:
    table lock
    dus als hij het uitvoert lockt hij de tabel?
    kan ik geen row lock doen? en voor 1x de variabele ophalen en dan in de foreach het eruithalen en daar een variabele gebruiken ?
    Redacted
      FOK!-Schrikkelbaas dinsdag 23 juni 2009 @ 09:18:51 #45
    1972 Swetsenegger
    Egocentrische Narcist
    pi_70280322
    quote:
    Op dinsdag 23 juni 2009 09:16 schreef cablegunmaster het volgende:

    [..]

    dus als hij het uitvoert lockt hij de tabel?
    kan ik geen row lock doen? en voor 1x de variabele ophalen en dan in de foreach het eruithalen en daar een variabele gebruiken ?
    Je wil toch de insert_id gebruiken van table 1 om in table 2 te gebruiken of begrijp ik je nu verkeerd?
      FOK!-Schrikkelbaas dinsdag 23 juni 2009 @ 09:19:37 #46
    1972 Swetsenegger
    Egocentrische Narcist
    pi_70280337
    quote:
    Op dinsdag 23 juni 2009 09:15 schreef cablegunmaster het volgende:

    [..]

    proberen en falen als het in de database staat kun je een variabele where kleur = ' ".$kleur" ' doen en dat foreach $array as $id en daarna het weer outputten
    Ja ik begrijp hoe een lusje werkt. Het ging me om de array manipulatie
    pi_70280476
    quote:
    Op dinsdag 23 juni 2009 09:18 schreef Swetsenegger het volgende:

    [..]

    Je wil toch de insert_id gebruiken van table 1 om in table 2 te gebruiken of begrijp ik je nu verkeerd?
    jup. dat wil ik doen voor die 0.00005 sec lockt hij de tabel?
    Redacted
      FOK!-Schrikkelbaas dinsdag 23 juni 2009 @ 09:55:20 #48
    1972 Swetsenegger
    Egocentrische Narcist
    pi_70281151
    quote:
    Op dinsdag 23 juni 2009 09:26 schreef cablegunmaster het volgende:

    [..]

    jup. dat wil ik doen voor die 0.00005 sec lockt hij de tabel?
    Hij locked de table tot jij hem unlocked.

    Wat ik doe in een webshop is bv in de table 'order' een order regel toevoegen, en vervolgens de insert id gebruiken om de produkten die bij die order horen in een content table te inserten. Na die laatste query unlock ik de table.

    Op die manier voorkom ik het risico dat er twee mensen exact tegelijk submitten en de content van order A bij order B terecht komt en andersom.
      dinsdag 23 juni 2009 @ 10:47:50 #49
    58834 Catbert
    The evil HR Director.
    pi_70282630
    quote:
    Op maandag 22 juni 2009 16:58 schreef Likkende_Lassie het volgende:
    Maar ik selecteer helemaal geen postcodes, maar coordinaten.
    Toch werkt het zo goed hoor, waarom zou het niet moeten werken?
    Dat heb ik net uitgelegd. Je selecteert alle coordinaten in een vierkant, niet in een cirkel. Daarnaast lopen de meridianen niet parellel. Daarom kun je beter nafilteren door naderhand nauwkeuriger de exacte afstanden uit te rekenen zodat daadwerkelijk alles binnen een straal krijgt.
    quote:
    Op maandag 22 juni 2009 18:18 schreef Intrepidity het volgende:
    En toch scheelt het 20-25%:
    [ code verwijderd ]

    Resultaat:
    [ code verwijderd ]
    Je bewijst hier vooral mee hoe brak PHP is. Een fatsoenlijke VM zou die loop uberhaupt niet 10000 keer uitvoeren. Check dit:

    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
        public static void main(String[] args)
        {
            LoopTest test;
            test = new LoopTest();
            
            test.test1();
            test.test2();
            test.test1();
            test.test2();
            test.test1();
            test.test2();    
            test.test1();
            test.test2();         

        }
        
        public void test1()
        {
            long ms = System.currentTimeMillis();
            for(int i = 0;i < 1000000000;i++)
            {
                double pi = Math.PI;
            }
            ms = System.currentTimeMillis() - ms;
            System.out.println("Test 1 took " + ms + "ms.");
        }
        
        public void test2()
        {
            long ms = System.currentTimeMillis();
            for(int i = 0;i < 1000000000;i++)
            {
                doStuff();
            }
            ms = System.currentTimeMillis() - ms;
            System.out.println("Test 2 took " + ms + "ms.");
        }
        
        private void doStuff()
        {
            double pi = Math.PI;
        }

    }


    Test 1 took 673ms.
    Test 2 took 943ms.
    Test 1 took 645ms.
    Test 2 took 931ms.
    Test 1 took 616ms.
    Test 2 took 610ms.
    Test 1 took 619ms.
    Test 2 took 633ms.

    Je ziet na de 2e test2 run dat de VM 'ziet' wat test 2 doet en het voor je gaat optimaliseren. Ik hoop van harte dat PHP dergelijke zaken ook doet, anders is het te brak voor woorden.

    BTW: als je testjes maakt, gebruik dan alsjeblieft meer iteraties dan 10000, dat zegt echt niks.
    "[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
    pi_70282825
    quote:
    Op dinsdag 23 juni 2009 10:47 schreef Catbert het volgende:

    Je bewijst hier vooral mee hoe brak PHP is. Een fatsoenlijke VM zou die loop uberhaupt niet 10000 keer uitvoeren. Check dit:
    [ code verwijderd ]
    Klopt, en omdat PHP geen perfecte taal is heeft het wel degelijk zin om constanten in plaats van functieaanroepen te gebruiken, dat was m'n punt..
      dinsdag 23 juni 2009 @ 11:09:10 #51
    187069 slacker_nl
    Sicko pur sang
    pi_70283234
    quote:
    Op dinsdag 23 juni 2009 09:19 schreef Swetsenegger het volgende:

    [..]

    Ja ik begrijp hoe een lusje werkt. Het ging me om de array manipulatie
    array_push($data[$id][$kleur], $data_from_table) ?

    (ik weet dat er een "snellere" manier is om dingen in een array te pushen voor de mensen die gaan vallen over de array_push functie).
    In theory there is no difference between theory and practice. In practice there is.
      dinsdag 23 juni 2009 @ 11:09:39 #52
    58834 Catbert
    The evil HR Director.
    pi_70283252
    quote:
    Op dinsdag 23 juni 2009 10:54 schreef Intrepidity het volgende:
    Klopt, en omdat PHP geen perfecte taal is heeft het wel degelijk zin om constanten in plaats van functieaanroepen te gebruiken, dat was m'n punt..
    Ik zeg niet dat het perse slecht is, maar niet als het ten koste gaat van de leesbaarheid van je code. Da's m'n punt. Math.PI bijvoorbeeld is een constante die iedereen gebruikt, en ook prima leesbaar is. Die __CLASS__ ofzo constante is IMHO een nono.
    "[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
      dinsdag 23 juni 2009 @ 11:14:43 #53
    187069 slacker_nl
    Sicko pur sang
    pi_70283397
    quote:
    Op dinsdag 23 juni 2009 11:09 schreef Catbert het volgende:

    [..]

    Ik zeg niet dat het perse slecht is, maar niet als het ten koste gaat van de leesbaarheid van je code. Da's m'n punt. Math.PI bijvoorbeeld is een constante die iedereen gebruikt, en ook prima leesbaar is. Die __CLASS__ ofzo constante is IMHO een nono.
    Gelukkig is het je humble opinion.
    In theory there is no difference between theory and practice. In practice there is.
      dinsdag 23 juni 2009 @ 11:16:23 #54
    58834 Catbert
    The evil HR Director.
    pi_70283434
    quote:
    Op dinsdag 23 juni 2009 11:14 schreef slacker_nl het volgende:
    Gelukkig is het je humble opinion.
    Euh, ja?
    "[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
      dinsdag 23 juni 2009 @ 13:14:46 #55
    187069 slacker_nl
    Sicko pur sang
    pi_70286981
    Ben er gewoon blij om.
    In theory there is no difference between theory and practice. In practice there is.
      dinsdag 23 juni 2009 @ 15:08:33 #56
    58834 Catbert
    The evil HR Director.
    pi_70290766
    quote:
    Op dinsdag 23 juni 2009 13:14 schreef slacker_nl het volgende:
    Ben er gewoon blij om.
    Dat fijn. Uiteindelijk is m'n ultieme doel hier mensen blij te maken
    "[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
    pi_70290886
    quote:
    Op dinsdag 23 juni 2009 10:47 schreef Catbert het volgende:

    Je bewijst hier vooral mee hoe brak PHP is. Een fatsoenlijke VM zou die loop uberhaupt niet 10000 keer uitvoeren. Check dit:
    [ code verwijderd ]

    Test 1 took 673ms.
    Test 2 took 943ms.
    Test 1 took 645ms.
    Test 2 took 931ms.
    Test 1 took 616ms.
    Test 2 took 610ms.
    Test 1 took 619ms.
    Test 2 took 633ms.

    Je ziet na de 2e test2 run dat de VM 'ziet' wat test 2 doet en het voor je gaat optimaliseren. Ik hoop van harte dat PHP dergelijke zaken ook doet, anders is het te brak voor woorden.

    BTW: als je testjes maakt, gebruik dan alsjeblieft meer iteraties dan 10000, dat zegt echt niks.
    Hmm... als ik die code uitvoer kom ik toch tot iets andere getallen:

    Test 1 took 4ms.
    Test 2 took 3ms.
    Test 1 took 3ms.
    Test 2 took 0ms.
    Test 1 took 0ms.
    Test 2 took 0ms.
    Test 1 took 0ms.
    Test 2 took 0ms.

    En dan maakt het niet uit of de loopjes in test1() en test2() tot 1.000.000.000 of tot 2.000.000.000 gaan.
      dinsdag 23 juni 2009 @ 15:47:13 #58
    58834 Catbert
    The evil HR Director.
    pi_70292222
    quote:
    Op dinsdag 23 juni 2009 15:11 schreef Light het volgende:
    Hmm... als ik die code uitvoer kom ik toch tot iets andere getallen:

    Test 1 took 4ms.
    Test 2 took 3ms.
    Test 1 took 3ms.
    Test 2 took 0ms.
    Test 1 took 0ms.
    Test 2 took 0ms.
    Test 1 took 0ms.
    Test 2 took 0ms.

    En dan maakt het niet uit of de loopjes in test1() en test2() tot 1.000.000.000 of tot 2.000.000.000 gaan.
    Je hebt zeker de server VM switch gebruikt? Dan gaat 'ie harder optimaliseren en komt tot de conclusie dat wat 'ie doet compleet zinloos is
    "[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
    pi_70292874
    quote:
    Op dinsdag 23 juni 2009 15:47 schreef Catbert het volgende:

    [..]

    Je hebt zeker de server VM switch gebruikt? Dan gaat 'ie harder optimaliseren en komt tot de conclusie dat wat 'ie doet compleet zinloos is
    Nee, ik deed java zonder switches. Nu zie ik wel in de help staan dat de default de server VM is, omdat het een server-class machine is. Misschien moet ik het ook niet op een server draaien

    Als ik java -client gebruik, krijg ik wel resultaten die meer in lijn liggen met wat je had gepost.
    pi_70310199
    ik heb een drop down menu , en nu wil ik dat hij blijft staan op de waarde die hij uit de database haalt bvb
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
            
    Impact
    </td><td>Impact:<select name="impact">
            <
    option value=""> - </option>
            <
    option value="1">Hoog</option>
            <
    option value="2">Middel</option>
            <
    option value="3">Laag</option>
            <
    option value="4">Geen</option>
    </
    select>
    ?>

    en nu wil ik dat hij checked invoert bij het getal :o hoe kan ik dit doen?

    de impact haalt hij uit de database. :) maar ik wil de andere opties ook kunnen weergeven dus ik dacht een switch maar dan echo je de options 4 * 4 erin. :{ moet makkelijker te doen zijn :)
    Redacted
    pi_70310424
    Gewoon 4 keer

    if($impact==1) echo 'SELECTED';

    in de options rammen ?
      woensdag 24 juni 2009 @ 00:25:56 #62
    75592 GlowMouse
    l'état, c'est moi
    pi_70310462
    for-loop dus.
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
    pi_70310489
    quote:
    Op woensdag 24 juni 2009 00:15 schreef cablegunmaster het volgende:
    ik heb een drop down menu , en nu wil ik dat hij blijft staan op de waarde die hij uit de database haalt bvb
    [ code verwijderd ]

    en nu wil ik dat hij checked invoert bij het getal hoe kan ik dit doen?
    Volgens mij moet je selected hebben, niet checked.
    quote:
    de impact haalt hij uit de database. maar ik wil de andere opties ook kunnen weergeven dus ik dacht een switch maar dan echo je de options 4 * 4 erin. moet makkelijker te doen zijn
    Maak een array met als keys de waardes (1, 2, 3, etc) en als values de bijbehorende teksten (laag, middel, hoog, etc). Dan haal je uit de database welke optie is geselecteerd (een id). Je gaat gewoon de array met opties af, en bij het weergeven check je iedere keer even of het id misschien toevallig gelijk is aan de key bij de optie die je gaat weergeven.
    pi_70311066
    quote:
    Op woensdag 24 juni 2009 00:27 schreef Light het volgende:

    [..]

    Volgens mij moet je selected hebben, niet checked.
    [..]

    Maak een array met als keys de waardes (1, 2, 3, etc) en als values de bijbehorende teksten (laag, middel, hoog, etc). Dan haal je uit de database welke optie is geselecteerd (een id). Je gaat gewoon de array met opties af, en bij het weergeven check je iedere keer even of het id misschien toevallig gelijk is aan de key bij de optie die je gaat weergeven.
    ook een goeie optie.. beter dan brunod die gebruikte ik eerst. maar dat is ook niet zo productief.

    Nog een vraag

    ik krijg veilige /' in de database maar hoe echo ik die er goed uit zonder de / iets met preg_replace() maar ik snap preg replace niet helemaal.

    hoe los ik die / forward slash op?

    [ Bericht 16% gewijzigd door cablegunmaster op 24-06-2009 09:18:31 ]
    Redacted
    pi_70349331
    Ik kom er niet uit : ikl probeerde een functie om de tijd te berekenen tussen 2 datums alleen nu krijg ik de hele tijd het probleem dat de tijden tijdens 0:00 negatief worden. want 23:00 is natuurlijk groter.

    Hoe kan ik simpel 2 velden met datetime van elkaar aftrekken?

    1
    2
    3
    4
    <?php
    SELECT TIMESTAMPDIFF
    (MINUTE,LogOutTime,LogInTime) AS TimeLoggedIn
    FROM LogTable
    ?>

    is een functie die me niet hielp. hij gaf me negatieve waardes bij bepaalde tijden.

    1
    2
    3
    4
    5
    6
    7
    8
    <?php
     $output 
    strtotime($row['datum_tijd_open']);
                
    $output2 strtotime($row['datum_tijd_gesloten']);
                 
    $temp $output $output2;
                echo 
    " ".date('d',$temp).' Dagen ';
                echo 
    date('m',$temp).' Maand ';
                echo 
    date('Y',$temp).' Jaar verschil';
    ?>

    Hieruit krijg ik een heel andere waarde 1976 jaar 17 dagen etc... maar de minuten en seconde kloppen wel.

    [ Bericht 57% gewijzigd door cablegunmaster op 25-06-2009 09:41:03 ]
    Redacted
      FOK!-Schrikkelbaas donderdag 25 juni 2009 @ 09:48:19 #67
    1972 Swetsenegger
    Egocentrische Narcist
    pi_70349802
    Als het als time in je mysql tabel staat kan je toch gewoon met datesub gaan werken
    http://dev.mysql.com/doc/(...)-time-functions.html
    pi_70349982
    quote:
    Op donderdag 25 juni 2009 09:30 schreef cablegunmaster het volgende:
    Ik kom er niet uit : ikl probeerde een functie om de tijd te berekenen tussen 2 datums alleen nu krijg ik de hele tijd het probleem dat de tijden tijdens 0:00 negatief worden. want 23:00 is natuurlijk groter.

    Hoe kan ik simpel 2 velden met datetime van elkaar aftrekken?
    [ code verwijderd ]

    is een functie die me niet hielp. hij gaf me negatieve waardes bij bepaalde tijden.
    [ code verwijderd ]

    Hieruit krijg ik een heel andere waarde 1976 jaar 17 dagen etc... maar de minuten en seconde kloppen wel.
    Dat komt omdat je een verschil in tijd om gaat zetten naar een daadwerkelijke datum middels de date() functie. Dat kan niet.

    Een timestamp van 0 staat gelijk aan 1 januari 1970 @ 00:00 en dus niet gelijk aan 1 januari 0 @ 00:00. Dat laatste is wat je zou willen als je wilt weten hoeveel jaren/maanden/weken/dagen/uren/minuten/seconden er tussen 2 datums zitten.

    Je kunt het met de hand uitrekenen:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $output 
    strtotime($row['datum_tijd_open']);
    $output2 strtotime($row['datum_tijd_gesloten']);
    $diff $output $output2;

    $dagen $diff 86400;
    $uren = ($diff 86400) / 3600;
    $minuten = (($diff 86400) % 3600) / 60;
    $seconden = ((($diff 86400) % 3600) % 60) / 1// die /1 kan natuurlijk weg, gaat om het idee
    ?>
    pi_70354463
    quote:
    Op donderdag 25 juni 2009 09:54 schreef HuHu het volgende:

    [..]

    Dat komt omdat je een verschil in tijd om gaat zetten naar een daadwerkelijke datum middels de date() functie. Dat kan niet.

    Een timestamp van 0 staat gelijk aan 1 januari 1970 @ 00:00 en dus niet gelijk aan 1 januari 0 @ 00:00. Dat laatste is wat je zou willen als je wilt weten hoeveel jaren/maanden/weken/dagen/uren/minuten/seconden er tussen 2 datums zitten.

    Je kunt het met de hand uitrekenen:
    [ code verwijderd ]
    hoe pak je daar alleen de getallen voor de komma? en een groot probleem. Deze query ben ik 0,5 dag mee bezig geweest om te formuleren.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php
        SELECT     leverancier
    .naam AS naamincident.incidentid AS idincident.systeem_naam AS Systeemnaam,
                
    datum_tijd_open AS 'Datumtijdmelding'incident.omschrijving AS 'omschrijving'
                
    incident.workaround AS 'Workaround'component.leverancier AS Leveranciercomponent.merk AS merk
                
    component.soort AS 'apparaattype',component.aanschaf_jaar AS 'aanschaf'
        
    FROM incident
        INNER JOIN component ON incident
    .systeem_naam component.systeem_naam
        INNER JOIN leverancier ON component
    .leverancier leverancier.leverancier_id
        WHERE incident
    .omschrijving
        IN 
    (
            
    SELECT incident.omschrijving
            FROM incident
            GROUP BY omschrijving
            HAVING 
    (    
                    
    SELECT COUNT(incident.omschrijving
                    
    FROM incident 
                    WHERE incident
    .probleemid '0') >=2    
        
    )
        
        
    ORDER BY incident.omschrijving";
    ?>


    alleen nu geeft hij na toevoegen van problemen ook incidenten terug die meer dan 2 rijen heeft
    en probleem id 0 hoe los ik dit op?

    [ Bericht 2% gewijzigd door cablegunmaster op 25-06-2009 12:28:57 ]
    Redacted
    pi_70358191
    quote:
    Op donderdag 25 juni 2009 09:54 schreef HuHu het volgende:

    [..]

    Dat komt omdat je een verschil in tijd om gaat zetten naar een daadwerkelijke datum middels de date() functie. Dat kan niet.

    Een timestamp van 0 staat gelijk aan 1 januari 1970 @ 00:00 en dus niet gelijk aan 1 januari 0 @ 00:00. Dat laatste is wat je zou willen als je wilt weten hoeveel jaren/maanden/weken/dagen/uren/minuten/seconden er tussen 2 datums zitten.

    Je kunt het met de hand uitrekenen:
    [ code verwijderd ]
    Aangepast en werkend

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
    if(isset($row['datum_tijd_gesloten']) && $row['status'] == 'Gesloten')
    {
    $output  strtotime($row['datum_tijd_open']);
    $output2 strtotime($row['datum_tijd_gesloten']);
    }elseif(
    $row['status'] != 'Gesloten'){
    $output  strtotime($row['datum_tijd_open']);
    $date date('Y-m-d H:i:s');
    $output2 strtotime($date);
    }
    $diff $output2 $output;
    $dagen floor($diff 86400);
    $uren floor(($diff 86400) / 3600);
    $minuten floor((($diff 86400) % 3600) / 60);
    $seconden floor(((($diff 86400) % 3600) % 60)); // die /1 kan natuurlijk weg, gaat om het idee
        
    if($row['status'] == 'Gesloten')
        {
        echo  
    "Het probleem duurde ".$dagen." dagen ".$uren." uur ".$minuten." minuten ".$seconden." seconden";
        }else{
        echo 
    "Het probleem duurt al ".$dagen." dagen ".$uren." uur ".$minuten." minuten ".$seconden." seconden";
        }
    ?>


    Geen idee of er problemen nog doorkomen. maar floor() lijkt te doen wat hij moet doen
    Redacted
    pi_70358285
    Je kunt de floor() gebruiken ja, of een cast naar int.
    pi_70358976
    Weet iemand of het mogelijk is om filter_var() aan de praat te krijgen is onder PHP 5.2.0? Of misschien een goed alternatief ervoor?

    regular expressions zijn namelijk niet mijn sterkste kant ...
      donderdag 25 juni 2009 @ 15:41:41 #73
    187069 slacker_nl
    Sicko pur sang
    pi_70361864
    uhh, het werkt toch gewoon onder php 5.x: http://nl2.php.net/filter_var
    In theory there is no difference between theory and practice. In practice there is.
    pi_70363518
    Pardon! Ik bedoel versies lager dan 5.2.0, "onder" is een beetje ongelukkig gekozen woord.
    pi_70364384
    van php,net.

    I managed to get this to work with PHP 5.1.6 on CentOS 5 with minor difficulty.

    1) Download the PECL filter package
    2) Extract the tarball
    3) phpize the directory
    4) ./configure
    5) make
    6) filter-0.11.0/logical_filters.c:25:31: error: ext/pcre/php_pcre.h: No such file or directory
    7) find / -name php_pcre.h
    8) Make sure php-devel is installed
    9) Edit filter-0.11.0/logical_filters.c and replace "ext/pcre/php_pcre.h" with the absolute path of php_pcre.h
    10) make
    11) make install
    12) add "extension=filter.so" to php.ini
    13) Restart Apache
      donderdag 25 juni 2009 @ 16:57:06 #76
    85919 Likkende_Lassie
    Doe eens wat aan je ondertitel
    pi_70364568
    Momenteel ben ik bezig een web applicatie icm Google Maps.
    Nu is het de bedoeling dat er uitgebreide stats worden bijgehouden, ook als een zogeheten marker per bedrijf wordt weergegeven.

    Nu is dat bijhouden niet zo'n probleem, maar vraag ik me af hoe ik dit het beste kan doen qua performance:

    Via memcached bijhouden welke markers/bedrijven er zijn weergegeven, vervolgens elke 5 min. een script laten draaien welke de memcached in de database stopt, en memcached opschoont.

    Of aan het einde van het laden van alle markers deze met 1 query opslaan in de database...

    Wat is het snelst en het meeste stabiel? Er van uitgaande dat er straks behoorlijk wat mensen gebruik gaan maken van de app.
    pi_70369678
    quote:
    Op donderdag 25 juni 2009 12:13 schreef cablegunmaster het volgende:

    [..]

    hoe pak je daar alleen de getallen voor de komma? en een groot probleem. Deze query ben ik 0,5 dag mee bezig geweest om te formuleren.
    [ code verwijderd ]

    alleen nu geeft hij na toevoegen van problemen ook incidenten terug die meer dan 2 rijen heeft
    en probleem id 0 hoe los ik dit op?
    Opgelost met een where en een and

    na een uurtje verder puzzelen
    Redacted
      vrijdag 26 juni 2009 @ 12:56:31 #78
    87680 Mirel
    Mirel wil een bongophone.
    pi_70393030
    Ik gebruik het eventlist agenda component voor joomla. Het component heeft een bijpassende module die alles laat zien wat nog moet komen. Ik heb een custom module ervoor, die alleen de agendapunten laat zien van de huidige week.
    Het probleem is dat het scriptje op die manier de agendapunten vind, en ze laat zien, en dus ook de ongepubliceerde meeneemt.
    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
    <?php

    echo "<h5><font color=#ff9900><b>Deze week:</b></font></h5><hr>";

    global $mainframe;
    $db =& JFactory::getDBO();

    $today_month = date( 'm', $time);

    $query = "SELECT * FROM jos_eventlist_events WHERE ((WEEK(dates) = WEEK(now() + INTERVAL 0 WEEK)  AND YEAR(dates) = YEAR(now() + INTERVAL 0 WEEK)) 

    OR 

    (WEEK(now() + INTERVAL 0 WEEK BETWEEN WEEK(dates) AND WEEK(enddates)) AND YEAR(now() + INTERVAL 0 WEEK BETWEEN YEAR(dates) AND YEAR(enddates)))) 

    GROUP BY dates ORDER BY dates, times ASC limit 25";
    $db->setQuery( $query, 0, $count );
    $rows = $db->loadObjectList();

    echo '<ul>';
    foreach($rows as $row) {
    echo "
    <b><a href='$JURI index.php?option=com_eventlist&view=details&id=$row->id'>$row->title </a></b><BR />
    <li>Wanneer: <b>$row->dates</b><BR />
    Aanvang: $row->times<BR /><BR />

    </li>";
    }
    if (empty($row)) {
        echo 'Er zijn geen evenementen deze week!<br>Check volgende week nog eens.';
    }
    echo '</ul><hr>'; 
    ?>


    Nou wil ik dus dat die ook de 'published' tabel checkt, en die ongepublishde níet meeneemt. Dat doet ie nu wel, en dat is niet de bedoeling. Hoe moet dat scriptje worden aangepast?

    [ Bericht 3% gewijzigd door Mirel op 26-06-2009 13:05:49 ]
    When all else fails, you always have delusion.
    pi_70393107
    Dat kunnen we niet weten, want we weten niet hoe de onderlinge tabel-structuur is.
      vrijdag 26 juni 2009 @ 13:06:02 #80
    87680 Mirel
    Mirel wil een bongophone.
    pi_70393308
    geedit
    When all else fails, you always have delusion.
    pi_70393683
    ik zou zeggen WHERE published=1
      vrijdag 26 juni 2009 @ 13:21:23 #82
    87680 Mirel
    Mirel wil een bongophone.
    pi_70393844
    gooi ik dat er zo zomaar tussen? Vast niet
    When all else fails, you always have delusion.
    pi_70393879
    Zelf totaal geen ervaring met mysql merk ik.
    Eens even kijken

    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
    <?php

    echo "<h5><font color=#ff9900><b>Deze week:</b></font></h5><hr>";

    global $mainframe;
    $db =& JFactory::getDBO();

    $today_month = date( 'm', $time);

    $query = "SELECT * FROM jos_eventlist_events WHERE published=1 AND ((WEEK(dates) = WEEK(now() + INTERVAL 0 WEEK)  AND YEAR(dates) = YEAR(now() + INTERVAL 0 WEEK)) 

    OR 

    (WEEK(now() + INTERVAL 0 WEEK BETWEEN WEEK(dates) AND WEEK(enddates)) AND YEAR(now() + INTERVAL 0 WEEK BETWEEN YEAR(dates) AND YEAR(enddates)))) 

    GROUP BY dates ORDER BY dates, times ASC limit 25";
    $db->setQuery( $query, 0, $count );
    $rows = $db->loadObjectList();

    echo '<ul>';
    foreach($rows as $row) {
    echo "
    <b><a href='$JURI index.php?option=com_eventlist&view=details&id=$row->id'>$row->title </a></b><BR />
    <li>Wanneer: <b>$row->dates</b><BR />
    Aanvang: $row->times<BR /><BR />

    </li>";
    }
    if (empty($row)) {
        echo 'Er zijn geen evenementen deze week!<br>Check volgende week nog eens.';
    }
    echo '</ul><hr>'; 
    ?>


    Volgens mij zo,
      vrijdag 26 juni 2009 @ 13:38:18 #84
    87680 Mirel
    Mirel wil een bongophone.
    pi_70394468
    idd, geen ervaring
    When all else fails, you always have delusion.
    pi_70394537
    Je moet ook in de OR clause een published = 1 zetten
      vrijdag 26 juni 2009 @ 13:42:34 #86
    87680 Mirel
    Mirel wil een bongophone.
    pi_70394644
    Hij werkt, dank je.

    edit: oh, gelijk aan het begin na de OR?
    When all else fails, you always have delusion.
      vrijdag 26 juni 2009 @ 13:57:49 #87
    87680 Mirel
    Mirel wil een bongophone.
    pi_70395230
    editkick

    Hij doet het prima verder, heb het uitgetest. Zonder je extra code na de OR

    [ Bericht 29% gewijzigd door Mirel op 26-06-2009 14:03:01 ]
    When all else fails, you always have delusion.
    pi_70397127
    quote:
    Op vrijdag 26 juni 2009 13:39 schreef Scorpie het volgende:
    Je moet ook in de OR clause een published = 1 zetten
    Volgens mij niet die or is puur voor de 2 datum selecties
      zaterdag 27 juni 2009 @ 12:21:50 #89
    85919 Likkende_Lassie
    Doe eens wat aan je ondertitel
    pi_70420460
    Momenteel ben ik bezig een web applicatie icm Google Maps.
    Nu is het de bedoeling dat er uitgebreide stats worden bijgehouden, ook als een zogeheten marker per bedrijf wordt weergegeven.

    Nu is dat bijhouden niet zo'n probleem, maar vraag ik me af hoe ik dit het beste kan doen qua performance:

    Via memcached bijhouden welke markers/bedrijven er zijn weergegeven, vervolgens elke 5 min. een script laten draaien welke de memcached in de database stopt, en memcached opschoont.

    Of aan het einde van het laden van alle markers deze met 1 query opslaan in de database...

    Wat is het snelst en het meeste stabiel? Er van uitgaande dat er straks behoorlijk wat mensen gebruik gaan maken van de app.
    pi_70427112
    Kan iemand me helpen, soms krijg ik deze melding bij mijn gastenboek.Notice: Undefined index: comment op regel 111 dit is de regel $comment =$_REQUEST["comment"];

    alvast bedankt.
    pi_70427179
    quote:
    Op zaterdag 27 juni 2009 16:46 schreef Gruning3r het volgende:
    Kan iemand me helpen, soms krijg ik deze melding bij mijn gastenboek.Notice: Undefined index: comment op regel 111 dit is de regel $comment =$_REQUEST["comment"];

    alvast bedankt.
    Het script verwacht dat er via GET of POST een veld "comment" wordt meegestuurd, maar dat gebeurt niet. Dan krijg je die melding.
    pi_70427312
    quote:
    Op zaterdag 27 juni 2009 16:49 schreef Light het volgende:

    [..]

    Het script verwacht dat er via GET of POST een veld "comment" wordt meegestuurd, maar dat gebeurt niet. Dan krijg je die melding.
    Maar hoe kan ik het oplossen dan? alvast bedankt
    pi_70428047
    Als ik de regel weg doe dan kan ik ook geen berichten meer plaatsen.
      zaterdag 27 juni 2009 @ 22:14:42 #94
    37634 wobbel
    Da WoBBeL King
    pi_70435583
    Hoe maak ik eigenlijk een simpel PHP/MySQL navigatie systeem?

    Dat ik dus 50150 resultaten netjes per 50 kan opdelen, met onderaan < Vorige | 1-2-3-4-5-6-7 | Volgende > enzo...
    pi_70437451
    quote:
    Op zaterdag 27 juni 2009 16:46 schreef Gruning3r het volgende:
    Kan iemand me helpen, soms krijg ik deze melding bij mijn gastenboek.Notice: Undefined index: comment op regel 111 dit is de regel $comment =$_REQUEST["comment"];

    alvast bedankt. ^O^ :D
    1
    2
    3
    <?php
    $comment 
    = isset($_REQUEST['comment'])?$_REQUEST['comment']:"Default";
    ?>
    pi_70437543
    quote:
    Op zaterdag 27 juni 2009 22:14 schreef wobbel het volgende:
    Hoe maak ik eigenlijk een simpel PHP/MySQL navigatie systeem?

    Dat ik dus 50150 resultaten netjes per 50 kan opdelen, met onderaan < Vorige | 1-2-3-4-5-6-7 | Volgende > enzo...
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $page 
    = isset($_REQUEST['page'])?($_REQUEST['page'] - 1)*50:0;

    while(
    $row mysql_fetch_assoc(mysql_query("SELECT * FROM table LIMIT ".$page.",50"))
    {
     
    //blablabla
    }
    ?>
      zondag 28 juni 2009 @ 11:07:09 #97
    37634 wobbel
    Da WoBBeL King
    pi_70442680
    Oke, misschien omdat i knet wakker ben hoor...maar waarom krijg ik ZEVEN resultaten met dit:

    SELECT * FROM D_Customers LIMIT 5, 10

    1 - 5
    2 - 6
    3 - 7
    4 - 8
    5 - 9
    6 - 10

    Als ik het zo natel, zou ik er dus maar 6 moeten krijgen....maar waarom krijg ik er 7?
    pi_70443092
    @Wobbel
    " With two arguments, the first argument specifies the offset of the first row to return, and the second specifies the maximum number of rows to return. The offset of the initial row is 0 (not 1):

    SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15"

    Je krijgt dus maximaal tien terug, omdat er maar zeven rijen zijn krijg je er minder terug. Maar zes rijen terug verwachten is sowieso fout.
      zondag 28 juni 2009 @ 12:02:40 #99
    37634 wobbel
    Da WoBBeL King
    pi_70443612
    quote:
    Op zondag 28 juni 2009 11:33 schreef FastFox91 het volgende:
    @Wobbel
    " With two arguments, the first argument specifies the offset of the first row to return, and the second specifies the maximum number of rows to return. The offset of the initial row is 0 (not 1):

    SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15"

    Je krijgt dus maximaal tien terug, omdat er maar zeven rijen zijn krijg je er minder terug. Maar zes rijen terug verwachten is sowieso fout.
    Owjah, dat was het
    pi_70443737
    quote:
    Op zaterdag 27 juni 2009 12:21 schreef Likkende_Lassie het volgende:
    Momenteel ben ik bezig een web applicatie icm Google Maps.
    Nu is het de bedoeling dat er uitgebreide stats worden bijgehouden, ook als een zogeheten marker per bedrijf wordt weergegeven.

    Nu is dat bijhouden niet zo'n probleem, maar vraag ik me af hoe ik dit het beste kan doen qua performance:

    Via memcached bijhouden welke markers/bedrijven er zijn weergegeven, vervolgens elke 5 min. een script laten draaien welke de memcached in de database stopt, en memcached opschoont.

    Of aan het einde van het laden van alle markers deze met 1 query opslaan in de database...

    Wat is het snelst en het meeste stabiel? Er van uitgaande dat er straks behoorlijk wat mensen gebruik gaan maken van de app.
    Aan het eind van het laden opslaan lijkt me vele malen makkelijker dan via memcached en een cronjob?
    Bovendien heb je je data dan meteen. 1 insertquery kost natuurlijk helemaal geen tijd....
      zondag 28 juni 2009 @ 13:17:14 #101
    85919 Likkende_Lassie
    Doe eens wat aan je ondertitel
    pi_70445152
    quote:
    Op zondag 28 juni 2009 12:08 schreef Xcalibur het volgende:

    [..]

    Aan het eind van het laden opslaan lijkt me vele malen makkelijker dan via memcached en een cronjob?
    Bovendien heb je je data dan meteen. 1 insertquery kost natuurlijk helemaal geen tijd....
    het is idd een feit dat het direct uitvoeren van een query makkerlijker is, maar hoe zit het met de performance? en dus straks de totale load op de server.

    het is toch een flinke update/insert/select query, select omdat het systeem de stats eventueel nog moet aanmaken.
      zondag 28 juni 2009 @ 14:10:12 #102
    37634 wobbel
    Da WoBBeL King
    pi_70446401
    Ik kwam er net achter dat ik gister 20 regels had getikt omdat ik moe was, maar daar ook gewoon een simpele functie voor bestond
      zondag 28 juni 2009 @ 14:52:37 #103
    85919 Likkende_Lassie
    Doe eens wat aan je ondertitel
    pi_70447420
    quote:
    Op zondag 28 juni 2009 14:10 schreef wobbel het volgende:
    Ik kwam er net achter dat ik gister 20 regels had getikt omdat ik moe was, maar daar ook gewoon een simpele functie voor bestond
    altijd leuk , welke functie?
    pi_70447483
    quote:
    Op zondag 28 juni 2009 14:10 schreef wobbel het volgende:
    Ik kwam er net achter dat ik gister 20 regels had getikt omdat ik moe was, maar daar ook gewoon een simpele functie voor bestond
    En ik kwam er pas achter dat ik de hele json klasse uit m'n framework gewoon kon vervangen door calls naar json_encode en json_decode Hoewel die wel iets minder flexibel zijn..
      zondag 28 juni 2009 @ 15:41:31 #105
    37634 wobbel
    Da WoBBeL King
    pi_70448494
    quote:
    Op zondag 28 juni 2009 14:52 schreef Likkende_Lassie het volgende:

    [..]

    altijd leuk , welke functie?
    round met . en , voor decimalen en duizenden
      maandag 29 juni 2009 @ 10:44:05 #106
    85919 Likkende_Lassie
    Doe eens wat aan je ondertitel
    pi_70471164
    Hoop dat iemand nog kan kijken naar mijn vraag een paar posts hierboven

    Ondertussen nog een andere vraag, ik heb een project dat ik in meerdere talen wil hebben.
    Nu is het zo dat ik voorheen altijd een functie had (lang()), welke ik als volgt aanriep:

    echo lang('Welcome');

    Vervolgens werd er een query uitgevoerd om welcome op te halen en welcome in het nederlands te weergeven.

    Toch denk ik dat dit beter kan, door bijvoorbeeld bij het laden van de pagina dit allemaal in 1 query op te halen, hoe is jullie idee hierover?
    pi_70471299
    Ik zet vertalingen nooit in de database, maar in een aparte file.
    pi_70471783
    quote:
    Op zondag 28 juni 2009 13:17 schreef Likkende_Lassie het volgende:

    [..]

    het is idd een feit dat het direct uitvoeren van een query makkerlijker is, maar hoe zit het met de performance? en dus straks de totale load op de server.

    het is toch een flinke update/insert/select query, select omdat het systeem de stats eventueel nog moet aanmaken.
    Hoezo moet je de status nog aanmaken? Zijn die voor ieder record verschillend dan?
    Als je zorgt dat je alle info al hebt opgehaald in je eerste select voorkom je in ieder geval dat je nog een select moet draaien (als dat kan iig).

    En grote insert lijkt me niet zo'n probleem? En als je het eerst memcached, moet je het later alsnog inserten, dat maakt qua load niet uit lijkt me, je doet het alleen op een ander moment (als het misschien juist wel drukker is op je server )
    pi_70471981
    quote:
    Op maandag 29 juni 2009 10:48 schreef Scorpie het volgende:
    Ik zet vertalingen nooit in de database, maar in een aparte file.
    Hoe onderhoud je die dan? In een CMS ofzo dus, textfile steeds opnieuw schrijven?

    Ik gebruik altijd een centrale teksten tabel. Per record staat daarin om wat voor soort tekst het gaat (pagina, nieuwsbericht, etc. - tabelnaam dus), de ID van het betreffende pagina/nieuws-record, de taal en de tekst.

    Door middel van een join kan je die vrij eenvoudig ophalen, ook meerdere tekstrecords per pagina (voor de titel, inhoud, etc.) Voordeel is dat je *alle* tekst in 1 tabel hebt staan, en dat dus erg makkelijk te doorzoeken is enzo Een nieuwe taal toevoegen is een kwestie van alle tekstrecords van 1 taal dupliceren naar je nieuwe taal.
    pi_70472074
    quote:
    Op maandag 29 juni 2009 11:11 schreef Xcalibur het volgende:

    [..]

    Hoe onderhoud je die dan? In een CMS ofzo dus, textfile steeds opnieuw schrijven?
    Bij een CMS kan je onderscheid maken he. Je hebt dynamische content die de gebruiker zelf verzorgt (die zet je dan natuurlijk in de database), je hebt systeem meldingen (komen uit een resource file), en generieke meldingen (ook uit de resource file).

    Als een gebruiker dan meertaligheid wil, dan moet hij alleen zijn dynamische content (laten) vertalen en die opslaan onder een andere taal.
    quote:
    Ik gebruik altijd een centrale teksten tabel. Per record staat daarin om wat voor soort tekst het gaat (pagina, nieuwsbericht, etc. - tabelnaam dus), de ID van het betreffende pagina/nieuws-record, de taal en de tekst.
    Ja dat is dus specifiek voor de dynamische content, daar maak ik mij niet zo druk om.
    quote:
    Door middel van een join kan je die vrij eenvoudig ophalen, ook meerdere tekstrecords per pagina (voor de titel, inhoud, etc.) Voordeel is dat je *alle* tekst in 1 tabel hebt staan, en dat dus erg makkelijk te doorzoeken is enzo Een nieuwe taal toevoegen is een kwestie van alle tekstrecords van 1 taal dupliceren naar je nieuwe taal.
    Klopt. Maar ik bouw meestal een CMS waarbij ik de labels van de velden e.d vastleg in een file, en niet in de database. Dacht dat je dat bedoelde.
    pi_70472428
    --

    [ Bericht 100% gewijzigd door Flaccid op 29-06-2009 11:49:06 ]
    pi_70472539
    quote:
    Op maandag 29 juni 2009 11:11 schreef Xcalibur het volgende:

    [..]

    Hoe onderhoud je die dan? In een CMS ofzo dus, textfile steeds opnieuw schrijven?

    Ik gebruik altijd een centrale teksten tabel. Per record staat daarin om wat voor soort tekst het gaat (pagina, nieuwsbericht, etc. - tabelnaam dus), de ID van het betreffende pagina/nieuws-record, de taal en de tekst.

    Door middel van een join kan je die vrij eenvoudig ophalen, ook meerdere tekstrecords per pagina (voor de titel, inhoud, etc.) Voordeel is dat je *alle* tekst in 1 tabel hebt staan, en dat dus erg makkelijk te doorzoeken is enzo Een nieuwe taal toevoegen is een kwestie van alle tekstrecords van 1 taal dupliceren naar je nieuwe taal.
    Wat ik persoonlijk doe is de vertalingen in een XML-file opslaan Met SimpleXML en DOM en whatever kun je vanuit je CMS makkelijk muteren in dat soort bestanden, en de performance is over het algemeen een stuk beter als losse databasequeries. (aangezien ik de XML 1 keer parse en vervolgens het object bewaar. Dan wel zo min mogelijk gebruik maken van xpath queries, dat is redelijk zwaar).
    Mijn XML-bestand heeft een indeling als volgt:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <language>
        <config>
           Hier wat configuratieinstellingen voor de taal, zoals een foutmelding als er een vertaling niet gevonden is
        </config>

        <page name="home">
           <group name="headers">
               <constant name="kop">Welkom!</constant>
           </group>
           <group name="...">[...]</group>
           <constant name="blaat">Een vertaling mag ook buiten een groep staan, maar niet buiten een pagina</constant>
        </page>
        <page name="...">[...]</page>
    </language>

    Mijn languageklasse kun je vervolgens aanroepen met Language::t('home/headers/kop')

    [ Bericht 32% gewijzigd door Intrepidity op 29-06-2009 11:42:21 ]
      maandag 29 juni 2009 @ 12:06:56 #113
    58834 Catbert
    The evil HR Director.
    pi_70473789
    quote:
    Op maandag 29 juni 2009 11:30 schreef Intrepidity het volgende:
    Wat ik persoonlijk doe is de vertalingen in een XML-file opslaan Met SimpleXML en DOM en whatever kun je vanuit je CMS makkelijk muteren in dat soort bestanden, en de performance is over het algemeen een stuk beter als losse databasequeries. (aangezien ik de XML 1 keer parse en vervolgens het object bewaar. Dan wel zo min mogelijk gebruik maken van xpath queries, dat is redelijk zwaar).
    Als je het een keer inlaadt en dan in-memory bewaard is het performance verschil tussen DB of flat file natuurlijk niet erg boeiend, maar hou er rekening mee dat in normale gevallen (dus niet dat je info maar een maal nodig hebt) DB requests over het algemeen sneller zijn dan flat files lezen. Zelf vind ik het vanuit een ontwerpstandpunt erg slordig om dergelijke dynamische data op een andere plek op te slaan dan waar de rest van je spul zit. M.i. kies je ervoor 'alles' in een DB te stoppen, of 'alles' via XML files te doen.
    "[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
    pi_70475343
    quote:
    Op maandag 29 juni 2009 11:14 schreef Scorpie het volgende:
    Klopt. Maar ik bouw meestal een CMS waarbij ik de labels van de velden e.d vastleg in een file, en niet in de database. Dacht dat je dat bedoelde.
    Ik had het voornamelijk over dynamische teksten inderdaad

    Vaste teksten zet ik hard in de template, met een aparte template map per taal. Vind ik een stuk gemakkelijker werken dan met een los tekstbestand. Zo kan ik tenminste gewoon zien waar een tekst staan enzo. Bovendien kan je dan per taal nog wat wijzigen in de template, om een of andere reden willen mijn klanten dat altijd

    Wijzigingen in de template moet je in het slechtste geval een aantal keer doorvoeren, maar als je het goed doet kan het meeste via de CSS
    pi_70475417
    quote:
    Op maandag 29 juni 2009 11:30 schreef Intrepidity het volgende:
    aangezien ik de XML 1 keer parse en vervolgens het object bewaar.
    Dit begrijp ik niet helemaal. Je laadt de hele XML (met *alle* tekst) 1x per pageload in?
    Of stop je het ding in een sessie ofzo?

    In het eerste geval lijkt me dat niet zo efficient als je een grote site hebt namelijk
    pi_70475473
    quote:
    Op maandag 29 juni 2009 13:01 schreef Xcalibur het volgende:

    [..]

    Ik had het voornamelijk over dynamische teksten inderdaad

    Vaste teksten zet ik hard in de template, met een aparte template map per taal. Vind ik een stuk gemakkelijker werken dan met een los tekstbestand. Zo kan ik tenminste gewoon zien waar een tekst staan enzo. Bovendien kan je dan per taal nog wat wijzigen in de template, om een of andere reden willen mijn klanten dat altijd

    Wijzigingen in de template moet je in het slechtste geval een aantal keer doorvoeren, maar als je het goed doet kan het meeste via de CSS
    Nou ja, wat ik altijd vervelend vind is generieke teksten zoals Gebruiker / Login - Loguit enzo te moeten vervangen. Dat doe ik liever op 1 plek dan op meerdere. Maar ja das natuurlijk persoonsgebonden.
    pi_70476271
    quote:
    Op maandag 29 juni 2009 13:03 schreef Xcalibur het volgende:

    [..]

    Dit begrijp ik niet helemaal. Je laadt de hele XML (met *alle* tekst) 1x per pageload in?
    Of stop je het ding in een sessie ofzo?

    In het eerste geval lijkt me dat niet zo efficient als je een grote site hebt namelijk
    Zo werkt dat nou eenmaal met methoden als SimpleXML. Bij het laden hiervan wordt de hele XML file geparsed en omgezet naar een object. Ik zorg dat dat object statisch blijft in de hele applicatie en dus maar 1 maal geparsed wordt per paginaverzoek. Eventueel kun je dat object zelfs nog cachen als je graag op performance let.
    pi_70476317
    quote:
    Op maandag 29 juni 2009 12:06 schreef Catbert het volgende:

    [..]

    Als je het een keer inlaadt en dan in-memory bewaard is het performance verschil tussen DB of flat file natuurlijk niet erg boeiend, maar hou er rekening mee dat in normale gevallen (dus niet dat je info maar een maal nodig hebt) DB requests over het algemeen sneller zijn dan flat files lezen. Zelf vind ik het vanuit een ontwerpstandpunt erg slordig om dergelijke dynamische data op een andere plek op te slaan dan waar de rest van je spul zit. M.i. kies je ervoor 'alles' in een DB te stoppen, of 'alles' via XML files te doen.
    Ik noem vertalingen van teksten niet dynamisch hoor.. Het gaat hier om teksten die eenmaal ingevoerd worden en hooguit een jaartje later wat geupdate worden. Dynamische data als nieuwsberichten zet ik gewoon in hun eigen tabel, dus titel_nl, titel_en kolommen, etc.
      maandag 29 juni 2009 @ 14:18:36 #119
    58834 Catbert
    The evil HR Director.
    pi_70478107
    quote:
    Op maandag 29 juni 2009 13:26 schreef Intrepidity het volgende:
    Zo werkt dat nou eenmaal met methoden als SimpleXML. Bij het laden hiervan wordt de hele XML file geparsed en omgezet naar een object. Ik zorg dat dat object statisch blijft in de hele applicatie en dus maar 1 maal geparsed wordt per paginaverzoek. Eventueel kun je dat object zelfs nog cachen als je graag op performance let.
    Euh, als het 'statisch' over heel de applicatie is, dan wordt het toch sowieso niet eens per pagina ingelezen? Ik snap dat het in PHP wat ingewikkelder is dan in .Net bijvoorbeeld maar dat kan je toch via shared geheugen oplossen?
    "[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
    pi_70478179
    quote:
    Op maandag 29 juni 2009 13:04 schreef Scorpie het volgende:

    [..]

    Nou ja, wat ik altijd vervelend vind is generieke teksten zoals Gebruiker / Login - Loguit enzo te moeten vervangen. Dat doe ik liever op 1 plek dan op meerdere. Maar ja das natuurlijk persoonsgebonden.
    Ja, ik heb ook een tijd met een tekstbestand per taal gewerkt, maar dat vond ik toch maar onhandig... vooral omdat je geen goed overzicht hebt waar je nou iets aan het wijzigen bent... En als je 1 tekst als Login wilt vervangen, maar alle andere niet is de kans dat het fout gaat wel aanzienlijk

    Maar ja, ieder z'n voorkeur


    Verder: die hele XML iedere pageload inladen lijkt me knap inefficient?
    pi_70481254
    Ik doe gewoon in php bestand met een array per pagina.
    pi_70485105
    quote:
    Op maandag 29 juni 2009 14:18 schreef Catbert het volgende:

    [..]

    Euh, als het 'statisch' over heel de applicatie is, dan wordt het toch sowieso niet eens per pagina ingelezen? Ik snap dat het in PHP wat ingewikkelder is dan in .Net bijvoorbeeld maar dat kan je toch via shared geheugen oplossen?
    Zoals het nu ingericht is (en dat zijn kleine klanten met weinig traffic) wordt die XML eens per request omgezet naar een SimpleXML object in PHP. Misschien bewaart .net dat soort objecten wel netjes voor je door middel van een viewstate of iets dergelijks (weinig verstand van .net), maar in PHP gebeurt dat zeker niet volautomatisch, en aangezien HTTP inherent stateless is is dat volgensmij ook niet eenvoudig toe te passen tenzij je caching technieken als memcache gaat inzetten.. Maar ik geef toe dat dat bij ons bedrijf door het gebrek aan heftige traffic nog geen issue is ook om dat soort optimalisaties toe te passen.. Die 0.001sec extra per request maakt met andere woorden geen drol uit.
    pi_70485496
    Toch lijkt een simpele database select me een HEEL stuk sneller dan een filesystem lookup + xml parse...
    Gaat echt heel erg tegen m'n gevoel in om het zo op te lossen iig
      dinsdag 30 juni 2009 @ 15:12:57 #124
    75592 GlowMouse
    l'état, c'est moi
    pi_70515561
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
      dinsdag 30 juni 2009 @ 15:30:42 #125
    187069 slacker_nl
    Sicko pur sang
    pi_70516129
    quote:
    Op dinsdag 30 juni 2009 15:12 schreef GlowMouse het volgende:
    http://www.php.net/releases/5_3_0.php

    Nu met goto
    xkcd ftw: http://nl2.php.net/goto
    In theory there is no difference between theory and practice. In practice there is.
      dinsdag 30 juni 2009 @ 15:33:00 #126
    75592 GlowMouse
    l'état, c'est moi
    pi_70516202
    quote:
    Op dinsdag 30 juni 2009 15:30 schreef slacker_nl het volgende:

    [..]

    xkcd ftw: http://nl2.php.net/goto
    http://xkcd.com/292/
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
    pi_70516216
    ik heb het gevoel dat goto iets heel ouderwets is?
    Ik zie het nut er ook niet zo van eerlijk gezegd...
      dinsdag 30 juni 2009 @ 17:37:46 #128
    67978 HenryHill
    Fake it 'till you make it
    pi_70520089
    quote:
    Op dinsdag 30 juni 2009 15:33 schreef GlowMouse het volgende:

    [..]

    http://xkcd.com/292/
    So this is how liberty dies... with thunderous applause.
    Truth? What's so great about the truth? Try lying for a change, it's the currency of the world
    pi_70521724
    quote:
    Op dinsdag 30 juni 2009 15:33 schreef Xcalibur het volgende:
    ik heb het gevoel dat goto iets heel ouderwets is?
    Ik zie het nut er ook niet zo van eerlijk gezegd...
    Heel ouderwets is nog een understatement. Ik zie er echt het nut niet van. Het wordt wel makkelijker om spaghetticode te schrijven, maar of je daar nou zo blij mee moet zijn...
    pi_70528335
    is het weer 1 april ofzo?
    Of is dit nu echt een feature?
      dinsdag 30 juni 2009 @ 22:33:17 #131
    75592 GlowMouse
    l'état, c'est moi
    pi_70529371
    quote:
    Op dinsdag 30 juni 2009 22:09 schreef Xcalibur het volgende:
    is het weer 1 april ofzo?
    Of is dit nu echt een feature?
    PHP heeft wat weg van C. Om de leercurve voor QBasicgebruikers minder stijl te maken, is deze feature toegevoegd.
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
    pi_70529925
    Serieus, GOTO, wtf.
      FOK!-Schrikkelbaas dinsdag 30 juni 2009 @ 22:49:29 #133
    1972 Swetsenegger
    Egocentrische Narcist
    pi_70530002
    goto. Handig in gebruik ook zonder regelnummers.
      dinsdag 30 juni 2009 @ 23:02:30 #134
    37634 wobbel
    Da WoBBeL King
    pi_70530527
    quote:
    Op zaterdag 27 juni 2009 23:50 schreef ssmm987 het volgende:

    [..]
    [ code verwijderd ]


    Bedankt, maar heb het toch met een mooie functie gedaan die een array uitpoept welke ik kan gebruiken
    Moet alleen nog ff zorgen dat ik extra parameters voor de URI kan meegeven.

    http://www.dumpzooi.nl/dedi/TEST.php


    Btw, over het GO TO gedoe....GO TO heb je toch alleen nodig als je iets hebt geprogrammeerd wat niet goed in elkaar steekt qua volgorde ofzo toch? Of ben ik nu heel dom aan het denken

    [ Bericht 18% gewijzigd door wobbel op 30-06-2009 23:07:48 ]
    pi_70530555
    quote:
    Op dinsdag 30 juni 2009 22:33 schreef GlowMouse het volgende:

    [..]

    PHP heeft wat weg van C. Om de leercurve voor QBasicgebruikers minder stijl te maken, is deze feature toegevoegd.
    Is dat echt de reden?
    Wtf... echt...
      dinsdag 30 juni 2009 @ 23:16:04 #136
    75592 GlowMouse
    l'état, c'est moi
    pi_70531025
    quote:
    Op dinsdag 30 juni 2009 23:03 schreef Xcalibur het volgende:

    [..]

    Is dat echt de reden?
    Wtf... echt...
    Ik denk het niet

    Maar goto wil je niet tegenkomen in een script dat je moet debuggen. De ene keer kun je het vervangen door een for-loop, de andere keer kom je een combinatie van 10 goto's tegen en mag jij uitzoeken waarom er soms een infinite loop is.
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
    pi_70531079
    Ik kan me eigenlijk ook geen praktisch nut voorstellen....
    De toevoeging ontgaat me daarom ook volledig

    Maar dat was inmiddels wel duidelijk denk ik
    pi_70536712
    quote:
    Op dinsdag 30 juni 2009 23:17 schreef Xcalibur het volgende:
    Ik kan me eigenlijk ook geen praktisch nut voorstellen....
    De toevoeging ontgaat me daarom ook volledig

    Maar dat was inmiddels wel duidelijk denk ik
    Het praktische nut staat uitgelegd op de pagina van PHP zelf: eenvoudig uit een loopje ontsnappen bijvoorbeeld. Maargoed, dat kan ook op een andere manier, dat wel.
      woensdag 1 juli 2009 @ 08:46:03 #139
    85919 Likkende_Lassie
    Doe eens wat aan je ondertitel
    pi_70536966
    Om nog even terug te komen op de vertalingen:
    Ik ga het houden op de database idd, maar dan de volgende vraag, ik heb zo nu en dan kleine woordjes door de php heen staan, hoe kan ik deze dan het beste vervangen, str_replace, of zoals ik nu doe, deze vervangen met een lang('welcome'); functie? Of, een lang(151); om gewoon het ID van het record in de db op te vragen?
      woensdag 1 juli 2009 @ 08:46:48 #140
    46383 Tiemie
    sowieso wel!
    pi_70536975
    Gevalletje taart hier voor de gene die goto durft te gebruiken.
    pi_70537496
    goto lijkt me ook weer vaag... het is een soort van dirty workaround in m'n ogen. oude dos commandos gebruikten goto.
    Redacted
    pi_70537545
    quote:
    Op woensdag 1 juli 2009 09:21 schreef cablegunmaster het volgende:
    goto lijkt me ook weer vaag... het is een soort van dirty workaround in m'n ogen. oude dos commandos gebruikten goto.
    Mjah, deze goto is alleen wel heel erg beperkt ten opzichte van de oude goto. Je kunt er dan ook weer niet alles mee .
      woensdag 1 juli 2009 @ 10:59:39 #143
    58834 Catbert
    The evil HR Director.
    pi_70540132
    quote:
    Op woensdag 1 juli 2009 09:24 schreef HuHu het volgende:
    Mjah, deze goto is alleen wel heel erg beperkt ten opzichte van de oude goto. Je kunt er dan ook weer niet alles mee .
    Inderdaad. Je kunt, thank god, niet uit een methode of van buiten een methode inspringen. Maar dan nog zie ik het gebeuren dat kansloze prutsers hun hele script een grote method maken van 5 pagina's met overal goto's.

    Ik heb tijdens m'n studie bij een webdesignbedrijfje gewerkt en daar hun CMS zitten restructuren. Geschreven door iemand die het heel goed bedoelde maar het eigenlijk niet zo goed begreep (search doen via een "select id where blabla" en dan elke row apart ophalen met een "select * where id = x). Als 'ie de mogelijkheid had gehad goto's te gebruiken was ik waarschijnlijk gillend weggelopen.
    "[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
    pi_70540369
    Je kunt natuurlijk wel de hele OO structuur van je applicatie weggooien en vervolgens alles met GOTO's gaan oplossen in één grote blob. Dus geen functies of methoden meer gebruiken, maar goto-en naar een label en de return waarde globaal zetten en dan weer terug goto-en enzo .
      woensdag 1 juli 2009 @ 11:11:34 #145
    187069 slacker_nl
    Sicko pur sang
    pi_70540491
    Maw, Fok gaat volledig over op goto statements
    In theory there is no difference between theory and practice. In practice there is.
    pi_70542168
    quote:
    Op woensdag 1 juli 2009 11:07 schreef HuHu het volgende:
    Je kunt natuurlijk wel de hele OO structuur van je applicatie weggooien en vervolgens alles met GOTO's gaan oplossen in één grote blob. Dus geen functies of methoden meer gebruiken, maar goto-en naar een label en de return waarde globaal zetten en dan weer terug goto-en enzo .
    The horror!
    pi_70542997
    quote:
    Op woensdag 1 juli 2009 11:07 schreef HuHu het volgende:
    Je kunt natuurlijk wel de hele OO structuur van je applicatie weggooien en vervolgens alles met GOTO's gaan oplossen in één grote blob. Dus geen functies of methoden meer gebruiken, maar goto-en naar een label en de return waarde globaal zetten en dan weer terug goto-en enzo .
    En dan door een variabele laten bepalen waar je naar terug gaat goto-en?
    pi_70543190
    tvp (beetje laat)
    The people who lost my respect will never get a capital letter for their name again.
    Like trump...
    pi_70543310
    quote:
    Op woensdag 1 juli 2009 12:28 schreef Light het volgende:

    [..]

    En dan door een variabele laten bepalen waar je naar terug gaat goto-en?
    Uiteraard. Met zo'n mooie if-elseif-else constructie:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php
    doeIetsLeuks
    :

    // lala
    $c $a $b// allemaal globaal

    // We zijn klaar, waar gaan we nu naar terug?
    if ($gaTerugNaar == 'start')
      
    goto start;
    elseif (
    $gaTerugNaar == 'gevangenis')
      
    goto gevangenis;
    elseif (
    $gaTerugNaar == 'school')
      
    goto school;
    else
      
    goto einde;
    ?>


    Ik weet nog wat leuks! Een goto-stack :9~. Dan kun je meerdere goto's stacken, waarbij elke goto wordt uitgevoerd totdat je een ander label tegenkomt en dan vind er een automagische goto plaats:

    1
    2
    3
    <?php
    goto a
    bc;
    ?>
      woensdag 1 juli 2009 @ 12:44:37 #150
    14612 _GdR_
    3.1415926536
    pi_70543475
    Hallo,

    Ik weet niet of mijn vraag hier op de juiste plek staat. maar mocht iemand het weten geef me een antwoord pls.

    Heb sinds kort een server in de meterkast gestampt. En die werkt naar behoren (op een paar kleinigheidjes na dan.) Maar hij is gewoon bereikbaar via mijn publieke ipadres enzo. apache en sql draaien gewoon. Alleen ik kan opeens niet meer bij mn phpmyadmin komen. Terwijl dit eerst wel werkte. Iemand enig idee waar ik daar iets voor moet instellen?

    Het is btw een linux ubuntu install. (en ik snap geen ruk van linux. )


    -edit-

    is er trouwens gewoon een UI van apache/sql/php etc? zoals bij WAMP en MAMP (mac)?
    Out! out! flapoor your father! | DaFan's moeder
    pi_70545193
    "opeens"?

    Wat heb je veranderd, en wat krijg je voor foutmelding?
    abonnement Unibet Coolblue Bitvavo
    Forum Opties
    Forumhop:
    Hop naar:
    (afkorting, bv 'KLB')