abonnement Unibet Coolblue Bitvavo
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
  • The people who lost my respect will never get a capital letter for their name again.
    Like trump...
      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
    pi_55379915
    Thuis gebruik ik PHPEditor, werkt wel lekker. Soms ook Eclipse, aangezien ik dat van werk ken.
    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!
    The people who lost my respect will never get a capital letter for their name again.
    Like trump...
    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?
    The people who lost my respect will never get a capital letter for their name again.
    Like trump...
    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
    The people who lost my respect will never get a capital letter for their name again.
    Like trump...
    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
    The people who lost my respect will never get a capital letter for their name again.
    Like trump...
    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);
    */
    ?>
    The people who lost my respect will never get a capital letter for their name again.
    Like trump...
      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 ]
    The people who lost my respect will never get a capital letter for their name again.
    Like trump...
    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
    The people who lost my respect will never get a capital letter for their name again.
    Like trump...
      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
    The people who lost my respect will never get a capital letter for their name again.
    Like trump...
    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?
    The people who lost my respect will never get a capital letter for their name again.
    Like trump...
    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
    The people who lost my respect will never get a capital letter for their name again.
    Like trump...
    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
    The people who lost my respect will never get a capital letter for their name again.
    Like trump...
    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)
    abonnement Unibet Coolblue Bitvavo
    Forum Opties
    Forumhop:
    Hop naar:
    (afkorting, bv 'KLB')