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..
    abonnement Unibet Coolblue Bitvavo
    Forum Opties
    Forumhop:
    Hop naar:
    (afkorting, bv 'KLB')