abonnement Unibet Coolblue
  zondag 26 juli 2009 @ 23:52:42 #1
75592 GlowMouse
l'état, c'est moi
pi_71353744

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, 71, 72, 73, 74,

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
  • eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
      zondag 26 juli 2009 @ 23:53:23 #2
    110933 F4T4L_3RR0R
    R.I.P. webicon ;(
    pi_71353760
    quote:
    Op zondag 26 juli 2009 23:19 schreef Roönaän het volgende:

    [..]

    Bedenk even dat je de boel ook nog door time() moet halen..
    Ow jee, denk dat ik nu heel veel moet lezen...
    Een ballonvaarder die door de mand valt is nooit grappig...
      maandag 27 juli 2009 @ 00:15:30 #3
    75592 GlowMouse
    l'état, c'est moi
    pi_71354249
    quote:
    Op zondag 26 juli 2009 23:53 schreef F4T4L_3RR0R het volgende:

    [..]

    Ow jee, denk dat ik nu heel veel moet lezen...
    Je kunt het natuurlijk ook gewoon hier vragen!
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
    pi_71354293
    tvp
      maandag 27 juli 2009 @ 00:24:54 #5
    110933 F4T4L_3RR0R
    R.I.P. webicon ;(
    pi_71354425
    quote:
    Op maandag 27 juli 2009 00:15 schreef GlowMouse het volgende:

    [..]

    Je kunt het natuurlijk ook gewoon hier vragen!
    Bij deze!

    Ik hoef niet alles voorgekauwd te hebben hoor, maar een duwtje in de goede richting kan geen kwaad.

    $string = "bla bla bla bla 13:12 bla bla bla"

    Hoe vis ik daar de tijd uit zonder te exploden of substr te gebruiken?
    Een ballonvaarder die door de mand valt is nooit grappig...
    pi_71354476
    quote:
    Op maandag 27 juli 2009 00:17 schreef LeNick het volgende:
    tvp
      maandag 27 juli 2009 @ 00:31:01 #7
    84926 WyriHaximus
    Release the hounds smithers!
    pi_71354531
    quote:
    Op maandag 27 juli 2009 00:24 schreef F4T4L_3RR0R het volgende:

    [..]

    Bij deze!

    Ik hoef niet alles voorgekauwd te hebben hoor, maar een duwtje in de goede richting kan geen kwaad.

    $string = "bla bla bla bla 13:12 bla bla bla"

    Hoe vis ik daar de tijd uit zonder te exploden of substr te gebruiken?
    Succes: http://nl2.php.net/manual/en/book.pcre.php
    phluphy for president!
      maandag 27 juli 2009 @ 00:37:00 #8
    110933 F4T4L_3RR0R
    R.I.P. webicon ;(
    pi_71354663
    Kan het ook met sscanf of strtotime in plaats van regex?
    Een ballonvaarder die door de mand valt is nooit grappig...
    pi_71356574
    tvp
    Just say hi!
      maandag 27 juli 2009 @ 08:02:02 #10
    63192 ursel
    "Het Is Hier Fantastisch!
    pi_71356661
    quote:
    Op maandag 27 juli 2009 00:27 schreef DirkZz het volgende:

    [..]
    pi_71361863
    Ik ook maar weer ff
      maandag 27 juli 2009 @ 12:45:01 #12
    84244 Scorpie
    Abject en infaam!
    pi_71361991
    tvp
    Op dinsdag 13 augustus schreef Xa1pt:
    Neuh, fraude mag best aangepakt worden. Maar dat het de maatschappij meer oplevert of beter is voor de samenleving, is nog maar de vraag.
    Op donderdag 25 juni 2015 schreef KoosVogels:
    Klopt. Ik ben een racist.
      maandag 27 juli 2009 @ 17:49:05 #13
    110933 F4T4L_3RR0R
    R.I.P. webicon ;(
    pi_71371138
    Kan iemand mij verder op pad helpen met de tijd uit een $ halen en in een nieuwe $ te zetten? (zonder gebruik te maken van regex)
    Een ballonvaarder die door de mand valt is nooit grappig...
    pi_71373563
    quote:
    Op maandag 27 juli 2009 17:49 schreef F4T4L_3RR0R het volgende:
    Kan iemand mij verder op pad helpen met de tijd uit een $ halen en in een nieuwe $ te zetten? (zonder gebruik te maken van regex)
    Dus zonder regex, zonder explode en zonder substr?
      maandag 27 juli 2009 @ 19:27:22 #15
    110933 F4T4L_3RR0R
    R.I.P. webicon ;(
    pi_71373661
    quote:
    Op maandag 27 juli 2009 19:24 schreef Roönaän het volgende:

    [..]

    Dus zonder regex, zonder explode en zonder substr?
    Juist.

    Sscanf en strtotime zijn al aangedragen als mogelijke oplossingen, maar ik kom daar niet uit.
    Een ballonvaarder die door de mand valt is nooit grappig...
      maandag 27 juli 2009 @ 20:12:23 #16
    85514 ralfie
    !Yvan eht nioj
    pi_71375129
    geen regex kan ik me voorstellen, maar waarom zou je in godesnaam geen explode of zelfs substr willen gebruiken ??
      maandag 27 juli 2009 @ 20:15:30 #17
    75592 GlowMouse
    l'état, c'est moi
    pi_71375216
    Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
      maandag 27 juli 2009 @ 20:35:32 #18
    110933 F4T4L_3RR0R
    R.I.P. webicon ;(
    pi_71375865
    quote:
    Op maandag 27 juli 2009 20:12 schreef ralfie het volgende:
    geen regex kan ik me voorstellen, maar waarom zou je in godesnaam geen explode of zelfs substr willen gebruiken ??
    De datum kan 1-1-2009 zijn maar soms ook 01-01-2009. Zelfde met de tijd, deze kan 9:00 of 09:00 zijn. Substr is dan niet mogelijk.
    Een ballonvaarder die door de mand valt is nooit grappig...
      FOK!-Schrikkelbaas maandag 27 juli 2009 @ 20:36:00 #19
    1972 Swetsenegger
    Egocentrische Narcist
    pi_71375879
    1
    2
    3
    4
    5
    6
    <?php
    if($price<$artikel[$row['artId']]['prijs'] || !isset($artikel[$row['artId']]['prijs'])){
       
    $artikel[$row['artId']]['prijs']=$price;
    }
    echo 
    $row['artId'].' '.$price.'&nbsp;'.$artikel[$row['artId']]['prijs'].'<br />';
    ?>


    1
    2
    3
    4
    1 19,99 19,99
    3 14,95 14,95
    3 9,95  9,95
    3 14,95 14,95


    wtf ik verwacht

    1
    2
    3
    4
    1 19,99 19,99
    3 14,95 14,95
    3 9,95  9,95
    3 14,95 9,95
    pi_71379073
    Tja dit is blijkbaar een stukje uit een loop waar ergens wat fout gaat. Moeilijk te zeggen zonder de hele loop erbij. Ik gok dat $artikel ergens overschreven wordt waar jij het blijkbaar niet verwacht.
    Wil iedereen die in telekinese gelooft nu mijn hand op steken?
    | Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
      FOK!-Schrikkelbaas maandag 27 juli 2009 @ 22:51:54 #21
    1972 Swetsenegger
    Egocentrische Narcist
    pi_71380230
    nee, blijkbaar gaat het vergelijken van een float in een string niet goed. Omdat ik het in de database toch als centen opsla, laat ik de number_format er nu pas na het vergelijk op los en dat werkt zoals verwacht.

    995 is blijkbaar wel kleiner dan 1495, maar 9,95 is blijkbaar niet kleiner dan 14,95.
    pi_71380525
    quote:
    Op maandag 27 juli 2009 20:15 schreef GlowMouse het volgende:
    Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.
    Maar wat Fatal_error wil, kan heel goed met een regex. En dat wordt dan geen ingewikkelde regex.
    pi_71380633
    quote:
    Op maandag 27 juli 2009 22:51 schreef Swetsenegger het volgende:
    nee, blijkbaar gaat het vergelijken van een float in een string niet goed. Omdat ik het in de database toch als centen opsla, laat ik de number_format er nu pas na het vergelijk op los en dat werkt zoals verwacht.

    995 is blijkbaar wel kleiner dan 1495, maar 9,95 is blijkbaar niet kleiner dan 14,95.
    Als die eerste twee (995 en 1495) getallen zijn, dan klopt het dat 995 < 1495. En die laatste twee zijn vast strings, dan is 9 > 1 en dus 9,95 > 14,95.
    pi_71381516
    quote:
    Op maandag 27 juli 2009 22:51 schreef Swetsenegger het volgende:
    nee, blijkbaar gaat het vergelijken van een float in een string niet goed.
    Ja dan vraag je ook wel om problemen eigenlijk
    Altijd eerst berekeningen uitvoeren, en pas op het allerlaatst omzetten naar tekst.
    Wil iedereen die in telekinese gelooft nu mijn hand op steken?
    | Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
      maandag 27 juli 2009 @ 23:33:51 #25
    110933 F4T4L_3RR0R
    R.I.P. webicon ;(
    pi_71381526
    quote:
    Op maandag 27 juli 2009 23:00 schreef Light het volgende:

    [..]

    Maar wat Fatal_error wil, kan heel goed met een regex. En dat wordt dan geen ingewikkelde regex.
    Heb op aanraden (don't ask why) al zoveel mogelijk regex vervangen door alternatieven.

    Maar ben toch benieuwd naar de regex oplossing.

    Is het trouwens ook mogelijk om met een simpele regex de eerste 2 en de laatste regel (newline) uit een $ te halen? Heb nu dit, wat best wel ingewikkeld is en uit "veel" regels bestaat:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
            
    function striphtml($trimmed)
            {
            
    $arrhtml explode("\n"$trimmed);
            
    $resulthtml = array();

            for (
    $ihtml 2$sizehtml count($arrhtml); $ihtml < ($sizehtml 1); $ihtml++) {
                
    $resulthtml[] = $arrhtml[$ihtml];
                }

            return 
    $resulthtml;
            }

            
    $clean implode("\n"striphtml($trimmed));
    ?>
    Een ballonvaarder die door de mand valt is nooit grappig...
    pi_71381694
    quote:
    Op maandag 27 juli 2009 23:33 schreef F4T4L_3RR0R het volgende:

    [..]

    Heb op aanraden (don't ask why) al zoveel mogelijk regex vervangen door alternatieven.

    Maar ben toch benieuwd naar de regex oplossing.
    1
    2
    3
    <?php
    $regex 
    '/(\d{1,2})-(\d{1,2})-(\d{4})\s+(\d{1,2}):(\d{2})/';
    ?>

    1 of 2 cijfers voor dag, 1 of 2 cijfers voor maand, 4 cijfers voor jaar, dan ten minste 1 spatie (of tab), 1 of 2 cijfers voor uur en 2 cijfers voor minuten.
      maandag 27 juli 2009 @ 23:49:26 #27
    110933 F4T4L_3RR0R
    R.I.P. webicon ;(
    pi_71382000
    De datum heb ik niet nodig he.
    Een ballonvaarder die door de mand valt is nooit grappig...
      dinsdag 28 juli 2009 @ 01:52:42 #28
    110933 F4T4L_3RR0R
    R.I.P. webicon ;(
    pi_71384333
    Heb het toch maar met explode en substr gedaan...
    Een ballonvaarder die door de mand valt is nooit grappig...
    pi_71385317
    Bizar die newline code.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
            function striphtml($trimmed)
            {
            $arrhtml = explode("\n", $trimmed);
            $resulthtml = array();

            for ($ihtml = 2, $sizehtml = count($arrhtml); $ihtml < ($sizehtml - 1); $ihtml++) {
                $resulthtml[] = $arrhtml[$ihtml];
                }

            return $resulthtml;
            }

            $clean = implode("\n", striphtml($trimmed));
    ?>

    Kan toch gewoon als
    1
    2
    3
    4
    5
    6
    7
    <?php
            function striphtml($trimmed) {
               return array_slice(explode("\n", $trimmed), 2);
            }

            $clean = implode("\n", striphtml($trimmed));
    ?>

    Raar ook dat een striphtml geen tags weghaald of iets anders html gerelateerds doet.

    Voor de tijd:

    1
    2
    3
    4
    5
    6
    <?php
    if(preg_match('/([01]?[0-9]|2[0-4]):[0-5][0-9]/', $string, $m)) {
       $time = $m[0];
    } else {
      // geen tijd gevonden
    }
      FOK!-Schrikkelbaas dinsdag 28 juli 2009 @ 08:14:36 #30
    1972 Swetsenegger
    Egocentrische Narcist
    pi_71385610
    quote:
    Op maandag 27 juli 2009 23:33 schreef SuperRembo het volgende:

    [..]

    Ja dan vraag je ook wel om problemen eigenlijk
    Altijd eerst berekeningen uitvoeren, en pas op het allerlaatst omzetten naar tekst.
    Ja dat bedacht ik me ook toen ik de vreemde resultaten zag
    pi_71386545
    quote:
    Op dinsdag 28 juli 2009 07:21 schreef Roönaän het volgende:

    Voor de tijd:
    [ code verwijderd ]
    Die is nog netter inderdaad
    pi_71398976
    Ook ik heb weer een vraagje; ik zal eerst de opzet van mijn database even laten zien.

    1
    2
    3
    4
    5
    6
    7
    user_id - top_id - nummer - getal
    0         -      55    -     15    - 1
    0         -      55    -     25    - 2
    0         -      55    -     35    - 3
    0         -      55    -     45    - 4
    0         -      55    -     55    - 5
    1         -      55    -     35    - 7


    Nu ben ik bezig om een query te maken die het volgende kan uitlezen.

    Alles van gebruiker 1 en 0 alleen als gegevens van gebruiker 1 bestaat moet dat van gebruiker 0 niet zichtbaar zijn. (verduidelijking in voorbeeld).

    Uitkomst van de query moet dus zijn
    1
    2
    3
    4
    5
    6
    0         -      55    -     15    - 1
    0         -      55    -     25    - 2

    0         -      55    -     45    - 4
    0         -      55    -     55    - 5
    1         -      55    -     35    - 7


    Daar waar je een witte enter ziet zie je het verschil.

    Ik gebruik nu deze query
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT *
    FROM testtabel
    WHERE confectie_id = '" . substr($_POST['test'], 1, strlen($_POST['maat']) -1) . "'
    AND  (user_id      = '" . $_POST['user'] . "'
    OR    user_id      = '0')
    AND nummer IN ('" . implode("','", array_keys($noemers)) . "')
    GROUP BY user_id, nummer
    ORDER BY user_id


    Anyone?
    Just say hi!
      dinsdag 28 juli 2009 @ 16:10:14 #33
    75592 GlowMouse
    l'état, c'est moi
    pi_71399349
    n/m
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
    pi_71400286
    Ik snap niet wat je bedoelt Chandler
    pi_71407077
    Kan je niet gewoon sorteren en dan een limit 1 toevoegen?
    pi_71417819
    Omg, wat ben ik toch slecht in uitleggen

    @Roonaan; helaas dat werkt niet, wel als ik zou limieten op het aantal stuks. Wat ik wel kan doen is gewoon alles uitlezen van gebruiker 0 en eventueel de geselecteerde gebruiker en dan alles wat er wel bestaat voor de geselecteerde gebruiker gebruiken ipv wat er staat voor gebruiker 0.

    Ik zal deze ochtend even beter nadenken over hoe ik het beter kan uitleggen!
    Just say hi!
    pi_71435915
    Wat is "gebruiker 0", zijn dat je default setting oid?
      woensdag 29 juli 2009 @ 19:07:54 #38
    110933 F4T4L_3RR0R
    R.I.P. webicon ;(
    pi_71436586
    quote:
    Op dinsdag 28 juli 2009 07:21 schreef Roönaän het volgende:
    Bizar die newline code.
    [ code verwijderd ]

    Kan toch gewoon als
    [ code verwijderd ]

    Raar ook dat een striphtml geen tags weghaald of iets anders html gerelateerds doet.

    Voor de tijd:
    [ code verwijderd ]
    Die voor de tijd werkt voortreffelijk! Wat gebeurd er trouwens als er 2 keer een tijdvermelding in staat? Net getest, dan geeft hij de eerst gevonden tijd door. Maar dit kan geen fouten veroorzaken?

    Is er ook iets waardoor hij 123:45 of 12:345 niet als tijd mag herkennen? Een : achter de tijd moet juist wel weer kunnen: 12:34:56, waarbij hij 12:34 moet weergeven.

    Die newline code is onderdeel van een soort HTML parser. Het script krijgt een e-mail te verwerken, en moet daar de plain text gedeelte uithalen.

    Wat overblijft is:
    quote:
    charset="iso-8859-1"
    Content-Transfer-Encoding: 8bit

    Inhoud mailtje

    ----NextPart_048F8BC8A2197DE2036A
    Daar moet hij de eerste twee regels en de laatste regel verwijderen.

    Dat doe ik nu dus met het volgende:

    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
    <?php
        
    if (stripos($headers"boundary=") !== false) {

            
    $splitplain explode("Content-Type: text/plain;"$message);
            
    $splithtml explode("Content-Type: text/html;"$splitplain[1]);
            
    $trimmed trim($splithtml[0]);

            function 
    striphtml($trimmed)
            {
            
    $arrhtml explode("\n"$trimmed);
            
    $resulthtml = array();

            for (
    $ihtml 2$sizehtml count($arrhtml); $ihtml < ($sizehtml 1); $ihtml++) {
                
    $resulthtml[] = $arrhtml[$ihtml];
                }

            return 
    $resulthtml;
            }

            
    $clean implode("\n"striphtml($trimmed));

        } else {

            
    $clean $message;
        }

            
    $body trim(str_replace(array("=\n""=20""=3D"), array("""""="), $clean));
    ?>


    Als er "boundary=" in de headers staat, is het mailtje in HTML opgemaakt en moet deze schoongemaakt worden.

    Eerst split hij 'm op "Content-Type: text/plain;". Alles wat daaronder zit moet ik hebben.
    Vervolgens split hij 'm op "Content-Type: text/html;". Alles wat doorboven zit moet ik hebben.
    Vervolgens trim ik het resultaat.

    Daarna ga ik met het for-loopje de inhoud splitten op newlines. De array geeft de inhoud, met uitzondering van de eerste 2 regels en de laatste regel terug.

    Dan implode ik de array met de inhoud die ik over wil houden.

    Als er geen "boundary=" in de headers staan, dan is het mailtje in plain text opgesteld en hoeft er niets te worden schoongemaakt.

    [ Bericht 2% gewijzigd door F4T4L_3RR0R op 29-07-2009 22:02:16 ]
    Een ballonvaarder die door de mand valt is nooit grappig...
      woensdag 29 juli 2009 @ 22:23:28 #39
    110933 F4T4L_3RR0R
    R.I.P. webicon ;(
    pi_71442759
    Toevoeging:

    Dat array_slice werkt ook voortreffelijk.

    Moest wel een kleine aanpassing doen:
    quote:
    function striphtml($trimmed) {
    return array_slice(explode("\n", $trimmed), 2, -1);
    }

    $clean = implode("\n", striphtml($trimmed));
    (-1 toegevoegd)
    Een ballonvaarder die door de mand valt is nooit grappig...
      woensdag 29 juli 2009 @ 22:52:08 #40
    110933 F4T4L_3RR0R
    R.I.P. webicon ;(
    pi_71443869
    Heb de "html parser" nu zo:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php
        
    if (stripos($headers"boundary=") !== false) {

            
    $splitplain explode("Content-Type: text/plain;"$message);
            
    $splithtml explode("Content-Type: text/html;"$splitplain[1]);
            
    $trimmed trim($splithtml[0]);
            
    $slicedmail array_slice(explode("\n"$trimmed), 2, -1);
            
    $clean implode("\n"$slicedmail);

        } else {

            
    $clean $message;
        }

            
    $body trim(str_replace(array("=\n""=20""=3D"), array("""""="), $clean));
    ?>


    Een ballonvaarder die door de mand valt is nooit grappig...
    pi_71444957
    Is het niet handiger om met een van de mime classes te werken uit de PEAR repository, of zit daar geen multipart mime parser tussen?
      woensdag 29 juli 2009 @ 23:43:15 #42
    110933 F4T4L_3RR0R
    R.I.P. webicon ;(
    pi_71445581
    Geen idee, vind het zo prima werken.

    Zojuist weer een regel code minder, door $trimmed weg te laten en de trim elders toe te passen:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
        
    if (stripos($headers"boundary=") !== false) {

            
    $splitplain explode("Content-Type: text/plain;"$message);
            
    $splithtml explode("Content-Type: text/html;"$splitplain[1]);
            
    $slicedmail array_slice(explode("\n"trim($splithtml[0])), 2, -1);
            
    $clean implode("\n"$slicedmail);

        } else {

            
    $clean $message;
        }

            
    $body trim(str_replace(array("=\n""=20""=3D"), array("""""="), $clean));
    ?>
    Een ballonvaarder die door de mand valt is nooit grappig...
    pi_71448868
    quote:
    Op woensdag 29 juli 2009 18:42 schreef Roönaän het volgende:
    Wat is "gebruiker 0", zijn dat je default setting oid?
    Je moet het zien als dat er allemaal vaste gegevens zijn per top_id/nummer, als een gebruiker een van deze gegevens aanpast wil ik alle 'vaste' gegevens die niet veranderd zijn maar ook de gegevens die wel veranderd zijn. En na dit alles wil ik de veranderde gegevens met het zelfde nummer (top_id/nummer) overschrijven over de top_id/nummer van gebruiker 0, zodat deze wegvalt.

    vb:
    1
    2
    3
    4
    5
    6
    0 - 10 - 1 - 100
    1 - 10 - 1 - 101
    0 - 10 - 2 - 100
    0 - 10 - 3 - 100
    0 - 10 - 4 - 100
    1 - 10 - 4 - 99


    nu moet ik dus een query maken die het volgende uitleest. (ALLES VAN gebruiker 0 OF 1 maar 1 overschrijft data van gebruiker 0)

    1
    2
    3
    4
    1 - 10 - 1 - 101
    0 - 10 - 2 - 100
    0 - 10 - 3 - 100
    1 - 10 - 4 - 99


    hopelijk is het iets duidelijker! :D
    Just say hi!
    pi_71472726
    Ik moet voor mijn website een text (ingevuld in een form) vergelijken met woorden in een database. De database heeft best een aardige lijst met woorden en een text kan eventueel best aardig van formaat worden. Het opbreken van de tekst in losse woorden en deze 1 voor 1 afzetten tegen de database is even de enige methode die ik kan bedenken om dit te doen. Het lijkt me echter niet echt een efficiente methode. Iemand een idee hoe dit sneller/efficienter kan?
    ウプピエ 八十三 &lt;&lt; u-pu-pi-e hachi-ju-san, ik denk ik zeg het er maar ff bij :P
      donderdag 30 juli 2009 @ 22:09:07 #45
    75592 GlowMouse
    l'état, c'est moi
    pi_71472948
    SELECT count(*) FROM tbl WHERE woord IN( 'woord in tekst', 'ander woord in tekst', ..)

    Index op woord en kijken of de snelheid acceptabel is.
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
      vrijdag 31 juli 2009 @ 01:01:50 #46
    110933 F4T4L_3RR0R
    R.I.P. webicon ;(
    pi_71478292
    Is het mogelijk om de volgende code aan meer eisen te laten voldoen?

    1
    2
    3
    <?php
    preg_match
    ('/([01]?[0-9]|2[0-4]):[0-5][0-9]/'$string$m)
    ?>


    Wat ik graag wil, is dat er een spatie voor de tijd moet staan, en een spatie of : achter de tijd moet staan. De spaties of : mogen echter niet in $m gezet worden.
    Een ballonvaarder die door de mand valt is nooit grappig...
      vrijdag 31 juli 2009 @ 01:06:31 #47
    75592 GlowMouse
    l'état, c'est moi
    pi_71478372
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
      vrijdag 31 juli 2009 @ 01:24:15 #48
    110933 F4T4L_3RR0R
    R.I.P. webicon ;(
    pi_71478604
    quote:
    Op vrijdag 31 juli 2009 01:06 schreef GlowMouse het volgende:
    Ja hoor, dat is mogelijk. Zie http://nl3.php.net/manual/en/reference.pcre.pattern.syntax.php
    Dat is helemaal nieuw voor mij, wel even slikken.

    De verplichte spatie heb ik nu zo gedaan:

    1
    2
    3
    <?php
    preg_match
    ('/\s([01]?[0-9]|2[0-4]):[0-5][0-9]\s/'$body$m);
    ?>


    Edit: maar dan neemt hij de spaties wel mee in $m.

    Nu nog even uitzoeken hoe ik de : toe kan voegen als verplichting (als er geen spatie staat) aan het einde van de tijd.
    Een ballonvaarder die door de mand valt is nooit grappig...
      vrijdag 31 juli 2009 @ 01:37:13 #49
    75592 GlowMouse
    l'état, c'est moi
    pi_71478761
    Gebruik haakjes en kijk wat het effect is op print_r($m).
    En het is óf een spatie óf een :, en voor de of is er ook een regex meta-character.
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
    pi_71480154
    quote:
    Op vrijdag 31 juli 2009 01:24 schreef F4T4L_3RR0R het volgende:

    [..]

    Dat is helemaal nieuw voor mij, wel even slikken.

    De verplichte spatie heb ik nu zo gedaan:
    [ code verwijderd ]

    Edit: maar dan neemt hij de spaties wel mee in $m.

    Nu nog even uitzoeken hoe ik de : toe kan voegen als verplichting (als er geen spatie staat) aan het einde van de tijd.
    Moet je even $m[1] gebruiken ipv $m[0].
      vrijdag 31 juli 2009 @ 22:02:03 #51
    74523 BaggerUser
    ModderFokker!
    pi_71502199
    Database vraagje..

    Ik heb een database met simpel gezegd

    medewerkers (500+/-)
    afdelingen (60 +/-)
    melding (stuk of 10 +/-)

    een meldingen kan voor 1 of meerdere afdeling gelden en dus ook bekeken worden via verschillende afdelingen.

    een buitenstaander kan via elke afdeling een melding zien via een medewerker (een melding is verder niet gekoppeld aan een gebruiker, alleen op het moment van bekijken wordt er een getal opgehoogd bij de medewerker.)

    Nu wil ik per dag gaan bijhouden hoe vaak een melding is bekeken door een buitenstaander gekoppeld aan de gebruiker en via welke afdeling (dus dat ik van de afgelopen 7 dagen, en als het haalbaar is van de afgelopen maand hoevaak dat is)

    nu komt de grap, zo'n melding kan soms wel 50.000 keer op een dag bekeken worden per gebruiker. Hoe krijg ik dat een beetje normaal in de database?
    De enige echte BaggerUser!
    Riemen
    fiets kopen
      vrijdag 31 juli 2009 @ 22:10:04 #52
    75592 GlowMouse
    l'état, c'est moi
    pi_71502429
    500*50.000/dag is niks, kun je mooi een tabel mee vullen. Beetje letten op je datatypes (medewerkerID unsigned smallint/2 bytes, afdelingID unsigned tinyint/1 byte, meldingID unsigned mediumint 2 bytes, dag date 3 bytes), zit je op 200 MB aan data per dag. Plus indices die erbij komen. Kan je prima een maand bijhouden.

    Of als je de tijdstippen niet interesseer, tabel aanmaken met medewerker|afdeling|melding|views, UNIQUE op de eerste drie kolommen en dan views ophogen via INSERT ... IF EXISTS UPDATE ofzo.
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
      vrijdag 31 juli 2009 @ 22:16:07 #53
    74523 BaggerUser
    ModderFokker!
    pi_71502579
    quote:
    Op vrijdag 31 juli 2009 22:10 schreef GlowMouse het volgende:
    500*50.000/dag is niks, kun je mooi een tabel mee vullen. Beetje letten op je datatypes (medewerkerID unsigned smallint/2 bytes, afdelingID unsigned tinyint/1 byte, meldingID unsigned mediumint 2 bytes, dag date 3 bytes), zit je op 200 MB aan data per dag. Plus indices die erbij komen. Kan je prima een maand bijhouden.
    500*50.000 zou inderdaad kunnen, maar is het niet slimmer om per medewerkers (500+/-) per afdelingen (60 +/-) per melding (stuk of 10 +/-) (=maximaal 300.000 entries per dag) een teller bij te houden?

    of is het opvragen en vervolgens ophogen van deze gegevens zwaarder voor de database?
    De enige echte BaggerUser!
    Riemen
    fiets kopen
      vrijdag 31 juli 2009 @ 22:18:42 #54
    74523 BaggerUser
    ModderFokker!
    pi_71502658
    quote:
    Op vrijdag 31 juli 2009 22:10 schreef GlowMouse het volgende:
    Of als je de tijdstippen niet interesseer, tabel aanmaken met medewerker|afdeling|melding|views, UNIQUE op de eerste drie kolommen en dan views ophogen via INSERT ... IF EXISTS UPDATE ofzo.
    Dat + datum erbij dus, lijkt me het minst zwaarst voor de database
    De enige echte BaggerUser!
    Riemen
    fiets kopen
      vrijdag 31 juli 2009 @ 22:25:52 #55
    75592 GlowMouse
    l'état, c'est moi
    pi_71502872
    Oh, die 500 is per afdeling. Dan medewerker|afdeling|melding|datum|views inderdaad. Views zal wel niet meer passen in 2 bytes, 50.000 zit al dicht bij de limiet. Kom je op 11 bytes/rij.

    30.000 rijen per dag, 330 kB/dag, goed te doen om jaren bij te houden. Maar 50.000 updates voor elke 30.000 gebruikers is wel een ouch, dat zou me een grotere zorg zijn


    http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
      vrijdag 31 juli 2009 @ 22:38:37 #56
    74523 BaggerUser
    ModderFokker!
    pi_71503214
    quote:
    Op vrijdag 31 juli 2009 22:25 schreef GlowMouse het volgende:
    Oh, die 500 is per afdeling. Dan medewerker|afdeling|melding|datum|views inderdaad. Views zal wel niet meer passen in 2 bytes, 50.000 zit al dicht bij de limiet. Kom je op 11 bytes/rij.

    30.000 rijen per dag, 330 kB/dag, goed te doen om jaren bij te houden. Maar 50.000 updates voor elke 30.000 gebruikers is wel een ouch, dat zou me een grotere zorg zijn


    http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
    300.000 per dag, maar nog acceptabel inderdaad. Opzich wel jammer dat het tijdstip dan niet opgeslagen wordt.. maar ik vrees dat dat een beetje teveel vreet.
    De enige echte BaggerUser!
    Riemen
    fiets kopen
      vrijdag 31 juli 2009 @ 23:46:40 #57
    74523 BaggerUser
    ModderFokker!
    pi_71505160
    Oke laatste vraag voorlopig hoop ik...

    Ik heb nu die tabel:
    1medewerker|afdeling|melding|views|datum


    nu wil ik de gegevens opvragen zodat ik een mooie grafiek kan maken.

    Nu wil ik natuurlijk bij een grafiek van een gebruiker opvragen bijvoorbeeld alle views per dag per afdeling opvragen ongeacht de melding

    het komt er dus op neer dat alle views per dag per gebruiker per afdeling per dag moet optellen... ik denk dat dit met groupby en sum() moet maar echt ver kom ik niet (op veel foutmeldingen na ) iemand die me een eindje op weg kan helpen?
    De enige echte BaggerUser!
    Riemen
    fiets kopen
      vrijdag 31 juli 2009 @ 23:50:53 #58
    75592 GlowMouse
    l'état, c'est moi
    pi_71505281
    Wat had je met GROUP BY en sum?
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
    pi_71505954
    1
    2
    3
    4
    5
    SELECT melding_id, datum, SUM(views)
    FROM log 
    WHERE medewerker_id = '1'
    GROUP BY `datum`,`melding_id`
    ORDER BY melding_id,datum


    Krijg nu trouwens geen foutmelding meer en volgens mij klopt het nog ook (sta versteld van mezelf )

    enige jammere is dat ik nu nog alle meldingen in 1 array krijg en het niet per melding een aparte array terug krijg..
    De enige echte BaggerUser!
    Riemen
    fiets kopen
      zaterdag 1 augustus 2009 @ 00:27:46 #60
    75592 GlowMouse
    l'état, c'est moi
    pi_71506146
    Dan moet je GROUP BY en ORDER BY in dezelfde volgorde zetten, is sneller icm een index op (melding_id, datum, views) (één multicolumn index in deze volgorde dus).
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
      zaterdag 1 augustus 2009 @ 01:14:23 #61
    65516 gieling
    Live from NYC
    pi_71507024
    Ik ben even bezig met een nieuw login systeem, maar loop tegen een klein probleempje aan en alle artikelen via google lijken uit het jaar nul te komen...

    Welke data kan je het beste in een cookie zetten om te verifiëren dat iemand ingelogd moet worden? Passwords sowieso niet maar alleen de username(+random data erachter?) lijkt me ook weer niet veilig of ligt dat aan mij?
      zaterdag 1 augustus 2009 @ 01:22:43 #62
    75592 GlowMouse
    l'état, c'est moi
    pi_71507140
    sessie-id should do it. En sessies in een db bijhouden. Zie bv. wat voor cookies wat je van FOK! krijgt.
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
      zaterdag 1 augustus 2009 @ 01:32:23 #63
    65516 gieling
    Live from NYC
    pi_71507247
    had ik naar gekeken maar is het niet zo dat de sessieid bij elk bezoek verandert?
      zaterdag 1 augustus 2009 @ 01:37:37 #64
    75592 GlowMouse
    l'état, c'est moi
    pi_71507302
    quote:
    Op zaterdag 1 augustus 2009 01:32 schreef gieling het volgende:
    had ik naar gekeken maar is het niet zo dat de sessieid bij elk bezoek verandert?
    Als je PHP's eigen sessiesysteem gebruikt wel ja.
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
      zaterdag 1 augustus 2009 @ 01:45:34 #65
    65516 gieling
    Live from NYC
    pi_71507387
    maar mijn theorie was dan dat bij een volgend bezoek $_COOKIE["session"]!=$result["session"] of maak ik hier een denkfout?
      zaterdag 1 augustus 2009 @ 01:46:49 #66
    75592 GlowMouse
    l'état, c'est moi
    pi_71507404
    Ligt er net aan hoe je alles instelt en wat $result is enzo. Op FOK! geldt gelukkig wel een gelijkheid.
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
      zaterdag 1 augustus 2009 @ 01:55:17 #67
    65516 gieling
    Live from NYC
    pi_71507498
    $result zou dan de query zijn waar hij de cookie & sessie-id checkt in de database. Als daar een positief result uit zou komen zou je de sessies moeten zetten neem ik aan.

    Oh maar wacht.. het sessid in de database is ook die van de vorige keer, dus zou overeen moeten komen met die in de cookie, toch?

    Maar moet je je cookie dan elke keer updaten bij elke sessie?
      zaterdag 1 augustus 2009 @ 11:02:25 #68
    75592 GlowMouse
    l'état, c'est moi
    pi_71510490
    cookies kun je een lifetime meegeven, dan hoef je hem maar 1x in te stellen.
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
    pi_71514883
    Haai, ik ben inmiddels een stuk verder met mijn scriptjes, echter stuit ik op een nieuw probleem.

    Ik heb een multilevel array aangemaakt
    1$result = array(1 => array(), 2 => array(), 3 => array());


    Vervolgens wordt in een loop naar dit multi array weggeschreven, echter is het afhankelijk van de input op welke plaatsen er wordt weggeschreven.

    Met mijn huidige code krijg ik deze foutmelding:
    Undefined offset

    Wat er op neerkomt dat de waarde nog niet geset is. Echter is het voor mij niet handig om bovenstaand array al tot in het oneindige te vullen met de waarde 0. Hoe valt om dit probleem heen te werken?

    [edit]
    Hmm, na nog veel langer gezocht te hebben het antwoord gevonden: gebruik maken van de isSet functie.
    [/edit]

    [ Bericht 6% gewijzigd door uppie83 op 01-08-2009 14:44:50 ]
    ウプピエ 八十三 &lt;&lt; u-pu-pi-e hachi-ju-san, ik denk ik zeg het er maar ff bij :P
    pi_71516590
    quote:
    Op vrijdag 31 juli 2009 22:02 schreef BaggerUser het volgende:
    Database vraagje..

    Ik heb een database met simpel gezegd

    medewerkers (500+/-)
    afdelingen (60 +/-)
    melding (stuk of 10 +/-)

    een meldingen kan voor 1 of meerdere afdeling gelden en dus ook bekeken worden via verschillende afdelingen.

    een buitenstaander kan via elke afdeling een melding zien via een medewerker (een melding is verder niet gekoppeld aan een gebruiker, alleen op het moment van bekijken wordt er een getal opgehoogd bij de medewerker.)

    Nu wil ik per dag gaan bijhouden hoe vaak een melding is bekeken door een buitenstaander gekoppeld aan de gebruiker en via welke afdeling (dus dat ik van de afgelopen 7 dagen, en als het haalbaar is van de afgelopen maand hoevaak dat is)

    nu komt de grap, zo'n melding kan soms wel 50.000 keer op een dag bekeken worden per gebruiker. Hoe krijg ik dat een beetje normaal in de database?
    Als je die waarden alleen gebruikt voor marketing informatie: Niet. Gewoon je statistieken programma voor gebruiken.
    pi_71526696
    Hmm om een of andere vage reden werkt mijn 'strcasecmp' niet :?

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
    function compare($string$filename){
      
    $stringArray explode(" ",$string); // Array with loose words of the string

      
    $fileArray file($filename);
      
    printArray($stringArray);
      
    printArray($fileArray);
      for(
    $index=0;$index<sizeof($stringArray);$index++){
        for(
    $counter=0;$counter<sizeof($fileArray);$counter++){
          echo 
    "index: $index en counter: $counter <br>";
          echo 
    "$stringArray[$index] => $fileArray[$counter] <br>";
          
    $compare strcasecmp($stringArray[$index],$fileArray[$counter]);
          echo 
    "$compare <br>";
          if(
    strcasecmp($stringArray[$index],$fileArray[$counter])==0){
            echo 
    "match!!! <br>";
          }
        }
      }
    }

    compare('hallo dit is een test''F:\\XXX\\UsbWebserver\\Root\\YYY\\ZZZ\\woorden.txt');
    ?>

    Dit geeft de volgende output:

    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
    0 => hallo
    1 => dit
    2 => is
    3 => een
    4 => test
    0 => hallo
    1 => test
    index: 0 en counter: 0
    hallo => hallo
    -2
    index: 0 en counter: 1
    hallo => test
    -12
    index: 1 en counter: 0
    dit => hallo
    -4
    index: 1 en counter: 1
    dit => test
    -16
    index: 2 en counter: 0
    is => hallo
    1
    index: 2 en counter: 1
    is => test
    -11
    index: 3 en counter: 0
    een => hallo
    -3
    index: 3 en counter: 1
    een => test
    -15
    index: 4 en counter: 0
    test => hallo
    12
    index: 4 en counter: 1
    test => test
    0
    match!!! 


    Kortom hallo en hallo zijn niet hetzelfde |:(
    ウプピエ 八十三 &lt;&lt; u-pu-pi-e hachi-ju-san, ik denk ik zeg het er maar ff bij :P
    pi_71526795
    Dit komt omdat file() de newlines bewaard. Je zou een array_map met trim kunnen proberen.
    pi_71527410
    quote:
    Op zaterdag 1 augustus 2009 23:15 schreef Roönaän het volgende:
    Dit komt omdat file() de newlines bewaard. Je zou een array_map met trim kunnen proberen.
    Bedankt, dat werkt idd.

    [edit]
    Inmiddels heeft zich het volgende probleem aangediend. Ik probeer een multilevel array te sorteren op key value, waarbij key - value behouden blijft. Hiervoor heb ik deze functie:

    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    function sortArray(&$array){
      
    ksort($array);
      foreach(
    array_keys($array) as $i){
        
    sortArray($array[$i]);
      }
    }
    ?>


    En uiteindelijk doet dit de truc wel. Ik krijg er echter een shitload aan foutmeldingen bij.

    [ Bericht 69% gewijzigd door uppie83 op 02-08-2009 01:22:31 ]
    ウプピエ 八十三 &lt;&lt; u-pu-pi-e hachi-ju-san, ik denk ik zeg het er maar ff bij :P
    pi_71531350
    quote:
    Op zaterdag 1 augustus 2009 23:42 schreef uppie83 het volgende:

    En uiteindelijk doet dit de truc wel. Ik krijg er echter een shitload aan foutmeldingen bij.
    Helaas, m'n glazen bol is stuk.
    pi_71538385
    Wat dacht je van iets als:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    function sortArray(&$array){
      if(!
    is_array($array)) {
         return;
      }
      
    ksort($array);
      foreach(
    array_keys($array) as $i){
        
    sortArray($array[$i]);
      }
    }
    ?>
      zondag 2 augustus 2009 @ 17:33:40 #76
    75592 GlowMouse
    l'état, c'est moi
    pi_71542594
    array_map!
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
    pi_71543309
    Roonaan: ben jij geen ZCE meer, of staat het gewoon niet meer in je sig?

    Heeft dat nou in de praktijk meerwaarde?
    Ik heb het wel eens overwogen, maar ik heb nog nooit een klant gehad die er naar vroeg zeg maar...
    pi_71548630
    quote:
    Op zondag 2 augustus 2009 17:57 schreef Xcalibur het volgende:
    Roonaan: ben jij geen ZCE meer, of staat het gewoon niet meer in je sig?

    Heeft dat nou in de praktijk meerwaarde?
    Ik heb het wel eens overwogen, maar ik heb nog nooit een klant gehad die er naar vroeg zeg maar...
    Voor freelance is ZCE misschien nog enigszins relevant. In mijn werk stukken minder. Hoef me ook niet meer zo nodig als zodanig te positioneren. Werk genoeg.
    pi_71550904
    Enigszins relevant klinkt ook niet als een vereiste
    pi_71551041
    quote:
    Op zondag 2 augustus 2009 22:42 schreef Xcalibur het volgende:
    Enigszins relevant klinkt ook niet als een vereiste
    Er zijn veel mensen die zoiets hebben van "ZCE " "Zend "
      maandag 3 augustus 2009 @ 03:38:13 #81
    110933 F4T4L_3RR0R
    R.I.P. webicon ;(
    pi_71555584
    Even een stomme vraag:

    Ik wil eenl PHP scriptje op een thuisserver draaien. Daarvoor heb ik Apache en PHP geïnstalleerd. Moet ik ook MySQL installeren? Ik ga geen gebruik maken van databases, maar zag wel allemaal SQL verwijzingen in de php.ini.
    Een ballonvaarder die door de mand valt is nooit grappig...
      maandag 3 augustus 2009 @ 04:07:11 #82
    111382 Ofyles2
    Bestemming: onbekend
    pi_71555624
    quote:
    Op maandag 3 augustus 2009 03:38 schreef F4T4L_3RR0R het volgende:
    Even een stomme vraag:

    Ik wil eenl PHP scriptje op een thuisserver draaien. Daarvoor heb ik Apache en PHP geïnstalleerd. Moet ik ook MySQL installeren? Ik ga geen gebruik maken van databases, maar zag wel allemaal SQL verwijzingen in de php.ini.
    Niet alleen Apache installeren, XAMPP installeren.

    Overigens moet je voor MySQL de root wel beveiligen met een wachtwoord (veiligheidshalve).
    pi_71555751
    quote:
    Op maandag 3 augustus 2009 03:38 schreef F4T4L_3RR0R het volgende:
    Even een stomme vraag:

    Ik wil eenl PHP scriptje op een thuisserver draaien. Daarvoor heb ik Apache en PHP geïnstalleerd. Moet ik ook MySQL installeren? Ik ga geen gebruik maken van databases, maar zag wel allemaal SQL verwijzingen in de php.ini.
    Nope, je hoeft geen mysql, (dus ook geen xampp) te draaien als je geen db nodig hebt.

    De php.ini bevat voor heel veel extensies standaard instellingen, deze worden echter pas gebruikt als de juiste extension/zend_extension aan staat. Daarnaast is het prima mogelijk dat je php de mysql module aan heeft staan, zonder dat je mysql hebt geïnstalleerd. Voor hetzelfde geld heb je mysql op een andere machine staan, en dan zou het wat lullig zijn als je mysql alleen lokaal zou kunnen gebruiken.
    pi_71556580
    quote:
    Op maandag 3 augustus 2009 04:07 schreef Ofyles2 het volgende:

    [..]

    Niet alleen Apache installeren, XAMPP installeren.

    Overigens moet je voor MySQL de root wel beveiligen met een wachtwoord (veiligheidshalve).
    Ja, het is EEN antwoord.... maar om nou te zeggen dat dit een antwoord op de gestelde vraag is... neuh
    Verder wat Roonaan zegt
    pi_71605298
    quote:
    Op zondag 2 augustus 2009 09:37 schreef Light het volgende:

    [..]

    Helaas, m'n glazen bol is stuk.
    Hmm sorry, ik had het vermoeden dat mensen op jullie niveau de fout al uit de code zouden herkennen ;)

    Anyway, dit is de output wanneer ik de volgende code gebruik

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    function sortArray(&$array){
      
    ksort($array);
      foreach(
    array_keys($array) as $i){
        
    sortArray($array[$i]);
      }
    }

    $test analyzeString('blablablablabla');
    printArray($test);
    sortArray($test);
    printArray($test);
    ?>


    waarbij analyzeString de functie is die een multi-array uitspuugt zoals uit de eerste printArray blijkt. Dit stukje code begint met mijn regel 113.

    Output
    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
    1 =>
    1 => 111
    2 => 11
    2 =>
    1 => 80
    2 => 57
    4 => 3
    3 => 10
    3 =>
    1 => 10
    3 => 2

    Warning: ksort() expects parameter 1 to be array, integer given in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 114

    Warning: array_keys() [function.array-keys]: The first argument should be an array in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115

    Warning: Invalid argument supplied for foreach() in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115

    Warning: ksort() expects parameter 1 to be array, integer given in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 114

    Warning: array_keys() [function.array-keys]: The first argument should be an array in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115

    Warning: Invalid argument supplied for foreach() in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115

    Warning: ksort() expects parameter 1 to be array, integer given in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 114

    Warning: array_keys() [function.array-keys]: The first argument should be an array in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115

    Warning: Invalid argument supplied for foreach() in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115

    Warning: ksort() expects parameter 1 to be array, integer given in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 114

    Warning: array_keys() [function.array-keys]: The first argument should be an array in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115

    Warning: Invalid argument supplied for foreach() in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115

    Warning: ksort() expects parameter 1 to be array, integer given in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 114

    Warning: array_keys() [function.array-keys]: The first argument should be an array in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115

    Warning: Invalid argument supplied for foreach() in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115

    Warning: ksort() expects parameter 1 to be array, integer given in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 114

    Warning: array_keys() [function.array-keys]: The first argument should be an array in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115

    Warning: Invalid argument supplied for foreach() in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115

    Warning: ksort() expects parameter 1 to be array, integer given in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 114

    Warning: array_keys() [function.array-keys]: The first argument should be an array in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115

    Warning: Invalid argument supplied for foreach() in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115

    Warning: ksort() expects parameter 1 to be array, integer given in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 114

    Warning: array_keys() [function.array-keys]: The first argument should be an array in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115

    Warning: Invalid argument supplied for foreach() in F:\XXX\UsbWebserver\Root\YYY\ZZZ\textanalyzer.php on line 115
    1 =>
    1 => 111
    2 => 11
    2 =>
    1 => 80
    2 => 57
    3 => 10
    4 => 3
    3 =>
    1 => 10
    3 => 2 
    ウプピエ 八十三 &lt;&lt; u-pu-pi-e hachi-ju-san, ik denk ik zeg het er maar ff bij :P
    pi_71605781
    quote:
    Op dinsdag 4 augustus 2009 20:58 schreef uppie83 het volgende:

    [..]

    Hmm sorry, ik had het vermoeden dat mensen op jullie niveau de fout al uit de code zouden herkennen
    En ik had gehoopt/verwacht dat die uitvoer je in ieder geval in een richting zou helpen.

    De eerste keer gaat het sorteren wel goed, het gaat pas mis als je op een dieper niveau gaat sorteren. Dan krijg je namelijk een moment waarop ksort() en array_keys() een array verwachten maar niet krijgen. En dat levert die foutmeldingen op.

    Je krijgt de foutmelding acht keer. Dat komt precies overeen met het aantal waarden op het diepste niveau (111, 11, 80, 57, 10, 3, 10, 2).

    Roonaan heeft al een oplossing gegeven.
    pi_71605989
    quote:
    Op dinsdag 4 augustus 2009 21:15 schreef Light het volgende:

    [..]

    En ik had gehoopt/verwacht dat die uitvoer je in ieder geval in een richting zou helpen.
    Nee, ik snapte er geen hout van, want ik stopte er een array in, en de foutmelding was dat er een array in moest.
    quote:
    Roonaan heeft al een oplossing gegeven.
    Oh, dat werkt wel , ik snap alleen niet waarom dit wel werkt...
    Het enige extra is dat er nu een check op zit of het wel een array is, terwijl ik zelf al 100% zeker was dat het een array was.
    ウプピエ 八十三 &lt;&lt; u-pu-pi-e hachi-ju-san, ik denk ik zeg het er maar ff bij :P
    pi_71606753
    quote:
    Op dinsdag 4 augustus 2009 21:21 schreef uppie83 het volgende:

    [..]

    Nee, ik snapte er geen hout van, want ik stopte er een array in, en de foutmelding was dat er een array in moest.
    [..]

    Oh, dat werkt wel *O* , ik snap alleen niet waarom dit wel werkt... -O-
    Het enige extra is dat er nu een check op zit of het wel een array is, terwijl ik zelf al 100% zeker was dat het een array was.
    Je hebt een array in een array:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    array(
      
    => array(
        
    => 111,
        
    => 11
      
    ),
      
    => array(
        
    => 80,
        
    => 57
      
    )
    );
    ?>


    De eerste keer dat je de functie sortArray() aanroept, geef je die array mee. In de functie sortArray() sorteer je de array en daarna wil je de onderliggende arrays ook sorteren. Met de foreach() doorloop je de array die je hebt meegegeven, en voor iedere waarde roep je weer de functie sortArray() aan.

    Bij de tweede aanroep heb je dan
    1
    2
    3
    <?php
    array(=> 111=> 11);
    ?>


    Op die array haal je weer hetzelfde trucje uit voor het sorteren.
    En daarna gaat het mis, je roept dan sortArray() aan met alleen de waarde 111. Dat is geen array.
    pi_71606954
    Waarom voel ik me nu zo stom
    ウプピエ 八十三 &lt;&lt; u-pu-pi-e hachi-ju-san, ik denk ik zeg het er maar ff bij :P
      woensdag 5 augustus 2009 @ 20:00:48 #90
    85919 Likkende_Lassie
    Doe eens wat aan je ondertitel
    pi_71631683
    Ok ik wordt echt gek, vandaag 8+ uur bezig geweest met een tellertje:

    Ik heb een mysql tabel welke er als volgt uitziet:

    pair_profile_words_register_test
    1
    2
    3
    4
    register_ID = id van bedrijf
    word_ID = een gekoppeld woord aan dit bedrijf
    source_company_word_ID = een ander woord
    source_branche_ID = het ID van de branche van de koppeling.


    Met de bovenstaande tabel kan ik aantal koppelingen maken.
    Nu wil ik echter het volgende weten ( meer dan 3.000.000 records):

    Hoeveel (unieke) register_ID's (uniek!) bevinden zich in deze tabel, maar deze zal ik moeten zoeken in combinatie met de overige kolommen.
    Echter, deze kolommen bevatten ook weer dubbele nummers....


    weet niet of dit verhaal een beetje duidelijk is?
      woensdag 5 augustus 2009 @ 20:02:49 #91
    75592 GlowMouse
    l'état, c'est moi
    pi_71631744
    DISTINCT en WHERE al geprobeerd?
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
      woensdag 5 augustus 2009 @ 20:14:30 #92
    85919 Likkende_Lassie
    Doe eens wat aan je ondertitel
    pi_71632091
    quote:
    Op woensdag 5 augustus 2009 20:02 schreef GlowMouse het volgende:
    DISTINCT en WHERE al geprobeerd?
    Nee, DISTINCT niet, maar daarmee 'verlies' ik toch ook data?
    Kijk het volgende zou mogelijk moeten zijn

    source_company_word_ID = 50

    Nu wil ik weten hoeveel register_ID's hierin voorkomen, echter komt het volgende ook voor in de tabel:

    register_ID word_ID
    10 30
    10 35
    11 35
    12 30

    Probleem met GROUP BY is dat ik dan een flink aantal register_ID's zal gaan missen....
      woensdag 5 augustus 2009 @ 20:17:59 #93
    75592 GlowMouse
    l'état, c'est moi
    pi_71632178
    COUNT kun je combineren met DISTINCT Je telt dan unieke waarden.
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
      woensdag 5 augustus 2009 @ 20:19:47 #94
    85919 Likkende_Lassie
    Doe eens wat aan je ondertitel
    pi_71632221
    Zou dat dus in 1 query kunnen? Ik ga even wat proberen! thanks! Laat over een paar min wat van me horen!
      woensdag 5 augustus 2009 @ 20:40:57 #95
    85919 Likkende_Lassie
    Doe eens wat aan je ondertitel
    pi_71632729
    $Q = mysql_query("SELECT DISTINCT COUNT(register_ID) AS totaal_bedrijven FROM pair_profile_words_register WHERE source_word_ID = 27561 GROUP BY word_ID") or print_r(mysql_error());

    en hier krijg ik 212 uit, wat boven de 800 zou moeten zijn...doe ik iets fout?
      woensdag 5 augustus 2009 @ 20:43:52 #96
    75592 GlowMouse
    l'état, c'est moi
    pi_71632801
    Zoek eens op waarvoor GROUP BY voor is. En bedenk wat DISTINCT hier doet; zie bv. het verschil als je hem weglaat.
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
      woensdag 5 augustus 2009 @ 21:10:31 #97
    85919 Likkende_Lassie
    Doe eens wat aan je ondertitel
    pi_71633507
    Ik weet wat group by doet, het probleem is nu dus dat hij teveel regels wegfiltert....
      woensdag 5 augustus 2009 @ 21:12:13 #98
    75592 GlowMouse
    l'état, c'est moi
    pi_71633557
    Filteren doe je niet met GROUP BY.
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
    pi_71633558
    count + left join + group by oid?
      woensdag 5 augustus 2009 @ 21:31:10 #100
    75592 GlowMouse
    l'état, c'est moi
    pi_71634210
    quote:
    Op woensdag 5 augustus 2009 21:12 schreef Roönaän het volgende:
    count + left join + group by oid?
    Het begint bij een duidelijker vraagstelling Maar LEFT JOIN zal er wel niet bij hoeven omdat ik maar één tabel zie.
    eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
    abonnement Unibet Coolblue
    Forum Opties
    Forumhop:
    Hop naar:
    (afkorting, bv 'KLB')