abonnement Unibet Coolblue
pi_55366777

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

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

    * teeveepee
  • Just say hi!
      dinsdag 18 december 2007 @ 19:14:35 #2
    62215 qu63
    ..de tijd drinkt..
    pi_55368335
    quote:
    Op dinsdag 18 december 2007 19:29 schreef DaFrenk het volgende:
    Zal vast al eens eerder aan bod zijn gekomen, maar welk programma gebruiken jullie om te coden? @ OS X gebruik ik Smultron. Fijn programma op zich. Maar wat gebruiken jullie in Windows? Gewoon een lichtgewicht editor die fijn werkt met kleurtjes en regelnummertjes enz.
    Dreamweaver MX

    [ Bericht 79% gewijzigd door qu63 op 18-12-2007 19:42:13 ]
    It's Time To Shine
    [i]What would life be like without rhethorical questions?[/i]
    pi_55368734
    Zal vast al eens eerder aan bod zijn gekomen, maar welk programma gebruiken jullie om te coden? @ OS X gebruik ik Smultron. Fijn programma op zich. Maar wat gebruiken jullie in Windows? Gewoon een lichtgewicht editor die fijn werkt met kleurtjes en regelnummertjes enz.
    Michael Scott: If I were joking, you'd be laughing. Do you look like you're laughing?
    Dwight K. Schrute: Impossible to say. I can't see myself.
    pi_55369202
    Als ik op mijn stage met Windows werk gebruik ik afwisselent Aptana & E TextEditor (lijkt heel sterk op TextMate, mijn favoriet op de Mac)

    Dus ik zou E aanraden als je een lightweight en simpele texteditor zoekt.

    Dreamweaver vind ik te bloated. Code complition heb ik niet nodig, ik tik zo snel
      dinsdag 18 december 2007 @ 19:56:41 #5
    62215 qu63
    ..de tijd drinkt..
    pi_55369504
    quote:
    Op dinsdag 18 december 2007 19:45 schreef super-muffin het volgende:
    Als ik op mijn stage met Windows werk gebruik ik afwisselent Aptana & E TextEditor (lijkt heel sterk op TextMate, mijn favoriet op de Mac)

    Dus ik zou E aanraden als je een lightweight en simpele texteditor zoekt.

    Dreamweaver vind ik te bloated. Code complition heb ik niet nodig, ik tik zo snel
    Ik tik ook snel, maar maak daardoor juist fouten
    It's Time To Shine
    [i]What would life be like without rhethorical questions?[/i]
    pi_55370163
    Thanks voor de tips. Ga die E TextEditor eens proberen, al had ik liever een open-source of freeware alternatief Probeer toch zoveel mogelijk open-source te werken. Iemand daar nog een tipje voor?
    Michael Scott: If I were joking, you'd be laughing. Do you look like you're laughing?
    Dwight K. Schrute: Impossible to say. I can't see myself.
    pi_55370581
    Nou wat is dit nou weer, ik probeer even simpel wat in een db toe te voegen:

    1
    2
    3
    4
    5
    <?php
    $db = mysql_connect("localhost","root","***");
    mysql_select_db("wt2", $db) or die ("No database selected");
    mysql_query("INSERT INTO nieuws (nieuws_id, nieuws_titel, nieuws_inhoud, nieuws_datum) VALUES ('', 'sdsdf' 'sdf', 'asdasdasd')");
    ?> 

    En hij doet het gewoon niet? Krijg ook geen foutmelding ofzo, wazig. Ik zie vast weer wat over t hoofd :'). Uitlezen kan wel gewoon.
    pi_55371722
    doe eens
    1
    2
    3
    <?php
    mysql_query
    ("query hier") or die(mysql_error());
    ?>

    dan krijg je de fout in je query te zien

    En je kan de hele kolom `nieuws_id` gewoon weglaten, aangezien je toch auto-incrediment gebruikt.
    pi_55372992
    Kom je toch simpel zelf achter door even mysql_error() of mysql_errno() aan te roepen?
      dinsdag 18 december 2007 @ 22:53:00 #10
    136730 PiRANiA
    All thinking men are atheists.
    pi_55374623
    quote:
    Op dinsdag 18 december 2007 22:03 schreef colourAgga het volgende:
    Kom je toch simpel zelf achter door even mysql_error() of mysql_errno() aan te roepen?
    ja, maar volgens mij werkt bovenstaande beter

    slechte TVP
    pi_55379888
    quote:
    Op dinsdag 18 december 2007 19:29 schreef DaFrenk het volgende:
    Zal vast al eens eerder aan bod zijn gekomen, maar welk programma gebruiken jullie om te coden? @ OS X gebruik ik Smultron. Fijn programma op zich. Maar wat gebruiken jullie in Windows? Gewoon een lichtgewicht editor die fijn werkt met kleurtjes en regelnummertjes enz.
    Zowel op m'n werk als thuis gebruik ik jEdit. En dan met een aantal handige plugins + alle kleuren apart aangepast. tvp
      woensdag 19 december 2007 @ 08:43:56 #12
    84244 Scorpie
    Abject en infaam!
    pi_55379915
    Thuis gebruik ik PHPEditor, werkt wel lekker. Soms ook Eclipse, aangezien ik dat van werk ken.
    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.
    pi_55379989
    quote:
    Op dinsdag 18 december 2007 22:53 schreef PiRANiA het volgende:

    [..]

    ja, maar volgens mij werkt bovenstaande beter

    slechte TVP
    Dat bedoelde ik met mijn post :p En het was ook een semi verkapte TVP.

    Overigens gebruik ik VIM en editplus voor het maken van code
      woensdag 19 december 2007 @ 09:14:57 #14
    136730 PiRANiA
    All thinking men are atheists.
    pi_55380285
    ik gebruik gPHPedit voor ubuntu linux. Werkt geweldig
    pi_55389771
    quote:
    Op dinsdag 18 december 2007 20:20 schreef DaFrenk het volgende:
    Thanks voor de tips. Ga die E TextEditor eens proberen, al had ik liever een open-source of freeware alternatief Probeer toch zoveel mogelijk open-source te werken. Iemand daar nog een tipje voor?
    Anders kun je nog Notepad++ of Notepad 2 proberen, die zijn wel gratis.
    pi_55389928
    Ahja! Kon er niet meer opkomen.. terwijl het zo voor de hand ligt

    Maar gelukkig is m'n MacBook weer terug. Dus kan weer aan de slag met Smultron
    Michael Scott: If I were joking, you'd be laughing. Do you look like you're laughing?
    Dwight K. Schrute: Impossible to say. I can't see myself.
    pi_55390556
    Of probeer TextMate eens.

    Bekijk wat van die screencasts en snuffel tussen de bundle's.
    pi_55391074
    Ziet er idd erg goed uit dat TextMate
    Michael Scott: If I were joking, you'd be laughing. Do you look like you're laughing?
    Dwight K. Schrute: Impossible to say. I can't see myself.
      woensdag 19 december 2007 @ 19:39:32 #19
    107951 JortK
    Immer kwaliteitsposts
    pi_55399887
    TextMate heb ik inderdaad op de Mac, helemaal vergeten
    pi_55417367
    Ik heb een vraagje over database normalisatie of hoe je dat ook wilt noemen.

    Voor een x aantal sites wil ik IP adressen gaan opslaan voor statistieken, om te kijken hoevaak een bepaald IP adres langs komt en hoeveel views zo'n IP adres op zo'n site heeft.

    Nu vraag ik mij af hoe ik dit het beste kan opslaan.

    bv

    1 tabel - IPS (id, site_id, ip, laatstehit, hits)

    OF

    2 tabellen

    IPS - (id, ip)
    IPsHIT (id, site_id, ip_id, laatstehit, hits)

    Wat raden jullie aan?

    het gaat mogelijk om honderduizenden ip adressen!
    Just say hi!
    pi_55417402
    quote:
    Op donderdag 20 december 2007 15:02 schreef Chandler het volgende:
    Ik heb een vraagje over database normalisatie of hoe je dat ook wilt noemen.

    Voor een x aantal sites wil ik IP adressen gaan opslaan voor statistieken, om te kijken hoevaak een bepaald IP adres langs komt en hoeveel views zo'n IP adres op zo'n site heeft.

    Nu vraag ik mij af hoe ik dit het beste kan opslaan.

    bv

    1 tabel - IPS (id, site_id, ip, laatstehit, hits)

    OF

    2 tabellen

    IPS - (id, ip)
    IPsHIT (id, site_id, ip_id, laatstehit, hits)

    Wat raden jullie aan?
    Bij die laatste is het handig als je dan ook een datum toevoegd zodat je gelijk kan zien wanneer het druk is enz. Anders kan je net zo goed die eerste doen .
      donderdag 20 december 2007 @ 15:22:08 #23
    107951 JortK
    Immer kwaliteitsposts
    pi_55417693
    quote:
    Op donderdag 20 december 2007 15:02 schreef Chandler het volgende:
    Ik heb een vraagje over database normalisatie of hoe je dat ook wilt noemen.

    Voor een x aantal sites wil ik IP adressen gaan opslaan voor statistieken, om te kijken hoevaak een bepaald IP adres langs komt en hoeveel views zo'n IP adres op zo'n site heeft.

    Nu vraag ik mij af hoe ik dit het beste kan opslaan.

    bv

    1 tabel - IPS (id, site_id, ip, laatstehit, hits)

    OF

    2 tabellen

    IPS - (id, ip)
    IPsHIT (id, site_id, ip_id, laatstehit, hits)

    Wat raden jullie aan?

    het gaat mogelijk om honderduizenden ip adressen!
    Tweede mogelijkheid

    Maar dan wel wat meer info nog toevoegen zodat je uitgebreidere statistieken kan maken
    pi_55417991
    Hoe bedoel je met datum toevoegen?

    En hoe zouden jullie dit dan aanpassen anders dan kiezen voor de 2e database optie?
    Just say hi!
    pi_55420674
    Het ip-adres beschouw je toch al als uniek, waarom zou je dan ip-adressen in een tabel gaan zetten met een extra id erbij?
    Wil iedereen die in telekinese gelooft nu mijn hand op steken?
    | Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
    pi_55425076
    Nee het IP adres is niet uniek, wel in combinatie met de site ID
    Just say hi!
    pi_55425929
    quote:
    Op donderdag 20 december 2007 20:40 schreef Chandler het volgende:
    Nee het IP adres is niet uniek, wel in combinatie met de site ID
    Ik bedoel het ip In de tabel IPS die je voorstelt. Daar schiet je dus niets mee op, je verangt dan het ene id (ip) door het andere.
    Wil iedereen die in telekinese gelooft nu mijn hand op steken?
    | Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
    pi_55433979
    Ik snap je blijkbaar nog niet helemaal maar zal wel komen omdat het vroeg is
    Just say hi!
    pi_55441836
    Weet iemand hier misschien hoe het zit met regeleindes in CSV bestanden? (Ofwel tab-delimited data in een txt bestand)?

    Ik heb zelf een DBF database geopend in Excel en dat geëxporteerd naar TXT. Dat bestand kan ik zonder problemen in PHP openen en omzetten naar SQL instructies.

    Echter een TXT bestand rechtstreeks uit dBase (ook tab-delimited) gaat helemaal mis, het lijkt erop dat hij de regels niet kan afbreken waardoor het dus niet lukt om elke regel te extracten.
    Michael Scott: If I were joking, you'd be laughing. Do you look like you're laughing?
    Dwight K. Schrute: Impossible to say. I can't see myself.
    pi_55498841
    Misschien een verschilletje tussen \r\n en alleen \n?

    Overigens over database normalisatie ik heb geleerd dat tabelnamen altijd enkelvoud zijn dus een tabel ip En ik heb stukje over caching geschreven
    pi_55499419
    ik heb PHP 5.xx draaien op Windows XP. Gaat allemaal heel leuk, maar ik kan geen mail versturen vanaf localhost. Nu gebruik ik altijd mail.provider.nl, maar dan duurt het verzenden al gauw zo'n 20 seconden, en dat is vrij irritant...

    Enig idee hoe ik:
    - OF mail vanaf localhost kan versturen
    - OF sneller via mijn provider kan mailen?
    pi_55500999
    Je kan eventueel ook via sendmail een mail sturen. Is een perl script.
    Michael Scott: If I were joking, you'd be laughing. Do you look like you're laughing?
    Dwight K. Schrute: Impossible to say. I can't see myself.
    pi_55502624
    hoi mensen,

    ik ben begonnen met een site waar een database achter moet gaan draaien, maar ik zit met een probleem.

    ff kort hoe ik het wil hebben:

    de website moet een database bevatten van DJ's, SETS en EVENTS. Een EVENT wordt gezien als evenement/houseparty... en op elk event draaien 1 of meerdere dj's een set.
    Elke set-pagina zal uiteindelijk ook een link bevatten naar een audiofile zodat mensen de betreffende set nog eens na kunnen luisteren thuis.
    Elke set bestaat uit een variabel aantal TRACKS (id, artist,title, remixer) die die avond door de dj gedraaid zijn.

    Tot zover lukt het me nog wel, maar ik wil ook graag een tracklist toevoegen aan de pagina.
    Ik dacht aan de volgende manier:

    aan de TRACK tabel voeg ik nog de elementen 'set_id' en 'position' toe. Hiermee bepaal ik dus in welke set een bepaalde track gedraaid is, en welke positie binnen de set deze track heeft. Door nu een aantal tabellen te joinen zou ik dus de tracklist van een specifieke set kunnen tonen.

    Wanneer ik van die set_id + position gebruik maak, zullen er heel veel 'dubbele' tracks in de database voorkomen. DJ's draaien nogal ns dezeflde nummers maar door die set_id en position kan ik zo'n track maar koppelen aan 1 set.

    Nou zou het ook leuk zijn als bezoekers op de tracknaam binnen de tracklist kunnen klikken om zo te zien in welke sets deze track gedraaid is. Maar dit gaat dus niet omdat dezelfde track meerdere id's heeft.

    Is er een manier om deze samen te voegen als het ware, zodat die 'dubbele tracks' gezien worden als slechts 1 track??



    [ Bericht 23% gewijzigd door warezguy05 op 23-12-2007 23:05:12 ]
    pi_55506826
    Je kan een losse koppeltabel gebruiken met daarin twee foreign keys, eentje van de set en eentje van de track. Hierdoor kun je een enkele track aan meerdere sets hangen of een enkele set aan meerdere tracks etc.

    Die tabel zou dus een set_id en een track_id bevatten en that's it, even wat InnoDB magic erop los laten en het is klaar om te gaan!
    pi_55508357
    quote:
    Op zondag 23 december 2007 21:46 schreef DaFrenk het volgende:
    Je kan eventueel ook via sendmail een mail sturen. Is een perl script.
    Ik heb geen perl draaien... maar Windows moet toch wel in staat zijn er een mailtje uit te doen lijkt me?
    pi_55511406
    quote:
    Op maandag 24 december 2007 02:50 schreef colourAgga het volgende:
    Je kan een losse koppeltabel gebruiken met daarin twee foreign keys, eentje van de set en eentje van de track. Hierdoor kun je een enkele track aan meerdere sets hangen of een enkele set aan meerdere tracks etc.

    Die tabel zou dus een set_id en een track_id bevatten en that's it, even wat InnoDB magic erop los laten en het is klaar om te gaan!
    dat klinkt heel logisch idd. ik ga dat vandaag eens proberen, thanks!
    pi_55512268
    Ik heb een vraag, voor een kleine website wil ik pagina's gaan inbouwen met de volgende (zelf geschreven code) echter zit er een fout in.. maar kan deze niet vinden.

    Bv ik heb 15 items, als ik deze code start met de volgende statement

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $pages = pointer($page, 
                     array('file'  => '/catch', 
                           'param' => '/videos/page/', 
                           'first' => 1, 
                           'last'  => floor($maxpages / 5)-1, 
                           'step'  => 1, 
                           'max'   => (floor($maxpages / 5) > 5 ? 5 : floor($maxpages / 5)-1)), 
                     array('first'  => 'eerste', 
                           'prev'   => 'vorige', 
                           'currl'  => '<strong>', 
                           'currr'  => '</strong>', 
                           'next'   => 'volgende', 
                           'last'   => 'laatste', 
                           'spacer' => ' ')); 


    en maxpages = 15 dan krijg ik op de eerste pagina (zonder query) het volgende te zien.

    Pagina's: 1 2 volgende

    Als ik op pagina 2 klik krijg ik het volgende te zien.

    Pagina's: 1

    Ik snap niet waar de fout in zit en of wat ik fout doe of heb ik gewoon een sukkie script geschreven? (lange geleden )

    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    <?php
    error_reporting
    (E_ALL);

    $pointers = array('first'  => 'eerste',
                      
    'prev'   => 'vorige',
                      
    'currl'  => '<strong style="color: blue;">',
                      
    'currr'  => '</strong>',
                      
    'next'   => 'volgende',
                      
    'last'   => 'laatste',
                      
    'spacer' => '&nbsp;');

    $pointer1 = array('first'  => '<',
                      
    'prev'   => '<<',
                      
    'currl'  => '<strong style="color: green;">',
                      
    'currr'  => '</strong>',
                      
    'next'   => '>>',
                      
    'last'   => '>>',
                      
    'spacer' => '<div style="display: inline; width: 15px; border-top: 1px solid black;">&nbsp;</div>');

    function 
    pointer($current$settings = array(), $pointers = array())
    {
        
    $tmp "";

        
    // check for existence
        

        // these variables need to be set! else return false;
        
    if (!isSet($settings['file'] ))  { return "pointer::file_not_specified";}
        if (!isSet(
    $settings['first']))  { return "pointer::first_not_specified";}
        if (!isSet(
    $settings['last']))   { return "pointer::last_not_specified";}
        
    // if no settings found, use current.
        
    if (!isSet($settings['param']))  { $settings['param'] = "?";}
        if (!isSet(
    $settings['step']))   { $settings['step'] = 1;}
        if (!isSet(
    $settings['max']))    { $settings['max'] = 5;}
        
        
    // no pointers found, create default pointers.
        
    if (!isSet($pointers['first']))  { $pointers['first']  = "first";}
        if (!isSet(
    $pointers['prev']))   { $pointers['prev']   = "previous";}
        if (!isSet(
    $pointers['currl']))  { $pointers['currl']  = "<strong>";}
        if (!isSet(
    $pointers['currr']))  { $pointers['currr']  = "</strong>";}
        if (!isSet(
    $pointers['next']))   { $pointers['next']   = "next";}
        if (!isSet(
    $pointers['last']))   { $pointers['last']   = "last";}
        if (!isSet(
    $pointers['spacer'])) { $pointers['spacer'] = "&nbsp;";}

        
    // if first is lower then 1 first is one.
        
    if ($settings['first'] < 1)
        {
            
    $settings['first'] = 1;
        }

        
    // create start, mid and end variables
        
    $point_first $settings['first'];
        
    $point_mid   ceil($current $settings['step']);
        
    $point_last  ceil($settings['last'] / $settings['step']);

        
    // is a back to first page pointer needed?
        
    if (isSet($pointers['first']))
        {
            if ((
    $point_mid -2) > 0)
            {
                
    // first pointer wanted;
                
    $tmp .= '<a href="' $settings['file'] . $settings['param'] . $point_first '" TITLE="First page">' $pointers['first'] . '</a>';
                
    $tmp .= $pointers['spacer'];
            }
        }
        
    // is a previous page pointer needed?
        
    if (isSet($pointers['prev']))
        {
            if ((
    $point_mid -1) > 0)
            {
                
    // previous pointer wanted;
                
    $tmp .= '<a href="' $settings['file'] . $settings['param'] . ($point_mid -1) . '" TITLE="Previous page">' $pointers['prev'] . '</a>';
                
    $tmp .= $pointers['spacer'];
            }
        }
        
        
    // select number of items before and after current page
        
    $pos floor(($settings['max'] -1) /2);
        
        
    // if pointer is close to the beginning of pages
        
    if (($point_mid $pos) < 1)
        {
            
    // first peace (from 12345)
            
    for ($x 1$x < ($settings['max'])+1$x++)
            {
                if (
    $x == $point_mid)
                {
                    
    // current page
                    
    $tmp .= '<a href="' $settings['file'] . $settings['param'] . $x '" TITLE="To page ' $x '">' $pointers['currl'] . $x $pointers['currr'] . '</a>';
                    
    $tmp .= $pointers['spacer'];
                }
                else
                {
                    
    $tmp .= '<a href="' $settings['file'] . $settings['param'] . $x '" TITLE="To page ' $x '">' $x  '</a>';
                    
    $tmp .= $pointers['spacer'];
                }
            }
        }
        
    // pointer close to the end of pages
        
    elseif (($point_mid $pos) > $point_last)
        {
            
    // last peace (from 11,12,13,14,15 (to last))
            
    for ($x = ($point_last $settings['max'])+1$x <= $point_last$x++)
            {
                if (
    $x == $point_mid)
                {
                    
    // current page
                    
    $tmp .= '<a href="' $settings['file'] . $settings['param'] . $x '" TITLE="To page ' $x '">' $pointers['currl'] . $x $pointers['currr'] . '</a>';
                    
    $tmp .= $pointers['spacer'];
                }
                else
                {
                    
    $tmp .= '<a href="' $settings['file'] . $settings['param'] . $x '" TITLE="To page ' $x '">' $x  '</a>';
                    
    $tmp .= $pointers['spacer'];
                }
            }
        }
        
    // pointer is somewhere between...
        
    else
        {
            
    // mid peace (4,5) before current page
            
    for ($x $point_mid $pos$x $point_mid$x++)
            {
                
    $tmp .= '<a href="' $settings['file'] . $settings['param'] . $x '" TITLE="To page ' $x '">' $x  '</a>';
                
    $tmp .= $pointers['spacer'];
            }

            
    // current page
            
    $tmp .= '<a href="' $settings['file'] . $settings['param'] . $x '" TITLE="To page ' $x '">' $pointers['currl'] . $x $pointers['currr'] . '</a>';
            
    $tmp .= $pointers['spacer'];

            
    // mid peace (7,8) after current page.
            
    for ($x $point_mid +1$x < ($point_mid $pos)+1$x++)
            {
                
    $tmp .= '<a href="' $settings['file'] . $settings['param'] . $x '" TITLE="To page ' $x '">' $x  '</a>';
                
    $tmp .= $pointers['spacer'];
            }
        }
        
        
    // if there is a next page
        
    if (isSet($pointers['next']))
        {
            if ((
    $point_mid +1) < $point_last)
            {
                
    // next pointer wanted;
                
    $tmp .= '<a href="' $settings['file'] . $settings['param'] . ($point_mid +1) . '" TITLE="Next page">' $pointers['next'] . '</a>';
                
    $tmp .= $pointers['spacer'];
            }
        }
        
        
    // if current page is lower then last-2 then show last.
        
    if (isSet($pointers['last']))
        {
            if ((
    $point_mid +2) < $point_last)
            {
                
    // last pointer wanted;
                
    $tmp .= '<a href="' $settings['file'] . $settings['param'] . $point_last '" TITLE="Last page">' $pointers['last'] . '</a>';
                
    $tmp .= $pointers['spacer'];
            }
        }
        
        return 
    $tmp "<br /><br />";

    }


    // pointer(, $settings, $pointers);

    /*
    echo pointer(10, $settings, $pointers);
    echo pointer(50, $settings, $pointer1);
    echo pointer(250, $settings, $pointer1);
    echo pointer(255, $settings, $pointers);
    */
    ?>
    Just say hi!
      maandag 24 december 2007 @ 13:22:49 #38
    136730 PiRANiA
    All thinking men are atheists.
    pi_55512623
    quote:
    Op maandag 24 december 2007 13:07 schreef Chandler het volgende:
    Ik heb een vraag, voor een kleine website wil ik pagina's gaan inbouwen met de volgende (zelf geschreven code) echter zit er een fout in.. maar kan deze niet vinden.

    Bv ik heb 15 items, als ik deze code start met de volgende statement
    [ code verwijderd ]

    en maxpages = 15 dan krijg ik op de eerste pagina (zonder query) het volgende te zien.

    Pagina's: 1 2 volgende

    Als ik op pagina 2 klik krijg ik het volgende te zien.

    Pagina's: 1

    Ik snap niet waar de fout in zit en of wat ik fout doe of heb ik gewoon een sukkie script geschreven? (lange geleden )
    [ code verwijderd ]
    Ik zie zo snel geen fout in de functionaliteit, maar ik zou in plaats van >> voor knopjes &gt; gebruiken en &lt; voor <
    pi_55512855
    Bedankt PiRANiA, zal ik even aanpassen in de lokale versie

    Ik heb mijn script eens opnieuw geschreven, met comments

    Graag commentaar!

    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    <?php
    function pages($currentPage 0$totalItems 0$itemsPerPage 0$maxPages 10$link)
    {
        
    /*
        
        currentPage is the page wich we are on yet
        totalItems are the total items to show / itemsPerPage = pages
        itemsPerPage are the numbe of items per page
        maxPages are the max num of pages to show

        */
        
        
    $returnStr "";

        
    // start init
        
    if (floor($totalItems $itemsPerPage) < 1)
        {
            
    // no pages available
            
    return false;
        }
        
    $pages floor($totalItems $itemsPerPage);
        
        
    // if current page is bigger then total pages?
        
    if ($currentPage $pages)
        {
            
    // if current page is bugger then max pages, currentpage is maxpage
            
    $currentPage $pages;
        }
        
        
    /* show first, prevoius page */
        
    if ($currentPage 1)
        {
            
    $returnStr .= '<a href="' $link['link'] . '">first</a> ';
            
    $returnStr .= '<a href="' $link['link'] . str_replace("%s"$currentPage -1$link['query']) . '">previous</a> ';
        }
        elseif (
    $currentPage 0)
        {
            
    $returnStr .= '<a href="' $link['link'] . '">first</a> ';
        }
        
        
        
        
    /* middle part */
        
    $rPage floor(($maxPages-1) /2);

        
    // if page is between total pages
        
    if ($currentPage $rPage && $currentPage $rPage $pages)
        {
            
    $first $currentPage $rPage;
            
    $last  $currentPage $rPage;
        }
        
    // if page is one of the first pages
        
    elseif ($currentPage $rPage <= 0)
        {
            
    // from 0
            
    $first 1;
            
    $last  $maxPages;
        }
        
    // if page is one of the last pages
        
    else
        {
            
    // from maxpages
            
    $first = ($pages $maxPages) +1;
            
    $last  $pages;
        }
        
        
    // if last is bigger then total pages
        
    if ($last $pages)
        {
            
    $last $pages;
        }
        
        
    /* middle pages */
        
    for ($x $first$x $last+1$x++)
        {
            if (
    $currentPage == $x)
            {
                
    $returnStr .= '<a href="' $link['link'] . str_replace("%s"$x$link['query']) . '">' str_replace("%s"$x$link['current']) . '</a> ';
            }
            else
            {
                
    $returnStr .= '<a href="' $link['link'] . str_replace("%s"$x$link['query']) . '">' $x '</a> ';
            }
        }
        
        
    /* end part */
        
    if ($pages $currentPage 1)
        {
            
    $returnStr .= '<a href="' $link['link'] . str_replace("%s"$currentPage +1$link['query']) . '">next</a> ';
            
    $returnStr .= '<a href="' $link['link'] . str_replace("%s"$pages$link['query']) .  '">last</a> ';
        }
        elseif (
    $pages $currentPage 0)
        {
            
    $returnStr .= '<a href="' $link['link'] . str_replace("%s"$pages$link['query']) .  '">last</a> ';
        }
        
        return 
    $returnStr;
    }

    /* 

    test pogingen, lekker random

    */

    $linkArr = array("link"    => '/pages.php',
                     
    "query"   => '?from=%s',
                     
    "current" => '<strong style="color: red;">%s</strong>');

    $totalItems   rand(0250);
    $itemsPerPage rand(410);
    $maxPages     rand(310);

    /*
    $totalItems   = 10;
    $itemsPerPage = 7;
    $maxPages     = 9;
    */

    echo "<h2> totalItems $totalItems itemsPerPage $itemsPerPage maxPages $maxPages</h2>";

    for (
    $currentPage 0$currentPage floor($totalItems $itemsPerPage)+1$currentPage++)
    {
        echo 
    pages($currentPage$totalItems$itemsPerPage$maxPages$linkArr);
        echo 
    '<hr>';
    }
    ?>


    en ik heb het gepoogd om te zetten naar een class, waarbij je meer dingen kunt instellen.

    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    <?php
    class pagePointers
    {
        var 
    $titleFirst    "first";
        var 
    $titlePrevious "previous";
        var 
    $titleNext     "next";
        var 
    $titleLast     "last";

        function 
    pointers($in)
        {
            
    $this->pointerLink    $in['link'];
            
    $this->pointerQuery   $in['query'];
            
    $this->pointerCurrent $in['current'];
        }
        
        function 
    init()
        {
            
    $this->returnStr '';
            
            
    // start init
            
    if (floor($this->totalItems $this->itemsPerPage) < 1)
            {
                
    // no pages available
                
    return false;
            }
            
    $this->pages floor($this->totalItems $this->itemsPerPage);

            
    // if current page is bigger then total pages?
            
    if ($this->currentPage $this->pages)
            {
                
    // if current page is bugger then max pages, currentpage is maxpage
                
    $this->currentPage $this->pages;
            }
            
            
    /* middle part */
            
    $this->rPage floor(($this->maxPages -1) /2);
            
            
    // if page is between total pages
            
    if ($this->currentPage $this->rPage && $this->currentPage $this->rPage $this->pages)
            {
                
    $this->first $this->currentPage $this->rPage;
                
    $this->last  $this->currentPage $this->rPage;
            }
            
    // if page is one of the first pages
            
    elseif ($this->currentPage $this->rPage <= 0)
            {
                
    // from 0
                
    $this->first 1;
                
    $this->last  $this->maxPages;
            }
            
    // if page is one of the last pages
            
    else
            {
                
    // from maxpages
                
    $this->first = ($this->pages $this->maxPages) +1;
                
    $this->last  $this->pages;
            }

            
    // if last is bigger then total pages
            
    if ($this->last $this->pages)
            {
                
    $this->last $this->pages;
            }
        }
        
        function 
    first()
        {
            
    /* show first, prevoius page */
            
    if ($this->currentPage 1)
            {
                
    $this->returnStr .= '<a href="' $this->pointerLink '">' $this->titleFirst '</a> ';
                
    $this->returnStr .= '<a href="' $this->pointerLink str_replace("%s", ($this->currentPage -1), $this->pointerQuery) . '">' $this->titlePrevious '</a> ';
            }
            elseif (
    $this->currentPage 0)
            {
                
    $this->returnStr .= '<a href="' $this->pointerLink '">' $this->titleFirst '</a> ';
            }
        }
        
        function 
    last()
        {
            
    /* end part */
            
    if (($this->pages $this->currentPage) > 1)
            {
                
    $this->returnStr .= '<a href="' $this->pointerLink str_replace("%s"$this->currentPage +1$this->pointerQuery) . '">' $this->titleNext '</a> ';
                
    $this->returnStr .= '<a href="' $this->pointerLink str_replace("%s"$this->pages$this->pointerQuery) .  '">' $this->titleLast '</a> ';
            }
            elseif (
    $this->pages $this->currentPage 0)
            {
                
    $this->returnStr .= '<a href="' $this->pointerLink str_replace("%s"$this->pages$this->pointerQuery) .  '">' $this->titleLast '</a> ';
            }
        }
        
        function 
    middle()
        {
            
    /* middle pages */
            
    for ($x $this->first$x < ($this->last +1); $x++)
            {
                if (
    $this->currentPage == $x)
                {
                    
    $this->returnStr .= '<a href="' $this->pointerLink str_replace("%s"$x$this->pointerQuery) . '">' str_replace("%s"$x$this->pointerCurrent) . '</a> ';
                }
                else
                {
                    
    $this->returnStr .= '<a href="' $this->pointerLink str_replace("%s"$x$this->pointerQuery) . '">' $x '</a> ';
                }
            }
        }
        
        function 
    getPages($currentPage)
        {
            
    $this->currentPage $currentPage;
            
    $this->init();
            
            
    $this->first();
            
    $this->middle();
            
    $this->last();
            
            return 
    $this->returnStr;
        }
    }

    $p = new pagePointers;

    $p->pointers(array("link"    => '/pages.php',
                       
    "query"   => '?from=%s',
                       
    "current" => '<strong style="color: red;">%s</strong>'));

    $p->totalItems   rand(0250);
    $p->itemsPerPage rand(410);
    $p->maxPages     rand(310);

    $p->titleFirst    "eerste";
    $p->titlePrevious "vorige";
    $p->titleNext     "volgende";
    $p->titleLast     "laatste";

    echo 
    "<h2> totalItems $p->totalItems itemsPerPage $p->itemsPerPage maxPages $p->maxPages</h2>";

    for (
    $currentPage 0$currentPage floor($p->totalItems $p->itemsPerPage)+1$currentPage++)
    {
        echo 
    $p->getPages($currentPage);
        echo 
    '<hr>' "\r\n\r\n\r\n";
    }
    ?>


    [ Bericht 70% gewijzigd door Chandler op 25-12-2007 12:58:38 ]
    Just say hi!
    pi_55564852
    Even zonder erop in te gaan of echt uitgebreid je code te lezen, eventueel iets met kleiner dan of kleiner of gelijk aan. Dus < of <= en > of =>. Als dat het niet is gaat er ergens iets mis met je floor, en zul je daar een andere methode voor pakken.

    Overigens zou ik gewoon een arraytje met pagina's maken en kijken of de key bestaat van de vorige pagina, stuk minder gehannes dan zo'n eindeloze lap code. Oh en over die lange lappen code, ik moet eindeloos scrollen man

    Even een kort voorbeeld zonder al te uitgebreid te gaan.

    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
    <?php
      $itemcount 
    100;
      
    $itemspage 10;

      
    $pagecount =  ceil$itemcount $itemspage );

      if( !isset( 
    $_GET'page_id' ] ) OR !is_numeric$_GET'page_id' ] ) )
      {

        
    $page 0;

      }
      elseif( isset( 
    $_GET'page_id' ] ) AND is_numeric$_GET'page_id' ] ) )
      {

        
    $page $_GET'page_id' ];

      }

      for( 
    $i 0$i <= $pagecount$i++ )
      {

        if( 
    $i == )
        {

          print 
    'Eerste pagina';

        }
        elseif( 
    $i == $pagecount )
        {

          print 
    'Laatste pagina';

        }
        else
        {

          print 
    'Pagina' $i;

        }

      }
    ?>


    ceil is beter omdat je ander items niet gaat laten zien (die vallen eraf door de floor).

    [ Bericht 43% gewijzigd door colourAgga op 27-12-2007 16:11:07 ]
    pi_55566597
    quote:
    Op donderdag 27 december 2007 01:35 schreef colourAgga het volgende:
    Even zonder erop in te gaan of echt uitgebreid je code te lezen, eventueel iets met kleiner dan of kleiner of gelijk aan. Dus < of <= en > of =>. Als dat het niet is gaat er ergens iets mis met je floor, en zul je daar een andere methode voor pakken.
    Ja daar kwam ik al achter toen ik het in mijn project ging verwerken
    quote:
    Overigens zou ik gewoon een arraytje met pagina's maken en kijken of de key bestaat van de vorige pagina, stuk minder gehannes dan zo'n eindeloze lap code.
    Arraytje? dat zie ik niet terug komen in je code, maar mijn manier kan ook het aantal pagina's achter elkaar instellen.
    quote:
    Oh en over die lange lappen code, ik moet eindeloos scrollen man
    Tja jammer dat FOK geen minimalize button voor codes heeft hé
    quote:
    Even een kort voorbeeld zonder al te uitgebreid te gaan.
    [ code verwijderd ]
    Leuk dat je is_int gebruikt, ik check altijd met is_numeric
    quote:
    ceil is beter omdat je ander items niet gaat laten zien (die vallen eraf door de floor).
    Daar kwam ik ook achter idd, floor is naar beneden en ceil is omhoog
    Just say hi!
      donderdag 27 december 2007 @ 08:52:31 #42
    84926 WyriHaximus
    Release the hounds smithers!
    pi_55566616
    quote:
    Op donderdag 27 december 2007 08:48 schreef Chandler het volgende:

    [..]

    Tja jammer dat FOK geen minimalize button voor codes heeft hé
    Wat dacht je van een pastebin?
    phluphy for president!
    pi_55568025
    quote:
    Op donderdag 27 december 2007 08:48 schreef Chandler het volgende:
    Leuk dat je is_int gebruikt, ik check altijd met is_numeric
    Dan doe jij het goed en doet colourAgga het fout is_int() met een string als input (in dit geval uit $_GET) geeft altijd false!

    [ Bericht 9% gewijzigd door SuperRembo op 27-12-2007 11:22:37 ]
    Wil iedereen die in telekinese gelooft nu mijn hand op steken?
    | Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
    pi_55568286
    quote:
    Op donderdag 27 december 2007 08:52 schreef WyriHaximus het volgende:

    [..]

    Wat dacht je van een pastebin?
    wat dacht je van apieceofcode.net
    quote:
    Op donderdag 27 december 2007 11:03 schreef SuperRembo het volgende:
    [quote]Op donderdag 27 december 2007 08:48 schreef Chandler het volgende:
    Leuk dat je is_int gebruikt, ik check altijd met is_numeric
    /quote]

    Dan doe jij het goed en doet colourAgga het fout is_int() met een string als input (in dit geval uit $_GET) geeft altijd false!
    Damn, doe ik nog eens iets goed
    Just say hi!
    pi_55574929
    Helemaal gelijk moet inderdaad is_numeric zijn, zal het even goed zetten. Tijdje al geen PHP gedaan en ik gooi het altijd door mijn verificatie klasse

    In mijn voorbeeld staat inderdaad geen array omdat ik je code las en zag dat je alleen items over pagina's hoeft te verdelen terwijl toen ik het eerste stuk las dacht dat je echt als 'hoofdstukken' door een boek wilde bladeren of iets in die geest.
      donderdag 27 december 2007 @ 22:38:12 #46
    84926 WyriHaximus
    Release the hounds smithers!
    pi_55586446
    quote:
    Op donderdag 27 december 2007 11:20 schreef Chandler het volgende:

    [..]

    wat dacht je van apieceofcode.net
    Ja bijvoorbeeld .

    -knip-
    phluphy for president!
    pi_55590932
    Werkt een spoiler-tag om een code-tag heen?
    SPOILER
    Om spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
    of anders een quote? (want die heeft tegenwoordig een max height)
    quote:
    1$foo = "bar";
    Wil iedereen die in telekinese gelooft nu mijn hand op steken?
    | Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
      vrijdag 28 december 2007 @ 00:49:00 #48
    84926 WyriHaximus
    Release the hounds smithers!
    pi_55591497
    quote:
    Op vrijdag 28 december 2007 00:29 schreef SuperRembo het volgende:
    Werkt een spoiler-tag om een code-tag heen?
    SPOILER
    Om spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
    of anders een quote? (want die heeft tegenwoordig een max height)
    [..]
    Zo te zien wel alleen hebben ze een max width . Ziet er niet echt netjes uit zo.
    phluphy for president!
    pi_55664099
    Nog ff wat commentaar op (een deel van) het scriptje van Tarabass in dat niet-centrale php topic met die waardeloze titel.

    Ik snap niet helemaal waarom je een tabelnaam variabel zou willen maken. Maar als je dat dan doet, dan lijkt het me handiger om ze in $GLOBALS te zetten,
    zodat je er altijd bij kunt zonder dat je die variabele aan elke functie hoeft mee te geven.
    function CheckPostData($mysql_tbn) {
    $ip = $_SERVER['REMOTE_ADDR'];
    $ip = ip2long($ip);


    Het heeft geen zin om hier een string te escapen, je bent hier nog helemaal niet met sql bezig
    $data = mysql_real_escape_string($_POST['data']);
    $date = date('y-m-j H:i:s');


    Waarom 2 if-jes?
    if($data != "Hier je bericht.....") {
    if($data != "" && is_string($data)) {
    InsertQuery($mysql_tbn, $ip, $data, $date);
    }
    }
    }


    Beetje vreemde functienaam, zegt ook niet veel over wat ie doet.
    function InsertQuery($table, $ip, $data, $date) {
    $sql_insert = "INSERT INTO " . $table . " SET ";

    id is vast een integer, daar past dus geen (lege) string in. Als het een autoincrement id is, dan kan je 'm beter weglaten uit de insert.
    $sql_insert .= "id = ''";
    Hier moet je de string dus wel escapen
    $sql_insert .= ", ip = '" . $ip . "'";
    en hier ook
    $sql_insert .= ", data = '" . $data . "'";
    en hier ook.
    Is de date kolom een string, een date/datetime of een int?
    $sql_insert .= ", date = '" . $date . "'";

    $result = mysql_query($sql_insert);
    header("Location: " . $_SERVER['PHP_SELF']);

    // Waarom is de exit uitgecomment? Na de redirect moet je er voor zorgen dat er geen data meer naar de client wordt gestuurd (dat gebeurt nu wel).
    //exit;
    }



    Bij A List Apart staat een mooiere oplossing voor de "Hier je bericht....." tekst in de textarea.
    Wil iedereen die in telekinese gelooft nu mijn hand op steken?
    | Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
    pi_55674896
    Fix-List:

    Variable (volgens mij) nu global gemaakt.
    Escape bij declaratie weggehaald en in de query pas meegegeven
    If-statements verkort naar 1 if-statement
    ID-integer uit de query gesloopt, ook geen idee waarom ik hem er bij had gezet (en dan ook nog als string).
    exit; comment weggehaald.

    Waarom moet ik de variable $ip escapen in de query? Dit is een integer, en geen string.
    $date is een datetime. Waarom vraag je dat?

    A List Apart wordt doorgenomen, dank voor de link.

    Code na aanpassingen:
    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
    <?php
       function CheckPostData() {
            $ip   = $_SERVER['REMOTE_ADDR'];
            $ip   = ip2long($ip);
          $data = $_POST['data'];
          $date = date('y-m-j H:i:s');
            Global $mysql_tbn;

            if(($data != "Hier je bericht....." && $data != "") && (is_string($data))) {
                InsertQuery($ip, $data, $date);
            }
       }
        function InsertQuery($ip, $data, $date) {
            Global $mysql_tbn;

          $sql_insert = "INSERT INTO " . $mysql_tbn . " SET ";
          $sql_insert .= "ip = " . $ip;
          $sql_insert .= ", data = '" . mysql_real_escape_string($data) . "'";
          $sql_insert .= ", date = '" . $date . "'";

            $result = mysql_query($sql_insert);
            header("Location: " . $_SERVER['PHP_SELF']);
            exit;
        }
    ?>
    pi_55676419
    quote:
    Op maandag 17 december 2007 16:06 schreef Mordreth het volgende:

    [..]

    Deze is simpel aan te passen :
    [ code verwijderd ]
    Ik kom er nog steeds niet compleet uit....

    Wat ik zoek is een functie die mij de timestamp van de eerste dag van weeknummer X in jaar Y geeft. Ik heb er net weer mee zitten te stoeien, maar ik krijg geen algoritme uit mijn pols geschud die dit voor elkaar krijgt op een manier dat het ook met de jaarwisseling goed gaat.
    pi_55676534
    Ik heb het volgende probleem:

    Ik ben bezig een Google Sitemap XML bestand te genereren. Lokaal (Windows XP, IIS) werkt dit allemaal, en als ik het bestand in m'n browser open krijg ik netjes een XML tree te zien. Nu upload ik het naar mijn server (Linux, Apache) en daar krijg ik een blanco bestand.

    Ik ben er achter gekomen dat dit veroorzaakt wordt door de eerste regel van het XML bestand, namelijk:
    1<?xml version='1.0' encoding='UTF-8'?>


    Als ik deze regel weghaal krijg ik wel output te zien, maar is het (natuurlijk) geen XML meer...
    Ik heb werkelijk waar géén idee waarom dit is of wat ik er aan zou moeten doen
    pi_55677000
    quote:
    Op maandag 31 december 2007 11:34 schreef Xcalibur het volgende:
    Ik heb het volgende probleem:

    Ik ben bezig een Google Sitemap XML bestand te genereren. Lokaal (Windows XP, IIS) werkt dit allemaal, en als ik het bestand in m'n browser open krijg ik netjes een XML tree te zien. Nu upload ik het naar mijn server (Linux, Apache) en daar krijg ik een blanco bestand.

    Ik ben er achter gekomen dat dit veroorzaakt wordt door de eerste regel van het XML bestand, namelijk:
    [ code verwijderd ]

    Als ik deze regel weghaal krijg ik wel output te zien, maar is het (natuurlijk) geen XML meer...
    Ik heb werkelijk waar géén idee waarom dit is of wat ik er aan zou moeten doen
    En Apache parsed de "<?" niet als PHP?
    pi_55677004
    Ja, ik heb er een
    1header('Content-type: text/xml; charset=UTF-8');


    in staan.... lijkt me goed toch?
    pi_55677032
    quote:
    Op maandag 31 december 2007 11:49 schreef Geqxon het volgende:
    En Apache parsed de "<?" niet als PHP?
    Scherp.... dat zou het wel eens kunnen zijn.
    Lokaal staat short open tags uit, online staat het aan.... eens kijken of ik die kan aanpassen

    Edit: uit de PHP documentatie bij short_open_tag
    quote:
    Tells whether the short form (<? ?> ) of PHP's open tag should be allowed. If you want to use PHP in combination with XML, you can disable this option in order to use <?xml ?> inline. Otherwise, you can print it with PHP, for example: <?php echo '<?xml version="1.0"'; ?> . Also if disabled, you must use the long form of the PHP open tag (<?php ?> ).


    [ Bericht 34% gewijzigd door Xcalibur op 31-12-2007 11:55:32 ]
    pi_55677169
    quote:
    Op maandag 31 december 2007 11:50 schreef Xcalibur het volgende:

    [..]

    Scherp.... dat zou het wel eens kunnen zijn.
    Lokaal staat short open tags uit, online staat het aan.... eens kijken of ik die kan aanpassen :)
    Mocht je het niet aan kunnen passen:

    1
    2
    3
    <?php
    echo "<?xml ............ ":
    ?>


    Het kost je wat overhead, maar is dat voor een Google sitemap belangrijk?
    pi_55678294
    quote:
    Op maandag 31 december 2007 11:30 schreef Geqxon het volgende:

    [..]

    Ik kom er nog steeds niet compleet uit....

    Wat ik zoek is een functie die mij de timestamp van de eerste dag van weeknummer X in jaar Y geeft. Ik heb er net weer mee zitten te stoeien, maar ik krijg geen algoritme uit mijn pols geschud die dit voor elkaar krijgt op een manier dat het ook met de jaarwisseling goed gaat.
    En dat lukt mij inmiddels. Het blijft echter gestoei met de weeknummers. Het is op het moment Week 1 van 2007, en dat is waar het ook gelijk goed fout gaat in het script. Ik ga maar weer even worstelen.
    pi_55678299
    ja, ik zag dat dat kon inderdaad.... maar dat is natuurlijk wel een ranzige oplossing
    pi_55679806
    Even snel een klein HTTaccess vraagje.

    ([a-zA-Z0-9] valideert echter ook "(niets) en ik wil hier een minimum aan vast knopen van bv 4 karakters! en geen maximum? anyone?
    Just say hi!
    pi_55680020
    Zo uit mijn hoofd:

    1(a-zA-Z0-9]{4,})
    quote:
    Using extended regular expressions, you can specify arbitrary pattern occurrence counts using a more verbose syntax than the question-mark, plus-sign, and asterisk quantifiers. The curly-braces ("{" and "}") can surround a precise count of how many occurrences you are looking for.

    The most general form of the curly-brace quantification uses two range arguments (the first must be no larger than the second, and both must be non-negative integers). The occurrence count is specified this way to fall between the minimum and maximum indicated (inclusive). As shorthand, either argument may be left empty: if so the minimum/maximum is specified as zero/infinity, respectively. If only one argument is used (with no comma in there), exactly that number of occurrences are matched.

    http://gnosis.cx/publish/programming/regular_expressions.html
    pi_55682507
    iemand een idee of ik de $_SERVER['SERVER_ADMIN'] kan benaderen met php in CLI?
    of is dat echt helemaal onmogelijk en zal ik het moeten hardcoden?
    pi_55682587
    quote:
    Op maandag 31 december 2007 13:22 schreef Geqxon het volgende:
    Zo uit mijn hoofd:
    [ code verwijderd ]
    Tnx, ik had zelf al geprobeerd maar blijkbaar ging het door de * fout
    Just say hi!
    pi_55682689
    quote:
    Op maandag 31 december 2007 12:30 schreef Geqxon het volgende:

    [..]

    En dat lukt mij inmiddels. Het blijft echter gestoei met de weeknummers. Het is op het moment Week 1 van 2007, en dat is waar het ook gelijk goed fout gaat in het script. Ik ga maar weer even worstelen.
    Het is week 1 van 2008. En met wat code om de eerste dag van die week te bepalen kom ik op 31 december 2007.

    Edit - de code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    function firstDayOfWeek($week, $year) {
        
    $jan1st = mktime(0,0,0,1,1,$year);
        if(
    date('W', $jan1st) == 1) {
            
    //Correctie toepassen, alleen voor als 1 januari in week 1 zit
            // En 1 januari kan soms ook bij week 53 of 52 worden gerekend.
            
    $week--;
        }
        
    $weekday = date('N', $jan1st) - 1; //Dag 1 is maandag
        
    return strtotime('+'.$week.' weeks -'.$weekday.' days', $jan1st);
    }

    echo
    date('Y-m-d', firstDayOfWeek(1,2008)); //Levert 2007-12-31
    ?>


    [ Bericht 76% gewijzigd door Light op 31-12-2007 14:57:17 ]
    pi_55683103
    quote:
    Op maandag 31 december 2007 14:48 schreef Light het volgende:

    [..]

    Het is week 1 van 2008. En met wat code om de eerste dag van die week te bepalen kom ik op 31 december 2007.

    Edit - de code:
    [ code verwijderd ]
    Dat klopt, en als "date('W-Y')" keurig 01-2008 zou tonen dan zou mijn pagina perfect werken, want ook het algoritme dat ik gebruik geeft dan 31 december weer. Helaas, hij geeft nu 01-2007 weer.

    Het is jammer dat de date & time functies van PHP wat rommelig zijn, want "strftime("%W-%Y")" geeft 53-2007 weer, aangezien die weer geen ISO weeknummer geeft.
    pi_55683661
    quote:
    Op maandag 31 december 2007 15:04 schreef Geqxon het volgende:

    [..]

    Dat klopt, en als "date('W-Y')" keurig 01-2008 zou tonen dan zou mijn pagina perfect werken, want ook het algoritme dat ik gebruik geeft dan 31 december weer. Helaas, hij geeft nu 01-2007 weer.

    Het is jammer dat de date & time functies van PHP wat rommelig zijn, want "strftime("%W-%Y")" geeft 53-2007 weer, aangezien die weer geen ISO weeknummer geeft.
    Met date("W o") krijg je wel het ISO weeknummer en het ISO jaar. Nadeel is dat je PHP 5.1.0 of nieuwer nodig hebt.
    pi_55683836
    quote:
    Op maandag 31 december 2007 10:32 schreef Tarabass het volgende:
    Fix-List:

    Variable (volgens mij) nu global gemaakt.
    Escape bij declaratie weggehaald en in de query pas meegegeven
    If-statements verkort naar 1 if-statement
    ID-integer uit de query gesloopt, ook geen idee waarom ik hem er bij had gezet (en dan ook nog als string).
    exit; comment weggehaald.

    Waarom moet ik de variable $ip escapen in de query? Dit is een integer, en geen string.
    $date is een datetime. Waarom vraag je dat?

    A List Apart wordt doorgenomen, dank voor de link.

    Code na aanpassingen:
    [ code verwijderd ]
    Een IP is wel een string, bestaat uit getallen met puntjes.

    Kijk voor de grap ook eens naar: http://nl3.php.net/manual/en/function.ip2long.php
    pi_55683949
    Eigenlijk is een IP-adres een array van characters.
    pi_55687910
    quote:
    Op maandag 31 december 2007 15:29 schreef colourAgga het volgende:

    [..]

    Een IP is wel een string, bestaat uit getallen met puntjes.

    Kijk voor de grap ook eens naar: http://nl3.php.net/manual/en/function.ip2long.php
    Kijk voor de grap eens goed naar zijn code
    Wil iedereen die in telekinese gelooft nu mijn hand op steken?
    | Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
    pi_55688265
    quote:
    Op maandag 31 december 2007 15:29 schreef colourAgga het volgende:

    [..]

    Een IP is wel een string, bestaat uit getallen met puntjes.

    Kijk voor de grap ook eens naar: http://nl3.php.net/manual/en/function.ip2long.php
    Dat gebruik ik ook in m'n code. Ik haal hem ook op met long2ip

    En hoe ziet de veiligheid van de code er nu uit? Zijn er nog dingen die ik toe moet voegen, en waar zou het mis op kunnen gaan? Testen kan hier..

    wees een beetje zuinig op m'n database ajb
    pi_55689079
    quote:
    Op maandag 31 december 2007 14:43 schreef mschol het volgende:
    iemand een idee of ik de $_SERVER['SERVER_ADMIN'] kan benaderen met php in CLI?
    of is dat echt helemaal onmogelijk en zal ik het moeten hardcoden?
    Die server_admin variabele bevat de waarde uit de apache config ServerAdmin. CLI gebruikt niet de SAPI en die variabele hoort gewoon leeg te zijn in CLI.
    En ServerAdmin is nou niet iets waar je blindelings op moet vertrouwen.
    Bij phpinfo() (of php -i) zie je welke variabelen je tot je beschikking hebt, misschien heb je daar wat aan?
    pi_55689476
    quote:
    Op maandag 31 december 2007 10:32 schreef Tarabass het volgende:
    Code na aanpassingen:
    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
    <?php
       
    function CheckPostData() {
            
    $ip   $_SERVER['REMOTE_ADDR'];
            
    $ip   ip2long($ip);
          
    $data $_POST['data'];
          
    $date date('y-m-j H:i:s');
            Global 
    $mysql_tbn;

            if((
    $data != "Hier je bericht....." && $data != "") && (is_string($data))) {
                
    InsertQuery($ip$data$date);
            }
       }
        function 
    InsertQuery($ip$data$date) {
            Global 
    $mysql_tbn;

          
    $sql_insert "INSERT INTO " $mysql_tbn " SET ";
          
    $sql_insert .= "ip = " $ip;
          
    $sql_insert .= ", data = '" mysql_real_escape_string($data) . "'";
          
    $sql_insert .= ", date = '" $date "'";

            
    $result mysql_query($sql_insert);
            
    header("Location: " $_SERVER['PHP_SELF']);
            exit;
        }
    ?>
    Wat opmerkingen:
    * Global $mysql_tbn; heb je niet nodig in CheckPostData
    * is_string geeft ook true als de invoer ($data) leeg is en dus overbodig.
    * De opbouw van $sql_insert vind ik vervelend lezen, gebruik OF een prepared statement of iets als sprintf:
    1
    2
    3
    <?php
    $sql_insert 
    sprintf("INSERT INTO %s SET date='%s',ip=%d, data=' %s' ",$mysql_tbn,$date,$ip,mysql_real_escape_string($data));
    ?>

    * Je doet niks met $result in InsertQuery en als de query.
    * Waarom geen else clause bij if ($data blabla) ?
    pi_55690335
    quote:
    Op maandag 31 december 2007 14:48 schreef Light het volgende:

    [..]

    Het is week 1 van 2008. En met wat code om de eerste dag van die week te bepalen kom ik op 31 december 2007.

    Edit - de code:
    [ code verwijderd ]
    Dat kan mooier :P

    1
    2
    3
    4
    5
    6
    function firstDayOfWeek($week, $year) 
    {
       $jan4th = mktime(0, 0, 0, 1, 4, $year);
       $weekday = date('N', $jan4th) + 6; 
       return strtotime("+$week weeks -$weekday days", $jan4th);
    }


    (4 januari valt altijd in week 1)
    Ik heb niet helemaal gecontroleerd of ie goed is, alleen dat ie dezelfde resultaten geeft als die van Light.
    Wil iedereen die in telekinese gelooft nu mijn hand op steken?
    | Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
    pi_55690743
    En voor wat ik gebruik:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    function StartOfWeek($year$week

        
    $Jan1 mktime(1,1,1,1,1,$year); 
        
    $MondayOffset = (11-date('w',$Jan1))%7-3
        
    $desiredMonday strtotime(($week-1) . ' weeks '.$MondayOffset.' days'$Jan1); 
        return 
    $desiredMonday

    ?>


    http://www.phpbuilder.com/board/showpost.php?s=c26b8729c4b94eadb55d319c3c29bc4a&p=10274032&postcount=5

    pi_55691606
    quote:
    Op maandag 31 december 2007 18:55 schreef smesjz het volgende:
    * Global $mysql_tbn; heb je niet nodig in CheckPostData
    True, rommelig van me maar die had ik laten staan na aanpassingen van de vorige keer (gaf hem toen mee naar de insertquery)
    quote:
    * is_string geeft ook true als de invoer ($data) leeg is en dus overbodig.
    Dit begrijp ik niet

    Zou je dat uit kunnen leggen? Het is toch een 'and' en de string moet dan toch voldoen aan alle drie?
    quote:
    * De opbouw van $sql_insert vind ik vervelend lezen, gebruik OF een prepared statement of iets als sprintf:
    Eens. Is ook niet de manier die ik nu veel gebruik, inderdaad omdat het zo vervelend lezen is.

    Nu doe ik meestal dit:
    1
    2
    3
    <?php
    $sql_insert 
    "INSERT INTO " $mysql_tbn " (ip, data, date) VALUES ('$ip', '" mysql_real_escape_string($data) . "', '$date')";
    ?>
    quote:
    * Waarom geen else clause bij if ($data blabla) ?
    Is wel netter, maar had het even snel gebouwd, om de veilig te leren en te testen. Beetje zonde van de tijd dus.

    Fix-List:

    * Global $mysql_tbn; weggehaald in CheckPostData
    * Query herschreven naar een nettere en leesbaarder manier
    * Code opgeschoond

    Code na aanpassingen:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
        
    function CheckPostData() {
            
    $ip   $_SERVER['REMOTE_ADDR'];
            
    $ip   ip2long($ip);
            
    $data $_POST['data'];
            
    $data trim($data);
            
    $date date('y-m-j H:i:s');

            if((
    $data != "Hier je bericht....." && $data != "") && (is_string($data))) {
                
    InsertQuery($ip$data$date);
            }
        }
        function 
    InsertQuery($ip$data$date) {
            Global 
    $mysql_tbn;

            
    $sql_insert "INSERT INTO " $mysql_tbn " (ip, data, date) VALUES ('$ip', '" mysql_real_escape_string($data) . "', '$date')";
            
    $sql_insert mysql_query($sql_insert); 

            
    header("Location: " $_SERVER['PHP_SELF']);
            exit;
        }
    ?>

    @SuperRembo
    Waarom moet ik de variable $ip escapen in de query? Dit is een integer, en geen string.
    $date is een datetime. Waarom vraag je dat? Jaja, gezien. Dubbele spatie Hoe kan ik die spaties mooier opschonen?

    @All
    Hoe is de veiligheid van het script nu?

    [ Bericht 3% gewijzigd door Tarabass op 31-12-2007 20:52:36 ]
    pi_55692522
    quote:
    Op maandag 31 december 2007 20:24 schreef Tarabass het volgende:
    @SuperRembo
    Waarom moet ik de variable $ip escapen in de query? Dit is een integer, en geen string.
    Je had quotjes om $ip staan, dus ik ging er vanuit dat het een string was. Als $ip een int is dan hoef je inderdaad niet te escapen. Waarom zet je het ip om naar een int? Als dat alleen is om 'm in de db te zetten, dan is het logischer om ip2long dicht bij de sql, dus in InsertQuery() te zetten.
    quote:
    $date is een datetime. Waarom vraag je dat?
    Je insert dus eigenlijk een string in een datetime veld. Blijkbaar doet MySQL daar niet zo moeilijk over (MS SqlServer bijvoorbeeld zou 't niet pikken). Je zou ook de MySQL functie now() kunnen gebruiken als je de huidige tijd wil inserten.
    quote:
    Jaja, gezien. Dubbele spatie Hoe kan ik die spaties mooier opschonen?
    Gewoon geen tekst in een veld zetten die je niet in je db wil hebben. Gewoon een label voor het veld zetten.


    Je hebt nog geen controle op de hoeveelheid data die er in het veld staat. Die wordt nu bepaald door de webserver (post_max_size, default 8MB).
    Wil iedereen die in telekinese gelooft nu mijn hand op steken?
    | Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
    pi_55693808
    quote:
    Op maandag 31 december 2007 18:37 schreef smesjz het volgende:

    [..]

    Die server_admin variabele bevat de waarde uit de apache config ServerAdmin. CLI gebruikt niet de SAPI en die variabele hoort gewoon leeg te zijn in CLI.
    En ServerAdmin is nou niet iets waar je blindelings op moet vertrouwen.
    Bij phpinfo() (of php -i) zie je welke variabelen je tot je beschikking hebt, misschien heb je daar wat aan?
    ik had eigenlijk echt server_admin adress nodig maar ik heb het maar gehardcode, script genereert nu geen index warnings meer en daar ging het me om (script zelf werkte vlekkeloos alleen gaf hij dus elke keer index warnings, en was te lui om het uittezoeken..
    nu maar eens uitgezocht en vervolgens dus maar hardcoded ingezet (kon ook prima, vind het zelf minder netjes maar ach)
    pi_55699121
    quote:
    Op maandag 31 december 2007 20:24 schreef Tarabass het volgende:
    Zou je dat uit kunnen leggen? Het is toch een 'and' en de string moet dan toch voldoen aan alle drie?
    Je hebt:
    1
    2
    3
    4
    5
    <?php
     
    if(($data != "Hier je bericht....." && $data != "") && (is_string($data))) {
                
    InsertQuery($ip$data$date);
            }
    ?>


    Mogelijke invoer:
    - $_POST['data'] = null (data bestaat niet als key in de $_POST array) . Dan geeft $data != "" false.
    - $data = "" (lege string) . Dan geeft $data != "" false en is_string($data) true.
    - $data = "Hier je bericht.....". Dan geeft $data != "Hier je bericht....." false.
    - $data = "blabla". Dan geeft ($data != "Hier je bericht....." && $data != "") al true.
    - $data = "1234". Dan geeft ($data != "Hier je bericht....." && $data != "") al true.

    is_string($data) biedt geen meerwaarde boven $data != "" zoals jij het nu gebruikt. Alles in de $_POST array is een string. Dus dit is altijd false:
    if ($_POST['abc'] == 1234)

    Ik zou eerst maar eens wat gaan lezen over veiligheid in scripts voordat je iedere keer anderen hierover gaat vragen, op deze manier leer je maar weinig.
    En het beste werkt gewoon door het zelf te proberen door bewust foute waardes in te voeren: met quotes, punt-comma, te lange tekst etc etc.
    En gebruik voldoende checks met empty() en isset().
    pi_55699981
    quote:
    Op dinsdag 1 januari 2008 11:05 schreef smesjz het volgende:
    [..]
    Dus dit is altijd false:
    if ($_POST['abc'] == 1234)
    [...]
    Nee,
    "1234" == 1234 geeft true
    "1234" === 1234 geeft false
    Wil iedereen die in telekinese gelooft nu mijn hand op steken?
    | Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
    pi_55700542
    quote:
    Op dinsdag 1 januari 2008 12:39 schreef SuperRembo het volgende:

    [..]

    Nee,
    "1234" == 1234 geeft true
    "1234" === 1234 geeft false
    Je hebt gelijk, my bad.
    pi_55703022
    Ik word helemaal gestoord van met data werken met PHP en MySQL. Kan iemand me even kort uitleggen hoe je dit nu het beste aanpakt? Ik moet het elke keer weer uitzoeken en telkens doe ik het weer anders, is niet echt handig met aanpassen.

    Fields voor je database: TIMEDATE ?
    Welke functies gebruiken in php? date()?
    Queries in MySQL voor bv de laatste week, welke functies?

    Ik kom er nu alweer niet uit -_-
    "Reality is an illusion created by a lack of alcohol."
    pi_55703066
    quote:
    Op dinsdag 1 januari 2008 15:49 schreef Dzy het volgende:
    Ik word helemaal gestoord van met data werken met PHP en MySQL. Kan iemand me even kort uitleggen hoe je dit nu het beste aanpakt? Ik moet het elke keer weer uitzoeken en telkens doe ik het weer anders, is niet echt handig met aanpassen.

    Fields voor je database: TIMEDATE ?
    Welke functies gebruiken in php? date()?
    Queries in MySQL voor bv de laatste week, welke functies?

    Ik kom er nu alweer niet uit -_-
    Ik zelf werk altijd met timestamps, al zweren andere mensen weer aan MySQL data / datums, omdat je dan in de query zelf berekeningen uit kan voeren. Persoonlijke voorkeur.

    Met functies als date() kun je van een timestamp weer een fatsoenlijk leesbare datum maken.

    Timestamp: Het aantal seconden tussen 01-01-1970 en de datum die je bedoeld. Dat is in MySQL en PHP een simpele integer.
    pi_55703739
    quote:
    Op dinsdag 1 januari 2008 15:52 schreef Geqxon het volgende:

    [..]

    Ik zelf werk altijd met timestamps, al zweren andere mensen weer aan MySQL data / datums, omdat je dan in de query zelf berekeningen uit kan voeren. Persoonlijke voorkeur.

    Met functies als date() kun je van een timestamp weer een fatsoenlijk leesbare datum maken.

    Timestamp: Het aantal seconden tussen 01-01-1970 en de datum die je bedoeld. Dat is in MySQL en PHP een simpele integer.
    Het ligt er een beetje aan waar je de datum voor nodig hebt. Voor data voor 01-01-1970 is een timestamp niet zo geschikt.
    pi_55703817
    quote:
    Op dinsdag 1 januari 2008 16:31 schreef Light het volgende:

    [..]

    Het ligt er een beetje aan waar je de datum voor nodig hebt. Voor data voor 01-01-1970 is een timestamp niet zo geschikt.
    Negatieve timestamp?
    pi_55704422
    Het is knap waardeloos dat php (nog steeds) geen fatsoenlijke ondersteuning voor datums heeft.
    quote:
    The valid range of a timestamp is typically from Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. (These are the dates that correspond to the minimum and maximum values for a 32-bit signed integer). However, before PHP 5.1.0 this range was limited from 01-01-1970 to 19-01-2038 on some systems (e.g. Windows).
    Wil iedereen die in telekinese gelooft nu mijn hand op steken?
    | Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
    pi_55704565
    Ik durf het haast niet te zeggen, maar een tof Date object zou niet verkeerd zijn.
    pi_55714346
    quote:
    Op dinsdag 1 januari 2008 17:14 schreef Geqxon het volgende:
    Ik durf het haast niet te zeggen, maar een tof Date object zou niet verkeerd zijn.
    PHP heeft sinds 5.1 een DateTime klasse. Nogal slecht gedocumenteerd en 't biedt niet écht veel functionaliteit maar 't werkt wel goed voor tijdzones en tijdsaanpassingen . Zoals bijvoorbeeld.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
    // Tijd in UTC (als je geen windowssysteem gebruikt en je je klok goed hebt ingesteld)
    $timestamp '@'time();

    // De locale tijdzone ...
    $localTimeZone = new DateTimeZone('Europe/Amsterdam');

    // ... en een andere
    $newyorkTimeZone = new DateTimeZone('EST');

    // Maak een date object aan voor de huidige (UTC) tijd
    $dateTime = new DateTime($timestamp);

    // Schuif de datum door naar de volgende ijstijd
    $dateTime->modify('+10000 years -2 weeks');

    // Format de date met binnen verschillende tijdzones
    echo 'UTC           : ' $dateTime->format(DATE_RFC2822) . "\n";
    $dateTime->setTimezone($localTimeZone);
    echo 
    'Local time    : ' $dateTime->format(DATE_RFC2822) . "\n";
    $dateTime->setTimezone($newyorkTimeZone);
    echo 
    'New York time : ' $dateTime->format(DATE_RFC2822);
    ?>

    De format methode accepteert een dateformat string zoals bij de date functie, en kan dus ook dates formatten naar bijvoorbeeld ISO8601, wat dus weer handig is bij databases. Verder kan je de tijd en datum ook nog instellen met setTime(h, m, s) respectievelijk setDate(y, m, d). Anyway, er is genoeg over te lezen .
    pi_55714521
    Ik wil een simpele website maken waar bepaalde mensen rechten krijgen om zelf dingen toe te voegen in een blog. Soort van multi blog dus.
    Ik ben redelijk handig met computers maar van site's maken weet ik nog maar weinig.

    Heeft PHP bijvoorbeeld nou te maken met dit soort multi-upload dingetjes?
    En wat voor software kan ik het beste gebruiken? Dreamweaver?
    Buy it, use it, break it, fix it,
    Trash it, change it, mail - upgrade it,
    Charge it, point it, zoom it, press it,
    Snap it, work it, quick - erase it,
    pi_55717426
    quote:
    Op woensdag 2 januari 2008 00:50 schreef Agiath het volgende:
    Ik wil een simpele website maken waar bepaalde mensen rechten krijgen om zelf dingen toe te voegen in een blog. Soort van multi blog dus.
    Ik ben redelijk handig met computers maar van site's maken weet ik nog maar weinig.

    Heeft PHP bijvoorbeeld nou te maken met dit soort multi-upload dingetjes?
    En wat voor software kan ik het beste gebruiken? Dreamweaver?
    Ik zou beginnen bij www.php.net, dan zie je dat Dreamweaver niet echt handig is
    Just say hi!
    pi_55718111
    quote:
    Op woensdag 2 januari 2008 10:11 schreef Chandler het volgende:

    [..]

    Ik zou beginnen bij www.php.net, dan zie je dat Dreamweaver niet echt handig is
    hmm, DW is, imho, juist een van de beste programma's voor php.
    (oke, ik doe alles in code view, ik kan me voorstellen dat de design view niet prettig werkt)
    pi_55719037
    quote:
    Op woensdag 2 januari 2008 10:11 schreef Chandler het volgende:

    [..]

    Ik zou beginnen bij www.php.net, dan zie je dat Dreamweaver niet echt handig is
    Waarom zou je dat zien op PHP.net?
    pi_55723643
    quote:
    Op woensdag 2 januari 2008 11:45 schreef super-muffin het volgende:

    [..]

    Waarom zou je dat zien op PHP.net?
    Omdat ik aanneem dat ze weten welke editors het beste met hun scripting taal omgaan?

    Verder even offtopic vraagje; weet iemand hoe je kunt instellen naar welk veld je gaat als je op tab drukt? (zonder JS)
    Just say hi!
    pi_55723757
    quote:
    Op woensdag 2 januari 2008 15:02 schreef Chandler het volgende:

    [..]

    Omdat ik aanneem dat ze weten welke editors het beste met hun scripting taal omgaan?
    Hm, ben ik het niet met je eens. Het verschilt van persoon tot persoon, dus je kunt het beste zelf een paar programma's uitproberen.
    quote:
    Verder even offtopic vraagje; weet iemand hoe je kunt instellen naar welk veld je gaat als je op tab drukt? (zonder JS)
    Dat is meer iets van HTML, maar met het attribuut tabindex.
      woensdag 2 januari 2008 @ 15:10:11 #94
    62215 qu63
    ..de tijd drinkt..
    pi_55723813
    quote:
    Op woensdag 2 januari 2008 15:02 schreef Chandler het volgende:

    [..]

    Omdat ik aanneem dat ze weten welke editors het beste met hun scripting taal omgaan?

    Verder even offtopic vraagje; weet iemand hoe je kunt instellen naar welk veld je gaat als je op tab drukt? (zonder JS)
    tabindex=
    It's Time To Shine
    [i]What would life be like without rhethorical questions?[/i]
    pi_55730981
    wie weet in hoeverre PHP 3 en PHP4 scripts draaien onder PHP5?
    dit omdat ik em best wil upgraden maar dan moet ik wel zeker weten dat alles het blijft doen
    pi_55731619
    quote:
    Op woensdag 2 januari 2008 21:10 schreef mschol het volgende:
    wie weet in hoeverre PHP 3 en PHP4 scripts draaien onder PHP5?
    dit omdat ik em best wil upgraden maar dan moet ik wel zeker weten dat alles het blijft doen
    http://nl2.php.net/manual/en/migration4.php
    http://nl2.php.net/manual/en/migration5.php
    http://nl2.php.net/manual/en/migration51.php
    http://nl2.php.net/manual/en/migration52.php

    Stap voor stap.
    pi_55737198
    quote:
    Op donderdag 27 december 2007 11:03 schreef SuperRembo het volgende:

    [..]

    Dan doe jij het goed en doet colourAgga het fout is_int() met een string als input (in dit geval uit $_GET) geeft altijd false!
    Nee, bij is_numeric() worden 0x005, +123e2 ook als true gezien, dus ook niet de beste oplossing.Imo beste manier (zie hieronder), sowieso beter om als je een getal verwacht de data type naar int te zetten (stel als je ermee berekeningen gaat uitvoeren), maar omdat PHP vergevingsgezind is geeft dit geen fouten.

    1
    2
    3
    <?php
     is_int
    (intval($_GET['..'])) 
    ?>


    Do your work. Don't be stupid.
    Naamtopic #1: Nacht bagger #7 - Waar DeKubus te aardig is
    pi_55738829
    quote:
    Op donderdag 3 januari 2008 01:35 schreef DeKubus het volgende:

    [..]

    Nee, bij is_numeric() worden 0x005, +123e2 ook als true gezien, dus ook niet de beste oplossing.Imo beste manier (zie hieronder), sowieso beter om als je een getal verwacht de data type naar int te zetten (stel als je ermee berekeningen gaat uitvoeren), maar omdat PHP vergevingsgezind is geeft dit geen fouten.
    [ code verwijderd ]

    :)
    intval() levert een integer op, dus is_int(intval()) zal altijd true zijn.
    1
    2
    3
    4
    5
    6
    <?php
    $blaat 
    intval($_GET['blaat'];
    if(
    == $blaat) {
        
    //ongeldig!
    }
    ?>


    Overigens zou een database ook +123e2 moeten accepteren als numeriek. Het kan lastiger worden als je 123.2 probeert te plaatsen in een integerveld.
    pi_55744945
    Zowiezo is een van de dingen die ik het meest hekel in PHP de vergevingsgezindheid en de makkelijkheid voor de typen Dat maakt gewoon beveiliging van scripts etc. zo een stuk lastiger.

    Zoals eerder al gezegd gebruik ik altijd hungarian prefixes. Deze werken in combinatie met een klasse die variabelen checkt en ze direct goed cast. Dat gaat goed zolang je als gebruiker van die klasse er ook echt vanuit gaat dat dat erin zit. Ook al kun je met PHP ook gewoon net zo goed iets anders erin gooien, of het als iets anders benaderen.

    Over de datums eigenlijk helemaal hetzelfde verhaal, wij slaan op met de timestamps van de server in de database in int velden. Vervolgens kunnen gebruikers daar correctie op loslaten en zelf kiezen hoe ze dit willen laten zien via een uitgebreide Date klasse die ik als ik weer op kantoor ben eens zal vragen of we die ook kunnen publiceren

    Wat denken jullie trouwens, de klasses die je nodig hebt voordat je fatsoenlijk aan een project kan beginnen? Ik denk:
    - Date
    - Verify
    - Authentification
    - SQL
    - Template

    Dat zijn in ieder geval de 5 die ik het meeste gebruik jullie nog toevoegingen?
      donderdag 3 januari 2008 @ 15:39:46 #101
    37634 wobbel
    Da WoBBeL King
    pi_55747184
    Wij hebben op het werk een administratie programma welke op TPS bestanden draait (TopSpeed database)

    Nu lukt het mij prima om er wat gegevens uit te krijgen door te zoeken op klant nummer met onderstaande code:

    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $SQL_Value
    = "100857";
    $ODBC_Klant_Connect                            = odbc_connect ( "S&S Webfile", "", "");
    $ODBC_Klant_Select                            = "SELECT * FROM BAC5130 WHERE Nr = " . $SQL_Value . "";
    $ODBC_Klant_Exec                            = odbc_exec( $ODBC_Klant_Connect, $ODBC_Klant_Select );
    $ODBC_Klant_Assoc                            = odbc_fetch_array ( $ODBC_Klant_Exec );
    // geeft netjes 1 row terug :)
    ?>


    Nu zou ik ook graag willen zoeken op naam, dat als ik zoek naar "aap" ik alle resultaten krijg zoals "Schaap, Aapjes" etc...dus ik dacht dit:

    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $SQL_Value
    = "aap";
    $ODBC_Klant_Connect                            = odbc_connect ( "S&S Webfile", "", "");
    $ODBC_Klant_Select                            = "SELECT * FROM BAC5130 WHERE NM = '%" . $SQL_Value . "%'";
    $ODBC_Klant_Exec                            = odbc_exec( $ODBC_Klant_Connect, $ODBC_Klant_Select );
    $ODBC_Klant_Assoc                            = odbc_fetch_array ( $ODBC_Klant_Exec );
    // geeft 0 rows weer, maar zou 2 rows moeten teruggeven (Schaap en Aapjes zitten in de DB)
    ?>


    Maar helaas, dit werkt niet ik krijg dan geen resultaten...als ik de wildcards (%) weglaat en ik vul de exacte naam in dan vind ik het wel

    Hoe kan ik zoeken met wildcards? Hier staat iets meer info over ODBC TopSpeed (PDF)
      donderdag 3 januari 2008 @ 15:55:53 #102
    136730 PiRANiA
    All thinking men are atheists.
    pi_55747568
    LIKE in plaats van = ?
    pi_55748188
    quote:
    Op donderdag 3 januari 2008 05:47 schreef Light het volgende:

    [..]

    intval() levert een integer op, dus is_int(intval()) zal altijd true zijn.
    [ code verwijderd ]

    Overigens zou een database ook +123e2 moeten accepteren als numeriek. Het kan lastiger worden als je 123.2 probeert te plaatsen in een integerveld.
    My bad, bedoelde zo::

    1
    2
    3
    4
    5
    6
    <?php
     
    if (strval(intval($_GET['..'])) == $_GET['..']) {
            
    $_id intval($_GET['..']);
            ....

    ?>


    +123e2 is hetzelfde als 12300, alleen $_GET, $_POST etc. is altijd van type string. Dus dit wordt niet omgezet naar 12300, maar letterlijk +123e2, maak je er int van krijg je 123. Sommige maken ook gebruik van ctype_* (digit dit geval), persoonlijk ben ik daar geen voorstander van.

    [ Bericht 9% gewijzigd door DeKubus op 03-01-2008 16:29:29 ]
    Do your work. Don't be stupid.
    Naamtopic #1: Nacht bagger #7 - Waar DeKubus te aardig is
    pi_55748564
    -- stuuk

    [ Bericht 98% gewijzigd door colourAgga op 04-01-2008 03:05:56 ]
    pi_55750288
    quote:
    Op donderdag 3 januari 2008 15:39 schreef wobbel het volgende:
    [...]
    ...WHERE NM LIKE '%" . $SQL_Value . "%'...
    Wil iedereen die in telekinese gelooft nu mijn hand op steken?
    | Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
      donderdag 3 januari 2008 @ 18:27:05 #106
    37634 wobbel
    Da WoBBeL King
    pi_55751150
    quote:
    Op donderdag 3 januari 2008 17:47 schreef SuperRembo het volgende:

    [..]

    ...WHERE NM LIKE '%" . $SQL_Value . "%'...
    werkt gedeeltelijk.

    Ik heb ook een record met de naam "Mierlo, van"

    Als ik als $SQL_Value invul "mierlo" dan vindt ie niks, zoek ik op "Mierlo" (dus met hoofdletter) dan vind ie het wel ineens
    pi_55761164
    Momenteel ben ik bezig met een rich text editor, javascript dus, maar de rtf tekst die wordt gegenereerd in het javascript-textvak wil ik graag als een bruikbare variabele voor phph hebben. Het liefst dat ie bij de 'submit' de rtf als global kan mee geven, aan een andere pagina. Iemand een idee dit aan te pakken?
    pi_55764366
    quote:
    Op donderdag 3 januari 2008 18:27 schreef wobbel het volgende:

    [..]

    werkt gedeeltelijk.

    Ik heb ook een record met de naam "Mierlo, van"

    Als ik als $SQL_Value invul "mierlo" dan vindt ie niks, zoek ik op "Mierlo" (dus met hoofdletter) dan vind ie het wel ineens
    kan je niet beter MATCH...AGAINST gebruiken dan?
      vrijdag 4 januari 2008 @ 09:35:06 #109
    37634 wobbel
    Da WoBBeL King
    pi_55764779
    quote:
    Op vrijdag 4 januari 2008 09:09 schreef Xcalibur het volgende:

    [..]

    kan je niet beter MATCH...AGAINST gebruiken dan?
    Daar heb ik nog nooit mee gewerkt, hoe werkt dat dan? En bovenal, wordt dat ondersteund?
    pi_55766632
    quote:
    Op vrijdag 4 januari 2008 09:35 schreef wobbel het volgende:
    Daar heb ik nog nooit mee gewerkt, hoe werkt dat dan? En bovenal, wordt dat ondersteund?
    http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html

    Je moet alleen een index maken op het veld waarin je zoekt geloof ik, maar dat staat er ongetwijfeld bij. Je hebt ook de optie IN BOOLEAN MODE, zodat je ook met + en - kunt zoeken zeg maar. Werkt prima
      vrijdag 4 januari 2008 @ 12:11:15 #111
    37634 wobbel
    Da WoBBeL King
    pi_55768238
    quote:
    Op vrijdag 4 januari 2008 11:12 schreef Xcalibur het volgende:

    [..]

    http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html

    Je moet alleen een index maken op het veld waarin je zoekt geloof ik, maar dat staat er ongetwijfeld bij. Je hebt ook de optie IN BOOLEAN MODE, zodat je ook met + en - kunt zoeken zeg maar. Werkt prima
    Ik werk niet met MySQL, ik gebruik een ODBC plugin voor TopSpeed database, zie enkele posts hierboven
    pi_55768981
    Beste allemaal,

    Ik heb een mailing list manager geschreven voor een van mijn sites en daarmee wil ik mailtjes gaan versturen, echter zit ik met een probleem!.

    Als ik een test bericht naar mijn eigen email adres stuur (hotmail) krijg ik de inhoud van het bericht niet direct te zien. Ik snap niet waarom en daarom vraag ik hulp ;)

    De headers/bericht
    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
    X-Message-Delivery: Vj0zLjQuMDt1cz0wO2k9MDtsPTA7YT0w 
    X-Message-Status: n:0 
    X-SID-PRA: Maillinglist v1 <eric******@******.com> 
    X-SID-Result: SoftFail 
    X-Message-Info: JGTYoYF78jG9yuoI+h0kJ1x+NrLFHMOQAIfJCH59JzMK4GcsJQglp8wYMw3/yAlCqsYg6byLbCkhuUFqD9aY0P8j+djMM+jf 
    Received: from server28.icehosting.nl ([195.22.100.18]) by bay0-mc9-f9.bay0.******.com with Microsoft SMTPSVC(6.0.3790.2668); 
         Fri, 4 Jan 2008 02:02:57 -0800 
    Received: from apache by server28.icehosting.nl with local (Exim 4.67) 
        (envelope-from <ericbrug@******.nl>) 
        id 1JAjOC-0001zj-5h 
        for eric******@******.com; Fri, 04 Jan 2008 11:02:56 +0100 
    To: eric******@******.com 
    Subject: Preview: Meisjes jatten fiets van postbode 
    X-PHP-Script: mailling.******.nl/index.php for 82.73.150.117 
    From: "Maillinglist v1" <eric******@******.com> 
    Reply-To: "Maillinglist v1" <eric******@******.com> 
    MIME-Version: 1.0 
    Message-ID: <1199440976-eric******@******.com> 
    X-Mailer: PHP v5.2.3 
    Date: Fri, 04 Jan 2008 11:02:56 +0100 
    Return-Path: ericbrug@******.nl 
    X-OriginalArrivalTime: 04 Jan 2008 10:02:58.0225 (UTC) FILETIME=[FB9B0A10:01C84EB8] 


    Twee meisjes uit Amersfoort en Nieuwegein kregen de politie op hun dak toen ze een fiets steelden. Opzich niet heftig, ware het niet dat de fiets van een postbode was. De 17 en 18 jaar oude dames stalen de fiets bij station Veenendaal-West en fietsten vervolgens naar Overberg. 

    Aan de fiets hing nog een zak met post. Die dumpten ze onderweg samen met wat fietstassen. De politie hield ze vervolgens aan in Overberg. 

    Op het bureau gingen de meisjes door de knieën en bekenden ze dat ze de fiets gejat hadden. Met een proces-verbaal in het vooruitzicht zijn de meisjes naar huis gestuurd. De fiets is teruggegeven aan de postbode van dienst. 
    </ 


    Heeft iemand een idee wat ik fout doe?
    Just say hi!
      vrijdag 4 januari 2008 @ 12:59:18 #113
    52200 ViPeRII
    It's a good day to die
    pi_55769534
    Wat moet je eerst doen dan , voordat je de inhoud ziet?
    -- ViPeRII --
    pi_55770103
    quote:
    Op het bureau gingen de meisjes door de knieën...
    Naughty girls
    pi_55771273
    Is het niet gewoon mailinglist met maar 1 L? Verder zie ik zo een twee drie niks fout in de headers van je mail

    Trouwens is je domeinnaam wel erg simpel te raden zo heh meneertje bruggema.nl.
    pi_55771728
    colourAgga, klopt

    Ennuh @ViPeRII: klikken op inhoud zien
    Just say hi!
    pi_55772319
    quote:
    Op vrijdag 4 januari 2008 12:11 schreef wobbel het volgende:
    Ik werk niet met MySQL, ik gebruik een ODBC plugin voor TopSpeed database, zie enkele posts hierboven
    Oh sorry, daar had ik overheen gelezen
    pi_55790204
    quote:
    Op donderdag 3 januari 2008 14:01 schreef colourAgga het volgende:
    Wat denken jullie trouwens, de klasses die je nodig hebt voordat je fatsoenlijk aan een project kan beginnen? Ik denk:
    - Date
    - Verify
    - Authentification
    - SQL
    - Template

    Dat zijn in ieder geval de 5 die ik het meeste gebruik jullie nog toevoegingen?
    Ik gebruik in grote lijnen hetzelfde lijstje, alleen geen date class:
    - ADOdb
    - Authenticator (zelfgeschreven authenticatie class)
    - Importexport (zelfgeschreven CSV import / export class)
    - phpMailer
    - phpThumb
    - Smarty
    - UTF-8
    - Validator (zelfgeschreven validatie class)

    Wat gebruik jij voor date class? Ik heb eerlijk gezegd nooit echt problemen met datums, dus ik ben wel benieuwd waarom die van jou zo handig is?
    pi_55790345
    quote:
    Op vrijdag 4 januari 2008 12:38 schreef Chandler het volgende:
    Beste allemaal,

    Ik heb een mailing list manager geschreven voor een van mijn sites en daarmee wil ik mailtjes gaan versturen, echter zit ik met een probleem!.

    Als ik een test bericht naar mijn eigen email adres stuur (hotmail) krijg ik de inhoud van het bericht niet direct te zien. Ik snap niet waarom en daarom vraag ik hulp

    De headers/bericht
    [ code verwijderd ]

    Heeft iemand een idee wat ik fout doe?
    ziet er opzich prima uit als ik et zo lees, maar omdat je een mailinglist hebt: stel je mailinglist headers in anders wordt het mogelijk als spam gezien.. (o.a. een afmeld adres is zeer handig..)
    pi_55791058
    quote:
    Op zaterdag 5 januari 2008 10:49 schreef mschol het volgende:

    [..]

    ziet er opzich prima uit als ik et zo lees, maar omdat je een mailinglist hebt: stel je mailinglist headers in anders wordt het mogelijk als spam gezien.. (o.a. een afmeld adres is zeer handig..)
    Hoe moet ik de headers instellen dan? en afmeld adres kan in de mail vermeld worden waarbij het script de mogelijkheid heeft om gebruikers af te melden.

    Iets in dezefde trand, ik ben bezig met een email class, maar deze geeft niet het resultaat wat ik voor ogen heb.

    Wat lukt!:
    Ik kan bestanden invoegen, zelfs als embedded.

    Wat lukt niet?
    Ik krijg de HTML opzet niet als eerste te zien maar als ingevoegd bestand

    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    <?php


    // http://www.metalshell.com/view/source/115/
    class mailer
    {
        var $errors = array();
        var $eol = "";

        // email settings
        var $subject = "";
        var $content = array();

        // added files
        var $attatchments = array(); // added
        var $embedded     = array(); // for viewing
        
        var $headers = array();
        var $boundary = "";
        var $boundaries = array();
        var $contentType = array();
        

        function mailer()
        {
            $this->errors = array("nofilefound"    => "Sorry, het bestand %s bestaat niet",
                                  "cannotreadfile" => "Sorry, het bestand %s kan niet gelezen worden",
                                  "contenttypeerr" => "Sorry, het type content '%s' is incorrect (alleen text/html)");

            $this->eol = "\r\n";
            $this->contentType = array("text", "html");
            $this->boundary = substr(md5(time()), 0, 10);

            $this->headers = array('MIME-Version:' => '1.0',
                                   'Content-Type:' => 'multipart/mixed; boundary="' . $this->boundary . '"');

            $this->charSet = 'iso-8859-1';
        }
        
        function setHeader($type, $value)
        {
            $this->headers[$type.":"] = $value;
        }

        function send($to)
        {
            $_body    = "This is a multi-part message in MIME format." . $this->eol . $this->eol;
            $_headers = "";
            // content first

            foreach ($this->headers AS $key => $value)
            {
                $_headers .= $key . " ". $value . $this->eol;
            }

            // werkt niet :( verwijder dit en krijg alleen de text inhoud te zien, niet de html inhoud!
            $prev .= $this->boundary;
            foreach ($this->boundaries AS $key)
            {
                $_body .= "--" . $prev . $this->eol;
                $_body .= 'Content-Type: multipart/related; '.$this->eol;
                $_body .= '        type="multipart/alternative";' . $this->eol;
                $_body .= '        boundary="--' . $key . '"' . $this->eol;
                $prev = $key;
            }

            $a = array("content", "embedded", "attatchments");
            
            foreach ($a AS $type)
            {
                if (count($this->$type) > 0)
                {
                    foreach ($this->$type AS $content)
                    {
                        $_body .= $this->eol . $content;
                    }
                }
            }

            echo '<pre>';
            print_r($_headers);
            print_r($_body);

            if (!mail($to, $this->subject, $_body, $_headers))
            {
                return false;
            }
            return true;
        }
        

        function subject($subject)
        {
            $this->subject = $subject;
        }
        
        function isEmail($email)
        {
            if (!preg_match('/^[A-Z0-9._%-]+@(?:[A-Z0-9-]+\\.)+[A-Z]{2,4}$/i', $email))
            {
                return false;
            }

            return $email;
        }

        function setCharset($charset)
        {
            $this->charSet = $charset;
        }

        function setContent($text, $type = "text")
        {
            /*
            
            $text = content to add to email
            $type = type of content (text/html)
            
            */
            
            if (in_array($type, $this->contentType))
            {
                $contentBuffer  = $this->eol . '--' . $this->boundary . $this->eol;

                if ($type == "text")
                {
                    $contentBuffer .= 'Content-Type: text/plain; charset="' . $this->charSet . '"'. $this->eol;
                }
                else
                {
                    $contentBuffer .= 'Content-Type: text/html; charset="' . $this->charSet . '"' . $this->eol;
                }
                
                $contentBuffer .= 'Content-Transfer-Encoding: quoted-printable' . $this->eol . $this->eol;
                $contentBuffer .= $text . $this->eol;

                $this->content[$type] = $contentBuffer;
            }
            else
            {
                $this->error[] = sprintf($this->errors['contenttypeerr'], $type);
            }
        }
        
        function clearContent()
        {
            /*
            
            Clear email content (text/html)
            
            */
            
            $this->content = array();
        }
        
        function addFile($file, $mime = "text/plain", $type = 'attatchment')
        {
            /*
            
            $file = file to attatch
            $type = attatchment type (attatchment/embedded)

            */

            if (is_file($file))
            {
                $basename   = basename($file);
                $fileinfo   = pathinfo($file);

                $fd = fopen($file, "rb");
                if ($fd)
                {
                    $filebuffer = fread($fd, filesize($file));
                    $filebuffer = chunk_split(base64_encode($filebuffer), 72) . $this->eol;

                    $b = substr(md5(time()), 0, 5) . "xxx";
                    $this->boundaries[] = $b . $this->boundary;
                    $header = '--' . $b . $this->boundary . $this->eol;
                    if ($type == "embedded")
                    {
                        $ref_id = md5(uniqid(time())) . '.' . $fileinfo['extension'];

                        $header .= 'Content-Type: ' . $mime . '; name="' . $basename . '"' . $this->eol;
                        $header .= 'Content-Transfer-Encoding: base64' . $this->eol;
                        $header .= 'Content-Disposition: inline; filename="' . $basename . '"' . $this->eol;
                        $header .= 'Content-ID: <' . $ref_id . '>' . $this->eol . $this->eol;
                        $header .= $filebuffer;
                        $header .= $this->eol . $b . $this->boundary . "--" . $this->eol;

                        $this->embedded[] = $header;

                        return '<img src=3D"cid:' . $ref_id . '">';
                    }
                    else
                    {
                        $header .= 'Content-Type: '. $mime . '; name="' . $basename . '"' . $this->eol;
                        $header .= 'Content-Transfer-Encoding: base64' . $this->eol;
                        $header .= 'Content-Disposition: attachment; filename="' . $basename . '"'.$this->eol.$this->eol;
                        $header .= $filebuffer;
                        $header .= $this->eol . $b . $this->boundary . "--" . $this->eol;

                        $this->attatchments[] = $header;
                    }
                }
                else
                {
                    $this->error[] = sprintf($this->errors['cannotreadfile'], $file);
                }
            }
            else
            {
                $this->error[] = sprintf($this->errors['nofilefound'], $file);
            }
        }
    }

    $t = new mailer();

    // vanaf, reply to etc
    $t->setHeader("From", '"Eric Bruggema" <****@hotmail.com>');
    $t->setHeader("Reply-to", '"Eric Bruggema" <****@hotmail.com>');


    // zet onderwerp
    $t->subject("test bericht van Eric");

    $t->addFile("test.txt", "text/plain");
    $img = $t->addFile("test.png", "image/png", "embedded");

    $t->setContent("hello world");
    $t->setContent('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <style type="text/css">
    html,body{height:100%;background-color:#F7D708;font-family:verdana;font-size:13px;}
    #l{float:left;width:200px;height:100%;border-right:5px solid #9CCF31;background-color:#FF9E00;}
    #logo{text-align:center;width:200px;background-color:#C7EB6E;border-bottom:5px solid #9CCF31;margin:0;}
    #l h2{margin:0;padding-top:25px;font-size:50px;}
    #l h3{font-size:15px;padding:0;}
    #logobot{width:200px;height:100%;text-align:center;}
    #l UL{list-style-type:none;padding:15px 0 0 0;margin:0;width:100%;}
    #l LI{padding:0;margin:0;width:100%;text-align:center;font-size:20px;padding-top:10px;font-size:15px}
    #l a{color:#fff;text-decoration:none;}
    #l a:hover{font-weight:bold;color:#fff;text-decoration:none;}
    a{color:#F7D708;text-decoration:none;}
    a:hover{font-weight:bold;color:#F7D708;text-decoration:none;}
    #r{float:right;width:495px;height:400px;background-color:#79B837}
    #c{margin:2%;width:90%;text-align:center;border:5px dotted #9CCF31;margin-top:10px;padding:10px;font-style:italic}
    p{text-align:left;}
    .t{padding:5px 10px 0 10px; margin:0;}
    .t input{width:250px;}
    #c-c{margin:125px 100px 125px 100px;padding:5px 0px 0 10px;width:275px;background-color:orange;height:150px;border:1px dotted #9CCF31;}
    </style>
    </head>
    <body>
    <div id="l">
    <div id="logo">
    <h2>ABC</h2>
    <h3>DEF</h3>
    </div>
    <div id="logobot">
    l><li><a href="?p=">Start</a></li><li><a href="?p=i">Informatie</a></li><li><a href="?p=r">Meld je link aan</a></li><li><a href="?p=p">Plugin</a></li><li><a href="?p=z">Zoeken</a></li><li><a href="?p=t">Top 10</a></li><li><a href="?p=c">Contact</a></li></ul></div>
    </div>
    <div id="r">
    content
    </div>
    </body>
    </html>', "html");

    $t->send("****@hotmail.com");

    ?>


    Uitkomst:

    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    X-Message-Delivery: Vj0zLjQuMDt1cz0wO2k9MDtsPTA7YT0w
    X-Message-Status: sF:0
    X-SID-PRA: Eric Bruggema <****@hotmail.com>
    X-SID-Result: SoftFail
    X-Message-Info: JGTYoYF78jE+WU0KSdwFVTx6sCmaha1t92n0MUkmdCuLQ3hZoCgNJ7xYuaHWf0hm0arBXeDtbIUENcq9FHju8cl9f9E2pgal
    Received: from server28.icehosting.nl ([195.22.100.18]) by bay0-mc1-f12.bay0.hotmail.com with Microsoft SMTPSVC(6.0.3790.2668);
        Sat, 5 Jan 2008 02:43:34 -0800
    Received: from apache by server28.icehosting.nl with local (Exim 4.67)
       (envelope-from <****@bruggema.nl>)
       id 1JB6V2-0005pP-9d
       for ****@hotmail.com; Sat, 05 Jan 2008 11:43:32 +0100
    To: *****@hotmail.com
    Subject: test bericht van Eric
    X-PHP-Script: *****.php for *****
    MIME-Version: 1.0
    Content-Type: multipart/mixed; boundary="1a97e8797f"
    From: "Eric Bruggema" <*****@hotmail.com>
    Reply-to: "Eric Bruggema" <*****@hotmail.com>
    Message-Id: <E1JB6V2-0005pP-9d@server28.icehosting.nl>
    Date: Sat, 05 Jan 2008 11:43:32 +0100
    Return-Path: *****@bruggema.nl
    X-OriginalArrivalTime: 05 Jan 2008 10:43:34.0559 (UTC) FILETIME=[D22FDAF0:01C84F87]


    This is a multi-part message in MIME format.

    --1a97e8797f
    Content-Type: multipart/related; 
            type="multipart/alternative";
            boundary="--1a97exxx1a97e8797f"
    --1a97exxx1a97e8797f
    Content-Type: multipart/related; 
            type="multipart/alternative";
            boundary="--1a97exxx1a97e8797f"


    --1a97e8797f
    Content-Type: text/plain; charset="iso-8859-1"
    Content-Transfer-Encoding: quoted-printable

    hello world


    --1a97e8797f
    Content-Type: text/html; charset="iso-8859-1"
    Content-Transfer-Encoding: quoted-printable

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <style type="text/css">
    html,body{height:100%;background-color:#F7D708;font-family:verdana;font-size:13px;}
    #l{float:left;width:200px;height:100%;border-right:5px solid #9CCF31;background-color:#FF9E00;}
    #logo{text-align:center;width:200px;background-color:#C7EB6E;border-bottom:5px solid #9CCF31;margin:0;}
    #l h2{margin:0;padding-top:25px;font-size:50px;}
    #l h3{font-size:15px;padding:0;}
    #logobot{width:200px;height:100%;text-align:center;}
    #l UL{list-style-type:none;padding:15px 0 0 0;margin:0;width:100%;}
    #l LI{padding:0;margin:0;width:100%;text-align:center;font-size:20px;padding-top:10px;font-size:15px}
    #l a{color:#fff;text-decoration:none;}
    #l a:hover{font-weight:bold;color:#fff;text-decoration:none;}
    a{color:#F7D708;text-decoration:none;}
    a:hover{font-weight:bold;color:#F7D708;text-decoration:none;}
    #r{float:right;width:495px;height:400px;background-color:#79B837}
    #c{margin:2%;width:90%;text-align:center;border:5px dotted #9CCF31;margin-top:10px;padding:10px;font-style:italic}
    p{text-align:left;}
    .t{padding:5px 10px 0 10px; margin:0;}
    .t input{width:250px;}
    #c-c{margin:125px 100px 125px 100px;padding:5px 0px 0 10px;width:275px;background-color:orange;height:150px;border:1px dotted #9CCF31;}
    </style>
    </head>
    <body>
    <div id="l">
    <div id="logo">
    <h2>ABC</h2>
    <h3>DEF</h3>
    </div>
    <div id="logobot">
    l><li><a href="?p=">Start</a></li><li><a href="?p=i">Informatie</a></li><li><a href="?p=r">Meld je link aan</a></li><li><a href="?p=p">Plugin</a></li><li><a href="?p=z">Zoeken</a></li><li><a href="?p=t">Top 10</a></li><li><a href="?p=c">Contact</a></li></ul></div>
    </div>
    <div id="r">
    content
    </div>
    </body>
    </html>

    --1a97exxx1a97e8797f
    Content-Type: image/png; name="test.png"
    Content-Transfer-Encoding: base64
    Content-Disposition: inline; filename="test.png"
    Content-ID: <bc5b21505784b333b98f32c09225bda2.png>

    iVBORw0KGgoAAAANSUhEUgAAAzAAAAAmCAYAAAAbb34AAAAABGdBTUEAAK/INwWK6QAAABl0
    RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAiPSURBVHja7J1Lkts2EIbZspzk
    Dl6mcohsffBss8oRsvQZUqmU2RE1ogiCeDQepDie7yvTGlEiAAJgo3+gSYmqDhO/fvkyvchj
    uzjb9bF9vm0/3bafb9sv0/b7169/DR+Mqb7udfb2b5C5xqaXx77p//tXdBzG7zqMt1cdb3+/
    7RzmOn+muc7gkZgsf8e+6x0jItHvi3usm0fiePW/56aVyHPOVywVGjnP1eeBMktN4zllnc8h
    Vv50MtKlL50tHQCAHmPkWdN005HYeHp0mfxxubIsoXEgNTZIYGzPleuej/PZqg4MFZrzC1bt
    cytb0DcK+SruOUX8F794kvI/IvUiofLOacz5OO/F91n8fdN79zjn9TK9uj7L7e9Pnz79cPbi
    zz/++O328s9j+/e2/Xfbvk/V+/e3b2Pq2CvmttxZjBoFWRTgG7fO9nlf51Iyjnq3NBvSF3vl
    9kvLkKb06RD90zQKMACAH0L0bD3Z1+a/UxlMKVbmmztKKgRFNH3VrufTvaYjeerhHVtfl/f7
    uvzdzcy1IvGqjD6sMd7ZEB9leAEAAAAAOruxo+fOmjTGxZiBZIQ8AAAAAABAiYCpWhS5VGYG
    AAAAAADQgnhipknAaOI9IWQAAAAAANDCHEJWzCWTqGUfAAAAAABACaOjL7REa1hCyEIrLggZ
    AAAAAADoiele+0vpAYgYAAAAAABoxF8kMd+icqHuAAAAAADgRRQ/7TgnYDSjlAAAAAAAAFrF
    y2DVGFfvACkTM/wkDAAAAAAAVDEOB/0ODAAAAAAAQCsyVKyIlDyFzH9PGBkAAAAAAPQUNF0E
    TErIAAAAAAAAHCJeSgUMAAAAAADAHnR7jLK2JA4AAAAAAGCkOYRMM/sQMQAAAAAAUEP1okjJ
    TfzamhkAAAAAAICnNboLmG6ZAQAAAAAAtGgMbuIHAAAAAIDTCRWrgMmFh/EbMAAAAAAA0EPA
    VP1My8WoiNTwHQAAAAAAAKuAmZDSA2t+yJIVGAAAAAAA6ClmzPqi5ndgLJ8BAAAAAAB0FS8W
    AQMAAAAAALCHcBkfr24YWTak7ErdQdeeqA8BLVIe0Ei9QQUi9LSjR5vh0V+pewAAaBxSQqsv
    Wafo2pAZHNzCZ3IVsg737XM6CSD+Pm7dv2dxg0gDADjO3A7rlRgTV4PPHLt5H69hZ2HhOwdU
    OAAgLF97HmcQNGeb0AIAaDBno2tire7u9SPX2NAwCLiDGsIiUjfGMDJm0AFei9UpZ2XiPPZK
    K9uwVx2wMgUAHU1Z8ZOOW0LITuV13geVCof5vbjOqfM7rQDYMYys+pwlI1sRU9BPFeRNqbZm
    IS+7nt77xEOs7t6rSDu6PZQQOwBoZxwKQ8dqBczLRizXOPsG8/nZC+67CK027DaQVJ7f+3A0
    dHl5tK+GtEeiO3Y5TQQMHNnnjd1tbfKk6NreXkeavKp+HP0ozXbxLLbTPZdZYImco/32qKMW
    UcTqEMC7EzBVOqMphGzvez9mI3Q3SAknU2rSfxj/VtEhgTLJSwZBXYoRGNjE/Xy3/MVczqRu
    eLZPla9nyP7VTomil3Zx8o6wTq8Rw+ukCtOVeFoiWnZwsj/Ladp/GjE2964YpkROK7pC48tB
    tmxdJh2WOTs55bUjT4EnhmxYRQI4iYgpjuy6ZjxRjYyY3a2ma0imbXpf4vjPsy7mYx7GX3cR
    G2ExIY7xbxcGidWH+yFrj197nlN81OjXO9T+BS1yRDTrogXPUaT+EkCkvEAv6I5+qmQ7jN9d
    tFkkNDjh2uInqq3YCWf6KGGZbH9vAkQkVl4ptMP7iK7ZCV+yPMbBDjnysTGx18ScuCvuHVdP
    WsvXuzwAkBQvxVwNFnxXEeMv98aNTt75X93bUmy89D6AiDGvrFOt24FdS8rijJdVwke3g6//
    TLOg4y6yTUBL87N/uOQZXlWznXeHgSr5iXReKtEKRxIsTmDQjPWfbkn3leL2tMaRhdLVqjoK
    Xm3PsCSrcOspLKVQDEpG4KXbP94+mhBpGilXS7hTIG9Zjx9rsSVdxdV8DnOduuHYe4WoRUPA
    G4XHKmKjUHT4IeqhMqTC2AGgeVDtsgJjyaSrMcsZi7KZFV2cYrV73hpZkYkJnbLVhq2AkNAq
    jV/eZBYaFwDBicVtDJbmR9TotzU3eVnSS0LtXy4Zh7Q7IQWCxd+Fuji15dP+orbckMXyFdth
    Q+4aENe/7VRHiYmX3PVhuNbLhKUWikE12wO3PGsroXezuK1Qm/hdyuU3zHrJJyfAxBchahOA
    6/Px85OKfqHr4msoxLDecZ/LNao6D0loF0mucCkRQXffY8iHfMceo829NgBd8MPHdr8HpouQ
    sQiXsCHSiK+vi58eO26IiIVQWiupMfjLKhmh8pA57iAX0z0aHsBdoSRJbaF58aRhR1/9iT2t
    6wyhcXzVdtGBSvO7jIdZXZs+kwWNDndg1Qmd1CIc1tf1/n6FdTVCO/UkzzWXxu4qxvPynOOn
    A6cxudFBWAbFYLhtQytJUuCsh+cnNCvSgmFxWjDZ47anRAoi/nnZVvnmybi1zVVnNWfwRrj1
    WLFq28SK39INZCvCUuXy9i0iSTbjVk4M3R0RHTMtHxEvmo6MiD6lLuCjIGQAmgSMqyt2+x2Y
    biswm0cZR2dPFrGiKVGia12ymEQnHGszwCyCQxKiKLlXM45GzIC7Njvh/Ky+FhQEmnf+1eDS
    ayjXhNBJWP74eG1z5iTtPxU7RZL32iK1vqOoWPV/5UfpmrTkVn3vH5KnSb9fKhSGMRisXAdE
    LkWplFSqximCgK0I+Xnq11nO4VdDPYpVvElSqNnEmeYbQH2n3/0sIgA01j80Kt5XYW2aE1Pq
    Cahl31acbC20Oyn2/FOcwVbdELW4xNBY3okwtpVI0/nhlbZQuqldx3FMio5YZEgo/O3ZTxAy
    ALWD6Vg2y/XG/wIMACQziaAHit+xAAAAAElFTkSuQmCC


    1a97exxx1a97e8797f--

    --1a97exxx1a97e8797f
    Content-Type: text/plain; name="test.txt"
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment; filename="test.txt"

    PD9waHANCg0KDQovLyBodHRwOi8vd3d3Lm1ldGFsc2hlbGwuY29tL3ZpZXcvc291cmNlLzEx
    NS8NCmNsYXNzIG1haWxlcg0Kew0KICAgIHZhciAkZXJyb3JzID0gYXJyYXkoIm5vZmlsZWZv
    dW5kIiAgICA9PiAiU29ycnksIGhldCBiZXN0YW5kICVzIGJlc3RhYXQgbmlldCIsDQogICAg
    ICAgICAgICAgICAgICAgICAgICAiY2Fubm90cmVhZGZpbGUiID0+ICJTb3JyeSwgaGV0IGJl
    c3RhbmQgJXMga2FuIG5pZXQgZ2VsZXplbiB3b3JkZW4iLA0KICAgICAgICAgICAgICAgICAg
    ICAgICAgImNvbnRlbnR0eXBlZXJyIiA9PiAiU29ycnksIGhldCB0eXBlIGNvbnRlbnQgJyVz
    JyBpcyBpbmNvcnJlY3QgKGFsbGVlbiB0ZXh0L2h0bWwpIiwNCiAgICAgICAgICAgICAgICAg
    ICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICB2YXIgJGVvbCA9ICJc
    clxuIjsNCg0KICAgIC8vIGVtYWlsIHNldHRpbmdzDQogICAgdmFyICRzdWJqZWN0ID0gIiI7
    DQogICAgdmFyICRjb250ZW50ID0gYXJyYXkoKTsNCiAgICB2YXIgJGNvbnRlbnRUeXBlcyA9
    IGFycmF5KCJ0ZXh0IiwgImh0bWwiKTsNCiAgICANCiAgICAvLyBhZGRlZCBmaWxlcw0KICAg
    IHZhciAkYXR0YXRjaG1lbnRzID0gYXJyYXkoKTsgLy8gYWRkZWQNCiAgICB2YXIgJGVtYmVk
    ZGVkICAgICA9IGFycmF5KCk7IC8vIGZvciB2aWV3aW5nDQogICAgDQogICAgdmFyICRib3Vu
    ZGFyeTsNCiAgICB2YXIgJGNoYXJTZXQgPSAnaXNvLTg4NTktMSc7DQogICAgDQogICAgZnVu
    Y3Rpb24gbWFpbGVyKCkNCiAgICB7DQogICAgICAgICR0aGlzLT5ib3VuZGFyeSA9ICdfX3Np
    bXBsZV9tYWlsX2NsYXNzX18nOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHNlbmQoJHRvKQ0K
    ICAgIHsNCiAgICB9DQogICAgDQogICAgZnVuY3Rpb24gc3ViamVjdCgkc3ViamVjdCkNCiAg
    ICB7DQogICAgICAgICR0aGlzLT5zdWJqZWN0ID0gJHN1YmplY3Q7DQogICAgfQ0KICAgIA0K
    ICAgIGZ1bmN0aW9uIGlzRW1haWwoJGVtYWlsKQ0KICAgIHsNCiAgICAgICAgaWYgKCFwcmVn
    X21hdGNoKCcvXltBLVowLTkuXyUtXStAKD86W0EtWjAtOS1dK1xcLikrW0EtWl17Miw0fSQv
    aScsICRlbWFpbCkpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAg
    ICAgICAgfQ0KDQogICAgICAgIHJldHVybiAkZW1haWw7DQogICAgfQ0KDQogICAgZnVuY3Rp
    b24gc2V0Q2hhcnNldCgkY2hhcnNldCkNCiAgICB7DQogICAgICAgICR0aGlzLT5jaGFyU2V0
    ID0gJGNoYXJzZXQ7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gc2V0Q29udGVudCgkdGV4dCwg
    JHR5cGUgPSAidGV4dCIpDQogICAgew0KICAgICAgICAvKg0KICAgICAgICANCiAgICAgICAg
    JHRleHQgPSBjb250ZW50IHRvIGFkZCB0byBlbWFpbA0KICAgICAgICAkdHlwZSA9IHR5cGUg
    b2YgY29udGVudCAodGV4dC9odG1sKQ0KICAgICAgICANCiAgICAgICAgKi8NCiAgICAgICAg
    DQogICAgICAgIGlmIChpc1NldCgkY29udGVudFR5cGVzWyR0eXBlXSkpDQogICAgICAgIHsN
    CiAgICAgICAgICAgIGlmICgkdHlwZSA9PSAidGV4dCIpDQogICAgICAgICAgICB7DQogICAg
    ICAgICAgICAgICAgJGNvbnRlbnRCdWZmZXIgID0gJHRoaXMtPmVvbCAuICctLScgLiAkdGhp
    cy0+Ym91bmRhcnkgLiAkdGhpcy0+ZW9sOw0KICAgICAgICAgICAgICAgICRjb250ZW50QnVm
    ZmVyIC49ICdDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9IicgJHRoaXMtPmNo
    YXJTZXQgLiAnIicuICR0aGlzLT5lb2w7DQogICAgICAgICAgICAgICAgJGNvbnRlbnRCdWZm
    ZXIgLj0gJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUnIC4g
    JHRoaXMtPmVvbCAuICR0aGlzLT5lb2w7DQogICAgICAgICAgICAgICAgJGNvbnRlbnRCdWZm
    ZXIgLj0gJHRleHQ7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAg
    ICAgICB7DQogICAgICAgICAgICAgICAgJGNvbnRlbnRCdWZmZXIgID0gJHRoaXMtPmVvbCAu
    ICctLScgLiAkdGhpcy0+Ym91bmRhcnkgLiAkdGhpcy0+ZW9sOw0KICAgICAgICAgICAgICAg
    ICRjb250ZW50QnVmZmVyIC49ICdDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD0i
    JyAuICR0aGlzLT5jaGFyU2V0IC4gJyInIC4gJHRoaXMtPmVvbDsNCiAgICAgICAgICAgICAg
    ICAkY29udGVudEJ1ZmZlciAuPSAnQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVk
    LXByaW50YWJsZScgLiAkdGhpcy0+ZW9sIC4gJHRoaXMtPmVvbDsNCiAgICAgICAgICAgICAg
    ICAkY29udGVudEJ1ZmZlciAuPSAkdGV4dDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAg
    ICAgJHRoaXMtPmNvbnRlbnRbJHR5cGVdID0gJHRleHQ7DQogICAgICAgIH0NCiAgICAgICAg
    ZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICAkdGhpcy0+ZXJyb3JbXSA9IHNwcmludGYo
    JHRoaXMtPmVycm9yc1snY29udGVudHR5cGVlcnInXSwgJHR5cGUpOw0KICAgICAgICB9DQog
    ICAgfQ0KICAgIA0KICAgIGZ1bmN0aW9uIGNsZWFyQ29udGVudCgpDQogICAgew0KICAgICAg
    ICAvKg0KICAgICAgICANCiAgICAgICAgQ2xlYXIgZW1haWwgY29udGVudCAodGV4dC9odG1s
    KQ0KICAgICAgICANCiAgICAgICAgKi8NCiAgICAgICAgDQogICAgICAgICR0aGlzLT5jb250
    ZW50ID0gYXJyYXkoKTsNCiAgICB9DQogICAgDQogICAgZnVuY3Rpb24gYWRkRmlsZSgkZmls
    ZSwgJHR5cGUgPSAnYXR0YXRjaG1lbnQnKQ0KICAgIHsNCiAgICAgICAgLyoNCiAgICAgICAg
    DQogICAgICAgICRmaWxlID0gZmlsZSB0byBhdHRhdGNoDQogICAgICAgICR0eXBlID0gYXR0
    YXRjaG1lbnQgdHlwZSAoYXR0YXRjaG1lbnQvZW1iZWRkZWQpDQoNCiAgICAgICAgKi8NCg0K
    ICAgICAgICBpZiAoaXNfZmlsZSgkZmlsZSkpDQogICAgICAgIHsNCiAgICAgICAgICAgICRi
    YXNlbmFtZSA9IGJhc2VuYW1lKCRmaWxlKTsNCiAgICAgICAgICAgICRmaWxlaW5mbyA9IHBh
    dGhpbmZvKCRmaWxlKTsNCiAgICAgICAgICAgICRtaW1lICAgICA9IG1pbWVfY29udGVudF90
    eXBlKCRmaWxlKTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgJGZkID0gZm9wZW4oJGZp
    bGUsICJyYiIpOw0KICAgICAgICAgICAgaWYgKCRmZCkNCiAgICAgICAgICAgIHsNCiAgICAg
    ICAgICAgICAgICAkZmlsZWJ1ZmZlciA9IGZyZWFkKCRmZCwgZmlsZXNpemUoJGZpbGUpOw0K
    ICAgICAgICAgICAgICAgICRmaWxlYnVmZmVyID0gY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29k
    ZSgkZmlsZWJ1ZmZlciksIDcyKSAuICR0aGlzLT5lb2w7DQoNCiAgICAgICAgICAgICAgICBp
    ZiAoJHR5cGUgPT0gImVtYmVkZGVkIikNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAg
    ICAgICAgICAgICRyZWZfaWQgPSBtZDUodW5pcWlkKHRpbWUoKSkpIC4gJy4nIC4gJGZpbGVp
    bmZvWydleHRlbnNpb24nXTsNCg0KICAgICAgICAgICAgICAgICAgICAkaGVhZGVyICA9ICct
    LScgLiAkdGhpcy0+Ym91bmRhcnkgLiAkdGhpcy0+ZW9sOw0KICAgICAgICAgICAgICAgICAg
    ICAkaGVhZGVyIC49ICdDb250ZW50LVR5cGU6ICcgLiAkbWltZSAuICc7IG5hbWU9IicgLiAk
    YmFzZW5hbWUgLiAnIicgLiAkdGhpcy0+ZW9sOw0KICAgICAgICAgICAgICAgICAgICAkaGVh
    ZGVyIC49ICdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQnIC4gJHRoaXMtPmVv
    bDsNCiAgICAgICAgICAgICAgICAgICAgJGhlYWRlciAuPSAnQ29udGVudC1EaXNwb3NpdGlv
    bjogaW5saW5lOyBmaWxlbmFtZT0iJyAuICRiYXNlbmFtZSAuICciJyAuICR0aGlzLT5lb2w7
    DQogICAgICAgICAgICAgICAgICAgICRoZWFkZXIgLj0gJ0NvbnRlbnQtSUQ6IDwnIC4gJHJl
    Zl9pZCAuICc+JyAuICR0aGlzLT5lb2wgLiAkdGhpcy0+ZW9sOw0KICAgICAgICAgICAgICAg
    ICAgICAkaGVhZGVyIC49ICRmaWxlYnVmZmVyOw0KDQogICAgICAgICAgICAgICAgICAgICR0
    aGlzLT5lbWJlZGRlZFtdID0gJGhlYWRlcjsNCg0KICAgICAgICAgICAgICAgICAgICByZXR1
    cm4gJzxpbWcgc3JjPTNEImNpZDonIC4gJHJlZl9pZCAuICciPic7DQogICAgICAgICAgICAg
    ICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAg
    ICAgICAgICAgICAgICRoZWFkZXIgID0gJy0tJyAuICR0aGlzLT5ib3VuZGFyeSAuICR0aGlz
    LT5lb2w7DQogICAgICAgICAgICAgICAgICAgICRoZWFkZXIgLj0gJ0NvbnRlbnQtVHlwZTog
    Jy4gJG1pbWUgLiAnOyBuYW1lPSInIC4gJGJhc2VuYW1lIC4gJyInIC4gJHRoaXMtPmVvbDsN
    CiAgICAgICAgICAgICAgICAgICAgJGhlYWRlciAuPSAnQ29udGVudC1UcmFuc2Zlci1FbmNv
    ZGluZzogYmFzZTY0JyAuICR0aGlzLT5lb2w7DQogICAgICAgICAgICAgICAgICAgICRoZWFk
    ZXIgLj0gJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSInIC4g
    JGJhc2VuYW1lIC4gJyInLiR0aGlzLT5lb2wuJHRoaXMtPmVvbDsNCiAgICAgICAgICAgICAg
    ICAgICAgJGhlYWRlciAuPSAkZmlsZWJ1ZmZlcjsNCg0KICAgICAgICAgICAgICAgICAgICAk
    dGhpcy0+YXR0YWNobWVudFtdID0gJGhlYWRlcjsNCiAgICAgICAgICAgICAgICB9DQogICAg
    ICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAg
    ICAgICAgJHRoaXMtPmVycm9yW10gPSBzcHJpbnRmKCR0aGlzLT5lcnJvcnNbJ2Nhbm5vdHJl
    YWRmaWxlJ10sICRmaWxlKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBl
    bHNlDQogICAgICAgIHsNCiAgICAgICAgICAgICR0aGlzLT5lcnJvcltdID0gc3ByaW50Zigk
    dGhpcy0+ZXJyb3JzWydub2ZpbGVmb3VuZCddLCAkZmlsZSk7DQogICAgICAgIH0NCiAgICB9
    DQp9DQoNCj8+DQo=


    1a97exxx1a97e8797f--

    </pr


    Iemand? :D
    Just say hi!
    pi_55791330
    quote:
    Op zaterdag 5 januari 2008 11:51 schreef Chandler het volgende:

    [..]

    Hoe moet ik de headers instellen dan? en afmeld adres kan in de mail vermeld worden waarbij het script de mogelijkheid heeft om gebruikers af te melden.
    ik pak even de headers , die er toe lijken te doen, van de nieuwsbrief van m'n broer:
    quote:
    Precedence: list
    List: lists
    List-Unsubscribe: <http://domein.com/lists>
    List-Owner: <lists@domein.com>
    X-Priority: 3
    X-Mailer: mailer
    List-ID: <http://domein.com/lists>
    List-Subscribe: <http://domein.com/lists>
    List-URL: <http://domein.com/lists>
    die staan er extra in, en kennelijk zorgt dit er voor dat een mailing in princiepe altijd om een spamfilter komt (mits de headers netjes worden gevolgd door het anti-spam middel).
    pi_55792291
    quote:
    Op donderdag 3 januari 2008 14:01 schreef colourAgga het volgende:
    Wat denken jullie trouwens, de klasses die je nodig hebt voordat je fatsoenlijk aan een project kan beginnen? Ik denk:
    - Date
    - Verify
    - Authentification
    - SQL
    - Template

    Dat zijn in ieder geval de 5 die ik het meeste gebruik jullie nog toevoegingen?
    Mijn basisklassen voor een webapplicatie zijn meestal:

    - Configuration - waar de config wordt uitgelezen uit een file, in een object wordt gezet en die dmv een singleton pattern beschikbaar is in de hele applicatie;
    - Database - waar de db connectie wordt gemaakt (username/password ed komt uit het Configuration object) en die als een wrapper werkt zodat je flexibel bent en je makkelijk van db backend kan switchen;
    - User - waar een userobject wordt gemaakt met alle user specifieke dingen, ook authenticatie en permissies wordt hier geregeld;
    - Session - voor alle data die persistent moet zijn. Een Session object wordt geencapsuleerd in een User object aangezien het altijd aan een user is gekoppeld;
    - View - een wrapper class voor een template engine;
    - Request - alle userinput uit GET parameters en form submits wordt hier beschikbaar gemaakt en gevalideerd;
    - Log - een generieke logging module voor foutmeldingen uit de applicatie, en voor debugging doeleinden.
    pi_55796893
    quote:
    Op zaterdag 5 januari 2008 10:31 schreef Xcalibur het volgende:

    [..]

    Ik gebruik in grote lijnen hetzelfde lijstje, alleen geen date class:
    - ADOdb
    - Authenticator (zelfgeschreven authenticatie class)
    - Importexport (zelfgeschreven CSV import / export class)
    - phpMailer
    - phpThumb
    - Smarty
    - UTF-8
    - Validator (zelfgeschreven validatie class)

    Wat gebruik jij voor date class? Ik heb eerlijk gezegd nooit echt problemen met datums, dus ik ben wel benieuwd waarom die van jou zo handig is?
    Ik gebruik een date class om alle mogelijke berekeningen met tijd te doe en dat in alle mogelijke tijdsformaten in en uit te lezen

    Overigens werkt het bij mij zo:

    Ik heb een core, deze laadt de module config in vanuit XML bestanden in de config directory of uit de database, vervolgens worden alle modules binnen de core beschikmaar gemaakt waarna ik vervolgens vanuit elke module met de core kan praten en via de core met andere modules.

    Hier zit uitgebreide logging op en ook afhandeling van fouten via een eigen error code systeem (je ziet dus nooit PHP fouten in principe ). Best heel hip etc en ook iets wat ik voor mijn werk heb gemaakt en waarvan grote delen dus gewoon proprietary zijn.

    Wel heel handig:
    1
    2
    3
    4
    5
    <?php
    $Core
    ->mod_Template->replace'tieten''borsten' ); //Aanspreken van module
    $Core->mod_Gallery->store'plaatje' ); //Standaard spul opslaan bij een module
    $Core->mod_Gallery->config'thumbnails''120x120' ); //Override van settings
    ?>

    Verder zijn er nog plugins (deze hangen onder de modules waarmee ik specifieke functionaliteit voor een specifieke klant kan toevoegen En als je via de Core iets input/output wordt dit altijd gevalidate, alsmede dat ALLE database en file gerelateerde dingen via de mod_DB en mod_File gaan (er bestaan shorts voor zodat je dat mod_ niet telkens hoeft te typen )

    Allemaal heel hip etc, de Template is een extension op een output klasse, alles zit erin zodat je kan outputten naar een webpage of naar commandline of wat je maar wilt eigenlijk.

    Het hele systeem is PHP/Python geschreven waarbij Python alles op het filesystem zelf afhandelt en wat handige interfaces heeft zoals dat wij een SQL klasse hebben die niet met SQL praat maar met de pickle functionaliteit van Python etc. Ook klasses voor verschillende databases. Allemaal heel leuk spul.

    Oh en verder zit er nog allerlei Big Brother functionaliteit in

    Een echt framework
    pi_55834668
    Nice!
      maandag 7 januari 2008 @ 14:14:59 #125
    37634 wobbel
    Da WoBBeL King
    pi_55847204
    quote:
    Op donderdag 3 januari 2008 15:39 schreef wobbel het volgende:
    Wij hebben op het werk een administratie programma welke op TPS bestanden draait (TopSpeed database)

    Nu lukt het mij prima om er wat gegevens uit te krijgen door te zoeken op klant nummer met onderstaande code:
    [ code verwijderd ]

    Nu zou ik ook graag willen zoeken op naam, dat als ik zoek naar "aap" ik alle resultaten krijg zoals "Schaap, Aapjes" etc...dus ik dacht dit:
    [ code verwijderd ]

    Maar helaas, dit werkt niet ik krijg dan geen resultaten...als ik de wildcards (%) weglaat en ik vul de exacte naam in dan vind ik het wel

    Hoe kan ik zoeken met wildcards? Hier staat iets meer info over ODBC TopSpeed (PDF)
    Schop

    LET OP!! Is geen MySQL, maar een ODBC plugin voor TopSpeed
    pi_55847394
    In SQL gaat het in ieder geval dmv LIKE. Een procentteken is een wildcard voor 0 of meer tekens, een underscore is een wildcard voor 1 teken. Bijv:

    1$ODBC_Klant_Select = "SELECT * FROM BAC5130 WHERE NM LIKE '%" . $SQL_Value . "%'";
    pi_55853046
    hoe schrijf ik een functie die uit een string één of meerdere woorden haalt die in een array staan en de rest weg laat? bijvoorbeeld:

    $string = "morgen vlieg ik naar new york";
    $steden = array("amsterdam", "barcelona", "new york");

    dan wil ik dat alleen new york wordt weergegeven, de rest mag wegvallen. en als de waarde niet voor komt in de array dat er ook niks wordt weergegeven.. alvast bedankt
    Amsterdam, stad van hash en coke,
    Waar de vrouwen zich vrouwelijk gedragen..
    En de mannen ook..
    pi_55853215
    quote:
    Op maandag 7 januari 2008 14:14 schreef wobbel het volgende:
    LET OP!! Is geen MySQL, maar een ODBC plugin voor TopSpeed
    Ik denk dat je zelf op zoek moet naar betere / uitgebreidere documentatie over die TopSpeed db. Dat pdfje is wel erg beknopt.
    Wil iedereen die in telekinese gelooft nu mijn hand op steken?
    | Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
    pi_55853516
    quote:
    Op maandag 7 januari 2008 17:59 schreef markiemark het volgende:
    hoe schrijf ik een functie die uit een string één of meerdere woorden haalt die in een array staan en de rest weg laat? bijvoorbeeld:

    $string = "morgen vlieg ik naar new york";
    $steden = array("amsterdam", "barcelona", "new york");

    dan wil ik dat alleen new york wordt weergegeven, de rest mag wegvallen. en als de waarde niet voor komt in de array dat er ook niks wordt weergegeven.. alvast bedankt
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $string 
    "morgen vlieg ik naar new york";
    $steden = array("amsterdam""barcelona""new york");
    foreach(
    $steden as $stad) {
        if(
    false !== strpos($string$stad)) {
            echo 
    $stad;
        }
    }
    ?>
    pi_55853806
    quote:
    Op maandag 7 januari 2008 18:19 schreef Light het volgende:

    [..]
    [ code verwijderd ]
    helemaal top!! dank je wel!

    het gaat om een lijst van +/- 5000 steden en het is een vrij druk bezochte site.. gaat dit een probleem worden?
    Amsterdam, stad van hash en coke,
    Waar de vrouwen zich vrouwelijk gedragen..
    En de mannen ook..
    pi_55854129
    Is een regular expression dan niet sneller, Light?
    pi_55854748
    quote:
    Op maandag 7 januari 2008 18:45 schreef Geqxon het volgende:
    Is een regular expression dan niet sneller, Light?
    Nee, als je wilt weten of een string in een andere string voorkomt dan is strpos sneller dan een regular expression. Dat staat ook in de PHP handleiding. Overigens kan het wel efficienter want foreach is niet de geheugenvriendelijkste methode.
    pi_55854811
    Uiteraard, omdat strpos character per character controleert.
    pi_55854813
    quote:
    Op maandag 7 januari 2008 18:33 schreef markiemark het volgende:

    [..]

    helemaal top!! dank je wel!

    het gaat om een lijst van +/- 5000 steden en het is een vrij druk bezochte site.. gaat dit een probleem worden?
    Dan zou ik niet kiezen voor een foreach-methode. Het kan efficienter, zeker als de array is opgebouwd zoals je beschrijft (dus met numerieke keys).
    pi_55855862
    Misschien dat een combinatie van str_word_count en array_intersect ook nog wat uithaalt.. Geen idee wat sneller zou zijn

    1
    2
    3
    4
    5
    <?php
     
    $steden 
    = array('barcalona''amsterdam''newyork');
    $output array_intersect($stedenstr_word_count($tekst1));
    ?>


    En ik speel hier vals door New York als één woord te typen :p
    pi_55891884
    Misschien een stom vraagje; maar wil graag weten m.b.t. de preformance van PHP hoe lang het geschat kan duren voor het versturen van 250 mailtjes met PHP (mailtje is max 1kb)

    Wil geen simulatie uitvoeren aangezien ik niet 250x dezelfde email wil ontvangen
    Just say hi!
      woensdag 9 januari 2008 @ 10:17:49 #137
    84244 Scorpie
    Abject en infaam!
    pi_55891968
    quote:
    Op woensdag 9 januari 2008 10:12 schreef Chandler het volgende:
    Misschien een stom vraagje; maar wil graag weten m.b.t. de preformance van PHP hoe lang het geschat kan duren voor het versturen van 250 mailtjes met PHP (mailtje is max 1kb)

    Wil geen simulatie uitvoeren aangezien ik niet 250x dezelfde email wil ontvangen
    Daar is niks zinnigs over te zeggen zonder specifiek te weten wat:

    Voor soort email je uitstuurt
    Hoe je deze opbouwt
    Hoe je deze verstuurd
    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.
    pi_55892309
    Je moet het zien als een tekst mailtje met een paar headers... en ik verstuur gewoon met mail($to, $titel, $content, $headers);

    Just say hi!
      woensdag 9 januari 2008 @ 10:38:30 #139
    84926 WyriHaximus
    Release the hounds smithers!
    pi_55892360
    quote:
    Op woensdag 9 januari 2008 10:12 schreef Chandler het volgende:
    Misschien een stom vraagje; maar wil graag weten m.b.t. de preformance van PHP hoe lang het geschat kan duren voor het versturen van 250 mailtjes met PHP (mailtje is max 1kb)

    Wil geen simulatie uitvoeren aangezien ik niet 250x dezelfde email wil ontvangen
    Mijn ervaring is dat PHP (afhankelijk hoe snel de SMTP server is) er rustig 2000 mailtjes in een seconden door heen kan knallen van 1KB/ps (per stuk) .
    phluphy for president!
      woensdag 9 januari 2008 @ 10:40:28 #140
    84244 Scorpie
    Abject en infaam!
    pi_55892395
    quote:
    Op woensdag 9 januari 2008 10:38 schreef WyriHaximus het volgende:

    [..]

    Mijn ervaring is dat PHP (afhankelijk hoe snel de SMTP server is) er rustig 2000 mailtjes in een seconden door heen kan knallen van 1KB/ps (per stuk) .
    Dan is dit je antwoord.
    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.
    pi_55892402
    Juist, een klant van mij wil ruim 300.000 mailtjes versturen en nu heb ik een script geschreven die om de xxx mailjes de pagina 10 seconden laat wachten en dan op naar de volgende xxx mailtjes gaat.

    Maar 1000 mailtjes is dus simpel mogelijk zonder gezeur van PHP/MYSQL en natuurlijk de SMTP server
    quote:
    Op woensdag 9 januari 2008 10:40 schreef Scorpie het volgende:Dan is dit je antwoord.
    Dat is duidelijk dan
    Just say hi!
    pi_55892826
    precies de manier waarop ik het ook doe
      woensdag 9 januari 2008 @ 11:40:57 #143
    84926 WyriHaximus
    Release the hounds smithers!
    pi_55893841
    Enigsinds schamend moet ik zeggen dat ik zelf nog niet met UTF-8 bezig ben geweest, maar hier wel graag mee bezig zou willen gaan (kan ook wel zonder door blijven gaan aangezien ik het eingelijk niet tegenkom dat het nodig is maar goed). Na ben ik bezig me CMS te herschrijven en 1 van de dingen die ik er in moet en zal hebben is UTF-8 support. HEb de hele hotfuzz nog niet door denk want het enigste wat ik vind is dat ik een set andere functies moet gebruiken voor bepaalde acties. Klopt dit of zit er meer achter?
    phluphy for president!
    pi_55894143
    Lees in ieder geval deze eens
    http://www.nicknettleton.com/zine/php/php-utf-8-cheatsheet#body

    Ik gebruik zelf ook deze UTF-8 class:
    http://sourceforge.net/projects/phputf8/
      woensdag 9 januari 2008 @ 12:24:37 #145
    84926 WyriHaximus
    Release the hounds smithers!
    pi_55894919
    quote:
    Op woensdag 9 januari 2008 11:52 schreef Xcalibur het volgende:
    Lees in ieder geval deze eens
    http://www.nicknettleton.com/zine/php/php-utf-8-cheatsheet#body

    Ik gebruik zelf ook deze UTF-8 class:
    http://sourceforge.net/projects/phputf8/
    Ok tof dankje, zat dus zelf iig al een heel eind de goede kant op .
    phluphy for president!
    pi_55903823
    quote:
    Op woensdag 9 januari 2008 10:40 schreef Chandler het volgende:
    Juist, een klant van mij wil ruim 300.000 mailtjes versturen en nu heb ik een script geschreven die om de xxx mailjes de pagina 10 seconden laat wachten en dan op naar de volgende xxx mailtjes gaat.

    Maar 1000 mailtjes is dus simpel mogelijk zonder gezeur van PHP/MYSQL en natuurlijk de SMTP server
    [..]

    Dat is duidelijk dan
    Ik zou niet graag 300.000 mails versturen met de mail() functie. Die is daar niet zo geschikt voor, omdat de verbinding met de mailserver iedere keer wordt afgesloten en opnieuw geopend. Zie ook mail().
    pi_55903962
    http://www.phpguru.org/static/mime.mail.html

    Voor als je wilt weten hoe je via SMTP mail verstuurt.
      woensdag 9 januari 2008 @ 19:18:26 #148
    136730 PiRANiA
    All thinking men are atheists.
    pi_55904630
    quote:
    Op woensdag 9 januari 2008 18:55 schreef Geqxon het volgende:
    http://www.phpguru.org/static/mime.mail.html

    Voor als je wilt weten hoe je via SMTP mail verstuurt.
    hij had het toch al over een smtp server?
    quote:
    Op woensdag 9 januari 2008 10:40 schreef Chandler het volgende:
    Juist, een klant van mij wil ruim 300.000 mailtjes versturen en nu heb ik een script geschreven die om de xxx mailjes de pagina 10 seconden laat wachten en dan op naar de volgende xxx mailtjes gaat.

    Maar 1000 mailtjes is dus simpel mogelijk zonder gezeur van PHP/MYSQL en natuurlijk de SMTP server
    [..]

    Dat is duidelijk dan
      woensdag 9 januari 2008 @ 19:19:45 #149
    107951 JortK
    Immer kwaliteitsposts
    pi_55904666
    Waaom zou je zoveel berichten niet laten versturen door bedrijven die er tenslotte in specialiseerd zijn
    pi_55907477
    quote:
    Op woensdag 9 januari 2008 12:24 schreef WyriHaximus het volgende:
    Ok tof dankje, zat dus zelf iig al een heel eind de goede kant op .
    Nog niet zo heel lang geleden heeft iemand in dit topic (het vorige deel gok ik) een aardig complete opsomming gemaakt.... ik dacht eigenlijk dat jij dat was
    pi_55908727
    Ongelooflijk. Kom er net achter dat als je met mysql in een selectquery een like operator wilt gebruiken om een integer op te halen je dat als een string moet doen om dat werkend te krijgen..

    Om de like-operator toe te passen op een integer-dataveld moet je dus dit doen:
    1
    2
    3
    <?php
    $query 
    "SELECT * FROM employees WHERE age LIKE '%$age%'";
    ?>


    Of zou hij het gewoon pikken en moet ik dit anders doen?
      woensdag 9 januari 2008 @ 21:45:50 #152
    136730 PiRANiA
    All thinking men are atheists.
    pi_55908884
    quote:
    Op woensdag 9 januari 2008 19:19 schreef JortK het volgende:
    Waaom zou je zoveel berichten niet laten versturen door bedrijven die er tenslotte in specialiseerd zijn
    omdat hij het zelf ook kan?
    pi_55909610
    quote:
    Op woensdag 9 januari 2008 21:41 schreef Tarabass het volgende:
    Ongelooflijk. Kom er net achter dat als je met mysql in een selectquery een like operator wilt gebruiken om een integer op te halen je dat als een string moet doen om dat werkend te krijgen..

    Om de like-operator toe te passen op een integer-dataveld moet je dus dit doen:
    [ code verwijderd ]

    Of zou hij het gewoon pikken en moet ik dit anders doen?
    Like is een string-operator, dus is het wel logisch dat het niet werkt met integers. Je zou je ook nog kunnen afvragen of het zinvol is om Like te gebruiken, of dat je de gegevens op een andere manier ook kunt krijgen.
      woensdag 9 januari 2008 @ 22:10:37 #154
    37634 wobbel
    Da WoBBeL King
    pi_55909641
    Ik moet m'n vriendin PHP leren wat is de ALLERMAKKELIJKSTE instap curus voor PHP? (jaja, wat een vertrouwen )

    Dus heel simpel echo dingen en hele simpele if en else statements?
      woensdag 9 januari 2008 @ 22:15:20 #155
    84926 WyriHaximus
    Release the hounds smithers!
    pi_55909798
    quote:
    Op woensdag 9 januari 2008 22:10 schreef wobbel het volgende:
    Ik moet m'n vriendin PHP leren wat is de ALLERMAKKELIJKSTE instap curus voor PHP? (jaja, wat een vertrouwen )

    Dus heel simpel echo dingen en hele simpele if en else statements?
    Hahahaha! Ben altijd al fan geweest van de Wrox serie: http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764557831.html
    phluphy for president!
      woensdag 9 januari 2008 @ 22:16:26 #156
    37634 wobbel
    Da WoBBeL King
    pi_55909835
    quote:
    Op woensdag 9 januari 2008 22:15 schreef WyriHaximus het volgende:

    [..]

    Hahahaha! Ben altijd al fan geweest van de Wrox serie: http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764557831.html
    dat is te moeilijk, dan moet ze 2 talen leren (engels ) en dan kost het me geld

    en nee, ze is geen mongooltje
      woensdag 9 januari 2008 @ 22:22:50 #157
    84926 WyriHaximus
    Release the hounds smithers!
    pi_55910036
    quote:
    Op woensdag 9 januari 2008 22:16 schreef wobbel het volgende:

    [..]

    dat is te moeilijk, dan moet ze 2 talen leren (engels ) en dan kost het me geld

    en nee, ze is geen mongooltje
    lol ik ze niks, me eingen vriendin is ook niet al te goed met engels . Dit anders wat? Misschien bij de bied? http://www.nl.bol.com/is-bin/INTERSHOP.enfinity/eCS/Store/nl/-/EUR/BOL_DisplayProductInformation-Start?Section=BOOK&BOL_OWNER_ID=1001004002133647
    phluphy for president!
      woensdag 9 januari 2008 @ 22:26:25 #158
    37634 wobbel
    Da WoBBeL King
    pi_55910155
    quote:
    Op woensdag 9 januari 2008 22:22 schreef WyriHaximus het volgende:

    [..]

    lol ik ze niks, me eingen vriendin is ook niet al te goed met engels . Dit anders wat? Misschien bij de bied? http://www.nl.bol.com/is-bin/INTERSHOP.enfinity/eCS/Store/nl/-/EUR/BOL_DisplayProductInformation-Start?Section=BOOK&BOL_OWNER_ID=1001004002133647
    haha die heb ik op 't werk wel liggen volgensmij eens meenemen
    pi_55911592
    quote:
    Op woensdag 9 januari 2008 22:10 schreef wobbel het volgende:
    Ik moet m'n vriendin PHP leren wat is de ALLERMAKKELIJKSTE instap curus voor PHP? (jaja, wat een vertrouwen )

    Dus heel simpel echo dingen en hele simpele if en else statements?
    w3schools
    Tizag
    ?
    pi_55911805
    quote:
    Op woensdag 9 januari 2008 22:09 schreef Light het volgende:

    [..]

    Like is een string-operator, dus is het wel logisch dat het niet werkt met integers. Je zou je ook nog kunnen afvragen of het zinvol is om Like te gebruiken, of dat je de gegevens op een andere manier ook kunt krijgen.
    Ik weet inmiddels dat het anders moet (REGEXP?), maar het is toch absurd dat hij (mysql-server) het allemaal pikt. Echt raar. Met een string-operator een integer ophalen. Hoe weet je dan dat je het goed doet, als alles werkt

    dacht dat dit subforum voor dummies was, maar krijg steeds meer het idee dat dit het expert-subforum is
    pi_55913011
    quote:
    Op woensdag 9 januari 2008 23:15 schreef Tarabass het volgende:
    [...] Ik weet inmiddels dat het anders moet (REGEXP?) [...]
    Wat wil je eigenlijk bereiken? Een REGEXP is net als LIKE een string operator, dus die is ook niet bedoeld om naar een int te zoeken. Waarom kan je geen =, <, > of BETWEEN gebruiken?
    Wil iedereen die in telekinese gelooft nu mijn hand op steken?
    | Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
    pi_55913677
    Ja inderdaad, wat voor gegevens sla je op en waarop wil je zoeken? Ik denk dat je behoorlijk verkeerd aan het zoeken bent
    "Reality is an illusion created by a lack of alcohol."
      donderdag 10 januari 2008 @ 07:24:14 #163
    62215 qu63
    ..de tijd drinkt..
    pi_55915440
    quote:
    Op woensdag 9 januari 2008 23:15 schreef Tarabass het volgende:

    [..]

    Ik weet inmiddels dat het anders moet (REGEXP?), maar het is toch absurd dat hij (mysql-server) het allemaal pikt. Echt raar. Met een string-operator een integer ophalen. Hoe weet je dan dat je het goed doet, als alles werkt

    dacht dat dit subforum voor dummies was, maar krijg steeds meer het idee dat dit het expert-subforum is
    dummie meldt
    It's Time To Shine
    [i]What would life be like without rhethorical questions?[/i]
      donderdag 10 januari 2008 @ 08:08:19 #164
    84926 WyriHaximus
    Release the hounds smithers!
    pi_55915653
    quote:
    Op woensdag 9 januari 2008 23:15 schreef Tarabass het volgende:

    [..]

    dacht dat dit subforum voor dummies was, maar krijg steeds meer het idee dat dit het expert-subforum is
    Expert meld . (*WyriHaximus walgt even van zichzelf en gaat weer verder. *WyriHaximus schaamt zich nog steeds dat hij niet echt eerder met UTF-8 aan de gang is gegaan !) Maar goed zonder experts is het ook weer zo saai voor de dummies .
    quote:
    Op woensdag 9 januari 2008 20:54 schreef Xcalibur het volgende:

    [..]

    Nog niet zo heel lang geleden heeft iemand in dit topic (het vorige deel gok ik) een aardig complete opsomming gemaakt.... ik dacht eigenlijk dat jij dat was
    Hehe nee dat was ik niet . Maar goed dit heeft me aan het denken gezet aan gezien UTF-8 best wel een pre is als je echt internationaal wilt gaan werken. Nu zat ik te denken om een aantal nuttige posts in de OP er bij te zetten aangezien die nu wat karig is. Wat denken jullie er van?
    phluphy for president!
    pi_55915841
    Och, en ik schaam mij weer dood omdat ik mijn Unix timestamps zonder tijdzone markering in de database hebt zitten.
    pi_55917210
    quote:
    Op woensdag 9 januari 2008 23:55 schreef SuperRembo het volgende:

    [..]

    Wat wil je eigenlijk bereiken? Een REGEXP is net als LIKE een string operator, dus die is ook niet bedoeld om naar een int te zoeken. Waarom kan je geen =, <, > of BETWEEN gebruiken?
    Ik ben met ajax bezig en wil dat als je een cijfer ingeeft in een tekstbox 'age' hij alle records ophaalt die dat getal bevatten. Als je een 1 intypt moet hij dus de leeftijden 1 ophalen, maar ook 14 of 51. Als ik de integer $age tussen quotes zet werkt dat gewoon op een integer-veld. En op de mysql-site vond ik dat regexp ook zou werken.
    quote:
    A character class “[...]” matches any character within the brackets. For example, “[abc]” matches “a”, “b”, or “c”. To name a range of characters, use a dash. “[a-z]” matches any letter, whereas “[0-9]” matches any digit.
    Balen dat alles bij mysql werkt, want op die manier weet je geeneens of het de juiste manier is, en wil het zo graag goed doen. Maar alles werkt aarggh. Wat zou ik voor een integer moeten gebruiken?

    Voorbeeld
    pi_55922097
    quote:
    Op woensdag 9 januari 2008 23:15 schreef Tarabass het volgende:

    [..]

    Ik weet inmiddels dat het anders moet (REGEXP?), maar het is toch absurd dat hij (mysql-server) het allemaal pikt. Echt raar. Met een string-operator een integer ophalen. Hoe weet je dan dat je het goed doet, als alles werkt

    dacht dat dit subforum voor dummies was, maar krijg steeds meer het idee dat dit het expert-subforum is
    semi-dummy/expert meld...
    pi_55923329
    quote:
    Op donderdag 10 januari 2008 13:37 schreef mschol het volgende:

    [..]

    semi-dummy/expert meld...
    Je bedoelt semi-expert
    pi_55923467
    quote:
    Op donderdag 10 januari 2008 10:11 schreef Tarabass het volgende:

    [..]

    Ik ben met ajax bezig en wil dat als je een cijfer ingeeft in een tekstbox 'age' hij alle records ophaalt die dat getal bevatten. Als je een 1 intypt moet hij dus de leeftijden 1 ophalen, maar ook 14 of 51. Als ik de integer $age tussen quotes zet werkt dat gewoon op een integer-veld. En op de mysql-site vond ik dat regexp ook zou werken.
    [..]

    Balen dat alles bij mysql werkt, want op die manier weet je geeneens of het de juiste manier is, en wil het zo graag goed doen. Maar alles werkt aarggh. Wat zou ik voor een integer moeten gebruiken?

    Voorbeeld
    Waarom wil je als je een 1 invult ook 51 hebben? Klinkt me vrij onlogisch in de oren. Dat is hetzelfde als je bij autocomplete een P invult je dan ook AAP als voorbeeld krijgt. Als je dit niet doet kun je dit ook op een veel elegantere manier doen.

    Stel je vult een 2 in. Dan zijn de mogelijkheden dus 2, 20-29, 200-299. Verder dan dat hoef je niet te gaan. Dan kun je dus een SELECT query met een paar ORs en met BETWEEN werken.

    Vul je ook een 2e cijfer in, bijvoorbeeld 14, dan kun je dus een query bouwen met 14, en 140-149. Dit gaat een stuk sneller, weet je zeker dat het goed gaat en heb je geen lelijke string searches op een integer field. Helaas kun je het dus niet zo oplossen als je ook wilt dat je 51 kunt vinden met een 1.
    "Reality is an illusion created by a lack of alcohol."
    pi_55923771
    quote:
    Op donderdag 10 januari 2008 14:23 schreef Dzy het volgende:

    [..]

    Waarom wil je als je een 1 invult ook 51 hebben? Klinkt me vrij onlogisch in de oren. Dat is hetzelfde als je bij autocomplete een P invult je dan ook AAP als voorbeeld krijgt. Als je dit niet doet kun je dit ook op een veel elegantere manier doen.

    Stel je vult een 2 in. Dan zijn de mogelijkheden dus 2, 20-29, 200-299. Verder dan dat hoef je niet te gaan. Dan kun je dus een SELECT query met een paar ORs en met BETWEEN werken.

    Vul je ook een 2e cijfer in, bijvoorbeeld 14, dan kun je dus een query bouwen met 14, en 140-149. Dit gaat een stuk sneller, weet je zeker dat het goed gaat en heb je geen lelijke string searches op een integer field. Helaas kun je het dus niet zo oplossen als je ook wilt dat je 51 kunt vinden met een 1.
    Het gaat niet om een autocomplete maar om een zoek-functie. Als je dus zoekt op 7 wil ik alle leeftijden met een 7 erin hebben. Waarom? Eigenlijk gewoon daarom

    Dus om dit te bewerkstelligen wil ik een like-manier hebben, maar dan voor een integer..
      donderdag 10 januari 2008 @ 14:39:59 #171
    84244 Scorpie
    Abject en infaam!
    pi_55923896
    Een like operator is per definitie een string operator hoor, dat is basis SQL kennis.
    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.
    pi_55924389
    Je kunt natuurlijk ook je PHP scriptje een set laten maken en daar een mooie query door uit laten poepen. Nog steeds voelt het wat ranzig aan maarja, niet heel veel aan te doen. Stel dat de leeftijd maximaal 100 is, kun je bijvoorbeeld bij een 2 invullen zo'n query laten maken:

    1SELECT * FROM users WHERE (age = 2) OR (age BETWEEN 20 AND 29) OR (age IN (12,22,32,42,52,62,72,82,92)


    Dan krijg je alsnog alle goede leeftijden terug en gebruik je geen ranzige LIKE operators die bedoeld zijn voor strings. De php code om zo'n query te maken is ook niet zo moeilijk.
    "Reality is an illusion created by a lack of alcohol."
    pi_55925125
    met welk boek leer ik het snelste object georienteerd programmeren in php?
    ik kan wel aardig programmeren in php, maar nog niet object oriented. nu wil ik dit wel leren en een boek kopen daar voor, maar welke kan ik het beste nemen?
    Amsterdam, stad van hash en coke,
    Waar de vrouwen zich vrouwelijk gedragen..
    En de mannen ook..
    pi_55925285
    quote:
    Op donderdag 10 januari 2008 14:39 schreef Scorpie het volgende:
    Een like operator is per definitie een string operator hoor, dat is basis SQL kennis.
    Maar mysql is slim genoeg om een integer gewoon te casten naar een string als je er string operators op loslaat. Ik zie het probleem niet. Like met een integer werkt gewoon.
      donderdag 10 januari 2008 @ 15:58:09 #175
    84926 WyriHaximus
    Release the hounds smithers!
    pi_55925916
    quote:
    Op donderdag 10 januari 2008 15:28 schreef markiemark het volgende:
    met welk boek leer ik het snelste object georienteerd programmeren in php?
    ik kan wel aardig programmeren in php, maar nog niet object oriented. nu wil ik dit wel leren en een boek kopen daar voor, maar welke kan ik het beste nemen?
    Wat ik eerder ook al voor wobbel ze GF suggereerde is de P2P serie van Wrox erg goed om eens naar te kijken .
    phluphy for president!
      donderdag 10 januari 2008 @ 16:10:48 #176
    107951 JortK
    Immer kwaliteitsposts
    pi_55926246
    Even een offtopic vraagje wobbel heb jij niet vroeger R3 gehad als bedrijf?
    pi_55926783
    quote:
    Op donderdag 10 januari 2008 14:58 schreef Dzy het volgende:
    Je kunt natuurlijk ook je PHP scriptje een set laten maken en daar een mooie query door uit laten poepen. Nog steeds voelt het wat ranzig aan maarja, niet heel veel aan te doen. Stel dat de leeftijd maximaal 100 is, kun je bijvoorbeeld bij een 2 invullen zo'n query laten maken:
    [ code verwijderd ]

    Dan krijg je alsnog alle goede leeftijden terug en gebruik je geen ranzige LIKE operators die bedoeld zijn voor strings. De php code om zo'n query te maken is ook niet zo moeilijk.
    Hier ga ik even mee stoeien. Bedankt..
    pi_55928409
    Beste allemaal,

    Ik ben bezig met een gastenboek te maken, dit werkt allemaal prima. Nu wilde ik daar als toevoeging smilies aan toe voegen, ook dit werkt prima.

    Nu geef ik van iedere smilie de locatie map aan, dit wil ik verkorten door het gebruik van een variabele.

    Even een voorbeeld hoe het nu is:
    1$text = str_replace(   ':)','<img src="./files/images/smiles/icon_smile.gif" border="0" alt="" />',$text);


    Wat ik dus graag zou willen wijzigen is "./files/images/smiles" vervangen door een variabele ($dir_smiles). Dit wil me dus niet lukken aangezien de wijzingen overgenomen als zijnde tekst.

    Wie kan en wil me hiermee helpen. Alvast bedankt :Y
      donderdag 10 januari 2008 @ 17:35:59 #179
    136730 PiRANiA
    All thinking men are atheists.
    pi_55928532
    quote:
    Op donderdag 10 januari 2008 17:30 schreef BugWorks het volgende:
    Beste allemaal,

    Ik ben bezig met een gastenboek te maken, dit werkt allemaal prima. Nu wilde ik daar als toevoeging smilies aan toe voegen, ook dit werkt prima.

    Nu geef ik van iedere smilie de locatie map aan, dit wil ik verkorten door het gebruik van een variabele.

    Even een voorbeeld hoe het nu is:
    [ code verwijderd ]

    Wat ik dus graag zou willen wijzigen is "./files/images/smiles" vervangen door een variabele ($dir_smiles). Dit wil me dus niet lukken aangezien de wijzingen overgenomen als zijnde tekst.

    Wie kan en wil me hiermee helpen. Alvast bedankt
    wat bedoel je?
    pi_55929568
    ik denk dat het pad hard als tekst in al z'n entries staat, en hij deze dus niet meer kan aanpassen?
    pi_55929617
    -Nevermind-.
    pi_55930569
    quote:
    Op donderdag 10 januari 2008 14:34 schreef Tarabass het volgende:

    [..]

    Het gaat niet om een autocomplete maar om een zoek-functie. Als je dus zoekt op 7 wil ik alle leeftijden met een 7 erin hebben. Waarom? Eigenlijk gewoon daarom :)

    Dus om dit te bewerkstelligen wil ik een like-manier hebben, maar dan voor een integer..
    Ok, je wil dus gewoon zoeken alsof het tekst is. Een regexp is nergens voor nodig (is alleen langzamer), een LIKE is wat je nodig hebt. Als je het echt netjes wil doen, dan converteer je de INT kolom eerst naar VARCHAR voordat je de LIKE vergelijking gebruikt:

    1... WHERE Cast(age AS VARCHAR) LIKE '%2%'


    (Zie http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html)
    Wil iedereen die in telekinese gelooft nu mijn hand op steken?
    | Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
    pi_55930731
    quote:
    Op donderdag 10 januari 2008 14:23 schreef Dzy het volgende:

    Helaas kun je het dus niet zo oplossen als je ook wilt dat je 51 kunt vinden met een 1.
    Volgens mij moet je een heel eind kunnen komen met
    1SELECT * FROM users WHERE age MOD 10 = 1
      donderdag 10 januari 2008 @ 19:01:58 #184
    62215 qu63
    ..de tijd drinkt..
    pi_55930846
    quote:
    Op donderdag 10 januari 2008 18:58 schreef Light het volgende:

    [..]

    Volgens mij moet je een heel eind kunnen komen met
    [ code verwijderd ]
    waar staat de MOD 10 voor?
    It's Time To Shine
    [i]What would life be like without rhethorical questions?[/i]
    pi_55931032
    quote:
    Op donderdag 10 januari 2008 19:01 schreef qu63 het volgende:

    [..]

    waar staat de MOD 10 voor?
    Modulo 10. Ofwel delen door 10 en als antwoord de rest teruggeven.

    Als voorbeeld: 27 MOD 10 = 7
    pi_55931036
    quote:
    Op donderdag 10 januari 2008 19:01 schreef qu63 het volgende:

    [..]

    waar staat de MOD 10 voor?
    Zie: http://dev.mysql.com/doc/(...)ns.html#function_mod

    Oftewel: de modulo operator, geeft de rest terug na een deling.

    20 / 7 = 2
    20 MOD 7 = 6
    pi_55931189
    Er zit (uiteraard) ook een modulo-operator in PHP. Daar gebruik je dan %

    1
    2
    3
    4
    <?php
    echo floor(20 7); // 2
    echo 20 7// 6
    ?>
    pi_55931322
    quote:
    Op donderdag 10 januari 2008 18:58 schreef Light het volgende:

    [..]

    Volgens mij moet je een heel eind kunnen komen met
    [ code verwijderd ]
    Zo kun je het inderdaad ook aanpakken, nog wel een mooiere oplossing dan die van mij. Wist niet dat dat in MySQL kon Weer wat geleerd.

    Heeft iemand hier ervaring met CakePHP? Ik heb me door de manual heen geworsteld maar ik denk dat ik nog wel wat vraagjes ga hebben nu ik ga beginnen met een nieuw projectje.

    EDIT: Je moet uiteraard in die query ook nog gewoon de between en de waarde zelf meenemen.
    "Reality is an illusion created by a lack of alcohol."
    pi_55931341
    quote:
    Op donderdag 10 januari 2008 18:58 schreef Light het volgende:
    [..]
    Volgens mij moet je een heel eind kunnen komen met
    [ code verwijderd ]
    Met alleen MOD 10 ben je er niet, en het is onnodig ingewikkeld.
    quote:
    Op donderdag 10 januari 2008 19:18 schreef Dzy het volgende:
    Zo kun je het inderdaad ook aanpakken, nog wel een mooiere oplossing dan die van mij.
    Waarom zou je zo ingewikkeld doen? Vergeet ook niet dat je input uit een textbox komt. En het moet natuurlijk ook resultaat geven als je een getal van 2 cijfers invoert... daar ga je dan met je modulo 10.
    Wil iedereen die in telekinese gelooft nu mijn hand op steken?
    | Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
    pi_55931521
    quote:
    Op donderdag 10 januari 2008 19:19 schreef SuperRembo het volgende:

    [..]

    Met alleen MOD 10 ben je er niet, en het is onnodig ingewikkeld.
    Ik reageerde op een deel van een post, namelijk dat het niet mogelijk zou zijn om alles te pakken met een bepaald eindcijfer. Daarvoor heb je genoeg aan een MOD 10.
    Om de hele vraag te beantwoorden heb je meer nodig, da's waar. Maar dat is al meerdere keren voorbij gekomen, dus dat stuk sloeg ik over
    pi_55931671
    quote:
    Op donderdag 10 januari 2008 19:19 schreef SuperRembo het volgende:

    [..]

    Waarom zou je zo ingewikkeld doen? Vergeet ook niet dat je input uit een textbox komt. En het moet natuurlijk ook resultaat geven als je een getal van 2 cijfers invoert... daar ga je dan met je modulo 10.
    Je hebt gelijk, misschien is mijn oplossing toch wel beter Maar met dat typecasten, ik denk dat het een stuk sneller gaat als je het gewoon op mijn manier doet, omdat MySQL dan van elke rij de age column moet gaan omzetten terwijl je het op mijn manier maar een paar instructies in php kost en MySQL gewoon kan doen waar het goed in is.
    "Reality is an illusion created by a lack of alcohol."
    pi_55931886
    quote:
    Op donderdag 10 januari 2008 14:58 schreef Dzy het volgende:
    Je kunt natuurlijk ook je PHP scriptje een set laten maken en daar een mooie query door uit laten poepen. Nog steeds voelt het wat ranzig aan maarja, niet heel veel aan te doen. Stel dat de leeftijd maximaal 100 is, kun je bijvoorbeeld bij een 2 invullen zo'n query laten maken:
    [ code verwijderd ]

    Dan krijg je alsnog alle goede leeftijden terug en gebruik je geen ranzige LIKE operators die bedoeld zijn voor strings. De php code om zo'n query te maken is ook niet zo moeilijk.
    1SELECT * FROM users WHERE (age = 2) OR (age BETWEEN 20 AND 29) OR (age IN (12,22,32,42,52,62,72,82,92))


    Om zo'n query te laten schrijven is dus geen moeilijk php scriptje nodig, zoiets bijvoorbeeld:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?
    $query = "SELECT * FROM users WHERE (age = ".$age.")";
    if ($age<10)
    {
      $query .= " OR (age BETWEEN " . $age*10 . " AND ". $age *10+9 . ") OR (age IN ("
      for ($i=1;$i<10;$i++)
        {
        if ($i<>1) $query .= ",";
        $query .= 10*$i+$age;
        }
      $query .= "))";
    }
    $result = mysql_query($query);
    "Reality is an illusion created by a lack of alcohol."
    pi_55931919
    Dat kan denk ik netter met een range(0,10) die je met implode tot een string samenvoegt.

    1
    2
    3
    <?php
    implode
    (',' range($age$age10) )
    ?>


    geef:

    119,29,39,49,59,69,79,89,99
    pi_55931947
    quote:
    Op donderdag 10 januari 2008 17:35 schreef PiRANiA het volgende:

    [..]

    wat bedoel je?
    Zo zou het eruit moeten zien: "./files/images/smiles/icon_smile.gif"

    Met wat ik geprobeerd heb ziet het er als volgt uit (als ik de paginabron bekijk):
    "$dir_smiles/icon_smile.gif"
    "$dir_smiles./icon_smile.gif"
    "<?=$dir_smiles;?>/icon_smile.gif"
    pi_55932074
    quote:
    Op donderdag 10 januari 2008 19:39 schreef Geqxon het volgende:
    Dat kan denk ik netter met een range(0,10) die je met implode tot een string samenvoegt.
    Heh. Dat is inderdaad mooier. Dit ga ik vaak gebruiken denk ik Ik kende de range function niet, en gebruik toch wel redelijk vaak set queries.
    "Reality is an illusion created by a lack of alcohol."
    pi_55932147
    quote:
    Op donderdag 10 januari 2008 19:44 schreef Dzy het volgende:

    [..]

    Heh. Dat is inderdaad mooier. Dit ga ik vaak gebruiken denk ik :P Ik kende de range function niet, en gebruik toch wel redelijk vaak set queries.
    Range is best een handige functie als je een array met nummertjes wilt hebben. Ik gebruik het wel eens als ik bijvoorbeeld een pull-down menutje met alle weeknummers wil genereren, dan is dat best wel makkelijk. :)

    1
    2
    3
    4
    5
    <?php
    foreach (range(1,52) as $weeknumber){

    }
    ?>


    Overigens is de derde parameter van de functie range wel enkel voor php 5.0.0 en hoger.
    pi_55932186
    quote:
    Op donderdag 10 januari 2008 17:30 schreef BugWorks het volgende:
    Beste allemaal,

    Ik ben bezig met een gastenboek te maken, dit werkt allemaal prima. Nu wilde ik daar als toevoeging smilies aan toe voegen, ook dit werkt prima.

    Nu geef ik van iedere smilie de locatie map aan, dit wil ik verkorten door het gebruik van een variabele.

    Even een voorbeeld hoe het nu is:
    [ code verwijderd ]

    Wat ik dus graag zou willen wijzigen is "./files/images/smiles" vervangen door een variabele ($dir_smiles). Dit wil me dus niet lukken aangezien de wijzingen overgenomen als zijnde tekst.

    Wie kan en wil me hiermee helpen. Alvast bedankt
    1
    2
    3
    4
    <?php
        $path 
    "./files/images/smiles/";
        
    $text str_replace(':)','<img src="'.$path.'icon_smile.gif" border="0" alt="" />',$text);
    ?>


    Bedoel je dit? Mooier is natuurlijk zelf een functie te schrijven die de parameter-input (de ':)') omzet naar de image-tag en dat weer returned. En de border met css meegeven..
    pi_55932292
    quote:
    Op donderdag 10 januari 2008 19:48 schreef Geqxon het volgende:

    [..]

    Range is best een handige functie als je een array met nummertjes wilt hebben. Ik gebruik het wel eens als ik bijvoorbeeld een pull-down menutje met alle weeknummers wil genereren, dan is dat best wel makkelijk.
    [ code verwijderd ]

    Overigens is de derde parameter van de functie range wel enkel voor php 5.0.0 en hoger.
    Dit deed ik altijd met een for-loopje. Dit is inderdaad mooier

    Zitten trouwens leuke functies tussen hierboven. Morgen maar eens proberen allemaal
    pi_55932470
    quote:
    Op donderdag 10 januari 2008 19:49 schreef Tarabass het volgende:

    [..]
    [ code verwijderd ]

    Bedoel je dit? Mooier is natuurlijk zelf een functie te schrijven die de parameter-input (de ':)') omzet naar de image-tag en dat weer returned. En de border met css meegeven..
    Datgene wat jij gepost heb lijkt hier niet te werken, helaas. Heeft namelijk hetzelfde effect als wat ik geprobeerd heb.
    (edit)
    Afbeelding niet zichtbaar, maar in de broncode is alleen het volgende te zien "/icon_smile.gif".

    Overigens worden de ':)' codes omgezet middels een functie, leek me niet relevant om die te posten vandaar alleen die ene regel.
    pi_55932636
    quote:
    Op donderdag 10 januari 2008 20:00 schreef BugWorks het volgende:

    [..]

    Datgene wat jij gepost heb lijkt hier niet te werken, helaas. Heeft namelijk hetzelfde effect als wat ik geprobeerd heb.
    (edit)
    Afbeelding niet zichtbaar, maar in de broncode is alleen het volgende te zien "/icon_smile.gif".

    Overigens worden de ':)' codes omgezet middels een functie, leek me niet relevant om die te posten vandaar alleen die ene regel.
    Dan heb je een '/' teveel, waarschijnlijk heb je die nog voor 'icon_smile.gif' staan en die moet je dan even weghalen..

    Dit doet het namelijk perfect, dus zou het ergens anders in moeten zitten:
    1
    2
    3
    4
    5
    <?php
        $text 
    ':)';
        
    $path "./files/images/smiles/";
        echo 
    $text str_replace(':)','[img src="'.$path.'icon_smile.gif" border="0" alt="" /]',$text);
    ?>


    [ Bericht 25% gewijzigd door Tarabass op 10-01-2008 20:28:41 ]
    pi_55934614
    quote:
    Op donderdag 10 januari 2008 15:58 schreef WyriHaximus het volgende:

    [..]

    Wat ik eerder ook al voor wobbel ze GF suggereerde is de P2P serie van Wrox erg goed om eens naar te kijken .
    ok maar ik zag dat er een beginners en een pro versie is van dit boek. bij het pro boek want zo zag ik mezelf tot nu toe staat dat het verder gaat op de oo inleiding van het beginners boek. aangezien ik nog echt niks weet van oo wil ik geen stappen over slaan. ik vind het denk ik een beetje zonde om het beginners boek te kopen terwijl ik al veel weet..
    Amsterdam, stad van hash en coke,
    Waar de vrouwen zich vrouwelijk gedragen..
    En de mannen ook..
    pi_55935565
    Kijk het boek eens in in de betere boekhandel, dan kun je kijken hoe ver dat gaat. Overigens heb ik mezelf alles qua programmeren aangeleerd via tutorials en uitproberen. Behalve Turbo Pascal (5.5), dat leerde ik van m'n vader long, long time ago
    "Reality is an illusion created by a lack of alcohol."
      donderdag 10 januari 2008 @ 22:07:01 #203
    136730 PiRANiA
    All thinking men are atheists.
    pi_55936035
    [TEL *HIER* AF] Unix Timestamp verjaardag!
    de timestamp is bijna bij de 120 miljoen
      donderdag 10 januari 2008 @ 22:29:08 #204
    62215 qu63
    ..de tijd drinkt..
    pi_55936827
    quote:
    Op donderdag 10 januari 2008 22:07 schreef PiRANiA het volgende:
    [TEL *HIER* AF] Unix Timestamp verjaardag!
    de timestamp is bijna bij de 120 miljoen
    das wel heel erg nerderig
    It's Time To Shine
    [i]What would life be like without rhethorical questions?[/i]
    pi_55938932
    quote:
    Op donderdag 10 januari 2008 22:07 schreef PiRANiA het volgende:
    [TEL *HIER* AF] Unix Timestamp verjaardag!
    de timestamp is bijna bij de 120 miljoen
    Tel eens opnieuw
    Wil iedereen die in telekinese gelooft nu mijn hand op steken?
    | Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
      vrijdag 11 januari 2008 @ 08:03:06 #206
    136730 PiRANiA
    All thinking men are atheists.
    pi_55942887
    quote:
    Op donderdag 10 januari 2008 23:36 schreef SuperRembo het volgende:

    [..]

    Tel eens opnieuw
    pi_55943259
    quote:
    Op vrijdag 11 januari 2008 08:03 schreef PiRANiA het volgende:

    [..]

    Just say hi!
    pi_55948725
    quote:
    Op vrijdag 11 januari 2008 08:03 schreef PiRANiA het volgende:

    [..]

    De 120 miljoen timestamp was lang geleden...
    Wil iedereen die in telekinese gelooft nu mijn hand op steken?
    | Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
      vrijdag 11 januari 2008 @ 13:16:24 #209
    136730 PiRANiA
    All thinking men are atheists.
    pi_55949038
    zit ik er een nul naast?:P
    pi_55949489
    quote:
    Op vrijdag 11 januari 2008 13:16 schreef PiRANiA het volgende:
    zit ik er een nul naast?:P
    pi_55953876
    hallo.
    ik wil zelf een klein systeempje schrijven om de inhoud van pagina's te beheren. maar heeft de inhoud van een mysql row een maximale waarde aan tekens? Stel dat ik 2500 tekens erin wil, kan dat dan? Of wat is de max?
    heb gezocht en kwam op mediumtext uit, is die slim?
    pi_55954135
    quote:
    Op vrijdag 11 januari 2008 16:20 schreef Flaccid het volgende:
    hallo.
    ik wil zelf een klein systeempje schrijven om de inhoud van pagina's te beheren. maar heeft de inhoud van een mysql row een maximale waarde aan tekens? Stel dat ik 2500 tekens erin wil, kan dat dan? Of wat is de max?
    De max is in principe het datatype dat je in mysql gebruikt voor elke kolom. Als die 2500 tekens kan bevatten dan is het dus geen probleem.
    pi_55954217
    De maximale inhoud van een cel hangt af van het datatype dat die cel heeft. Is 't een VARCHAR(50), dan kun je er maar 50 tekens in kwijt. Beetje inschatten wat je wilt hebben en wat er beschikbaar is.

    Een MEDIUMTEXT kan 16 miljoen tekens bevatten, is wellicht wat overkill. Je kunt ook voor een TEXT gaan (65000 tekens).
    pi_55954991
    CSS vraagje Denk dat die ook wel hier kan?

    Hoe een DIV layer laten zweven? Dus bij wijze van spreken de banner hier rechts van fok ALTIJD rechts in beeld houden op een vaste positie - ook als je het topic door scrolled?

    hopen dat Danny niet meeleest
    pi_55955111
    quote:
    Op vrijdag 11 januari 2008 17:07 schreef LeeHarveyOswald het volgende:
    CSS vraagje Denk dat die ook wel hier kan?

    Hoe een DIV layer laten zweven? Dus bij wijze van spreken de banner hier rechts van fok ALTIJD rechts in beeld houden op een vaste positie - ook als je het topic door scrolled?

    hopen dat Danny niet meeleest
    Iets zegt mij dat dat ook met Javascript gedaan is.
    pi_55955165
    quote:
    Op vrijdag 11 januari 2008 17:12 schreef Geqxon het volgende:

    [..]

    Iets zegt mij dat dat ook met Javascript gedaan is.
    Die hiernaast doet niet wat ik wil

    Ik wil die hiernaast, maar dan zwevend
    pi_55955319
    In CSS een position:fixed opgeven. Werk alleen in moderne browsers.
    pi_55955364
    quote:
    Op vrijdag 11 januari 2008 17:23 schreef HuHu het volgende:
    In CSS een position:fixed opgeven. Werk alleen in moderne browsers.
    Al las ik hier wel wat over IE6 support:
    http://www.howtocreate.co.uk/fixedPosition.html
    pi_55955823
    quote:
    Op vrijdag 11 januari 2008 17:23 schreef HuHu het volgende:
    In CSS een position:fixed opgeven. Werk alleen in moderne browsers.
    zo simpel

    Dat had ik zelf ook nog wel kunnen bedenken

    Dat het niet altijd werkt is niet van levensbelang Als het bij het gros van de users maar goed gaat

    Dank
    pi_55957802
    Hmm waar ik alleen tegenop loop is dat mn hele layout compleet verneukt is in IE. Niet alleen die banner dinges, maar echt ALLES.

    www.boeroendoek.nl gaat het om
    pi_55958185
    ja, die is best verneukt
    pi_55959017
    Volgens mij heeft de link van Geqxon ook volledig met dit probleem te maken

    (althans, die gaat er over, veroorzaakt het niet ).
    pi_55960259
    Hoe kan je het beste een BBCODE dingetje maken? Zijn die dingen er kant en klaar?
    pi_55960453
    quote:
    Op vrijdag 11 januari 2008 21:23 schreef Flaccid het volgende:
    Hoe kan je het beste een BBCODE dingetje maken? Zijn die dingen er kant en klaar?
    Ja, en anders zijn er vrij simpele "replace" codes. Dit is wat ik gebruik om in een chat bericht te filteren op 'codes' die ik wil replacen met een emoticon ( dus : ) met :) vervangen, zeg maar):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
            
    // Laden van lijst met emoticons. Deze lijst direct toepassen!

            
    $sql "SELECT * FROM Emotibase";

            
    $query mysql_query($sql) or die(mysql_error());

            while (
    $result mysql_fetch_array($query)) {

            
    $emotitext $result['EmoticonText'];
            
    $emotihtml $result['EmoticonHTML'];

            
    $bericht str_replace ($emotitext$emotihtml$bericht);
       }
    ?>


    Dit kan je dus ook doen door in de database jou 'bbcode' te zetten :)

    Mijn bug lijkt te zitten in:
    1
    2
    3
    4
    #container {
    width: 600px;
    margin: 1 auto;
    }


    Is dat mogelijk? In IE word volgens mij de hele container gewoon naar links geduwd...
    (www.boeroendoek.nl nogsteeds. Mooi in FF, gaar in IE...)
    pi_55961304
    quote:
    Op vrijdag 11 januari 2008 21:33 schreef LeeHarveyOswald het volgende:

    [..]

    Ja, en anders zijn er vrij simpele "replace" codes. Dit is wat ik gebruik om in een chat bericht te filteren op 'codes' die ik wil replacen met een emoticon ( dus : ) met vervangen, zeg maar):
    [ code verwijderd ]

    Dit kan je dus ook doen door in de database jou 'bbcode' te zetten

    Mijn bug lijkt te zitten in:
    [ code verwijderd ]

    Is dat mogelijk? In IE word volgens mij de hele container gewoon naar links geduwd...
    (www.boeroendoek.nl nogsteeds. Mooi in FF, gaar in IE...)
    Hoe ziet die database eruit precies?
    (sql)

    Op jouw probleem: Wazig. Mss wat klooien met het defineren van de width van de body, 100%?

    Ik zit ff met een ander dingetje ondertussen:
    ik heb een form waarin je een post maakt, met 3 knoppen : Submit (gaat naar createpost.php) Reset (spreekt voor zich) en Preview. Bij preview wil ik dat hij het form submit in een popup met een andere action dan het form eigenlijk is. Hoe kan ik dat voor elkaar krijgen. het lukt me wel om createpost.php in het popupje te krijgen, maar niet preview.php erin.

    code:
    1
    2
    3
    4
    5
    6
    7
    8
    <SCRIPT>
    function openTarget (form, features, windowName) {
      if (!windowName)
        windowName = 'formTarget' + (new Date().getTime());
      form.target = windowName;
      open ('', windowName, features);
    }
    </SCRIPT>


    Hoe ik hem aanroep
    1<input name="preview" value="Preview" class="submit" type="submit" onClick="openTarget(this, 'width=700,height=600,resizable=1,scrollbars=1'); return true;" target="newpopup" />
    pi_55961408
    Database heeft enkel een veld EmoticonText (Prim key) en EmoticonHTML.

    In jou geval zou je daar dus BB en HTML voor kunnen gebruiken
    pi_55961641
    Ik zit te denken om een stukje browser detectie er in te gooien, en indien IE te beginnen met <p align = center> en te eindigen met </p>....

    margin: 1 auto; >>> dat lijkt het stuk waar hij op botst!
    pi_55961697
    quote:
    Op vrijdag 11 januari 2008 22:16 schreef LeeHarveyOswald het volgende:
    Database heeft enkel een veld EmoticonText (Prim key) en EmoticonHTML.

    In jou geval zou je daar dus BB en HTML voor kunnen gebruiken
    dan staat er dus in jouw geval:
    1:P     -  <img src='tongue.gif'>


    hoe ging dat ookalweer met een newline in een text area?

    Weet iemand hoe ik slim zon submit + preview kan maken?

    Het is javascript maar whatever: Hoe kan ik net als google doet tijdens het schrijven van een mail als je hem wegklikt: Wilt u op de pagina blijven of doorgaan? Hoe doe ik dat met een submit: Wilt u submitten of nog even wachten ofzo?

    [ Bericht 7% gewijzigd door Flaccid op 11-01-2008 22:34:38 ]
    pi_55963409
    Ik heb echt álles geprobeerd, maar zelfs als ik het hele PHP document leeg laat, alleen <div id="container"> er in zet, met daarin een tekstje, gaat IE over de kop en FF doet alles goed.

    Wat wel weer staaft dat het aan
    1
    2
    3
    4
    #container {
    width: 600px;
    margin: 1 auto;
    }


    ligt, maar ik los er alleen niets mee op :')
    pi_55963740
    quote:
    Op vrijdag 11 januari 2008 22:25 schreef LeeHarveyOswald het volgende:

    margin: 1 auto; >>> dat lijkt het stuk waar hij op botst!
    Je kunt het beste altijd een eenheid vermelden, dus 1px of 1em ipv alleen 1. Alleen bij 0 is de eenheid niet noodzakelijk, maar ook daar kan het geen kwaad.
    pi_55963798
    Heb er 0 van gemaakt op 'aanraden' van css validator.
    pi_55963934
    quote:
    Op vrijdag 11 januari 2008 22:28 schreef Flaccid het volgende:

    [..]

    dan staat er dus in jouw geval:
    [ code verwijderd ]

    hoe ging dat ookalweer met een newline in een text area?
    nl2br() ?
    pi_55964486
    quote:
    Op vrijdag 11 januari 2008 23:55 schreef LeeHarveyOswald het volgende:
    Heb er 0 van gemaakt op 'aanraden' van css validator.
    werkt dat dan wel?
    pi_55964539
    quote:
    Op zaterdag 12 januari 2008 00:29 schreef Flaccid het volgende:

    [..]

    werkt dat dan wel?
    pi_55968099
    @LeeHarveyOswald

    Stuur mij de html en css eens via pm, dan knap ik het even op voor je als je dat wilt. Moet geen probleem zijn lijkt me..
    pi_55968423
    Ik heb een dilemma

    Ik heb ooit eens een CSV-import functie geschreven en op zich werkt die prima. Door middel van een unieke index in mijn tabel zorg ik er met INSERT IGNORE INTO / REPLACE INTO voor dat er geen dubbele records in mijn database komen.

    Als gevolg daarvan worden er dus records geweigerd. Omdat ik eerst alle data verzamel in 1 grote query die ik in 1x insert weet ik achteraf alleen hoeveel records er zijn geweigerd, maar niet wélke. Om erachter te komen welke records het zijn zou ik ze 1 voor 1 moeten inserten, en dan de mislukte verzamelen in een array. Maar dat levert nogal veel queries op als je een beetje een flink bestand hebt...

    Wat zijn jullie ideeën hierover? Staat het uitvoeren van 30.000 queries ipv 1 in verhouding tot de extra informatie die het oplevert?
    pi_55968841
    quote:
    Op zaterdag 12 januari 2008 10:31 schreef Xcalibur het volgende:
    Ik heb een dilemma :)

    Ik heb ooit eens een CSV-import functie geschreven en op zich werkt die prima. Door middel van een unieke index in mijn tabel zorg ik er met INSERT IGNORE INTO / REPLACE INTO voor dat er geen dubbele records in mijn database komen.

    Als gevolg daarvan worden er dus records geweigerd. Omdat ik eerst alle data verzamel in 1 grote query die ik in 1x insert weet ik achteraf alleen hoeveel records er zijn geweigerd, maar niet wélke. Om erachter te komen welke records het zijn zou ik ze 1 voor 1 moeten inserten, en dan de mislukte verzamelen in een array. Maar dat levert nogal veel queries op als je een beetje een flink bestand hebt...

    Wat zijn jullie ideeën hierover? Staat het uitvoeren van 30.000 queries ipv 1 in verhouding tot de extra informatie die het oplevert? :)
    Een manier om zowel de performance te houden van een grote batch queries als het kunnen achterhalen is het zetten van een flag (of een timestamp) op je duplicaat tabelrow. Je zou bijvoorbeeld zoiets kunnen doen als :
    1
    2
    3
    4
    5
    6
    7
    8
    // Breidt VALUES uit voor je gehele insert
    INSERT INTO csv (field, value) VALUES (?, ?) ON DUPLICATE KEY UPDATE duplicate_inserted = 1;

    // Haal alle duplicaten op
    SELECT c.field  FROM csv c WHERE c.duplicate_inserted = 1;

    // Reset alle duplicaten weer
    UPDATE csv SET duplicate_insert = 0;

    Niet supernetjes en het werkt alleen onder MySQL, maar 't doet (als 't goed is) z'n werk :) .
    pi_55970783
    quote:
    Op zaterdag 12 januari 2008 09:50 schreef Tarabass het volgende:
    @LeeHarveyOswald

    Stuur mij de html en css eens via pm, dan knap ik het even op voor je als je dat wilt. Moet geen probleem zijn lijkt me..
    Done
    pi_55975868
    quote:
    Op zaterdag 12 januari 2008 12:49 schreef LeeHarveyOswald het volgende:

    [..]

    Done
    Check je inbox
    pi_55978442
    quote:
    Op zaterdag 12 januari 2008 16:57 schreef Tarabass het volgende:

    [..]

    Check je inbox
    Je bent helemaal geweldig!!!!!!!
    pi_55978939
    quote:
    Op zaterdag 12 januari 2008 19:00 schreef LeeHarveyOswald het volgende:

    [..]

    Je bent helemaal geweldig!!!!!!!
    Let op, want hij is nu niet meer goed in firefox. Wees voorzichtig met veranderingen en probeer in verschillende browsers hoe het er uit ziet. Let ook op dat f5 drukken soms niet de css vernieuwd, doe dat dus met ctrl-f5

    En graag gedaan natuurlijk..
    pi_55979406
    Hier (ook firefox) issie wel goed?
    pi_55979547
    quote:
    Op zaterdag 12 januari 2008 19:41 schreef LeeHarveyOswald het volgende:
    Hier (ook firefox) issie wel goed?
    Ja, hier is 'ie nu ook weer goed. Ik had trouwens de <p>-tags gecommentariseerd maar als je in css de p-tag een margin van 0 meegeeft moet het wel goed gaan in beide browsers. Margin wordt standaard in verschillende browsers per tag in verschillende afstanden weergegeven wat de site lelijk kan maken. Door de margin zelf in te stellen voorkom je dat en is de margin overal hetzelfde. Succes verder met je site!
    pi_55980096
    Om mijn layout te maken heb ik hetvolgende geschreven:

    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
    <?php
    class HTML{
        
        
    private $title;
        
    private $content;
        
    private $disable_menu;
        
        
    public function HTML($title ''$disable_menu false){
        }
        
        
    public function addHTML($html){
            
    $this->content .= $html;
        }
        
        
    public function addHeader($text$level 2){
            
    // voeg een header (h1 tot h7) aan de pagina toe
        
    }
        
        
    public function addParagraph($text$class ""){
            
    // voeg een paragraaf aan de pagina toe
        
    }
        
        
    public function addAnchor($name){
            
    // voeg een <a name="$name"> aan de pagina toe
        
    }
            
        
    private function getMenu(){
            
    // returned op basis van de ingelogde user een menu
        
    }
        
        
    public function getContent(){
            return 
    $this->content;
        }
        
        
    public function getOutput(){
            
    $header "<!DOCT ...... ";
            
    $footer ".....</html>";

            return 
    $header $this->getMenu() . $this->getContent() . $footer;
        }
    }
    ?>


    Het aanmaken van een pagina gaat nu als volgt:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
        $template 
    = new HTML("Logfile");
        
    $template->addHeader("Recent activity",2);
        
    $template->addParagraph("In the .... place:");

        [...]

        
    $template->addHTML($log_table);
        echo 
    $template->getOutput();
    ?>


    Mijn vragen:
  • Maak ik nu correct gebruik van OO in PHP?
  • Is dit een fatsoenlijke manier om een template systeem op te zetten?
  •   zaterdag 12 januari 2008 @ 21:09:54 #245
    85514 ralfie
    !Yvan eht nioj
    pi_55981932
    OO in php is voornamelijk om het de scripters zelf makkelijk te maken. Dus of het correct gebruik van OO is, hangt ervan af of jij of je gebruikers het zelf makkelijk te gebruiken vind/-en

    wat jij hebt gemaakt lijkt me niet echt een template systeem (ik versta daar onder een html achtige file die ingeladen wordt door het template object, waarna je een zooi variabelen in datzelfde object gooit en dan $object->parse() doet om de output te verkrijgen.). Ik krijg de indruk dat jouw code meer een verzameling functies is die html uitpoept? Ik kan het mis hebben en zelf het verschil niet helemaal zien, ik vind het moeilijk om uit te leggen
    pi_55982189
    Juist, maar ik was even bang dat ik de syntax verkeerd had. Ik heb hier ooit eens een OO stukje code gezet, maar toen werd hij verteld dat dat achterhaald was en het tegenwoordig met PHP 5.0 mooier kan. :)

    En ja, wat dit doet is een object aanmaken, daar gooi ik wat gegevens naartoe (html-headers, paragrafen, tabellen), en als ik getOutput() uitvoer krijg ik een string met HTML. Hij laad inderdaad geen externe template in, aangezien dat voor mij onnodig is. Mijn opmaak en HTML zijn toch gescheiden, een voorbeeld van bovenstaande logfile pagina:

    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
    <!DOCTYPE [...]>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl">
       <head>
          <title>Portfolio - Logfile</title>
          <link rel="stylesheet" type="text/css" href="include/stylesheet.css" />
          <script type="text/javascript" src="include/javascript.js"></script>
       </head>
       <body>
          <h1>Mijn portfolio</h1>
          
          <ul class="menu">
             [...]
             <li><a href="logfile.php">Logfile</a></li>
             [...]   
          </ul>            
                
          <h2>Recent activity</h2>
        
          <p>In the [...] place:</p>
          
          <table>
          [...]
          </table>
        
          <p class="footer">© 2008</p>
       </body>
    </html>      


    Om daar nou een template voor te parsen. :P
      zaterdag 12 januari 2008 @ 22:03:25 #247
    85514 ralfie
    !Yvan eht nioj
    pi_55983487
    Ja, ok, daar heb je gelijk in

    wat syntax betreft, geen idee, dat is voor mij meestal gwn proberen, ik gebruik persoonlijk niet zoveel OO

    php5 heeft wel wat geile OO functies en regeltjes erbij gekregen, maar geen waarvan ik denk dat jij er voor een gebruik als dit iets aan zal hebben.
    pi_55983745
    quote:
    Op zaterdag 12 januari 2008 20:06 schreef Geqxon het volgende:
    Om mijn layout te maken heb ik hetvolgende geschreven:
    [ code verwijderd ]

    Het aanmaken van een pagina gaat nu als volgt:
    [ code verwijderd ]

    Mijn vragen:
  • Maak ik nu correct gebruik van OO in PHP?
  • Is dit een fatsoenlijke manier om een template systeem op te zetten?
  • Ik begrijp je functies niet, bijv "addParagraph", waar voegt ie dan een paragraaf toe? Aan het einde? Aan het begin? Ergens in het midden? Lijkt me weinig flexibel, hoe dan ook.

    En een header, dat is voor mij meestal een http header (bijv "Content-type: text/html"), de doctype is gewoon deel van de html.

    Ik heb het idee dat je het jezelf moeilijker maakt dan noodzakelijk, waarom niet gewoon een template gebruiken die je inlaadt? Hier loop je jezelf alleen maar te beperken. Object georienteerd programmeren is niet iets dat "moet" maar het is iets dat je leven als programmeur makkelijker maakt en zorgt voor duidelijke structuur die je later ook makkelijk kan hergebruiken. De structuur die je hier hebt is veel te specifiek en te beperkt - misschien bruikbaar voor die ene applicatie maar voor een andere mag je het weer opnieuw doen. Dat is zonde.
    pi_55984010
    quote:
    Op zaterdag 12 januari 2008 22:12 schreef Farenji het volgende:

    [..]

    Ik begrijp je functies niet, bijv "addParagraph", waar voegt ie dan een paragraaf toe? Aan het einde? Aan het begin? Ergens in het midden? Lijkt me weinig flexibel, hoe dan ook.

    En een header, dat is voor mij meestal een http header (bijv "Content-type: text/html"), de doctype is gewoon deel van de html.

    Ik heb het idee dat je het jezelf moeilijker maakt dan noodzakelijk, waarom niet gewoon een template gebruiken die je inlaadt? Hier loop je jezelf alleen maar te beperken. Object georienteerd programmeren is niet iets dat "moet" maar het is iets dat je leven als programmeur makkelijker maakt en zorgt voor duidelijke structuur die je later ook makkelijk kan hergebruiken. De structuur die je hier hebt is veel te specifiek en te beperkt - misschien bruikbaar voor die ene applicatie maar voor een andere mag je het weer opnieuw doen. Dat is zonde.
    Bedankt, hier heb ik wat aan.

    De opmaak gaat via CSS, dus een template inladen is hier niet nodig.

    [ Bericht 4% gewijzigd door Geqxon op 12-01-2008 22:29:52 ]
    pi_55984070
    quote:
    Op zaterdag 12 januari 2008 11:06 schreef autocue het volgende:
    Een manier om zowel de performance te houden van een grote batch queries als het kunnen achterhalen is het zetten van een flag (of een timestamp) op je duplicaat tabelrow. Je zou bijvoorbeeld zoiets kunnen doen als :
    [ code verwijderd ]

    Niet supernetjes en het werkt alleen onder MySQL, maar 't doet (als 't goed is) z'n werk .
    Ik begrijp niet precies wat je bedoelt, maar ik vind op zich de timestamp-suggestie niet onaardig....
    Alleen heb ik dan juist alle niet-gewijzigde records te pakken, wat niet per se hetzelfde is als alle duplicaten...
    pi_55984806
    quote:
    Op zaterdag 12 januari 2008 22:24 schreef Geqxon het volgende:
    De opmaak gaat via CSS, dus een template inladen is hier niet nodig.
    De opmaak gaat eigenliijk per definitie via css, daar is css voor, maar de structuur... hoe doe je dat dan?
    pi_55985156
    quote:
    Op zaterdag 12 januari 2008 22:52 schreef Farenji het volgende:

    [..]

    De opmaak gaat eigenliijk per definitie via css, daar is css voor, maar de structuur... hoe doe je dat dan?
    Die kwak ik van top-to-bottom in de body neer, en geef ik een passende class-naam mee. Dat gaat voor nu prima, een stukje hierboven staat een voorbeeld hoe ik met deze class een pagina opbouw.
    pi_55986241
    quote:
    Op zaterdag 12 januari 2008 23:02 schreef Geqxon het volgende:

    [..]

    Die kwak ik van top-to-bottom in de body neer, en geef ik een passende class-naam mee. Dat gaat voor nu prima, een stukje hierboven staat een voorbeeld hoe ik met deze class een pagina opbouw.
    Als je niet gaat positioneren via je class maar dat static via css gaat doen wat is dan nog het doel van de class? Imo wordt het pas bruikbaar als je alle css-styles meegeeft in de tags in het html-bestand. Anders kun je beter een template aanmaken en die elke keer gebruiken.

    Laat maar en niet goed gelezen, classes meegeven in de tag kan natuurlijk ook al krijg je dan wel enorm stylesheets als je alle opties sowieso moet aanmaken..
    pi_55989799
    quote:
    Op zaterdag 12 januari 2008 22:26 schreef Xcalibur het volgende:

    [..]

    Ik begrijp niet precies wat je bedoelt, maar ik vind op zich de timestamp-suggestie niet onaardig....
    Alleen heb ik dan juist alle niet-gewijzigde records te pakken, wat niet per se hetzelfde is als alle duplicaten...
    Als je de MySQL ON DUPLICATE functionaliteit gebruikt kun je juist de duplicaten markeren en deze dus later selecteren, daar doelde ik op .
    pi_55989907
    Heeft het nut om LIMIT 1 te gebruiken bij een UPDATE wanneer je zeker bent dat de limit ook altijd 1 is? Of is het overbodig?
    ne okuyon, bokmu var?
    pi_55989940
    quote:
    Op zondag 13 januari 2008 02:22 schreef saban het volgende:
    Heeft het nut om LIMIT 1 te gebruiken bij een UPDATE wanneer je zeker bent dat de limit ook altijd 1 is? Of is het overbodig?
    Depends. Want als er dan toch stiekem ooit 2 records zijn, weet je niet zeker of hij wel de goede van de twee update. Als je dan toch een LIMIT 1 doet, gelijk ook maar even een ORDER BY erbij, zodat hij wel de "beste" van de twee pakt.

    Verder kan het handig zijn voor als er ooit iets goed fout gaat, en hij maar 1 record verpest, in plaats van je complete tabel.
    pi_55990120
    Het kan niet zo zijn dat er twee zelfde records zijn, hij zoekt/select op een uniek id. Mijn vraag was meer van, heeft het snelheidswinst, dus wanneer hij de eerste record heeft gevonden niet meer naar een tweede zoekt (die is er toch niet).
    ne okuyon, bokmu var?
    pi_55993435
    Het zoeken op een geindexeerd ID gaat echt onwaarschijnlijk snel, dus ik vermoed dat de UPDATE zelf de bottleneck is zeg maar.... het toevoegen van een LIMIT zal wellicht *iets* uitmaken, maar dan heb je het toch wel over (tien?)duizenden van seconden denk ik...

    Maak anders een een benchmarkje, waarin je beide varianten 10.000 draait en de tijd bijhoudt
    pi_55993493
    quote:
    Op zondag 13 januari 2008 02:14 schreef autocue het volgende:
    Als je de MySQL ON DUPLICATE functionaliteit gebruikt kun je juist de duplicaten markeren en deze dus later selecteren, daar doelde ik op .
    Ik ga d'r even naar kijken
    Maar voor het goede moet je dan wel de duplicaten overschijven in je database, omdat je anders de oude informatie uit je database haalt, terwijl die niet per se hetzelfde is als de informatie in je CSV (de unieke combinatie is wel hetzelfde natuurlijk, maar de andere velden misschien niet). En eigenlijk wil je de informatie uit je CSV weten...

    Aan de andere kant: ik heb nu een unieke index op firstname + lastname + email, dus als ik dat laat zien weet je op zich ook wel genoeg

    Edit: heb er inmiddels naar gekeken. Volgens mij ontkom je er niet aan om een extra kolom, zoals in jouw voorbeeld? Op zich geen ramp, maar ook niet de mooiste oplossing ... Wat had jij voor ideeën over het bijhouden met een timestamp? Dat lijkt me niet zo betrouwbaar?

    [ Bericht 13% gewijzigd door Xcalibur op 13-01-2008 12:05:28 ]
    pi_55996306
    quote:
    Op zaterdag 12 januari 2008 19:47 schreef Tarabass het volgende:

    [..]

    Ja, hier is 'ie nu ook weer goed. Ik had trouwens de <p>-tags gecommentariseerd maar als je in css de p-tag een margin van 0 meegeeft moet het wel goed gaan in beide browsers. Margin wordt standaard in verschillende browsers per tag in verschillende afstanden weergegeven wat de site lelijk kan maken. Door de margin zelf in te stellen voorkom je dat en is de margin overal hetzelfde. Succes verder met je site!
    Ik zag het! Anders viel in IE het menu over de titelkop...

    Nogmaals heel erg bedankt
    pi_56004352
    quote:
    Op zondag 13 januari 2008 11:39 schreef Xcalibur het volgende:
    Het zoeken op een geindexeerd ID gaat echt onwaarschijnlijk snel, dus ik vermoed dat de UPDATE zelf de bottleneck is zeg maar.... het toevoegen van een LIMIT zal wellicht *iets* uitmaken, maar dan heb je het toch wel over (tien?)duizenden van seconden denk ik...

    Maak anders een een benchmarkje, waarin je beide varianten 10.000 draait en de tijd bijhoudt
    Duidelijk, thanks
    ne okuyon, bokmu var?
    pi_56021586
    Als ik een simpel php servertje op mn pc wil instaleren, is dat dan mogelijk zonder dat dat ding altijd loopt? Dat ik hem alleen run wanneer nodig? Zijn er nog verschillende manieren om zon php server te maken? Ik wil hem gewoon om wat scriptjes te testen...
    pi_56021920
    quote:
    Op maandag 14 januari 2008 12:54 schreef Flaccid het volgende:
    Als ik een simpel php servertje op mn pc wil instaleren, is dat dan mogelijk zonder dat dat ding altijd loopt? Dat ik hem alleen run wanneer nodig? Zijn er nog verschillende manieren om zon php server te maken? Ik wil hem gewoon om wat scriptjes te testen...
    Je kan de server als een service installeren en daarvan kun je aangeven of die automatisch of handmatig gestart moet worden.
      maandag 14 januari 2008 @ 13:11:22 #264
    84244 Scorpie
    Abject en infaam!
    pi_56021955
    quote:
    Op maandag 14 januari 2008 12:54 schreef Flaccid het volgende:
    Als ik een simpel php servertje op mn pc wil instaleren, is dat dan mogelijk zonder dat dat ding altijd loopt? Dat ik hem alleen run wanneer nodig? Zijn er nog verschillende manieren om zon php server te maken? Ik wil hem gewoon om wat scriptjes te testen...
    www.wampserver.com, voor windows, bevat alles wat nodig is om gelijk te beginnen.
    Kan je zelf aan/uit zetten.
    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.
    pi_56022589
    quote:
    Op maandag 14 januari 2008 13:11 schreef Scorpie het volgende:

    [..]

    www.wampserver.com, voor windows, bevat alles wat nodig is om gelijk te beginnen.
    Kan je zelf aan/uit zetten.
    Bedankt, ga het zo eens uitchecken!

    Als je in een mysql table een row met auto_increment hebt, kan je deze waarde dan updaten naar iets anders zonder die auto increment?

    [ Bericht 13% gewijzigd door Flaccid op 14-01-2008 14:01:31 ]
    pi_56023287
    Iemand een tip hoe ik een eenvoudige taalkeuze mogelijkheid kan bouwen?

    Op het moment include ik een van de 2 mogelijke talen door middel van de controle van een sessie. In die sessie sla ik de keuze van de taal op.

    Echter moet ik dus een knopje krijgen die een bepaalde waarde toekent aan die sessie. Ik zat te denken aan een ?language=nl in de URL toe te voegen, en die uit te lezen in de top van de code door te submitten naar PHP_SELF. Echter hebben enkele pagina's weer bepaalde waardes in de URL meegegeven, en anderen weer niet.

    Dus dacht ik aan een 'toggle' pagina. De huidige URL wordt opgeslagen in een sessie waarna je naar een pagina gaat die aan de hand van de ?language=XX in de url de sessie waarde veranderd en hij je weer terug redirect naar de URL in de sessie.

    Dat moet in principe werken, maar misschien is er nog een veel betere manier die ik niet ken
    Michael Scott: If I were joking, you'd be laughing. Do you look like you're laughing?
    Dwight K. Schrute: Impossible to say. I can't see myself.
    pi_56023466
    Opslaan in een sessie is een goede optie. Als je het via de URL wilt meegeven kan dat bijvoorbeeld middels de http_build_query() functie. Het resultaat daarvan kun je gebruiken na de ? in de URL.

    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $data 
    = array('foo'=>'bar',
                  
    'baz'=>'boom',
                  
    'cow'=>'milk',
                  
    'php'=>'hypertext processor');

    echo 
    http_build_query($data); // foo=bar&baz=boom&cow=milk&php=hypertext+processor
    ?>


    Bron: http://php.net/http_build_query
    pi_56024071
    quote:
    Op maandag 14 januari 2008 14:14 schreef HuHu het volgende:
    Opslaan in een sessie is een goede optie. Als je het via de URL wilt meegeven kan dat bijvoorbeeld middels de http_build_query() functie. Het resultaat daarvan kun je gebruiken na de ? in de URL.
    [ code verwijderd ]

    Bron: http://php.net/http_build_query
    Kan je een login systeem ook het beste met sessies doen? Want ik wil nog een login systeem in mijn cms doen uiteraard.
    pi_56024136
    Ik denk trouwens dat ik i.p.v. de taal in de sessie op te slaan gebruik ga maken van een cookie, dan blijft de keuze natuurlijk onthouden.

    En ik denk dat ik dan toch maar gebruik ga maken van een toggle pagina die dan weer redirect naar de pagina waar hij vandaan kwam. Ik zou het anders ook niet weten.
    Michael Scott: If I were joking, you'd be laughing. Do you look like you're laughing?
    Dwight K. Schrute: Impossible to say. I can't see myself.
    pi_56024182
    quote:
    Op maandag 14 januari 2008 14:40 schreef Flaccid het volgende:

    [..]

    Kan je een login systeem ook het beste met sessies doen? Want ik wil nog een login systeem in mijn cms doen uiteraard.
    Zelf maak ik ook gebruik van een sessie bij een zelfgebouwd CMS. Ik controleer dan of die sessie bestaat en of de waarde juist is, en dan geef ik pas de content weer.
    Michael Scott: If I were joking, you'd be laughing. Do you look like you're laughing?
    Dwight K. Schrute: Impossible to say. I can't see myself.
    pi_56024642
    quote:
    Op maandag 14 januari 2008 14:44 schreef DaFrenk het volgende:

    [..]

    Zelf maak ik ook gebruik van een sessie bij een zelfgebouwd CMS. Ik controleer dan of die sessie bestaat en of de waarde juist is, en dan geef ik pas de content weer.
    Ik heb ooit es iets met sessies gedaan maar snapte er niets van. Weet iemand goede tut?
    pi_56026119
    quote:
    Op maandag 14 januari 2008 14:07 schreef DaFrenk het volgende:
    Iemand een tip hoe ik een eenvoudige taalkeuze mogelijkheid kan bouwen?

    Op het moment include ik een van de 2 mogelijke talen door middel van de controle van een sessie. In die sessie sla ik de keuze van de taal op.

    Echter moet ik dus een knopje krijgen die een bepaalde waarde toekent aan die sessie. Ik zat te denken aan een ?language=nl in de URL toe te voegen, en die uit te lezen in de top van de code door te submitten naar PHP_SELF. Echter hebben enkele pagina's weer bepaalde waardes in de URL meegegeven, en anderen weer niet.

    Dus dacht ik aan een 'toggle' pagina. De huidige URL wordt opgeslagen in een sessie waarna je naar een pagina gaat die aan de hand van de ?language=XX in de url de sessie waarde veranderd en hij je weer terug redirect naar de URL in de sessie.

    Dat moet in principe werken, maar misschien is er nog een veel betere manier die ik niet ken
    Zoals ik het laatst opgelost heb: klikken op een vlaggetje laadt het script met als enige param language=blaat. Het script ziet de language param, zet de juiste taal in de sessie, en doet een redirect naar de referrer (die lees je gewoon uit uit de server vars), waar wel voor de zekerheid een evt language param uit is gefilterd (een eeuwige circulaire redirect is niet zo fijn namelijk). Op deze manier hoef je je geen zorgen te maken om eventuele andere params die al in de url staan.

    Bovenaan lees je dan gewoon de taal uit uit de sessie et voila.
    pi_56026136
    quote:
    Op maandag 14 januari 2008 13:37 schreef Flaccid het volgende:

    [..]

    Bedankt, ga het zo eens uitchecken!

    Als je in een mysql table een row met auto_increment hebt, kan je deze waarde dan updaten naar iets anders zonder die auto increment?
    Kan wel, maar dan gaat hij de volgende keer verder tellen vanaf dat nummer. Laten we zeggen dat je 2 records er in hebt staan met ID 1 en ID 2, en je voegt er een in met ID 5, dan gaat hij bij de volgende rij verder met ID 6.
    pi_56026663
    quote:
    Op maandag 14 januari 2008 16:15 schreef Farenji het volgende:

    [..]

    Zoals ik het laatst opgelost heb: klikken op een vlaggetje laadt het script met als enige param language=blaat. Het script ziet de language param, zet de juiste taal in de sessie, en doet een redirect naar de referrer (die lees je gewoon uit uit de server vars), waar wel voor de zekerheid een evt language param uit is gefilterd (een eeuwige circulaire redirect is niet zo fijn namelijk). Op deze manier hoef je je geen zorgen te maken om eventuele andere params die al in de url staan.

    Bovenaan lees je dan gewoon de taal uit uit de sessie et voila.
    Aight! Zo heb ik het nu ook gedaan. Vroeg me gewoon af of er betere methodes waren. Zijn er misschien wel, maar dit functioneerd eigenlijk prima.
    Michael Scott: If I were joking, you'd be laughing. Do you look like you're laughing?
    Dwight K. Schrute: Impossible to say. I can't see myself.
      maandag 14 januari 2008 @ 17:15:06 #275
    137690 Pizzahut
    Het Bora Bora Gebergte
    pi_56027537
    zeg ik heb een vraagje.

    dit is mijn huidig inlog systeem:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php 
    session_start(); 
    if(!empty($_POST)){ 
    include("dbcon.php"); 
    $wachtwoord_md   = md5($_POST["wachtwoord"]);
    $query = "SELECT * FROM gebruiker WHERE Gebruikersnaam='" . $_POST["gebruikersnaam"]  ."' AND Wachtwoord='". $wachtwoord_md ."'"; 

    $result = mysql_query($query); 

    if(mysql_num_rows($result) > 0){ 
       $user = $_POST["gebruikersnaam"]; 
       $_SESSION['user'] = $user; 
       $_SESSION['wachtwoord'] = $wachtwoord_md;
       header("Location: shout.php"); 
       exit(); 

    else{  
       header("Location: index.php"); 
    }
    }
    ?>


    nu werk ik met sessies om te controleren of iemand een pagina mag zien.
    nu wil ik dit veranderen dmv een rank.
    dus niet
    1 $_SESSION['user'] == "pizzahut"

    maar
    1$_SESSION['rank'] == "admin"

    nu heb ik in de database een rank veld aangemaakt en geprobeert deze een sessie te geven maar wil niet lukken.
    kan iemand mij verder helpen?
    Disturbed Mind
    Het leven: Soms ben je de duif, soms het standbeeld.
    pi_56027652
    quote:
    Op maandag 14 januari 2008 16:15 schreef FrozenOne23 het volgende:

    [..]

    Kan wel, maar dan gaat hij de volgende keer verder tellen vanaf dat nummer. Laten we zeggen dat je 2 records er in hebt staan met ID 1 en ID 2, en je voegt er een in met ID 5, dan gaat hij bij de volgende rij verder met ID 6.
    ok. Het gaat bij mij om de volgorde van een aantal items. stel ik heb items met ID1 ,2 en 3, en ik wil van 3 -> 1 maken en van 1 -> 3 maken, dan gaat dat toch goed?

    Hoe kan ik trouwens makkelijk checken of een rij variables een value heeft? laten we zeggen ik heb $a $b $c $d. Hoe kan ik makeklijk kijken of ze iets bevatten? Is daar een handig ding voor? met 1 tegelijk is het nog met if te doen, maar ik heb er 7, dus dat wordt een warboel! Dit is mijn functie tot nu toe:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    function checkvalue($variable,$text)
    {
        if(
    $variable==''){
        echo
    $text;
        }
        else{
        echo
    $variable;
        }
    }
    ?>

    waarbij $text de tekst is om te weergeven of ie leeg is. functies zijn handig!

    [ Bericht 15% gewijzigd door Flaccid op 14-01-2008 17:26:58 ]
    pi_56027998
    Ik heb een heel klein vraagje: Hoe kan ik er voor zorgen dat als iemand mijn website bezoek door http://mijnsite.nl in te tikken op http://www.mijnsite.nl terecht komt?
    pi_56028107
    quote:
    Op maandag 14 januari 2008 17:37 schreef super-muffin het volgende:
    Ik heb een heel klein vraagje: Hoe kan ik er voor zorgen dat als iemand mijn website bezoek door http://mijnsite.nl in te tikken op http://www.mijnsite.nl terecht komt?
    http://www.neohide.com/ht(...)w-domain-name-prefix
    htaccess + mod_rewrite
    pi_56028120
    quote:
    Op maandag 14 januari 2008 17:37 schreef super-muffin het volgende:
    Ik heb een heel klein vraagje: Hoe kan ik er voor zorgen dat als iemand mijn website bezoek door http://mijnsite.nl in te tikken op http://www.mijnsite.nl terecht komt?
    Hm, bij PCExtreme kon je dat apart aangeven ergens op hun site. Dus misschien moet je even bij je hoster vragen?

    Edit: Ah, er is al een ander antwoord
    Michael Scott: If I were joking, you'd be laughing. Do you look like you're laughing?
    Dwight K. Schrute: Impossible to say. I can't see myself.
    pi_56028157
    quote:
    Op maandag 14 januari 2008 17:20 schreef Flaccid het volgende:

    [..]

    ok. Het gaat bij mij om de volgorde van een aantal items. stel ik heb items met ID1 ,2 en 3, en ik wil van 3 -> 1 maken en van 1 -> 3 maken, dan gaat dat toch goed?

    Hoe kan ik trouwens makkelijk checken of een rij variables een value heeft? laten we zeggen ik heb $a $b $c $d. Hoe kan ik makeklijk kijken of ze iets bevatten? Is daar een handig ding voor? met 1 tegelijk is het nog met if te doen, maar ik heb er 7, dus dat wordt een warboel! Dit is mijn functie tot nu toe:
    [ code verwijderd ]

    waarbij $text de tekst is om te weergeven of ie leeg is. functies zijn handig!
    Array maken en met een loop langsgaan of er lege values bijzitten.
    pi_56028370
    ik heb nu een stukje code:
    dit is nogal rommelig gecode denk ik. Hoe kan ik dit slimmer aanpakken?

    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
    <?php
    $name
    = $_POST['name'];
    $title = $_POST['title'];
    $shortlink = $_POST['shortlink'];
    $linkname = $_POST['linkname'];
    $content = $_POST['content'];
    $homepage = $_POST['homepage'];
    $showlink = $_POST['showlink'];

    function
    checkvalue($variable,$text)
    {
        if(
    $variable==''){
        echo
    '<span class="warning">'.$text.'</span>';
        }
        else{
        echo
    $variable;
        }
    };

    function
    createrow($coltitle,$colvar)
    {
        echo
    '<tr>';
        echo
    '<td>'.$coltitle.'</td>';
        echo
    '<td>';
        
    checkvalue($colvar,$coltitle.' niet ingevoerd');
        echo
    '</td>';
        echo
    '</tr>';

    }

    $varlist = array();
    $varlist['name'] = 'Naam';
    $varlist['title'] = 'Title';
    $varlist['shortlink'] = 'Shortlink';
    $varlist['linkname'] = 'Linkname';


    echo
    '
    <table width="100%" border="0" cellspacing="0" cellpadding="0">'
    ;
    foreach(
    $varlist as $var => $caption)
    {
    createrow($caption,$name);
    }
    echo
    '

    </table>
    '
    ?>


    ik php nog niet zo lang

    [ Bericht 2% gewijzigd door Flaccid op 14-01-2008 18:01:53 ]
    pi_56028589
    Ik vind 't er niet zo beroerd uit zien hoor Flaccid. Je zou wel wat meer witruimte kunnen gebruiken, bijvoorbeeld binnen je if's:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    function checkvalue($variable,$text)
    {
        if(
    $variable=='') {
            echo 
    '<span class="warning">'.$text.'</span>';
        } else {
            echo 
    $variable;
        }
    }
    ?>


    De ; aan het einde van de functie hoort daar niet en de inspringing is zo wat beter. Een lijstje variabelen kun je nog zo doen:

    1
    2
    3
    4
    5
    6
    <?php
    $name      
    $_POST['name'];
    $title     $_POST['title'];
    $shortlink $_POST['shortlink'];
    $linkname  $_POST['linkname'];
    ?>


    Meer over coding-stanards vind je hier: http://pear.php.net/manual/en/standards.php
    pi_56028711
    quote:
    Op maandag 14 januari 2008 17:42 schreef mschol het volgende:

    [..]

    http://www.neohide.com/ht(...)w-domain-name-prefix
    htaccess + mod_rewrite
    Bedankt. Tis gelukt.
    pi_56028828
    quote:
    Op maandag 14 januari 2008 18:09 schreef HuHu het volgende:
    Ik vind 't er niet zo beroerd uit zien hoor Flaccid. Je zou wel wat meer witruimte kunnen gebruiken, bijvoorbeeld binnen je if's:
    [ code verwijderd ]

    De ; aan het einde van de functie hoort daar niet en de inspringing is zo wat beter. Een lijstje variabelen kun je nog zo doen:
    [ code verwijderd ]

    Meer over coding-stanards vind je hier: http://pear.php.net/manual/en/standards.php
    bedankt voor de tips. ik had het ook over de manier waarop het geprogrammeerd is. Want nu weet ik zelf ff niet meer wat ik doe.

    Dit heb ik er nu van gemaakt:

    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
    <?php
    $name         
    $_POST['name'];
    $title         $_POST['title'];
    $shortlink     $_POST['shortlink'];
    $linkname      $_POST['linkname'];
    $content     $_POST['content'];
    $homepage     $_POST['homepage'];
    $showlink     $_POST['showlink'];

    function 
    checkvalue($variable,$text)
    {
        if(
    $variable=='')
            {
                echo 
    '<span class="warning">'.$text.' niet ingevoerd</span>';
            }
        else
            {
                echo 
    $variable;
            }
    };

    function 
    createrow($coltitle,$colvar)
    {
        echo 
    '<tr>';
        echo 
    '<td>'.$coltitle.'</td>';
        echo 
    '<td>';
        
    checkvalue($colvar,$coltitle);
        echo 
    '</td>';
        echo 
    '</tr>';

    }

    $varlist = array();
    $varlist[$name]      = 'Naam';
    $varlist[$title]      = 'Titel';
    $varlist[$shortlink] = 'Shortlink';
    $varlist[$linkname]     = 'Linkname';
    $varlist[$content]      = 'Content';


    echo
    '
    <table width="100%" border="0" cellspacing="0" cellpadding="0">'
    ;

    foreach(
    $varlist as $var => $caption)
        {
            
    createrow($caption,$var);
        }

    echo
    '
      <tr>
        <td>Homepage</td>
        <td>'
    ;  if($homepage=='on'){echo'Ja';}else{echo'Nee';}  ;echo '</td>
      </tr>
      <tr>
        <td width="40%">Showlink</td>
        <td>'
    ;  if($showlink=='on'){echo'Ja';}else{echo'Nee';}  ;echo '</td>
      </tr>
      </table>
    '
    ?>


    Nu vallen al die rijen weg. :{ Heel wazig. Waarom is dat? (de tabbelrijen die die aanmaakt he)
    pi_56028934
    quote:
    Op maandag 14 januari 2008 16:15 schreef Farenji het volgende:

    [..]

    Zoals ik het laatst opgelost heb: klikken op een vlaggetje laadt het script met als enige param language=blaat. Het script ziet de language param, zet de juiste taal in de sessie, en doet een redirect naar de referrer (die lees je gewoon uit uit de server vars), waar wel voor de zekerheid een evt language param uit is gefilterd (een eeuwige circulaire redirect is niet zo fijn namelijk). Op deze manier hoef je je geen zorgen te maken om eventuele andere params die al in de url staan.

    Bovenaan lees je dan gewoon de taal uit uit de sessie et voila.
    Uiteraard moet je controleren of de taal wel een geldige waarde krijgt. En of de referrer wel meegegeven is bij de aanroep (en naar je eigen server verwijst). De meeste waarden in $_SERVER moet je net zo wantrouwend behandelen als $_GET en $_POST.
    pi_56030169
    ik ben net begonnen met een phpnuke ^^ iemand tips? :p ik weet dat het een brak systeem is maar het is redelijk complex en een stuk beter dan een html site ( code die ik wel beheers) >.> iemand nog ideeen voor als ik bezig ga of proggies die ik mss kan instaleren of leuk zijn ?
    Redacted
    pi_56030263
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
        
    if($variable=='')
            {
                echo 
    '<span class="warning">'.$text.' niet ingevoerd</span>';
            }
        else
            {
                echo 
    $variable;
            }
    ?>


    naar

    1
    2
    3
    <?php
    echo (empty($variable)) ? '<span class="warning">'.$text.' niet ingevoerd</span>' $variabele;
    ?>


    Korter, maar minder leesbaar. Eventueel:

    1
    2
    3
    4
    5
    6
    <?php
        
    if(empty($variable))
                echo 
    '<span class="warning">'.$text.' niet ingevoerd</span>';
        else
                echo 
    $variable;
    ?>


    Verder vind ik het niet netjes als functies zelf maar wat gaan echo-en, ik vind het mooier als ze een return waarde hebben. Voorbeeld:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
    function checkvalue($variable,$text)
    {
        if(
    $variable=='')
            {
                echo 
    '<span class="warning">'.$text.' niet ingevoerd</span>';
            }
        else
            {
                echo 
    $variable;
            }
    };
    function 
    createrow($coltitle,$colvar)
    {
        echo 
    '<tr>';
        echo 
    '<td>'.$coltitle.'</td>';
        echo 
    '<td>';
        
    checkvalue($colvar,$coltitle);
        echo 
    '</td>';
        echo 
    '</tr>';

    }
    ?>


    word dan:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
    function checkvalue($variable,$text)
    {
        if(
    $variable=='')
            {
                return 
    '<span class="warning">'.$text.' niet ingevoerd</span>';
            }
        else
            {
                return 
    $variable;
            }
    };
    function 
    createrow($coltitle,$colvar)
    {
        return 
    '
                <tr>
                  <td>'
    .$coltitle.'</td>
                  <td>' 
    checkvalue($colvar$coltitle) . '</td>
                </tr>
        '
    ;
    }
    ?>


    Edit

    Ook hier valt wat aan te pimpen:
    1
    2
    3
    <?php
    echo ($homepage=='on') ? 'Ja' 'Nee';
    ?>
    pi_56031990
    Het enige wat er nu uit komt, uit die foreach, wat heer vaag is, is Content. De laatste uit mn array.
    pi_56032556
    quote:
    Op maandag 14 januari 2008 19:15 schreef Geqxon het volgende:

    [ code verwijderd ]

    naar
    [ code verwijderd ]

    Korter, maar minder leesbaar. Eventueel:
    [ code verwijderd ]

    Verder vind ik het niet netjes als functies zelf maar wat gaan echo-en, ik vind het mooier als ze een return waarde hebben. Voorbeeld:
    [ code verwijderd ]

    word dan:
    [ code verwijderd ]

    Edit

    Ook hier valt wat aan te pimpen:
    [ code verwijderd ]
    Ik vind het heel lelijk als er html tussen de applicatiecode staat. Die hoort daar niet. Functies geven (references naar) variabelen terug, die je vervolgens in een template object plempt. In die templates staat al je html, nergens anders. En in die templates komt weer geen php/andere applicatie logica voor.
    Maar aan de andere kant is php juist ontworpen om tussen de html te staan en andersom, daarom vind ik het ook zo'n ranzig taaltje. Het zou niet moeten mogen. Dat soort praktijken zorgen voor rampzalige onderhoudbaarheid van je applicaties.
    pi_56035361
    Ja dat is wel zo, maar als je nog niet zo lang PHP gebruikt is dat misschien nog wat teveel van het goede vind je niet
    "Reality is an illusion created by a lack of alcohol."
    pi_56035501
    quote:
    Op maandag 14 januari 2008 20:38 schreef Farenji het volgende:

    [..]

    Ik vind het heel lelijk als er html tussen de applicatiecode staat. Die hoort daar niet. Functies geven (references naar) variabelen terug, die je vervolgens in een template object plempt. In die templates staat al je html, nergens anders. En in die templates komt weer geen php/andere applicatie logica voor.
    Maar aan de andere kant is php juist ontworpen om tussen de html te staan en andersom, daarom vind ik het ook zo'n ranzig taaltje. Het zou niet moeten mogen. Dat soort praktijken zorgen voor rampzalige onderhoudbaarheid van je applicaties.
    Mooi en aardig, maar of het in de praktijk haalbaar is? Dan zou je elk klein stukje HTML code ergens in een template hebben moeten zitten, en heb je enorm veel classes danwel objecten...
    pi_56035639
    Hangt een beetje van je applicatie af maar bij de meeste dingen probeer ik nu standaard frameworks te gebruiken, dan houd je het allemaal heel mooi gescheiden en echt duizend keer onderhoudbaarder.
    "Reality is an illusion created by a lack of alcohol."
    pi_56036650
    Of je doet het als Smarty, maar dat is nog lelijker dan PHP in je opmaak:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    {section name=outer loop=$FirstName}
    {if $smarty.section.outer.index is odd by 2}
       {$smarty.section.outer.rownum} . {$FirstName[outer]} {$LastName[outer]}
    {else}
       {$smarty.section.outer.rownum} * {$FirstName[outer]} {$LastName[outer]}
    {/if}
    {sectionelse}
       none
    {/section}
    pi_56037004
    quote:
    Op maandag 14 januari 2008 22:21 schreef Geqxon het volgende:

    [..]

    Mooi en aardig, maar of het in de praktijk haalbaar is? Dan zou je elk klein stukje HTML code ergens in een template hebben moeten zitten, en heb je enorm veel classes danwel objecten...
    Je zult altijd wat logica nodig hebben om te bepalen wat je laat zien. Met IF-structuren en wat loopjes moet je een heel eind kunnen komen, al dan niet in combinatie met opmaakfuncties. Maar HTML en het verzamelen van data hoort niet echt bij elkaar, naar mijn mening dan.
    pi_56037094
    quote:
    Op maandag 14 januari 2008 22:21 schreef Geqxon het volgende:

    [..]

    Mooi en aardig, maar of het in de praktijk haalbaar is? Dan zou je elk klein stukje HTML code ergens in een template hebben moeten zitten, en heb je enorm veel classes danwel objecten...
    Uiteraard is het haalbaar, kwestie van een beetje nadenken over je applicatie, je templates goed opzetten en content goed scheiden van opmaak en structuur. Templates hoeven niet ingewikkeldere dingen te doen dan wat variabelen weer te geven, wat simpele if/then statements en misschien een array in een loopje in html omzetten.
    Het is niet moeilijk, het is een manier van denken, het wordt er juist simpeler door. JUIST beginners zouden het beste meteen zo kunnen beginnen, slechte gewoontes zijn moeilijker af te leren dan goede gewoontes aan te leren zijn.
    pi_56037404
    quote:
    Op maandag 14 januari 2008 23:07 schreef Light het volgende:
    Je zult altijd wat logica nodig hebben om te bepalen wat je laat zien. Met IF-structuren en wat loopjes moet je een heel eind kunnen komen, al dan niet in combinatie met opmaakfuncties. Maar HTML en het verzamelen van data hoort niet echt bij elkaar, naar mijn mening dan.
    Dat dus
    Verder vind ik Smarty een prima systeem
    pi_56037517
    quote:
    Op maandag 14 januari 2008 17:20 schreef Flaccid het volgende:
    ok. Het gaat bij mij om de volgorde van een aantal items. stel ik heb items met ID1 ,2 en 3, en ik wil van 3 -> 1 maken en van 1 -> 3 maken, dan gaat dat toch goed?
    Als je de volgorde wilt bepalen moet je een kolom toevoegen om dit in te doen.
    Je autoincrement id hiervoor misbruiken is een slecht plan. Records hebben een uniek ID met een reden, het is nou net niet de bedoeling dat je die gaat veranderen
    pi_56037787
    quote:
    Op maandag 14 januari 2008 23:07 schreef Light het volgende:

    [..]

    Je zult altijd wat logica nodig hebben om te bepalen wat je laat zien. Met IF-structuren en wat loopjes moet je een heel eind kunnen komen, al dan niet in combinatie met opmaakfuncties. Maar HTML en het verzamelen van data hoort niet echt bij elkaar, naar mijn mening dan.
    Ik ben op zich een vrij erge "MVC nazi" geworden, in de zin dat ik zelf bijv never nooit html in mijn code meer zet en die dingen gescheiden houd, maar dat ben ik niet zomaar geworden. Als je een keer een echt grote applicatie hebt moeten onderhouden en uitbouwen waar die scheiding tussen html en applicatie absoluut niet is doorgevoerd, dan word je dat vanzelf. Tering wat is dat naar. Nachtmerries heb ik er van gehad. Voor een klein scriptje of een beginnersprojectje is het niet zo van belang maar als je iets geeft om onderhoudbaarheid en uitbreidbaarheid dan is het essentieel. Maar dat zijn meestal dingen waar mensen pas later the hard way achter komen (ik ook dus).
    pi_56037869
    quote:
    Op maandag 14 januari 2008 23:07 schreef Light het volgende:

    [..]

    Je zult altijd wat logica nodig hebben om te bepalen wat je laat zien. Met IF-structuren en wat loopjes moet je een heel eind kunnen komen, al dan niet in combinatie met opmaakfuncties. Maar HTML en het verzamelen van data hoort niet echt bij elkaar, naar mijn mening dan.
    Wat ik in mijn geval doe:

  • Data ophalen en in diverse arrays stoppen
  • '/template/the_name_of_the_current_file.php' includen, die met de opgehaalde data een HTML pagina in elkaar zet, door constant stukjes HTML aan een object te voeren, en deze op het laatst uit te putten.

    Dit kan vast ook prima met Smarty, echter wel met een hoop overhead. Voor iets simpels is wat ik nu doe meer dan genoeg. Het ligt maar net aan de grootte van het project.
  • pi_56037950
    Maar Farenji, wat als je 'even vlug' bij elk menu-item dat begint met het woord "Maan", een zonnetje moet tonen, die geel is als de gebruiksnaam eindigt op een D, en groen als de gebruikersnaam eindigt op een T. Mag je dan niet bakken aan code aan je template gaan toevoegen?
    pi_56037974
    De overhead van smarty is behoorlijk laag hoor, templates worden gecompileerd en gecached, uiteindelijk is het gewoon vrij geoptimaliseerde php wat je uitvoert en dus echt niet langzamer dan een oplossing die je zelf inelkaar sleutelt. Wel veel krachtiger.
    abonnement Unibet Coolblue
    Forum Opties
    Forumhop:
    Hop naar:
    (afkorting, bv 'KLB')