FOK!forum / Digital Corner / [PHP/(My)SQL] voor dummies - Deel 14
ikke_ookdonderdag 20 oktober 2005 @ 21:41

cd niet bijgeleverd

Vorige delen:
[PHP] voor dummies - Deel 1
[PHP] voor dummies - Deel 2
[PHP] voor dummies - Deel 3
[PHP] voor dummies - Deel 4
[PHP] voor dummies - Deel 5
[PHP/(My)SQL] voor dummies - Deel 6
[PHP/(My)SQL] voor dummies - Deel 7
[PHP/(My)SQL] voor dummies - Deel 8
[PHP/(My)SQL] voor dummies - Deel 9
[PHP/(My)SQL] voor dummies - Deel 10
[PHP/(My)SQL] voor dummies - Deel 11
[PHP/(My)SQL] voor dummies - Deel 12
[PHP/(My)SQL] voor dummies - Deel 13

Zie ook:
  • PHP Dataverwerking
  • Officiële PHP website
  • PHP Documentatie
  • MySQL Reference Manual
  • Yet Another PHP Faq

    Deze OP en instructies voor nieuw topic: http://wiki.fok.nl/index.php/OP/PHP
  • ikke_ookdonderdag 20 oktober 2005 @ 21:45
    Ik heb een mailfunctie die mij een zipbestand als attachment stuurt:
    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
    <?php
    Define
    (DB,"database12");//define database
    Define(EMAIL,"backup@domein.com");//define email
    function MailBackup($content)
    {
        
    $filename = "Backup_".DB."_".date("d_m_y").".zip";    
        
    $content = gzencode($content);

        
    //should be a "more unique" string, worked for the test
        
    $boundary = md5(time());

        
    //base-64 encode
        
    $content = chunk_split(base64_encode($content));

        
    $subject = 'Backup van '.DB.' - '.date("m_d_y");

        
    $headers  = 'MIME-Version: 1.0' ."\n"
                  
    . 'Content-type: multipart/mixed; boundary="' .$boundary .'"' ."\n"
                  
    . 'From: archive.php <postmaster@domein.nl>' ."\n"
                  
    . 'Reply-To: postmaster@domein.nl ' ."\n";

        
    $headers .= "--" .$boundary ."\n"
                 
    . "Content-type: multipart/mixed;\n"
                 
    . 'Content-Disposition: attachment;'
                 
    . 'filename='.$filename .";\n"
                 
    . 'Content-transfer-encoding: base64' ."\n\n"
                 
    . $content ."\n\n"
                 
    . '--' .$boundary .'--';

        
    mail(EMAIL, $subject, $message, $headers);
    }
    ?>

    Lijkt me dat je er wel wat mee kunt.
    HuHudonderdag 20 oktober 2005 @ 22:04
    Bedankt ikke_ook. Ik zal er morgen alles eens uitgebreid gaan bestuderen. Ik denk dat het wel moet lukken met de info die ik tot nu toe heb gekregen.

    ikke_ookdonderdag 20 oktober 2005 @ 22:04
    hmm ik zie dat t eigenlijk [PHP/(My)SQL] voor dummies - deel 14 had moeten zijn
    Kan een modje die zich verveelt dat ff fixen?Staat mooier in t lijstje
    the_disheaverdonderdag 20 oktober 2005 @ 22:11
    tvp!

    Ben nu maar weer eens MySQL aan het proberen te instaleren... Is nooit gelukt

    Met mijn Reg_exp voor urls en emails wil ook niet echt
    Jumpdonderdag 20 oktober 2005 @ 22:11
    ikko_ook: aangepast
    Jumpdonderdag 20 oktober 2005 @ 22:29
    Ff sommige mensen op volgend topic attent maken: Voor alle users die TVP's gebruik(t)en.

    Hoe spijtig ik het ook vind
    Pronkvrijdag 21 oktober 2005 @ 16:27
    Ik heb een tellertje gebouwd, nu wil ik doormiddel van een cookie zorgen dat mensen maar 1 keer per dag geteld worden.

    Hoe kan ik er voor zorgen dat een cookie ALTIJD verloopt om twaalf uur s'nachts. Mijn hele script werkt al, het cookie verloopt nu alleen al na een uur.


    1
    2
    3
    4
    <?php
    setcookie
    ("tellerblokkeren", "true",time()+3600, "/");

    ?>
    Ali Salamivrijdag 21 oktober 2005 @ 16:42
    De tijd die staat voor 12 uur die nacht - time() is het aantal seconden dat time() verwijderd is van middernacht. Dat kun je vervolgens in setcookie voor 3600 in de plaats zetten. Het uitvinden hoe je de middernachtdatum uit kunt vinden lukt je vast wel
    Pronkvrijdag 21 oktober 2005 @ 16:54
    quote:
    Op vrijdag 21 oktober 2005 16:42 schreef Ali Salami het volgende:
    De tijd die staat voor 12 uur die nacht - time() is het aantal seconden dat time() verwijderd is van middernacht. Dat kun je vervolgens in setcookie voor 3600 in de plaats zetten. Het uitvinden hoe je de middernachtdatum uit kunt vinden lukt je vast wel
    Ehm.. nee.. Hier snap ik dus serieus helemaal geen hol van. Maar misschien ligt dat gewoon aan mij. :s
    Ali Salamivrijdag 21 oktober 2005 @ 17:16
    Nou, je zet die cookie op 12 uur 's nachts. Je moet dus weten op welke timestamp hij moet aflopen. Die timestamp is per dag variabel.

    Overigens had ik het fout zonet, want je kunt uiteraard met die timestamp ook meteen het koekje zetten. Je gaat dus de timestamp uitzoeken die staat voor 12 uur die nacht. Dat doe je doormiddel van mktime(). Uiteraard moet je vantevoren uitzoeken welke dag het dan is, welke maand en welk jaar.

    Je krijgt dus iets als

    1
    2
    3
    <?php
    $koekje
    =mktime(00,00,00,$maand,$dag,$jaar);
    ?>


    Die waarde zet je vervolgens in het koekje

    1
    2
    3
    <?php
    setcookie
    ("tellerblokkeren", "true",$koekje, "/");  
    ?>
    Lightvrijdag 21 oktober 2005 @ 17:49
    En waarom niet gewoon:
    1
    2
    3
    <?php
    setcookie
    ("tellerblokkeren", "true", strtotime("tomorrow 0"), "/");
    ?>
    Ali Salamivrijdag 21 oktober 2005 @ 18:18
    Die nul geeft dan aan dat het op 00.00 uur moet worden gezet? Zo ja, dan is dat nog simpeler
    Lightvrijdag 21 oktober 2005 @ 18:23
    quote:
    Op vrijdag 21 oktober 2005 18:18 schreef Ali Salami het volgende:
    Die nul geeft dan aan dat het op 00.00 uur moet worden gezet? Zo ja, dan is dat nog simpeler
    Yep. Je mag ipv 0 ook 0:0:0 schrijven, dat komt op hetzelfde neer
    JeRavrijdag 21 oktober 2005 @ 21:36
    strtotime() is een erg ondergewaardeerde functie waarmee je heel gemakkelijk relatieve tijden kunt maken (in de trant van '+1 day') en welke rekening houdt met zomer- en wintertijd. Aanradertje

    Tevens tvp
    sylvesterrrvrijdag 21 oktober 2005 @ 22:33
    strtotime() is inderdaad een handige functie, zolang je er maar voor zorgt dat de input correct is.
    splendorzaterdag 22 oktober 2005 @ 09:19
    Even een kort vraagje...
    Ik ben met een spelletje bezig in php en alles voorloopt voorspoedig alleen heb ik wat problemen met de random in php, je zou kunnen zeggen dat het een hele goeie random is want je hebt werkelijk geen idee wat je krijgt alleen het nadeel is dat een spelletje een stabiele random nodg heeft en geen random die heel veel meer extremen laat zien dan gewoon elk getal ongeveer even vaak.

    Voorbeeldje:
    rand(1,10);
    dan laat ie zien: 1,3,1,4,8,7,8,8,6,1,2
    en ik heb dus liever dat ie wat 'eerlijker' omgaat met de getallen en niet de uitersten extra vaak, een spel moet een beetje eerlijk zijn en anders krijg je dat je werkelijk geen idee hebt hoe de uitkomst zal zijn.

    Wat valt hieraan te doen?
    Lightzaterdag 22 oktober 2005 @ 09:32
    Volgens mij is rand toch behoorlijk random. Dat kun je zelf ook testen met iets als:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $randoms
    = array();
    for(
    $i=0;$i&lt;10000;$i++) {
        
    $randoms[rand(1,10)] += 1;
    }
    echo
    "<pre>";
    var_dump($randoms);
    echo
    "</pre>";
    ?>


    Een uitkomst die ik daarmee krijg is
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    array(10) {
      [9]=>
      int(993)
      [1]=>
      int(991)
      [4]=>
      int(1021)
      [6]=>
      int(1065)
      [2]=>
      int(956)
      [10]=>
      int(1069)
      [5]=>
      int(982)
      [3]=>
      int(949)
      [7]=>
      int(995)
      [8]=>
      int(979)
    }


    Niet allemaal precies 1000 keer, maar de afwijking is ook niet echt groot.
    the_disheaverzaterdag 22 oktober 2005 @ 09:32
    Het is normaal, omdat uitersten gewoon meer voorkomen. (1-3,7-10) en (4-6)

    Je zou met 2 random's (dobbelstenen) kunnen werken, en deze laten optellen.

    dus bv:
    rand(1,5) en rand(0,5)

    1 maal een nul om een uitkomst 1 ook mogelijk te maken.
    Nu is een kans op 6 groter dan op een 1:
    getallen om 6 te krijgen: 0+6,1+5,2+4,3+3,4+2,5+1
    getallen om 1 te krijgen: 0+1

    Ofwel: de kans om een 6 te krijgen, is 6 maal groter dan de kans op een 1
    SuperRembozaterdag 22 oktober 2005 @ 11:21
    quote:
    Op zaterdag 22 oktober 2005 09:32 schreef the_disheaver het volgende:
    Het is normaal, omdat uitersten gewoon meer voorkomen. (1-3,7-10) en (4-6)
    Hoe kom je daar bij rand() heeft een uniforme distributie, elke mogelijke uitkomst heeft een gelijke kans.
    Pronkzaterdag 22 oktober 2005 @ 12:05
    quote:
    Op vrijdag 21 oktober 2005 17:49 schreef Light het volgende:
    En waarom niet gewoon:
    [ code verwijderd ]
    Dit werkt perfect! Thx!
    vbmotzaterdag 22 oktober 2005 @ 12:15
    quote:
    Op zaterdag 22 oktober 2005 11:21 schreef SuperRembo het volgende:

    [..]

    Hoe kom je daar bij rand() heeft een uniforme distributie, elke mogelijke uitkomst heeft een gelijke kans.
    Er is heel wat geschreven over de bagger implementaties van random functies die in heel wat compilers e.d. worden gebruikt. Ik zou er dus niet blindelings op vertrouwen.
    SuperRembozaterdag 22 oktober 2005 @ 12:32
    quote:
    Op zaterdag 22 oktober 2005 12:15 schreef vbmot het volgende:

    [..]

    Er is heel wat geschreven over de bagger implementaties van random functies die in heel wat compilers e.d. worden gebruikt. Ik zou er dus niet blindelings op vertrouwen.
    Dat zal best. Maar geldt dat ook voor php? Uit een testje zoals die van Light blijkt helemaal geen afwijking.
    the_disheaverzaterdag 22 oktober 2005 @ 12:33
    quote:
    Op zaterdag 22 oktober 2005 11:21 schreef SuperRembo het volgende:

    [..]

    Hoe kom je daar bij rand() heeft een uniforme distributie, elke mogelijke uitkomst heeft een gelijke kans.
    Ja, de uitkomst zou iig gelijk zijn, en is het waarschijnlijk nagenoeg ook.

    Maar als je naar de getallen 1-10 kijkt, en daar de uiterste waarde uit gaat halen:

    Dat zijn 1,2,3&8,9,10
    De niet uiterste waarde zijn 4,5,6,7

    Ofwel: 6/10de is een uiterste waarde, ofwel de kans op een uiterste waarde is 60%.
    Lightzaterdag 22 oktober 2005 @ 12:38
    quote:
    Op zaterdag 22 oktober 2005 12:15 schreef vbmot het volgende:

    [..]

    Er is heel wat geschreven over de bagger implementaties van random functies die in heel wat compilers e.d. worden gebruikt. Ik zou er dus niet blindelings op vertrouwen.
    Dan ga je het testen, zoals met die paar regels code van mij.
    SuperRembozaterdag 22 oktober 2005 @ 12:49
    quote:
    Op zaterdag 22 oktober 2005 12:33 schreef the_disheaver het volgende:

    [..]

    Ja, de uitkomst zou iig gelijk zijn, en is het waarschijnlijk nagenoeg ook.

    Maar als je naar de getallen 1-10 kijkt, en daar de uiterste waarde uit gaat halen:

    Dat zijn 1,2,3&8,9,10
    De niet uiterste waarde zijn 4,5,6,7

    Ofwel: 6/10de is een uiterste waarde, ofwel de kans op een uiterste waarde is 60%.
    Dat ligt gewoon aan wat jij onder "uiterste waarde" verstaat. Je kan ook zeggen dat 1 en 10 de uiterste waarden zijn, dan is de kans op een uiterste waarde 20%.
    Voor gewoon gebruik kan je er van uit gaan dat de rand() functie eerlijk is, elke waarde heeft een gelijke kans.
    Darkomenzaterdag 22 oktober 2005 @ 18:38
    Vraagje:
    Ik heb een cms gebouw, de pagina;s worden opgelagen in een mysql tabel.
    Maar ik wil in een enkele pagina ook php gebruiken hoe kan ik dat doen?
    fokME2zaterdag 22 oktober 2005 @ 20:45
    Ik ben opzoek naar een script om fotoalbums 'online' te krijgen. Ik heb al redelijk wat gezocht, gecopy-paste, maar het lukt met maar niet..

    Ik zoek een script waarbij je:
    >> Zipfiles uploaden
    >> Zipfiles die je ftp hebt geupload openen
    >> De foto's automatisch resizen
    >> De foto dumpen in een aparte map per fotoalbum

    Iemand?
    the_disheaverzondag 23 oktober 2005 @ 00:33
    quote:
    Op zaterdag 22 oktober 2005 20:45 schreef fokME2 het volgende:
    Ik ben opzoek naar een script om fotoalbums 'online' te krijgen. Ik heb al redelijk wat gezocht, gecopy-paste, maar het lukt met maar niet..

    Ik zoek een script waarbij je:
    >> Zipfiles uploaden
    >> Zipfiles die je ftp hebt geupload openen
    >> De foto's automatisch resizen
    >> De foto dumpen in een aparte map per fotoalbum

    Iemand?
    Gallery?
    Gijsermanzondag 23 oktober 2005 @ 12:16
    quote:
    Op zaterdag 22 oktober 2005 18:38 schreef Darkomen het volgende:
    Vraagje:
    Ik heb een cms gebouw, de pagina;s worden opgelagen in een mysql tabel.
    Maar ik wil in een enkele pagina ook php gebruiken hoe kan ik dat doen?
    Misschien iets met eval() ?
    Roonaanzondag 23 oktober 2005 @ 13:11
    quote:
    Op zaterdag 22 oktober 2005 18:38 schreef Darkomen het volgende:
    Vraagje:
    Ik heb een cms gebouw, de pagina;s worden opgelagen in een mysql tabel.
    Maar ik wil in een enkele pagina ook php gebruiken hoe kan ik dat doen?
    niet?

    je wilt gebruikers toch niet toestaan om php te gaan intypen? Het is toch een content management en niet "script hier buggy zooi" management.
    Darkomenzondag 23 oktober 2005 @ 13:14
    Is niet voor gebruikers, is gewoon voor mezelf en 2 anderen, die zijn te vertrouwen.
    Roonaanzondag 23 oktober 2005 @ 13:17
    Die kunnen dus scripts uploaden en die bied je via het cms aan om een script te kunnen selecteren uit de geuploade scripts, of op basis van filename. die include je vervolgens..

    Maar inderdaad, eval is je vriend als je het anders wilt.

    -r-
    Desdinovadinsdag 25 oktober 2005 @ 10:24
    hee ff gauw tussendoor,

    wat is een acceptabele grootte voor een mysql tabel? met andere woorden, wanneer wordt het teveel?

    de query's zullen vooral bestaan uit 'select dit waar dat is 1', dus een hoop zoekwerk. Hoeveel rijen zou ongeveer acceptabel zijn, en wat kan beter echt mijn limiet zijn?
    sylvesterrrdinsdag 25 oktober 2005 @ 10:26
    Zolang je database-structuur in orde is, is er eigenlijk geen limiet.
    Lariekoekdinsdag 25 oktober 2005 @ 11:15
    Ik ben bezig met een webshop. Bij elk artikel moet ook een unieke tekst toegevoegd kunnen worden. Deze laad ik in een sessie en laat ik in het winkelmandje zien. Alleen wanneer ik nu meerdere artikellen van tekst wil voorzien staat bij elk artikel dezelfde tekst.

    Ik gebruik de volgende code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php
    if (isset($verzonden))
              {
                
    $_SESSION['tekst'] = $tekst;
              }
              echo
    "<form method=\"post\" action=\"$PHP_SELF\">\n";
              echo
    "<td><font color=\"#DAAE57\"> Tekst: </td>";
              echo
    "<td><input type=\"text\" name=\"tekst\" size=\"17\" maxlength=\"9\">";
              echo
    "<td><font size=\"1\" face=\"Arial\"><font color=\"#FFFFFF\">Max. 9 posities in hoofdletters</font</td>";
              echo
    "</tr><tr>";
              echo
    "<td><font color=\"#DAAE57\"> Kleur opdruk: </td>";
              echo
    "<td><select size=\"1\" name=\"kleuropdruk\">
                    <option>Zwart</option>
                    <option>Wit</option></select></td>"
    ;
              echo
    "<input type=\"submit\" name=\"verzonden\" value=\"Toevoegen\">";
              echo
    "</form>";
    ?>


    Iemand een idee hoe ik ervoor zorg dat bij elk artikel de eigen unieke tekst komt te staan? Het scherm laat trouwens in een keer alle artikkelen zien waaraan tekst toegevoegd kan worden. En dit is ook de bedoeling.
    Jimmydinsdag 25 oktober 2005 @ 11:38
    Waarom zou je zoveel tekst in een sessie gaan plaatsen?

    Edit: als die tekst uit de database komt, waarom zou je het dan via de sessie in de html zetten?

    Je kan die stap toch ook overslaan en het vanuit de database in de html plakken.
    Lariekoekdinsdag 25 oktober 2005 @ 11:55
    Nee het word niet in de database opgeslagen.
    De tekst bij het artikel moeten klanten zelf kunnen toevoegen.
    sylvesterrrdinsdag 25 oktober 2005 @ 12:30
    $_SESSION['tekst'] is geen array.

    hint:
    1
    2
    3
    <?php
    $_SESSION
    ['tekst']['__ARTICLE_ID__']
    ?>
    LeeHarveyOswalddinsdag 25 oktober 2005 @ 17:06
    Ik heb weer is een probleem

    Voor mijn forum een of andere hack er in geplaatst zodat ik PHP kan invoegen. Alleen de volgende regel geeft een foutmelding:

    1while (preg_match("x3C% INCLUDE \"(S*?)\" %x3E",$ibforums->skin['template'],$incmatches)>0)


    quote:
    Warning: Delimiter must not be alphanumeric or backslash in /usr/home/jeroen/www/forum/sources/functions.php on line 2135
    edit: whats wrong with it ? hoe kan ik het werkend krijgen? danku!
    SuperRembodinsdag 25 oktober 2005 @ 18:47
    1while (preg_match("/x3C% INCLUDE \"(\\S*?)\" %x3E/",$ibforums->skin['template'],$incmatches)>0)


    Of

    1'/x3C% INCLUDE "(\S*?)" %x3E/'


    Dat scheelt een paar keer het escapen van de " en \.
    ikke_ookdinsdag 25 oktober 2005 @ 18:49
    wat dacht je van een / aan het begin en het einde van je delimiter? (Je eerste argument van preg_match)
    Denk ik...
    ikke_ookdinsdag 25 oktober 2005 @ 18:51
    niet delimiter maar pattern bedoelde ik.
    Bah wat is het traag, ik bedoel dus wat SR zegt...
    LeeHarveyOswalddinsdag 25 oktober 2005 @ 20:54
    Hmm de foutmelding is weg, maar ik kan nog steeds geen pagina include-en.. mischien dat iemand iets in deze code ziet wat niet klopt?

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

    /// Find file sources/functions.php

    /// at the beginning after php and copyright insert these lines (between ///)

    ///

    function include_hack_handler($buf)

    {       

        global
    $include_temp_str;

        
    $include_temp_str.=$buf;

        return
    "";

    }

    ///


    /// In sources/functions.php find this line:

    $text = preg_replace( "/(<|<)% (BOARD HEADER|CSS|JAVASCRIPT|TITLE|BOARD|STATS|GENERATOR|COPYRIGHT|NAVIGATION) %(>|>)/i", "&#60;% \2 %&#62;", $text );

    /// Replace it with

    $text = preg_replace( "/(<|<)% (BOARD HEADER|CSS|JAVASCRIPT|TITLE|BOARD|STATS|GENERATOR|COPYRIGHT|NAVIGATION|INCLUDE \"\S*?\") %(>|>)/i", "&#60;% \2 %&#62;", $text );

    ///


    ///

    ///In file sources/functions.php find

        
    function do_output($output_array) {

            global
    $DB, $Debug, $skin_universal, $ibforums;

    /// replace with

        
    function do_output($output_array) {

            global
    $DB, $Debug, $skin_universal, $ibforums, $include_temp_str;

    ///


    ///

    ///In file sources/functions.php after

      
    $ibforums-&gt;skin['template'] = str_replace( "<% NAVIGATION %>"     , $nav                     , $ibforums-&gt;skin['template']);


    /// insert this

                    //

                    //  Include tag hack

                    //

                    
    $incmatches=array();

                    while (
    preg_match("x3C% INCLUDE \"(S*?)\" %x3E",$ibforums-&gt;skin['template'],$incmatches)&gt;0)

                    {

                        
    $include_temp_str="";

                        
    ob_start('include_hack_handler');

                        include(
    $incmatches[1]);

                        
    ob_end_flush();

                        
    $ibforums-&gt;skin['template'] = str_replace("<".$incmatches[0].">",$include_temp_str,$ibforums-&gt;skin['template']);

                        
    $incmatches=array();

                    }

    ///


    //Now you can use this directive in board wrapper:


    &lt;% INCLUDE "http://www.yourdomain.com/test.php" %&gt;


    //You can include any valid PHP or HTML file this way.
    ?>
    SuperRembodinsdag 25 oktober 2005 @ 21:16
    Ik zie wel dat de nieuwe code-tag met scrollbars knap waardeloos is als de horizontale scrollbar buiten beeld is
    JeRadinsdag 25 oktober 2005 @ 21:46
    quote:
    Op dinsdag 25 oktober 2005 21:16 schreef SuperRembo het volgende:
    Ik zie wel dat de nieuwe code-tag met scrollbars knap waardeloos is als de horizontale scrollbar buiten beeld is
    [offtopic]
    Ik vind de oplossing van GoT in ieder geval beter, die bieden een knopje waarmee je weliswaar de layout verneukt (nou ja, voor één post), maar wel in één keer de code ziet
    Roonaanwoensdag 26 oktober 2005 @ 05:53
    In principe kan je code tags idd gewoon collapsen tot één regel waar alleen "klik hier voor alle code" staat. Geen idee of dat is wat GoT doet?
    JeRawoensdag 26 oktober 2005 @ 05:57
    GoT laat normaal een scrollbare versie van de code zien, en indien gewenst kun je de code tot volledige breedte uitklappen goeiemorgen trouwens!
    Roonaanwoensdag 26 oktober 2005 @ 06:22
    Goedemorgen

    Een ander forum waar ik zit is simpelweg niet gecentreerd en daar loopt de layout gewoon aan de rechterkant door. Daar is ook geen ubb, maar is het invoerveld hetzelfde als de post wordt, dmv pre en een mooie font. Ik moet zeggen dat dat erg prettig werkt. Images plaatsen kan alleen via links natuurlijk dan, maar goed. Het is erg clean.
    Lightwoensdag 26 oktober 2005 @ 06:40
    quote:
    Op woensdag 26 oktober 2005 05:53 schreef Ro�a� het volgende:
    In principe kan je code tags idd gewoon collapsen tot één regel waar alleen "klik hier voor alle code" staat. Geen idee of dat is wat GoT doet?
    Dat heb ik inderdaad ook wel eens gezien, en dat werkt ook wel handig
    JeRawoensdag 26 oktober 2005 @ 06:44
    quote:
    Op woensdag 26 oktober 2005 06:40 schreef Light het volgende:

    [..]

    Dat heb ik inderdaad ook wel eens gezien, en dat werkt ook wel handig
    Wow, volgens mij gaat er iets niet goed met de encoding van Roönaäns naam in die quote

    [ Bericht 2% gewijzigd door JeRa op 26-10-2005 06:50:01 ]
    Lightwoensdag 26 oktober 2005 @ 06:52
    Hmmja, vaag.
    Lightwoensdag 26 oktober 2005 @ 06:54
    Browser restart werkt ook al niet
    LeeHarveyOswaldwoensdag 26 oktober 2005 @ 10:08
    Maar iemand enig idee hoe ik die 'hack' werkend krijg?
    Lariekoekwoensdag 26 oktober 2005 @ 12:22
    Nog even 2 vraagjes..
    Ik ben bezig met een winkelmandje waarbij gebruikers een artikel kunnen selecteren en hier zelf een persoonlijke tekst bij kunnen toevoegen.

    Vanuit het winkelmandje volgt er een link naar de pagina teksttoevoegen.php waar de tekst toegevoegd kan worden. Dit sla ik op in een sessie.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    if (isset($verzonden))
              {
                
    $_SESSION['tekst']['artikel_id'] = $tekst;
              }
              echo
    "<form method=\"post\" action=\"$PHP_SELF\">\n";
              echo
    "<td><font color=\"#DAAE57\">Tekst:</td>";
              echo
    "<td><input type=\"text\" name=\"tekst\" size=\"17\" maxlength=\"9\">";
    ?>


    In het winkelmandje lees ik dit vervolgens weer uit

    1
    2
    3
    4
    <?php

          
    echo "<td width=\"85\" align=\"center\"><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">".$tekst['artikel_id']."</td>";
    ?>


    Nu heb ik 2 probleempjes.

    De eerste keer tekst toevoegen gaat goed, en laat hij keurig de ingevoerde tekst zien. Wanneer ik deze tekst nu wil wijzigen krijg ik als tekst terug Array.

    Wanneer er van 1 artikel twee stuks besteld worden moet er twee keer tekst ingevuld worden. Dit mag twee keer een andere tekst zijn, alleen neemt hij de eerst ingevoerde tekst klakkeloos over.

    Iemand enig idee hoe ik deze 2 problemen kan oplossen?
    sylvesterrrwoensdag 26 oktober 2005 @ 13:06
    1) Dan maak je dus niet goed gebruik van Arrays.
    2) Zie 1.

    Btw, wat leesvoer: http://nl3.php.net/variables.predefined & http://nl3.php.net/register_globals

    Tip: laat meer van je code zien, want we kunnen op deze manier niks
    Lariekoekwoensdag 26 oktober 2005 @ 13:23
    Dit is zeg maar de gehele code.

    winkelwagen.php
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    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
    <?php
    php
    session_start
    ();
    include
    "config.inc.php";
    echo
    "<body bgcolor=\"#000000\">";
    echo
    "<body link=\"#FFFFFF\" vlink=\"#FFFFFF\" alink=\"#FFFFFF\">";

    // Toevoegen
    if( isset( $_POST['ADD'] ) && ereg('^[1-9][0-9]*$', $_POST['aantal'])) {
    $_SESSION['winkelwagen'][$_POST['artikelid']] = $_POST['aantal'];
    }
    // Verwijderen
    if( isset( $_GET['DEL'] ) ) {
    unset(
    $_SESSION['winkelwagen'][$_GET['DEL']]);
    }
    // Laat lijst zien
    if( $_SESSION['winkelwagen'] ) {
      
    $totaal = 0;
      
    $totaalart = 0;
      echo
    "<table border=\"0\" width=\"539\" cellspacing=\"0\" cellpadding=\"0\" id=\"table1\">";
      echo
    "<tr>";
      echo
    "<td width=\"47\" align=\"center\"><b><font size=\"2\" face=\"Verdana\" color=\"#DAAE57\">Aantal</font></b></td>";
      echo
    "<td width=\"58\" align=\"center\"><b><font face=\"Verdana\" color=\"#DAAE57\" size=\"2\">Naam</font></b></td>";
      echo
    "<td width=\"152\" align=\"center\"><b><font size=\"2\" face=\"Verdana\" color=\"#DAAE57\">Omschrijving</font></b></td>";
      echo
    "<td width=\"73\" align=\"center\"><b><font size=\"2\" face=\"Verdana\" color=\"#DAAE57\">Prijs in ¤</font></b></td>";
      echo
    "<td width=\"85\" align=\"center\"><b><font size=\"2\" face=\"Verdana\" color=\"#DAAE57\">Tekst</font></b></td>";
      echo
    "<td width=\"91\" align=\"center\"><b><font size=\"2\" face=\"Verdana\" color=\"#DAAE57\">Tekst kleur</font></b></td>";
      echo
    "<td width=\"20\" align=\"center\"> </td>";
      echo
    "</tr>";
      foreach (
    $_SESSION['winkelwagen'] as $key=&gt;$val )
      {
        
    $sql = "SELECT * FROM artikel WHERE artikel_id=$key";
        
    $resultaat = mysql_query($sql);
        while (
    $rij = mysql_fetch_array($resultaat))
        {
          echo
    "<tr>";
          echo
    "<td width=\"47\" align=\"center\"><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">$val</td>";
          echo
    "<td width=\"58\" align=\"center\"><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">".$rij["naam"]."</td>";
          echo
    "<td width=\"152\" align=\"center\"><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">".$rij["omschrijving"]."</td>";
          
    $totaalart = totaalart + ($rij["prijs"] * $val);
          echo
    "<td width=\"73\" align=\"center\"><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">".number_format($totaalart, 2, ',', ' ')."</td>";
          echo
    "<td width=\"85\" align=\"center\"><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">".$tekst[$artikel_id]."</td>";
          echo
    "<td width=\"91\" align=\"center\"><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\"></td>";
          echo
    "<td width=\"20\" align=\"center\"><font size=\"2\" face=\"Verdana\" color=\"#DAAE57\"><a href=\"$PHP_SELF?DEL=$key\"><img src=\"images\del.gif\" border=\"0\" alt=\"Verwijder ".$rij["naam"]."\"></a></td>";
          echo
    "</tr>";
          
    $totaal = $totaal + ($rij["prijs"] * $val);
        }
      }
      echo
    "<tr>";
      echo
    "<td width=\"47\" align=\"center\"> </td>";
      echo
    "<td width=\"58\" align=\"center\"> </td>";
      echo
    "<td width=\"152\" align=\"center\"><b><font size=\"2\" face=\"Verdana\" color=\"#DAAE57\">Totaal bedrag:</font></b></td>";
      echo
    "<td width=\"73\" align=\"center\"><font size=\"2\" face=\"Verdana\" color=\"#DAAE57\">".number_format($totaal, 2, ',', ' ')."</font></td>";
      echo
    "<td width=\"85\" align=\"center\"> </td>";
      echo
    "<td width=\"91\" align=\"center\"> </td>";
      echo
    "<td width=\"20\" align=\"center\"> </td>";
      echo
    "</tr>";
      echo
    "</table>";
      } else {

        echo
    "<font color=\"#FFFFFF\">De winkelwagen is momenteel leeg...";

    }

    if (
    $_GET["artikelid"]) {

        
    $sql = "SELECT * FROM artikel WHERE artikel_id=".$_GET["artikelid"];
        
    $result = mysql_query($sql);
        if (
    mysql_num_rows($result) &gt; 0) {
        
    $naam = mysql_result($result, 0, "Naam");
        
    $prijs = number_format(mysql_result($result, 0, "Prijs"), 2, ',', ' ');
        echo
    "<font color=\"#DAAE57\">Artikel toevoegen aan winkelwagen</font>";
        echo
    "<form method=\"post\" action=\"$PHP_SELF\">";
        echo
    "<input type=\"hidden\" name=\"artikelid\" value=\"$artikelid\">";
        echo
    "<input type=\"text\" name=\"aantal\" value=\"1\" size=\"2\" maxlength=2>";
        echo
    "<font color=\"#FFFFFF\"> x Artikel: $naam (prijs: $prijs euro)</font>";
        echo
    "<input type=\"submit\" name=\"ADD\" value=\"Toevoegen\">";
        echo
    "</form>";
        }
    }
    ?>


    teksttoevoegen.php
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    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
    <?php
    php
    session_start
    ();
    include
    "config.inc.php";
    echo
    "<body bgcolor=\"#000000\">";
    echo
    "<body link=\"#FFFFFF\" vlink=\"#FFFFFF\" alink=\"#FFFFFF\">";
    $sitepad = "images/";

    if(
    $_SESSION['winkelwagen'] )
    {
      foreach(
    $_SESSION['winkelwagen'] as $key=&gt;$val )
      {
        
    $sql = "SELECT * FROM artikel WHERE artikel_id=$key";
        
    $resultaat = mysql_query($sql);
        while (
    $rij = mysql_fetch_array($resultaat))
        for (
    $nr=1; $nr&lt;=$val; $nr++)
        {
          
    $sql = "SELECT * FROM afbeelding WHERE artikel_id=".$rij["artikel_id"];
          
    $afbeeldingen = mysql_query($sql);
          if (
    mysql_num_rows($afbeeldingen) &gt; 0)
          {
            while (
    $afb_rij = mysql_fetch_array($afbeeldingen))
            {
              
    $bestandsnaam = $sitepad.$afb_rij["afbeelding_id"].$afb_rij["bestandstype"];
              echo
    "$key";
              echo
    "".$tekst['__artikel_id__']."";
              echo
    "<table border=0>";
              echo
    "<tr>";
              echo
    "<td><font color=\"#DAAE57\">Artikel:</td>";
              echo
    "<td><img src=\"$bestandsnaam\" width=\"125\" height=\"30\"></td>";
              echo
    "<td align=\"left\" valign=\"top\"></td>";
              echo
    "</tr><tr>";
              echo
    "<td>";
              echo
    "<font color=\"#DAAE57\">Prijs per stuk:";
              echo
    "</td>";
              echo
    "<td><font color=\"#DAAE57\">".number_format($rij["prijs"], 2, ',', '')."</td>";
              echo
    "<td></td>";
              echo
    "</tr><tr>";
              if (isset(
    $verzonden))
              {
                
    $_SESSION['tekst'][$artikel_id] = $tekst;
              }
              echo
    "<form method=\"post\" action=\"$PHP_SELF\">\n";
              echo
    "<td><font color=\"#DAAE57\">Tekst:</td>";
              echo
    "<td><input type=\"text\" name=\"tekst\" size=\"17\" maxlength=\"9\">";
              echo
    "<td><font size=\"1\" face=\"Arial\"><font color=\"#FFFFFF\">Max. 9 posities in hoofdletters</font></td>";
              echo
    "</tr><tr>";
              echo
    "<td><font color=\"#DAAE57\">Kleur opdruk:</td>";
              echo
    "<td></td>";
              echo
    "<input type=\"submit\" name=\"verzonden\" value=\"Toevoegen\">";
              echo
    "</form>";
              echo
    "</tr>";
              echo
    "</table>";
            }
          }
        }
      }
    }
    ?>
    SuperRembowoensdag 26 oktober 2005 @ 13:29
    1
    2
    $tip = 'als je enkele quotes gebruikt 
        dan hoef je "dubbele quotes" niet te escapen';
    Lariekoekwoensdag 26 oktober 2005 @ 13:33
    quote:
    Op woensdag 26 oktober 2005 13:29 schreef SuperRembo het volgende:

    [ code verwijderd ]
    Ok thnx
    sylvesterrrwoensdag 26 oktober 2005 @ 13:47
    teksttoevoegen.php
    r41 $_SESSION['tekst'][$artikel_id] = $tekst;
    Waar staan $artikel_id & $tekst ?

    Ik ga 'm verder niet debuggen, is niet te doen met zo'n code (nofi). Ik raad je aan om toch maar eens een goed boek of een aantal goede tutorials te lezen.
    LeeHarveyOswaldwoensdag 26 oktober 2005 @ 16:13
    Ik heb mijn code nu min of meer werkend.. Alleen mn script moet een cookie controlleren (of je ingelogd bent) en dan een slowchat weergeven. Wat er nu gebeurd is dat alleen de regel Welkom gast! log in voor meer opties. .

    Terwijl ik, als ik naar het document zelf ga, wel gewoon alles zie (dus cookie klopt nogsteeds).

    Iemand een idee? Werkt mn controlle niet na een include?
    LeeHarveyOswaldwoensdag 26 oktober 2005 @ 16:49
    ik heb het min of meer opgelost nog wel wat kleine kinderziektes..
    HuHuwoensdag 26 oktober 2005 @ 18:30
    Ik heb een probleem en ik begin ondertussen redelijk wanhopig te worden. Ik kan namelijk geen enkele oplossing bedenken/vinden. Ik heb een PHP bestand dat een afbeelding upload en deze vervolgens aan mij mailt. Maar bij dat laatste gaat het soms mis. Behoorlijk mis.

    De afbeelding wordt wél geupload, maar de mail met de afbeelding wordt niet naar mij verzonden. Dat terwijl degene die de afbeelding upload wél een bedankmailtje krijgt.

    Ik ben erachter gekomen dat afbeeldingen met extra data niet worden gemailt. Een gewoon JPEG-tje gaat prima. Maar een foto van een digitale camera, met daarin allerlei gegevens als merk, datum, tijd, thumbnail, enz... , loopt compleet in de soep.

    Hieronder de code voor het mailtje naar mij toe:

    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
    <?php
    $header
    ="";
    $message="";
    $boundary='--' . md5( time() );
    $priority='3 (Normal)';
    $charset="iso-8859-1";
    $ctencoding="8bit";
    $subject="Een nieuwe afbeelding";
    $body  = "Een nieuwe afbeelding.";
    $to="mij@mail.nl";
    $from=$naam."<".$email.">";
    $sep= chr(13) . chr(10);
    $ctype=$_FILES['imagefile']['type'];
    $disposition="inline";
    $filename = basename($path);
    $message .="--$boundary\n";
    $message .= "Content-Type: text/plain; charset=$charset\n";
    $message .= "Content-Transfer-Encoding: $ctencoding\nContent-Disposition: $disposition\n\n" . $body ."\n";
    $message .="--$boundary\nContent-Type: $ctype; name=\"$filename\"\n";
    $message .="Content-Transfer-Encoding: base64\nContent-Disposition: attachment; filename=\"$filename\"\n";
    $linesz= filesize($path)+1;
    $fp= fopen( $path, 'r' );
    $content = chunk_split(base64_encode(fread( $fp, $linesz)));
    fclose($fp);
    $message .= $sep.$content.$sep.$boundary."--";

    $header.="From: $from\nX-Priority: $priority\n";
    $header.="Mime-Version: 1.0\nContent-Type: multipart/mixed;\n boundary=\"$boundary\"\n";
    $header.="Content-Transfer-Encoding: $ctencoding\nX-Mailer: Php/libMailv1.3\n";

    mail($to,$subject,$message."\n",$header);
    ?>


    Als iemand hierin een fout ziet, of een goed werkend script weet, dan hoor ik het graag.
    HuHuwoensdag 26 oktober 2005 @ 18:31
    Owja: de $naam, $email en $path worden bovenin ergens gemaakt. Dat gaat gewoon goed.
    sylvesterrrwoensdag 26 oktober 2005 @ 19:34
    http://nl3.php.net/manual/en/function.mail.php#57725

    http://pear.php.net/package/Mail
    http://phpmailer.sourceforge.net/
    HuHuwoensdag 26 oktober 2005 @ 19:56
    quote:
    Die bovenste link is niet voor bijlagen, voor zover ik het begrijp.

    Die andere 2 links zijn classes die je moet installeren, maar daar kan ik (volgens mij) niet bij. Ik heb gewoon een server bij een hosting provider en niet een eigen server.

    Of begrijp ik het gewoon verkeerd?
    HuHuwoensdag 26 oktober 2005 @ 19:58
    Overigens heb ik de code overgenomen van http://nl3.php.net/manual/en/ref.mail.php#54863 .
    Roonaandonderdag 27 oktober 2005 @ 05:47
    Gewoon phpmailer gebruiken. Een class is niets meer dan een phpscript met een class definition erin. Als je zelf php files op je server kan zetten, kan je ook de derde class erop zetten. PEAR kan je ook zelf erop zetten, maar kost wat meer moeite als je beginnende PHPer bent. (Niet veel moeite though).
    Darkomendonderdag 27 oktober 2005 @ 09:13
    Ik ben niet zo goed met joins etc, dus dat wil ik leren maar wat doe ik fout bij deze join?

    "SELECT p.username,p.id,p.Model FROM profielen p INNER JOIN profielen_images i ON i.user_id = p.id WHERE COUNT(i.id) > 0"

    Ik heb dus 2 tabellen, profielen en profielen_images en ik wil de profielen selecteren welke 1 of meerdere fotos hebben?
    HuHudonderdag 27 oktober 2005 @ 09:15
    quote:
    Op donderdag 27 oktober 2005 05:47 schreef Roonaan het volgende:
    Gewoon phpmailer gebruiken. Een class is niets meer dan een phpscript met een class definition erin. Als je zelf php files op je server kan zetten, kan je ook de derde class erop zetten. PEAR kan je ook zelf erop zetten, maar kost wat meer moeite als je beginnende PHPer bent. (Niet veel moeite though).
    Ok... ik heb PHPmailer geinstalleerd en hij werkt. Maar mijn probleem is nog steeds niet over. JPG bestanden met daarin EXIF informatie (eigenaar, merk, datum, enz...) kan ik niet als bijlage meegeven. De mail wordt dan gewoon niet verzonden. Dat terwijl PHPmailer gewoon een "Message has been sent" geeft.

    Kan het soms aan de mailserver liggen?
    nyny83donderdag 27 oktober 2005 @ 09:27
    quote:
    Op donderdag 27 oktober 2005 09:13 schreef Darkomen het volgende:
    Ik ben niet zo goed met joins etc, dus dat wil ik leren maar wat doe ik fout bij deze join?

    "SELECT p.username,p.id,p.Model FROM profielen p INNER JOIN profielen_images i ON i.user_id = p.id WHERE COUNT(i.id) > 0"

    Ik heb dus 2 tabellen, profielen en profielen_images en ik wil de profielen selecteren welke 1 of meerdere fotos hebben?
    Als je de count in je WHERE clausule zet, moet je die ook wel in je select zetten. Dat INNER JOIN is volgens mij niet nodig, en kan je gewoon vervangen door een komma.

    SELECT count(*), p.id FROM profielen p, profielen_images i WHERE i.user_id = p.id AND count(p.id) > 0

    Ik weet niet zeker of het werkt, maar ik denk dat je zo in de goede richting zit.
    Darkomendonderdag 27 oktober 2005 @ 09:31
    quote:
    Op donderdag 27 oktober 2005 09:15 schreef HuHu het volgende:

    [..]

    Ok... ik heb PHPmailer geinstalleerd en hij werkt. Maar mijn probleem is nog steeds niet over. JPG bestanden met daarin EXIF informatie (eigenaar, merk, datum, enz...) kan ik niet als bijlage meegeven. De mail wordt dan gewoon niet verzonden. Dat terwijl PHPmailer gewoon een "Message has been sent" geeft.

    Kan het soms aan de mailserver liggen?
    Echo de mail eens, eens kijken wat je krijgt.

    Edit: Die query klopt ook niet, ik begin er steeds minder van te begrijpen :S
    HuHudonderdag 27 oktober 2005 @ 09:37
    quote:
    Op donderdag 27 oktober 2005 09:31 schreef Darkomen het volgende:

    [..]

    Echo de mail eens, eens kijken wat je krijgt.

    Edit: Die query klopt ook niet, ik begin er steeds minder van te begrijpen :S
    Het werkt wel, de headers en zo zijn allemaal correct. Er wordt alleen niets verzonden. Gebruik ik een andere JPG of een tekst-document als bijlage, dan krijg ik binnen een seconde die mail in m'n inbox.

    En probeer jij de query van nyny83 eens. Een inner join is gewoon een lijstje van tabellen die je bij de FROM opneemt (gescheiden door komma's) en de voorwaarden (i.user_id = p.id) neem je op in de WHERE.
    nyny83donderdag 27 oktober 2005 @ 09:44
    Hij zegt al dat het niet werkt.. welke foutmelding krijg je? Ik kan het hier natuurlijk niet zelf testen, ik heb jouw tabellen niet etc. Misschien kunnen we wat met je foutmelding.
    HuHudonderdag 27 oktober 2005 @ 09:48
    even niet goed gelezen. Misschien is dit wat. Ik neem aan dat de profielen zonder image niet voorkomen in profielen_images.

    1
    2
    3
    4
    SELECT p.id
    FROM profielen p
    WHERE p.id IN (SELECT i.user_id
                   FROM profielen_images i)


    Met deze query verzamel je alle ID's uit profielen die voorkomen in profielen_images. Dacht ik.
    Darkomendonderdag 27 oktober 2005 @ 09:56
    Huhu uddm die komen daar niet in voor, ik kreeg "SELECT count(*), p.id FROM profielen p, profielen_images i WHERE i.user_id = p.id AND count(p.id) > 0
    Invalid use of group function"

    Ik ga zo even die andere query proberen.


    Verdwijnt die mail trouwens niet gewoon in een junkmail of geblokeerd door je provider? eg. probeer eens een andere email adres om na te verzenden?
    nyny83donderdag 27 oktober 2005 @ 09:58
    aha... da's waar ook ja, als je een count doet moet je altijd een group by doen. Probeer eens aan het einde GROUP BY p.id te doen.
    HuHudonderdag 27 oktober 2005 @ 10:01
    Een ander mailadres maakt ook niet uit. Heb het geprobeerd met Demon, HCCnet. Gmail en de Universiteit Utrecht.

    Ik ga toch echt vermoeden dat het aan mijn server ligt. Ik ga eens kijken of ik op een andere server kan testen.
    Darkomendonderdag 27 oktober 2005 @ 10:01
    Nah je bovenstaande query werkt ook al dus ik ben blij, maar toch even geprobeerd
    SELECT count(*), p.id FROM profielen p, profielen_images i WHERE i.user_id = p.id AND count(p.id) > 0 GROUP BY p.id
    Invalid use of group function
    Tokusdonderdag 27 oktober 2005 @ 10:01
    quote:
    Op donderdag 27 oktober 2005 09:56 schreef Darkomen het volgende:
    Huhu uddm die komen daar niet in voor, ik kreeg "SELECT count(*), p.id FROM profielen p, profielen_images i WHERE i.user_id = p.id AND count(p.id) > 0
    Invalid use of group function"
    zoals hierboven al gezegd, voor een count moet je een Group By in je query hebben.
    Maar... je "and count(p.id) > 0" zal ook niet werken.
    Daarvoor moet je "having count(p.id) > 0" gebruiken.
    LeeHarveyOswalddonderdag 27 oktober 2005 @ 10:04
    quote:
    Op woensdag 26 oktober 2005 16:49 schreef LeeHarveyOswald het volgende:
    ik heb het min of meer opgelost nog wel wat kleine kinderziektes..
    En 1 van die kinderziektes blijkt toch iets ernstiger...

    Als ik als 'gast' naar www.pestforum.nl/chat.php ga krijg ik netjes 'welkom gast log in voor meer opties'

    Als ik de regel invoeg in het forum, en dan als gast het forum bekijk, dan krijg ik enkel een blanco pagina.. (zelfs als ik bovenin de PHP code van de pagina die ik include een echo zet, dan zie ik die niet).

    Echter, als ik wel ingelogd ben, dan werkt het wel goed..

    iemand een idee?
    HuHudonderdag 27 oktober 2005 @ 10:07
    Kutserver

    Op een andere server werkt het zonder problemen

    Maar het probleem is dus (deels) opgelost. Het ligt in ieder geval niet aan mij.
    nyny83donderdag 27 oktober 2005 @ 10:14
    quote:
    Op donderdag 27 oktober 2005 10:01 schreef Darkomen het volgende:
    Nah je bovenstaande query werkt ook al dus ik ben blij, maar toch even geprobeerd
    SELECT count(*), p.id FROM profielen p, profielen_images i WHERE i.user_id = p.id AND count(p.id) > 0 GROUP BY p.id
    Invalid use of group function
    nou snap ik het ff niet meer, met mn eerste query kreeg je toch ook een error? Werkt het nou allemaal wel of niet?
    Darkomendonderdag 27 oktober 2005 @ 10:19
    het werkt met de query:

    SELECT p.id
    FROM profielen p
    WHERE p.id IN (SELECT i.user_id
    FROM profielen_images i)
    Tokusdonderdag 27 oktober 2005 @ 10:30
    quote:
    Op donderdag 27 oktober 2005 10:19 schreef Darkomen het volgende:
    het werkt met de query:

    SELECT p.id
    FROM profielen p
    WHERE p.id IN (SELECT i.user_id
    FROM profielen_images i)
    dat is onnodig moeilijk doen.

    select p.id
    from profielen p, profielen_images i
    where p.id = i.user_id

    zou precies hetzelfde resultaat moeten geven, maar is wel beter.
    Darkomendonderdag 27 oktober 2005 @ 10:45
    quote:
    Op donderdag 27 oktober 2005 10:30 schreef Tokus het volgende:

    [..]

    dat is onnodig moeilijk doen.

    select p.id
    from profielen p, profielen_images i
    where p.id = i.user_id

    zou precies hetzelfde resultaat moeten geven, maar is wel beter.
    Deze levert mij meerdere (157) resultaten op , dus alle images die in profiel_images staan.
    De eerste query geeft me de disctincte userid op.
    Tokusdonderdag 27 oktober 2005 @ 10:50
    quote:
    Op donderdag 27 oktober 2005 10:45 schreef Darkomen het volgende:

    [..]

    Deze levert mij meerdere (157) resultaten op , dus alle images die in profiel_images staan.
    De eerste query geeft me de disctincte userid op.
    Ah a, meerdere images. Dan zet je er een distinct tussen.
    select distinct p.id......

    maare, kan je tabel profielen_images user_id's bevatten die niet voorkomen in je tabel profielen? zo nee, dan kun je toch gewoon alleen selecteren uit je tabel profielen_images?
    Darkomendonderdag 27 oktober 2005 @ 10:55
    Niet alle info die ik nodig heb staat in de images tabel, vandaar dat ik de profielen tabel nodig heb.
    Pronkdonderdag 27 oktober 2005 @ 11:19
    Is het mogelijk om te checken of een pagina ge-include is of niet?

    Ik heb namelijk een probleem dat een php pagina af en toe ge-include wordt door een andere pagina, maar meestal gewoon direct wordt aangeroepen.

    Deze pagina maakt gebruik van sessies, op het moment dat deze pagina ge-include wordt door een andere pagina krijg ik dus een session start error.

    Nu wil ik dus eigenlijk in deze pagina een check maken of hij direct is aangeroepen of dat de pagina ge-include is. Aan de hand van het resultaat van deze check wil ik dan bepalen of de sessie gestart moet worden.

    Ik hoop dat ik zo duidelijk genoeg ben geweest, zoja... is zoiets mogelijk?
    LeeHarveyOswalddonderdag 27 oktober 2005 @ 11:36
    quote:
    Op donderdag 27 oktober 2005 11:19 schreef Pronk het volgende:
    Is het mogelijk om te checken of een pagina ge-include is of niet?

    Ik heb namelijk een probleem dat een php pagina af en toe ge-include wordt door een andere pagina, maar meestal gewoon direct wordt aangeroepen.

    Deze pagina maakt gebruik van sessies, op het moment dat deze pagina ge-include wordt door een andere pagina krijg ik dus een session start error.

    Nu wil ik dus eigenlijk in deze pagina een check maken of hij direct is aangeroepen of dat de pagina ge-include is. Aan de hand van het resultaat van deze check wil ik dan bepalen of de sessie gestart moet worden.

    Ik hoop dat ik zo duidelijk genoeg ben geweest, zoja... is zoiets mogelijk?
    hey hey hey trekken we geen nummertjes meer tegenwoordig
    Darkomendonderdag 27 oktober 2005 @ 12:16
    Er worden hier nooit nummertjes getrokken, jij hebt het probleem dat je een forum van een andere gebruikt en daar een hack van nog iemand anders gebruikt en ja niet iedereen kan je daar wat over vertellen.

    In je pagina die de andere pagina include define('geinclude', true);
    Op de geinclude pagina:
    if (!defined('geinclude') )
    {
    /doe je sessie
    }
    Pronkdonderdag 27 oktober 2005 @ 12:17
    quote:
    Op donderdag 27 oktober 2005 12:16 schreef Darkomen het volgende:
    Er worden hier nooit nummertjes getrokken, jij hebt het probleem dat je een forum van een andere gebruikt en daar een hack van nog iemand anders gebruikt en ja niet iedereen kan je daar wat over vertellen.

    In je pagina die de andere pagina include define('geinclude', true);
    Op de geinclude pagina:
    if ( defined('geinclude') )
    {
    /doe je sessie
    }
    Dat werkt inderdaad perfect! THX
    Darkomendonderdag 27 oktober 2005 @ 12:20
    Oww ja, stond een foutje in, !defined moet het zijn
    sylvesterrrdonderdag 27 oktober 2005 @ 12:31
    Ranzig.

    http://nl2.php.net/manual/en/function.get-included-files.php
    the_disheaverdonderdag 27 oktober 2005 @ 16:03
    quote:
    Op donderdag 27 oktober 2005 10:07 schreef HuHu het volgende:
    Kutserver

    Op een andere server werkt het zonder problemen

    Maar het probleem is dus (deels) opgelost. Het ligt in ieder geval niet aan mij.
    http://nl3.php.net/exif

    misschien dat hier verschilen zijn met beide servers?
    quote:
    Requirements

    Your PHP must be compiled in with --enable-exif. PHP does not require any additional library for the exif module. Windows users must also have the mbstring extension enabled.
    Lariekoekdonderdag 27 oktober 2005 @ 17:55
    Ik heb de boel maar even zwaar versimpeld.
    Tot zover ben ik gekomen:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    php
    $val
    = 5;
    for (
    $nr=1; $nr&lt;=$val; $nr++)
    {
      echo
    "<form method='post' action='$PHP_SELF'>";
      echo
    "<input type='text' name='arr[]' size='12' maxlength='9'><br>";
    }
    echo
    "<input type='submit' value='Toevoegen'>";
    echo
    "</form>";
    $test = $_POST['arr'];
    echo
    "$test";
    ?>


    Na het drukken op toevoegen krijg ik nu steeds de text: Array
    Ik doe ongetwijfeld iets fout, maar wat
    Darkomendonderdag 27 oktober 2005 @ 18:07
    je maakt toch van arr een array dan is het logisch dat er array staat.

    Doe maar eens print_r($_POST['arr']);
    Lariekoekdonderdag 27 oktober 2005 @ 18:46
    quote:
    Op donderdag 27 oktober 2005 18:07 schreef Darkomen het volgende:
    je maakt toch van arr een array dan is het logisch dat er array staat.

    Doe maar eens print_r($_POST['arr']);
    Ja dat ziet er goed uit.
    Die array is nu met een for lus weer uit te lezen neem ik aan?
    sylvesterrrdonderdag 27 oktober 2005 @ 19:00
    quote:
    Op donderdag 27 oktober 2005 18:46 schreef Lariekoek het volgende:

    [..]

    Ja dat ziet er goed uit.
    Die array is nu met een for lus weer uit te lezen neem ik aan?
    Ja. Overigens staan dat soort dingen zeer duidelijk in de documentatie die jij uiteraard hebt doorgelezen.
    Lariekoekdonderdag 27 oktober 2005 @ 19:04
    quote:
    Op donderdag 27 oktober 2005 19:00 schreef sylvesterrr het volgende:

    [..]

    Ja. Overigens staan dat soort dingen zeer duidelijk in de documentatie die jij uiteraard hebt doorgelezen.
    Ja!
    Nog bedankt daarvoor..
    Swetseneggerdonderdag 27 oktober 2005 @ 20:16
    Bestaat er een php functie welke een waarde snel procentueel kan vergelijken.
    Met andere woorden:

    if valueA-valueB < 5% van valueA

    want (valueA-valueB)*(valueA/100) vind ik wat ranzig
    SuperRembodonderdag 27 oktober 2005 @ 20:24
    Lijk me niet dat die bestaat. Hoe had je dat in gedachten
    En wat is er ranzig aan die vergelijking?

    Gelukkig kan je zelf functies definieren in php
    Swetseneggerdonderdag 27 oktober 2005 @ 20:34
    Als een soort modulo ofzo
    Ik zat heel ranzig te denken, maar toen ik hem hier boven uittikte vond ik het eigenlijk ook wel meevallen
    the_disheaverdonderdag 27 oktober 2005 @ 21:07
    quote:
    Op donderdag 27 oktober 2005 20:16 schreef Swetsenegger het volgende:
    Bestaat er een php functie welke een waarde snel procentueel kan vergelijken.
    Met andere woorden:

    if valueA-valueB < 5% van valueA

    want (valueA-valueB)*(valueA/100) vind ik wat ranzig
    5% van valueA is niks anders dan
    valueA * 0,05
    Swetseneggerdonderdag 27 oktober 2005 @ 21:20
    quote:
    Op donderdag 27 oktober 2005 21:07 schreef the_disheaver het volgende:

    [..]

    5% van valueA is niks anders dan
    valueA * 0,05
    Joh!

    Dat is niet wat ik vraag
    Wifibrodonderdag 27 oktober 2005 @ 21:26
    Hee Superrembo, kom je weer meedoen met PHP Golf?

    http://www.phpfreakz.nl/forum.php?forum=5&iid=721061
    ikke_ookdonderdag 27 oktober 2005 @ 21:26
    quote:
    Op donderdag 27 oktober 2005 20:16 schreef Swetsenegger het volgende:
    Bestaat er een php functie welke een waarde snel procentueel kan vergelijken.
    Met andere woorden:

    if valueA-valueB < 5% van valueA

    want (valueA-valueB)*(valueA/100) vind ik wat ranzig
    if(valueA-valueB < valuaA / 20)

    Ook ranzig?
    Swetseneggerdonderdag 27 oktober 2005 @ 21:37
    quote:
    Op donderdag 27 oktober 2005 20:34 schreef Swetsenegger het volgende:
    Ik zat heel ranzig te denken, maar toen ik hem hier boven uittikte vond ik het eigenlijk ook wel meevallen
    dusch...
    SuperRembodonderdag 27 oktober 2005 @ 22:14
    quote:
    Op donderdag 27 oktober 2005 21:26 schreef Wifibro het volgende:
    Hee Superrembo, kom je weer meedoen met PHP Golf?

    http://www.phpfreakz.nl/forum.php?forum=5&iid=721061
    Bedankt voor de tip.

    En de lat ligt al op 52 tekens
    (Limbo dansen, niet hoogspringen )
    Swetseneggerdonderdag 27 oktober 2005 @ 22:20
    Ik zal 'm maar even crossposten
    quote:
    Beste PHP-ers,


    --[ PHP Golf
    Een nieuwe editie van PHP Golf!

    --[ Wat is PHP Golf?
    De bedoeling is een PHP script te maken met zo min mogelijk karakters.
    Dus zo min mogelijk letters, nummers, spaties, newlines en dergelijke.
    Met het script moet je een doelstelling bereiken.
    We gaan ervan uit dat je de recenste PHP 4.x, op het moment 4.4,
    versie hebt en standaard php.ini configuratie. Tenzij anders vermeld.
    (Standaard: register_globals = off)

    Het script moet op UNIX-gebaseerde en Windows systemen werken.

    --[ Voor wie is PHP Golf?
    De competitie is voor iedereen toegankelijk.

    --[ Inzendingen
    Je kunt je oplossing sturen naar:

    phpgolf [at] gmail.com
    (Disclaimer: je e-mail zal niet worden gebruikt voor
    spam of worden doorgegeven aan derden)

    --[ Doelstelling
    Het script moet de volgende output genereren:

    ABCDEFGHIJKLMNOPQRSTUVWXYZ
    BCDEFGHIJKLMNOPQRSTUVWXYZA
    CDEFGHIJKLMNOPQRSTUVWXYZAB
    DEFGHIJKLMNOPQRSTUVWXYZABC
    EFGHIJKLMNOPQRSTUVWXYZABCD
    FGHIJKLMNOPQRSTUVWXYZABCDE
    GHIJKLMNOPQRSTUVWXYZABCDEF
    HIJKLMNOPQRSTUVWXYZABCDEFG
    IJKLMNOPQRSTUVWXYZABCDEFGH
    JKLMNOPQRSTUVWXYZABCDEFGHI
    KLMNOPQRSTUVWXYZABCDEFGHIJ
    LMNOPQRSTUVWXYZABCDEFGHIJK
    MNOPQRSTUVWXYZABCDEFGHIJKL
    NOPQRSTUVWXYZABCDEFGHIJKLM
    OPQRSTUVWXYZABCDEFGHIJKLMN
    PQRSTUVWXYZABCDEFGHIJKLMNO
    QRSTUVWXYZABCDEFGHIJKLMNOP
    RSTUVWXYZABCDEFGHIJKLMNOPQ
    STUVWXYZABCDEFGHIJKLMNOPQR
    TUVWXYZABCDEFGHIJKLMNOPQRS
    UVWXYZABCDEFGHIJKLMNOPQRST
    VWXYZABCDEFGHIJKLMNOPQRSTU
    WXYZABCDEFGHIJKLMNOPQRSTUV
    XYZABCDEFGHIJKLMNOPQRSTUVW
    YZABCDEFGHIJKLMNOPQRSTUVWX
    ZABCDEFGHIJKLMNOPQRSTUVWXY

    Nu mag jij het script programmeren en liefst zo kort mogelijk.


    --[ Deadline:

    De deadline is over 8 dagen.
    Vrijdag 19:00 4 november 2005

    -----

    Post in dit topic vragen/suggesties.
    GEEN OPLOSSINGEN!

    Mocht je een oplossing hebben, dan mag je gerust je karakter aantal posten.
    Dit om andere te stimuleren

    Diegene die het minste karakters heeft gebruikt, wint!

    Veel succes,

    Tri Pham
    sh4dowdonderdag 27 oktober 2005 @ 23:12
    Even een vraag, ik heb een tijdje een gastenboek script gebruikt met een tekstbestand. Nu heb ik zelf een nieuw gastenboek gemaakt met een mySQL database.
    Graag zou ik de oude berichten uit het tekstbestand willen toevoegen aan de database, om de oude berichten niet verloren te laten gaan.

    Het tekstbestand ziet er zo uit:
    1
    2
    <?php $Bericht[] = array('Patrick','iemand@hotmail.com',' ','Herveld','14-09-2004 21:46:28','Berichtje'); ?>
    <?php $Bericht[] = array('Thomas','iemand@hotmail.com',' ','Hoogkerk','14-09-2004 23:16:05','Berichtje'); ?>

    enz, zo staan er 311 berichten in dit tekstbestand, in Arrays.
    Hoe kan ik deze array nu splitten, en dan ieder bericht in een loop toevoegen aan de database?
    Swetseneggerdonderdag 27 oktober 2005 @ 23:14
    quote:
    Op donderdag 27 oktober 2005 23:12 schreef sh4dow het volgende:
    Even een vraag, ik heb een tijdje een gastenboek script gebruikt met een tekstbestand. Nu heb ik zelf een nieuw gastenboek gemaakt met een mySQL database.
    Graag zou ik de oude berichten uit het tekstbestand willen toevoegen aan de database, om de oude berichten niet verloren te laten gaan.

    Het tekstbestand ziet er zo uit:
    [ code verwijderd ]

    enz, zo staan er 311 berichten in dit tekstbestand, in Arrays.
    Hoe kan ik deze array nu splitten, en dan ieder bericht in een loop toevoegen aan de database?
    staan er array's in het tekstbestand of platte tekst welke je zelf array maakt?

    explode kan je arrays mee splitten: http://nl3.php.net/manual/nl/function.explode.php
    sh4dowdonderdag 27 oktober 2005 @ 23:19
    Nee er staan echt arrays in het tekstbestand, zoals hierboven in het voorbeeld dus. Dat zijn de eerste 2 regels uit het tekstbestand.

    Als het plaintext zou zijn, was me dat wel gelukt. Ik ben al met foreach bezig, maar ik kom er niet uit :S
    sylvesterrrvrijdag 28 oktober 2005 @ 00:04
    Include dat bestand, en je hebt een pracht van een array ($Bericht).
    1
    2
    3
    4
    5
    6
    7
    <?php
    include_once('mijntekstbestandmetberichten.php');
    for($i=0;$i<count($Berichten);$i++)
    {
      // huidig bericht = $Bericht[$i] (array!)
    }
    ?>
    Neverstopvrijdag 28 oktober 2005 @ 00:38
    Over dat golf ding, zit nu op 95.
    Ik klooi verder.
    Chandlervrijdag 28 oktober 2005 @ 14:38
    Ik doe niet meer mee met dat golf ding; snap er toch de balle van. Ben er gisteren even mee bezig geweest maar zo vet is mijn kennis nou ook weer niet zoals $c=$a{$b}
    Lamme_Sterfkanarievrijdag 28 oktober 2005 @ 15:20
    array met alle letters maken

    tellertje tot 26 laten tellen
    1 keer printen, <br> d'r achteraan.
    met array_shift de A d'r afhalen zodat alles opschuift en die dan met array_push de A achteraan de array neerzetten. als de teller bij 26 is heeft ie alles gehad..

    of denk ik weer te simpel?
    Roonaanvrijdag 28 oktober 2005 @ 15:30
    Mwah, als je dat in < 80 tekens kan ben je wel briljant :-) kzit nu op 65.
    Lamme_Sterfkanarievrijdag 28 oktober 2005 @ 15:35
    Ben d'r nog niet mee bezig geweest. Dit was ff een brainfart over hoe ik het zou aanpakken als het geen wijdstrijdje met zo min mogelijk karakters was
    als je van die array of zou kunnen komen scheelde het al een bende karakters. Als ik de ascii table d'r bij pak zie ik wel dat alle letters een opeenvolgende waarde hebben. Is daar niets mee te doen? Beginnen bij de A en steeds 1 d'r bij optellen met een loop en dat in een andere loop 26 keer doen terwijl je steeds 1 waarde hoger begint

    geen idee of je browser die ascii waarde als een letter weergeeft hoor. Heb me daar nooit zo mee bezig gehouden.
    sylvesterrrvrijdag 28 oktober 2005 @ 16:03
    Doe iets met chr(65) tot en met chr(90). Ik zit nu op 67 tekens, maar het met nog minder tekens.
    Lamme_Sterfkanarievrijdag 28 oktober 2005 @ 16:06
    kzal me d'r straks ook wel ff mee bezighouden als ik tijd heb. Kijken wat ik er van kan bakken
    Swetseneggervrijdag 28 oktober 2005 @ 16:28
    Zoals ik op phpfreakz al zei "Met gekut met arrays ga je niet winnen denk ik". Sylvesterrrrs opmerking leek mij ook de meest bruikbare methode, je kan natuurlijk heel simpel lussen van 65 tot 90. Alleen.... hoe laat je hem de tweede keer van 66 tot 90 PLUS 65 echoën

    Overigens zegt iemand op 52 karakters te zitten.
    sylvesterrrvrijdag 28 oktober 2005 @ 16:47
    quote:
    Op vrijdag 28 oktober 2005 16:28 schreef Swetsenegger het volgende:
    Alleen.... hoe laat je hem de tweede keer van 66 tot 90 PLUS 65 echoën
    que?
    quote:
    Overigens zegt iemand op 52 karakters te zitten.
    Doet ie goed. Ik heb wel wat beters te doen hoor.
    Lamme_Sterfkanarievrijdag 28 oktober 2005 @ 16:48
    de A moet weer achter de Z komen op de 2e regel. enz.
    Roonaanvrijdag 28 oktober 2005 @ 17:55
    - edit dan maar :S -

    [ Bericht 94% gewijzigd door Roonaan op 29-10-2005 11:08:42 ]
    HuHuvrijdag 28 oktober 2005 @ 18:00
    quote:
    Op vrijdag 28 oktober 2005 17:55 schreef Roonaan het volgende:
    64 tekens

    [ code verwijderd ]

    Hij kan efficienter als je die nummers bij 0 kan laten starten tot 702. Alleen moeten dan de modulussen anders.
    Als je de { en } weghaalt zit je al op 62 tekens

    Als je dan nog <br> gebruikt ipv <br/> zit je op 61.

    Als laatste nog <? gebruiken in plaats van <?php en je zit al op 58. Dan kan je ook nog de spatie tussen <? $i= weghalen, dat wordt dan <?$i= en je komt op 57.

    Als je dan ook nog de ; aan het einde weghaald zit je op 56.

    [ Bericht 6% gewijzigd door HuHu op 28-10-2005 18:09:10 ]
    Roonaanvrijdag 28 oktober 2005 @ 18:03
    Maar dan nog kom je niet aan 52 ;-)
    Roonaanvrijdag 28 oktober 2005 @ 18:08
    - Edit dan maar -

    [ Bericht 49% gewijzigd door Roonaan op 29-10-2005 11:08:53 ]
    HuHuvrijdag 28 oktober 2005 @ 18:12
    quote:
    Op vrijdag 28 oktober 2005 18:08 schreef Roonaan het volgende:

    [ code verwijderd ]
    57.

    55 als je de sluittags weghaalt.
    1<?while($i++<702)echo$i%27?chr(65+($i-1)%26):'<br>';


    Zo zit je op 52.
    Roonaanvrijdag 28 oktober 2005 @ 18:20
    Jups, tot die conclusie was ik ook gekomen. Same as yapf dus.

    Maar met wat bit operations, kan het dan niet korter?

    -r-
    ikke_ookvrijdag 28 oktober 2005 @ 18:27
    [Centraal]PHP - Golf wedstrijd
    Daar kunnen jullie lekker verder spelen met jullie Golf, dan blijft dit topic een beetje schoon

    -edit-
    Oeps, ik zie dat ik dat topic onder de naam van mn vriendin heb gepost
    SuperRembovrijdag 28 oktober 2005 @ 18:30
    Hmm, zo is de lol er wel een beetje af nu er complete code gepost is
    Op phpfreakz wordt gevraagd geen code te posten, doe 't dan ook niet hier.

    Ik zit zelf op 49.
    Roonaanvrijdag 28 oktober 2005 @ 18:33
    ach, vorige keer was iedereen dol op het samenwerken.
    SuperRembovrijdag 28 oktober 2005 @ 18:40
    Samenwerken is ok, maar er stond volgens mij geen complete code.
    Swetseneggervrijdag 28 oktober 2005 @ 19:22
    Code posten is niet echt de bedoeling eigenlijk
    Overigens snap ik ';m nog niet ook

    en de code is 51 karakters, geen 52

    -edit- je kan niet tellen swets..
    Swetseneggervrijdag 28 oktober 2005 @ 19:47
    quote:
    Op vrijdag 28 oktober 2005 18:27 schreef ikke_ook het volgende:
    [Centraal]PHP - Golf wedstrijd
    Daar kunnen jullie lekker verder spelen met jullie Golf, dan blijft dit topic een beetje schoon

    -edit-
    Oeps, ik zie dat ik dat topic onder de naam van mn vriendin heb gepost
    Waarom zou het een beetje schoon moeten blijven
    Kan je erg veel van leren.
    Chandlervrijdag 28 oktober 2005 @ 21:04
    Hallo,

    Ben op dit moment bezig met een stukje random te genereren arrays oftwel het volgende idee dat vooral Sop heeft aangedragen.

    Ik heb een paar mensen in een lijst ziten en sommige mense mogen sommige mensen kiezen en sommige niet. Nou heb ik eventjes een voorbeeld uit de hand gemaakt. Nu heb ik ieder persoon voorzien van een array met daarin de mogelijke mensen die ze kunnen kiezen. Echter krijg ik steeds errors met wat ik ook probeer..

    zie code:
    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
    <?

    $arr = array(11 => array(13, 14, 15, 16, 17),
                 12 => array(13, 14, 15, 16, 17),
                 13 => array(11, 12, 16, 17),
                 14 => array(11, 12, 17),
                 15 => array(11, 12, 16, 17),
                 16 => array(11, 12, 13, 14, 15, 17),
                 17 => array(11, 12, 13, 14, 15, 16));
                 
    foreach ($arr as $id => $narr)
    {
        $tmpArr = $narr;
        
        if (isSet($remove) && is_array($remove))
        {
            foreach ($remove as $x => $verwijderkey)
            {
                foreach ($tmpArr as $xx => $value)
                {
                    if ($tmpArr[$xx] == $verwijderkey)
                    {
                        unset ($tmpArr[$xx]);
                    }
                }
            }
        }
        
        if (is_array($tmpArr) && count($tmpArr) > 1)
        {
            $code = $tmpArr[rand(0, count($tmpArr)-1)];
        }
        else
        {
            foreach ($tmpArr as $key => $value)
            {
                $code = $value;
            }
        }
        
        $remove[] = $code;
        
        echo 'gebruiker ' . $id . ' heeft gebruiker ' . $code . ' getrokken <br>';
    }

    var_dump($remove);

    ?>


    denk dat ik weer te diep doorspace ennuh zou volgens mij wel 1000x beter kunnen. Iemand een idee? als je het niet snapt probeer ik het nog wel wat beter uit te leggen
    Roonaanvrijdag 28 oktober 2005 @ 21:51
    Voor het begrip is het nuttiger als je gewoon namen gebruikt in plaats van nummers om gebruikers te identificeren.

    Daarnaast een keuze maken of je je variabelen in het engels of het nederlands programmeerd, tevens is er de vraag wat $narr doet.

    Een aanpak die je zou kunnen kiezen is om de array to sorteren op het aantal mensen dat iemand in zijn lijstje heeft. Zoals de opzet nu is (of ik mis iets) is het zo dat er iemand over zou blijven die niemand kan kiezen?

    Chandlerzaterdag 29 oktober 2005 @ 12:54
    Dus je ziet het liever met de namen? maar dan blijft het principe toch gelijk?
    Chandlerzondag 30 oktober 2005 @ 10:03
    Ik heb het nu even zo gedaan.

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

    $arr = array("eric" => array("tess", "joop", "kees", "loes", "joke"),
                 "marc" => array("tess", "joop", "kees", "loes", "joke"),
                 "tess" => array("eric", "marc", "loes", "joke"),
                 "joop" => array("eric", "marc", "joke"),
                 "kees" => array("eric", "marc", "loes", "joke"),
                 "loes" => array("eric", "marc", "tess", "joop", "kees", "joke"),
                 "joke" => array("eric", "marc", "tess", "joop", "kees", "loes"));

    foreach ($arr as $id => $tmpArr)
    {
        if (isSet($remove) && is_array($remove))
        {
            foreach ($remove as $x => $verwijderkey)
            {
                foreach ($tmpArr as $xx => $value)
                {
                    if ($tmpArr[$xx] == $verwijderkey)
                    {
                        unset ($tmpArr[$xx]);
                    }
                }
            }
        }

        if (is_array($tmpArr) && count($tmpArr) > 1)
        {
            $code = $tmpArr[rand(0, count($tmpArr)-1)];
        }
        else
        {
            foreach ($tmpArr as $key => $value)
            {
                $code = $value;
            }
        }

        $remove[] = $code;

        echo 'gebruiker ' . $id . ' heeft gebruiker ' . $code . ' getrokken <br>';
    }

    var_dump($remove);

    ?>



    en kreeg na veel F5en het volgende te zien

    1
    2
    3
    4
    5
    6
    7
    8
    gebruiker eric heeft gebruiker joop getrokken 
    gebruiker marc heeft gebruiker tess getrokken 
    gebruiker tess heeft gebruiker joke getrokken 
    gebruiker joop heeft gebruiker eric getrokken 
    gebruiker kees heeft gebruiker marc getrokken 
    gebruiker loes heeft gebruiker kees getrokken 
    gebruiker joke heeft gebruiker loes getrokken 
    array(7) { [0]=> string(4) "joop" [1]=> string(4) "tess" [2]=> string(4) "joke" [3]=> string(4) "eric" [4]=> string(4) "marc" [5]=> string(4) "kees" [6]=> string(4) "loes" } 


    want veelal zag ik dit soort uitkomsten..

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    gebruiker eric heeft gebruiker joke getrokken 
    gebruiker marc heeft gebruiker joop getrokken 
    gebruiker tess heeft gebruiker eric getrokken 
    gebruiker joop heeft gebruiker marc getrokken 
    gebruiker kees heeft gebruiker loes getrokken 

    Notice: Undefined offset: 1 in d:\www\usersort.php on line 29
    gebruiker loes heeft gebruiker getrokken 

    Notice: Undefined offset: 0 in d:\www\usersort.php on line 29
    gebruiker joke heeft gebruiker getrokken 
    array(7) { [0]=> string(4) "joke" [1]=> string(4) "joop" [2]=> string(4) "eric" [3]=> string(4) "marc" [4]=> string(4) "loes" [5]=> NULL [6]=> NULL } 


    en nu zie je dus dat op regel 29 een error komt, oftewel de volgende regel.

    1        $code = $tmpArr[rand(0, count($tmpArr)-1)];


    maar ik check of de array reeds groter is dan 1 item, dan zou je toch verwachten dat dat goed gaat

    en als ik de regel (28) dus boven de code voorzie van > 2 dan krijg ik steeds mindervaak een error maar alsnog soms een error in regel 29

    Help me!
    Roonaanzondag 30 oktober 2005 @ 10:44
    en als je $code = $tmpVar[array_rand($tmpVar)] doet?

    also, $tmpVar is meer dan een tijdelijke var natuurlijk. Deze heeft wel degelijk een bepaalde betekenis en significante inhoudt ondanks het tijdelijke karakter. Beter om in het vervolg dan ook een variabele naam te kiezen die wat zegt over de intentie van de variabele dan haar levensduur.

    -r-
    Lightzondag 30 oktober 2005 @ 10:53
    quote:
    Op zondag 30 oktober 2005 10:03 schreef Chandler het volgende:

    maar ik check of de array reeds groter is dan 1 item, dan zou je toch verwachten dat dat goed gaat

    en als ik de regel (28) dus boven de code voorzie van > 2 dan krijg ik steeds mindervaak een error maar alsnog soms een error in regel 29

    Help me!
    Met je rand() ding ga je op zoek naar een key tussen 0 en het aantal keys. Da's leuk, maar als je als keys de getallen 1,3,5,7 overhoudt dan heb je 4 keys en een kans van 50% dat je een niet-bestaande key tussen 0 en 3 pakt.
    Chandlerzondag 30 oktober 2005 @ 11:29
    idd, heb reeds array_rand toegevoegd en dat is deels een oplossing want om de zoveel keer krijg ik alsnog een error

    ipv
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        if (is_array($tmpArr) && count($tmpArr) > 1)
        {
            $code = $tmpArr[rand(0, count($tmpArr)-1)];
        }
        else
        {
            foreach ($tmpArr as $key => $value)
            {
                $code = $value;
            }
        }


    de oplossing van roonaan en een andere gebruiker

    1$code = $tmpVar[array_rand($tmpVar)];


    maar dan nog krijg ik wel eens een error op lijn 27 oftewel bovenstaande code maar dat zal komen omdat ik dan een lege array heb...
    Lightzondag 30 oktober 2005 @ 11:42
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        if (is_array($tmpArr) && count($tmpArr) > 1)
        {
            $code = $tmpArr[rand(0, count($tmpArr)-1)];
        }
        else
        {
            foreach ($tmpArr as $key => $value)
            {
                $code = $value;
            }
        }


    Dat gaat idd mis bij een lege array. Oplossing is simpel, zorgen dat je niets doet als de array leeg is.

    1
    2
    3
    4
    5
    6
    7
    8
    9
        if (count($tmpArr) > 0)
        {
            $code = $tmpArr[array_rand($tmpArr)];
        }
        else
        {
            echo 'Geen keuze beschikbaar voor '.$id.'<br>';
            break;
        }
    Chandlerzondag 30 oktober 2005 @ 12:24
    True, ik denk dat ik maar ff een routine ga maken dat wanneer alles goed is de gebruiker door gaat en anders overnieuw moet kiezen (automatisch natuurlijk )
    Chandlerzondag 30 oktober 2005 @ 12:25
    Maar goed, ik zit nu met een andere test... weer zelf bedacht...

    Ga nu het idee omdraaien, wil nu inplaats van de wel mogelijkheden in een array te zetten de niet mogelijkheden in een array zetten

    Dus ga weer hard aan het coden want ben niet zo ziek meer dus heb weer wat hersens beschikbaar...
    Chandlerzondag 30 oktober 2005 @ 13:32
    Hier is de volgende.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    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
    <?

    $arr = array("eric" => array("eric", "marc"),
                 "marc" => array("marc", "eric"),
                 "tess" => array("tess", "joop", "kees"),
                 "joop" => array("joop", "tess", "kees", "loes"),
                 "kees" => array("kees", "tess", "joop"),
                 "loes" => array("loes"),
                 "joke" => array("joke"));

    // build a second list.
    foreach ($arr as $name => $null)
    {
        $nArr[] = $name;
    }

    foreach ($arr as $id => $userRemove)
    {
        $userChoose = $nArr;
        
        // verwijder mensen uit lijst :)
        foreach ($userRemove as $xid => $name)
        {
            foreach ($userChoose as $userid => $username)
            {
                if (isSet($userRemove[$userid]) && $userRemove[$userid] == $name)
                {
                    unset($userChoose[$userid]);
                }
            }
        }

        // verwijder reeds geselecteerde mensen uit lijst :)
        if (isSet($userSelected) && is_array($userSelected))
        {
            foreach ($userSelected as $xxid => $name)
            {
                foreach ($userChoose as $uID => $tmp)
                {
                    if (isSet($userChoose[$uID]) && $userChoose[$uID] == $name)
                    {
                        unset($userChoose[$uID]);
                    }
                }
            }
        }
        

        $code = $userChoose[array_rand($userChoose)];

        $userSelected[$id] = $code;

        echo 'gebruiker ' . $id . ' heeft gebruiker ' . $code . ' getrokken <br>';


    }

    var_dump($userSelected);

    ?>


    echter zit het blijkbaar niet goed in elkaar want krijg bij iedere keuze fouten te zien en snap niet waar de fouten zitten?

    OMG ben er nu al ruim een uur mee bezig geweest om te bugtesten iemand een idee?

    oftwel uitkomst

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    gebruiker eric heeft gebruiker tess getrokken 
    gebruiker marc heeft gebruiker kees getrokken 
    gebruiker tess heeft gebruiker loes getrokken 
    gebruiker joop heeft gebruiker joke getrokken 
    gebruiker kees heeft gebruiker joop getrokken 
    gebruiker loes heeft gebruiker marc getrokken 

    Notice: Undefined index: in d:\www\usersort.php on line 49
    gebruiker joke heeft gebruiker getrokken 
    array(7) { ["eric"]=> string(4) "tess" ["marc"]=> string(4) "kees" ["tess"]=> string(4) "loes" ["joop"]=> string(4) "joke" ["kees"]=> string(4) "joop" ["loes"]=> string(4) "marc" ["joke"]=> NULL } 


    Darkomenzondag 30 oktober 2005 @ 17:32
    Wat krijg je als je

    $code = $userChoose[array_rand($userChoose)];

    $userSelected[$id] = $code;

    IN
    $userSelected[$id] = $userChoose[array_rand($userChoose)];

    veranderd?
    Lightzondag 30 oktober 2005 @ 17:47
    quote:
    Op zondag 30 oktober 2005 17:32 schreef Darkomen het volgende:
    Wat krijg je als je

    $code = $userChoose[array_rand($userChoose)];

    $userSelected[$id] = $code;

    IN
    $userSelected[$id] = $userChoose[array_rand($userChoose)];

    veranderd?
    Dan krijg je dat de variabele $code niet te gebruiken is bij het echo-statement even verderop
    Roonaanzondag 30 oktober 2005 @ 22:52
    Is het niet nuttiger om eerst de mensen te sorteren op het kleinst aantal mensen die ze mogen trekken, om te voorkomen dat ze op een gegeven moment niemand kunnen trekken, omdat die reeds getrokken zijn door andere, die in eerste instantie meer opties hadden?

    -r-
    Swetseneggerzondag 30 oktober 2005 @ 23:14
    Waarom geeft mijn mysql column, welke NULL enabled is, en NULL als default waarde heeft
    0
    terug wanneer ik geen waarde invul?
    Lightzondag 30 oktober 2005 @ 23:15
    quote:
    Op zondag 30 oktober 2005 22:52 schreef Roonaan het volgende:
    Is het niet nuttiger om eerst de mensen te sorteren op het kleinst aantal mensen die ze mogen trekken, om te voorkomen dat ze op een gegeven moment niemand kunnen trekken, omdat die reeds getrokken zijn door andere, die in eerste instantie meer opties hadden?

    -r-
    Klinkt logisch, maar is geen garantie voor succes. Bij de laatste melding van Chandler liep het fout bij de laatste trekking, en dat is iemand met de ruimste keuze. En ik zie hier nog wel wat mogelijkheden voor functies als array_keys en in_array.
    Lightzondag 30 oktober 2005 @ 23:19
    quote:
    Op zondag 30 oktober 2005 23:14 schreef Swetsenegger het volgende:
    Waarom geeft mijn mysql column, welke NULL enabled is, en NULL als default waarde heeft
    0
    terug wanneer ik geen waarde invul?
    Geen idee. Als ik het hier probeer gaat het wel goed. Weet je zeker dat die column NULL als default waarde heeft?
    Swetseneggerzondag 30 oktober 2005 @ 23:28
    quote:
    Op zondag 30 oktober 2005 23:19 schreef Light het volgende:

    [..]

    Geen idee. Als ik het hier probeer gaat het wel goed. Weet je zeker dat die column NULL als default waarde heeft?


    Op welke versie heb jij het geprobeerd?

    -edit- opgelost. in plaats van niets invullen gewoon NULL invullen

    [ Bericht 10% gewijzigd door Swetsenegger op 30-10-2005 23:35:22 ]
    SuperRembozondag 30 oktober 2005 @ 23:35
    quote:
    Op zondag 30 oktober 2005 23:14 schreef Swetsenegger het volgende:
    Waarom geeft mijn mysql column, welke NULL enabled is, en NULL als default waarde heeft
    0
    terug wanneer ik geen waarde invul?
    Omdat MySQL vol met bugs, inconsequenties en andere vreemde dingen zit. ACM had er een lijst van online staan.
    quote:
    Weird behaviour
    1. You can define a varchar/char field 'auto_increment'.
    2. SELECT 'A' = 'a' gets you true.
    3. Int(10) is the same as int(1) eventhough the manual says differently.
    4. Tablenames are treated case-sensitive on *n?x systems, not on windows.
    5. Change a piece of a table definition and mysql creates a temporary copy of the table, very nice if you have a 6GB table occupying a 10GB tablespace... (yes, the change will fail)
    6. Adding indices result in a similar temporary copy.
    7. What does zerofill do to a integer field? A database is meant to store data, not to format it while storing.
    8. When I define a char(32) (md5-strings anyone) field, I really don't mean varchar(32) (MySQL automatically changes all char(X >4) to varchar(X)).
    9. This is correct according to mysql: SELECT a, b, count(c) FROM d GROUP BY a; what will MySQL do with the b?
    10. If you update a record and set it to the same value, mysql'll define that as unaffected. Even if it does change a timestamp field.

    Bugs
    1. Insert a NULL value in a NOT NULL field and the query gets executed. In short, you can't force NOT NULL...
    2. Under high loads MySQL will restart itself occasionally. When a child doesn't die fast enough "socket already in use"-error occurs.
    3. Replication doesn't work that well.
    4. MySQL will always try to insert a date into a date field, even if you supply an empty or bogus string (it'll insert 0000-00-00 then).
    5. When underflowing or overflowing a integer field, mysql will insert the largest or smallest possible value instead.
    6. Long texts are chopped to the correct size, not denied.
    7. MySQL will also insert 0 into a numeric field if you supply an empty or bogus string.
    8. Close a connection and a long query still runs on... The only way to kill it is via the (mysql)admin
    9. Connections with a timeout? Very nice when you need to do a lot of calculations on your data or a query lasts very long. "Lost connection to MySQL server during query"
    10. You can insert the same value twice in a ENUM-field
    Deze punten gaan vooral over versie 3.23.x, dat zal ook wel de reden zijn dat ie offline is.
    Swetseneggerzondag 30 oktober 2005 @ 23:42
    quote:
    Op zondag 30 oktober 2005 23:35 schreef SuperRembo het volgende:

    [..]

    Omdat MySQL vol met bugs, inconsequenties en andere vreemde dingen zit. ACM had er een lijst van online staan.
    [..]

    Deze punten gaan vooral over versie 3.23.x, dat zal ook wel de reden zijn dat ie offline is.
    Ja die ken ik al van www.yapf.net
    Maar er staat alleen wat over NULL invoeren in een NOT NULL kolom.
    In mijn geval vul ik een lege string in, dus niets en daar maakt mysql 0 van.

    Indien het veld in mijn form nu leeg is, vul ik dus maar NULL in. dat gaat wel goed
    Lightzondag 30 oktober 2005 @ 23:44
    quote:
    Op zondag 30 oktober 2005 23:28 schreef Swetsenegger het volgende:

    [..]

    [afbeelding]

    Op welke versie heb jij het geprobeerd?

    -edit- opgelost. in plaats van niets invullen gewoon NULL invullen
    Ik heb het geprobeerd op mysql 4.0.25 die ik hier lokaal had draaien. (Had, ik ben bezig met een upgrade nu.)

    En ik deed een insert into tabel (kolom1) values (1); waarbij kolom2 (die dus niet wordt genoemd) als default null was gedefinieerd. Dan komt er ook een waarde null in te staan.
    Lightzondag 30 oktober 2005 @ 23:45
    quote:
    Op zondag 30 oktober 2005 23:42 schreef Swetsenegger het volgende:

    [..]

    Ja die ken ik al van www.yapf.net
    Maar er staat alleen wat over NULL invoeren in een NOT NULL kolom.
    In mijn geval vul ik een lege string in, dus niets en daar maakt mysql 0 van.

    Indien het veld in mijn form nu leeg is, vul ik dus maar NULL in. dat gaat wel goed
    Een lege string is niet gelijk aan NULL.
    SuperRembozondag 30 oktober 2005 @ 23:50
    Een lege string is zeker ook geen decimal.

    (Er zit een typo in articelcode)
    Swetseneggerzondag 30 oktober 2005 @ 23:51
    quote:
    Op zondag 30 oktober 2005 23:45 schreef Light het volgende:

    [..]

    Een lege string is niet gelijk aan NULL.
    Daar was ik achter nu
    Dit geeft immers geen NULL maar 0 als $_POST['second_price'] leeg is.

    INSERT INTO table
    (id,second_price)
    VALUES(0,'".$_POST['second_price']."')
    Lightmaandag 31 oktober 2005 @ 00:01
    quote:
    Op zondag 30 oktober 2005 23:50 schreef SuperRembo het volgende:
    Een lege string is zeker ook geen decimal.

    (Er zit een typo in articelcode)
    Bij MySQL is een hoop mogelijk, gezien wat ik zo lees.
    Lightmaandag 31 oktober 2005 @ 01:04
    Hmm.. Men neme een simpele tabel "tabel" met twee kolommen "col1" en "col2". Col2 is gedefinieerd als INT en mag NULL bevatten. Col1 is gewoon een ID. (Het gaat nergens over, maar ter illustratie.)
    Dan doen we "Insert into tabel (col1, col2) values (1, '')" waarbij dus een lege string naar col2 gezet wordt. Maar dat was een int. Voor MySQL een reden om er dan maar 0 van te maken.

    Overigens gebeurt hetzelfde als ik een niet-lege string gebruik. De conversie lijkt hetzelfde te zijn als de (int) van php.
    Chandlermaandag 31 oktober 2005 @ 07:42
    quote:
    Op zondag 30 oktober 2005 17:32 schreef Darkomen het volgende:
    Wat krijg je als je

    $code = $userChoose[array_rand($userChoose)];

    $userSelected[$id] = $code;

    IN
    $userSelected[$id] = $userChoose[array_rand($userChoose)];

    veranderd?
    Een verdwijnende variabel, die ik idd niet bij het echo statement kan gebruiken
    quote:
    Op zondag 30 oktober 2005 17:47 schreef Light het volgende:
    Dan krijg je dat de variabele $code niet te gebruiken is bij het echo-statement even verderop
    Yep, dit is ff makkelijk en voor mij overzichtelijk...
    quote:
    Op zondag 30 oktober 2005 22:52 schreef Ro�a� het volgende:
    Is het niet nuttiger om eerst de mensen te sorteren op het kleinst aantal mensen die ze mogen trekken, om te voorkomen dat ze op een gegeven moment niemand kunnen trekken, omdat die reeds getrokken zijn door andere, die in eerste instantie meer opties hadden?

    -r-
    Ok, ik vond dit al een uitdaging, en nu dus helemaal... hoe in vredus naam kan ik dit snel doen? als het MySQL was dan was dit simpel, en kon ik de query aanpassen maar werken met array's is niet mijn sterkste vak..

    Heb je tips? hoef geen code! zolang je me maar in de goede richting wijst!
    quote:
    Op zondag 30 oktober 2005 23:15 schreef Light het volgende:
    Klinkt logisch, maar is geen garantie voor succes. Bij de laatste melding van Chandler liep het fout bij de laatste trekking, en dat is iemand met de ruimste keuze. En ik zie hier nog wel wat mogelijkheden voor functies als array_keys en in_array.
    hoe bedoel je dat? en waar denk jij dat mijn probleem zit? want ik kan dit helaas niet zo even 1234567890 uitvinden heb gisteren (tijdens het ziek zijn) de hele dag niets anders in me hoofd gehad dan de niet werkende code...

    Tips, verwijzingen etc zijn van harte welkom!.
    SuperRembomaandag 31 oktober 2005 @ 07:50
    Wat wil je nou eigenlijk met dat script? Als het gewoon lootjes trekken was, dan zou iedereen kunnen kiezen uit iedereen behalve zichzelf. Als input zou je dan alleen een lijst namen hebben.
    Maar bij jou begin je met een array waarbij sommige mensen veel meer keus hebben dan anderen
    Chandlermaandag 31 oktober 2005 @ 08:07
    SuperRembo; dat zou inderdaad een 'gewoon' lootjes trekken script zijn maar dat is hier niet het geval. In mijn script kun je ook kiezen dat mensen hun vriend/vriendin/vader/moeder en de keuze van vorig jaar niet mag kiezen (alleeen vorig jaar!).. dus dan wordt de sub array iets groter .

    Het laatste script is dus een niet wat jij denkt het is net andersom, deze mensen mogen dus pertinent NIET gekozen worden

    vb
    1
    2
    3
    $arr = array("eric" => array("eric", "marc"),
                 "marc" => array("marc", "eric"),
                 "tess" => array("tess", "joop", "kees"),


    eric mag dus geen marc of eric trekken ennuh marc mag ook geen marc of eric trekken en als laatste voorbeeld mag tess geen tess/joop of kees trekken.
    Lightmaandag 31 oktober 2005 @ 08:20
    quote:
    Op maandag 31 oktober 2005 07:42 schreef Chandler het volgende:

    hoe bedoel je dat? en waar denk jij dat mijn probleem zit? want ik kan dit helaas niet zo even 1234567890 uitvinden heb gisteren (tijdens het ziek zijn) de hele dag niets anders in me hoofd gehad dan de niet werkende code...
    Bij lootjes trekken heb je altijd het risico dat de laatste geen keuze meer heeft (of alleen zichzelf kan kiezen). Eigenlijk heb je die keuze altijd, maar je houdt er bij het programmeren al rekening mee dat iemand niet zichzelf mag kunnen kiezen. In je laatste voorbeeld was joke, die als laatste mag kiezen, nog niet gekozen. Enige overgebleven keuze is dus joke, maar die mag zichzelf niet kiezen, dus geen keuze. Oplossing is simpel de hele trekking nogmaals doen.
    Chandlermaandag 31 oktober 2005 @ 08:33
    klopt dat ben ik met je eens, maar deze code genereerd nogal vaak veel errors.. test het maar eens
    Swetseneggermaandag 31 oktober 2005 @ 08:39
    quote:
    Op maandag 31 oktober 2005 01:04 schreef Light het volgende:
    Hmm.. Men neme een simpele tabel "tabel" met twee kolommen "col1" en "col2". Col2 is gedefinieerd als INT en mag NULL bevatten. Col1 is gewoon een ID. (Het gaat nergens over, maar ter illustratie.)
    Dan doen we "Insert into tabel (col1, col2) values (1, '')" waarbij dus een lege string naar col2 gezet wordt. Maar dat was een int. Voor MySQL een reden om er dan maar 0 van te maken.

    Overigens gebeurt hetzelfde als ik een niet-lege string gebruik. De conversie lijkt hetzelfde te zijn als de (int) van php.
    Mjah,

    Laten we zeggen dat ik verwacht dat wanneer ik een lege string naar een decimal stuur met als default value NULL dat ik dan ook NULL terug krijg

    Het was weer een wijze les
    Roonaanmaandag 31 oktober 2005 @ 09:54
    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
    <?

      $vorigeTrekking = array(
                   "eric" => array("eric", "marc"),
                   "marc" => array("marc", "eric"),
                   "tess" => array("tess", "joop", "kees"),
                   "joop" => array("joop", "tess", "kees", "loes"),
                   "kees" => array("kees", "tess", "joop"),
                   "loes" => array("loes"),
                   "joke" => array("joke")
                   );
                 
      $alleDeelnemers = array_keys($vorigeTrekking);
      
      // Wie mag wie wél loten
      $magLoten = array();
      foreach($alleDeelnemers as $naam) {
        $magLoten[$naam] = array_diff($alleDeelnemers, $vorigeTrekking[$naam]);
      }
      
      // Wie mag door wie geloot worden
      $magGelootWordenDoor = array();
      foreach($magLoten as $naam => $loten) {
        foreach($loten as $lot)
          $magGelootWordenDoor[$lot][] = $naam;
      }

      // Trekking doen. ob_start etc is om de data van
      // mislukte trekkingen te verbergen
      $i = 1;
      ob_start();
      $loting = loting($alleDeelnemers, $magLoten, $magGelootWordenDoor);
      while(!is_array($loting) && $i < 10) {
        ob_end_clean();
        echo '<br/>Trekking '.$i++.' mislukt: '.$loting; flush();
        ob_start();
        $loting = loting($alleDeelnemers, $magLoten, $magGelootWordenDoor);
      }
      ob_end_flush();  
      
      // Loting functie
      function loting($alleDeelnemers, $magLoten, $magGelootWordenDoor) {
        // Alle loten zijn getrokken
        if(count($alleDeelnemers) < 1) {
          return array();
        }
        // Kies een van de deelnemers die als volgende een lootje mag trekken
        shuffle($alleDeelnemers); 
        $deelnemer = array_pop($alleDeelnemers);
        
        // Geef de naam weer
        echo '<br/><b>'.$deelnemer.'</b>';
        
        // Tijdelijke arrays construeren om de intersectie te kunnen maken tussen
        // de loten die iemand mag trekken en de nog beschikbare loten
        $dnMagLoten = $magLoten[$deelnemer];
        $dnKanLoten = array_keys($magGelootWordenDoor);
        $dnLoten    = array_intersect($dnMagLoten, $dnKanLoten);
        
        if(count($dnLoten) < 1) {
          return '<br/>Loting mislukt.';
        } else {
          // Volgende drie regels zijn debug informatie
          echo '<br/>Mag: '.implode(',',$dnMagLoten);
          echo '<br/>Kan: '.implode(',',$dnKanLoten);
          echo '<br/>Som: '.implode(',',$dnLoten);
          // Trek een van de loten
          $getrokken = $dnLoten[array_rand($dnLoten)];
          // Geef een echo welk lot is getrokken
          echo '<br/><b>'.$deelnemer.' trekt '.$getrokken.'</b><br/>';
        }
        
        // De deelnemer kan niet nog een keer loten
        unset($magLoten[$deelnemer]);
        // Het lot kan ook niet meer getrokken worden
        unset($magGelootWordenDoor[$getrokken]);
        
        // Recursief andere mensen laten trekken
        $loting = loting($alleDeelnemers,$magLoten, $magGelootWordenDoor);
        
        // Kijken of de recursieve loting goed verlopen is
        if(is_array($loting)) {
          $resultaat = array_merge(array($deelnemer => $getrokken),$loting);
          return $resultaat;
        } else {
          return $loting;
        }
      }
      

    ?>
    JeRamaandag 31 oktober 2005 @ 10:50
    quote:
    Op maandag 31 oktober 2005 08:39 schreef Swetsenegger het volgende:

    [..]

    Mjah,

    Laten we zeggen dat ik verwacht dat wanneer ik een lege string naar een decimal stuur met als default value NULL dat ik dan ook NULL terug krijg

    Het was weer een wijze les
    Afgezien van dit belachelijke gedrag van MySQL ( ); waarom probeerde je een string naar een decimal te sturen?
    Roonaanmaandag 31 oktober 2005 @ 11:32
    Aangezien fok en phpfreakz toch aan het crossbreeden is. Mag ik jullie commentaar vragen op http://www.phpfreakz.nl/library.php?sid=20709 ?

    -r-
    Chandlermaandag 31 oktober 2005 @ 12:43
    quote:
    Op maandag 31 oktober 2005 09:54 schreef Ro�a� het volgende:
    @Ro�a�

    ik ga je code inspecteren, zal wel heel veel dingen niet begrijpen maar er mee stoeien zorgt voor kennis
    Swetseneggermaandag 31 oktober 2005 @ 12:56
    quote:
    Op maandag 31 oktober 2005 10:50 schreef JeRa het volgende:

    [..]

    Afgezien van dit belachelijke gedrag van MySQL ( ); waarom probeerde je een string naar een decimal te sturen?
    Nou, ik was in de veronderstelling dat je bij een INSERT statement alle kolommen moest benoemen
    dus stuurde ik VALUES(0,'".$_POST['second_price']."') naar de database.

    Nu stuur ik gewoon NULL, en vanavond haal ik 'm gewoon helemaal uit de INSERT statement
    Chandlermaandag 31 oktober 2005 @ 13:56
    @Roonaan: ik ben nu al een tijd bezig je functie te ontleden maar heb een vraag en kan daar niet een begrijpelijk antwoord op vinden op www.php.net

    waar staan de volgende functie voor!

    array_intersect ? want uit de uitleg en voorbeeld kom ik niet

    -edit-

    en hoe is het mogelijk om het data uit een array te verwijderen middels een andere array..

    ik probeer het nu zo te doen maar dat werkt niet echt

    1
    2
    3
    4
    foreach ($excludeUsers as $id => $value)
            {
                unSet($includeUsers[$id]);
            }



    [ Bericht 49% gewijzigd door Chandler op 31-10-2005 14:02:12 ]
    Pronkmaandag 31 oktober 2005 @ 14:09
    Ik heb een probleem met cookies die moeten worden geplaatst en uitgelezen aan de hand van de GET waarde die aan een de pagina wordt meegegeven.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    PHP
    if (!isset($_COOKIE[$_GET['link']]))  
    {
    echo
    "blabla";
    setcookie("$_GET[link]", "true", strtotime("tomorrow 0"), "/");
    }

    ?>


    Het cookie wordt wel geplaatst (met de juiste waarde)
    Als ik nu nog een keer dezelfde GET waarde aan de pagina mee geef dan zou er geen "blabla" op mijn scherm mogen verschijnen.
    Dit gebeurt wel, dus het cookie wordt toch niet goed uitgelezen.

    Heeft iemand een idee waarom dit fout gaat?
    Roonaanmaandag 31 oktober 2005 @ 14:30
    quote:
    Op maandag 31 oktober 2005 13:56 schreef Chandler het volgende:
    @Roonaan: ik ben nu al een tijd bezig je functie te ontleden maar heb een vraag en kan daar niet een begrijpelijk antwoord op vinden op www.php.net

    waar staan de volgende functie voor!

    array_intersect ? want uit de uitleg en voorbeeld kom ik niet
    array_intersect geeft alleen de waarde terug die in beide arrays voorkomen.

    -r-
    Chandlermaandag 31 oktober 2005 @ 14:40
    ok, dan heb ik weer wat geleerd; jammer dat ze dat niet in het nederlands op php.net hebben staan maaruh goed weer wat geleerd
    Chandlermaandag 31 oktober 2005 @ 14:58
    @Roonaan: Het volgende is mijn uitkomst, toch wil ik je nog bedanken voor het plaatsen van een door jou geschreven code; je hebt me namelijk veel inzicht gegeven en laten zien dat ik nog heel veel moet leren.

    Graag zou ik comments willen zien op het stukje dat ik heb 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
    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
    <?

    $vorigeTrekking = array("eric" => array("eric", "marc"),
                            "marc" => array("marc", "eric"),
                            "tess" => array("tess", "joop", "kees"),
                            "joop" => array("joop", "tess", "kees", "loes"),
                            "kees" => array("kees", "tess", "joop"),
                            "loes" => array("loes"),
                            "joke" => array("joke"));

    $alleDeelnemers = array_keys($vorigeTrekking);
    $lootenSelect   = array();
    $includeUsers   = array();
    $over           = array();

    echo '<pre>';
    for ($x = 0; $x < 100; $x++)
    {
        $doBreak = true;
        foreach ($vorigeTrekking as $kiesUser => $excludeUsers)
        {
            // bereken users die niet mag kiezen
            
            $includeUsers = $alleDeelnemers;
            $over         = $alleDeelnemers;
            
            foreach ($excludeUsers as $id => $value)
            {
                foreach ($over as $fID => $fName)
                {
                    if ($fName == $value)
                    {
                        unSet($over[$fID]);
                    }
                }
            }
            echo '<br>';

            foreach ($lootenSelect as $id => $value)
            {
                foreach ($over as $fID => $fName)
                {
                    if ($fName == $value)
                    {
                        unSet($over[$fID]);
                    }
                }
            }
            
            echo 'user            : ' . $kiesUser . "<br /><br /><br />";
            echo 'mag niet kiezen : ' . implode(", ", $excludeUsers) . "<br />";
            echo 'mag wel kiezen  : ' . implode(", ", $includeUsers) . "<br />";
            echo 'reeds gekozen   : ' . implode(", ", $lootenSelect) . "<br />";
            echo 'blijft over     : ' . implode(", ", $over) . "<br />";
            
            if (count($over) > 0)
            {
                $rnd = $alleDeelnemers[array_rand($over)];
                echo 'random          : ' . $rnd . "<br>";
            
                $lootenSelect[$kiesUser] = $rnd;
                echo '<hr>';
            }
            else
            {
                echo 'random          : geen mogelijkheid meer over, start over';
                $doBreak = false;
            }
        }

        if ($doBreak == true)
        {
            break;
        }
    }

    echo '</pre>';

    echo 'selected users';
    echo '<pre>';
    var_dump($lootenSelect);
    echo '</pre>';

    ?>


    het idee is volgens mij het zelfde als die van jou maar dan met wat minder moelijke onderdelen

    Roonaanmaandag 31 oktober 2005 @ 15:23
    Commentaar: je gebruikt nog steeds engelse en nederlandse variabelenamen door elkaar. Je naamgeving is erg slordig. Tevens ben ik nog steeds overtuigd dat een recursieve aanpak hiervoor beter is.

    -r-
    Chandlermaandag 31 oktober 2005 @ 15:26
    Okey... de variabelbenamingen kunnen beter, en zekers als je NL/ENG bedoelt maar daar heb ik helaas wel vaker last van, zal me ooit (spoedig) eens een vaste methode moeten aanleren.. en waarom denk je dat een recursive aanpak beter is? zou je dat eens kunnen uitleggen?

    Heb je trouwens de code getest? hij doe't echt tis niet te geloven hehe..
    Roonaanmaandag 31 oktober 2005 @ 16:02
    Recursief? Omdat als je het IRL zou doen het in principe ook een recursieve happening is :-) Meer dan een foreach. Zakdoekje leggen is wel weer loop-based daarentegen.

    Getest? Gewoon extra debug lines laten outputten en vervolgens een peer keer draaien.

    Die ob_start/ob_end_clean/ob_end_flush zat er pas heel laat in.

    -r-
    Pronkmaandag 31 oktober 2005 @ 16:36
    quote:
    Op maandag 31 oktober 2005 14:09 schreef Pronk het volgende:
    Ik heb een probleem met cookies die moeten worden geplaatst en uitgelezen aan de hand van de GET waarde die aan een de pagina wordt meegegeven.
    [ code verwijderd ]

    Het cookie wordt wel geplaatst (met de juiste waarde)
    Als ik nu nog een keer dezelfde GET waarde aan de pagina mee geef dan zou er geen "blabla" op mijn scherm mogen verschijnen.
    Dit gebeurt wel, dus het cookie wordt toch niet goed uitgelezen.

    Heeft iemand een idee waarom dit fout gaat?
    Ik heb het opgelost! Voor de nieuwsgierigen, er kwam een "." voor in de meegestuurde GET waarde. Het cookie lijkt onmogelijk uit te lezen door die punt.
    Chandlermaandag 31 oktober 2005 @ 17:18
    @Roonaan; je zult ongetwijfeld gelijk hebben (ps ik reageer later op email )

    -edit-

    zelf gefixt

    [ Bericht 65% gewijzigd door Chandler op 31-10-2005 17:25:29 ]
    Chandlermaandag 31 oktober 2005 @ 17:55
    ps.

    Ik heb net Wamp geinstalleerd (de laatste versie, php,mysql,apache etc) nu krijg ik echter steeds fout meldingen bij dit soort dingen.

    echo parseTemplate(loadTemplate("./template.tpl"));

    dat wil het nu zien als dit

    $tpl = loadTemplate("./template.tpl");
    echo parseTemplate($tpl);

    maar dat wil ik dus weer niet, want het 1e voorbeeld is toch correct coding? en waar kan ik die setting in php.ini vinden cq veranderen?

    Tnx
    JeRamaandag 31 oktober 2005 @ 18:45
    quote:
    Op maandag 31 oktober 2005 15:23 schreef Ro�a� het volgende:
    Tevens ben ik nog steeds overtuigd dat een recursieve aanpak hiervoor beter is.
    Zolang PHP nog steeds crasht als je een recursieve functie op wat grotere datasets uitvoert (stack overflow) wijk ik toch uit naar andere talen om een aanpak te testen
    Pronkwoensdag 2 november 2005 @ 10:57
    Ik heb een fotoalbum (deels zelf gemaakt / deels gedownload)
    en deze geeft op de thumbnail pagina (soms, afhankelijk van het geladen album) de volgende notices:

    Notice: Undefined offset: -1 in D:\Data\WebDesign\pronkmedia.nl\fotoalbum\klein.php on line 51

    Notice: Undefined offset: -1 in D:\Data\WebDesign\pronkmedia.nl\fotoalbum\klein.php on line 53


    Regel 49 t/m 59 zijn de volgende regels:

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

    $NextDir
    = "klein.php?dir=".$DirArray[$DirIndex + 1];
    $PrevDir = "klein.php?dir=".$DirArray[$DirIndex - 1];
    $NextDirNam = $DirArray[($DirIndex + 1)];
    $PrevDirNam = $DirArray[($DirIndex - 1)];
    if (
    $DirIndex == 0) {
    $PrevDir = "klein.php?dir=".$DirArray[(Count($DirArray) - 1)];
    $PrevDirNam = $DirArray[(Count($DirArray) - 1)];
    }
    if ((
    $DirIndex + 1) &gt; (Count($DirArray) - 1)) {
    $NextDir = "klein.php?dir=".$DirArray[0];
    $NextDirNam = $DirArray[0];

    ?>

    Hier moet het dus ergens fout gaan, ziet iemand misschien wat er mis gaat? Hieronder staat de volledige code van de pagina: (deze pagina van het fotoalbum leest een directory uit en maakt thumbnails)


    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
     
    <HTML> 
    <HEAD> 
    <TITLE>Fotoalbum</TITLE> 
    </HEAD> 
    <BODY TEXT='#000000' LINK='#000000' VLINK='#000000' ALINK='#000000'> 

    <TABLE WIDTH='800' BORDER='1' bordercolor='#FFFFFF' CELLSPACING='0' CELLPADDING='0' ALIGN='CENTER'> 
    <TR> 
    <TD bordercolor='#000000' bgcolor='#CCCCCC'><CENTER><STRONG>Foto overzicht: <? echo"$_GET[dir]"; ?></STRONG></CENTER></td> 
    </TR> 
    </TABLE> 

    <? 
    function getDirList ($dirName) { 
    static $result_array=array(); 
    $d = dir($dirName); 
    while($entry = $d->read()) { 
    if ($entry != "." && $entry != "..") { 
    if (is_dir($dirName."/".$entry)) { 
    array_push($result_array,$entry); 



    $d->close(); 
    sort($result_array); 
    return $result_array; 

    function getDirContents ($dirName) { 
    static $result_array=array(); 
    $d = dir($dirName); 
    while($entry = $d->read()) { 
    if ($entry != "." && $entry != "..") { 
    if (!is_dir($dirName."/".$entry)) { 
    str_replace(" ", "[spc]",(str_replace("&", "[amp]",$entry))); 
    array_push($result_array,$entry); 



    $d->close(); 
    sort($result_array); 
    return $result_array; 

    $DirArray = getDirList("./"); 
    for($i=0; $i < count($DirArray); $i++) { 
    if($_GET['dir']==$DirArray[$i]) { 
    $DirIndex = $i; 


    $NextDir = "klein.php?dir=".$DirArray[$DirIndex + 1]; 
    $PrevDir = "klein.php?dir=".$DirArray[$DirIndex - 1]; 
    $NextDirNam = $DirArray[($DirIndex + 1)]; 
    $PrevDirNam = $DirArray[($DirIndex - 1)]; 
    if ($DirIndex == 0) { 
    $PrevDir = "klein.php?dir=".$DirArray[(Count($DirArray) - 1)]; 
    $PrevDirNam = $DirArray[(Count($DirArray) - 1)]; 

    if (($DirIndex + 1) > (Count($DirArray) - 1)) { 
    $NextDir = "klein.php?dir=".$DirArray[0]; 
    $NextDirNam = $DirArray[0]; 

    ?> 

    <TABLE WIDTH='800' BORDER='0' CELLSPACING='0' CELLPADDING='0' ALIGN='CENTER'> 
    <tr> 
    <td width='33%' valign='top'><table width='100%' height='50' bordercolor='#FFFFFF' border='1' cellspacing='0' cellpadding='3'><tr><td style='CURSOR: hand' onMouseover="this.bgColor='#CCCCCC'" onMouseout="this.bgColor='#FFFFFF'" onclick="window.location='<?echo"$PrevDir";?>';" valign='top' bordercolor='#000000'><?echo str_replace(".", " ",$PrevDirNam);?></td></tr></table><td> 
    <td width='33%' valign='top'><table width='100%' height='50' bordercolor='#FFFFFF' border='1' cellspacing='0' cellpadding='3'><tr><td style='CURSOR: hand' onMouseover="this.bgColor='#CCCCCC'" onMouseout="this.bgColor='#FFFFFF'" onclick="window.location='index.php';" valign='top' align="center" bordercolor='#000000'>Terug naar het album overzicht</td></tr></table><td> 
    <td width='33%' valign='top'><table width='100%' height='50' bordercolor='#FFFFFF' border='1' cellspacing='0' cellpadding='3'><tr><td style='CURSOR: hand' onMouseover="this.bgColor='#CCCCCC'" onMouseout="this.bgColor='#FFFFFF'" onclick="window.location='<?echo"$NextDir";?>';" valign='top' bordercolor='#000000'><?echo str_replace(".", " ",$NextDirNam);?></td></tr></table><td> 
    </tr> 
    </TABLE> 

    <table width="800" border='0' cellspacing='0' cellpadding='0' align="center"><tr> 

    <? 
    $Column = 1; 
    $DirName = $DirArray[$DirIndex]; 
    $CurrentDir = "./".$DirName; 
    $DirContents = getDirContents($CurrentDir); 
    for($i=0; $i < count($DirContents); $i++) { 
    echo "<td height='140' width='20%'><table width='100%' height='100%' bordercolor='#FFFFFF' border='1' cellspacing='0' cellpadding='3'><tr><td height='100%' style='CURSOR: hand' onMouseover=\"this.bgColor='#CCCCCC'\" onMouseout=\"this.bgColor='#FFFFFF'\" onclick=\"window.location='groot.php?dir=".str_replace(" ", "[spc]",(str_replace("&", "[amp]",$DirName)))."&image=".str_replace(" ", "[spc]",(str_replace("&", "[amp]",$DirContents[$i])))."&index=".$i."';\" valign='top' align='center' bordercolor='#000000'><img vspace='10' width='125' border='0' src='".$CurrentDir."/".$DirContents[$i]."'></td></tr></table></td>"; 
    if($Column==5) { 
    $Column = 0;  
    echo "</tr>"; 

    $Column++; 

    if($Column != 0) { 
    for($i=$Column; $i<8;$i++){ 
    echo "<td>"; 


    echo "</table>"; 
    ?> 

    </BODY></HTML> 
    ?> 


    Het script werkt overigens gewoon goed, ik wilde alleen alle notices wegwerken.
    En deze krijg ik maar niet weg!
    SuperRembowoensdag 2 november 2005 @ 11:19
    Als $DirIndex = 0 is, dan krijg je hier $DirArray[$DirIndex - 1] die notice op. De array begint bij 0, dus -1 bestaat niet. Logisch.
    Pronkwoensdag 2 november 2005 @ 11:57
    quote:
    Op woensdag 2 november 2005 11:19 schreef SuperRembo het volgende:
    Als $DirIndex = 0 is, dan krijg je hier $DirArray[$DirIndex - 1] die notice op. De array begint bij 0, dus -1 bestaat niet. Logisch.
    Dit heb ik nagekeken en dit klopt natuurlijk helemaal, maar wat kan ik nu doen om te zorgen dat die 'notice' verdwijnt. Dus hoe kan ik zorgen het script van te voren weet dat het niet verder of terug moet tellen?
    JeRawoensdag 2 november 2005 @ 12:14
    quote:
    Op woensdag 2 november 2005 11:57 schreef Pronk het volgende:

    [..]

    Dit heb ik nagekeken en dit klopt natuurlijk helemaal, maar wat kan ik nu doen om te zorgen dat die 'notice' verdwijnt. Dus hoe kan ik zorgen het script van te voren weet dat het niet verder of terug moet tellen?
    Door bv dit te doen:
    1
    2
    3
    if ($DirIndex > 0) {
        $PrevDir = "klein.php?dir=".$DirArray[$DirIndex - 1];
    }

    Er zijn natuurlijk nettere oplossingen te bedenken omdat je dit meerdere keren moet doen, maar dit is één manier iig

    [ Bericht 3% gewijzigd door JeRa op 02-11-2005 12:24:07 ]
    Pronkwoensdag 2 november 2005 @ 12:37
    Nouja, misschien niet de netste manier maar mijn notices zijn weg! Thx!
    sh4dowwoensdag 2 november 2005 @ 19:59
    Om nog even terug te komen op m'n vraag.

    Ik heb een .txt bestand met gastenboek berichten van een oud script. Nu heb ik een nieuw gastenboek met MySQL. Nu wil ik de oude berichten uit het txt bestand overzetten naar de MySQL database.

    Hier een stukje van het data.txt bestand:

    1
    2
    <?php $Bericht[] = array('Patrick','iemand@hotmail.com',' ','Herveld','14-09-2004 21:46:28','Berichtje'); ?>
    <?php $Bericht[] = array('Thomas','iemand@hotmail.com',' ','Hoogkerk','14-09-2004 23:16:05','Berichtje'); ?>


    Hoe krijg ik deze arrays nu in de database? Ik ben al een paar dagen bezig geweest, maar ik kom er echt niet uit.
    ikke_ookwoensdag 2 november 2005 @ 20:15
    heb je een database met een table messages aangemaakt?

    Open het bestand data.txt.
    Zet onderaan het bestand de volgende code :
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    for($i=0;$i<count($Bericht);$i++){
       $query = "INSERT INTO messages (name,email,bla,woonplaats,date,message) 
                VALUES ('".$Bericht[$i][0]."','".$Bericht[$i][1]."','".$Bericht[$i][2]."',
                '".$Bericht[$i][3]."','".$Bericht[$i][4]."','".$Bericht[$i][5]."')";
       mysql_query($query)or die(mysql_error());
    }
    ?>

    Verander de bestandsnaam in data.php
    Zet hem in een directory waarvanuit je php bestanden kunt uitvoeren
    Roep data.php aan in je browser.

    Lijkt me niet zo moeilijk toch?

    [ Bericht 10% gewijzigd door ikke_ook op 02-11-2005 20:28:28 ]
    Swetseneggerwoensdag 2 november 2005 @ 20:20
    Eerst laadt je gewoon de txt gewoon in een text editor en met de replace functie strip je <?php $Bericht[] = array( en ); ?>
    Dan hou je dus
    1
    2
    'Patrick','iemand@hotmail.com',' ','Herveld','14-09-2004 21:46:28','Berichtje'
    'Thomas','iemand@hotmail.com',' ','Hoogkerk','14-09-2004 23:16:05','Berichtje'

    over.
    Ik ga er van uit dat elk bericht volledig op 1 regel staat? of staan er in 'berichtje' ook enters?

    Even van het eerste uitgaand:
    http://nl3.php.net/manual/nl/function.file.php

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
    $array
    =file(berichten.txt);

    //Hiermee zet hij je txt file in een array, waarbij elke regel een element is.

    foreach ($array as $line){
    //Hiermee stap je door de array heen

    $line=str_replace(''','',$line);
    //hiermee haal je de '
    weg

    $stuk
    =explode(',',$line);
    //hiermee verdeel je de regel in losse elementen

    $query="INSERT INTO database
    (id,naam,email,iets,woonplaats,datum,bericht)
    VALUES(0,'"
    .$stuk[0]."','".$stuk[1]."','".$stuk[2]."','".$stuk[3]."','".$stuk[4]."','".$stuk[5]."')";
    mysql_query($query);
    // naar database schrijven

    }
    ?>
    Swetseneggerwoensdag 2 november 2005 @ 20:21
    Die van ikke ook is een stuk slimmer
    sh4dowwoensdag 2 november 2005 @ 20:31
    Ja ik heb de DB al klaar, ik ga nu even proberen die data.txt te includen en dan het script van ikke_ook te draaien.

    Er zitten wel <BR> tags in het bestand
    ikke_ookwoensdag 2 november 2005 @ 20:36
    in welk bestand zitten <br>'s? en wat bedoel je met includen??Heb je mijn beschrijving wel gelezen?daar hoef je niks te includen hoor..
    sh4dowwoensdag 2 november 2005 @ 20:40
    in data.txt zitten wat <BR>'s in de 'berichtje' stukjes.

    ik heb data.txt gerenamed naar data.php en deze include ik nu in een nieuw php bestand met jou code.
    ikke_ookwoensdag 2 november 2005 @ 20:46
    Ok, dat kan ook idd, maar die <br> maakt niet uit hoor...die kun je toch ook gewoon in de database zetten?
    sh4dowwoensdag 2 november 2005 @ 20:51
    Ja het is al gelukt met jou script alles komt netjes in de DB te staan nu, die <br>'s geven idd geen probleem, maar Swetsenegger had het daarover.

    Heel erg bedankt!
    SuperRembowoensdag 2 november 2005 @ 20:53
    quote:
    Op woensdag 2 november 2005 12:37 schreef Pronk het volgende:
    Nouja, misschien niet de netste manier maar mijn notices zijn weg! Thx!
    Voor $NextDir moet je een zelfde soort controle inbouwen (voor als je aan het eind van de lijst bent).

    En als $PrevDir of $NextDir leeg zijn, dan moet je de links naar het volgende of vorige album niet tonen.

    (Waarom gebruik je javascript en window.location en niet gewoon een <a> link?)
    Lightwoensdag 2 november 2005 @ 20:55
    quote:
    Op woensdag 2 november 2005 20:51 schreef sh4dow het volgende:
    Ja het is al gelukt met jou script alles komt netjes in de DB te staan nu, die <br>'s geven idd geen probleem, maar Swetsenegger had het daarover.

    Heel erg bedankt!
    Swets had het over newlines. Dus niet <br> maar \n.
    sh4dowwoensdag 2 november 2005 @ 22:07
    Nog even een klein vraagje.

    Ik wil graag de datums van de oude berichten omzetten naar een UNIX timestamp. Ik weet dat dit met de functie mktime kan. Maar hoe split ik dit datum format zodat ik mktime kan toepassen:

    de datums zijn op deze manier opgeslagen: '14-09-2004 21:46:28'
    Swetseneggerwoensdag 2 november 2005 @ 22:12
    nooit een unix timestamp gebruiken, gebruik gewoon DATETIME van mysql. Kan je tenminste mee rekenen.

    DATETIME veld staat als 09-14-2004 21:46:28 dacht ik.
    kwestie van dus TOCH je datum eruit trekken, exploden en op de juiste manier weer aan elkaar plakken. Dat lijkt me de snelste oplossing
    Roonaanwoensdag 2 november 2005 @ 22:13
    gewoon strtotime gebruiken?
    ikke_ookwoensdag 2 november 2005 @ 22:15
    quote:
    Op woensdag 2 november 2005 22:12 schreef Swetsenegger het volgende:
    nooit een unix timestamp gebruiken, gebruik gewoon DATETIME van mysql. Kan je tenminste mee rekenen.

    DATETIME veld staat als 09-14-2004 21:46:28 dacht ik.
    kwestie van dus TOCH je datum eruit trekken, exploden en op de juiste manier weer aan elkaar plakken. Dat lijkt me de snelste oplossing
    Ik gebruik ook een datetime veld, maar die waarde haal ik er altijd uit als een UNIX_TIMESTAMP, anders kun je er niet mee rekenen Ik snap niet zo goed wat jij bedoelt.

    Hoe krijg jij een andere datum in dat datetime veld dan NOW() zonder een timestamp te gebruiken?
    Ik gebruik daar FROM_UNIXTIME(timestamp) voor.

    Combi van datetime en timestamp vind ik prima
    Swetseneggerwoensdag 2 november 2005 @ 22:20
    quote:
    Op woensdag 2 november 2005 22:15 schreef ikke_ook het volgende:

    [..]

    Ik gebruik ook een datetime veld, maar die waarde haal ik er altijd uit als een UNIX_TIMESTAMP, anders kun je er niet mee rekenen Ik snap niet zo goed wat jij bedoelt.
    Als je een dag eerder wilt hebben kan je beter gewoon DATESUB van mysql gebruiken.

    scheelt een hoop PHP gereken
    Lightwoensdag 2 november 2005 @ 22:21
    quote:
    Op woensdag 2 november 2005 22:13 schreef Ro�a� het volgende:
    gewoon strtotime gebruiken?
    Die gaat fout met data in het formaat dd-mm-jjjj, met jjjj-mm-dd werkt het wel. Het was ook mijn eerste idee, maar ik ging het nog even testen
    sh4dowwoensdag 2 november 2005 @ 22:23
    quote:
    Op woensdag 2 november 2005 22:21 schreef Light het volgende:

    Die gaat fout met data in het formaat dd-mm-jjjj, met jjjj-mm-dd werkt het wel. Het was ook mijn eerste idee, maar ik ging het nog even testen
    Inderdaad Dat werkt niet, zie: http://195.241.108.27/scripts/convert/time.php

    Iemand enig idee hoe ik dat kan omwisselen?
    ikke_ookwoensdag 2 november 2005 @ 22:24
    quote:
    Op woensdag 2 november 2005 22:20 schreef Swetsenegger het volgende:

    [..]

    Als je een dag eerder wilt hebben kan je beter gewoon DATESUB van mysql gebruiken.

    scheelt een hoop PHP gereken
    Maar als je nou een server in de VS hebt staan krijg je wel een verkeerde datum terug, en als je hem als timestamp uit de database haalt kun je er een formaat van maken naar eigen wens. Maar ik zal dat DATESUB eens bekijken want het klinkt wel handig
    Lightwoensdag 2 november 2005 @ 22:30
    quote:
    Op woensdag 2 november 2005 22:23 schreef sh4dow het volgende:

    [..]

    Inderdaad Dat werkt niet, zie: http://195.241.108.27/scripts/convert/time.php

    Iemand enig idee hoe ik dat kan omwisselen?
    1
    2
    3
    4
    <?php
    $datum
    = '14-09-2004 21:46:28';
    print
    preg_replace('/(\d{2})-(\d{2})-(\d{4})/', '\\3-\\2-\\1', $datum);
    ?>

    Dat levert 2004-09-14 21:46:28 op.
    SuperRembowoensdag 2 november 2005 @ 22:31
    Omwisselen van dd-mm-jjjj naar jjjj-mm-dd kan bijvoorbeeld met een regexp:

    1
    2
    $in = '14-09-2004 21:46:28';
    $out = preg_replace('/(\d+)-(\d+)-(\d+)/', '$3-$2-$1', $in);
    sh4dowwoensdag 2 november 2005 @ 22:32
    YAY het werkt:

    http://195.241.108.27/scripts/convert/time.php
    sh4dowwoensdag 2 november 2005 @ 22:39
    Allemaal bedankt voor jullie hulp!

    Dit is het uiteindelijke convert script geworden:

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

    include_once("config.php");
    include("gastenboek.php");

    for($i=0;$i<count($Bericht);$i++){

    $time = $Bericht[$i][4]; 
    $time = preg_replace('/(\d{2})-(\d{2})-(\d{4})/', '\\3-\\2-\\1', $time);
    $tijd = strtotime($time);

       $query = "INSERT INTO gastenboek_nieuw (naam, woonplaats, email, website, bericht, datum) 
                VALUES ('".$Bericht[$i][0]."','".$Bericht[$i][3]."','".$Bericht[$i][1]."',
                '".$Bericht[$i][2]."','".$Bericht[$i][5]."','".$tijd."')";
       mysql_query($query)or die(mysql_error());
    }

    ?>
    H4zedonderdag 3 november 2005 @ 21:02
    Ik heb een pagina "groepsleden". Hier staat een lijst met groepsleden. Wanneer er op een bepaald groepslid wordt geklikt ga je naar de pagina van dat groepslid. Hierna moet de user ook weer snel terug kunnen naar de vorige pagina (groepsleden dus). Nu kan ik natuurlijk gewoon een linkje "back" maken en dat het path er gewoon neer planten, maar ik meen me ook te herinneren dat er een hele simpele php code was hiervoor. Ik ben 'm alleen ff kwijt Heb erop gegoogled, maar kon 'm niet vinden

    Iemand?
    Chandlerdonderdag 3 november 2005 @ 21:16
    javascript:history.go(-1);

    maar das geen PHP maar wel heel erg simpel
    Swetseneggerdonderdag 3 november 2005 @ 22:32
    quote:
    Op woensdag 2 november 2005 22:24 schreef ikke_ook het volgende:

    [..]

    Maar als je nou een server in de VS hebt staan krijg je wel een verkeerde datum terug, en als je hem als timestamp uit de database haalt kun je er een formaat van maken naar eigen wens. Maar ik zal dat DATESUB eens bekijken want het klinkt wel handig
    Je kan met mysql de datum ook in elk gewenst formaat zettenmet de DATE_FORMAT functie

    1SELECT name, DATE_FORMAT(datum,'%d-%m-%Y %H:%i') AS dutch_date FROM tabel
    JeRavrijdag 4 november 2005 @ 10:34
    quote:
    Op donderdag 3 november 2005 22:32 schreef Swetsenegger het volgende:

    [..]

    Je kan met mysql de datum ook in elk gewenst formaat zettenmet de DATE_FORMAT functie
    [ code verwijderd ]
    Voor mij werken de timestamps alsnog veel sneller omdat MySQL daar een index op kan brouwen (dat gaat niet als je een veld met functies binnen MySQL gaat aanpassen) en ik in PHP vantevoren razendsnel kan bepalen wat een conditie voor de timestamp moet zijn a.d.h.v. de vele functies die daarvoor in PHP beschikbaar zijn ook heb ik dan makkelijker het verschil tussen zomer- en wintertijd onder controle (MySQL geeft met jouw veld twee uur per jaar dubbele waarden terug, bij timestamps niet).

    Bovendien ben ik van mening dat het visuele formaat van de tijd in de frontend moet worden bepaald (het liefst de template) in plaats van de backend die de data aanlevert.
    Swetseneggervrijdag 4 november 2005 @ 11:46
    quote:
    Op vrijdag 4 november 2005 10:34 schreef JeRa het volgende:

    [..]

    Voor mij werken de timestamps alsnog veel sneller omdat MySQL daar een index op kan brouwen (dat gaat niet als je een veld met functies binnen MySQL gaat aanpassen) en ik in PHP vantevoren razendsnel kan bepalen wat een conditie voor de timestamp moet zijn a.d.h.v. de vele functies die daarvoor in PHP beschikbaar zijn ook heb ik dan makkelijker het verschil tussen zomer- en wintertijd onder controle (MySQL geeft met jouw veld twee uur per jaar dubbele waarden terug, bij timestamps niet).

    Bovendien ben ik van mening dat het visuele formaat van de tijd in de frontend moet worden bepaald (het liefst de template) in plaats van de backend die de data aanlevert.
    Tja, diverse mysql goeroe's vertellen me juist weer NOOIT een timestamp te gebruiken, maar altijd datetime omdat sql sneller is dan php in omzetten.

    Het zal wel. Ik gebruik datetime omdat ik het eenvoudiger vind en er mee kan doen wat ik wil. Als jij de timestamp wil gebruiken. Be my guest
    H4zevrijdag 4 november 2005 @ 12:51
    quote:
    Op donderdag 3 november 2005 21:16 schreef Chandler het volgende:
    javascript:history.go(-1);

    maar das geen PHP maar wel heel erg simpel
    Hmm..liever geen javascript.

    Maar toch bedankt voor de reply
    P0rt0vrijdag 4 november 2005 @ 13:48
    Mag ik hier misschien hulp vragen mbt een php-script? Ik heb een thumbnail-creator gedownload voor mijn linux bak. Echter bij het aanspreken van ./<flename> gaat ie heel mooi thumbnails maken van jpg's.. maar de gifs slaat ie totaal over.

    Nou kom ik er gewoon niet meer uit.. dus als men er oren naar heeft om te helpen.. graag
    JeRavrijdag 4 november 2005 @ 13:54
    quote:
    Op vrijdag 4 november 2005 13:48 schreef P0rt0 het volgende:
    Mag ik hier misschien hulp vragen mbt een php-script? Ik heb een thumbnail-creator gedownload voor mijn linux bak. Echter bij het aanspreken van ./<flename> gaat ie heel mooi thumbnails maken van jpg's.. maar de gifs slaat ie totaal over.

    Nou kom ik er gewoon niet meer uit.. dus als men er oren naar heeft om te helpen.. graag
    Doe eens een phpinfo() in een PHP-script en kijk bij 'gd' of deze ook support heeft voor GIF-afbeeldingen. Mijn gok is namelijk van niet
    JeRavrijdag 4 november 2005 @ 13:56
    quote:
    Op donderdag 3 november 2005 21:02 schreef H4ze het volgende:
    Nu kan ik natuurlijk gewoon een linkje "back" maken en dat het path er gewoon neer planten, maar ik meen me ook te herinneren dat er een hele simpele php code was hiervoor. Ik ben 'm alleen ff kwijt
    Browsen is cilentside. PHP is serverside. Als je een pagina terugwilt, zul je dat toch echt door middel van een linkje moeten doen met ofwel het pad ofwel de javascript-code daarvoor gebruiken. Je moet niet alles met PHP willen doen, en aangezien je geen javascript wilt gebruiken zou ik toch echt voor het linkje met het adres gaan
    Swetseneggervrijdag 4 november 2005 @ 13:56
    quote:
    Op vrijdag 4 november 2005 13:54 schreef JeRa het volgende:

    [..]

    Doe eens een phpinfo() in een PHP-script en kijk bij 'gd' of deze ook support heeft voor GIF-afbeeldingen. Mijn gok is namelijk van niet
    Aanvullend, tussen GD versie 1.6 en 2.nogwat is er geen gif support geweest.
    Op php.net staat welke versies gif support hebben.
    JeRavrijdag 4 november 2005 @ 13:59
    quote:
    Op vrijdag 4 november 2005 13:56 schreef Swetsenegger het volgende:

    [..]

    Aanvullend, tussen GD versie 1.6 en 2.nogwat is er geen gif support geweest.
    Op php.net staat welke versies gif support hebben.
    Nog meer aanvullend ( ), lange tijd hebben veel hosters geen GIF-support aangezet vanwege patenten en licenties en al dat soort meuk. Sinds een tijdje geldt dat niet meer, maar het zou goed kunnen dat sommige hosters ervoor gekozen hebben dit nog uit te laten staan (of het onbewust nog niet aan hebben gezet).
    Roonaanvrijdag 4 november 2005 @ 14:24
    |
    |
    V
    P0rt0vrijdag 4 november 2005 @ 15:27
    Om ff verder op in te gaan

    Heb ff stukje uit mijn phpnfo gepaste hier

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    gd
    GD Support  enabled  
    GD Version  bundled (2.0.28 compatible)  
    FreeType Support  enabled  
    FreeType Linkage  with freetype  
    FreeType Version  2.1.10  
    GIF Read Support  enabled  
    GIF Create Support  enabled  
    JPG Support  enabled  
    PNG Support  enabled  
    WBMP Support  enabled  
    XPM Support  enabled  
    XBM Support  enabled  



    Ik moet eigenlijk wel mijn verhaal compleet maken;

    Ik heb eergisteren een heel mooi scriptje geleeched (genethumb.sh) en die maakt alles behalve gif. (bmp doe ik niet aan, dus nooit getest). Echter heb ik het niet bij neer laten zitten, en heb ik toen op hotscripts gezocht naar een dergelijk programma.

    Die doet het wel met Gif etc.. alleen is die zo bout gescripts, dat ik perse mijn php.ini op 100mB moest zetten (mem_limit), want anders wou hij bij de 8 mb buffer geen thumbnails creeeren.

    Wat ik graag wil weten, is waarin het script die ik persoonlijk vet mooi vind, word geregeld wat wel/niet word gebruikt om thumbs te creeeren.. en ook; Waarom hij geen Gif's pakt.

    Hierbij de code van het betreffende script

    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
    #!/bin/sh
    # genethumb.sh - Génération de thumbnails mortels de ta mère
    # (c)  3 Jan 1998: version 0.0.4 by Samuel Hocevar <sam@via.ecp.fr>
    #     22 May 2000: version 0.0.5 by Samuel Hocevar <sam@via.ecp.fr>
    #     15 Nov 2000: version 0.0.6 by Samuel Hocevar <sam@zoy.org>
    #                    with code from Sven Hartge <hartge@ds9.argh.org>
    #     13 Dec 2000: version 0.0.7 by Samuel Hocevar <sam@zoy.org>
    #                    now compatible with old ImageMagick versions
    #                    added --rows option
    #     27 Apr 2003: version 0.0.8 by Sam Hocevar <sam@zoy.org>
    #                    removed all bashisms
    #                    now compatible with all ImageMagick versions
    #
    # This program is free software; you can redistribute it and/or modify
    # it under the terms of the GNU General Public License as published by
    # the Free Software Foundation; either version 2 of the License, or
    # (at your option) any later version.
    #
    # This program is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    # GNU General Public License for more details.
    #
    # You should have received a copy of the GNU General Public License
    # along with this program; if not, write to the Free Software
    # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

    version=0.0.8
    THFILE=index.html
    THDIR=.xvpics
    THEXT=png      # change this to jpeg or whatever you want
    THWIDTH=120    # thumbnail width
    THHEIGHT=90    # thumbnail height
    THCOLS=5       # change to set table width -- 0 for no tables

    if [ "$1" != "" ]
    then
      THCOLS=$1
    fi

    echo "genethumb.sh v$version -- report bugs to Samuel Hocevar <sam@zoy.org>"
    echo "usage: genethumb.sh [number of columns]"

    if [ -w $THFILE ]
    then
      echo "saving $THFILE to $THFILE~"
      mv -f $THFILE $THFILE~
    fi

    if [ ! -d $THDIR ]
    then
      echo "creating thumbnail directory $THDIR"
      mkdir $THDIR
    fi

    cat > $THFILE << EOF
    <!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">

    <head>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       <meta name="GENERATOR" content="genethumb.sh version $version" />
       <meta name="Description" content="thumbnails of $PWD" />
       <title>Index of $PWD</title>
       <style type="text/css">
          img { border: 1pt; }
          body { background: white; color: black;
                 font-family: sans-serif, Arial, Helvetica;
                 font-size: 9pt; margin: 5pt; }
          h2 { color: black; background: white; font-size: 14pt; }
          a { text-decoration: none; }
          td.center { text-align: center; }
          td.nowrap { white-space: nowrap; }
          blockquote.center { text-align: center; }
       </style>
    </head>

    <body>

    <table border="0" width="100%"><tr><td>
    <h2>Index of $PWD</h2></td>
    <td align="right">generated by <a
     href="http://sam.zoy.org/projects/unix/genethumb.html">genethumb.sh</a>
     version $version </td></tr></table>

    <hr />

    <table cellspacing="5" border="0">
      <tr>
    EOF

    compteur=0
    created=0
    find . -type f -maxdepth 1 | sed 's,^\./,,' | while read file
    do
      # on vérifie que l'image n'est pas déjà un thumbnail ou une page html, et a
      # une extension quelconque (à améliorer un peu)
      case "$file" in

        *~|*.html|*.htm)
          echo "* skipping $file"
          ;;

        *)
          failed=0
          newfile="$THDIR/tn_$file.$THEXT"
          echo -n "* $file: "

          if [ -r "$newfile" ]
          then
            echo "thumbnail already exists."
          else
            convert -geometry ${THWIDTH}x${THHEIGHT} "$file" "$newfile" >/dev/null 2>&1
            if [ ! -r "$newfile" ]
            then
              echo "failed creating."
         failed=1
            else
              echo "done."
            fi
          fi

          if [ "$failed" = "0" ]
          then

            created="`expr 0$created + 1`"
            if [ -e "$newfile.info" ]
            then
              read filesize coordinates oldcoords compat < "$newfile.info"
            fi

            if expr "$version" ">" "$compat" >/dev/null 2>&1
            then
              read oldcoords filesize << EOF
    `identify -format '%wx%h %b' "$file" | head -1`
    EOF
              coordinates=`identify -format '%wx%h' "$newfile" | head -1`
              rm -f "$newfile.info"
              echo $filesize $coordinates $oldcoords $version > "$newfile.info"
              echo "  $newfile.info written."
            fi

            j="`echo $file | cut -b1-20`"
            if [ "$file" != "$j" ]
            then
              j="`echo $file | cut -b1-17`..."
            fi

            cat >> $THFILE << EOF
          <td align="center">
            <a href="$file"><img alt="$file ($oldcoords)"
            width="`echo $coordinates | cut -f1 -dx`"
            height="`echo $coordinates | cut -f2 -dx`"
            src="$newfile" /><br />$j<br />$oldcoords ($filesize)</a>
          </td>
    EOF
            compteur="`expr 0$compteur + 1`"
            if [ x"$compteur" = "x$THCOLS" ]
            then
              echo "  </tr><tr>" >> $THFILE
              compteur=0
            fi
          fi
      esac
    done

    echo "done."

    cat >> $THFILE << EOF
      </tr>
    </table>

    </body>
    </html>
    EOF
    Jimmyvrijdag 4 november 2005 @ 16:18
    quote:
    Op vrijdag 4 november 2005 15:27 schreef P0rt0 het volgende:

    Hierbij de code van het betreffende script
    [ code verwijderd ]
    Zo te zien gebruikt dat script helemaal geen GD, maar ImageMagick, dan zul je dus moeten checken of de ImageMagick versie die je hebt wel gif ondersteuning biedt.
    P0rt0vrijdag 4 november 2005 @ 16:52
    EN hoe check ik dat?

    ik weet wel dat "convert plaatje.gif plaat2.jpg" werkt.
    Lightvrijdag 4 november 2005 @ 19:25
    quote:
    Op vrijdag 4 november 2005 14:24 schreef Roonaan het volgende:
    |
    |
    V
    Gefeliciteerd
    Roonaanvrijdag 4 november 2005 @ 21:45
    tnx
    ikke_ookvrijdag 4 november 2005 @ 21:48
    quote:
    Op vrijdag 4 november 2005 15:27 schreef P0rt0 het volgende:


    Hierbij de code van het betreffende script
    [ code verwijderd ]
    Dit is geen php... dus ik vraag me af wat je wil doen met je phpinfo()?

    Of zie ik iets over het hoofd?
    SkaterSamzaterdag 5 november 2005 @ 13:59
    Ik had een vraag, en misschien heb ik het antwoord al, maar ik wilde graag weten hoe jullie hier mee omgaan.

    Ik heb een database met 3 tabellen, laat ik ze 1 2 en 3 noemen. Als ik dan een bepaald formulier aanroep waarin informatie voor alle 3 de tabellen staan, dan wil ik dus al die informatie naar hun respectievelijke tabel uploaden (invoegen). Nu gebruik ik altijd een code waarbij stap voor stap de data in de tabellen wordt ingevoegd. Dus eerst 1, dan 2, dan 3. Mijn vraag is nu hoe dat ik kan voorkomen dat ze worden ingevoegd wanneer 1 van de 3 een error geeft, dus dan heb ik bijvoorbeeld 1 en 2 al gedaan, maar is er bij de derde een error. (Ik ga ook even uit van het gebruik van een MyISAM tabel structuur) Hoe kan ik er voor zorgen dat ze alledrie tegelijkertijd worden ingevoegd, maar als een fout geeft een error geven.

    Ik weet dat het kan met InnoDB structuur, met ROLLBACK, dat heb ik ook al geprobeerd, maar ik wilde graag weten hoe jullie hier tegen aan kijken. wat het beste is, als je meerdere tabellen wilt invoegen.
    SuperRembozaterdag 5 november 2005 @ 14:25
    Een transaction gebruiken is de enige nette en betrouwbare oplossing.
    Misschien dat je achteraf zou kunnen controleren of het inserten in alle 3 de tabellen is geslaagd en als dat niet het geval is alle rows deleten die wel ge-insert zijn. Maar dat blijft geknoei.
    Chandlerzondag 6 november 2005 @ 20:27
    Ik ben bezig met een class voor page pointers oftewel << < 1 2 3 4 5 6 > >> etc maar dan alles geheel aanpasbaar. Echter stuit ik op wat problemen, soms heb ik pointers die kleiner zijn dan 1 neemt af en toe meer pages dan maxpages en tevens stopt ie soms op de verkeerde plaats etc.

    Wie wil eens een kijkje nemen om in te zien waar het fout gaat/

    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
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    <?

    session_start();
    // << < 1 2 3 4 5 6 7 8 8 10 > >>


    class pointer
    {
        function setup($arr)
        {
            // arr => ("<<", "<", ">", ">")
            
            $this->text->_toStart     = $arr[0];
            $this->text->_toStartBack = $arr[1];
            $this->text->_toEnd       = $arr[2];
            $this->text->_toEndBack   = $arr[3];
        }
        
        function setupDisplay($type = NULL, $number)
        {
            switch ($type)
            {
                case "number":
                    // 1 2 3 4 5 6 7 8
                    $this->config->_displayType = 1;
                break;
                
                case "next":
                    // < >
                    $this->config->_displayType = 2;
                    
                break;
                
                case "nextend":

                    if ($number == 0)
                    {
                        // << < > >>
                        $this->config->_displayType = 3;
                    }
                    else
                    {
                        // << < (2) > >>
                        $this->config->_displayType = 4;
                    }
                break;
                
                default;
                    // << < 1 2 3 4 5 6 7 > >>
                    $this->config->_displayType = 0;
                break;
            }
        }
        
        function setupText($font, $color, $selectedColor)
        {
            $this->config->_displayFont          = $font;
            $this->config->_displayColor         = $color;
            $this->config->_displaySelectedColor = $selectedColor;
        }
        
        function setupPage($page, $idname, $extra)
        {
            $this->config->_pageUrl   = $page;
            $this->config->_pageID    = $idname;
            $this->config->_pageExtra = $extra;
        }
        
        function setValues($from, $counter, $total, $maxPages)
        {
            $this->config->_pageCurrentID = $from;
            $this->config->_pageTotal     = ceil ($total / $counter)+1;
            $this->config->_pageMax       = $maxPages;
        }

        function getText()
        {
            $txt = "";

            if ($this->config->_pageExtra == "")
            {
                $linkAdd = "";
            }
            else
            {
                $linkAdd = "&" . $this->config->_pageExtra;
            }

            // first <<
            if ($this->config->_displayType == 3 OR $this->config->_displayType == 4)
            {
                // current page [1 (2) 3 4 5 6]
                if ($this->config->_pageCurrentID > 2)
                {
                    $txt .= '<a href="' .
                            $this->config->_pageUrl .
                            "?" . $this->config->_pageExtra . '">' . $this->text->_toStart . '</a> ';
                }
            }
            
            // < (previous)
            if ($this->config->_displayType == 2 OR $this->config->_displayType == 3 OR $this->config->_displayType == 4)
            {
                // current page [ 1 (2) 3 4 5
                if ($this->config->_pageCurrentID > 1)
                {
                    $txt .= '<a href="' .
                            $this->config->_pageUrl . "?" .
                            $this->config->_pageID . "=" .
                            ($this->config->_pageCurrentID -1) .
                            $linkAdd . '">' . $this->text->_toStartBack . '</a> ';

                }
            }
            
            
            //*
            if ($this->config->_pageTotal > $this->config->_pageMax)
            {
                $start = 1;
                $end   = $this->config->_pageTotal;
            }
            else
            {
                $mid = $this->config->_pageMax / 2;
                
                if ($this->config->_pageCurrentID - $mid > 1)
                {
                    if ($this->config->_pageCurrentID + $mid > $this->config->_pageTotal)
                    {
                        $start = $this->config->_pageTotal - $this->config->_pageMax;
                        $end   = $this->config->_pageTotal;
                    }
                    else
                    {
                        $start = $this->config->_pageCurrentID - $mid;
                        $end   = $this->config->_pageCurrentID + $mid;
                    }
                }
                else
                {
                    $start = 1;
                    $end   = $this->config->_pageMax;
                }
            }
            
            for ($x = $start; $x < $end; $x++)
            {
                if ($x == $this->config->_pageCurrentID)
                {
                    // bold text in case of current
                    $txt .= '<a href="' .
                            $this->config->_pageUrl . "?" .
                            $this->config->_pageID . "=" . $x .
                            $linkAdd . '"><strong>' . $x . '</strong></a> ';
                }
                else
                {
                    $txt .= '<a href="' .
                            $this->config->_pageUrl . "?" .
                            $this->config->_pageID . "=" . $x .
                            $linkAdd . '">' . $x . '</a> ';
                }
            }

            // > (next)
            if ($this->config->_displayType == 2 OR $this->config->_displayType == 3 OR $this->config->_displayType == 4)
            {
                // current page [ 1 2 3 4 (5) 6]
                if (($this->config->_pageCurrentID + 2) <= $this->config->_pageTotal)
                {
                    $txt .= '<a href="' .
                            $this->config->_pageUrl . "?" .
                            $this->config->_pageID . "=" .
                            ($this->config->_pageCurrentID +1) .
                            $linkAdd . '">' . $this->text->_toEnd . '</a> ';

                }
            }

            // last >>
            if ($this->config->_displayType == 3 OR $this->config->_displayType == 4)
            {
                // current page [1 2 3 (4) 5 6]
                if (($this->config->_pageCurrentID +3) <= $this->config->_pageTotal)
                {
                    $txt .= '<a href="' .
                            $this->config->_pageUrl . "?" .
                            $this->config->_pageID . "=" .
                            $this->config->_pageTotal .
                            $linkAdd . '">' .
                            $this->text->_toEndBack . '</a> ';
                }
            }

            return $txt;

        }
    }

    if ($_SERVER['REQUEST_METHOD'] == "POST")
    {
        $_SESSION['total']   = $_POST['total'];
        $_SESSION['counter'] = $_POST['counter'];
        $_SESSION['pages']   = $_POST['pages'];

        header("Location: pages.php");
        exit();
    }

    if (isSet($_SESSION['total']))
    {
        $total   = $_SESSION['total'];
        $counter = $_SESSION['counter'];
        $pages   = $_SESSION['pages'];
    ?>
    <form method="post">
    <table>
    <tr>
    <td>Total?</td><td><input type="text" name="total" value="<?=$total;?>"></td>
    <td>Counter</td><td><input type="text" name="counter" value="<?=$counter;?>"></td>
    <td>Max pages</td><td><input type="text" name="pages" value="<?=$pages;?>"></td>
    <td><input type="submit" name="add" value="Verander"></td>
    </tr>
    </table>
    </form>
    <?
    }
    else
    {
        $_SESSION['total']   = 99;
        $_SESSION['counter'] = 10;
        $_SESSION['pages']   = 10;
    ?>
    <form method="post">
    <table>
    <tr>
    <td>Total?</td><td><input type="text" name="total" value="<?=$_SESSION['total'];?>"></td>
    <td>Counter</td><td><input type="text" name="counter" value="<?=$_SESSION['counter'];?>"></td>
    <td>Max pages</td><td><input type="text" name="pages" value="<?=$_SESSION['pages'];?>"></td>
    <td><input type="submit" name="add" value="Verander"></td>
    </tr>
    </table>
    </form>
    <?
    }


    $blaat  = new pointer();
    $blaat->setup(array("<<", "<", ">", ">>"));
    $blaat->setupDisplay("numbers", 0);
    $blaat->setupText("arial", "blue", "darkblue");
    $blaat->setupPage("pages.php", "from", "test=23&true=false");
    $blaat->setValues($_GET['from'], $_SESSION['counter'], $_SESSION['total'], $_SESSION['pages']);

    echo $blaat->getText();

    echo '<hr>';

    $blaat1  = new pointer();
    $blaat1->setup(array("<<", "<", ">", ">>"));
    $blaat1->setupDisplay("next", 0);
    $blaat1->setupText("arial", "blue", "darkblue");
    $blaat1->setupPage("pages.php", "from", "test=23&true=false");
    $blaat1->setValues($_GET['from'], $_SESSION['counter'], $_SESSION['total'], $_SESSION['pages']);

    echo $blaat1->getText();

    echo '<hr>';

    $blaat2  = new pointer();
    $blaat2->setup(array("First", "Previous", "Next", "Last"));
    $blaat2->setupDisplay("nextend", 0);
    $blaat2->setupText("arial", "blue", "darkblue");
    $blaat2->setupPage("pages.php", "from", "test=23&true=false");
    $blaat2->setValues($_GET['from'], $_SESSION['counter'], $_SESSION['total'], $_SESSION['pages']);

    echo $blaat2->getText();

    echo '<hr>';

    $blaat3  = new pointer();
    $blaat3->setup(array("First", "Previous", "Next", "Last"));
    $blaat3->setupDisplay("nextend", 0);
    $blaat3->setupText("arial", "blue", "darkblue");
    $blaat3->setupPage("pages.php", "from", "test=23&true=false");
    $blaat3->setValues($_GET['from'], $_SESSION['counter'], $_SESSION['total'], $_SESSION['pages']);

    echo $blaat3->getText();

    echo '<hr>';
    ?>
    Roonaanmaandag 7 november 2005 @ 08:29
    Je gebruikt properties die je niet gedefinieerd hebt
    Chandlermaandag 7 november 2005 @ 10:56
    Hoe bedoel je roonaan? ik zie um namelijk niet maar dat zal wel komen omdat ik er de heletijd in zit?
    Chandlermaandag 7 november 2005 @ 11:03
    Ik had alleen $_GET['from'] niet gedefenieerd; maar nu heb ik dat even opgelost en heb volgens mij de fout ook al gevonden ipv > heb ik bij de 'pages 12345678etc' nu < gebruikt.

    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
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    <?

    session_start();

    error_reporting(E_ALL);
    // << < 1 2 3 4 5 6 7 8 8 10 > >>


    class pointer
    {
        function setup($arr)
        {
            // arr => ("<<", "<", ">", ">")
            
            $this->text->_toStart     = $arr[0];
            $this->text->_toStartBack = $arr[1];
            $this->text->_toEnd       = $arr[2];
            $this->text->_toEndBack   = $arr[3];
        }
        
        function setupDisplay($type = NULL, $number)
        {
            switch ($type)
            {
                case "number":
                    // 1 2 3 4 5 6 7 8
                    $this->config->_displayType = 1;
                break;
                
                case "next":
                    // < >
                    $this->config->_displayType = 2;
                    
                break;
                
                case "nextend":

                    if ($number == 0)
                    {
                        // << < > >>
                        $this->config->_displayType = 3;
                    }
                    else
                    {
                        // << < (2) > >>
                        $this->config->_displayType = 4;
                    }
                break;
                
                default;
                    // << < 1 2 3 4 5 6 7 > >>
                    $this->config->_displayType = 0;
                break;
            }
        }
        
        function setupText($font, $color, $selectedColor)
        {
            $this->config->_displayFont          = $font;
            $this->config->_displayColor         = $color;
            $this->config->_displaySelectedColor = $selectedColor;
        }
        
        function setupPage($page, $idname, $extra)
        {
            $this->config->_pageUrl   = $page;
            $this->config->_pageID    = $idname;
            $this->config->_pageExtra = $extra;
        }
        
        function setValues($from, $counter, $total, $maxPages)
        {
            $this->config->_pageCurrentID = $from;
            $this->config->_pageTotal     = ceil ($total / $counter)+1;
            $this->config->_pageMax       = $maxPages;
        }

        function getText()
        {
            $txt = "";

            if ($this->config->_pageExtra == "")
            {
                $linkAdd = "";
            }
            else
            {
                $linkAdd = "&" . $this->config->_pageExtra;
            }

            // first <<
            if ($this->config->_displayType == 3 OR $this->config->_displayType == 4)
            {
                // current page [1 (2) 3 4 5 6]
                if ($this->config->_pageCurrentID > 2)
                {
                    $txt .= '<a href="' .
                            $this->config->_pageUrl .
                            "?" . $this->config->_pageExtra . '">' . $this->text->_toStart . '</a> ';
                }
            }
            
            // < (previous)
            if ($this->config->_displayType == 2 OR $this->config->_displayType == 3 OR $this->config->_displayType == 4)
            {
                // current page [ 1 (2) 3 4 5
                if ($this->config->_pageCurrentID > 1)
                {
                    $txt .= '<a href="' .
                            $this->config->_pageUrl . "?" .
                            $this->config->_pageID . "=" .
                            ($this->config->_pageCurrentID -1) .
                            $linkAdd . '">' . $this->text->_toStartBack . '</a> ';

                }
            }
            
            
            //*
            if ($this->config->_pageTotal < $this->config->_pageMax)
            {
                $start = 1;
                $end   = $this->config->_pageTotal;
            }
            else
            {
                $mid = $this->config->_pageMax / 2;
                
                if ($this->config->_pageCurrentID - $mid > 1)
                {
                    if ($this->config->_pageCurrentID + $mid > $this->config->_pageTotal)
                    {
                        $start = $this->config->_pageTotal - $this->config->_pageMax;
                        $end   = $this->config->_pageTotal;
                    }
                    else
                    {
                        $start = $this->config->_pageCurrentID - $mid;
                        $end   = $this->config->_pageCurrentID + $mid;
                    }
                }
                else
                {
                    $start = 1;
                    $end   = $this->config->_pageMax;
                }
            }
            
            for ($x = $start; $x < $end; $x++)
            {
                if ($x == $this->config->_pageCurrentID)
                {
                    // bold text in case of current
                    $txt .= '<a href="' .
                            $this->config->_pageUrl . "?" .
                            $this->config->_pageID . "=" . $x .
                            $linkAdd . '"><strong>' . $x . '</strong></a> ';
                }
                else
                {
                    $txt .= '<a href="' .
                            $this->config->_pageUrl . "?" .
                            $this->config->_pageID . "=" . $x .
                            $linkAdd . '">' . $x . '</a> ';
                }
            }

            // > (next)
            if ($this->config->_displayType == 2 OR $this->config->_displayType == 3 OR $this->config->_displayType == 4)
            {
                // current page [ 1 2 3 4 (5) 6]
                if (($this->config->_pageCurrentID + 2) <= $this->config->_pageTotal)
                {
                    $txt .= '<a href="' .
                            $this->config->_pageUrl . "?" .
                            $this->config->_pageID . "=" .
                            ($this->config->_pageCurrentID +1) .
                            $linkAdd . '">' . $this->text->_toEnd . '</a> ';

                }
            }

            // last >>
            if ($this->config->_displayType == 3 OR $this->config->_displayType == 4)
            {
                // current page [1 2 3 (4) 5 6]
                if (($this->config->_pageCurrentID +3) <= $this->config->_pageTotal)
                {
                    $txt .= '<a href="' .
                            $this->config->_pageUrl . "?" .
                            $this->config->_pageID . "=" .
                            $this->config->_pageTotal .
                            $linkAdd . '">' .
                            $this->text->_toEndBack . '</a> ';
                }
            }

            return $txt;

        }
    }

    if (isSet($_GET['from']))
    {
        $from = $_GET['from'];
    }
    else
    {
        $from = 0;
    }

    if ($_SERVER['REQUEST_METHOD'] == "POST")
    {
        $_SESSION['total']   = $_POST['total'];
        $_SESSION['counter'] = $_POST['counter'];
        $_SESSION['pages']   = $_POST['pages'];

        header("Location: pages.php");
        exit();
    }

    if (isSet($_SESSION['total']))
    {
        $total   = $_SESSION['total'];
        $counter = $_SESSION['counter'];
        $pages   = $_SESSION['pages'];
    ?>
    <form method="post">
    <table>
    <tr>
    <td>Total?</td><td><input type="text" name="total" value="<?=$total;?>"></td>
    <td>Counter</td><td><input type="text" name="counter" value="<?=$counter;?>"></td>
    <td>Max pages</td><td><input type="text" name="pages" value="<?=$pages;?>"></td>
    <td><input type="submit" name="add" value="Verander"></td>
    </tr>
    </table>
    </form>
    <?
    }
    else
    {
        $_SESSION['total']   = 99;
        $_SESSION['counter'] = 10;
        $_SESSION['pages']   = 10;
    ?>
    <form method="post">
    <table>
    <tr>
    <td>Total?</td><td><input type="text" name="total" value="<?=$_SESSION['total'];?>"></td>
    <td>Counter</td><td><input type="text" name="counter" value="<?=$_SESSION['counter'];?>"></td>
    <td>Max pages</td><td><input type="text" name="pages" value="<?=$_SESSION['pages'];?>"></td>
    <td><input type="submit" name="add" value="Verander"></td>
    </tr>
    </table>
    </form>
    <?
    }


    $blaat  = new pointer();
    $blaat->setup(array("<<", "<", ">", ">>"));
    $blaat->setupDisplay("numbers", 0);
    $blaat->setupText("arial", "blue", "darkblue");
    $blaat->setupPage("pages.php", "from", "test=23&true=false");
    $blaat->setValues($from, $_SESSION['counter'], $_SESSION['total'], $_SESSION['pages']);

    echo $blaat->getText();

    echo '<hr>';

    $blaat1  = new pointer();
    $blaat1->setup(array("<<", "<", ">", ">>"));
    $blaat1->setupDisplay("next", 0);
    $blaat1->setupText("arial", "blue", "darkblue");
    $blaat1->setupPage("pages.php", "from", "test=23&true=false");
    $blaat1->setValues($from, $_SESSION['counter'], $_SESSION['total'], $_SESSION['pages']);

    echo $blaat1->getText();

    echo '<hr>';

    $blaat2  = new pointer();
    $blaat2->setup(array("First", "Previous", "Next", "Last"));
    $blaat2->setupDisplay("nextend", 0);
    $blaat2->setupText("arial", "blue", "darkblue");
    $blaat2->setupPage("pages.php", "from", "test=23&true=false");
    $blaat2->setValues($from, $_SESSION['counter'], $_SESSION['total'], $_SESSION['pages']);

    echo $blaat2->getText();

    echo '<hr>';

    $blaat3  = new pointer();
    $blaat3->setup(array("First", "Previous", "Next", "Last"));
    $blaat3->setupDisplay("nextend", 0);
    $blaat3->setupText("arial", "blue", "darkblue");
    $blaat3->setupPage("pages.php", "from", "test=23&true=false");
    $blaat3->setValues($from, $_SESSION['counter'], $_SESSION['total'], $_SESSION['pages']);

    echo $blaat3->getText();

    echo '<hr>';
    ?>
    Roonaanmaandag 7 november 2005 @ 11:35
    $this->text, $this->config, etc.
    Darkomenmaandag 7 november 2005 @ 13:34
    Hoe zou ik kunnen uitrekenen hoelang het is geleden sinds een bepaalde datum?
    is daar een funcite voor?
    Roonaanmaandag 7 november 2005 @ 14:22
    omzetten naar timestamps en van elkaar aftrekken?
    Darkomenmaandag 7 november 2005 @ 14:29
    Dat kan ik nog ;-)
    maar hoe maak ik daar dan weer dagen van?

    Ik heb dus gewoon een couter getelt sinds 05-11-2005 en wil weten hoeveel hits per dag.
    ikke_ookmaandag 7 november 2005 @ 14:31
    Weet je wat een timestamp voorstelt?
    Dat zijn het aantal seconden sinds 1 januari 1970.
    Dus als je die 2 timestamps van elkaar aftrekt heb je het aantal seconden tussen die 2 data.
    Dus als je dat getal deelt door 86400 (60sec*60min*24uur) dan heb je het aantal dagen tussen die 2 data
    Darkomenmaandag 7 november 2005 @ 14:33
    Dat wist ik idd niet, maar dat vergeet ik nu iig niet meer
    Maar ik kom uit op 730 dagen terwijl dat 2 zou moeten zijn.
    Dus ik loop te prutsen

    [ Bericht 33% gewijzigd door Darkomen op 07-11-2005 14:40:28 ]
    Darkomenmaandag 7 november 2005 @ 14:54
    Verkeerde datu, notificatie
    Darkomendinsdag 8 november 2005 @ 16:17
    Hoe kan je uitzoeken met welke zoektermen je pagina word gevonden zoals bijvoorbeeld netstat ook doet?
    ikke_ookdinsdag 8 november 2005 @ 16:44
    quote:
    Op dinsdag 8 november 2005 16:17 schreef Darkomen het volgende:
    Hoe kan je uitzoeken met welke zoektermen je pagina word gevonden zoals bijvoorbeeld netstat ook doet?
    Ik denk mbv van $_SERVER['HTTP_REFERER']
    Stel dat onderstaande url in die variabele staat, bedenk jij dan maar eens waar ik op gezocht heb
    1http://www.google.nl/search?hl=nl&q=darkomen&btnG=Google+zoeken&meta=


    Ik neem aan dat je bedoelt met welke zoektermen mensen op jouw site uit zijn gekomen?
    Darkomendinsdag 8 november 2005 @ 17:02
    Dat is ook het enige wat ik kon bedenken.
    Swetseneggerwoensdag 9 november 2005 @ 21:49
    Kan ik in een javascript een php array zetten?

    bv
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script type="text/javascript">
    document.write('
    <?         
    if ($menu[$i]==1){ 
            $menu[$i]=0;
            }else{
            $menu[$i]=1;
    }
    ?>
    ')</script>
    SuperRembowoensdag 9 november 2005 @ 22:04
    Het kan wel, maar niet op die manier. Zo wel:

    1
    2
    3
    4
    echo '<script type="text/javascript">
    echo 'var foo = ["' . implode('","', $foo) . '"]''
    echo 'alert(foo.length);
    echo '</script>
    Swetseneggerwoensdag 9 november 2005 @ 22:12
    quote:
    Op woensdag 9 november 2005 22:04 schreef SuperRembo het volgende:
    Het kan wel, maar niet op die manier. Zo wel:
    [ code verwijderd ]
    Ja dat snap ik dat dat werkt .
    En uiteraard werkt mijn code niet, want client side gaat geen vars in mijn serverside scripting zetten.

    Ok, even de probleem omschrijving dan.
    Ik heb een boomstructuur menu. Prachtige hierarchische database gebouwd. Menu is dus helemaal vanuit CMS zelf aan te maken.

    Het menu bestaat uit maximaal 3 levels bv:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    hoofditem
             subitem
                    subsubitem
                    subsubitem
             subitem
    hoofditem
             subitem
                    subsubitem
             subitem
                   subsubitem
                   subsubitem


    Terwille van de overzichtelijkheid zijn de subsubitems ingeklapt, welke door een javascript zichtbaar worden wanneer je op het plusje klikt naast een subitem welke childeren heeft.

    (kijk maar op pandora.edoorebeek.nl)

    Maar... het menu wordt uiteraard op elke page geinclude. De plusjes welke ik op de index page heb uitgeklapt. Staan weer ingeklapt op de eerst volgende andere pagina welke ik laad.
    Ik wil dus simpelweg elke keer als ik op de link klik welke via javascript het menu uitklapt, dat ik een array aanvul, met welk menu item open is.

    Die array wil ik op de volgende page weer uitlezen en direkt die menuitems openen.

    Hopenlijk is mijn probleem omschrijving duidelijk
    SuperRembowoensdag 9 november 2005 @ 22:21
    Aha op die manier. Is het dan misschien handiger om die informatie in een cookie te zetten? Een cookie is makkelijk te lezen / te schrijven / aan te passen met javascript en met php.
    Swetseneggerwoensdag 9 november 2005 @ 22:25
    Mjah, ik ben altijd nog al aan het worstelen met javascript cookies en IE (expiration lukt nooit zoals het moet. Werkt altijd wel prima in FF en Opera gek genoeg)

    Ik kan natuurlijk ook gewoon in mijn javascript plusjes swap script een array maken en die vervolgens in mijn link echo'en.

    Hmz, het is moeilijker dan ik in eerste instantie dacht.
    SuperRembowoensdag 9 november 2005 @ 22:45
    Als je het zonder cookies doet, hoe wil je dan de huidige status van de tree overdragen naar de volgende pagina.
    Je zou ook met XMLHttp de nieuwe status naar de server kunnen sturen en die dan opslaan in de sessie of db.

    Als ik het goed heb werkt GoT ook met cookies voor de in/uitklap status. En dat werkt prima
    Swetseneggerwoensdag 9 november 2005 @ 22:49
    quote:
    Op woensdag 9 november 2005 22:45 schreef SuperRembo het volgende:
    Als je het zonder cookies doet, hoe wil je dan de huidige status van de tree overdragen naar de volgende pagina.
    Gewoon in de link

    pagina.php?menu=0-3-5

    dus alleen de open items in je link meegeven.
    Alleen heeft javascript geen foreach functie
    quote:
    Als ik het goed heb werkt GoT ook met cookies voor de in/uitklap status. En dat werkt prima
    Ja dat geloof ik graag, maar ik heb hier javascript voor dummies ook al een aantal keer mijn javascript cookie code gepost. Niemand ziet een fout. Hij werkt ook prima in FF en Opera.... Maar NIET in IE (expired zodra je de browser sluit)

    *denkt* nu is expiration niet zo'n groot probleem eigenlijk.

    Een javascript cookie kan ik natuurlijk ook met php uitlezen. cookie is cookie toch? Kan een cookie een array bevatten? en zoja. Hoe vul ik die array? Elke keer als ik op een plusje klik (inklappen of uitklappen maakt niet uit) moet ik het cookie bijwerken
    SuperRembowoensdag 9 november 2005 @ 22:59
    Ik denk dat het makkelijker is om bij elke keer in- of uitklappen de cookie aan te passen dan om in elke link de menu status door te geven en weer goed af te handelen.

    Javascript heeft wel een for-each hoor
    1
    2
    3
    4
    var fruit = {a:'appel', b:'banaan',c:'citroen'};
    for (i in fruit) {
       alert(i + ': ' + fruit[i]);
    }
    Swetseneggerwoensdag 9 november 2005 @ 23:03
    quote:
    Op woensdag 9 november 2005 22:59 schreef SuperRembo het volgende:
    Ik denk dat het makkelijker is om bij elke keer in- of uitklappen de cookie aan te passen dan om in elke link de menu status door te geven en weer goed af te handelen.
    De link komt uit database, dus is maar 1 regeltje code waar ik de links parse aanpassen
    Maar we gaan toch maar voor het cookie

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function exchange(id){
    if (menu[id]==0){
    menu[id]=1;
    }else{
    menu[id]=0;
    }

    // uit dan wel inklappen script

    document,cookie="menu="+menu+";expires="+vervaldatum+"; path=/";

    Dit zou moeten werken toch. Een array in een cookie?
    -edit- hmz, nee dus cookie wordt wel gezet maar de content is leeg
    quote:
    Javascript heeft wel een for-each hoor
    [ code verwijderd ]
    waarom kom ik in google dan alleemaal zelf geschreven foreach functies tegen voor javascript?

    [ Bericht 6% gewijzigd door Swetsenegger op 09-11-2005 23:12:43 ]
    SuperRembowoensdag 9 november 2005 @ 23:12
    Een array in een cookie? Gewoon join en split gebruiken.

    Ik heb geen idee waarom je moeilijk zou moeten doen om een for-each voor elkaar te krijgen. Het enige dat je ff moet onthouden is dat je de index krijgt, niet het item zelf.
    Het gaat trouwens ook fout als je bijvoorbeeld een push functie op de prototype van de array hebt gezet (voor IE5 compatibility). Dan loopt ie namelijk ook over die functie.
    Swetseneggerwoensdag 9 november 2005 @ 23:15
    quote:
    Op woensdag 9 november 2005 23:12 schreef SuperRembo het volgende:
    Een array in een cookie? Gewoon join en split gebruiken.
    Hmz, die bestaan ook in javascript? Maar een array in een cookie moet toch kunnen? anders moet ik de array joinen, in een cookie zetten, splitsen als er wat wijzigt.
    quote:
    Ik heb geen idee waarom je moeilijk zou moeten doen om een for-each voor elkaar te krijgen. Het enige dat je ff moet onthouden is dat je de index krijgt, niet het item zelf.
    Het gaat trouwens ook fout als je bijvoorbeeld een push functie op de prototype van de array hebt gezet (voor IE5 compatibility). Dan loopt ie namelijk ook over die functie.
    [/quote]
    Hoe bedoel je? Ik moet wel weten welke er open staan. Dus ik moet een array zetten. Vervolgens moet ik op de nieuwe pagina voor elk item in mijn array de exchange functie aanroepen. Dan moet ik toch door die array loopen?
    SuperRembodonderdag 10 november 2005 @ 07:46
    Het Array object heeft een join method, het String object heeft een split method.
    1
    2
    3
    4
    5
    var a = [2, 3, 5, 7, 11];
    var s = a.join(',');
    alert(s);
    var b = s.split(',');
    alert(b.length);


    IE5 kent geen Array.push() en Array.pop(). Als je die toch wil gebruiken dan kan je die methods toevoegen met Array.prototype.push = function(...){...}. Dat werkt prima. Het lastige is alleen dat als je dan met een for-each door een array loopt, dat je dan ook die push en pop functie als array element tegen komt.
    Maar als je Array.prototype niet gebruikt dan is er niets aan de hand
    Desdinovadonderdag 10 november 2005 @ 17:35
    Waarom werkt dit niet..

    Het is de bedoeling dat een geupload file uitgelezen wordt en de data in die file in een database toegevoegd wordt.

    De code:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <?php
    $table_name
    ="OBcontacts_temp";

    $textfile = $_FILES['file']['tmp_name'];

    chmod($textfile,0755);


    $field_terminater="";
    $line_terminator="\r\n";

    $query = "LOAD DATA INFILE '$textfile' INTO TABLE $table_name (Data) ";

    if (isset(
    $field_terminater)) {
    $query .= "FIELDS TERMINATED BY '$field_terminater'";
    }
    if (
    strlen($line_terminator)&gt;0) {
    $query .= "LINES TERMINATED BY '". stripslashes($line_terminator)."'";
    }

    $sql_query = $query;

    $result= mysql_query($sql_query);
    ?>


    ik vermoed dat de fout zit bij het $textfile = $_Files gebeuren.. iemand die me kan vertellen hoe t wel moet?
    De database connectie is goed iig.
    LeeHarveyOswalddonderdag 10 november 2005 @ 17:43
    Kan ik als ik een pagina include, in de geinclude pagina zien welke pagina dat deed?

    Dus bijv.:

    Test.php:
    1
    2
    3
    4
    <?php
    php
    include("test2.php");
    ?>


    test2.php zou dan bijv. als output moeten geven 'test.php'. Het liefst nog met achtervoegsels (?ID=12) erbij ook. Maar das geen must

    Kan dat?
    ikke_ookdonderdag 10 november 2005 @ 21:25
    quote:
    Op donderdag 10 november 2005 17:43 schreef LeeHarveyOswald het volgende:
    Kan ik als ik een pagina include, in de geinclude pagina zien welke pagina dat deed?

    Dus bijv.:

    Test.php:
    [ code verwijderd ]

    test2.php zou dan bijv. als output moeten geven 'test.php'. Het liefst nog met achtervoegsels (?ID=12) erbij ook. Maar das geen must

    Kan dat?
    Ja dat kan volgens mij. Volgens mij zit dat ergens in het $_SERVER array.

    -edit-

    Ik denk trouwens dat $_SERVER['REQUEST_URI'] het juiste antwoord bevat.

    [ Bericht 6% gewijzigd door ikke_ook op 10-11-2005 22:18:54 ]
    H4zevrijdag 11 november 2005 @ 01:35
    Ik ben bezig met een site en ik loop momenteel op iets vast. Ik heb ff een simpel voorbeeldje van m'n probleem gemaakt.

    Het bestand "set.php":
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php session_start(); ?>

    html onzin, en op een gegeven moment iets van:
    <?php 
    $_SESSION['check1']='check 1 jo'; 
    $_SESSION['check2']='check 2 jo'; 
    ?>
    <br />
    <br />
    <?php include('http://haze.stoner.nl/test/print.php'); ?>


    Hieronder het bestand "print.php" wat ie moet includen:
    1
    2
    3
    4
    5
    6
    7
    <?php session_start(); ?>

    Dit is het bestand dat geinclude moet worden, en hiernaast moet ook de session geinclude worden

    <?php 
    echo $_SESSION['check1']; 
    ?>


    Dat includen werkt wel, maar waarom include ie de sessie niet? Als ik eerst naar de pagina "set.php" browse, en vervolgens zelf naar de pagina "print.php" ga, dan zie ik de sessie wel geprint staan. Betekent dit dat de include-statement niet met Sessies om kan gaan? Of moet ik nog iets toevoegen (of doe ik iets enorm fout )

    Hier staan de bestanden trouwens:
    set.php
    print.php

    Bvd

    [ Bericht 5% gewijzigd door H4ze op 11-11-2005 02:36:31 ]
    Roonaanvrijdag 11 november 2005 @ 09:35
    Je moet niet includen met "http://"

    Doe gewoon include "print.php";

    Waar hebben ze je dat geleerd dat je via de url moet includen?
    H4zevrijdag 11 november 2005 @ 14:05


    Ik geloof dat een klasgenoot 't ooit zo aan mij heeft verteld. Maar thnx iig, het werkt nu.
    LeeHarveyOswaldvrijdag 11 november 2005 @ 14:06
    Vanavond ga ik het proberen danku!
    quote:
    Op donderdag 10 november 2005 21:25 schreef ikke_ook het volgende:

    [..]

    Ja dat kan volgens mij. Volgens mij zit dat ergens in het $_SERVER array.

    -edit-

    Ik denk trouwens dat $_SERVER['REQUEST_URI'] het juiste antwoord bevat.
    Roonaanvrijdag 11 november 2005 @ 15:34
    quote:
    Op vrijdag 11 november 2005 14:05 schreef H4ze het volgende:


    Ik geloof dat een klasgenoot 't ooit zo aan mij heeft verteld. Maar thnx iig, het werkt nu.
    Ah, vertel hem/haar even dat hij zulk "advies" voor zich moet houden en eerst een phpboek moet pakken.
    FuifDuifzaterdag 12 november 2005 @ 00:11
    Een include werkt altijd lokaal, dus inderdaad niet via een URI. Een PHP script is in feite een scriptje welke lokaal wordt geïnterpreteerd en dus werken alle bestandsaanroepen (zoals includes, maar ook de functie move_uploaded_file() etc) ook lokaal.
    FuifDuifzaterdag 12 november 2005 @ 00:16
    quote:
    Op woensdag 9 november 2005 22:49 schreef Swetsenegger het volgende:
    Gewoon in de link

    pagina.php?menu=0-3-5
    Ik persoonlijk ben op dit soort oplossingen principieel tegen. Je moet enkel het laatste punt meegeven en dan het pad recursief opbouwen. Dus je geeft:

    pagina.php?menu=5

    En het pad wordt dan met behulp van een recursieve functie dynamisch opgebouwd.
    Lightzaterdag 12 november 2005 @ 00:34
    quote:
    Op zaterdag 12 november 2005 00:11 schreef FuifDuif het volgende:
    Een include werkt altijd lokaal, dus inderdaad niet via een URI. Een PHP script is in feite een scriptje welke lokaal wordt geïnterpreteerd en dus werken alle bestandsaanroepen (zoals includes, maar ook de functie move_uploaded_file() etc) ook lokaal.
    Als allow_url_fopen() true oplevert dan is het ook mogelijk om bestanden via een URI te includen. Files die niet vanuit het file system geinlcude worden, die kunnen worden geinterpreteerd door de server die de bestanden aanlevert. En als die uitkomst geen geldige php code is dan krijg je problemen.

    Move_uploaded_file() is een ander geval. Die functie controleert eerst of het bestand dat je wilt verplaatsen wel van de upload afkomstig is, en zal alleen al daarom niet werken met URI's. Overigens kun je alleen bestanden verplaatsen die bij die specifieke aanroep van de pagina zijn geupload. Als je ze niet verplaatst dan worden ze weer verwijderd.
    FuifDuifzaterdag 12 november 2005 @ 00:38
    Dat van die allow_url_fopen() wist ik niet. Wel handig om op die manier een soort scriptserver te realiseren om algemene routines aan te bieden aan verschillende applicaties die op verschillende fysiek gescheiden locaties draaien.
    SuperRembozaterdag 12 november 2005 @ 00:43
    quote:
    Op zaterdag 12 november 2005 00:11 schreef FuifDuif het volgende:
    Een include werkt altijd lokaal, dus inderdaad niet via een URI.
    Dat is niet waar. Check de manual. Het kan wel (mits allow_url_fopen aan staat), maar het is niet aan te raden.


    [edit]Trage reactie [/edit]
    FuifDuifzaterdag 12 november 2005 @ 00:47
    quote:
    Op zaterdag 12 november 2005 00:43 schreef SuperRembo het volgende:

    [..]

    Dat is niet waar. Check de manual. Het kan wel (mits allow_url_fopen aan staat), maar het is niet aan te raden.

    [edit]Trage reactie [/edit]
    Ja, klopt, ik ben inmiddels op de hoogte . Het lijkt mij inderdaad niet aan te raden, tenzij het algemene routines zijn die speciaal op die manier worden aangeboden en ook specifiek met dat doel. Bijvoorbeeld een soort objectserver of iets dergelijks. Maar voor standaard lokaal maatwerk lijkt het mij de voorkeur genieten om gebruik te maken van lokale referenties.
    Lightzaterdag 12 november 2005 @ 00:52
    Weten dat het kan is ook voldoende. Da's een extra reden om te zorgen dat wat je in een include stopt ook veilig is.
    Dus niet:
    1
    2
    3
    <?php
    include($_GET['page']);
    ?>


    Want zo weet je nooit wat voor code je binnenhaalt.
    FuifDuifzaterdag 12 november 2005 @ 00:59
    quote:
    Op zaterdag 12 november 2005 00:52 schreef Light het volgende:
    Weten dat het kan is ook voldoende. Da's een extra reden om te zorgen dat wat je in een include stopt ook veilig is.
    Dus niet:
    [ code verwijderd ]

    Want zo weet je nooit wat voor code je binnenhaalt.
    Dat lijkt mij logisch. Ik zou ook niet weten waarom je het op die manier zou schrijven. Ik wil zelf altijd maximale controle op de GET en POST data die ik binnen krijg en probeer de client-side vrijheid wat dat betreft zoveel mogelijk te beperken tot het hoogst noodzakelijke. Dat betekent ook dat die data altijd door een strenge controle gaan voordat ze bijvoorbeeld worden opgenomen in een database transactie. Het is een kleine moeite, maar tegenwoordig oh zo belangrijk.
    Lightzaterdag 12 november 2005 @ 01:14
    Correct, user input kun je niet vertrouwen. Overigens zijn client-side beperkingen altijd te omzeilen, dus daarop kun je nooit vertrouwen.
    SuperRembozaterdag 12 november 2005 @ 10:05
    Zo ken ik een website met miljoenen bezoekers waarbij je via sql-injection willekeurige query's uit kunt voeren
    Chandlerzaterdag 12 november 2005 @ 11:45
    ja dat had je reeds medegedeeld echter heb ik um nog steeds niet gehacked
    Chandlerzaterdag 12 november 2005 @ 11:46
    zouden ze geld neer leggen? dan delen we de winst
    kramer65zaterdag 12 november 2005 @ 15:59
    Ik ben nu al meerdere keren met mijn zoekfunctie aan de gang gegaan maar het lukt me maar niet om hem zo te laten werken als ik wil. Echter, het lijkt me dat de oplossing redelijk makkelijk moet zijn. Hopelijk kunnen jullie me helpen.

    Ik heb een database met een table genaamd 'lyriczz' waarin oa de fields 'artist' 'feat' en 'title' staan.

    Als mensen nu een search doen moet de functie het volgende doen:

    --> Zoek elke record waar elk woord in ten minste 1 van die drie fields voorkomen

    Ik had het dus zo gedaan:
    <?
    $sql = 'SELECT song_id, artist, feat, title FROM `lyriczz` WHERE ';
    $search_words = explode(' ', $searchstring, 5);
    $first = true;
    foreach ($search_words AS $tw) {
    if ($first == false)
    $sql .= 'AND ';
    $first = false;
    $sql .= "(`artist` LIKE '%$tw%') ";
    $sql .= 'OR';
    $sql .= "(`feat` LIKE '%$tw%') ";
    $sql .= 'OR';
    $sql .= "(`title` LIKE '%$tw%') ";
    } ?>

    Maar dat zoekt elke record waar 1 van de woorden in 1 van de fields voorkomen. Daar heb je dus niets aan, want hoe meer woorden je invult, hoe meer resultaten er uitkomen.

    Dan dus mijn vraag: hoe zou ik dit moeten doen?
    ikke_ookzaterdag 12 november 2005 @ 16:27
    Ik snap niet wat je bedoelt, maar de code die je hierboven neerzet is niet helemaal goed denk ik.
    Werkt dit beter? :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?
       $sql = 'SELECT song_id, artist, feat, title FROM `lyriczz` WHERE ';
       $search_words = explode(' ', $searchstring, 5);
       $first = true;
       foreach ($search_words AS $tw) {
          if ($first == false){
             $sql .= 'AND ';
             $first = false;
          }
          $sql .= "(`artist` LIKE '%$tw%') ";
          $sql .= 'OR';
          $sql .= "(`feat` LIKE '%$tw%') ";
          $sql .= 'OR';
          $sql .= "(`title` LIKE '%$tw%') ";
       } 
    ?>

    Zoja, laat je code inspringen, dat is veeeel overzichtelijker, en print je query gewoon even op het scherm als hij niet teruggeeft wat je wil, want misschien zit er wel iets fout in je query, en dat kun je dan makkelijker zien.

    En als je je code tussen codetags plaatst is het ook wat overzichtelijker voor ons om te lezen Dus zo: [code ]Hier je code[/ code] (En dan zonder spaties)
    kramer65zaterdag 12 november 2005 @ 17:18
    Ok, mijn vraag is als volgt. Deze code werkt wel correct als in: hij brengt wel wat je eigenlijk vraagt aan de database. Maar wat ik wil is het volgend:

    Zoek elke record waar elk woord in ten minste 1 van die drie fields voorkomen. Terwijl ie nu alle records op zoekt waar een van de gezochte woorden in een of andere field voorkomt. Hij moet dus preciezer worden. Het is een beetje moeilijk uit te leggen. Ik moet denk ik namelijk helemaal op nieuw beginnen en dit scriptje weggooien.

    Als je bijvoorbeeld zoekt op "michael jackson thriller" moet ie het volgende doen:
    1
    2
    3
    4
    5
    if (michael is found in field 'artist' OR field 'title' OR field 'feat'
    AND jackson is found in field 'artist' OR field 'title' OR field 'feat'
    AND thriller is found in field 'artist' OR field 'title' OR field 'feat') {
    echo info
    }


    Dit is natuurlijk helemaal geen code, maar hopelijk maakt het een beetje duidelijk wat ik wil Ik hoop dat je het zo een beetje begrijpt.. zou je er iets op weten?
    ikke_ookzaterdag 12 november 2005 @ 17:48
    Zo dan?
    Nu geeft hij alle rijen terug waar in 1 van de kolommen een van de search_words staat.
    Dat is niet helemaal wat je hierboven hebt gezegd, maar ik denk wel dat je dit bedoelt. in je eerste post.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
       $sql = 'SELECT song_id, artist, feat, title FROM `lyriczz` WHERE ';
       $search_words = explode(' ', $searchstring, 5);
       $first = true;
       foreach ($search_words AS $tw) {
          if (!$first){
             $sql .= 'OR ';
             $first = false;
          }
          $sql .= "(`artist` LIKE '%$tw%') ";
          $sql .= 'OR';
          $sql .= "(`feat` LIKE '%$tw%') ";
          $sql .= 'OR';
          $sql .= "(`title` LIKE '%$tw%') ";
       }

    Als ik je 2e post interpreteer krijg je de rij terug waarvan alle 3 de kolommen iets bevatten dat in de searchstring staat.

    Ik zou trouwens een zoekpagina maken waarbij men aan kan geven of ze op artist, feat, of op title kunnen zoeken, want als iemand nou een searchstring in typt die uit heel veel woorden bestaat dan zal je een query krijgen die een hoop tijd in beslag gaat nemen (als je database een beetje groot is)
    kramer65zaterdag 12 november 2005 @ 17:58
    Ehm ok bedankt. Maar het is nog steeds niet wat ik bedoel :-(

    Wat ik zoek is iets waarbij alle drie de woorden voorkomen. In welk field of hoevaak maakt echter niet uit. Dus als maar 1 of 2 van de woorden worden gevonden dan moet ie het niet als match vinden, slechts als alle drie de woorden worden gevonden. Zo kan de bezoeker gewoon een woord van de artiest en ook een woord van de titel gebruiken om te zoeken.

    Zou je weten hoe dit moet? (Sorry, het klinkt misschien een beetje als gezeur, maar zo bedoel ik het niet, ik weet alleen zelf niet zo goed meer wat ik hiermee moet doen)
    ikke_ookzaterdag 12 november 2005 @ 18:06
    ok, dus toch zoals ik dacht dat je niet bedoelde
    In dat geval is je eerst geval bijna goed, behalve dat je wat haakjes moet gebruiken, daar wordt het niet alleen duidelijker van voor jezelf, maar dan krijg je ook de goede resultaten
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
       $sql = 'SELECT song_id, artist, feat, title FROM `lyriczz` WHERE ';
       $search_words = explode(' ', $searchstring, 5);
       $first = true;
       foreach ($search_words AS $tw) {
          if (!$first){
             $sql .= 'AND ';
             $first = false;
          }
          $sql .= "((`artist` LIKE '%$tw%') ";
          $sql .= 'OR';
          $sql .= "(`feat` LIKE '%$tw%') ";
          $sql .= 'OR';
          $sql .= "(`title` LIKE '%$tw%')) ";
       }


    Denk ik...Ik durf niet meer zeker te zeggen dat het nou wel goed is
    ikke_ookzaterdag 12 november 2005 @ 18:08
    Alleen bovenstaande zal dus 0 resultaten geven als 1 van de zoekwoorden niet in de database voorkomt. Dus stel dat iemand een lange titel invoert, en bij 1 van de woorden van de titel een typefout maakt, dan geeft je query 0 resultaten maargoed, je kunt niet alles hebben...
    kramer65zaterdag 12 november 2005 @ 23:51
    Dit werkt nu zo'n beetje als in dat ie wel op 1 woord kan zoeken maar dat je een error krijgt als je op meer dan 1 woord zoekt. Als ik bijvoorbeeld op 'michael jackson' zoek krijg ik de volgende error:

    Invalid query: You have an error in your SQL syntax near '((`artist` LIKE '%jackson%') OR(`feat` LIKE '%jackson%') OR(`title` LIKE '%jacks' at line 1

    Zit te zoeken maar begrijp niet wat de fout is..
    Lightzondag 13 november 2005 @ 00:23
    En als je vlak voor de query die sql-string gaat printen, wat krijg je dan?
    kramer65zondag 13 november 2005 @ 06:21
    Beetje laat, maar dan krijg ik de volgende uitkomst:

    SELECT song_id, artist, feat, title FROM `lyriczz` WHERE ((`artist` LIKE '%michael%') OR(`feat` LIKE '%michael%') OR(`title` LIKE '%michael%')) ((`artist` LIKE '%jackson%') OR(`feat` LIKE '%jackson%') OR(`title` LIKE '%jackson%')) ORDER BY `artist` ASC LIMIT 0, 1000

    Invalid query: You have an error in your SQL syntax near '((`artist` LIKE '%jackson%') OR(`feat` LIKE '%jackson%') OR(`title` LIKE '%jacks' at line 1

    Nog ideeen?
    Roonaanzondag 13 november 2005 @ 08:39
    Iemand suggesties waarom IE5.5 session cookies niet opslaat?

    googlen en geklooi met de timestamp hebben tot nu toe geen effect gehad op het gedrag
    ikke_ookzondag 13 november 2005 @ 09:18
    quote:
    Op zondag 13 november 2005 06:21 schreef kramer65 het volgende:
    Beetje laat, maar dan krijg ik de volgende uitkomst:

    SELECT song_id, artist, feat, title FROM `lyriczz` WHERE ((`artist` LIKE '%michael%') OR(`feat` LIKE '%michael%') OR(`title` LIKE '%michael%')) ((`artist` LIKE '%jackson%') OR(`feat` LIKE '%jackson%') OR(`title` LIKE '%jackson%')) ORDER BY `artist` ASC LIMIT 0, 1000

    Invalid query: You have an error in your SQL syntax near '((`artist` LIKE '%jackson%') OR(`feat` LIKE '%jackson%') OR(`title` LIKE '%jacks' at line 1

    Nog ideeen?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
       $sql = 'SELECT song_id, artist, feat, title FROM `lyriczz` WHERE ';
       $search_words = explode(' ', $searchstring, 5);
       $first = true;
       foreach ($search_words AS $tw) {
          if (!$first){
             $sql .= 'AND ';
          }
          $first = false;
          $sql .= "((`artist` LIKE '%$tw%') ";
          $sql .= 'OR';
          $sql .= "(`feat` LIKE '%$tw%') ";
          $sql .= 'OR';
          $sql .= "(`title` LIKE '%$tw%')) ";
       }

    Zo zou het moeten werken (voor de zoveelste keer )
    JeRazondag 13 november 2005 @ 12:58
    quote:
    Op zondag 13 november 2005 08:39 schreef Ro�a� het volgende:
    Iemand suggesties waarom IE5.5 session cookies niet opslaat?

    googlen en geklooi met de timestamp hebben tot nu toe geen effect gehad op het gedrag
    Laat de headers eens zien die de webserver naar de browser stuurt en vice versa, na het setten van de cookie?
    Roonaanzondag 13 november 2005 @ 13:31
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Date: Sun, 13 Nov 2005 12:31:10 GMT
    Server: xxxxxx
    X-Powered-By: xxxxxx
    Set-Cookie: PHPSESSID=17c3828ca1885212dc6c3e89ff843437; domain=http://www.xxxxxx.nl/
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Pragma: no-cache
    Content-Length: 1996
    Connection: close
    Content-Type: text/html
    Chandlerzondag 13 november 2005 @ 14:00
    Stom vraagje; hoe achterhaal je die cookie gegevens/
    McMarcozondag 13 november 2005 @ 14:10
    quote:
    Op zondag 13 november 2005 14:00 schreef Chandler het volgende:
    Stom vraagje; hoe achterhaal je die cookie gegevens/
    Gegevens staan opgeslagen in $_COOKIE["cookienaam"]
    Roonaanzondag 13 november 2005 @ 14:12
    quote:
    Op zondag 13 november 2005 13:31 schreef Ro�a� het volgende:

    [ code verwijderd ]
    webdeveloper toolbar, show response headers.
    kramer65zondag 13 november 2005 @ 14:29
    @ ikke_ook

    Super bedankt!! Hij doet het als een toeter!

    Je kan je niet voorstellen hoe lang ik hieraan heb gezeten
    Lightzondag 13 november 2005 @ 14:40
    quote:
    Op zondag 13 november 2005 13:31 schreef Ro�a� het volgende:

    [ code verwijderd ]
    Ik krijg toch de indruk dat die session-id cookie niet wordt omdat er geen expire-tijd opzit. De sessie zou dan eindigen op het moment dat je de browser sluit.
    Lariekoekzondag 13 november 2005 @ 22:32
    Iemand enig idee waarom ik bij de volgende code geen tekst terug krijg?

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php
    php
    $tekstvak
    = "arr[]";
    echo
    "<form action='$PHP_SELF' METHOD='POST'>";
    for (
    $a=0; $a&lt; 3; $a++)
    {
      echo
    "<input type=text name='tekstvak' size=20><br>";
    }
    echo
    "<input type=submit name='submit' value='Doe'>";
    echo
    "</form>";

    for (
    $a=0; $a&lt; 3; $a++)
    {
    echo
    "$arr[$a]";
    }
    ?>
    FuifDuifzondag 13 november 2005 @ 22:46
    Dat "$a<"

    Klopt dat wel, wat is dat voor vage constructie ?

    Moet dat niet gewoon zijn:

    for ($a = 0; $a < 4; $a++)

    ?
    Swetseneggerzondag 13 november 2005 @ 22:47
    quote:
    Op zondag 13 november 2005 22:46 schreef FuifDuif het volgende:
    Dat "$a<"

    Klopt dat wel, wat is dat voor vage constructie ?

    Moet dat niet gewoon zijn:

    for ($a = 0; $a < 4; $a++)

    ?
    bug in de php tag