FOK!forum / Digital Corner / [PHP/(My)SQL] voor dummies - Deel 62
slakkiewoensdag 13 augustus 2008 @ 09:47

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

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

    Ps. Iemand is vergeten deel 60 in de wiki te zetten
  • PiRANiAwoensdag 13 augustus 2008 @ 09:49
    Ik zal deel 60 wel even opzoeken
    -Edit- Hij staat niet tussen mijn AT...
    Tiemiewoensdag 13 augustus 2008 @ 09:50
    [PHP/(My)SQL] voor dummies - deel 60

    graag gedaan
    Tiemiewoensdag 13 augustus 2008 @ 09:51
    google
    slakkiewoensdag 13 augustus 2008 @ 09:51
    Hij zat in m'n AT.
    ManAtWorkwoensdag 13 augustus 2008 @ 09:52
    quote:
    Op woensdag 13 augustus 2008 09:41 schreef Tiemie het volgende:

    [..]

    escapen met mysql_real_escape_string.
    Juist,...
    Misschien staat de vraag dan op de verkeerde plaats. (En dat hoor ik dan nu wel.) Ik werk in de Microsoft SQL Server.
    urselwoensdag 13 augustus 2008 @ 09:53
    oe.. weer volgen..
    JortKwoensdag 13 augustus 2008 @ 10:06
    quote:
    Op woensdag 13 augustus 2008 09:53 schreef ursel het volgende:
    oe.. weer volgen..
    Ik ook
    Tiemiewoensdag 13 augustus 2008 @ 10:24
    quote:
    Op woensdag 13 augustus 2008 09:52 schreef ManAtWork het volgende:

    [..]

    Juist,...
    Misschien staat de vraag dan op de verkeerde plaats. (En dat hoor ik dan nu wel.) Ik werk in de Microsoft SQL Server.
    Dan addslashes om je string heen gooien of handmatig een \ toevoegen
    #ANONIEMwoensdag 13 augustus 2008 @ 10:30
    quote:
    Op woensdag 13 augustus 2008 09:52 schreef ManAtWork het volgende:

    [..]

    Juist,...
    Misschien staat de vraag dan op de verkeerde plaats. (En dat hoor ik dan nu wel.) Ik werk in de Microsoft SQL Server.
    Dan is de data die je aan de SQL server aanreikt niet voldoende geprepareerd.
    ManAtWorkwoensdag 13 augustus 2008 @ 10:45
    Laat maar. Blijkbaar verkeerde topic.
    Heb het via een creatieve oplossing grotendeels ook al weten op te lossen.
    Chandlerwoensdag 13 augustus 2008 @ 11:26
    T V P
    SuperRembowoensdag 13 augustus 2008 @ 12:26
    quote:
    Op woensdag 13 augustus 2008 10:24 schreef Tiemie het volgende:

    [..]

    Dan addslashes om je string heen gooien of handmatig een \ toevoegen
    Nee dat werkt niet. Bij MSSQL moet je een ' escapen met een '. ManAtWork kan beter met PDO gaan werken, dat voorkomt dit soort gekut.
    urselwoensdag 13 augustus 2008 @ 15:07
    Is er eigenlijk een elegante manier om een Maximum execution time error op te vangen als je gebruik maakt van NuSOAP?

    Sporadisch heb duurt de verbinding met een 3e partij te lang met het antwoord en eindigt het met zo'n error op een wit scherm en wil dit graag eleganter opvangen
    urselvrijdag 15 augustus 2008 @ 15:45
    Zo, ff een bugje in Pear Net_FTP gerapporteerd..
    een timestamp op alleen een datum hebben we weinig aan..

    Iemand trouwens nog op mijn vraaggie hierboven??
    wipes66vrijdag 15 augustus 2008 @ 16:52
    Heeft iemand nog een goede RSS parser in de aanbieding? Ik heb rss_php.php en magpierss geprobeerd, maar geen van beide is in staat alle rss feeds te parsen zonder fouten.

    edit: laat maar, ik kom er net achter dat ze struikelde over wat vage tekens die samengaan met een HTTP/1.1 request

    [ Bericht 22% gewijzigd door wipes66 op 15-08-2008 17:21:11 ]
    Xcaliburzaterdag 16 augustus 2008 @ 10:37
    1<?php print('tvp'); ?>


    L-eonzaterdag 16 augustus 2008 @ 11:43
    Ik wil dat ik beter kan devven met PHP.
    slakkiezaterdag 16 augustus 2008 @ 17:29
    quote:
    Op vrijdag 15 augustus 2008 15:45 schreef ursel het volgende:
    Zo, ff een bugje in Pear Net_FTP gerapporteerd..
    een timestamp op alleen een datum hebben we weinig aan..

    Iemand trouwens nog op mijn vraaggie hierboven??
    Waar dan?

    Vanwege een bugje in Fok's URL parser, ff een tiny url: http://tinyurl.com/5o6ssr

    [ Bericht 16% gewijzigd door slakkie op 16-08-2008 18:06:20 ]
    urselzaterdag 16 augustus 2008 @ 17:40
    Mja, volgens mij gaat er iets niet goed ofzo. Zou een verificatie mail moeten krijgen die ik moet bevestigen.
    Heb alleen mail gekregen over mijn gerapporteerde bug
    Verder geen instructies, danwel pasword..

    http://pear.php.net/bugs/bug.php?id=14506
    slakkiezaterdag 16 augustus 2008 @ 18:07
    The user who submitted this bug has not yet confirmed their email address.

    Lijkt me duidelijk

    If you do not have a confirmation message, click here to re-send. MANUAL CONFIRMATION IS NOT POSSIBLE. Write a message to pear-dev@lists.php.net to request the confirmation link. All bugs/comments/patches associated with this email address will be deleted within 48 hours if the account request is not confirmed!

    Je bug is weg als je niks doet.
    slakkiezondag 17 augustus 2008 @ 11:13
    Je bug is weg..
    urselzondag 17 augustus 2008 @ 12:36
    Lekker verhaal.. Alle stappen al tig keer ondernomen..
    Ach ja.. ook gemailed naar de devvers zelf van Net_FTP
    Zoeken ze het zelf maar uit.. Maandag nog wel een poging wagen dan..

    Probleem dat ik in ieder ondervond na updaten van 1.3.2 naar 1.3.7 is dat de stamp bij de ls functie opeens alleen bestond uit een unix timestamp op datum, zonder tijd notering..

    Na wat debuggen kwam ik erachter dat ze alleen $entry[date] dat eerst bestond uit datum + tijd opgesplitst hadden naar $entry[date] en $entry[time].
    Echter werd naar de unix timestamp parser alleen de $entry[date] gestuurd

    En aangezien in ons systeem een check zat op die timestamp na een ls functie werkte opeens een gedeelte van het systeem niet meer..
    urselmaandag 18 augustus 2008 @ 10:14
    Mja, met mijn andere email-adres lukte het vandaag wel de bug te reggen..

    Maar heb nog een "wazig" probleem met mijn Net-FTP.
    We hebben een soort van listener op onze centrale FTP server welke elke minuut een check doet of er bepaalde files aanwezig zijn op de FTP server. Echter bij de eerste keer dat hij een file vindt dan eindigt dit steevast in de melding:
    quote:
    File './thirdparties.csv' could not be downloaded to 'D:/wwwroot/live/tmp/thirdparties.csv'.
    [Warning] ftp_nb_get(): File transfer failed on line 1298
    met daarbij het gedeelte van line 1298

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php
    if (@function_exists('ftp_nb_get')) {
                
    $res = @ftp_nb_get($this->_handle$local_file$remote_file$mode);
                while (
    $res == FTP_MOREDATA) {
                    
    $this->_announce('nb_get');
                    
    $res = @ftp_nb_continue($this->_handle);
                }
            } else {
                
    $res = @ftp_get($this->_handle$local_file$remote_file$mode);
            }
            if (!
    $res) {
                return 
    $this->raiseError("File '".$remote_file.
                                         
    "' could not be downloaded to '$local_file'.",
                                         
    NET_FTP_ERR_OVERWRITELOCALFILE_FAILED);
            } else {
                return 
    true;
            }
    ?>


    Nu doen we zelf al van tevoren de local_file verwijderen als deze bestaat alvorens we de "get" functie aan te roepen van Net_FTP.

    Het probleem is eigenlijk dat de eerste keer als het bestand gevonden wordt, dan krijgen we de bovenstaand melding. Echter een minuut later vindt de "listener" het bestandje weer en loopt hij er moeiteloos doorheen.

    Iemand suggestie waar dit aan kan liggen en/of hoe er voor te zorgen dat het de eerste keer goed gaat?
    Flaccidmaandag 18 augustus 2008 @ 20:07
    Ik zoek zo'n php scriptje waarmee je een avatar cycle hebt random enzo. Aantal mensen op fok hebben er een. Is dat moeilijk? Ik wil graag een mapje kunnen hebben dan waar ik wat avatars in stop.
    slakkiemaandag 18 augustus 2008 @ 20:40
    quote:
    Op maandag 18 augustus 2008 10:14 schreef ursel het volgende:
    Mja, met mijn andere email-adres lukte het vandaag wel de bug te reggen..

    Maar heb nog een "wazig" probleem met mijn Net-FTP.
    We hebben een soort van listener op onze centrale FTP server welke elke minuut een check doet of er bepaalde files aanwezig zijn op de FTP server. Echter bij de eerste keer dat hij een file vindt dan eindigt dit steevast in de melding:
    [..]

    met daarbij het gedeelte van line 1298
    [ code verwijderd ]

    Nu doen we zelf al van tevoren de local_file verwijderen als deze bestaat alvorens we de "get" functie aan te roepen van Net_FTP.

    Het probleem is eigenlijk dat de eerste keer als het bestand gevonden wordt, dan krijgen we de bovenstaand melding. Echter een minuut later vindt de "listener" het bestandje weer en loopt hij er moeiteloos doorheen.

    Iemand suggestie waar dit aan kan liggen en/of hoe er voor te zorgen dat het de eerste keer goed gaat?
    Ik gok omdat het komt omdat ftp_nb_continue een waarde retouneert (regel 6) die false is (0, "", "0", false, null) , waardoor de if-statement passed op regel 11, wat de foutmelding triggert.
    ralfiemaandag 18 augustus 2008 @ 20:52
    Iemand al wel eens problemen gehad met schijnbare spook-output?

    Heb een index.php die start met
    1
    2
    3
    4
    <?php
    include('includes/settings.php');
    include('includes/common_frontpage.php');
    ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><wat>html</wat>
    Niks bijzonders. Nu bekijk ik deze site in IE om wat css veranderingen te testen, krijg ik opeens (zonder iets veranderd te hebben in de php!) een drietal errors. Firefox en opera geen problemen, maar alleen in internet explorer krijg ik:
    1
    2
    3
    [18-Aug-2008 19:20:16] PHP Warning:  Cannot modify header information - headers already sent by (output started at /public_html/includes/common_frontpage.php:1) in /public_html/includes/common_frontpage.php on line 198
    [18-Aug-2008 19:20:16] PHP Warning:  Cannot modify header information - headers already sent by (output started at /public_html/includes/common_frontpage.php:1) in /public_html/includes/common_frontpage.php on line 199
    [18-Aug-2008 19:20:16] PHP Warning:  Cannot modify header information - headers already sent by (output started at /public_html/includes/common_frontpage.php:1) in /public_html/includes/common_frontpage.php on line 200

    Op de locatie van de warnings worden drie cookies geset, en ik snap dat dat niet werkt als er al iets van output is geweest. Maar die is er dus niet! Volgens de error start de output op de eerste regel van common_frontpage.php, en ook dat bestand begint, zoals altijd al was, met '<?php'. Honderd procent zeker geen lege regel of spatie ervoor. Ook index.php begint met '<?php' zonder lege regel of spatie, en settings.php begint en eindigd met '<?php' en '?>' zonder spaties of lege regels. Er is gewoon geen output geweest. Er is verder geen header() commando, geen echo's. De broncode laat in IE, behalve de warnings, geen extra output zien (begint met de doctype). Als ik error_reporting op E_NONE zet, begint IE, net als FF en Opera, met de doctype. Er zijn dus geen extra karakters die worden geoutput v๓๓r de doctype. Toch de warnings in IE... :?

    Wat is hier in godesnaam aan de hand? Iemand helderziend?
    urselmaandag 18 augustus 2008 @ 21:17
    quote:
    Op maandag 18 augustus 2008 20:40 schreef slakkie het volgende:

    [..]

    Ik gok omdat het komt omdat ftp_nb_continue een waarde retouneert (regel 6) die false is (0, "", "0", false, null) , waardoor de if-statement passed op regel 11, wat de foutmelding triggert.
    Hmm, morgen maar ff checken. Maar hoe verklaar je het dan dat die bij de 2e check opeens wel doet.
    slakkiemaandag 18 augustus 2008 @ 21:32
    Ik heb geen flauw idee, als ik de code gebruik werkt het gewoon (ik doe alleen geen check op functie_exists) enzo. Verder zou ik al die @'s weghalen, mogelijke warnings worden daardoor gesupressed. Niet handig als je aan het debuggen bent..

    Dit werkt vlekkeloos (met error reporting op E_ALL, E_STRICT):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    include_once("/home/wesleys/sbox/php/etc/env.php");

    $ftp_conn = ftp_connect("www.euronet.nl");
    ftp_login($ftp_conn, "usert", "passwd");

    $ret = ftp_nb_get($ftp_conn, "/tmp/tmp.jpg", "wes_groot.jpg", FTP_BINARY);

    while ($ret == FTP_MOREDATA) {
        $ret = ftp_nb_continue($ftp_conn);
    }

    if ($ret != FTP_FINISHED) {
        echo "There was an error downloading the file...";
        exit(1);
    }


    FTP_FAILED is overigens 0, en ftp_get returned true of false, dus je !$res if moet werken zoals verwacht..
    wipes66maandag 18 augustus 2008 @ 22:30
    quote:
    Op maandag 18 augustus 2008 20:52 schreef ralfie het volgende:
    Iemand al wel eens problemen gehad met schijnbare spook-output?
    ..

    Probeer anders eens:

    [php]ob_start();
    include()....
    $output = ob_get_contents();
    ob_end_clean();
    var_dump($output);die();

    Als je dan ziet dat er geen output is dan is het misschien een bug
    wipes66dinsdag 19 augustus 2008 @ 00:20
    - nvmd -

    [ Bericht 93% gewijzigd door wipes66 op 19-08-2008 01:22:59 ]
    Chandlerdinsdag 19 augustus 2008 @ 09:42
    Ik heb een vraag over een query die echt te veel tijd neemt.

    Bv

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT klanten.id, 
    klanten.dealer_id, 
    dealer.naam AS dealernaam, 
    klanten.achternaam, 
    klanten.voorletters, 
    klanten.voornaam, 
    klanten.stad, 
    klanten.orders
    FROM klanten
    LEFT JOIN dealer ON dealer.id = klanten.dealer_id
    LEFT JOIN bestelling ON bestelling.klant_id = klanten.id
    GROUP BY klanten.id
    LIMIT 0 , 30 


    tabellen:
    klanten - 2500 items
    bestellingen - 2000 items
    dealer - 30 items

    In totaal ruim 35 seconden :{ ik snap niet waar ik de fout in ga??
    SuperRembodinsdag 19 augustus 2008 @ 09:47
    Waarom join je tegen bestelling als je die niet in de resultaten gebruikt? Verder moet het haast wel aan de indexen liggen, zo bijzonder is die query nou ook weer niet.
    Chandlerdinsdag 19 augustus 2008 @ 10:02
    Ik join ze alvast omdat er ook bepaalde queries zijn die gegevens uit die tabellen wil halen

    En idd, vond deze query ook niet echt heel erg bijzonder...

    En ik heb de indexes volgens mijn inzien wel goed ingesteld zou je anders eens willen kijken? PM?

    -andere vraag is opgelost-

    [ Bericht 35% gewijzigd door Chandler op 19-08-2008 11:19:31 ]
    Likkende_Lassiedinsdag 19 augustus 2008 @ 20:23
    Ok, volgende mysql vraag!

    Ik wil op een snelle en goedkope manier een kopie maken van alle UPDATE/INSERT/DELETE queries, naar een andere mysql server.

    Kan ik op 1 of andere manier (zonder alle code aan te passen) dit regelen? Op die manier hoop ik 2 gelijke databases te hebben.....

    Dus bijvoorbeeld via 2 mysql connecties?
    slakkiedinsdag 19 augustus 2008 @ 21:22
    Zonder code changes:
    http://dev.mysql.com/doc/refman/5.0/en/replication.html

    En anders kan je een array aanmaken van mysql connecties en door die array lopen en je queries uitvoeren.
    Chandlerwoensdag 20 augustus 2008 @ 08:27
    @SR: Tnx, tis jammer dat je geen gebruikers een rating kan geven (al zou mijn rating dan down the drain zijn maar goed)
    slacker_nlwoensdag 20 augustus 2008 @ 08:29
    quote:
    Op woensdag 20 augustus 2008 08:27 schreef Chandler het volgende:
    @SR: Tnx, tis jammer dat je geen gebruikers een rating kan geven (al zou mijn rating dan down the drain zijn maar goed)
    Zelfkennis +1
    Chandlerwoensdag 20 augustus 2008 @ 10:03
    quote:
    Op woensdag 20 augustus 2008 08:29 schreef slacker_nl het volgende:
    Zelfkennis +1
    Je wil niet weten

    Even een andere vraag; is het mogelijk om een conditie mee te geven aan een update?

    bv ik heb de volgende velden (stof, lengte, breedte) en wil bij een breedte van 90 van lengte 270 af halen maar als de breedte 140 is dan 210 verminderen...

    Weet iemand een simpele query voor dit? zonder een query in een query?
    slacker_nlwoensdag 20 augustus 2008 @ 11:27
    kan wel, maar dan heb je een procedure nodig:

    http://dev.mysql.com/doc/refman/5.0/en/if-statement.html

    Je kan het natuurlijk ook in php doen..
    SuperRembowoensdag 20 augustus 2008 @ 13:07
    Dat kan ook zonder procedure/user defined function: met een CASE statement

    1
    2
    3
    4
    5
    6
    UPDATE t
    SET lengte = CASE breedte 
          WHEN 90 THEN lengte - 270
          WHEN 140 THEN lengte - 210
       END
    WHERE breedte IN (90, 140)
    Likkende_Lassiewoensdag 20 augustus 2008 @ 13:41
    quote:
    Op dinsdag 19 augustus 2008 21:22 schreef slakkie het volgende:
    Zonder code changes:
    http://dev.mysql.com/doc/refman/5.0/en/replication.html

    En anders kan je een array aanmaken van mysql connecties en door die array lopen en je queries uitvoeren.
    Oe netjes! Ik begrijp het zo goed als helemaal, alleen is het nou mogelijk als de Master server offline is (en je weet dat hij verlopig ook offline blijft...) een slave server in te zetten als Master? Dat is erg belangerijk voor mij!
    slacker_nlwoensdag 20 augustus 2008 @ 14:44
    quote:
    Op woensdag 20 augustus 2008 13:41 schreef Likkende_Lassie het volgende:

    [..]

    Oe netjes! Ik begrijp het zo goed als helemaal, alleen is het nou mogelijk als de Master server offline is (en je weet dat hij verlopig ook offline blijft...) een slave server in te zetten als Master? Dat is erg belangerijk voor mij!
    Is ook mogelijk, ff klikken en dan kom je dat document ook tegen.
    frenchfrieswoensdag 20 augustus 2008 @ 15:38
    Ik heb een vraagje! Is het mogelijk om in een foreach loop niet alleen de waarden van de entry's uit een array te gebruiken, maar ook de naam? Of moet ik hier iets anders op verzinnen?

    Voorbeeldje:


    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
        $naam
    ["jan"] = 30;
        
    $naam["piet"] = 75;
        
        foreach(
    $naam as $score){
            echo [
    hier dus de naam]
            echo 
    $score;
        }
    ?>


    [ Bericht 76% gewijzigd door frenchfries op 20-08-2008 15:43:35 ]
    slacker_nlwoensdag 20 augustus 2008 @ 16:18
    1
    2
    3
    4
    5
    <?php
    foreach($naam as $key => $val) {
        
    printf("%s is %s jaar oud\n"$key$val);
    }
    ?>


    Meer informatie is hier te vinden.
    frenchfrieswoensdag 20 augustus 2008 @ 16:51
    Ah kijk! Dankjewel, werkt als een tiet!
    slacker_nlwoensdag 20 augustus 2008 @ 17:15
    quote:
    Op woensdag 20 augustus 2008 13:07 schreef SuperRembo het volgende:
    Dat kan ook zonder procedure/user defined function: met een CASE statement
    [ code verwijderd ]
    Die statement kende ik niet.
    ralfiewoensdag 20 augustus 2008 @ 18:24
    quote:
    Op maandag 18 augustus 2008 22:30 schreef wipes66 het volgende:

    [..]

    Probeer anders eens:

    [php]ob_start();
    include()....
    $output = ob_get_contents();
    ob_end_clean();
    var_dump($output);die();

    Als je dan ziet dat er geen output is dan is het misschien een bug
    Nee, geen output... Enige wat ik kan bedenken is dat er ergens een BOM zit, maar wel raar dat die nooit eerder dit deed (zelfde editor, gwn kladblok)...
    Sjoe538donderdag 21 augustus 2008 @ 09:37
    Array vraagje...

    Ik wil het volgende:

    array Projects
    (
    [array namen]
    (
    "naam 1"
    "naam 2"
    )
    [array omschrijvingen]
    (
    "omschrijving 1"
    "omschrijving 2"
    )
    )


    ik doe dit als volgt:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function GetProjects()
       {
          $namen['namen']=array("naam1", "naam2");
          $omschrijvingen['omschrijving']=array("omschrijving1", "omschrijving2");
          
          $projects=array("omschrijvingen"=>$omschrijvingen, "namen"=>$namen);
          
          print_r($projects);
       
          return $projects;   
       }


    Maar dat gaat niet helemaal goed volgens mij.. wat doe ik fout?
    slacker_nldonderdag 21 augustus 2008 @ 09:47
    Ahh, je moet dit doen:

    1
    2
    3
    4
    <?php
    $names 
    = array("naam1""naam2");
    $omschrijvingen = array("omschrijving1""omschrijving2");
    ?>


    Je maakt nu gebruik van een associatieve array (aka hash) en je wilt gebruik maken van een sequentiele array.


    Maar is het niet logischer om dit te doen:

    1
    2
    3
    4
    5
    6
    <?php
    $projects 
    = array()

    $project = array ("naam" => "naam v project""omschrijving" => "omschrijving van project")
    $projects[] = $project
    ?>
    #ANONIEMdonderdag 21 augustus 2008 @ 09:47
    Waarom wil je het opd ie manier hebben eigenlijk? En wat gaat er niet goed, wat is de output?
    Sjoe538donderdag 21 augustus 2008 @ 09:53
    quote:
    Op donderdag 21 augustus 2008 09:47 schreef slacker_nl het volgende:

    Maar is het niet logischer om dit te doen:
    [ code verwijderd ]
    Ah oke.. en wat als ik nu meerdere namen en omschrijvingen in deze array wil hebben, zonder dat het wordt overschreven?
    Sjoe538donderdag 21 augustus 2008 @ 10:04
    quote:
    Op donderdag 21 augustus 2008 09:47 schreef Scorpie het volgende:
    Waarom wil je het opd ie manier hebben eigenlijk? En wat gaat er niet goed, wat is de output?
    Ik wil een rijtje met projecten (wat later uit de database gehaald wordt) waarvan ik de naam van het project en de omschrijving laat tonen, gebruikmakend van Smarty.
    slacker_nldonderdag 21 augustus 2008 @ 10:47
    quote:
    Op donderdag 21 augustus 2008 09:53 schreef Sjoe538 het volgende:

    [..]

    Ah oke.. en wat als ik nu meerdere namen en omschrijvingen in deze array wil hebben, zonder dat het wordt overschreven?
    $projects[] = $project // array_push systax

    je pushed dus telkens projecten in de projects array.
    Mordrethdonderdag 21 augustus 2008 @ 11:07
    quote:
    Op donderdag 21 augustus 2008 10:47 schreef slacker_nl het volgende:

    [..]

    $projects[] = $project // array_push systax

    je pushed dus telkens projecten in de projects array.
    DIe array_push is niet echt aan te raden. Is namelijk beduidend langzamer dan de andere manier .

    stiekem tvp
    Chandlerdonderdag 21 augustus 2008 @ 11:50
    quote:
    Op woensdag 20 augustus 2008 13:07 schreef SuperRembo het volgende:
    Dat kan ook zonder procedure/user defined function: met een CASE statement
    [ code verwijderd ]
    Tnx, dat werkt erg fijn!!!
    Darkomendonderdag 21 augustus 2008 @ 12:09
    Ik heb een probleem met imagedashedline, ik krijg het niet voor elkaar om een horizontale dashed line te creeren op mn image.
    Een normale imageline werkt weer wel, dus vervang ik puur imageline met imagedashedline en je ziet gelijk niks.
    Een scheve dashed line dan weer wel, wat doe ik fout.
    php5 trouwens.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
          Header('Content-type: image/png');
          header("Cache-Control: no-cache, must-revalidate");
          header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
          header("Cache-Control: no-cache");
          header("Pragma: no-cache");
          header("Content-disposition:filename=dashedline.png");

          $Img = imagecreate($width,$width);
          $TextColor = imagecolorallocate($Img,139,137,137);
          $BackgroundColor = imagecolorallocate($Img,32,32,32);
          ImageFilledRectangle($Img,0,0,$width,$width ,$BackgroundColor);
          imagestring($Img,2,10,0,$Date1 ,$TextColor);
          imagedashedline($Img, 0, 13,$width-10,13, $TextColor);
          imagestring($Img,2,10,13,$Date2 ,$TextColor);
          imagecolortransparent($Img,$BackgroundColor); 
          imagepng($Img);
          ImageDestroy($Img);
          exit();
    Flipper01donderdag 21 augustus 2008 @ 16:25
    Ik wil graag een routebeschrijving op mijn website weergeven waarbij de bezoeker op mijn site een formuliertje invult waarvan de gegeven vervolgens worden verwerkt in een nieuwe pagina. Kan dit met php of moet ik dan aan de slag met javascript?
    Likkende_Lassiedonderdag 21 augustus 2008 @ 16:33
    Toch is het voor mij nog niet duidelijk of ik het volgende kan doen (meerdere master servers?)

    Ik heb een aantal klanten met een dedicated server, en zij draaien elk hun eigen mysql database server.
    Ik zou graag willen dat al die klanten, hun server met die van mij kunnen syncen.
    frenchfriesdonderdag 21 augustus 2008 @ 18:53
    quote:
    Op donderdag 21 augustus 2008 @ 16:25 schreef Flipper01 het volgende:
    Ik wil graag een routebeschrijving op mijn website weergeven waarbij de bezoeker op mijn site een formuliertje invult waarvan de gegeven vervolgens worden verwerkt in een nieuwe pagina. Kan dit met php of moet ik dan aan de slag met javascript?
    Kan allebei. Maar PHP lijkt me hiervoor het meest geschikt.
    HuHudonderdag 21 augustus 2008 @ 19:04
    Weet iemand of het mogelijk is met MySQL middels een TRIGGER een INSERT te voorkomen?

    Dus iets als:

    1
    2
    3
    4
    5
    6
    7
    CREATE TRIGGER upd_check BEFORE INSERT ON account
    FOR EACH ROW
      BEGIN
        IF NEW.value < 0 THEN
          -- CANCEL INSERT OF NEW ??
        END IF;
      END;


    Een DELETE bij een AFTER INSERT gaat niet, omdat de zojuist ingevoegde rij dan nog gelocked is.
    Xcaliburdonderdag 21 augustus 2008 @ 21:16
    ik probeer PostgreSQL te installeren, maar m'n PHP begrijpt het niet

    PostgreSQL draait op zich prima, ik heb de bijbehorende DLL in m'n extensionmap staan, maar als ik de regel in php.ini uitcomment krijg ik de melding "Unable to load dynamic library". Ik weet zeker dat het pad goed is, bovendien heb ik geexpirimenteerd met verschillende versies van het bestand wat me verschillende foutmeldingen heeft opgeleverd...

    Mis ik een ander bestand? Moet ik een bepaalde versie hebben? Moet er nog iets in m'n php.ini gebeuren?
    Flipper01vrijdag 22 augustus 2008 @ 10:23
    quote:
    Op donderdag 21 augustus 2008 18:53 schreef frenchfries het volgende:
    Kan allebei. Maar PHP lijkt me hiervoor het meest geschikt.
    Dat is mooi, want ik kan wel aardig met php overweg, maar niet met javascript..

    Ik heb nu het volgende formulier op route.htm:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    <form action="route.htm" method="post">  
        <
    p><strong>Straat en huisnummer:</strong><br /> 
        <
    input name="straat" type="text" size="20" /> <input name="nummer" type="text" size="4" /></p>
        <
    p><strong>Woonplaats:</strong><br /> 
        <
    input name="plaats" type="text" size="25" /></p>
        <
    input type="submit" name="submit" value="Routebeschrijving &raquo;" />
    </
    form>    
    ?>

    Het is de bedoeling dat na verzenden van het formulier een nieuwe pagina wordt geopend met de volgende link: http://maps.google.nl/maps?daddr=grote+markt,+Groningen&geocode=&dirflg=&saddr=STRAAT+NUMMER,+PLAATS

    Hoe krijg ik dit voor elkaar??
    slacker_nlvrijdag 22 augustus 2008 @ 10:27
    Denk een simple pagina maken die je input redirect naar http://maps.google.nl/maps?daddr=grote+markt,+Groningen&geocode=&dirflg=&saddr=STRAAT+NUMMER,+PLAATS

    Of kijk eens hier: http://code.google.com/apis/maps/documentation/reference.html
    Chandlervrijdag 22 augustus 2008 @ 11:34
    kleine regex vraag; nu match ik woorden met \w+ maar helaas pakt deze geen _ hoe kan ik dit wel realiseren?
    frenchfriesvrijdag 22 augustus 2008 @ 11:40
    quote:
    Op vrijdag 22 augustus 2008 @ 10:23 schreef Flipper01 het volgende:

    [..]

    Dat is mooi, want ik kan wel aardig met php overweg, maar niet met javascript..

    Ik heb nu het volgende formulier op route.htm:
    [ code verwijderd ]

    Het is de bedoeling dat na verzenden van het formulier een nieuwe pagina wordt geopend met de volgende link: http://maps.google.nl/maps?daddr=grote+markt,+Groningen&geocode=&dirflg=&saddr=STRAAT+NUMMER,+PLAATS

    Hoe krijg ik dit voor elkaar??
    Waarom niet gewoon met GET en direct doorlinken naar de googlepagina? Heb je nieteens PHP of javascript voor nodig!
    slacker_nlvrijdag 22 augustus 2008 @ 12:57
    quote:
    Op vrijdag 22 augustus 2008 11:34 schreef Chandler het volgende:
    kleine regex vraag; nu match ik woorden met \w+ maar helaas pakt deze geen _ hoe kan ik dit wel realiseren?
    Character class: [\w_]+
    Of dmv \S+ (non-whitespace characters).
    Chandlervrijdag 22 augustus 2008 @ 13:33
    tnx slacker met ([\w_]+) werkte het naar behoren!
    Likkende_Lassievrijdag 22 augustus 2008 @ 20:01
    quote:
    Op donderdag 21 augustus 2008 16:33 schreef Likkende_Lassie het volgende:
    Toch is het voor mij nog niet duidelijk of ik het volgende kan doen (meerdere master servers?)

    Ik heb een aantal klanten met een dedicated server, en zij draaien elk hun eigen mysql database server.
    Ik zou graag willen dat al die klanten, hun server met die van mij kunnen syncen.
    Iemand?
    Darkomenzaterdag 23 augustus 2008 @ 10:11
    quote:
    Op donderdag 21 augustus 2008 12:09 schreef Darkomen het volgende:
    Ik heb een probleem met imagedashedline, ik krijg het niet voor elkaar om een horizontale dashed line te creeren op mn image.
    Een normale imageline werkt weer wel, dus vervang ik puur imageline met imagedashedline en je ziet gelijk niks.
    Een scheve dashed line dan weer wel, wat doe ik fout.
    php5 trouwens.
    [ code verwijderd ]


    Niemand?
    Flipper01zondag 24 augustus 2008 @ 12:01
    quote:
    Op vrijdag 22 augustus 2008 11:40 schreef frenchfries het volgende:

    [..]

    Waarom niet gewoon met GET en direct doorlinken naar de googlepagina? Heb je nieteens PHP of javascript voor nodig!
    Hoe kan ik dat voor elkaar krijgen op mijn pagina??
    HuHuzondag 24 augustus 2008 @ 12:12
    1<form onsubmit="window.location = 'http://maps.google.nl/maps?daddr=grote+markt,+Groningen&geocode=&dirflg=&saddr='+ document.getElementById('straat') +'+'+ document.getElementById('nummer') +',+'+ document.getElementById('plaats');">


    Zoiets.
    frenchfrieszondag 24 augustus 2008 @ 12:14
    quote:
    Op zondag 24 augustus 2008 12:01 schreef Flipper01 het volgende:

    [..]

    Hoe kan ik dat voor elkaar krijgen op mijn pagina??
    1
    2
    3
    4
    5
    6
    <form action="http://maps.google.nl/maps" method="get">  
        <p><strong>addres:</strong><br /> 
        <input name="saddr" type="text" size="20" /> </p>
        <input type="hidden" name="daddr" value="grote markt, groningen" />
        <input type="submit" name="submit" value="Routebeschrijving »" />
    </form>  

    zou volgens mij moeten werken

    -edit-
    even getest, werkt als een tiet!

    [ Bericht 4% gewijzigd door frenchfries op 24-08-2008 12:22:40 ]
    LeeHarveyOswaldmaandag 25 augustus 2008 @ 01:55
    hmm ik ben weer eens met mn menu-vanuit-een-database aan het stoeien, maar ik kom dr niet uit (klote css ).

    Het menu heb ik qua opzet hiervandaan geplukt: http://tutorials.alsacreations.com/deroulant/

    (grootste verschil is dat ik de opbouw als moeder/dochter structuur in een database heb staan en met 2 loopjes dit er uit pluk - dat werkt).

    Enige wat mij niet lukt is het centreren ... op http://pestforum.nl/users/test.php draai ik een testje, op http://pestforum.nl/users/white.css staat't CSS - de boosdoener. left = 50% zet het linkerpunt van het menu mooi gecentreerd - maar ik wil dus het hele menu centreren.

    Mocht iemand weten hoe - dan hoor ik het heel graag
    LeeHarveyOswaldmaandag 25 augustus 2008 @ 01:56
    Oh, moet ik bijvermelden dat ik dus wel een marginwidth mee kan geven - maar dat is niet de bedoeling aangezien het menu, en dus ook de menu breedte, variabel is.
    Darkomenmaandag 25 augustus 2008 @ 09:10
    Dat is css, niet php, ander topic dus ;-)
    splendormaandag 25 augustus 2008 @ 11:09
    Ik maak al langer gebruik van mysql_fetch_object(), maar bestaat er ook zoiets als mysql_insert_as_object()?
    Ik wil dus een object met al haar waarden met 1 simpele functie in een tabel kunnen stoppen op een nieuw id.
    frenchfriesmaandag 25 augustus 2008 @ 11:21
    Hoort eigenlijk in een ander topic idd, maar de oplossing is vrij simpel:

    optie 1: Gooi het menu in een container div, en geef die links en rechts margin:auto, (weet niet meer helemaal zeker maar misschien moet het moeder element ook text-align:center hebben)
    optie 2: gebruik idd de positiontag met left: 50%, maar geef tevens een negatieve margin-left op van de helft van de breedte van het menu. (dus als het menu 600px breed is -> margin-left:-300px )

    [ Bericht 7% gewijzigd door frenchfries op 25-08-2008 11:27:28 ]
    ralfiemaandag 25 augustus 2008 @ 20:05
    quote:
    Op maandag 25 augustus 2008 11:09 schreef splendor het volgende:
    Ik maak al langer gebruik van mysql_fetch_object(), maar bestaat er ook zoiets als mysql_insert_as_object()?
    Ik wil dus een object met al haar waarden met 1 simpele functie in een tabel kunnen stoppen op een nieuw id.
    ik kan me bijna niet voorstellen dat iemand mysql_fetch_object() vrijwillig gebruikt, laat staan het tegenovergestelde. Hoe dan ook, die functie bestaat niet. Je kunt die natuurlijk wel zelf maken.
    met foreach() kun je object members itereren, daarmee bouw je je query, en die voer je dan uit.
    slakkiemaandag 25 augustus 2008 @ 20:48
    quote:
    Op maandag 25 augustus 2008 11:09 schreef splendor het volgende:
    Ik maak al langer gebruik van mysql_fetch_object(), maar bestaat er ook zoiets als mysql_insert_as_object()?
    Ik wil dus een object met al haar waarden met 1 simpele functie in een tabel kunnen stoppen op een nieuw id.
    psssst, ga PDO gebruiken..
    splendormaandag 25 augustus 2008 @ 21:11
    @ralfie, wat voor nadelen heeft mysql_fetch_object() dan volgens jou? Want ik gebruik het met veel plezier en het heeft tot nu toe alleen maar voordelen opgeleverd.
    Jammer dat die functie niet bestaat, maar dan schrijf ik er zelf een.

    @slakkie, tnx ik ken het niet maar ik zal het eens doorlezen op php.net en kijken of het veel voordelen biedt.
    BugWorksmaandag 25 augustus 2008 @ 21:48
    Hallo allemaal .

    Ik zoek een script waarmee ik kan controleren of een bepaalde webserver/website bereikbaar is.

    Ik heb een website met externe webhosting en ik heb thuis een webserver draaien welke alleen bereikbaar is als mijn pc aan staat. De webserver thuis is op dit moment bereikbaar via een sub-domein (redirect).

    Nu zou ik graag op mijn externe website een pagina hebben waarmee ik de status kan aangeven van de webserver thuis (wel ๓f niet bereikbaar). Indien de webserver bereikbaar is krijg je een dergelijke melding te zien met een door verwijzing na enkele seconden. Indien de webserver niet bereikbaar is krijg je hier ook een melding van te zien.

    Wat betreft de meldingen en doorverwijzing hoef ik geen hulp, maar wat betreft het controle script wel. Ik heb zelf al wat gezocht maar kan geen script of informatie hierover vinden.

    Hier iemand die me op weg/uit de brand kan helpen?


    Edit
    Ik heb al een scriptje gevonden dat werkt en makkelijk aan te passen is, namelijk: http://www.apachelounge.com/forum/viewtopic.php?t=755

    [ Bericht 10% gewijzigd door BugWorks op 25-08-2008 22:58:15 ]
    Chandlerdinsdag 26 augustus 2008 @ 09:09
    Een stom vraagje maar ik snap het niet.

    Ik neem aan dat je een file resource ook kan gebruiken in een $GLOBAL bv

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php
    function openFile()
    {
         
    $GLOBALS['fd'] = fopen("filename""w+");
    }

    function 
    writeStuff()
    {
        
    fputs($GLOBALS['fd'], "ABC");
    }

    function 
    closeFile()
    {
        
    fclose($GLOBALS['fd']);
    }
    ?>


    echter krijg ik toch mooi de volgende fout: supplied argument is not a valid stream resource in oftewel dat de resource onjuist is, maar dat is niet het geval!? iemand die dit probleem kent en of een oplossing heeft?
    slacker_nldinsdag 26 augustus 2008 @ 09:59
    @chandler, your code works for me..

    Wellicht dat je even is_resource($GLOBALS['fd']) { /* do stuff */ } moet doen.
    minqdinsdag 26 augustus 2008 @ 11:46
    Ik ben 'n beetje aan 't oefenen met PHP en heb 'n vraag..
    quote:
    <?php
    $ik['naam'] = 'Minq';
    $ik['leeftijd'] = '18';
    $ik['beroep'] = 'Student';
    $ik['interesses'] = 'Graffiti, webdesign, muziek';

    echo $ik['naam'];
    echo $ik['leeftijd'];
    echo $ik['beroep'];
    echo $ik['interesses']
    ?>
    Hoe zorg ik dat het lijstje weergegeven wordt met enters na elke regel?
    #ANONIEMdinsdag 26 augustus 2008 @ 11:48
    minq: das wel heel basic

    Kijk eens naar print_f.

    http://fr2.php.net/manual/en/function.printf.php

    http://fr2.php.net/manual/en/function.vprintf.php

    [ Bericht 25% gewijzigd door #ANONIEM op 26-08-2008 11:51:04 ]
    Xcaliburdinsdag 26 augustus 2008 @ 13:19
    ik vind het eigenlijk ook geen PHP vraag, maar een html vraag...

    1<br />
    Swetseneggerdinsdag 26 augustus 2008 @ 13:24
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $ik
    ['naam'] = 'Minq';
    $ik['leeftijd'] = '18';
    $ik['beroep'] = 'Student';
    $ik['interesses'] = 'Graffiti, webdesign, muziek';

    echo 
    $ik['naam']."<br />\r\n"$ik['leeftijd']."<br />\r\n".$ik['beroep']."<br />\r\n".$ik['interesses'];
    ?>


    En als je het mooi wil doen neem je een lus door je array heen.

    Ik heb een mssql probleempje, ik wil binaire data in een image veld zetten. Data wordt middels een form geupload,

    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    if($_FILES['file']['size'] > 0){
        
    $fileName $_FILES['file']['name'];
        
    $tmpName  $_FILES['file']['tmp_name'];
        
    $fileSize $_FILES['file']['size'];
        
    $fileType $_FILES['file']['type'];
        
    $content addslashes(file_get_contents($tmpName));
    ?>
    en content wordt de database ingeschreven. Resultaat:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Warning: mssql_query(): message: Line 1: Incorrect syntax near 'เ'. (severity 15) in C:\AppServ\www\samples\index.php on line 98

    Warning: mssql_query(): message: The identifier that starts with '' is too long. Maximum length is 128. (severity 15) in C:\AppServ\www\samples\index.php on line 98

    Warning: mssql_query(): message: The identifier that starts with '\0\0 \0\0! \0\0\" \0\0* \0\0+ \0\0@ \0\0„\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0w\0\0\0\0\0\0\0\0\0\0\0\0n\0\0\0\0\' is too long. Maximum length is 128. (severity 15) in C:\AppServ\www\samples\index.php on line 98

    Warning: mssql_query(): message: The identifier that starts with 'q\0\0\0hใsั\06>*mH sH \0h P\06>*mH sH \0ho\06>*mH sH \0hiTฑ\06>*mH sH \0hโ\0hใsั\06>*mH ' is too long. Maximum length is 128. (severity 15) in C:\AppServ\www\samples\index.php on line 98

    Warning: mssql_query(): message: The identifier that starts with 'z๗zWOส6ˆ๓ำ—๐”ปฎฟ@๑ูp< ¨ฐ# –64*G2\0U*eƒฉ¨ˆ๏w Gํ๏ “Wฃ‘ธ¨‰จ*bZ~จๅ่†ฤXGt๗˜็ฒ{‡:ฎฑ ๎อ’¸ลฅาฅถ๖฿BF5๛ฑธ๊hNbE“n 7ถณ;j' is too long. Maximum length is 128. (severity 15) in C:\AppServ\www\samples\index.php on line 98

    Warning: mssql_query(): message: The identifier that starts with 'qZ๛{๕NฐwขN|ะ;๏yr%๎ฉคฌ^ฬgฟๅl๖ Nc?O๏ฃฎฤภSืเ—‹ศ๐[Xุฟrnป7W´ม3%¸†ฑMฺh_กsv½ณQ:9–สษ๎๔ตlBƒeจ/ R„ฬ@ืeา2eBญ)งสPSU™๚!ฬP๕h‹๚' is too long. Maximum length is 128. (severity 15) in C:\AppServ\www\samples\index.php on line 98

    Warning: mssql_query(): message: Cannot use empty object or column names. Use a single space if necessary. (severity 15) in C:\AppServ\www\samples\index.php on line 98

    Warning: mssql_query(): message: The identifier that starts with '๗ขฆqต zสxฬอ‹๕4ฺ…{yไ๚Jrgฯรฝ=ิี‰๒๕–0ฬB‘Kฮ &<qP๔—ฌ๎[*\\[3Qg7๚ว}“…—๚2JaฬFeั_ช๒Vxa\'¼ /,ฦย แ…Oแ…๐B ืๆNˆr ˆ%N5' is too long. Maximum length is 128. (severity 15) in C:\AppServ\www\samples\index.php on line 98

    Warning: mssql_query(): message: The label 'ผ' has already been declared. Label names must be unique within a query batch or stored procedure. (severity 15) in C:\AppServ\www\samples\index.php on line 98


    etc.....

    Wat doe ik fout?
    Chandlerdinsdag 26 augustus 2008 @ 13:25
    quote:
    Op dinsdag 26 augustus 2008 09:59 schreef slacker_nl het volgende:
    @chandler, your code works for me..

    Wellicht dat je even is_resource($GLOBALS['fd']) { /* do stuff */ } moet doen.
    Heb ik gedaan en zag toen tot mijn grote spijt dat ik ergens een variabel overschreef
    Tiemiedinsdag 26 augustus 2008 @ 13:36
    quote:
    Op dinsdag 26 augustus 2008 13:24 schreef Swetsenegger het volgende:

    [ code verwijderd ]

    En als je het mooi wil doen neem je een lus door je array heen.

    Ik heb een mssql probleempje, ik wil binaire data in een image veld zetten. Data wordt middels een form geupload,
    [ code verwijderd ]

    en content wordt de database ingeschreven. Resultaat:
    [ code verwijderd ]

    etc.....

    Wat doe ik fout?
    quote:
    Maximum length is 128.
    Verander de eigenschappen van het veld eens.

    Maak er een blob van.
    Swetseneggerdinsdag 26 augustus 2008 @ 13:38
    quote:
    Op dinsdag 26 augustus 2008 13:36 schreef Tiemie het volgende:

    [..]


    [..]

    Verander de eigenschappen van het veld eens.

    Maak er een blob van.
    mssql heeft geen blob en aan image kan ik geen size meegeven. Er is wel een binary en varbinary veld, maar een row mag dan maar een maximale size van 8060 bytes hebben.

    Voor binary data in een mssql database zou je image veld moeten gebruiken als ik google
    Tiemiedinsdag 26 augustus 2008 @ 13:43
    quote:
    Op dinsdag 26 augustus 2008 13:38 schreef Swetsenegger het volgende:

    [..]

    mssql heeft geen blob en aan image kan ik geen size meegeven. Er is wel een binary en varbinary veld, maar een row mag dan maar een maximale size van 8060 bytes hebben.

    Voor binary data in een mssql database zou je image veld moeten gebruiken als ik google
    http://www.microsoft.com/(...)/c1161.mspx?mfr=true

    wel image, text en ntext velden.

    verder heb ik geen ervaring met ms-sql.
    slacker_nldinsdag 26 augustus 2008 @ 14:31
    quote:
    Op dinsdag 26 augustus 2008 13:19 schreef Xcalibur het volgende:
    ik vind het eigenlijk ook geen PHP vraag, maar een html vraag...
    Wel degelijk een PHP vraag:

    PHP_EOL, zorgt ervoor dat de juiste EOL character wordt gebruikt (is OS afhankelijk).

    1
    2
    3
    <?php
    print "Hello world" PHP_EOL
    ?>


    Windows: Hello world\r\n
    Unix: Hello world\n
    Mac: Hello world\r

    Helaas kan je PHP_EOL niet aanpassen, zoals $\ onder perl.
    ralfiedinsdag 26 augustus 2008 @ 15:06
    quote:
    Op maandag 25 augustus 2008 21:11 schreef splendor het volgende:
    @ralfie, wat voor nadelen heeft mysql_fetch_object() dan volgens jou? Want ik gebruik het met veel plezier en het heeft tot nu toe alleen maar voordelen opgeleverd.
    Jammer dat die functie niet bestaat, maar dan schrijf ik er zelf een.

    @slakkie, tnx ik ken het niet maar ik zal het eens doorlezen op php.net en kijken of het veel voordelen biedt.
    niet echt een nadeel, maar ik zie er gewoon het nut nie van in om een object te gebruiken als ik deze data toch meteen een array in slinger of echo.
    Swetseneggerdinsdag 26 augustus 2008 @ 15:17
    quote:
    Op dinsdag 26 augustus 2008 14:31 schreef slacker_nl het volgende:

    [..]

    Wel degelijk een PHP vraag:

    PHP_EOL, zorgt ervoor dat de juiste EOL character wordt gebruikt (is OS afhankelijk).
    [ code verwijderd ]

    Windows: Hello world\r\n
    Unix: Hello world\n
    Mac: Hello world\r

    Helaas kan je PHP_EOL niet aanpassen, zoals $\ onder perl.
    eh ja, maar die staan alleen in je source. Je browser zal linebreaks niet parsen en dat is wat minq specifiek vroeg.
    Swetseneggerdinsdag 26 augustus 2008 @ 15:25
    Ik ben zelf ondertussen een stuk verder. alles wordt in de database opgeslagen:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    if($_FILES['file']['size'] > 0){
            
    $fileName $_FILES['file']['name'];
        
    $tmpName  $_FILES['file']['tmp_name'];
        
    $fileSize $_FILES['file']['size'];
        
    $fileType $_FILES['file']['type'];
        
    $content base64_encode(file_get_contents($tmpName));
        
        }
    ?>

    ik heb een download.php die de data weer uit de db trekt en via headers de juiste gegevens meegeeft

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    require_once('includes/connect.php');
    if(isset(
    $_GET['file']) && is_numeric($_GET['file']))
    {
        
    $query   "SELECT filename, filetype, filesize, filecontent FROM samplelist WHERE id = ".$_GET['file'];
        
    $result  mssql_query($query) or die('Error, query failed');
        list(
    $name$type$size$content) = mssql_fetch_array($result);

        
    header("Content-type: application/octet-stream name=$name ");
        
    header("Content-Disposition: attachment; filename=$name");
        
    header("Content-length: $size");
        
    header("Content-type: $type");
        echo 
    base64_decode($content);
    }
    ?>


    Ik krijg ook keurig een ms word file ter download anageboden, maar.... die is maar 3KB ipv 1MB. De filesize in de DB zegt 1035776 dus dat klopt....

    -edit- Ik zie nu alleen dat hij 2 verschillende files exact hetzelfde zijn in de database. Het lijkt me toch niet dat dat de bedoeling is
    -edit2- hmz nee, toch niet files zijn wel degelijk verschillend.

    [ Bericht 1% gewijzigd door Swetsenegger op 26-08-2008 15:46:56 ]
    slacker_nldinsdag 26 augustus 2008 @ 15:53
    quote:
    Op dinsdag 26 augustus 2008 15:17 schreef Swetsenegger het volgende:

    [..]

    eh ja, maar die staan alleen in je source. Je browser zal linebreaks niet parsen en dat is wat minq specifiek vroeg.
    quote:
    Op dinsdag 26 augustus 2008 11:46 schreef minq het volgende:
    Ik ben 'n beetje aan 't oefenen met PHP en heb 'n vraag..
    [..]

    Hoe zorg ik dat het lijstje weergegeven wordt met enters na elke regel?
    Aka, EOL/newline characters. Dat kan dus met PHP_EOL. Al kunnen we ook zeggen;

    print "Hello world\n" voor Unix, print "Hello world\r\n" voor Windows en print "Hello world\r" voor Mac. En mocht ie het in een browser willen laten zien (wat er niet staat), dan kan ie print "Hello world</br>" . PHP_EOL uitvoeren

    PHP is niet alleen uit te voeren via een browser (ik gebruik zelf 90% php-cli).
    Swetseneggerdinsdag 26 augustus 2008 @ 16:03
    quote:
    Op dinsdag 26 augustus 2008 15:53 schreef slacker_nl het volgende:

    [..]


    [..]

    Aka, EOL/newline characters. Dat kan dus met PHP_EOL. Al kunnen we ook zeggen;

    print "Hello world\n" voor Unix, print "Hello world\r\n" voor Windows en print "Hello world\r" voor Mac. En mocht ie het in een browser willen laten zien (wat er niet staat), dan kan ie print "Hello world</br>" . PHP_EOL uitvoeren

    PHP is niet alleen uit te voeren via een browser (ik gebruik zelf 90% php-cli).
    Yeah right alsof een beginnende php'er met php-cli bezig is. Die wil het gewoon in zijn browser zien en hij vraagt specifiek naar weergeven. Ergo <br /> og hoogtens nl2br.
    slacker_nldinsdag 26 augustus 2008 @ 16:11
    quote:
    Op dinsdag 26 augustus 2008 16:03 schreef Swetsenegger het volgende:

    [..]

    Yeah right alsof een beginnende php'er met php-cli bezig is. Die wil het gewoon in zijn browser zien en hij vraagt specifiek naar weergeven. Ergo <br /> og hoogtens nl2br.
    Het zou zomaar kunnen, ik ben een beginnend PHP'er.

    Overigens is weergave best een leuk begrip:



    [ Bericht 13% gewijzigd door slacker_nl op 26-08-2008 16:20:17 ]
    JortKdinsdag 26 augustus 2008 @ 16:13
    Ik kan me best voorstellen dat je zaken niet in de browser hoeft te zien, je kan namelijk ook PHP schrijven die niets hoeft te laten zien, zoals ik zelf met een data mining project bezig ben waarbij er geen output op het scherm komt maar alles in een database geknald word
    Swetseneggerdinsdag 26 augustus 2008 @ 16:21
    quote:
    Op dinsdag 26 augustus 2008 16:13 schreef JortK het volgende:
    Ik kan me best voorstellen dat je zaken niet in de browser hoeft te zien, je kan namelijk ook PHP schrijven die niets hoeft te laten zien, zoals ik zelf met een data mining project bezig ben waarbij er geen output op het scherm komt maar alles in een database geknald word
    Dan vraag je toch niet om enters weergeven Maar goed, dan zal minq opzoek zijn naar EOL's
    tip daarvoor, gebruik gewoon altijd \r\n, werkt op elk OS goed.
    slacker_nldinsdag 26 augustus 2008 @ 16:24
    quote:
    Op dinsdag 26 augustus 2008 16:21 schreef Swetsenegger het volgende:

    [..]

    Dan vraag je toch niet om enters weergeven Maar goed, dan zal minq opzoek zijn naar EOL's
    tip daarvoor, gebruik gewoon altijd \r\n, werkt op elk OS goed.
    Nee hoor. Daarom heb ik dos2unix tools nodig om die ^M characters weg te halen uit files die vanuit Windows aangemaakt worden....
    Swetseneggerdinsdag 26 augustus 2008 @ 16:25
    Mijn windows aangemaakte PHP's werken prima op een OSX php installatie en op een linux installatie. Inclusief \r\n
    CraZaaydinsdag 26 augustus 2008 @ 16:31
    quote:
    Op dinsdag 26 augustus 2008 16:25 schreef Swetsenegger het volgende:
    Mijn windows aangemaakte PHP's werken prima op een OSX php installatie en op een linux installatie. Inclusief \r\n
    Hier ook. De meeste webservers gebruiken Linux, ken niemand met Windows die voor ieder bestand voor 'ie het gaat uploaden de regeleindes moet converteren.
    Swetseneggerdinsdag 26 augustus 2008 @ 16:37
    quote:
    Op dinsdag 26 augustus 2008 16:31 schreef CraZaay het volgende:

    [..]

    Hier ook. De meeste webservers gebruiken Linux, ken niemand met Windows die voor ieder bestand voor 'ie het gaat uploaden de regeleindes moet converteren.
    Nee klopt, ook in mailbody's en dergelijke gebruik ik gewoon \r\n en dat gaat altijd goed, ook als die mail op een OSX systeem binnen komt. Ik heb die tip ook ergens van een developper site getrokken. Zo van, de quick & dirty methode is gewoon altijd \r\n gebruiken dat werkt prima op elk OS. Tot op heden ben ik er geen probleem mee tegen gekomen, en ik ontwikkel altijd door elkaar op windows en OSX.
    slacker_nldinsdag 26 augustus 2008 @ 16:41
    quote:
    Op dinsdag 26 augustus 2008 16:31 schreef CraZaay het volgende:

    [..]

    Hier ook. De meeste webservers gebruiken Linux, ken niemand met Windows die voor ieder bestand voor 'ie het gaat uploaden de regeleindes moet converteren.
    Uploaden met FTP in ASCII mode.

    [ Bericht 0% gewijzigd door slacker_nl op 26-08-2008 16:52:42 (format => mode..) ]
    CraZaaydinsdag 26 augustus 2008 @ 16:51
    Ik gebruik inderdaad ook altijd \r\n.
    Xcaliburdinsdag 26 augustus 2008 @ 17:29
    Zinloze discussie over het weergeven van linebreaks zeg

    @Swets: waarom wil je die dingen in je database zetten? Waarom sla je niet gewoon de locatie van het bestand op?
    JortKdinsdag 26 augustus 2008 @ 17:59
    quote:
    Op dinsdag 26 augustus 2008 17:29 schreef Xcalibur het volgende:
    Zinloze discussie over het weergeven van linebreaks zeg

    @Swets: waarom wil je die dingen in je database zetten? Waarom sla je niet gewoon de locatie van het bestand op?
    Dan is het niet meer portable denk ik

    En je zit niet met rechten problemen
    Swetseneggerdinsdag 26 augustus 2008 @ 18:18
    quote:
    Op dinsdag 26 augustus 2008 17:29 schreef Xcalibur het volgende:
    Zinloze discussie over het weergeven van linebreaks zeg

    @Swets: waarom wil je die dingen in je database zetten? Waarom sla je niet gewoon de locatie van het bestand op?
    OMdat ze al fysiek op een locatie staan van gemapte schijven en die locatie kan wijzigen. Om ze nu op een andere server weer fysiek weg te zetten is niet handig, dus vandaar in een blob. Maar ik ga wel eens kijken of het anders kan
    SuperRembodinsdag 26 augustus 2008 @ 18:38
    @Swetsenegger
    Ik weet niet wat je nu voor "oplossing" hebt, maar addslashes() is als je met MSSql werkt so wie so zinloos. (In MSSql moet je een ' niet escapen met een \ maar met een '). M<et base64 omzelf je dat, maar efficient is 't zeker niet.
    Swetseneggerdinsdag 26 augustus 2008 @ 19:50
    quote:
    Op dinsdag 26 augustus 2008 18:38 schreef SuperRembo het volgende:
    @Swetsenegger
    Ik weet niet wat je nu voor "oplossing" hebt, maar addslashes() is als je met MSSql werkt so wie so zinloos. (In MSSql moet je een ' niet escapen met een \ maar met een '). M<et base64 omzelf je dat, maar efficient is 't zeker niet.
    Het gaat mis met bijzondere tekens. Ik heb al gevonden op internet dat dat een bug lijkt te zijn in php 4.x Ik heb dus vandaag de server geupdate morgen even kijken of het nu wel werkt. Zo niet, ga ik toch kijken of ik relatief naar filesystem kan linken.
    CraZaaydinsdag 26 augustus 2008 @ 20:08
    quote:
    Op dinsdag 26 augustus 2008 18:38 schreef SuperRembo het volgende:

    (In MSSql moet je een ' niet escapen met een \ maar met een ').
    In MySQL eigenlijk stiekem ook toch, ook al gebruikt iedereen backslashes?
    SuperRembodinsdag 26 augustus 2008 @ 20:39
    quote:
    Op dinsdag 26 augustus 2008 20:08 schreef CraZaay het volgende:

    [..]

    In MySQL eigenlijk stiekem ook toch, ook al gebruikt iedereen backslashes?
    Dat wist ik niet, maar het werkt inderdaad op beide manieren.
    CraZaaydinsdag 26 augustus 2008 @ 20:44
    Ben nu bezig met Shindig, erg leuk. Zelf Google Gadgets draaien
    urseldinsdag 26 augustus 2008 @ 23:23
    Is er trouwens iemand een beetje bekend met Smarty, of heeft iemand anders een verklaring voor het volgende:

    De klant logt in op de test-site. Alles werkt goed qua lay-out. Echter, als hij naar het beheer van de site gaat zou hij een lijst moeten zijn met alle pagina's die er zijn. Maar dat ziet hij dus niet.

    Heb voor gemak even snel in een table geknalt om verder te testen en deze table een border gegeven. Dat ziet hij allemaal, echter de desbetreffende tekst en lijst met alle pagina's niet.
    Hij ziet dus alleen een lege table en wel de borders van deze table.

    Log ik nu in op de site met zijn inlog gegevens, dan zie ik wel alles gewoon..
    Het ligt dus niet aan het user profiel.

    Nu weet ik wel dat hij op een wat ouderen IE draait (IE6 en Win 2000), maar dat kan toch geen reden van dit probleem zijn??
    #ANONIEMdinsdag 26 augustus 2008 @ 23:25
    quote:
    Op dinsdag 26 augustus 2008 23:23 schreef ursel het volgende:
    Is er trouwens iemand een beetje bekend met Smarty, of heeft iemand anders een verklaring voor het volgende:

    De klant logt in op de test-site. Alles werkt goed qua lay-out. Echter, als hij naar het beheer van de site gaat zou hij een lijst moeten zijn met alle pagina's die er zijn. Maar dat ziet hij dus niet.

    Heb voor gemak even snel in een table geknalt om verder te testen en deze table een border gegeven. Dat ziet hij allemaal, echter de desbetreffende tekst en lijst met alle pagina's niet.
    Hij ziet dus alleen een lege table en wel de borders van deze table.

    Log ik nu in op de site met zijn inlog gegevens, dan zie ik wel alles gewoon..
    Het ligt dus niet aan het user profiel.

    Nu weet ik wel dat hij op een wat ouderen IE draait (IE6 en Win 2000), maar dat kan toch geen reden van dit probleem zijn??
    Document wellformdness nagekeken?
    slakkiedinsdag 26 augustus 2008 @ 23:32
    En wat als die gast de page source opvraagt?

    En kan je niet IE6 installen op je eigen machine (of via een virtual machine) om dat iig na te kijken..
    frenchfriesdinsdag 26 augustus 2008 @ 23:56
    http://tredosoft.com/Multiple_IE is daar handig voor.

    Wat je kan doen is vragen of hij de bron van de pagina een keer door wil sturen, als die gewoon overeen komt met die die jij hebt, ligt het in ieder geval aan een verschil aan de client-side.
    CraZaaywoensdag 27 augustus 2008 @ 08:16
    Vandaar dat je ook zelf de mogelijkheid moet hebben om op alle bekende browsers te testen. Hoe kun je nou iets ontwikkelen als je het niet kunt testen op IE6
    Xcaliburwoensdag 27 augustus 2008 @ 08:27
    quote:
    Op dinsdag 26 augustus 2008 18:18 schreef Swetsenegger het volgende:
    OMdat ze al fysiek op een locatie staan van gemapte schijven en die locatie kan wijzigen. Om ze nu op een andere server weer fysiek weg te zetten is niet handig, dus vandaar in een blob. Maar ik ga wel eens kijken of het anders kan
    Kan je dan niet beter het pad naar de schijf in de config zetten ofzo?
    Zodat je die alleen hoeft te wijzigen als het nodig is, of wisselt het te onvoorspelbaar daarvoor?

    @ursel: lijkt me geen Smarty probleem, maar gewoon HTML

    Ik heb hetzelfde probleem gehad met een LI met floatende elementen erin, waarbij ik van de UL een Scriptaculous Sortable had gemaakt (javascript dus). Daar viel ineens de content van de spans weg in IE6. FF2/3 en IE7 was niks aan de hand
    urselwoensdag 27 augustus 2008 @ 09:16
    quote:
    Op dinsdag 26 augustus 2008 23:56 schreef frenchfries het volgende:
    http://tredosoft.com/Multiple_IE is daar handig voor.

    Wat je kan doen is vragen of hij de bron van de pagina een keer door wil sturen, als die gewoon overeen komt met die die jij hebt, ligt het in ieder geval aan een verschil aan de client-side.
    Vergeten te melden dat ik dat geinstalleerd heb en ermee getest..
    Desalniettemin als je hem opent als IE 5.5 bijv. en naar de properties kijkt geeft die nog wel aan dat het 7.0 is. Dacht dat het mogelijk een soort van 5.5 was.

    Daarnaast is het probleem alleen in het beheer gedeeltes en ziet hij de items bij de overzicht pagina;s niet. Alle andere pagina;s werken wel gewoon goed..
    CraZaaywoensdag 27 augustus 2008 @ 09:18
    Die IE's naast elkaar draaien is altijd tricky; je weet eigenlijk nooit of het nou echt goed is. Het beste is gewoon meerdere virtual machines ofzo en daar verschillende Windows instances in draaien met ieder hun eigen IE.
    urselwoensdag 27 augustus 2008 @ 09:22
    quote:
    Op woensdag 27 augustus 2008 08:27 schreef Xcalibur het volgende:

    [..]

    Kan je dan niet beter het pad naar de schijf in de config zetten ofzo?
    Zodat je die alleen hoeft te wijzigen als het nodig is, of wisselt het te onvoorspelbaar daarvoor?
    Gevaar hierbij is wel dat als je een kopie van de DB verplaatst naar je andere omgeving dat je dan niet moet vergeten dit ook aan te passen mocht de 2 locaties niet identiek zijn.
    quote:
    @ursel: lijkt me geen Smarty probleem, maar gewoon HTML

    Ik heb hetzelfde probleem gehad met een LI met floatende elementen erin, waarbij ik van de UL een Scriptaculous Sortable had gemaakt (javascript dus). Daar viel ineens de content van de spans weg in IE6. FF2/3 en IE7 was niks aan de hand
    Mja, daarom snap ik het ook niet..
    Gezien het bij mij en iedere andere die het getest heeft wel werkt moet het idd wel gewoon aan de client kant zitten. Maarja, hoe dan te fixen of het euvel uberhaupt vinden..

    Ga denk ik wel ff bij klantje maar langs dan.
    Mirelwoensdag 27 augustus 2008 @ 19:10
    Ik heb een textbox waarbij ik wil dat je alleen 1 t/m 31 in kan vullen. Het maximum aantal cijfers dat je in kan tikken staat dan ook op 2.

    Hoe kan ik dat maken met een if else statement in de action.php? Het is neem ik aan met de string $_POST['dag']; die je dan in de statement moet zetten of niet?
    HuHuwoensdag 27 augustus 2008 @ 19:26
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $getal 
    = (int)$_POST['dag'];
    if (
    $dag >= && $dag <= 31) {
      
    // De dag is goed
    } else {
      
    // De dag is niet goed
    }
    ?>


    Je kunt dit ook in de HTML al een beetje doen door de gebruiker geen tekstveld te geven die hij kan invullen, maar een drop-down box waarin alleen de getallen 1 t/m 31 staan. Dat is alleen niet genoeg, maar voorkomt wel fouten.
    Chandlerwoensdag 27 augustus 2008 @ 21:05
    Iemand een idee hoe ik het volgende simpel kan realiseren?

    Stel ik heb een array
    $arr = array(1 => 20, 2 => 32, 3 => 12, 4 => 40, 5 => 25, 6 => 75);

    en ik wil dit zo in een string krijgen
    [1, 29], [2, 32], [3, 12], [4, 40], [5, 25], [6, 75]

    want nu doe ik het zo:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php
    function toJsArray($arr)
    {
        
    $num count($arr);
        
    $str "";
        
    $x 0;

        foreach (
    $arr AS $id => $key)
        {
            
    $x++;

            
    $str .= "[" $id "," $key "]" . (($x $num) ? "," "");
        }

        return 
    $str;
    }
    ?>


    [ Bericht 5% gewijzigd door Chandler op 27-08-2008 21:08:51 (iets vergeten :D) ]
    Farenjiwoensdag 27 augustus 2008 @ 21:14
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    function toJsArray($arr) {
        
    $str '';

        foreach (
    $arr AS $id => $key) {
            
    $str .= '[' $id ',' $key '],';
        }

        return 
    substr($str0, -1);
    }
    ?>
    HuHuwoensdag 27 augustus 2008 @ 21:27
    Dat met die komma aan het einde kun je ook nog oplossen met een implode:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    function toJsArray($arr)
    {
      
    $result = array();
      foreach (
    $arr as $id => $key) {
        
    $result[] = '[' $id ',' $key ']';
      }
      return 
    implode(','$result);
    }
    ?>
    Chandlerwoensdag 27 augustus 2008 @ 21:50
    Ik wist wel dat het korter kon tnx
    ralfiewoensdag 27 augustus 2008 @ 23:03
    1
    2
    3
    4
    5
    6
    7
    <?php
    function toJsArray($ar)
    {
       foreach(
    $ar as $k => &$it$it="[{$k}, {$it}]";
       return 
    join(', ',$ar);
    }
    ?>
    SuperRembowoensdag 27 augustus 2008 @ 23:06
    quote:
    Op woensdag 27 augustus 2008 21:05 schreef Chandler het volgende:
    Iemand een idee hoe ik het volgende simpel kan realiseren?

    Stel ik heb een array
    $arr = array(1 => 20, 2 => 32, 3 => 12, 4 => 40, 5 => 25, 6 => 75);

    en ik wil dit zo in een string krijgen
    [1, 29], [2, 32], [3, 12], [4, 40], [5, 25], [6, 75]
    Ik weet niet wat je van plan bent, maar als het de bedoeling is om die array in javascript te gebruiken kan json_encode() erg handig zijn.
    Lightdonderdag 28 augustus 2008 @ 00:37
    quote:
    Op woensdag 27 augustus 2008 19:26 schreef HuHu het volgende:

    [ code verwijderd ]

    Je kunt dit ook in de HTML al een beetje doen door de gebruiker geen tekstveld te geven die hij kan invullen, maar een drop-down box waarin alleen de getallen 1 t/m 31 staan. Dat is alleen niet genoeg, maar voorkomt wel fouten.
    Ik zou wel
    $getal = (int)$_POST['dag'];
    vervangen door
    $dag = (int)$_POST['dag'];

    Past iets beter bij de rest van de code
    slakkiedonderdag 28 augustus 2008 @ 01:51
    quote:
    Op woensdag 27 augustus 2008 19:26 schreef HuHu het volgende:

    [ code verwijderd ]
    en een is_numeric() test erbij gooien zodat je geen warnings krijgt op je int conversie.. en dus de user kan teruggooien naar je input scherm ofzo.
    Xcaliburdonderdag 28 augustus 2008 @ 09:00
    quote:
    Op woensdag 27 augustus 2008 21:05 schreef Chandler het volgende:
    Iemand een idee hoe ik het volgende simpel kan realiseren?

    Stel ik heb een array
    $arr = array(1 => 20, 2 => 32, 3 => 12, 4 => 40, 5 => 25, 6 => 75);

    en ik wil dit zo in een string krijgen
    [1, 29], [2, 32], [3, 12], [4, 40], [5, 25], [6, 75]

    want nu doe ik het zo:
    [ code verwijderd ]


    Ik vind het overigens erg verwarrend dat de value in je foreach key noemt, in plaats van de key
    Lightdonderdag 28 augustus 2008 @ 10:55
    quote:
    Op donderdag 28 augustus 2008 01:51 schreef slakkie het volgende:

    [..]

    en een is_numeric() test erbij gooien zodat je geen warnings krijgt op je int conversie.. en dus de user kan teruggooien naar je input scherm ofzo.
    Of gewoon intval() gebruiken.
    Xcaliburdonderdag 28 augustus 2008 @ 19:49
    quote:
    Op donderdag 21 augustus 2008 21:16 schreef Xcalibur het volgende:
    ik probeer PostgreSQL te installeren, maar m'n PHP begrijpt het niet

    PostgreSQL draait op zich prima, ik heb de bijbehorende DLL in m'n extensionmap staan, maar als ik de regel in php.ini uitcomment krijg ik de melding "Unable to load dynamic library". Ik weet zeker dat het pad goed is, bovendien heb ik geexpirimenteerd met verschillende versies van het bestand wat me verschillende foutmeldingen heeft opgeleverd...

    Mis ik een ander bestand? Moet ik een bepaalde versie hebben? Moet er nog iets in m'n php.ini gebeuren?
    Schopje.
    Dit werkt nog steeds niet?
    GlowMousedonderdag 28 augustus 2008 @ 19:52
    quote:
    Op donderdag 28 augustus 2008 19:49 schreef Xcalibur het volgende:

    [..]

    Schopje.
    Dit werkt nog steeds niet?
    Onder Windows neem ik aan, staat het path goed?
    Xcaliburdonderdag 28 augustus 2008 @ 19:58
    Onder windows ja.

    Je bedoelt het path naar de extensions dir, die staat goed
    Als ik de .dll vervang door andere versies krijg ik ook andere foutmeldingen...

    Andere extensions werken ook naar behoren overigens
    GlowMousedonderdag 28 augustus 2008 @ 20:00
    Nee, path de omgevingsvariabele. Ziehier.
    Xcaliburdonderdag 28 augustus 2008 @ 20:29
    Ah, die path. Ja, die staat ook goed
    Chandlervrijdag 29 augustus 2008 @ 09:15
    quote:
    Op donderdag 28 augustus 2008 09:00 schreef Xcalibur het volgende:
    Ik vind het overigens erg verwarrend dat de value in je foreach key noemt, in plaats van de key
    Het mag dan wat verwarrend zijn, maar hoe je het ook noemt het gaat om de output

    Maar $id => $content zou beter zijn
    HuHuvrijdag 29 augustus 2008 @ 09:27
    quote:
    Op donderdag 21 augustus 2008 19:04 schreef HuHu het volgende:
    Weet iemand of het mogelijk is met MySQL middels een TRIGGER een INSERT te voorkomen?

    Dus iets als:
    [ code verwijderd ]

    Een DELETE bij een AFTER INSERT gaat niet, omdat de zojuist ingevoegde rij dan nog gelocked is.
    Niemand die hier iets op weet? Of een andere manier om een INSERT te voorkomen middels MySQL?
    GlowMousevrijdag 29 augustus 2008 @ 09:32
    quote:
    Op donderdag 28 augustus 2008 20:29 schreef Xcalibur het volgende:
    Ah, die path. Ja, die staat ook goed
    $_ENV['path'] toont dat ook (staat hier op oa. d:\program files (x86)\php)? Dat is een van de weinige dingen die fout kan gaan. Hier draait postgresql prima onder de php-5.2.5 win32 binary.

    HuHu: http://www.brokenbuild.co(...)lete-with-a-trigger/
    HuHuvrijdag 29 augustus 2008 @ 09:41
    quote:
    Op vrijdag 29 augustus 2008 09:32 schreef GlowMouse het volgende:

    [..]

    $_ENV['path'] toont dat ook (staat hier op oa. d:\program files (x86)\php)? Dat is een van de weinige dingen die fout kan gaan. Hier draait postgresql prima onder de php-5.2.5 win32 binary.

    HuHu: http://www.brokenbuild.co(...)lete-with-a-trigger/
    Hoe heb je die zo snel gevonden... ik kon niets vinden met Google. Zat waarschijnlijk weer op de verkeerde woorden te zoeken .

    Maar het is wel een beetje vieze manier, er is dus blijkbaar geen nette oplossing. Zelf had ik het nu al opgelost door ongeldige waarden in een kolom te stoppen, waardoor er een error optrad die vervolgens werd genegeerd. Eens kijken of deze manier geen error oplevert, dat is dan wel beter .
    GlowMousevrijdag 29 augustus 2008 @ 09:43
    quote:
    Op vrijdag 29 augustus 2008 09:41 schreef HuHu het volgende:

    [..]

    Hoe heb je die zo snel gevonden... ik kon niets vinden met Google. Zat waarschijnlijk weer op de verkeerde woorden te zoeken .

    Maar het is wel een beetje vieze manier, er is dus blijkbaar geen nette oplossing. Zelf had ik het nu al opgelost door ongeldige waarden in een kolom te stoppen, waardoor er een error optrad die vervolgens werd genegeerd. Eens kijken of deze manier geen error oplevert, dat is dan wel beter .
    http://www.google.nl/search?hl=nl&safe=off&q=mysql+abort+insert&btnG=Zoeken&meta=
    Hier zal ook wel een error door komen.
    Xcaliburvrijdag 29 augustus 2008 @ 10:19
    quote:
    Op vrijdag 29 augustus 2008 09:32 schreef GlowMouse het volgende:

    [..]

    $_ENV['path'] toont dat ook (staat hier op oa. d:\program files (x86)\php)? Dat is een van de weinige dingen die fout kan gaan. Hier draait postgresql prima onder de php-5.2.5 win32 binary.
    Ja:

    Path
    C:\Program Files\PHP;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Common Files\Adobe\AGL;C:\Program Files\QuickTime\QTSystem\;C:\Program Files\Microsoft SQL Server\90\Tools\binn\

    Ik draai PHP 5.2.6, maar dat lijkt me niet zo'n probleem verder
    Ik heb echt geen idee waar het aan kan liggen....
    Chandlerzaterdag 30 augustus 2008 @ 10:04
    Ik ben bezig met het optimaliseren van database tabellen, maar loop tegen het volgende aan:

    mijn query:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT fish.id,
                   fish.user_id,
                   fish.catchdate,
                   fish_categories.name,
                   users.username,
                   media.id AS photo_id
            FROM fish
            LEFT JOIN users ON users.id = fish.user_id
            LEFT JOIN media ON media.source_id = fish.id
            LEFT JOIN fish_categories ON fish_categories.id = fish.fish_id
            GROUP BY fish.id
            ORDER BY fish.id DESC
            LIMIT 0,4


    EXPLAIN:
    1
    2
    3
    4
    1 SIMPLE fish ALL NULL NULL NULL NULL 76 Using temporary; Using filesort 
    1 SIMPLE users ref id id 4 nl_visfreaks.fish.user_id 2   
    1 SIMPLE media ALL NULL NULL NULL NULL 135   
    1 SIMPLE fish_categories ref id id 4 nl_visfreaks.fish.fish_id 8   


    Het probleem is dat ik nu op de tabel FISH een filesort heb bij deze zoekactie, en dat schiet niet echt op. Nu wil ik indexes maken voor dit tabel en heb dus (fish_id, user_id en id) geindexeerd maar nog krijg ik deze filesort... weet iemand wat ik fout doe? :D
    Farenjizaterdag 30 augustus 2008 @ 10:23
    Waarom heb je in je fish tabel zowel een id veld als een fish_id veld?
    GlowMousezaterdag 30 augustus 2008 @ 10:27
    Die index deugt niet. Hij staat gewoon op wat velden zonder rekeling te houden met je query. Fish_id is nergens constant, dus wordt de rest van je index niet benut. Ik snap ook niet waarom je dat indexeert: het staat weliswaar in een WHERE, maar je hebt toch altijd alle waarden van fish_id nodig, dus dat heeft geen zin (tenzij je een covering index kunt maken, maar dan weet je wel wat je doet hopelijk).
    Wat hier het beste is, is een index op fish.id, een op users.id, een op media.source_id en een op fish_categories.id.
    Chandlerzaterdag 30 augustus 2008 @ 11:01
    Alle .id's zijn geindexeerd (tenminste qua opzet).

    fish_id is het type vis, beetje stomme noemer, zal deze tzt overal renamen qua type!
    GlowMousezaterdag 30 augustus 2008 @ 11:08
    Als alle genoemde velden ge๏ndexeerd staan, kan het nog zijn dat MySQL denkt weinig voordeel te halen bij een index. Je kunt dan FORCE INDEX gebruiken op de indices die ik noemde. Met name door de LIMIT denk ik dat je daar veel voordeel door haalt op de fish-tabel (4 rijen ophalen ipv allemaal).
    Bij media zou ik verwachten dat MySQL de index wel uit zichzelf benut.
    Chandlerzaterdag 30 augustus 2008 @ 11:28
    Dat had ik idd ook verwacht maar helaas, ook heb ik net geprobeerd om alle _id's te indexeren maar dat resulteerde ook niet in een snellere site... het tegenovergestelde zelfs
    GlowMousezaterdag 30 augustus 2008 @ 11:30
    Zeg eens welke velden nu allemaal ge๏ndexeerd staan (of beter, geef je CREATE TABLE query), en toon EXPLAIN eens met die FORCE INDEX.
    Chandlerzaterdag 30 augustus 2008 @ 11:35
    Ik heb even een create table dump gemaakt:
    http://www.bruggema.nl/tables.sql

    Dit zijn alle tabellen die gebruikt worden.

    Force index snap ik nog niet geheel, ben de documentatie nog aan het doorspitten
    GlowMousezaterdag 30 augustus 2008 @ 11:40
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT fish.id,
                   fish.user_id,
                   fish.catchdate,
                   fish_categories.name,
                   users.username,
                   media.id AS photo_id
            FROM fish FORCE INDEX(id)
            LEFT JOIN users ON users.id = fish.user_id
            LEFT JOIN media ON media.source_id = fish.id
            LEFT JOIN fish_categories ON fish_categories.id = fish.fish_id
            GROUP BY fish.id
            ORDER BY fish.id DESC
            LIMIT 0,4


    En zoveel keys zijn het nog niet. Inserts/updates gaan wel wat trager nu, dus als je relatief veel inserts of updates hebt, moet je het aantal indices tot een minimum beperken. En indices die je helemaal niet gebruikt kun je sowieso beter helemaal weglaten.
    Chandlerzaterdag 30 augustus 2008 @ 11:42
    Nu heb ik die query gedaan en kreeg opeens te zien dat na het weghalen van de FORCE het opeens geen filesystem meer gebruikt als sorteer optie!? hoe kan dat?
    GlowMousezaterdag 30 augustus 2008 @ 11:47
    Filesort hoeft niet van het filesystem gebruik te maken hoor. En hoe het kan? Indices stonden net toch verkeerd, of heb je een analyze table gedaan?
    Chandlerzaterdag 30 augustus 2008 @ 11:56
    ik had niets aangepast, maar blijkbaar had MySQL zelf even de indexes aangemaakt oid.
    GlowMousezaterdag 30 augustus 2008 @ 11:58
    Is dat even makkelijk
    Chandlerzaterdag 30 augustus 2008 @ 12:00
    Maar toch is de site nog sloom, maar goed; dan heb ik weer wat te doen.

    -edit-doethetal
    GlowMousezaterdag 30 augustus 2008 @ 12:02
    Laat hij standaard gewoon zien. Maar ik zou er een scriptje voor maken. Voeg dan wel SQL_NO_CACHE toe aan je query, anders zul je zien dat de meest complexe queries anders in no-time worden uitgevoerd. En houd er ook rekening mee dat tabellen op een gegeven moment in het geheugen zitten, en het dan een stuk sneller gaat dan wanneer iemand je site bezoekt wanneer die tabel niet meer in het geheugen zit.
    Chandlerzondag 31 augustus 2008 @ 21:40
    Nu we toch bezig zijn met indexes, heb ik het volgende; dit heb ik ergens gelezen op het internet en wilde eens weten of dit klopt

    Stel je hebt een tabel waarin je personen zet.
    voornaam,
    achternaam
    leeftijd,
    woonplaats

    en nu heb je op deze tabel heel veel queries draaien, maar je wilt zorgen dat dit alles snel gaat. De meeste queries zoeken op voornaam, achternaam en of woonplaats.

    Dan moest je volgens het artikel de volgorde van je INDEXES volgen (bij gecombineerde indexes).
    voorbeeld INDEX (voornaam, achternaam, woonplaats)

    Volgens het artikel waren de volgende zoek mogelijkheden mogelijk:
    SELECT voornaam, achternaam, leefttijd, woonplaats
    FROM personen
    WHERE woonplaats = 'Groningen'
    AND achternaam = 'Test'
    AND voornaam = 'Eric'

    maar niet als je zo zocht:
    SELECT voornaam, achternaam, leefttijd, woonplaats
    FROM personen
    WHERE voornaam = 'Eric'
    AND achternaam = 'Test'
    AND woonplaats = 'Groningen'

    Klopt dit? zit nu niet echter een machine met MySQL en of wachtwoorden van sites en zo ja, kan iemand dit dan eens duidelijk en zo mogelijk volledig uitleggen?
    GlowMousezondag 31 augustus 2008 @ 21:46
    Nee klopt niet. Lees http://dev.mysql.com/doc/(...)-column-indexes.html eens door.

    Belangrijkste is "A multiple-column index can be considered a sorted array containing values that are created by concatenating the values of the indexed columns"
    Daarom werkt bij jou index zoeken op WHERE achternaam="blah" niet, maar op WHERE achternaam="blah" AND voornaam="hoi" wel. En daarom werkt het bij een OR niet zo goed, omdat hij alleen het tweede (en derde) stuk van een index gebruiken wanneer het eerste (en tweede) stuk constant is.
    Chandlerzondag 31 augustus 2008 @ 22:04
    In het voorbeeld dat ik net las stond het volgende:
    quote:
    The name index is an index over the last_name and first_name columns. The index can be used for queries that specify values in a known range for last_name, or for both last_name and first_name. Therefore, the name index is used in the following queries
    Nu zie ik dat de voorbeelden andersom moesten, dan klopt het!

    nog een mooie quote:
    MySQL cannot use an index if the columns do not form a leftmost prefix of the index gewoon index volgen in je where parameters beginnend van links naar rechts en eventueel meer toevoegen... ?

    ik probeer het allemaal te begrijpen maar't gaat niet zo snel

    dus dit werkt met de index:
    SELECT *
    FROM personen
    WHERE voornaam = 'Eric'

    en

    SELECT *
    FROM personen
    WHERE voornaam = 'Eric'
    AND achternaam = 'Test'

    en dus ook alle 3 en eventueel meer

    SELECT *
    FROM personen
    WHERE voornaam = 'Eric'
    AND achternaam = 'Test'
    AND woonplaats = 'Groningen'
    AND leeftijd < 50

    maar hoe werkt het dan met dit:

    SELECT *
    FROM personen
    WHERE voornaam = 'Eric'
    AND achternaam = 'Test'
    AND leeftijd < 50

    zal deze dan ook de index gebruiken? ik vraag maar hoor
    GlowMousezondag 31 augustus 2008 @ 22:09
    Via voornaam en achternaam (en bij die een na laatste ook woonplaats) haalt hij de rijen op die eraan voldoen, en daarna checkt hij bij die rijen de leeftijd. Daarom is Woonplaats niet zo nuttig om in je index te zetten: tenzij je de query SELECT woonplaats FROM table WHERE voornaam='a' AND achternaam='b' heel vaak gebruikt (zodat je een covering index hebt, maar dat is alleen nuttig als je hem heel vaak gebruikt), omdat er toch niet veel rijen overblijven na selectie op voornaam en achternaam. Want onthoud: hoe langer de index, hoe meer tijd hij kost om bij te werken, en hoe meer tekstvelden in een index, hoe trager hij wordt bij een SELECT-query omdat hij dan erg groot (veel kB's) wordt.

    Overigens zie je via EXPLAIN SELECT ... welk deel van de index naar verwachting benut zal worden.
    Lightzondag 31 augustus 2008 @ 22:13
    quote:
    Op zondag 31 augustus 2008 22:04 schreef Chandler het volgende:
    In het voorbeeld dat ik net las stond het volgende:
    [..]

    Nu zie ik dat de voorbeelden andersom moesten, dan klopt het!

    nog een mooie quote:
    MySQL cannot use an index if the columns do not form a leftmost prefix of the index gewoon index volgen in je where parameters beginnend van links naar rechter en eventueel meer toevoegen... ?
    Als je een index hebt op (lastname, firstname) dan kun je queries doen als:
    SELECT * FROM persons WHERE lastname="Test";
    SELECT * FROM persons WHERE lastname="Test" AND firstname="Eric";
    SELECT * FROM persons WHERE firstname="Eric" AND lastname="Test";
    Maar niet:
    SELECT * FROM persons WHERE firstname="Eric";
    Chandlermaandag 1 september 2008 @ 09:25
    Duidelijk, dan zijn mijn queries toch aardig goed en indexes ook

    Een andere vraag stel ik wil het volgende opslaan.

    71.231
    302.121
    5.1231

    Wat moet ik daarvoor gebruiken? gebruik nu een char, maar dat lijkt me niet echt handig

    Verder heb ik een query die best wel veel tijd neemt en heb deze met analyze geprobeerd te begrijpen:
    1
    2
    3
    4
    5
    EXPLAIN SELECT stats_ip_link.stat_id, count( stats_ip.id ) AS count
    FROM stats_ip_link
    LEFT JOIN stats_ip ON stats_ip.id = stats_ip_link.ip_id
    WHERE UNIX_TIMESTAMP( stats_ip_link.lastdate ) > ( UNIX_TIMESTAMP( NOW( ) ) - ( 60 *15 ) ) 
    GROUP BY stats_ip_link.stat_id 


    nu krijg ik het volgende resultaat:
    1
    2
    3
    id  select_type  table  type  possible_keys  key  key_len  ref  rows  Extra  
    1 SIMPLE stats_ip_link ALL NULL NULL NULL NULL 70168 Using where; Using temporary; Using filesort 
    1 SIMPLE stats_ip eq_ref PRIMARY PRIMARY 4 gfxstatcom_db.stats_ip_link.ip_id 1 Using index 


    nu heb ik op het tabel stats_ip_link een index op stat_id en stat_ip en een index op 'lastdate` maar nog steeds is deze sloom

    Anyone? of is het handiger dat ik lastdate en firstdate (beiden datetime) verander naar timestamp oid?

    [ Bericht 33% gewijzigd door Chandler op 01-09-2008 09:44:02 ]
    GlowMousemaandag 1 september 2008 @ 10:21
    Die nummers kun je het beste opslaan als een mediumint (signed/unsigned, afhankelijk van of je wel/geen negatieve nummers tegenkomt).

    De index op stats_ip_link is lastig: je kunt hem op lastdate zetten voor de WHERE, je kunt hem op stat_id zetten voor de GROUP BY, maar op (lastdate,stat_id) heeft het geen zin omdat lastdate niet constant is en stat_id daarna niet meer benut kan worden. Het beste lijkt mij hier een index op lastdate, omdat hoe langer je die tabel houdt, je na toepassen van de WHERE altijd ongeveer evenveel resultaten overhoudt, zodat het in de loop der tijd niet langzamer wordt.
    Die index moet wel benut kunnen worden, en als je een functie op een kolom loslaat, kan dat niet meer. Zelf werk ik altijd met unix timestamps in een database, maar jouw aanpak moet ook kunnen werken. Kun je niet iets doen als lastdate > mysqls datetime formaat van 15 minuten geleden?
    Chandlermaandag 1 september 2008 @ 11:06
    Ook een index op lastdate werkt niet qua snelheid bevordelijk!
    GlowMousemaandag 1 september 2008 @ 11:07
    Dat is gek, welke query gebruik je nu, en hoeveel rijen voldoen er aan WHERE UNIX_TIMESTAMP( stats_ip_link.lastdate ) > ( UNIX_TIMESTAMP( NOW( ) ) - ( 60 *15 ) ) ?
    Chandlermaandag 1 september 2008 @ 11:23
    80 rijen maar dit kan per seconde veranderen en de query die ik eerder ook al gepost heb

    1
    2
    3
    4
    5
    SELECT stats_ip_link.stat_id, count( stats_ip.id ) AS count
    FROM stats_ip_link
    LEFT JOIN stats_ip ON stats_ip.id = stats_ip_link.ip_id
    WHERE UNIX_TIMESTAMP( stats_ip_link.lastdate ) > ( UNIX_TIMESTAMP( NOW( ) ) - ( 60 *15 ) ) 
    GROUP BY stats_ip_link.stat_
    GlowMousemaandag 1 september 2008 @ 11:32
    Met 80 zou hij heel snel moeten zijn. Moet je wel dit in acht nemen:
    quote:
    Die index moet wel benut kunnen worden, en als je een functie op een kolom loslaat, kan dat niet meer. Zelf werk ik altijd met unix timestamps in een database, maar jouw aanpak moet ook kunnen werken. Kun je niet iets doen als lastdate > mysqls datetime formaat van 15 minuten geleden?
    En die query moet ook wachten als de tabel gepdatet wordt, dus dat kan wel wat traagheid veroorzaken, maar met een rij of 80 is het anders heel snel als die index benut kan worden.
    Chandlermaandag 1 september 2008 @ 11:38
    Zou ik ook zeggen maar helaas het blijft toch sloom

    Er staan ruim 70.000 items in dit tabel, waarbij lastdate geindexeerd is!. Je zou denken dat de server dit binnen 0.01 seconde zou moeten kunnen uitzoeken maar helaas, dat doet het niet
    GlowMousemaandag 1 september 2008 @ 11:41
    Hoe ziet je query er dan nu uit?
    Chandlermaandag 1 september 2008 @ 11:42
    Bedoel je met explain of zonder explain? zonder is de zelfde als bovenstaande
    GlowMousemaandag 1 september 2008 @ 11:43
    Ik quote mezelf toch niet voor niks? f(kolom) kan niet ge๏ndexeerd worden, dus moet je je query aanpassen.
    Chandlermaandag 1 september 2008 @ 11:45
    Ik snap je niet helemaal (probeer het wel hoor )
    GlowMousemaandag 1 september 2008 @ 11:48
    Je query moet in deze vorm staan:
    1
    2
    3
    4
    5
    SELECT stats_ip_link.stat_id, count( stats_ip.id ) AS count
    FROM stats_ip_link
    LEFT JOIN stats_ip ON stats_ip.id = stats_ip_link.ip_id
    WHERE stats_ip_link.lastdate > .......
    GROUP BY stats_ip_link.stat_id

    MySQL is niet slim genoeg om in te zien dat UNIX_TIMESTAMP een monotone functie is.
    Chandlermaandag 1 september 2008 @ 12:18
    Ik zie idd dat de snelheid bepaald wordt door unix_timestamp

    1
    2
    3
    4
    5
    SELECT stats_ip_link.stat_id, count( stats_ip.id ) AS count
    FROM stats_ip_link
    LEFT JOIN stats_ip ON stats_ip.id = stats_ip_link.ip_id
    WHERE stats_ip_link.lastdate > ( NOW( ) - ( 60 *15 ) ) 
    GROUP BY stats_ip_link.stat_id
    deze query duurde 0.022 terwijl deze (vorige) ruim 0.7xxx aan tijd nam.

    Echter verschillen beide queries qua uitkomst :{
    GlowMousemaandag 1 september 2008 @ 12:20
    Dan kijk je naar de output van
    1
    2
    3
    4
    SELECT *
    FROM stats_ip_link
    LEFT JOIN stats_ip ON stats_ip.id = stats_ip_link.ip_id
    WHERE stats_ip_link.lastdate > ( NOW( ) - ( 60 *15 ) ) 

    en kijk je welke rijen er tussenstaan die er niet tussen zouden moeten staan.

    Je ziet zelf al wat er fout gaat met deze query: SELECT NOW( ) , NOW( ) -15 *60
    Chandlermaandag 1 september 2008 @ 12:24
    Ik zie het idd!
    GlowMousemaandag 1 september 2008 @ 12:26
    Doe eens deze query: SELECT NOW(), NOW( ) -15 *60, SUBTIME(NOW(),'0 0:15:0');
    Dan zou je genoeg moeten weten
    Chandlermaandag 1 september 2008 @ 12:29
    Super!!! dat scheelt per query zo'n 0.7xxx seconden!!!

    Maar is het in mijn geval niet handiger om gewoon de timestamp op te slaan?
    GlowMousemaandag 1 september 2008 @ 12:31
    Kwestie van voorkeur
    Chandlermaandag 1 september 2008 @ 12:46
    Zou het geen preformance verschil (op de lange duur) met zich mee brengen? en het scheelt volgens mij ook in de grootte die het op de schijf neemt
    quote:
    TIMESTAMP requires 4 bytes.
    DATETIME requires 8 bytes.
    http://bitfilm.net/2007/08/25/choosing-optimal-mysql-data-types/

    en ik denk dat timestamps gemakkelijker te indexeren zijn (denk ik)
    GlowMousemaandag 1 september 2008 @ 13:03
    Je index wordt de helft kleiner, dus het zal wel wat schelen. Maar dat verschil is heel klein, en wordt nauwelijks groter. Een TIMESTAMP zal op termijn (zeker in 20-30 jaar) trouwens ook naar 8 bytes gaan omdat je anders geen datums na 2037 op kunt slaan.
    Nevermindmaandag 1 september 2008 @ 14:37
    Ik wil in mijn .htaccess alles matchen, behalve afbeeldingen. Ik wil alle afhandeling van de querystring overlaten aan php. Dus:

    http://domein.nl/blaat/bla/bla/bla -> index.php?querystring=blaat/bla/bla/bla
    http://domein.nl/hoi.html -> index.php?querystring=hoi.html
    http://domein.nl/plaatje.png -> geen match

    Dat houdt in dat ook slashes gematcht moeten worden in de RewriteRule, en dat krijg ik niet werkend.

    1
    2
    3
    4
    5
    RewriteEngine On 
    RewriteBase /project

    RewriteCond %{REQUEST_FILENAME} \.^(gif|jpe?g|png)$ [NC]
    RewriteRule ^([A-Za-z0-9-\-.\/]+)$ index.php?input=$1


    Ik zie iets over het hoofd. Afbeeldingen worden wel weergegeven, iets willekeurigs invullen als url geeft een 404.
    slakkiemaandag 1 september 2008 @ 15:09
    Nevermind, dat heeft heul niks met php of mysql te maken.
    Nevermindmaandag 1 september 2008 @ 15:33
    True, maar een nieuw topic openen voor zo'n kleine vraag is ook loos. Lijkt me dat hier veel mensen zijn die het antwoord wel weten
    slakkiemaandag 1 september 2008 @ 17:11
    Jongens, maak je een for-loop in perl? Simpele vraag, kunnen mensen hier vast beantwoorden
    Chandlermaandag 1 september 2008 @ 18:42
    Nog een vraagje, ik wil 2 timestamps gebruiken in 1 tabel, echter krijg ik dit niet voor elkaar.. Error in de zin van dubbele CURRENT_TIME oid. Hoe los ik dit op? of moet ik gewoon INT gebruiken?
    Xcaliburmaandag 1 september 2008 @ 18:45
    Je kunt geen twee timestamps in 1 tabel gebruiken... in ieder geval geen timestamps die automatisch geupdate worden iig. Erg irritant, ik snap ook echt niet waarom dat niet kan
    SuperRembomaandag 1 september 2008 @ 19:15
    quote:
    Op maandag 1 september 2008 18:45 schreef Xcalibur het volgende:
    Je kunt geen twee timestamps in 1 tabel gebruiken... in ieder geval geen timestamps die automatisch geupdate worden iig.
    En waarom zou je dat dan willen
    Xcaliburmaandag 1 september 2008 @ 19:47
    1 voor de create datum (automatisch bij inserten) en 1 voor de laatste wijziging datum (automatisch bij updaten)
    Chandlermaandag 1 september 2008 @ 20:00
    Correct, daarom wil ik 2x een timestamp hebben die niet automatisch geupdated wordt! of een mogelijkheid dat ik 2x een timestamp kan gebruiken!

    -edit-
    je kunt wel twee timestamps gebruiken maar zit er een mแแr aan!. De eerste timestamp zal automatisch geupdated worden en de tweede niet, beetje vervelend

    http://michaelkimsal.com/(...)eatedupdated-values/

    nu is de vraag wat moet ik gebruiken om een alternatieve manier voor timestamp in te kunnen voeren?

    [ Bericht 22% gewijzigd door Chandler op 01-09-2008 20:09:26 ]
    SuperRembomaandag 1 september 2008 @ 20:14
    Kan dit dan niet tegelijk in 1 tabel?
    1
    2
    created TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP


    [edit]
    Dat kan dus blijkbaar niet:
    quote:
    MySQL said:
    #1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
    Vreemd. Maar dan maak je gewoon 1 autoupdate kolom (modified) en de ceated insert je zelf. (Dat insert statement heb je uiteraard maar op 1 plaats staan, dus dat pas je ze aan )

    [ Bericht 38% gewijzigd door SuperRembo op 01-09-2008 20:37:13 ]
    Chandlermaandag 1 september 2008 @ 20:16
    Nee, de eerste moet de modified zijn en de 2e de createdate, en helaas heb ik het in mijn huidig model net andersom
    SuperRembomaandag 1 september 2008 @ 20:17
    quote:
    Op maandag 1 september 2008 20:00 schreef Chandler het volgende:
    je kunt wel twee timestamps gebruiken maar zit er een mแแr aan!. De eerste timestamp zal automatisch geupdated worden en de tweede niet, beetje vervelend
    Wat is het nut van twee kolommen waar altijd dezelfde waarde in staat?
    Chandlermaandag 1 september 2008 @ 20:35
    Hoezo? 1 is voor de aanmaak datum de 2e is voor de laatste update? daar is toch niets het zelfde in? tenzij een record niet geupdated wordt na aanmaak???
    poepeneesjemaandag 1 september 2008 @ 22:20
    Als ik probeer te verbinden met de database van mijn provider PCextreme krijg ik de volgende melding:

    1Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)


    Wie-o-wie weet de oplossing, ik zal diegene eeuwig dankbaar zijn _O_.
    Farenjimaandag 1 september 2008 @ 22:23
    Ik gok dat je niet het juiste ipadres of de juiste hostnaam hebt ingevuld.
    poepeneesjemaandag 1 september 2008 @ 22:28
    quote:
    Op maandag 1 september 2008 22:23 schreef Farenji het volgende:
    Ik gok dat je niet het juiste ipadres of de juiste hostnaam hebt ingevuld.
    quote:
    Database-server: sql10.pcextreme.nl (sql10.pcextreme.nl)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
        $mysqlserver 
    "sql10.pcextreme.nl"
        
    $user "user"
        
    $password "password"
        
    $database "database";
        
        
    $connect mysql_connect($mysqlserver$user$password
        or die (
    mysql_error());
        
    // echo "<p>Er is een connectie opgezet met de MySQL-server: <strong>" . $mysqlserver . "</strong>. ";
            
        
    mysql_select_db($database)
        or die (
    mysql_error()); 
        
    // echo " Van deze MySQL-server is de database <strong>" . $database . "</strong> geselecteerd.</p>";
    ?>
    Hafezmaandag 1 september 2008 @ 23:44
    Ik heb nu twee tabellen,

    users & company.

    tabel company bestaat uit id, naam en uids
    tabel users bestaat uit id en naam

    Nu wil ik in een pagina in een multi select box alle users tonen en meerdere users tegelijkertijd kunnen selecteren en de waarde daarvan toevoegen in tabel company.

    Dus stel ik heb Erik met id 1 en Peter met id 2 en company Microsoft heeft beide users dan komt er in de row van Microsoft te staan: Microsoft met id 1 en uids 1;2 of misschien is dit als array ook mogelijk?

    Wat heb ik is iig een simpel multi select box:
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    echo '<SELECT MULTIPLE SIZE=10>';
    while(
    $row mysql_fetch_array($result)){
    echo 
    '<OPTION VALUE='.$row["id"].'>';
    echo 
    $row["name"];
    }
    echo 
    "</SELECT>";
    ?>


    Nu moeten de waardes van de geselecteerde items alleen toegevoegd worden aan company en juist daar zit ik nu een beetje mee..
    Farenjimaandag 1 september 2008 @ 23:53
    Een veld in mysql bevat altijd 1 waarde; geen lijst van waardes. Dit kan op zich wel maar is echt af te raden, aangezien je dat nauwelijks kan doorzoeken en beheren.

    Je moet jezelf afvragen: kan een user bij meerdere companies horen?

    Zo ja, dan heb je een extra jointabel nodig (met velden company_id en user_id) omdat dit een many 2 many relatie is. Hiermee koppel je de users aan companies

    Als een user maar bij 1 company kan horen, maak je in de user tabel een extra veld company_id.
    GlowMousemaandag 1 september 2008 @ 23:57
    quote:
    Op maandag 1 september 2008 23:53 schreef Farenji het volgende:
    Een veld in mysql bevat altijd 1 waarde; geen lijst van waardes.
    Behalve een veld van het type set, maar die ben ik nog nooit in het wild tegengekomen.
    Hafezdinsdag 2 september 2008 @ 00:07
    Ja een user kan meerdere companies hebben. Ik doe het trouwens zo omdat ik dit voor een complexere situatie op hetzelfde manier moet gaan doen, een company row moet dus meerdere waardes van users kunnen bevaten in uids, ik hoop dat dit toch op de een of ander manier mogelijk is?

    Het uiteindelijke doel is om in de uids van het bedrijf te doorzoeken waar er allemaal bijv uids 1 staat en alleen de namen van de bedrijven die daarbij horen toe te voegen.

    Nogmaals dit slaat natuurlijk nergens op, maar dit is een test voor een complexere situatie waar ik geen andere keus heb op dit moment.
    Xcaliburdinsdag 2 september 2008 @ 08:22
    Dat wordt toch echt een koppeltabel maken dan
    CraZaaydinsdag 2 september 2008 @ 08:49
    quote:
    Op dinsdag 2 september 2008 00:07 schreef Hafez het volgende:

    Nogmaals dit slaat natuurlijk nergens op, maar dit is een test voor een complexere situatie waar ik geen andere keus heb op dit moment.
    Dan wordt het tijd om ander werk te zoeken of de opdracht te weigeren. Serieus. Je gebruikt een relationele database.
    Chandlerdinsdag 2 september 2008 @ 08:52
    Ik ben er al achter hoe je meerdere timestamps kunt gebruiken in een tabel (ongeacht of het nuttig is of niet).

    CREATE TABLE t
    (
    ts1 TIMESTAMP NULL DEFAULT NULL,
    ts2 TIMESTAMP NULL DEFAULT 0,
    ts3 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
    );

    zet default op NULL

    en ik had in het topic wat gemist
    quote:
    Die nummers kun je het beste opslaan als een mediumint (signed/unsigned, afhankelijk van of je wel/geen negatieve nummers tegenkomt).
    dit ging over nummers met een punt bv

    832.121
    432.111
    52.112

    nu wil ik ze ook precies zo opslaan (met de punt) en dat doe ik nu in een varchar 10, echter zou ik willen weten of hier ook een andere functie voor is?

    [ Bericht 49% gewijzigd door Chandler op 02-09-2008 09:38:47 ]
    Xcaliburdinsdag 2 september 2008 @ 09:38
    Werkt dat ook met een ON UPDATE ?
    Want het automatisch updaten vind ik interessanter dan het automatisch vullen bij het inserten

    Edit: beetje je post zitten editten
    Dit ging dus over de timestamps
    Chandlerdinsdag 2 september 2008 @ 10:07
    Ik heb de timestamps aangepast dat het niet automatisch updated, aangezien ik bij een ON UPDATE zelf deze kolom aanpas
    CraZaaydinsdag 2 september 2008 @ 10:58
    quote:
    Op dinsdag 2 september 2008 08:52 schreef Chandler het volgende:

    nu wil ik ze ook precies zo opslaan (met de punt) en dat doe ik nu in een varchar 10, echter zou ik willen weten of hier ook een andere functie data type voor is?
    Wat denk je er zelf van

    RTFM: http://dev.mysql.com/doc/refman/5.0/en/data-types.html
    Chandlerdinsdag 2 september 2008 @ 14:05
    duidelijk double
    wipes66woensdag 3 september 2008 @ 00:50
    Weet iemand welke sneller is?

    SELECT num FROM products ORDER BY num DESC LIMIT 0,1

    of

    SELECT MAX(num) FROM products

    Nog een klein vraagje: stel je wilt een subquery uitvoeren, bv:

    SELECT a, b, c, (SELECT bla FROM bla ...) as d FROM bla2

    Maar hoe kan je dan bijvoorbeeld selecteren op 'd'? (zonder de subquery uit te voeren bij 'WHERE')

    Dus bijvoorbeeld:
    SELECT a, b, c, (SELECT bla FROM bla ...) as d FROM bla2 WHERE d = x
    slakkiewoensdag 3 september 2008 @ 01:07
    quote:
    Op woensdag 3 september 2008 00:50 schreef wipes66 het volgende:
    Maar hoe kan je dan bijvoorbeeld selecteren op 'd'? (zonder de subquery uit te voeren bij 'WHERE')
    Waarom zou je de subquery niet willen uitvoeren in je WHERE clause?
    wipes66woensdag 3 september 2008 @ 01:10
    quote:
    Op woensdag 3 september 2008 01:07 schreef slakkie het volgende:

    [..]

    Waarom zou je de subquery niet willen uitvoeren in je WHERE clause?
    Omdat hij dan 2x wordt uitgevoerd? (of wordt dat automatisch geoptimaliseerd? )
    slakkiewoensdag 3 september 2008 @ 01:14
    Okay..


    SELECT a, b, c, (SELECT bla FROM bla ...) as d FROM bla2 WHERE d = x

    =>

    SELECT a, b, c, (SELECT bla FROM bla where bla = x) as d FROM bla2

    ???
    wipes66woensdag 3 september 2008 @ 01:20
    Dit moet ik hebben:

    SELECT a, b, c, (SELECT bla FROM bla where bla = x) as d FROM bla2 WHERE d < x

    Maar dat gaat niet, dus zou ik zoiets moeten doen:

    SELECT a, b, c, (SELECT bla FROM bla where bla = x) as d FROM bla2 WHERE (SELECT bla FROM bla where bla = x) < x
    slakkiewoensdag 3 september 2008 @ 01:34
    Kan je misschien iets meer inzicht kunnen geven in je queries ipv abstracte a, b, c, d, bla's en what nots?

    je wilt dat bla x is of kleiner is dan x? Dan kan je toch where bla <= x uitvoeren in 1 subquery (of is het nou =<, mag je zelf ff uitproberen).
    wipes66woensdag 3 september 2008 @ 01:50
    ok

    Dit werkt:

    SELECT id, name, (SELECT COUNT(id) FROM feed_items WHERE product_id = products.id) AS numshops
    FROM products WHERE (SELECT COUNT(id) FROM feed_items WHERE product_id = products.id) > 0

    Maar als ik dit doe (wat een stuk makkelijker zou zijn):

    SELECT id, name, (SELECT COUNT(id) FROM feed_items WHERE product_id = products.id) AS numshops
    FROM products WHERE numshops > 0

    Krijg ik een error (iets in de zin van dat numshops niet bestaat).
    slakkiewoensdag 3 september 2008 @ 03:59
    quote:
    Op woensdag 3 september 2008 01:50 schreef wipes66 het volgende:
    SELECT id, name, (SELECT COUNT(id) FROM feed_items WHERE product_id = products.id) AS numshops
    FROM products WHERE (SELECT COUNT(id) FROM feed_items WHERE product_id = products.id) > 0
    Kan je dan niet beter zoiets doen:

    SELECT products.id as p_id, products.name as p_name, COUNT(feed_items.id) as numshops
    FROM products, feed_items
    WHERE feed_items.product_id = p_id
    GROUP BY p_id, p_name, numshops
    HAVING numshops > 0
    Xcaliburwoensdag 3 september 2008 @ 08:28
    quote:
    Op woensdag 3 september 2008 00:50 schreef wipes66 het volgende:
    Weet iemand welke sneller is?

    SELECT num FROM products ORDER BY num DESC LIMIT 0,1

    of

    SELECT MAX(num) FROM products
    ik zou zeggen dat MAX(num) sneller is, om de eenvoudige reden dat deze gemaakt is voor de handeling... maar ik kan het niet onderbouwen ofzo
    wipes66donderdag 4 september 2008 @ 15:38
    quote:
    Op woensdag 3 september 2008 03:59 schreef slakkie het volgende:

    [..]

    Kan je dan niet beter zoiets doen:

    SELECT products.id as p_id, products.name as p_name, COUNT(feed_items.id) as numshops
    FROM products, feed_items
    WHERE feed_items.product_id = p_id
    GROUP BY p_id, p_name, numshops
    HAVING numshops > 0
    tnx ik zal het eens proberen.
    bleibleidonderdag 4 september 2008 @ 22:44
    Ik heb echt gigantisch simpele domme vraag, maar ik krijg zo snel ff geen oplossing gevonden.
    Als ik deze query heb:
    quote:
    SELECT a.*, b.*
    FROM a, b
    WHERE a.id = b.id
    En ik wil de data uit de array ophalen.
    Hoe moet dat dan? .
    Ik krijg het dus nergens gevonden en:
    quote:
    while ($rij = mysql_fetch_array($result)) {
    $id = $rij['a.id'];
    $name = $rij['b.name'];
    }
    wat mij het meest logische leek, werkt niet.
    HuHudonderdag 4 september 2008 @ 22:49
    Je moet niet mysql_fetch_array gebruiken, maar mysql_fetch_assoc.
    bleibleidonderdag 4 september 2008 @ 22:54
    quote:
    Op donderdag 4 september 2008 22:49 schreef HuHu het volgende:
    Je moet niet mysql_fetch_array gebruiken, maar mysql_fetch_assoc.
    Ah! Daarom vond ik niets .
    Ik ga weer googlen, mijn dank is groot!
    Lightdonderdag 4 september 2008 @ 22:56
    quote:
    Op donderdag 4 september 2008 22:49 schreef HuHu het volgende:
    Je moet niet mysql_fetch_array gebruiken, maar mysql_fetch_assoc.
    Dat maakt weinig uit. Beide leveren een associative array. Het verschil is dat mysql_fetch_array ook een numerieke array levert. Je kunt de data dus op 2 manieren benaderen.

    De associatieve array bevat alleen de veldnamen en niet de tabelnamen. Dus niet 'a.id' maar gewoon 'id'.
    1
    2
    3
    4
    5
    6
    <?php
    while ($rij mysql_fetch_array($result)) {
      
    $id $rij['id'];
      
    $name $rij['name'];
    }
    ?>
    GlowMousedonderdag 4 september 2008 @ 22:57
    Light was me voor. Hier kun je overigens zelf achterkomen met een var_dump($rij);
    slakkiedonderdag 4 september 2008 @ 23:43
    Sterker nog met mysql_fetch_array kan je een numerieke, associatieve of beide opvragen:

    array mysql_fetch_array ( resource $result [, int $result_type ] )

    The type of array that is to be fetched. It's a constant and can take the following values: MYSQL_ASSOC, MYSQL_NUM, and the default value of MYSQL_BOTH.
    Lightvrijdag 5 september 2008 @ 07:02
    quote:
    Op donderdag 4 september 2008 23:43 schreef slakkie het volgende:
    Sterker nog met mysql_fetch_array kan je een numerieke, associatieve of beide opvragen:

    array mysql_fetch_array ( resource $result [, int $result_type ] )

    The type of array that is to be fetched. It's a constant and can take the following values: MYSQL_ASSOC, MYSQL_NUM, and the default value of MYSQL_BOTH.
    Ja, en de standaard is MYSQL_BOTH. Daarbij, met enkel verwijzen naar mysql_assoc wordt de vraag niet beantwoord.
    HuHuvrijdag 5 september 2008 @ 08:52
    Hmm... ik dacht dat die _array alleen een numerieke index terug gaf. Beetje te kort door de bocht dus .
    Chandlervrijdag 5 september 2008 @ 11:40
    Wederom heb ik een vraagje (wanneer niet)

    Stel ik heb 100.000 JPG bestanden varierend tussen de 10KB en 1MB en wil deze eigelijk allemaal wat kleiner hebben qua bestandsformaat. Nu wil ik deze graag comprimeren middels PHP echter wil ik het verlies van de kwaliteit zo klein mogelijk houden.

    Wat raden jullie aan? want als ik zelf het compressie ratio instel moet ik per afbeelding gaan controlleren of de afbeelding er met dat ratio nog wel mooi uitziet... Anyone?

    Ps. converteren naar PNG of ander formaat is niet mogelijk (in dit idee)
    Xcaliburvrijdag 5 september 2008 @ 12:00
    ik zou een aantal random afbeeldingen op verschillende kwaliteiten comprimeren...
    het meest acceptabele resultaat gebruik je?

    Met een beetje normale compressie is het echt niet zo dat sommige foto's fantastisch zijn en andere helemaal kut
    PiRANiAvrijdag 5 september 2008 @ 12:35
    quote:
    Op vrijdag 5 september 2008 11:40 schreef Chandler het volgende:
    Wederom heb ik een vraagje (wanneer niet)

    Stel ik heb 100.000 JPG bestanden varierend tussen de 10KB en 1MB en wil deze eigelijk allemaal wat kleiner hebben qua bestandsformaat. Nu wil ik deze graag comprimeren middels PHP echter wil ik het verlies van de kwaliteit zo klein mogelijk houden.

    Wat raden jullie aan? want als ik zelf het compressie ratio instel moet ik per afbeelding gaan controlleren of de afbeelding er met dat ratio nog wel mooi uitziet... Anyone?

    Ps. converteren naar PNG of ander formaat is niet mogelijk (in dit idee)
    Ik zou het niet met php doen maar met phatch. Dat draait onder ubuntu, kijk er eens naar
    Chandlervrijdag 5 september 2008 @ 14:31
    Het probleem is dat het om een site gaat waar heeeel veel plaatjes in zitten, allemaal met filesize verwekt in een database (en draait onder winhooz).. Dus phatch wordt een beetje moeilijk. In sommige gevallen is het ook zo dat de filesize groter wordt... is er ook een manier om uit te vissen welke compressie er gebruikt wordt? (in geval van JPG?)
    poepeneesjevrijdag 5 september 2008 @ 16:13
    Ik heb een textarea welke in de database NULL mag zijn. Indien ik het formulier via mijn website verstuur naar de database, dan komt er bij textarea -ondanks dat er niets is ingevuld- toch een spatie te staan. Hoe kan ik dit voorkomen?
    GlowMousevrijdag 5 september 2008 @ 16:16
    NULL is alsnog wat anders dan een lege string. Met een trim haal je alle overbodige spaties, tabs, newlines, e.d. weg aan het begin en aan het eind van een string. Maar wil je het echt als NULL opslaan of als lege string?

    http://dev.mysql.com/doc/refman/5.0/en/problems-with-null.html
    poepeneesjevrijdag 5 september 2008 @ 16:21
    Ik zou het graag als NULL willen opslaan. Ik ga even kijken naar trim . Bedankt tot zo ver.
    CraZaayvrijdag 5 september 2008 @ 16:49
    quote:
    Op vrijdag 5 september 2008 16:21 schreef poepeneesje het volgende:
    Ik zou het graag als NULL willen opslaan. Ik ga even kijken naar trim .
    je kan trimmen wat je wilt, maar dat is een string bewerking die uiteindelijk een andere (lege) string oplevert. NULL is iets totaal anders; dat is "niets". Dus geen lege string, maar gewoon niets.
    poepeneesjevrijdag 5 september 2008 @ 16:51
    Ik heb even gekeken naar trim, maar wat ik daaruit begrijp is dat het een functie is die je gebruikt bij een select-statement, dus eigelijk een oplossing "achteraf" om van de spatie af te komen.

    Bij het verzenden van het formulier naar de database, wil ik dat indien er niets wordt ingevuld in de textarea, dat er in de datebase in dat valt gewoon NULL staat en geen spatie.
    CraZaayvrijdag 5 september 2008 @ 16:56
    quote:
    Op vrijdag 5 september 2008 16:51 schreef poepeneesje het volgende:
    Bij het verzenden van het formulier naar de database, wil ik dat indien er niets wordt ingevuld in de textarea, dat er in de datebase in dat valt gewoon NULL staat en geen spatie.
    Dan kun je bij het samenstellen van de INSERT-query ervoor zorgen dat voor het veld wat je NULL wilt hebben helemaal niets wordt geschreven. Dus checken bij het bouwen van de query of de string (eventueel na trimmen; de PHP-functie) leeg is, en alleen als dat niet zo is de waarde naar de db schrijven.
    GlowMousevrijdag 5 september 2008 @ 16:57
    Ik had het over de PHP-functie trim, die mag je ook gebruiken wanneer je de input krijgt. Daarna kun je MySQL's TRIM ook bij een INSERT-query gebruiken, het komt alleen niet zo vaak voor

    Maar om NULL te krijgen moet je ergens checken of de string leeg is (of een spatie) en in dat geval NULL ipv een string INSERTEN.

    Maar waarom heb je liever NULL dan een lege string?
    CraZaayvrijdag 5 september 2008 @ 17:12
    quote:
    Op vrijdag 5 september 2008 16:57 schreef GlowMouse het volgende:
    en in dat geval NULL ipv een string INSERTEN.
    Of gewoon niets inserten, waarbij MySQL er zelf NULL van maakt (als je in je schema NULL toestaat en als default value hebt).
    poepeneesjevrijdag 5 september 2008 @ 17:12
    CraZaay & GlowMouse, ik wist niet dat het ook een PHP-functie is. Daar ga ik vanavond dan even opnieuw naar kijken.

    Het wordt niet zozeer als lege string opgeslagen, maar echt als een spatie. Waarschijnlijk maakt het niet veel uit, maar het is wel netter (vind ik) als er dan gewoon niets wordt opgeslagen. Maar ik denk dat ik weet waar het misgaat, nu je begint over een lege string.

    Ik ga vanavond even kijken, bedankt voor de snelle reacties jongens .
    CraZaayvrijdag 5 september 2008 @ 17:18
    Of het netter is weet ik niet; de user heeft immers bewust een lege string gesubmit is mijn gedachtegang. Dat je met trim() spaties voor/achter filtert (en dus eventueel een lege string overhoudt) is prima, maar ik zou het dan wel als lege string opslaan. Maar da's meer een kwestie van smaak
    slakkievrijdag 5 september 2008 @ 17:22
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $input 
    " ";
    $input trim($input);

    if (!
    strlen($input)) { $input null }

    # Doorgaan alsof er niks aan de hand is
    ?>


    Ik ga er maar even vanuit dat null van php ook in de query gewoon NULL wordt..
    Farenjivrijdag 5 september 2008 @ 17:25
    quote:
    Op vrijdag 5 september 2008 17:12 schreef poepeneesje het volgende:
    CraZaay & GlowMouse, ik wist niet dat het ook een PHP-functie is. Daar ga ik vanavond dan even opnieuw naar kijken.

    Het wordt niet zozeer als lege string opgeslagen, maar echt als een spatie. Waarschijnlijk maakt het niet veel uit, maar het is wel netter (vind ik) als er dan gewoon niets wordt opgeslagen. Maar ik denk dat ik weet waar het misgaat, nu je begint over een lege string.

    Ik ga vanavond even kijken, bedankt voor de snelle reacties jongens .
    Een lege string is in sommige gevallen beter dan NULL. Soms wil je namelijk echt een onderscheid maken tussen een lege string en NULL, bijv als je in een left join wil controleren of er geen match is, en dat kan dan niet (of is minder betrouwbaar) als er ook NULL values in bestaande rows zitten.

    Ik gebruik NULL eigenlijk bijna alleen als het een meerwaarde biedt; bijvoorbeeld als ik echt in mijn applicatie onderscheid wil maken tussen true (1), false (0) of undefined (NULL). OF als je echt velden hebben die soms wel voorkomen, en soms helemaal niet. Velden die wel altijd voorkomen maar leeg kunnen zijn, gooi ik gewoon als lege string in de database, niet als NULL dus.
    GlowMousevrijdag 5 september 2008 @ 17:25
    quote:
    Op vrijdag 5 september 2008 17:22 schreef slakkie het volgende:

    [ code verwijderd ]

    Ik ga er maar even vanuit dat null van php ook in de query gewoon NULL wordt..
    Dat wordt het niet, het blijft gewoon leeg terwijl je NULL moet hebben in je query.

    Maar ik zou me de problemen met NULL in je db niet op de hals halen als je het niet nodig hebt. Sla gewoon een lege string op.
    CraZaayvrijdag 5 september 2008 @ 17:29
    quote:
    Op vrijdag 5 september 2008 17:25 schreef GlowMouse het volgende:

    Dat wordt het niet, het blijft gewoon leeg terwijl je NULL moet hebben in je query.
    Dan maak je er in slakkies code $input = 'NULL' van. Het is dan string waarde 'NULL', maar wanneer je deze unescaped in je query zet is het gewoon "bla = NULL" in de query. Heel die query is namelijk al een samenstelling van strings.
    GlowMousevrijdag 5 september 2008 @ 17:32
    quote:
    Op vrijdag 5 september 2008 17:29 schreef CraZaay het volgende:

    [..]

    Dan maak je er in slakkies code $input = 'NULL' van. Het is dan string waarde 'NULL', maar wanneer je deze unescaped in je query zet is het gewoon "bla = NULL" in de query. Heel die query is namelijk al een samenstelling van strings.
    Zo makkelijk is het niet. Er zal dan de string 'NULL' in je database komen in plaats van NULL. Je zou bijvoorbeeld iets kunnen doen als then $input='NULL' else $input = "'" . $db->escape($input) . "'". Maar nogmaals: waarom moeilijk doen als je het niet nodig hebt, je geen idee hebt wat je doet, en je jezelf alleen ellende op de hals haalt?

    [ Bericht 0% gewijzigd door GlowMouse op 05-09-2008 17:48:12 (verduidelijkt) ]
    CraZaayvrijdag 5 september 2008 @ 17:45
    quote:
    Op vrijdag 5 september 2008 17:32 schreef GlowMouse het volgende:

    Zo makkelijk is het niet. Er zal dan de string 'NULL' in je database komen in plaats van NULL.
    Nee, dat is niet correct

    1
    2
    3
    4
    5
    <?php
    $input 
    'NULL';

    mysql_query("INSERT INTO table (input) VALUES ($input);");
    ?>


    Dat levert gewoon een echt NULL-waarde in de database op. Dat is ook logisch, want MySQL krijgt dit binnen:

    1"INSERT INTO table (input) VALUES (NULL);".
    GlowMousevrijdag 5 september 2008 @ 17:47
    Maar je hebt nooit VALUES($input) staan, omdat je dan in de problemen komt als $input een echte string is. Vandaar mijn else
    CraZaayvrijdag 5 september 2008 @ 17:50
    quote:
    Op vrijdag 5 september 2008 17:47 schreef GlowMouse het volgende:
    Maar je hebt nooit VALUES($input) staan, omdat je dan in de problemen komt als $input een echte string is. Vandaar mijn else
    Dit is een versimpelde versie uiteraard, ik ga er vanuit dat je ook geen zin hebt in injection enzo en al iets met die string gedaan hebt, bijvoorbeeld ge-escaped wanneer je er wel een string in wilt hebben Het gaat mij er uiteraard vooral om dat je op deze manier in de sfeer van slakkies suggestie NULL in je db kunt krijgen. Maar zoals gezegd, ik zou er gewoon een lege string voor gebruiken.
    slakkievrijdag 5 september 2008 @ 17:52
    quote:
    Op vrijdag 5 september 2008 17:25 schreef GlowMouse het volgende:

    [..]

    Dat wordt het niet, het blijft gewoon leeg terwijl je NULL moet hebben in je query.

    Maar ik zou me de problemen met NULL in je db niet op de hals halen als je het niet nodig hebt. Sla gewoon een lege string op.
    Met PDO werkt het wel:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php
    $db 
    "";
    $host "localhost";
    $dbname "test";
    $user "root";
    $passwd "";

    try {
        
    $db = new PDO(sprintf("mysql:host=%s;dbname=%s"$host$dbname), $user$passwd);
    } catch (
    PDOException $e) {
        
    printf("DB error: %s\n"$e->getMessage());
        exit(
    1);
    }

    $sth $db->prepare("INSERT INTO testing (val) VALUES ( ? )");

    $sth->bindValue(1null);
    $sth->execute();
    ?>


    1
    2
    3
    4
    5
    6
    7
    8
    mysql> select * from testing where val IS NULL
        -> ;
    +----+------+
    | id | val  |
    +----+------+
    |  2 | NULL |
    +----+------+
    1 row in set (0.00 sec)
    Flipper01vrijdag 5 september 2008 @ 20:19
    Hoe kan ik een datum in MYSQL (DATETIME) zetten mbv een phpstring?
    Ik heb nu namelijk de volgende waarden: $dag, $maand en $jaar en wil hier een datetime van maken.
    GlowMousevrijdag 5 september 2008 @ 20:21
    http://dev.mysql.com/doc/refman/5.0/en/datetime.html

    "The DATETIME type is used when you need values that contain both date and time information. MySQL retrieves and displays DATETIME values in 'YYYY-MM-DD HH:MM:SS' format."

    Dus $jaar . '-' . $maand . '-' . $dag . ' 00:00:00' voldoet, mits jaar-maand-dag netjes 4-2-2 zijn.
    CraZaayzaterdag 6 september 2008 @ 00:45
    Of "$jaar-$maand-$dag 00:00:00", als je minder wilt concatenaten (mocht dat problemen geven, zet dan {} rond je vars, dus {$dag}).
    slakkiezaterdag 6 september 2008 @ 01:04
    quote:
    Op zaterdag 6 september 2008 00:45 schreef CraZaay het volgende:
    Of "$jaar-$maand-$dag 00:00:00", als je minder wilt concatenaten (mocht dat problemen geven, zet dan {} rond je vars, dus {$dag}).
    Moet ${dag} zijn, ipv {$dag}, of ook niet, mag beide.. mkay.
    CraZaayzaterdag 6 september 2008 @ 01:07
    quote:
    Op zaterdag 6 september 2008 01:04 schreef slakkie het volgende:

    Moet ${dag} zijn, ipv {$dag}, of ook niet, mag beide.. mkay.
    Ga slapen Het kan inderdaad allebei, maar ik vind er helemaal omheen consistenter, omdat je dan bijvoorbeeld ook {'bla' . $iets} kunt doen.
    slakkiezaterdag 6 september 2008 @ 01:23
    Ik vind ${bla} persoonlijk prettiger, aangezien ik die notatie ken van zsh/bash en perl. Zelf maak ik nooit gebruik van ${'bla' . $iets} constructies.
    Flipper01zaterdag 6 september 2008 @ 07:30
    quote:
    Op zaterdag 6 september 2008 00:45 schreef CraZaay het volgende:
    Of "$jaar-$maand-$dag 00:00:00", als je minder wilt concatenaten (mocht dat problemen geven, zet dan {} rond je vars, dus {$dag}).
    Thnx! Dit vind ik zelf ook wel de meest handige schrijfwijze
    Cracka-asszaterdag 6 september 2008 @ 16:49
    Weet iemand hier hoe ik op mijn site de 5 laatste posts van een blog, bijvoorbeeld van www.luxist.com kan krijgen?

    [ Bericht 3% gewijzigd door Cracka-ass op 06-09-2008 17:06:03 ]
    GlowMousezaterdag 6 september 2008 @ 18:29
    Via hun RSS-feed is het makkelijkst. Met een RSS-parser als magpie is dat niet moeilijk.
    Chandlermaandag 8 september 2008 @ 15:39
    Ik heb een vraagje m.b.t MySQL preformance en opzet.

    Stel ik wil voor een site bepaalde modules gebruiken, de gebruiker kiest 1 van een select aantal modules om te gebruiken voor het geen waar de site voor bedoeld is echter is het mogelijk dat deze module bepaalde settings wil opslaan, dit is per module verschillend. En aangezien ik simpel en snel modules wil kunnen toevoegen en of verwijderen is mijn vraag als volgt.

    Is het handiger om voor deze opzet per module een apparte tabel aan te maken, of 1 tabel gebruiken waarin ik deze data vermeld? per regel een 'setting'

    ik zal wel weer wazig zijn, als je het niet begrijpt wat ik bedoel probeer ik het nog duideljker te vermelden!
    #ANONIEMmaandag 8 september 2008 @ 15:46
    Je maakt een koppeltabel met een module-id, een setting-id en de waarde aan.

    Zo kan je namelijk ook heel makkelijk generieke settings aanmaken.

    [ Bericht 34% gewijzigd door #ANONIEM op 08-09-2008 15:48:07 ]
    Chandlermaandag 8 september 2008 @ 15:52
    Klopt maar wat raad je aan, zit namelijk zelf te denken aan 1 global tabel voor alle plugins ipv per plugin een tabel.
    #ANONIEMmaandag 8 september 2008 @ 16:12
    quote:
    Op maandag 8 september 2008 15:52 schreef Chandler het volgende:
    Klopt maar wat raad je aan, zit namelijk zelf te denken aan 1 global tabel voor alle plugins ipv per plugin een tabel.
    1 global tabel
    poepeneesjemaandag 8 september 2008 @ 20:17
    Ik heb even gekeken naar het NULL-probleem, maar ik kan het niet oplossen... Op het internet heb ik gezien dat een aantal mensen er ook problemen mee hadden, maar de oplossingen die er gegeven zijn lossen het probleem niet op... Ook de oplossingen die jullie aandragen bieden geen oplossing.

    Daarnaast heb ik nog het volgende, de tijd op MySQL-server van PCextreme loopt twee uur achter. Hoe zorg ik ervoor dat ik de juiste tijd opsla in de database, ik gebruik nu now() om de huidige (datebase)tijd op te slaan. Optellen van twee uur bij de tijd geeft waarschijnlijk problemen bij het voor- en achteruit zetten van de tijd.

    En is het daarnaast mogelijk om het volgende op een goede manier voor elkaar te krijgen?

    1
    2
    3
    4
    5
    6
    7
    <?php
    echo    "<select name='print' style='width: 387px'>
                <option>-</option>     
                <option  if(isset($print) && ($print==1)){echo selected='selected';} value='1'>Ja</option>
                <option  if(isset($print) && ($print==0)){echo selected='selected';} value='0'>Nee</option>
            </select>;"
    ?>

    Met een variable lukt het me wel, maar ik zou graag dus een stuk PHP hebben die xHTML print waarin weer een stuk PHP voorkomt, hoe krijg ik dit (netjes) voor elkaar?
    CraZaaymaandag 8 september 2008 @ 21:23
    quote:
    Op maandag 8 september 2008 20:17 schreef poepeneesje het volgende:
    Daarnaast heb ik nog het volgende, de tijd op MySQL-server van PCextreme loopt twee uur achter. Hoe zorg ik ervoor dat ik de juiste tijd opsla in de database, ik gebruik nu now() om de huidige (datebase)tijd op te slaan. Optellen van twee uur bij de tijd geeft waarschijnlijk problemen bij het voor- en achteruit zetten van de tijd.
    Niet gaan klooien, zorgt alleen maar voor meer problemen. Vraag ze de tijd gewoon goed in te stellen. Of krijg je gewoon de GMT tijd terug? Daar kun je wel mee rekenen uiteraard, als je die altijd krijgt.
    quote:
    Met een variable lukt het me wel, maar ik zou graag dus een stuk PHP hebben die xHTML print waarin weer een stuk PHP voorkomt, hoe krijg ik dit (netjes) voor elkaar?
    Dit zou ik doen (met code-tag, syntax highlighter hier kan het niet aan anders):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    echo("
        <select name='print' style='width: 387px'>
            <option>-</option>     
            <option <?= (isset($print) && ($print == 1)) ? 'selected=\'selected\'' : '' ?> value='1'>Ja</option>
            <option <?= (isset($print) && ($print == 0)) ? 'selected=\'selected\'' : '' ?> value='0'>Nee</option>
        </select>
    ");
    ?>


    edit: Je hoeft dit overigens niet allemaal met PHP te echo'en; je kunt prima in een PHP bestand alleen HTML hebben staan en slechts op enkele plaatsen PHP-tags (bijv <?= time() ?> om de tijd te laten zien).

    [ Bericht 5% gewijzigd door CraZaay op 08-09-2008 21:57:24 ]
    Farenjimaandag 8 september 2008 @ 21:31
    quote:
    Op maandag 8 september 2008 20:17 schreef poepeneesje het volgende:
    Daarnaast heb ik nog het volgende, de tijd op MySQL-server van PCextreme loopt twee uur achter. Hoe zorg ik ervoor dat ik de juiste tijd opsla in de database, ik gebruik nu now() om de huidige (datebase)tijd op te slaan. Optellen van twee uur bij de tijd geeft waarschijnlijk problemen bij het voor- en achteruit zetten van de tijd.
    De tijd zal ingesteld staan op GMT en blijbaar staat de server ook in de UK, dus moet je die omrekenen naar CET, zie http://dev.mysql.com/doc/(...)#function_convert-tz
    quote:
    En is het daarnaast mogelijk om het volgende op een goede manier voor elkaar te krijgen?
    [ code verwijderd ]

    Met een variable lukt het me wel, maar ik zou graag dus een stuk PHP hebben die xHTML print waarin weer een stuk PHP voorkomt, hoe krijg ik dit (netjes) voor elkaar?
    Als je na gaat denken over PHP die PHP moet genereren zit je op het verkeerde pad. Dat is niet wat je wil, punt.

    Wat je wil is een functie waar je argumenten aan meegeeft en die gewoon kant en klare html teruggeeft.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
    function SelectBoxHTML($name$options$selected) {
        
        
    $html "<select name=\"$name\" style=\"width: 387px\" onchange=\"this.form.submit();\">\n";
        foreach (
    $options as $value => $text) {
            
    $html .= "<option";
            if (
    $value == $selected) {
                
    $html .= " selected=\"selected\"";
            }
            
    $html .= " value=\"$value\">$text</option>\n";
        }
        
        
    $html .= "</select>\n";
        return 
    $html;
    }

    print 
    "<html><body><form>";
    print 
    "<p>Printen? " SelectBoxHTML('print', array("1" => "Ja""0" => "Nee""2" => "Misschien"), $_GET['print']) . "</p>";
    print 
    "<p>Favoriete kleur? " SelectBoxHTML('fav_kleur', array("rood" => "rood""geel" => "geel""pimpelpaars" => "pimpelpaars""zwart" => "zwart"), $_GET['fav_kleur']) . "</p>";

    print 
    "</form></body></html>";
    ?>


    Voila, stateful selectboxes.
    CraZaaymaandag 8 september 2008 @ 21:55
    quote:
    Op maandag 8 september 2008 21:31 schreef Farenji het volgende:

    Als je na gaat denken over PHP die PHP moet genereren zit je op het verkeerde pad. Dat is niet wat je wil, punt.
    Dat wil 'ie ook niet getuige z'n voorbeeld Hij wil gewoon binnen een stukje html wat php opnemen (zie mijn suggestie).
    poepeneesjemaandag 8 september 2008 @ 22:23
    Nice heren . Ik ga er morgen mee verder knutselen! Alvast bedankt .
    slakkiedinsdag 9 september 2008 @ 12:33
    Leuk speelgoed:

    http://pear.php.net/manua(...)o-manager-module.php
    sexylexywoensdag 10 september 2008 @ 16:37
    Ik ben een complete noob op het gebied van webdesign, maar ik zou graag mijn kennis uitbreiden. Moet ik PHP leren? Of hebben jullie ander advies? En als ik een klein php scriptje kopieer van een how-to website dan geeft ie een witte pagina in Firefox, en zie je de code zelf in Internet Explorer. Wie kan mij op weg helpen?
    Xcaliburwoensdag 10 september 2008 @ 16:57
    Als je PHP wilt gebruiken moet je zorgen dat je een webserver + PHP op je computer geinstalleerd hebt, of de boel uploaden naar een site waar PHP draait.

    Om te beginnen zou ik me eerst eens in HTML + CSS verdiepen, zodat je dingen in ieder geval netjes op je scherm kunt krijgen. PHP en MySQL zijn een flinke stap verder...
    CraZaaywoensdag 10 september 2008 @ 18:00
    quote:
    Op woensdag 10 september 2008 16:37 schreef sexylexy het volgende:
    Wie kan mij op weg helpen?
    Toen je je ging ori๋nteren heb je nergens zien staan dat PHP geparsed moet worden door een webserver enzo
    sexylexywoensdag 10 september 2008 @ 19:22
    quote:
    Op woensdag 10 september 2008 18:00 schreef CraZaay het volgende:

    [..]

    Toen je je ging ori๋nteren heb je nergens zien staan dat PHP geparsed moet worden door een webserver enzo
    Dat heb ik zien staan ja
    slakkiewoensdag 10 september 2008 @ 20:39
    quote:
    Op woensdag 10 september 2008 16:57 schreef Xcalibur het volgende:
    Als je PHP wilt gebruiken moet je zorgen dat je een webserver + PHP op je computer geinstalleerd hebt, of de boel uploaden naar een site waar PHP draait.

    Om te beginnen zou ik me eerst eens in HTML + CSS verdiepen, zodat je dingen in ieder geval netjes op je scherm kunt krijgen. PHP en MySQL zijn een flinke stap verder...
    PHP leren is wat anders dan een website maken. OK, granted het wordt het meeste voor websites gebruikt. Maar dat terzijde. Als iemand PHP wilt leren hoeft ie echt geen kennis van HTML of CSS te hebben (ik heb basic kennis van HTML en al helemaal geen kennis van CSS).

    Tevens heeft PHP een command line die de noodzaak van een webserver overbodig maakt:
    http://nl.php.net/features.commandline

    Dit volstaat perfect om PHP te leren zonder je druk te maken over HTML en whatnot.

    Voor sexylexy:
    Apache installen op je machine: http://www.apache.org. En daarna ga je naar deze pagina: http://nl.php.net/manual/en/install.windows.php

    Succes.

    -edit- ik lees net dat sexylexy beginnend webdesigner wilt worden. Leer eerst de basis van HTML en CSS, daarna PHP.
    HuHuwoensdag 10 september 2008 @ 20:42
    Het is wellicht eenvoudiger voor sexylexy om bijvoorbeeld XAMPP te installeren, dat is wat eenvoudiger dan zelf Apache en PHP installeren (met eventueel nog MySQL, enz...)
    Cracka-asswoensdag 10 september 2008 @ 21:02
    Ik heb hier een stukje code en zodra ik ook maar iets weghaal van regel 4 werkt ie niet meer goed. :o
    Ik wil er niks in hebben maar dan werkt het niet meer. :')

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    <div id="footer">

    <
    p><br>.  </p>

    </
    div>

     
    wp_footer(); 
    ?>


    Hoe kan dat?
    sexylexywoensdag 10 september 2008 @ 21:16
    quote:
    Op woensdag 10 september 2008 20:39 schreef slakkie het volgende:

    [..]

    PHP leren is wat anders dan een website maken. OK, granted het wordt het meeste voor websites gebruikt. Maar dat terzijde. Als iemand PHP wilt leren hoeft ie echt geen kennis van HTML of CSS te hebben (ik heb basic kennis van HTML en al helemaal geen kennis van CSS).

    Tevens heeft PHP een command line die de noodzaak van een webserver overbodig maakt:
    http://nl.php.net/features.commandline

    Dit volstaat perfect om PHP te leren zonder je druk te maken over HTML en whatnot.

    Voor sexylexy:
    Apache installen op je machine: http://www.apache.org. En daarna ga je naar deze pagina: http://nl.php.net/manual/en/install.windows.php

    Succes.

    -edit- ik lees net dat sexylexy beginnend webdesigner wilt worden. Leer eerst de basis van HTML en CSS, daarna PHP.
    Hmm ja ik kan wel een beetje HTML maar tot waar wordt het verstaan onder de basics? CSS is nog volledig nieuw voor mij
    HuHuwoensdag 10 september 2008 @ 21:18
    quote:
    Op woensdag 10 september 2008 21:02 schreef Cracka-ass het volgende:
    Ik heb hier een stukje code en zodra ik ook maar iets weghaal van regel 4 werkt ie niet meer goed. :o
    Ik wil er niks in hebben maar dan werkt het niet meer. :')
    [ code verwijderd ]

    Hoe kan dat?
    Dus dit zou niet werken:

    1
    2
    3
    <div id="footer">

    </div>


    Wat je met die wp_footer() wilt snap ik niet, wat doet die daar? Moet het soms iets zijn als:

    1
    2
    3
    <div id="footer">
      <?php wp_footer(); ?>
    </div>
    Xcaliburwoensdag 10 september 2008 @ 21:22
    quote:
    Op woensdag 10 september 2008 20:39 schreef slakkie het volgende:
    -edit- ik lees net dat sexylexy beginnend webdesigner wilt worden. Leer eerst de basis van HTML en CSS, daarna PHP.
    Dat zeg ik
    Cracka-asswoensdag 10 september 2008 @ 21:31
    quote:
    Op woensdag 10 september 2008 21:18 schreef HuHu het volgende:

    [..]

    Dus dit zou niet werken:
    [ code verwijderd ]

    Wat je met die wp_footer() wilt snap ik niet, wat doet die daar? Moet het soms iets zijn als:
    [ code verwijderd ]
    Zo is het dus als ik ook maar iets weghaal:



    Zo is het dus als het goed gaat, met mooi puntje.


    Jouw codes werken ook beide niet. In wordpress trouwens.
    HuHuwoensdag 10 september 2008 @ 21:33
    Ow... WordPress, daar heb ik geen verstand van.

    Je kunt proberen die . te vervangen door &nbsp;, da's gewoon een spatie maar dan anders. Dus die zie je niet.
    slakkiewoensdag 10 september 2008 @ 21:35
    quote:
    Op woensdag 10 september 2008 21:16 schreef sexylexy het volgende:

    [..]

    Hmm ja ik kan wel een beetje HTML maar tot waar wordt het verstaan onder de basics? CSS is nog volledig nieuw voor mij
    Basic is voor mij net genoeg om een simpele pagina te maken. Maar je moet rekening houden dat je pagina's moet kunnen maken die door deze validator (http://validator.w3.org) wordt goedgekeurd. Als je dat laatste kan doen, dan denk ik dat je tot de experts behoort.

    Ik zou als ik jou was eens langs http://www.w3schools.com/ gaan en daar wat over HTML/CSS leren, en na een paar weken een keer PHP erbij gaan halen om zo wat dynamische pagina's te maken. Eventueel met MySQL erbij.
    Cracka-asswoensdag 10 september 2008 @ 21:36
    Ja dan inderdaad maar zo. Maar het blijft toch vreemd. Thanks!
    mcDavidwoensdag 10 september 2008 @ 22:15
    quote:
    Op woensdag 10 september 2008 @ 21:35 schreef slakkie het volgende:

    [..]

    Basic is voor mij net genoeg om een simpele pagina te maken. Maar je moet rekening houden dat je pagina's moet kunnen maken die door deze validator (http://validator.w3.org) wordt goedgekeurd. Als je dat laatste kan doen, dan denk ik dat je tot de experts behoort.

    Ik zou als ik jou was eens langs http://www.w3schools.com/ gaan en daar wat over HTML/CSS leren, en na een paar weken een keer PHP erbij gaan halen om zo wat dynamische pagina's te maken. Eventueel met MySQL erbij.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"   "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>hello world</title>
    </head>
    <body>
    <p>Hello World!</p>
    </body>
    </html>

    Jeuj ik ben expert! B-)

    Je moet je niet doodstaren op die validator. Op de eerste plaats komt dat je een site maakt die er in alle gangbare browsers goed uit ziet en goed werkt. Nette, semantische en correcte code is slechts een middel om dat doel te bereiken.
    CraZaaywoensdag 10 september 2008 @ 23:28
    quote:
    Op woensdag 10 september 2008 22:15 schreef mcDavid het volgende:

    Je moet je niet doodstaren op die validator. Op de eerste plaats komt dat je een site maakt die er in alle gangbare browsers goed uit ziet en goed werkt. Nette, semantische en correcte code is slechts een middel om dat doel te bereiken.
    Nou ja, iets is natuurlijk pas HTML als het voldoet aan de HTML specificaties. De validator checkt of dat zo is. Voldoet een pagina niet, dan is het dus geen goede HTML maar code waarvan de browsers de fouten voor je verdoezelen Semantiek is ook onderdeel van goed werken uiteraard; een semantisch incorrecte pagina werkt niet goed. Dat 'ie er in je webbrowser goed uit ziet doet daar niets aan af; er zijn meer user agents dan alleen IE/FF/Safari/etc.
    mcDavidwoensdag 10 september 2008 @ 23:58
    Met "meer user agents" kun je twee dingen bedoelen:
    - zoekmachines, maar daarvoor optimaliseren noemen we SEO en dat komt wmbt ongeveer als allerlaatste in de ranglijst van wat belangrijk is voor een goeie website...
    - screenreaders, daar is iedereen altijd heel erg panisch voor. Maar duik eens de statistieken in en vertel me of er ๓๓it iemand met een screenreader op jouw site is geweest.
    slakkiedonderdag 11 september 2008 @ 01:07
    quote:
    Op woensdag 10 september 2008 22:15 schreef mcDavid het volgende:

    [..]
    [ code verwijderd ]

    Jeuj ik ben expert!

    Je moet je niet doodstaren op die validator. Op de eerste plaats komt dat je een site maakt die er in alle gangbare browsers goed uit ziet en goed werkt. Nette, semantische en correcte code is slechts een middel om dat doel te bereiken.
    Je snapt wat ik bedoel
    CraZaaydonderdag 11 september 2008 @ 08:45
    quote:
    Op woensdag 10 september 2008 23:58 schreef mcDavid het volgende:
    Met "meer user agents" kun je twee dingen bedoelen:
    - zoekmachines, maar daarvoor optimaliseren noemen we SEO en dat komt wmbt ongeveer als allerlaatste in de ranglijst van wat belangrijk is voor een goeie website...
    - screenreaders, daar is iedereen altijd heel erg panisch voor. Maar duik eens de statistieken in en vertel me of er ๓๓it iemand met een screenreader op jouw site is geweest.
    Ik bedoel ze allebei, en nog meer (mobile devices, kiosk browsers, you name it). We noemen dat inderdaad SEO, maar alleen omdat "de prutsers" semantisch incorrecte HTML schrijven en een "SEO-bedrijf" grof geld kan verdienen door de rommel op te ruimen en toch eens een <h1> etc te gebruiken. SEO is totaal nutteloos (HTML-wise, goede teksten is weer iets anders) wanneer een website al aan de standaarden voldoet.

    Ik snap je advies niet zo goed omdat je eigenlijk zegt "nette code is een middel, maar zorg gewoon dat het er visueel goed uitziet", wat op mij over komt als "voor een kop kun je prima <span style="font-size: 24px; font-weight: bold">Kop</span>" gebruiken", als je wilt dat het er als een kop uitziet

    Wat is er mis mee voor iemand om het meteen goed aan te leren? Of gaan we mensen die (om toch een beetje op PHP etc terug te komen ) meer willen leren over het MVC-model ook zeggen dat ze best alle logica in de view mogen stoppen omdat dat ook werkt, maar het netter is om dat niet te doen?

    NB: De validator kan geen semantiek detecteren, dus je kunt alsnog overal gestylede <span>'s enzo voor gebruiken uiteraard. Block level elementen binnen inline elementen slikt de validator niet, maar 99% van de browsers bijvoorbeeld weer wel (omdat ze gebruikers niet de dupe willen laten worden van slecht geschreven code).
    Xcaliburdonderdag 11 september 2008 @ 09:09
    quote:
    Op woensdag 10 september 2008 23:58 schreef mcDavid het volgende:
    - zoekmachines, maar daarvoor optimaliseren noemen we SEO en dat komt wmbt ongeveer als allerlaatste in de ranglijst van wat belangrijk is voor een goeie website...
    Sorry?

    Dat zou vanaf het allereerste begin prioriteit moeten hebben. Als een zoekmachine je site niet kan vinden komt er dus geen hond en had je je site net zo goed niet kunnen maken. Als je zorgt (oa door nette, semantisch correte HTML !) dat je het vanaf het begin goed aanpakt kan je je site in 1x SEO-wise goed bouwen...
    quote:
    Op woensdag 10 september 2008 23:58 schreef mcDavid het volgende:
    - screenreaders, daar is iedereen altijd heel erg panisch voor. Maar duik eens de statistieken in en vertel me of er ๓๓it iemand met een screenreader op jouw site is geweest.
    Dat vind ik ook zo'n bullshit argument he....
    Alsof het zoveel moeite is om te zorgen dat het werkt. Je zorgt toch ook dat het op Safari werkt? Of dat het niet gigantisch kapot gaat als iemand Javascript uit heeft staan? Dat hoop ik tenminste...
    mcDaviddonderdag 11 september 2008 @ 13:46
    Als ik een website maak, test ik die bijv. niet op IE5.5. Terwijl IE5.5 vaker langskomt dan Lynx. Shoot me!

    En ja het is zeker een goeie eigenschap om van begin af aan nette en semantische code te gebruiken. Maar (zoals al gezegd) dat haalt die validator er niet uit. Daarom: die slechts als hulpmiddel gebruiken.

    En als ik bijvoorbeeld kijk naar gmail: 95 fouten in de HTML volgens de validator, en zonder Javascript doet helemaal nํ้ts het meer. En toch is het wat mij betreft ้้n van de beste websites die er bestaan.
    Alfjedonderdag 11 september 2008 @ 18:03
    Hallo beste mensen ik heb een php vraagje.

    Ik heb een site gemaakt en daarin wil ik een grafiekje neerzetten. Ik heb daarvoor een library gedownload die grafiekjes kan genereren.

    Als ik dat test werkt dat opzich prima, maar nu wil ik graag data uit mn mysql database gebruiken in de grafiek. Echter als ik een query doe in de php file waarin het plaatje staat dan doet het plaatje het niet meer.

    Mijn vraag is dus eigenlijk: hoe kan ik binnen de php file die het plaatje voorstelt aan die data komen?

    code van de file met het plaatje (werkt zo niet, tekent wel het array als ik de query verwijder).
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    require ('./chart-0.8/chart.php') ;

    $query = "SELECT * FROM klsusers" ;
    $tmp = mysql_query ($query) ;

    $testarray = array (0, 3, 5, 9, 10, 20) ;


    $chart = new chart (300, 200) ;
    $chart->plot ($testarray) ;
    $chart->stroke () ;
    ?>


    en dit heb ik dan in een file staan van de site zelf waar ik de grafiek wil hebben.

    1echo '<IMG src="totalgraph.php">' ;
    Alfjedonderdag 11 september 2008 @ 18:17
    oh oh oh, zal je altijd zien. Ik loop hier al een halve dag op te broeden en op het moment dat ik ten einde raad hulp vraag op een forum dringt het ineens tot me door.
    Omdat het een apart plaatje is dat los staat van de rest van de site moet ik natuurlijk eerst naar de database connecten als ik een query wil doen.
    Nu geeft ie een foutmelding, maar omdat die in een plaatje staat zie ik die niet, maar is wel mn plaatje verneukt.
    mcDaviddonderdag 11 september 2008 @ 18:20
    nu nog die hoofdletters uit de html-tags halen.
    Alfjedonderdag 11 september 2008 @ 19:27
    Heeft dat kwa code ook voordelen of wordt het enkel als erg lelijk beschouwd?
    Ik vind het zelf namelijk met hoofdletters wel overzichtelijk.
    mcDaviddonderdag 11 september 2008 @ 19:32
    Als je hoofdletters gebruikt is het gewoon geen correcte HMTL. Weet niet wie dat ooit verzonnen heeft, maar 't klopt gewoon niet.

    Ik vraag me trouwens ook af waarom je die regel met PHP toevoegt? moet het plaatje alleen onder bepaalde condities worden weergegeven?
    Alfjedonderdag 11 september 2008 @ 20:08
    De grafiek komt onder een tabel die ik met behulp van php genereer.
    Maar hoofdletters zijn dus officieel niet toegestaan, alleen het werkt omdat de meeste browsers tegenwoordig erg "forgiving" zijn?
    Het wel gemerkt dat ook een tabel er nog netjes uit komt rollen ook al vergeet je her en der een paar tags.