FOK!forum / Digital Corner / [PHP/(My)SQL] voor dummies - deeltje 38
Chandlerdonderdag 1 februari 2007 @ 19:20

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

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

    En we gaan weer verder!

    Laatste post
    quote:
    Op donderdag 1 februari 2007 19:18 schreef Chandler het volgende:
    Ooit eens 1 progie mee gemaakt om de scherm mode naar mode 13 te veranderen maaruh voor mij te hoog gegrepen, want je moet bij iedere JMP, MOV, AS etc etc etc gaan nadenken over wat het allemaal voor consequenties zou kunnen hebben..
  • CraZaaydonderdag 1 februari 2007 @ 20:19
    tvp dan maar.
    Tuvai.netdonderdag 1 februari 2007 @ 22:25
    Tieten in een envelop.
    the_disheavervrijdag 2 februari 2007 @ 01:01
    uhhh, kun je met php console opdrachten enzo uitvoeren?

    ofwel: kun je met een linux, lamp en tex installatie latex bestandjes compileren?
    hornagevrijdag 2 februari 2007 @ 09:15
    quote:
    Op vrijdag 2 februari 2007 01:01 schreef the_disheaver het volgende:
    uhhh, kun je met php console opdrachten enzo uitvoeren?

    ofwel: kun je met een linux, lamp en tex installatie latex bestandjes compileren?
    Volgens mij kan dat hiermee:
    http://nl2.php.net/manual/nl/migration5.cli-cgi.php
    Darkomenvrijdag 2 februari 2007 @ 11:03
    Zaktuigvrijdag 2 februari 2007 @ 11:33
    http://nl2.php.net/manual/nl/ref.exec.php

    daar kan je volgens mij een heel eindje mee komen.
    super-muffinvrijdag 2 februari 2007 @ 11:59
    Ik heb al een simpele class geschreven
    Zie alleen nog niet het echte voordeel er van in, maar het staat wel stoer, Object Georiënteerd Programmeren
    Tijnvrijdag 2 februari 2007 @ 14:13
    Kan iemand me uitleggen hoe ik werk met DATETIME in MySQL? Ik heb een tabel gemaakt waarin elk record o.a. zo'n veld heeft, en daar staan dus dingen in als "2007-02-01 22:35:30". Prima.

    Maar hoe krijg ik nu bv alle resultaten van gisteren? Of alle resultaten tussen 10 en 11 uur?
    #ANONIEMvrijdag 2 februari 2007 @ 14:16
    quote:
    Op vrijdag 2 februari 2007 11:59 schreef super-muffin het volgende:
    Ik heb al een simpele class geschreven
    Zie alleen nog niet het echte voordeel er van in, maar het staat wel stoer, Object Georiënteerd Programmeren
    Ach, dat is tegenwoordig standaard.

    Anyway: tvp.
    Chandlervrijdag 2 februari 2007 @ 14:18
    quote:
    Op vrijdag 2 februari 2007 14:13 schreef Tijn het volgende:
    Kan iemand me uitleggen hoe ik werk met DATETIME in MySQL? Ik heb een tabel gemaakt waarin elk record o.a. zo'n veld heeft, en daar staan dus dingen in als "2007-02-01 22:35:30". Prima.

    Maar hoe krijg ik nu bv alle resultaten van gisteren? Of alle resultaten tussen 10 en 11 uur?
    UNIX_TIMESTAMP van de datum maken en dan de datum van gisteren als parameter in de where meegeven oid...
    Tijnvrijdag 2 februari 2007 @ 14:20
    quote:
    Op vrijdag 2 februari 2007 14:18 schreef Chandler het volgende:

    [..]

    UNIX_TIMESTAMP van de datum maken en dan de datum van gisteren als parameter in de where meegeven oid...
    Ah, de UNIX_TIMESTAMP() functie. Dat ziet er inderdaad veel belovend uit En die kan ik ook handig in de date() functie van PHP stoppen.

    Waarom zou ik m'n data dan eigenlijk nog als datetime opslaan en niet gelijk als timestamp?
    Tuvai.netvrijdag 2 februari 2007 @ 14:21
    quote:
    Op vrijdag 2 februari 2007 11:59 schreef super-muffin het volgende:
    Ik heb al een simpele class geschreven
    Zie alleen nog niet het echte voordeel er van in, maar het staat wel stoer, Object Georiënteerd Programmeren
    Leuk. Heb zelf nog niet zo heel veel Object Georieënteerd geprogrammeerd in PHP, simpelweg omdat ik het nog niet vaak nodig heb gehad gezien functions meestal the job done krijgen voor wat ik maak.
    Tuvai.netvrijdag 2 februari 2007 @ 14:21
    Tijn: Ik zou inderdaad ook overschakelen naar UNIX timestampts. Vind ik persoonlijk veel flexibeler...
    Tijnvrijdag 2 februari 2007 @ 14:25
    quote:
    Op vrijdag 2 februari 2007 14:21 schreef Tuvai.net het volgende:
    Tijn: Ik zou inderdaad ook overschakelen naar UNIX timestampts. Vind ik persoonlijk veel flexibeler...
    Loop je natuurlijk wel tegen het Y2K38 probleem aan, maar okay, dat lossen we dan wel weer op
    Tuvai.netvrijdag 2 februari 2007 @ 14:28
    Dat is nog 31 jaar verder. Dan is zelfs PHP denk ik al jaren uit 'de mode' en zitten we allemaal met een drag & drop programming programma te werken die bestuurd worden door middel van hersengolven.
    ralfievrijdag 2 februari 2007 @ 14:34
    quote:
    Op vrijdag 2 februari 2007 14:13 schreef Tijn het volgende:
    Kan iemand me uitleggen hoe ik werk met DATETIME in MySQL? Ik heb een tabel gemaakt waarin elk record o.a. zo'n veld heeft, en daar staan dus dingen in als "2007-02-01 22:35:30". Prima.

    Maar hoe krijg ik nu bv alle resultaten van gisteren? Of alle resultaten tussen 10 en 11 uur?
    bijv

    1
    2
    SELECT * FROM xxx WHERE date > UNIX_TIMESTAMP("2005-1-1");
    SELECT FROM_UNIXTIME(date,"%d %m %y") FROM xxx WHERE date BETWEEN UNIX_TIMESTAMP("2005-1-1") AND UNIX_TIMESTAMP("2006-1-1");
    Uiteraard kun je de timestamp ook in php genereren, maar dat kan problemen opleveren als je met verschillende tijdzones gaat werken

    EDIT: ik ben wel errug laat hiero. TVP dan maar enzo
    hornagevrijdag 2 februari 2007 @ 14:34
    quote:
    Op vrijdag 2 februari 2007 14:13 schreef Tijn het volgende:
    Kan iemand me uitleggen hoe ik werk met DATETIME in MySQL? Ik heb een tabel gemaakt waarin elk record o.a. zo'n veld heeft, en daar staan dus dingen in als "2007-02-01 22:35:30". Prima.

    Maar hoe krijg ik nu bv alle resultaten van gisteren? Of alle resultaten tussen 10 en 11 uur?
    voor alles van gisteren:
    1
    2
    3
    SELECT *
    FROM blaat
    WHERE date = GETDATE() - 1

    waarin date dus een field is van het type datetime

    voor alles tussen 10 en 11 uur (dus ook andere dagen):
    1
    2
    3
    SELECT *
    FROM blaat
    WHERE HOUR(date) BETWEEN '10' AND '11'


    meer mysql functies die met datum en tijd te maken hebben:
    http://dev.mysql.com/doc/(...)-time-functions.html
    Tijnvrijdag 2 februari 2007 @ 14:40
    Bedankt mensen Zo kom ik er wel uit
    Tijnvrijdag 2 februari 2007 @ 14:50
    Oh, nu ik hier toch ben, ik heb nog een vraagje over MySQL trouwens, want ik ben best wel een databasekneus

    Wat is de handigste manier om het aantal verschillende entries in een field te bepalen? Ik heb een tabel met daarin een field waarin IP-nummers worden onthouden en ik wil graag het aantal verschillende IP-adressen weten wat erin staat.

    Hoe ik het nu heb opgelost is een query die alle IP-adressen binnenhaalt en daarna met PHP een while-lus die de verschillende telt, maar ik heb het idee dat het efficienter kan met een goede query.
    CraZaayvrijdag 2 februari 2007 @ 14:55
    quote:
    Op vrijdag 2 februari 2007 14:50 schreef Tijn het volgende:
    Oh, nu ik hier toch ben, ik heb nog een vraagje over MySQL trouwens, want ik ben best wel een databasekneus

    Wat is de handigste manier om het aantal verschillende entries in een field te bepalen? Ik heb een tabel met daarin een field waarin IP-nummers worden onthouden en ik wil graag het aantal verschillende IP-adressen weten wat erin staat.

    Hoe ik het nu heb opgelost is een query die alle IP-adressen binnenhaalt en daarna met PHP een while-lus die de verschillende telt, maar ik heb het idee dat het efficienter kan met een goede query.
    GROUP BY?
    ralfievrijdag 2 februari 2007 @ 14:57
    select count(distinct(kolomnaam)) from tabelnaam
    #ANONIEMvrijdag 2 februari 2007 @ 14:59
    distinct idd.
    Tijnvrijdag 2 februari 2007 @ 15:19
    quote:
    Op vrijdag 2 februari 2007 14:57 schreef ralfie het volgende:
    select count(distinct(kolomnaam)) from tabelnaam
    Ah cool, dit werkt ook heel goed.

    Bedankt weer
    JortKvrijdag 2 februari 2007 @ 16:03
    tvp
    Chandlervrijdag 2 februari 2007 @ 19:23
    Ik heb een vraag over http://nl2.php.net/manual/nl/function.setcookie.php

    Nu wil ik op een website bv www.website.nl een cookie zetten maar deze cookie moet ook uitgelezen kunnen worden op subdomein.website.nl, hoe kan ik dit realiseren?
    Tuvai.netvrijdag 2 februari 2007 @ 20:51
    Het vierde optionele argument van setcookie() is een directory/path.
    Chandlervrijdag 2 februari 2007 @ 21:11
    correct, maar het pad is het zelfde... alleen de subdomeinen zijn verschillend en ik heb vele argumenten geprobeerd maar helaas blijven deze niet leven op een subdomein
    Tuvai.netvrijdag 2 februari 2007 @ 21:15
    Is gewoon een kwestie van de goeie path en domain invullen. Lees anders dit eens door: http://ific.uv.es/informa(...)ction.setcookie.html

    path
    The path on the server in which the cookie will be available on.

    If set to '/', the cookie will be available within the entire domain. If set to '/foo/', the cookie will only be available within the /foo/ directory and all sub-directories such as /foo/bar/ of domain. The default value is the current directory that the cookie is being set in.


    domain
    The domain that the cookie is available.

    To make the cookie available on all subdomains of example.com then you'd set it to '.example.com'. The . is not required but makes it compatible with more browsers. Setting it to www.example.com will make the cookie only available in the www subdomain. Refer to tail matching in the spec for details.
    Chandlervrijdag 2 februari 2007 @ 22:23
    je hebt inderdaad gelijk, denk dat ik eerder een foutieve setcookie heb gebruikt

    setcookie("website", "value", time() + 3600, '/', 'website.nl');

    Lightvrijdag 2 februari 2007 @ 22:38
    quote:
    Op vrijdag 2 februari 2007 14:25 schreef Tijn het volgende:

    [..]

    Loop je natuurlijk wel tegen het Y2K38 probleem aan, maar okay, dat lossen we dan wel weer op
    Ergens in de komende 30 jaar kun je je data vast wel omzetten naar 64 bit. Dan heb je voorlopig geen problemen meer.
    Xtr3mEzaterdag 3 februari 2007 @ 09:12
    Ik wil met een while functie uit 2 tabellen gegevens uithalen en deze in een tabel zetten.
    Nu heb ik uit tabel 1 alles uitgelezen (artikelcodes) en wil ik uit de 2e tabel de naam van die artikelcodes erbij halen.

    Zo zien de tabellen er uit:

    extra
    Artikelcode
    Extra

    artikel
    Artikelcode
    Omschrijving
    ...

    De Extra uit de tabel extra staat dus ook in de tabel artikel als Artikelcode

    de code die ik totdusver heb ik:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?php
      
    //Alle extra's uitlezen
      
    $query "SELECT * FROM extra WHERE Artikelcode='$acode'";
      
    $result mysql_query($query);

      
    //in tabel zetten
      
    echo "<table cellspacing='3'>";
      echo 
    "<tr><td colspan='100'></td></tr>";
            echo 
    "<tr>
                <td><b>Artikelcode</b></td>
                <td><b>Omschrijving</b></td>
                <tr><td colspan='100'></td></tr>"
    ;
                
    while (
    $row mysql_fetch_array($result))
      {
         
    extract($row);

          echo 
    "<tr>
               <td>$Extra</td>
               <td>$Omschrijving</td>
               </tr>n"
    ;
               

      }
      echo 
    "</table>";
    ?>


    Resultaat

    Dus hoe kan ik die omschrijving van de bijbehorende artikelcodes ook uitlezen en waar precies in de code neer te zetten..ik zit dan steeds in de war met een dubbele while en kom er niet uit..
    Xtr3mEzaterdag 3 februari 2007 @ 10:22
    Na wat gepuzzel is het gelukt!
    Chandlerzaterdag 3 februari 2007 @ 10:25
    quote:
    Op zaterdag 3 februari 2007 10:22 schreef Xtr3mE het volgende:
    Na wat gepuzzel is het gelukt!
    En wat is de oplossing dan?
    Tuvai.netzaterdag 3 februari 2007 @ 10:29
    Een JOIN gebruiken in de query dus.
    MySQL documentatie JOIN.
    fokME2zondag 4 februari 2007 @ 22:17
    Leuk een PHP topic!
    wipes66dinsdag 6 februari 2007 @ 04:07
    Weet iemand hoe je in php thumbnail kan maken die niet wazig zijn? Ik gebruik gewoon imagecopyresampled en ImageCreateTrueColor, maar de kwaliteit is echt beroerd.

    Het veschil tussen photoshop en php
    Tuvai.netdinsdag 6 februari 2007 @ 06:02
    Met het volgende script, uitgaande dat je afbeeldigen in JPG formaat zijn. Let er op dat de folder van de afbeeldingen die je probeert te verkleinen, voldoende CHMOD rechten heeft.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?php
    // Breedte thumbnail (in pixels)
    $thumb_x=100;
    // Hoogte thumbnail (in pixels)
    $thumb_y=100;
    // path van jouw originele afbeelding
    $normaalplaatje="directory/jouwplaatje.jpg";
    // path van de te maken thumbnail
    $verkleindplaatje="directory/jouwplaatje_klein.jpg";
    // kwaliteit plaatje (0 tot 100)
    $kwaliteit=100;

    $afmetingen=getimagesize($normaalplaatje);
    $image=imagecreatefromjpeg($normaalplaatje);
    $destination=imagecreatetruecolor($thumb_x,$thumb_y);
    imagecopyresampled($destination,$image,0,0,0,0,$thumb_x,$thumb_y,$afmetingen[0],$afmetingen[1]);
    imagejpeg($destination,$verkleindplaatje,$kwaliteit);
    imagedestroy($image); 
    imagedestroy($destination);
    ?>
    wipes66dinsdag 6 februari 2007 @ 07:35
    Ja dat is dus precies wat ik gebruik. Je moet wel verder lezen dan "Weet iemand hoe je in php thumbnail kan maken ..."
    Tuvai.netdinsdag 6 februari 2007 @ 09:03
    Um, dat scriptje wat ik gepost heb doet anders precies wat je wilt hoor.

    Sowieso krijg je bij het verkleinen van afbeeldingen nooit een haarscherpe afbeelding. Of je moet een zogenaamde 'niet-intelligente' verkleining gebruiken maar dan krijg je meestal een misvormde afbeelding.
    wipes66dinsdag 6 februari 2007 @ 09:53
    quote:
    Op dinsdag 6 februari 2007 09:03 schreef Tuvai.net het volgende:
    Um, dat scriptje wat ik gepost heb doet anders precies wat je wilt hoor.
    Ja het verkleint een afbeelding, alleen zodanig onscherp dat ik een andere methode zoek.
    quote:
    Sowieso krijg je bij het verkleinen van afbeeldingen nooit een haarscherpe afbeelding.
    Jawel hoor, kijk maar naar mijn afbeelding php vs photoshop.
    Tuvai.netdinsdag 6 februari 2007 @ 10:10
    quote:
    Op dinsdag 6 februari 2007 09:53 schreef wipes66 het volgende:

    [..]

    Ja het verkleint een afbeelding, alleen zodanig onscherp dat ik een andere methode zoek.
    [..]

    Jawel hoor, kijk maar naar mijn afbeelding php vs photoshop.
    En heb je in je eigen scriptje de kwaliteit wel op 100 staan? De voorbeeldafbeelding die je post is dusdanig onscherp dat ik wel zeker weet dat er een compressiepercentage op gebruikt is. D'r zitten zelfs vlekken kleurverschil in het witte van de achtergrond.
    Tijndinsdag 6 februari 2007 @ 10:16
    quote:
    Op dinsdag 6 februari 2007 04:07 schreef wipes66 het volgende:
    Weet iemand hoe je in php thumbnail kan maken die niet wazig zijn? Ik gebruik gewoon imagecopyresampled en ImageCreateTrueColor, maar de kwaliteit is echt beroerd.

    Het veschil tussen photoshop en php
    [afbeelding]
    Je zou in plaats van GD ook Image Magick eens kunnen proberen, als dat op je server geinstalleerd is. De imagick_resize() functie heeft een blur-argument, waarmee je je plaatje scherper of blurrier kunt maken. Wie weet krijg je het daarmee wel goed.
    wipes66dinsdag 6 februari 2007 @ 11:02
    quote:
    Op dinsdag 6 februari 2007 10:10 schreef Tuvai.net het volgende:

    [..]

    En heb je in je eigen scriptje de kwaliteit wel op 100 staan? De voorbeeldafbeelding die je post is dusdanig onscherp dat ik wel zeker weet dat er een compressiepercentage op gebruikt is. D'r zitten zelfs vlekken kleurverschil in het witte van de achtergrond.
    hij stond op 75, maar als ik het op 100 zet maakt het nog niet veel uit.
    wipes66dinsdag 6 februari 2007 @ 11:18
    quote:
    Op dinsdag 6 februari 2007 10:16 schreef Tijn het volgende:

    [..]

    Je zou in plaats van GD ook Image Magick eens kunnen proberen, als dat op je server geinstalleerd is. De imagick_resize() functie heeft een blur-argument, waarmee je je plaatje scherper of blurrier kunt maken. Wie weet krijg je het daarmee wel goed.
    Ja magick schijnt een stuk beter te zijn, maar het staat helaas niet op mijn server
    Chandlerdinsdag 6 februari 2007 @ 11:34
    Beetje offtopic maar wel weer ontopic ivm subdomeinen.

    Weet iemand een heel klein DNS servertje die ik thuis kan draaien om te kunnen werken met subdomeinen op mijn localhost zonder dat ik voor ieder 'test' domein een apparte regel aan mijn HOSTS bestand hoef toe te voegen? anyone?
    ViPeRIIdinsdag 6 februari 2007 @ 11:51
    @Chandler.. kies er een uit

    http://www.newfreedownloads.com/find/dns-server.html
    koekiemonsterdinsdag 6 februari 2007 @ 12:46
    Ik heb onderstaande string door middel van een post-actie doorgegeven, hoe kan ik de string omzetten naar een werkende array?
    Ik heb inmiddels al verschillende dingen geprobeerd, maar ik krijg het niet vor elkaar. moet niet extreem moeilijk zijn, maar ik kom er niet meer uit:

    de string:
    quote:
    sub_list[]=17&sub_list[]=6&sub_list[]=3&sub_list[]=4&sub_list[]=18&sub_list[]=20&sub_list[]=19
    Zou eigenlijk, zoiets moeten kunnen
    echo $sub_list[0]; zou moeten geven 17
    Tuvai.netdinsdag 6 februari 2007 @ 12:50
    Probeer de post string anders eens te parsen als bijvoorbeeld:
    17,6,3,4,18,29,19

    Of met waardes gescheiden door een ander teken in plaats van een komma.

    Op de nieuwe pagina kun je dan door middel van explode() een array maken.
    koekiemonsterdinsdag 6 februari 2007 @ 13:10
    datkan niet, want bovenstaande is hetgeen ik krijg aangeleverd door een ander sript.
    de string dient dus op deze manier omgezet te worden naar array.
    the_disheaverdinsdag 6 februari 2007 @ 13:16
    1
    2
    3
    4
    <?php
    $sub_list 
    $_GET['sub_list'];
    print_r($sub_list);
    ?>
    koekiemonsterdinsdag 6 februari 2007 @ 13:29
    Doet ik maar als ik $sub_list[0] doe dan krijg ik de gehele array, in plaats van de eerste waarde.
    the_disheaverdinsdag 6 februari 2007 @ 13:32
    met

    <?php

    $sub_list = $_GET['sub_list'];
    print $sub_list[0];

    ?>


    krijg ik gewoon 17

    En de gehele array > niet alleen de melding dat de string een array is?
    ralfiedinsdag 6 februari 2007 @ 14:11
    ok, dus je wilt die string omzetten (als ik het goed begrijp)? Hier heb je wat voorbeelden
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php
    $str
    ='sub_list[]=17&sub_list[]=6&sub_list[]=3&sub_list[]=4&sub_list[]=18&sub_list[]=20&sub_list[]=19';

    //methode 1
    parse_str($str);

    var_dump($sub_list);

    //methode 2
    eval('$'.str_replace('&sub_list',';$sub_list',$str).';');

    var_dump($sub_list);

    //methode 3
    preg_match_all("/sub_list[]=(d+)/",$str,$matches);
    $sub_list=$matches[1];

    var_dump($sub_list);
    ?>
    veel plezier
    Chandlerdinsdag 6 februari 2007 @ 15:03
    quote:
    Op dinsdag 6 februari 2007 11:51 schreef ViPeRII het volgende:
    @Chandler.. kies er een uit

    http://www.newfreedownloads.com/find/dns-server.html
    Jammer dat ik er geen kan kiezen aangezien ze allemaal $$ kosten en zoek eentje die gratis is!
    Darkomendinsdag 6 februari 2007 @ 17:29
    $string = "sub_list[]=17&sub_list[]=6&sub_list[]=3&sub_list[]=4&sub_list[]=18&sub_list[]=20&sub_list[]=19";
    $string = str_replace ("sub_list[]", "", $string);
    $string = str_replace ("&", "", $string);
    $string = substr($string,1,strlen($string));
    $array = explode('=',$string);
    print'<pre>';
    print_r($array);
    print'</pre>';


    Het is niet netjes, maar het werkt
    SuperRembodinsdag 6 februari 2007 @ 18:19
    quote:
    Op dinsdag 6 februari 2007 14:11 schreef ralfie het volgende:
    ok, dus je wilt die string omzetten (als ik het goed begrijp)? Hier heb je wat voorbeelden
    [ code verwijderd ]

    veel plezier
    Parse_str() is denk ik wel de mooiste oplossing. Alleen is het wel handig om 'm even in een functie te zetten, om te voorkomen dat er andere variabelen gezet worden dan je eigenlijk wil.
    koekiemonsterdinsdag 6 februari 2007 @ 18:31
    thanx!
    JortKwoensdag 7 februari 2007 @ 09:17
    Ik heb gisteravond een hele tijd zitten kloten, maar kom er niet uit:

    Ik heb een form gemaakt met drie velden:

    Datum (form input type text)
    Aantal (form input type text)
    Hits (form input type text)

    Nu wil ik deze drie gaan inlezen in me database met de volgende query:

    INSERT INTO statis (vDatum, vAantal, vHits)
    VALUES (Datum, Aantal, Hits)

    Kolommen hebben de volgende data types:

    vDatum = date
    vAantal = numeric
    vHits = numeric

    Nu zegt me form netjes dat die het record heeft aangemaakt, maar met een select zie ik de records niet terug (spreek: me tabel is nog steeds leeg )

    Hoe kan dit...

    Zal het te maken hebben met datatypes verschillen tussen me form en query?

    Ik heb niet de source bij de hand, zit nu op me werk

    Kan iemand mij helpen, voor zover?
    hornagewoensdag 7 februari 2007 @ 09:43
    Misschien krijg je tijdens het uitvoeren van je insert query een foutmelding van mysql?
    Voer je je query wel op de volgende manier uit? Zo krijg je tenminste informatie als er iets fout gaat:
    1
    2
    3
    <?php
    mysql_query
    ($query) or die(mysql_error());
    ?>
    JortKwoensdag 7 februari 2007 @ 09:47
    Nee ik voer m zo uit:

    1
    2
    3
    <?php
    mysql_query
    ($query) or die("Kan de Query niet uitvoeren!");
    ?>


    Maar hij gaat gewoon door naar de Echo die eronder staat.

    Deze ga ik vanavond ff proberen..
    hornagewoensdag 7 februari 2007 @ 10:08
    naja, als je dus wel een die() uitvoert en je krijgt niet die string te zien dan zal de query ansich wel goed zijn. MMm, misschien benader je dan de gegevens uit de $_POST verkeerd
    JortKwoensdag 7 februari 2007 @ 10:27
    Moet ik niet me datum die ik zo invoer: 07-02-2007 CASTEN in me query?
    Desdinovawoensdag 7 februari 2007 @ 11:03
    deel 38

    ik heb een mysql vraag..
    ik heb een tabel Itemdata, met hierin ID, ItemID, en CategorieID
    ook heb ik een tabel Items.

    Ik wil een query samenstellen die alle records uit Itemdata trekt waar het ItemID zowel CategorieID 1 als CategorieID 2 heeft, maar alleen de items die voldoen aan beide voorwaarden. Ik kan maar 1 CategorieID per record in Itemdata toevoegen.. dus hij moet 2 records uit Itemdata trekken waarbij ItemID hetzelfde is en CategorieID 1 en CategorieID 2 is.

    is dat n beetje duidelijk?

    Uiteraard in 1 query..
    ralfiewoensdag 7 februari 2007 @ 11:38
    dit is een mogelijkheid, weet niet of er een betere is
    select * from itemdata i where i.CategorieID=1 AND CASE WHEN EXISTS(SELECT * FROM itemdata e WHERE e.categorieID=2 AND e.ItemID=i.itemID) THEN 1 ELSE 0 END=1

    zws beetje omslachtig, maar het werkt
    super-muffinwoensdag 7 februari 2007 @ 11:54
    Heb je hier niks aan Desdinova?
    http://dev.mysql.com/doc/refman/5.0/en/searching-on-two-keys.html
    wobbelwoensdag 7 februari 2007 @ 15:51
    Oke, komt ie

    Ik heb 1 tabel met categorieën en 1 tabel met subcategorieën deze zien er zo uit:

    Tabel: Categorie
    - IdCategorie
    - Categorie

    Waarden bij tabel Categorie
    1 | Koekoeksklokken
    2 | Horloges

    Tabel: Subcategorie
    - IdSubcategorie
    - CategorieId
    - Subcategory

    Waarden bij tabel Subcategorie
    1 | 1 | Met levende vogeltjes
    2 | 1 | Met dode vogeltjes
    3 | 2 | Mooie horloges
    4 | 2 | Lelijke horloges
    5 | 2 | Horloges gestolen door negers

    Hoe zorg ik er nu voor dat ik het zo uit de database kan halen:

    Koekoeksklokken
    - Met levende vogeltjes
    - Met dode vogeltjes
    Horloges
    - Mooie horloges
    - Lelijke horloges
    - Horloges gestolen door negers
    super-muffinwoensdag 7 februari 2007 @ 15:57
    SELECT *
    FROM categorie, Subcategorie
    WHERE SubCategorie.Subcategorie = categorie.idCategorie

    Ik had vanmiddag het zelfde, zo werkt het wel ongeveer, nu nog alles netjes in een UL zien te krijgen.
    wobbelwoensdag 7 februari 2007 @ 16:02
    quote:
    Op woensdag 7 februari 2007 15:57 schreef super-muffin het volgende:
    SELECT *
    FROM categorie, Subcategorie
    WHERE SubCategorie.Subcategorie = categorie.idCategorie

    Ik had vanmiddag het zelfde, zo werkt het wel ongeveer, nu nog alles netjes in een UL zien te krijgen.
    En dat is het probleem, want nu krijg ik:

    Categorienaam
    - Subcategorie
    Categorienaam
    - Subcategorie

    steeds
    super-muffinwoensdag 7 februari 2007 @ 16:08
    Dan moet je dit gebruiken (had ik van iemand van Fok! gekregen)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    while($row mysql_fetch_assoc($result)) {

        if(
    $categorie != $row['Categorie']) {
            
    $categorie!= $row['Categorie']
            echo 
    "n<h2>" $row['Categorie'] . "</h2>n<ul>n";
        }
        
        echo 
    $row['Subcategory'] . "<br /> n";

    }
    ?>
    wobbelwoensdag 7 februari 2007 @ 16:48
    Gelukt

    Als het anders kan (of makkelijker en sneller) gelieve even te posten.

    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
    <?php
    $MySQL_Subcat_Select                                    
    = "SELECT SHOP_Category.Intern,
                                                            SHOP_Subcategory.InternSubcat,
                                                            SHOP_Subcategory.IdSubcategory
                                                            FROM SHOP_Category
                                                            INNER JOIN SHOP_Subcategory
                                                            ON ( SHOP_Subcategory.CategoryId = SHOP_Category.IdCategory )
                                                            ORDER BY SHOP_Category.Intern ASC"
    ;
    $MySQL_Subcat_Query                                        = mysql_query ( $MySQL_Subcat_Select )
                                                            or die (
    $error->MySQL ( __FILE__, $MySQL_Subcat_Select, __LINE__ ) );

    $i                                                        = 0;

    $DropDown                                                = "<select name="Category">";
    $DropDown                                                .= "n";

    while (
    $MySQL_Subcat_Array = mysql_fetch_assoc ( $MySQL_Subcat_Query ) )
    {

        if (
    $MySQL_Subcat_Array['Intern'] != $CategoryIntern )
        {
                    
            if (
    $i > 0 )
            {
            
                
    $DropDown                                    .= "</optgroup>";
                
    $DropDown                                    .= "n";
            
            }        
                        
            
    $DropDown                                        .= "<optgroup label="" . $MySQL_Subcat_Array['Intern'] . "">";
            
    $DropDown                                        .= "n";
            
        }
        
        
    $DropDown                                             .= "<option value="" . $MySQL_Subcat_Array['IdSubcategory'] . "">" . $MySQL_Subcat_Array['InternSubcat'] . "</option>";
        
    $DropDown                                            .= "n";
        
        if (
    $MySQL_Subcat_Array['Intern'] != $CategoryIntern )
        {
        
            
    $CategoryIntern                                    = $MySQL_Subcat_Array['Intern'];
            
        }    
        
        
    $i++;    
        
    }

    $DropDown                                                .= "</optgroup>";
    $DropDown                                                .= "n";
    $DropDown                                                .= "</select>";

    echo
    $DropDown;
    ?>


    [ Bericht 67% gewijzigd door wobbel op 07-02-2007 16:53:48 ]
    Chandlerwoensdag 7 februari 2007 @ 17:51
    sjeetje wat een hoop spacing zeg
    wobbeldonderdag 8 februari 2007 @ 07:36
    quote:
    Op woensdag 7 februari 2007 17:51 schreef Chandler het volgende:
    sjeetje wat een hoop spacing zeg
    Ik werk altijd met tabjes enzo en met een template parser (en mijn script had ik ff omgebouwd voor fok zonder template parser)

    Maar het echte script gebruikt veel meer if/else statements, dus dan moeten de inspringen wat meer naar rechts
    JortKdonderdag 8 februari 2007 @ 10:51
    Ik wordt helemaal leip van die spacing ongelofelijk

    Het is trouwens gelukt met me date inserten, had nog een oud veld in me query staan

    * JortK is lul
    Swetseneggerdonderdag 8 februari 2007 @ 11:44
    Ordinaire terug vind post
    JortKdonderdag 8 februari 2007 @ 11:45
    quote:
    Op donderdag 8 februari 2007 11:44 schreef Swetsenegger het volgende:
    Ordinaire terug vind post
    Viezerik
    Desdinovadonderdag 8 februari 2007 @ 14:57
    is er een manier om alle records waarvan het ID in een $array staat uit de database te halen?
    zonder dat je moeilijk moet gaan doen met een foreach-loop van de array waarmee je de query samenstelt en uiteindelijk 100x het stukje 'OR ID = #' krijgt?
    ralfiedonderdag 8 februari 2007 @ 15:21
    Ja, dat kan met IN
    1Select * from x where id IN (2,4,6,2,1,3,5,6)


    simpel op te bouwen dmv join/implode:
    1
    2
    3
    <?php
    "SELECT * FROM x WHERE id IN (" . join( ',' , $arr ) . ")";
    ?>
    Desdinovadonderdag 8 februari 2007 @ 15:30
    OOMGGG.. als ik die JOIN eerder had gekend had ik echt uuuuureeen bespaard..

    zelfde met de IN

    een combinatie van euforie en melancholie.

    tx!
    Swetseneggerdonderdag 8 februari 2007 @ 16:02
    quote:
    Op donderdag 8 februari 2007 15:30 schreef Desdinova het volgende:
    OOMGGG.. als ik die JOIN eerder had gekend had ik echt uuuuureeen bespaard..

    zelfde met de IN

    een combinatie van euforie en melancholie.

    tx!
    Het is best al regelmatig voorbij gekomen.
    Ik gebruik hem zelf voor een winkelwagentje systeem. Een sessie array met produkt-id's.....
    markiemarkdonderdag 8 februari 2007 @ 16:20
    klein probleempje.. heb een tabel gevormd met de resultaten die de database uitpoept. nu wil ik om de rij een variabele weergeven dus zeg maar zo:

    gegevens rij 1
    gegevens rij 2
    variabele
    gegevens rij 3
    gegevens rij 4
    variabele
    enz...

    ik weet dat dit kan met iets als if ($counter % 2){.... } ofzo
    maar dat werkt niet..
    hooeee doe ik dit?
    markiemarkdonderdag 8 februari 2007 @ 16:33
    heb het als volgt opgelost: heel vies:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
       if ($teller % 2){
          echo "<tr>";
       }

    // tabel weergeven

       if ($teller % 2){
       }else{
          echo "</tr>";
       }
    Xcaliburdonderdag 8 februari 2007 @ 23:32
    Ik heb een probleem met MySQL met inladen van een groot csv bestand (100.000+ records) via LOAD DATA. Het inladen an sich werkt, gaat retesnel. Alleen staan de velden in het csv bestand niet op de juiste volgorde en heb ik er een aantal niet nodig in mijn database.

    Dus kan je aan het einde van het LOAD DATA commando de namen van de velden opgeven (col1, col2, ... ) en daar gaat het dus fout. Volgens de MySQL manual kan ik velden benoemen op de volgende manier: (firstname, @val1, lastname, @val2, etc) waarbij de eerste kolom uit de csv dus in de kolom firstname terecht komt, kolom in lastname, etc.

    En daar gaat het dus fout
    Kolommen komen niet op de juiste plek terecht, in plaats van @val2 pakt hij kolom 11 uit de csv bijvoorbeeld, en er lijkt vrij weinig logica in te zitten. Alle velden in de database zijn varchar(255), dus het is niet zo dat de content niet in het veld past ofzo...

    Alle tips zijn welkom
    Tuvai.netdonderdag 8 februari 2007 @ 23:47
    CSV naar SQL is vaak een kutkarwei, sowieso als het aantal velden in het CSV bestand en je SQL database niet overeenkomen. Heb je al eens geprobeerd om de overbodige kolommen in je CSV bestand er uit te halen?

    In PHPMyAdmin zit trouwens ook een ingebouwde functies om CSV bestanden te exporteren. Ik heb hier echter wel weinig goede ervaringen mee.
    Xcaliburvrijdag 9 februari 2007 @ 08:28
    hoe kan ik makkelijk een kolom uit een csv halen met 100.000+ records? Ik kan het bestand niet eens in z'n geheel in Excel openen.... ik wil het bij voorkeur via LOAD DATA doen, omdat het anders zo lang gaat duren (moet ook dagelijks geautomatiseerd gaan gebeuren).

    Ik ga maar eens om een goed bestand zeuren denk ik
    super-muffinvrijdag 9 februari 2007 @ 08:56
    quote:
    Op donderdag 8 februari 2007 16:33 schreef markiemark het volgende:
    heb het als volgt opgelost: heel vies:
    [ code verwijderd ]
    Wat dus ook zo kan:
    1
    2
    3
    4
    5
    6
    7
    8
    9
       if ($teller % 2){
          echo "<tr>";
       }

    // tabel weergeven

       if ($teller !% 2){
          echo "</tr>";
       }

    zo kun je het ook opschrijven :)
    markiemarkvrijdag 9 februari 2007 @ 11:04
    1
    2
    3
       if ($teller !% 2){
          echo "</tr>";
       }

    Daar ging ie dus mee op zn bek bij mij... want dat had ik al wel geprobeerd..
    ralfievrijdag 9 februari 2007 @ 12:16
    1if (0 == $teller % 2)
    Tuvai.netvrijdag 9 februari 2007 @ 17:59
    quote:
    Op vrijdag 9 februari 2007 08:28 schreef Xcalibur het volgende:
    hoe kan ik makkelijk een kolom uit een csv halen met 100.000+ records? Ik kan het bestand niet eens in z'n geheel in Excel openen.... ik wil het bij voorkeur via LOAD DATA doen, omdat het anders zo lang gaat duren (moet ook dagelijks geautomatiseerd gaan gebeuren).

    Ik ga maar eens om een goed bestand zeuren denk ik
    Ik zit wel eens in SQL dumps te snuffelen die honderden MBs groot zijn. Duurt effe eer ze geopend zijn, maar zodra 't geladen is kun je aan de slag.

    Moet ik wel bij zeggen dat ik een leuk computersysteempje heb draaien hier.
    SkaterSamvrijdag 9 februari 2007 @ 19:09
    Even vraagje, ben na een tijdje weer bezig met mijn weblogscriptjes, en nu ben ik bezig met de login. Nu geef ik in de login sessie een Fingerprint mee aan elke user, om te controleren of ze het wel zijn. Maar nu ik er naar kijk lijkt het me niet zo veilig meer...

    1
    2
    3
    4
    <?php
    $fingerprint
    = "UNIEKE_TOKEN" . $_SERVER['HTTP_USER_AGENT'];
    $fingerprint = md5($fingerprint);
    ?>

    Dit is de unieke token dat gemaak wordt en telkens gecontroleerd op elke pagina in de Admin. Ik vroeg me af wat jullie er van vonden, en of je tips had wat betreft beveiliging.
    Chandlervrijdag 9 februari 2007 @ 19:41
    tja waarom maak je geen fingerprint van idd die server + IP oid... veel meer betrouwbaar...
    smesjzvrijdag 9 februari 2007 @ 21:54
    quote:
    Op vrijdag 9 februari 2007 19:09 schreef SkaterSam het volgende:
    Even vraagje, ben na een tijdje weer bezig met mijn weblogscriptjes, en nu ben ik bezig met de login. Nu geef ik in de login sessie een Fingerprint mee aan elke user, om te controleren of ze het wel zijn. Maar nu ik er naar kijk lijkt het me niet zo veilig meer...
    [ code verwijderd ]


    Dit is de unieke token dat gemaak wordt en telkens gecontroleerd op elke pagina in de Admin. Ik vroeg me af wat jullie er van vonden, en of je tips had wat betreft beveiliging.
    Zo'n fingerprint is toch niet uniek? IPV md5 kan je natuurlijk iets sterkers gebruiken als sha256.

    Maar verder kan je gewoon het IP versleutelen.
    1
    2
    3
    4
    <?php
    $plain
    = sprintf("%s-%s",$_SERVER['REMOTE_ADDR']."-".$zijninlognaam);
    $fingerprint = base64_encode(hash('sha256',$plain,true));
    ?>


    Allicht zijn er nog andere manieren te verzinnen om het IP aan een sessie te hangen.
    Iets als:

    session.referer_check string
    session.referer_check contains the substring you want to check each HTTP Referer for. If the Referer was sent by the client and the substring was not found, the embedded session id will be marked as invalid. Defaults to the empty string.

    session.cookie_httponly boolean
    Marks the cookie as accessible only through the HTTP protocol. This means that the cookie won't be accessible by scripting languages, such as JavaScript. This setting can effectively help to reduce identity theft through XSS attacks (although it is not supported by all browsers).
    super-muffinzaterdag 10 februari 2007 @ 00:59
    Misschien lukt het niet omdat het zo laat is, maar hoe kan ik 2 strings returnen in een functie?
    smesjzzaterdag 10 februari 2007 @ 10:55
    quote:
    Op zaterdag 10 februari 2007 00:59 schreef super-muffin het volgende:
    Misschien lukt het niet omdat het zo laat is, maar hoe kan ik 2 strings returnen in een functie?
    Niet.

    Alleen:

    return array($stringA,$stringB);

    In PHP werkt dit bijv niet: echo foobar()[0];
    Je moet dan iets gebruiken als dit:

    $tmp = foobar();
    echo $tmp[0] // Geeft $stringA
    echo $tmp[1] // Geeft $stringB
    Lightzaterdag 10 februari 2007 @ 11:54
    quote:
    Op vrijdag 9 februari 2007 21:54 schreef smesjz het volgende:

    [..]

    Zo'n fingerprint is toch niet uniek? IPV md5 kan je natuurlijk iets sterkers gebruiken als sha256.

    Maar verder kan je gewoon het IP versleutelen.
    [ code verwijderd ]
    1
    2
    3
    <?php
    $plain
    = sprintf("%s-%s",$_SERVER['REMOTE_ADDR']."-".$zijninlognaam);
    ?>


    sprintf verwacht daar 2 strings, je geeft er maar 1.
    smesjzzaterdag 10 februari 2007 @ 12:05
    quote:
    Op zaterdag 10 februari 2007 11:54 schreef Light het volgende:

    [..]
    [ code verwijderd ]

    sprintf verwacht daar 2 strings, je geeft er maar 1.
    Oeps, zo dus:

    1
    2
    3
    <?php
    $plain
    = sprintf("%s-%s",$_SERVER['REMOTE_ADDR'],$zijninlognaam);
    ?>
    Lightzaterdag 10 februari 2007 @ 13:04
    Yep Of gewoon geen sprintf gebruiken in dit geval.
    super-muffinzaterdag 10 februari 2007 @ 18:40
    quote:
    Op zaterdag 10 februari 2007 10:55 schreef smesjz het volgende:

    [..]

    Niet.

    Alleen:

    return array($stringA,$stringB);

    In PHP werkt dit bijv niet: echo foobar()[0];
    Je moet dan iets gebruiken als dit:

    $tmp = foobar();
    echo $tmp[0] // Geeft $stringA
    echo $tmp[1] // Geeft $stringB
    oke bedankt
    JortKzaterdag 10 februari 2007 @ 21:31
    Ik zit met de volgende uitdaging :)

    Ik wil een stuk tekst op een bepaalde plek een link anchor meegeven.

    Ik heb bijvoorbeeld deze zin:

    1Om meer te lezen, klik hier


    in mijn form vul ik bovenstaande zin in in een veld als volgt

    1Om meer te lezen, <T>klik hier</T>


    Nu wil ik de <T> vervangen door <a href="URL">, en de </T> door </a>

    hoe krijg ik dit op een snelle, cleane manier voor elkaar, ik heb met de str_replace() zitten klooien maar daar kom ik niet helemaal uit :) ?
    ralfiezaterdag 10 februari 2007 @ 21:40
    bijv
    1
    2
    3
    <?php
    $str
    =preg_replace("/<T>(.*?)<\/T>/","<a href=\"URL\">\\1</a>",$str);
    ?>
    JortKzaterdag 10 februari 2007 @ 21:47
    quote:
    Op zaterdag 10 februari 2007 21:40 schreef ralfie het volgende:
    bijv
    [ code verwijderd ]
    Werkt als een tiet thanks!
    Swetseneggerzaterdag 10 februari 2007 @ 21:49
    met dank aan SuperRembo een url parser die zo'n beetje alles parsed

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $regexps = array(
                   // http://foo.net => [url=http://foo.net]http://foo.net[/url]
                   '#(?<![url=)(http://.*?)(?=[.,?:;()<>]*(s|$))#i'   => '[url=1]1[/url]',
                // www.foo.net => [url=www.foo.net]http://www.foo.net[/url]
                '#(?<![url=)(?<!http://)(www..*?)(?=[.,?:;()<>]*(s|$))#i'   => '[url=http://1]1[/url]',
                // [url=http://foo.net]Foo[/url] => <a href="http://foo.net">Foo</a>
                '#[url=(https?://.*?)](.*?)[/url]#i'   => '<a class="main" href="1" target="_new">2</a>',
                // [url=foo.net]Foo[/url] => <a href="http://foo.net">Foo</a>
                '#[url=(.*?)](.*?)[/url]#i'   => '<a class="main" href="http://1" target="_new">2</a>',
                   );

       foreach ($regexps as $search=>$replace) {
             $text = preg_replace($search, $replace, $text);
       }
    SuperRembozaterdag 10 februari 2007 @ 23:31
    Helaas heb je er zo niet veel aan omdat alle \\ verneukt zijn

    En de class="main" en target="_new" (wat natuurlijk target="_blank" zou moeten zijn) zijn toevoegingen van swets
    Swetseneggerzaterdag 10 februari 2007 @ 23:37


    Maar het zou wel leuk zijn als die backslash bug eens opgelost wordt in replique
    Chandlerzondag 11 februari 2007 @ 12:00
    Weet iemand een manier om javascript zaken uit HTML te filteren? zodat ik heerlijk gewoon een wysiwyg editor kan gebruiken voor wat voor site dan ook maar?
    JortKzondag 11 februari 2007 @ 12:11
    ik zit weer met een nieuwe uitdaging... eens kijken hoever ik kom, en anders horen jullie het van me
    Chandlerzondag 11 februari 2007 @ 14:31
    vtel! eens!
    SuperRembozondag 11 februari 2007 @ 14:46
    quote:
    Op zondag 11 februari 2007 12:00 schreef Chandler het volgende:
    Weet iemand een manier om javascript zaken uit HTML te filteren? zodat ik heerlijk gewoon een wysiwyg editor kan gebruiken voor wat voor site dan ook maar?
    "om javascript zaken uit HTML te filteren"
    JortKzondag 11 februari 2007 @ 14:52
    quote:
    Op zondag 11 februari 2007 14:46 schreef SuperRembo het volgende:

    [..]

    "om javascript zaken uit HTML te filteren"
    Ja ik snapte hem ook al niet helemaal
    Swetseneggerzondag 11 februari 2007 @ 14:55
    dat javascript uit html filteren begreep ik nog, maar het doel... wysiwig editor gebruiken... ontgaat me
    JortKzondag 11 februari 2007 @ 14:57
    quote:
    Op zondag 11 februari 2007 14:31 schreef Chandler het volgende:
    vtel! eens! :)
    Nou ik moet iets scripten wat het volgende doet:

    Ik heb een input als volgt:

    1
    2
    3
    4
    5
    6
    7
    <a href="url"><img src="plaatje"></a>
    <BR>
    <a href="url2"><img src="plaatje2"></a>
    <a href="url3"><img src="plaatje3"></a>
    <BR>
    <a href="url4"><img src="plaatje4"></a>
    <BR>


    Kortom... plaatjes met een anchor met in willekeur de <BR> tag (lang leve Imagevenue :) )

    De rauwe code gebruik ik als input in me form.

    Wanneer de input geprocessed wordt, moet het volgende gebeuren:

    * Alle <BR> tags verwijderen.
    * Na iedere vierde afbeelding, dus na iedere vierde </a> moet een <BR> komen.
    * Tussen iedere </a><a tag moet    komen

    En in deze volgorde :)
    Swetseneggerzondag 11 februari 2007 @ 15:03
    str_replace waar bij je de <BR> vervangt door een spatie. hoppa, de spaties heb je alvast.
    En een tellertje mee laten lopen en als die op 4 staat een <br /> parsen
    Chandlerzondag 11 februari 2007 @ 15:10
    Ik doel dus op het volgende

    Er zijn vele varianten van <script> in html, en deze wil ik allemaal kunnen verwijderen op het moment dat een pagina wordt opgeslagen (en dat over wysiwyg editor boeit niet )
    SuperRembozondag 11 februari 2007 @ 15:16
    Gewoon iets als preg_replace($content, '#<script.*</script>#isU', '')?
    CraZaayzondag 11 februari 2007 @ 15:21
    quote:
    Op zondag 11 februari 2007 15:10 schreef Chandler het volgende:
    Ik doel dus op het volgende

    Er zijn vele varianten van <script> in html, en deze wil ik allemaal kunnen verwijderen op het moment dat een pagina wordt opgeslagen (en dat over wysiwyg editor boeit niet )
    Ik zou hier heel erg mee uitkijken. Een onclick bevat ook scripting, en css kan ook scripting bevatten (tenminste: op de plaats waar css hoort te staan javascript uitvoeren). Je zult je aardig moeten verdiepen in de materie om dit allemaal af te vangen.
    Nevermindzondag 11 februari 2007 @ 15:22
    Is er een manier om alle aanwezige schijfletters op een windows pc te achterhalen? En is het mogelijk om onderscheid te maken tussen vaste (HD) en losse (CD/diskette) schijven?
    Met COM werken is geen bezwaar, maar daar heb ik helaas geen kaas van gegeten
    Chandlerzondag 11 februari 2007 @ 15:29
    @SuperRembo & CraZaay: klopt, daarom zoek ik er ook iets tegen
    ralfiezondag 11 februari 2007 @ 19:16
    quote:
    Op zondag 11 februari 2007 15:22 schreef Nevermind het volgende:
    Is er een manier om alle aanwezige schijfletters op een windows pc te achterhalen? En is het mogelijk om onderscheid te maken tussen vaste (HD) en losse (CD/diskette) schijven?
    Met COM werken is geen bezwaar, maar daar heb ik helaas geen kaas van gegeten
    ik weet niet of er een betere manier is, maar je kunt in xp iig deze drives uit het register lezen. Bij elke drive staat een vage code die vast ergens voor staat, en waar je waarschijnlijk een hoop informatie uit kan halen, maar ik kom niet verder als de eerste twee karakters, die bij removable hardware altijd '5c' blijken te zijn (bij mij iig). Ze schijnen ook identiek te zijn bij verschillende partities van dezelfde schijf, tis maar dat je het weet. Ik heb zogauw iig niets gevonden over wat de codes precies betekenen.

    1
    2
    3
    4
    5
    6
    <?php
    exec
    ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices"',$output);
    $out=array();
    foreach(
    $output as $x)
            if(
    preg_match("#DosDevices.(\w):.REG_BINARY.([0-9A-Z]{2})#is",$x,$matches)) $out[$matches[1]]=$matches[2]=='5C'?'Removable':'Stuck';
    ?>
    Je krijgt dan een array ($out) met bijv
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    array (
      'C' => 'Stuck',
      'D' => 'Stuck',
      'A' => 'Removable',
      'E' => 'Stuck',
      'F' => 'Stuck',
      'G' => 'Stuck',
      'H' => 'Removable',
      'I' => 'Removable',
      'J' => 'Removable',
    )
    Station J bestaat bij mij niet. Het komt van een usb stokje af, wat er (nu) weer uit is. Het blijkt dat tijdelijke stations voor bijv usb sticks geregistreerd blijven! Let hierop als je er wat mee gaat doen.
    Chandlerzondag 11 februari 2007 @ 20:47
    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
    <?php
    function getDriveStats($drive)
    {
        if (
    strlen($drive) == 1)
        {
            
    $drive = $drive . ":";
        }
        
        
    $exists = @stat($drive);
        if (
    $exists != false)
        {
            
    $free  = disk_free_space($drive);
            
    $total = disk_total_space($drive);

            
    $driveinfo['space'] = $total;
            
    $driveinfo['used']  = $total;
            
    $driveinfo['free']  = 0;
            
            if (
    $total != 0)
            {
                
    $driveinfo['free'] = $free;
                
    $driveinfo['used'] = $total - $free;
            }

            return
    $driveinfo;
        }
        
        return
    false;
    }

    for (
    $x = 0; $x < 26; $x++)
    {
        
    $info = getDriveStats(chr(65+$x));
        
        echo
    'drive ' . CHR(65+$x);
        
        if (
    $info == false)
        {
            echo
    ' does not exists <br />';
        }
        else
        {
            echo
    ' exists and is ' . $info['space'] . ' bytes big and has ' . $info['free'] . ' bytes free<br />';
        }
    }
    ?>
    wobbelzondag 11 februari 2007 @ 22:21
    = verkeerde topic =
    mscholmaandag 12 februari 2007 @ 10:00
    klein vraagje:
    ik heb een commandline programma en daarvan wil ik de output op het scherm hebben (of in een variable)
    echter komt de output telkens in mijn errorlog tevoorschijn?

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
        
    if(file_exists($row['location'].$row['filename']))
        {
            echo(
    "reading ".$row['location'].$row['filename']."<br><pre>");
            
            
    $last_line passthru("d:/www/ffmpeg/ffmpeg.exe -i ".$row['location'].$row['filename']);
            echo(
    "</pre>");
            
    // Printing additional info
        
    }
    ?>


    output in errorlog:
    quote:
    Seems that stream 0 comes from film source: 23.98 (65535/2733) -> 23.98 (250000/10427)
    Input #0, avi, from 'm:AnimeFate Stay Night[Eclipse] Fate-stay night - 02 (XviD) [FF455508].avi':
    Duration: 00:24:30.0, start: 0.000000, bitrate: 1041 kb/s
    Stream #0.0: Video: mpeg4, yuv420p, 640x368, 23.98 fps(r)
    Stream #0.1: Audio: mp3, 48000 Hz, stereo, 128 kb/s
    Must supply at least one output file
    FFmpeg version SVN-r7215, Copyright (c) 2000-2006 Fabrice Bellard, et al.
    configuration: --enable-memalign-hack
    libavutil version: 49.1.0
    libavcodec version: 51.25.0
    libavformat version: 51.6.0
    built on Dec 3 2006 00:22:39, gcc: 3.4.6
    wie kan me helpen?
    Swetseneggermaandag 12 februari 2007 @ 11:36
    regexp vraag

    ik heb dit als source
    1<td Width=200 bgcolor=#9DA9BD>SWETS P.J.                   </td>


    en ik heb dit patern
    1"<td Width=200 bgcolor=#9DA9BD[^>]*>(.*?)</td>"


    en die matched
    1SWETS P.J.                   // let op de whitespace!


    Ik kan geen trim op het result loslaten, dus ik wil graag de regexp aanpassen zodat hij de whitespaces aan het eind negeert. maar uh... hoe :P
    Nevermindmaandag 12 februari 2007 @ 12:13
    quote:
    Op zondag 11 februari 2007 19:16 schreef ralfie het volgende:
    quote:
    Op zondag 11 februari 2007 20:47 schreef Chandler het volgende:
    Bedankt beide! Ik zit tijdelijk even op W2k tot ik XP weer geïnstalleerd heb, dus de eerste oplossing gaat nu niet werken. Het is wel iets netter om het via het register te doen, maar de eerste tijd kan ik tijdelijk Chandlers oplossing gebruiken. Ik kan weer verder, hartelijk dank
    SuperRembomaandag 12 februari 2007 @ 12:25
    quote:
    Op maandag 12 februari 2007 11:36 schreef Swetsenegger het volgende:
    regexp vraag
    [...]
    Ik kan geen trim op het result loslaten, dus ik wil graag de regexp aanpassen zodat hij de whitespaces aan het eind negeert. maar uh... hoe :P
    Dan moet je de whitespace opgeven in je regexp, en wel buiten de haakjes:

    1"<td Width=200 bgcolor=#9DA9BD[^>]*>\s*(.*?)\s*</td>"
    Swetseneggermaandag 12 februari 2007 @ 12:53
    quote:
    Op maandag 12 februari 2007 12:25 schreef SuperRembo het volgende:

    [..]

    Dan moet je de whitespace opgeven in je regexp, en wel buiten de haakjes:
    [ code verwijderd ]
    Bedankt! zo simpel.
    Swetseneggermaandag 12 februari 2007 @ 13:35
    Hmz, waarom matched hij ook vanalles voor en na de TD? Ik wil alleen dat wat tussen de td staat
    Chandlermaandag 12 februari 2007 @ 15:37
    quote:
    Op maandag 12 februari 2007 12:13 schreef Nevermind het volgende:
    Bedankt beide! Ik zit tijdelijk even op W2k tot ik XP weer geïnstalleerd heb, dus de eerste oplossing gaat nu niet werken. Het is wel iets netter om het via het register te doen, maar de eerste tijd kan ik tijdelijk Chandlers oplossing gebruiken. Ik kan weer verder, hartelijk dank
    Graag gedaan
    SuperRembomaandag 12 februari 2007 @ 18:43
    quote:
    Op maandag 12 februari 2007 13:35 schreef Swetsenegger het volgende:
    Hmz, waarom matched hij ook vanalles voor en na de TD? Ik wil alleen dat wat tussen de td staat :{
    1
    2
    3
    if (preg_match('|<td>(.*?)</td>|i', $html, $matches) {
       $inhoudVanDeTD = $matches[1];
    }


    $matches[1] bevat alles wat tussen de 1e set haakjes staat. Dat zou moeten werken.
    Swetseneggermaandag 12 februari 2007 @ 19:11
    quote:
    Op maandag 12 februari 2007 18:43 schreef SuperRembo het volgende:

    [..]
    [ code verwijderd ]

    $matches[1] bevat alles wat tussen de 1e set haakjes staat. Dat zou moeten werken.
    Ja precies, ik had hem nodig in ASP en daarmee was het ff zoeken hoe ik de juiste uit de array kon vissen
    Bedankt weer!
    SuperRembomaandag 12 februari 2007 @ 19:25
    Waarom stel je die vraag dan hier en niet in dat APS(.NET) topic? (Waar alleen maar ouwe ASP meuk in staat)
    Swetseneggermaandag 12 februari 2007 @ 19:27
    quote:
    Op maandag 12 februari 2007 19:25 schreef SuperRembo het volgende:
    Waarom stel je die vraag dan hier en niet in dat APS(.NET) topic? (Waar alleen maar ouwe ASP meuk in staat)
    Omdat een regexp een regexp is en ik weet dat hier mensen zitten die veel weten van regexps
    Ja ik kan het ook niet helpen dat het intranet nog op ASP3.0 draait
    SuperRembomaandag 12 februari 2007 @ 19:49
    ASP.NET heeft minimaal Win2k Pro nodig. Dat lukt toch nog wel mag ik hopen?
    Swetseneggermaandag 12 februari 2007 @ 20:37
    quote:
    Op maandag 12 februari 2007 19:49 schreef SuperRembo het volgende:
    ASP.NET heeft minimaal Win2k Pro nodig. Dat lukt toch nog wel mag ik hopen?
    Mjah het is geen kwestie van hardware ofzo. Maar het is een gemeente, die veranderen niet zomaar
    Lightmaandag 12 februari 2007 @ 20:40
    quote:
    Op maandag 12 februari 2007 19:27 schreef Swetsenegger het volgende:

    [..]

    Omdat een regexp een regexp is en ik weet dat hier mensen zitten die veel weten van regexps
    Ja ik kan het ook niet helpen dat het intranet nog op ASP3.0 draait
    Ik werk overdag en kom er dan niet aan toe om hier mee te lezen
    Xcaliburdinsdag 13 februari 2007 @ 08:50
    voor alle regex mensen hier: weet iemand vanaf welke Linux / PHP versie de regex ook special characters kan matchen (ë / à / etc.). Ik had een Windows server met PHP 4.3.11 waar het werkte, maar nu ben ik over naar een Linux server met PHP 4.3.11, en daar werkt het niet

    Het gaat dus om regexen als: P{M} enzo

    Edit: ik krijg dus deze error: "Warning: preg_match(): Compilation failed: PCRE does not support L, l, N, P, p, U, u, or X"

    [ Bericht 13% gewijzigd door Xcalibur op 13-02-2007 14:13:35 ]
    Xcaliburwoensdag 14 februari 2007 @ 18:54
    dat topic loop als een trein, vraag ik wat, gelijk dood
    Darkomendonderdag 15 februari 2007 @ 08:57
    Stel dan geen moeilijke vragen
    Qunixdonderdag 15 februari 2007 @ 10:32
    Ik heb een pagina gemaakt. Als ik via index.php?pagina=home surf, krijg ik de pagina te zien zonder fouten. Anders krijg ik wel fouten en dat komt omdat ik ergens in me code, verder op de pagina het volgende heb: "$pagina = $_GET['pagina'];".

    Als er nou geen inhoud in de var pagina is krijg ik een foutmelding. Hoe zorg ik ervoor dat als er geen inhoud in de var is, dat de pagina url automatisch index.php?pagina=home wordt?

    Ik heb al wat geprobeerd met headers:

    1
    2
    3
    4
    5
    <?php
    if (!$_SERVER['PATH_TRANSLATED'] == "http://localhost/index.php") {
       header("Location: http://localhost/index.php?pagina=home");
    }
    ?>

    Bvd.
    super-muffindonderdag 15 februari 2007 @ 10:38
    1
    2
    3
    4
    5
    <?php
    if($pagina == ''') {
       include(home.php)
    }
    ?>

    Dat dus. Maar ik zou nog wel ergens de invoer van $pagina controleren.
    Qunixdonderdag 15 februari 2007 @ 10:42
    quote:
    Op donderdag 15 februari 2007 10:38 schreef super-muffin het volgende:

    [ code verwijderd ]
    Dat dus. Maar ik zou nog wel ergens de invoer van $pagina controleren.
    En hoe doe ik dat precies?

    if (Empty($pagina)) { ?
    CaPS_donderdag 15 februari 2007 @ 10:48
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php

    $pagina = 'home'; 

    $bekende_paginas = array ('home', 'about', 'contact', 'producten');

    if (isset($_GET['pagina']) && in_array ($_GET['pagina'], $bekende_paginas))
    {
      $pagina = $_GET['pagina'];
    }

    ?>


    Zie ook dit artikeltje op scriptorama.
    Qunixdonderdag 15 februari 2007 @ 10:52
    quote:
    Op donderdag 15 februari 2007 10:48 schreef CaPS_ het volgende:

    [ code verwijderd ]

    Zie ook dit artikeltje op scriptorama.
    Bedankt.
    super-muffindonderdag 15 februari 2007 @ 11:02
    en vergeet en geen else aan te hangen om de gebruiker door te sturen of iig een nette foutmelding te geven, mocht het voorkomen.
    Qunixdonderdag 15 februari 2007 @ 11:21
    quote:
    Op donderdag 15 februari 2007 11:02 schreef super-muffin het volgende:
    en vergeet en geen else aan te hangen om de gebruiker door te sturen of iig een nette foutmelding te geven, mocht het voorkomen.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
       <?php
       include("functies.php");
       $pagina = $_GET['pagina'];
       
       switch ($pagina) {
       default:
       case "home":
           include("home.php");
          break;
       case "telefoonboek":
           include("telefoonboek.php");
          break;
       case "relatiegids":
           include("relatiegids.php");
          break;
       case "admin":
           include("admin.php");
          break;
       }
       ?>
    Dit is wat ik had...
    super-muffindonderdag 15 februari 2007 @ 11:29
    Maar welke ga je nu gebruiken, die van CaPS of die van jou?
    Qunixdonderdag 15 februari 2007 @ 11:43
    quote:
    Op donderdag 15 februari 2007 11:29 schreef super-muffin het volgende:
    Maar welke ga je nu gebruiken, die van CaPS of die van jou?
    Die van mij heeft een bug...
    Heb jij anders een idee hoe ik de bug kan oplossen in mijn script?
    Ik snap niet precies het CaPS script
    Bvd.
    Geqxondonderdag 15 februari 2007 @ 11:54
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
       
       
    include("functies.php");
       
    $pagina = $_GET['pagina'];
       
       switch (
    $pagina) {
       case
    "home":
           include(
    "home.php");
          break;
       case
    "telefoonboek":
           include(
    "telefoonboek.php");
          break;
       case
    "relatiegids":
           include(
    "relatiegids.php");
          break;
       case
    "admin":
           include(
    "admin.php");
          break;
       default:
           include(
    "404.php");
       }
       
    ?>


    Bingo, als je nog even een 404.php aanmaakt zou het moeten werken. Je default kun je het beste onderaan gooien
    Qunixdonderdag 15 februari 2007 @ 12:07
    quote:
    Op donderdag 15 februari 2007 11:54 schreef Geqxon het volgende:

    [ code verwijderd ]

    Bingo, als je nog even een 404.php aanmaakt zou het moeten werken. Je default kun je het beste onderaan gooien
    Als er nou geen waarde in de pagina is, dan pakt de switch toch default?
    super-muffindonderdag 15 februari 2007 @ 12:16
    quote:
    Op donderdag 15 februari 2007 11:43 schreef Qunix het volgende:

    [..]

    Die van mij heeft een bug...
    Heb jij anders een idee hoe ik de bug kan oplossen in mijn script?
    Ik snap niet precies het CaPS script
    Bvd.
    Die van CaPS is het makkelijkst.
    hier is zijn script met commentaar:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?php
    $pagina
    = $_GET['pagina'];
    //een lijst met pagina's die geinclude mogen worden
    //aanpassen naar de pagina's die je wilt
    $bekende_paginas = array ('home', 'about', 'contact', 'producten');

    // als $pagina een waarde heeft, en in de waarde daar van in de array staat
    if (isset($pagina) && in_array ($pagina, $bekende_paginas)) {
        
    // include de pagina
        
    include($pagina . ".php");
    }
    // als de statment hierboven false is, controleer of dit wel goed is
    else if($pagina == '') {
        include(
    "home.php");
    }
    // als beide statements false zijn
    else {
        include(
    "404.php");
    }
    ?>


    [ Bericht 4% gewijzigd door super-muffin op 15-02-2007 12:24:31 ]
    Geqxondonderdag 15 februari 2007 @ 12:18
    quote:
    Op donderdag 15 februari 2007 12:07 schreef Qunix het volgende:

    [..]

    Als er nou geen waarde in de pagina is, dan pakt de switch toch default?
    Jij snapt hem
    super-muffindonderdag 15 februari 2007 @ 12:19
    quote:
    Op donderdag 15 februari 2007 12:07 schreef Qunix het volgende:

    [..]

    Als er nou geen waarde in de pagina is, dan pakt de switch toch default? :?
    Klopt, als geen van de cases true is, word de default gepakt.

    wat je ook kunt doen in het script van Geqxon:
    1
    2
    3
    4
    5
    6
    <?php
    $pagina
    = $_GET['pagina'];

    if(
    $pagina = '') $pagina = "home";
    //switch
    ?>


    Zo zie je maar, er leiden meer wegen naar Rome :P
    Geqxondonderdag 15 februari 2007 @ 12:20
    En om de integeriteit van die van CaPS te verbeteren:

    1
    2
    3
    <?php
    if (isset($_GET['pagina']) && in_array ($_GET['pagina'], $bekende_paginas) && file_exists($_GET['pagina'])
    ?>
    super-muffindonderdag 15 februari 2007 @ 12:21
    ik zou er dan van maken:

    1
    2
    3
    <?php
    if (isset($_GET['pagina']) && in_array ($_GET['pagina'], $bekende_paginas) && file_exists($_GET['pagina'] . ".php") //of .html/.htm of wat je ook gebruikt.
    ?>
    Geqxondonderdag 15 februari 2007 @ 12:22
    Verder ben ik van mening dat die isset en de in_array controle een beetje teveel van het goede is, want als hij in de array zit zal hij ook vast wel ge-set is.
    quote:
    Op donderdag 15 februari 2007 12:21 schreef super-muffin het volgende:
    ik zou er dan van maken:
    [ code verwijderd ]
    Wel zo slim
    Qunixdonderdag 15 februari 2007 @ 12:28
    quote:
    Op donderdag 15 februari 2007 12:16 schreef super-muffin het volgende:

    [..]

    Die van CaPS is het makkelijkst.
    hier is zijn script met commentaar:

    [ code verwijderd ]
    Thanks
    Qunixdonderdag 15 februari 2007 @ 13:20
    Als de url "http://localhost/intranet/" is dan krijg ik de volgende foutmelding:
    Notice: Undefined index: pagina in S:Leerbedrijfwwwrootintranetindex.php on line 72

    Lijn 72 tot 73:
    1
    2
    3
    <?php
        $pagina
    = $_GET['pagina'];
    ?>

    Ligt dat aan de php instellingen? Of is het gevaarlijk?
    Qunixdonderdag 15 februari 2007 @ 13:32
    fout is weg
    Geqxondonderdag 15 februari 2007 @ 13:37
    De kans is gering dat het werkt, maar for the sake of safety zou je ook iets als dit even kunnen proberen:

    1
    2
    3
    <?php
    include("http://www.website.nl/content/" . $pagina . ".php");
    ?>


    Dan is het in principe onmogelijk om "gekke" pagina's aan te vragen

    [ Bericht 11% gewijzigd door Geqxon op 15-02-2007 13:48:15 ]
    Qunixdonderdag 15 februari 2007 @ 13:56
    quote:
    Op donderdag 15 februari 2007 13:37 schreef Geqxon het volgende:
    De kans is gering dat het werkt, maar for the sake of safety zou je ook iets als dit even kunnen proberen:


    [ code verwijderd ]

    Dan is het in principe onmogelijk om "gekke" pagina's aan te vragen
    Thanks
    Qunixdonderdag 15 februari 2007 @ 14:45
    -edit-

    [ Bericht 91% gewijzigd door Qunix op 15-02-2007 14:52:52 ]
    super-muffindonderdag 15 februari 2007 @ 14:50
    SELECT *
    FROM tabelnaam1, tabelnaam2

    Misschien heb je wat aan deze site:
    http://www.tizag.com/mysqlTutorial/
    Qunixdonderdag 15 februari 2007 @ 14:53
    quote:
    Op donderdag 15 februari 2007 14:50 schreef super-muffin het volgende:
    SELECT *
    FROM tabelnaam1, tabelnaam2

    Misschien heb je wat aan deze site:
    http://www.tizag.com/mysqlTutorial/
    ik had een spelfout had hem toch goed
    splendordonderdag 15 februari 2007 @ 15:34
    Hoe kan ik een variabel op laten tellen binnen een for loop?

    Dus ik heb bijvoorbeeld het variabel $test1 en binnen de for loop moet ie steeds 1 hoger worden, dus je krijgt een $test2 erbij en een $test3, dus eigenlijk $test$i maar dat werkt dus niet.
    Misschien dat ik het met een array kan oplossen maar liever op deze manier als dat gaat.
    ralfiedonderdag 15 februari 2007 @ 15:43
    1
    2
    3
    4
    <?php
    $var
    ="test".$i;
    $
    $var="bla";
    ?>
    splendordonderdag 15 februari 2007 @ 15:55
    Merci.
    CraZaaydonderdag 15 februari 2007 @ 16:21
    Ik vraag me af waarom je dit liever niet met een array wilt doen?
    splendordonderdag 15 februari 2007 @ 16:28
    In het kort wil ik het volgende doen:

    Ik heb een object category, die heeft een array $clsChilds.
    Nu wil ik die gaan vullen met waardes uit de database dus ik zeg bijvoorbeeld
    $clsCategory[0]->clsChilds[0]->clsChilds[0]->addChild();

    $clsCategory[0] is de hoofdcategorie en dit is dus een child van een child, bijvoorbeeld:
    electronica (hoofdcategorie) > gsm > nokia

    Maar hoe dieper je komt, des te langer wordt het ->clsChilds[0]->clsChilds[0]-> stukje, dus dat wil ik met een for loop laten opbouwen, maar dat pakt ie niet helemaal merk ik.

    Is er nog een andere oplossing om dit te doen?
    hornagedonderdag 15 februari 2007 @ 17:04
    als je in een treestructuur een specifieke node wil hebben kan je die misschien sneller benaderen door er een searchfunctie in te maken en dan direct de methode daarin aan te roepen. Als je met trees werkt is recursie natuurlijk ook het toverwoord
    ralfiedonderdag 15 februari 2007 @ 18:00
    of gebruik pointers:
    1
    2
    3
    <?php
    $pointer
    =&$clsCategory[0]->clsChilds; //etc
    ?>
    In combinatie met een simpel for loopje natuurlijk helemaal te gek
    CaPS_donderdag 15 februari 2007 @ 18:01
    quote:
    Op donderdag 15 februari 2007 12:22 schreef Geqxon het volgende:
    Verder ben ik van mening dat die isset en de in_array controle een beetje teveel van het goede is, want als hij in de array zit zal hij ook vast wel ge-set is.
    Tja, de standaard PHP configuratie laat je inderdaad toe om de isset() aanroep weg te laten maar ik vind het niet verstandig. Wat ik schreef is logischer, het is immers mogelijk dat de variabele 'pagina' niet is meegegeven in de URL en dat dient dus gecontroleerd te worden voordat je er zomaar gebruik van maakt. Qunix is die situatie zelf ook al tegen gekomen:
    quote:
    Op donderdag 15 februari 2007 13:20 schreef Qunix het volgende:
    Als de url "http://localhost/intranet/" is dan krijg ik de volgende foutmelding:
    Notice: Undefined index: pagina in S:Leerbedrijfwwwrootintranetindex.php on line 72

    Lijn 72 tot 73:
    [ code verwijderd ]

    Ligt dat aan de php instellingen? Of is het gevaarlijk?
    BaggerUserdonderdag 15 februari 2007 @ 18:46
    dag, zit me teen klein probleempje.
    ben onlangso vergestapt naar een nieuwe php, mysql en apache versie en alles werkt in princiepe
    alleen krijg ik bij sql statements bij sommige nog een foutmelding:

    de foutmelding:

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '


    <?php

    $text = $_POST['text'];
    $id = $_GET['id'];


    $sql = "UPDATE paginas SET content = '$text' WHERE id = '$id'";
    mysql_query($sql) or die("<h1>Er is iets misgegaan</h1><hr>".mysql_error());

    ?>


    ik weet al wel hoe het komt en heb al een workarround maar weet niet hoe ik de statement kan aanpassen zodat het wel nmormaal werkt.
    het probleem is namelijk dat ik een stuk text probeer op te slaan, maar de ' uit de text als bijvoorbeeld ergens komma 's worden gebruikt dan loopt hij daar tegen aan in de statement... dubbele quotes gebruiken is een oplossing maar dat gaat gewoon niet altijd

    iemand een idee hoe ik dit kan verhelpen ?
    splendordonderdag 15 februari 2007 @ 18:54
    1$var1 = "iets" . $var2 . "sdf";


    Is de juiste manier om het te doen. :) Volgens mij lost dat het wel op.

    @hornage, een specifieke node lezen kan ik al wel maar het probleem was om de hele database in te lezen en classes van te maken.
    @ralfie, bedankt dat ga ik eens proberen!
    Swetseneggerdonderdag 15 februari 2007 @ 19:39
    quote:
    Op donderdag 15 februari 2007 18:46 schreef BaggerUser het volgende:
    dag, zit me teen klein probleempje.
    ben onlangso vergestapt naar een nieuwe php, mysql en apache versie en alles werkt in princiepe
    alleen krijg ik bij sql statements bij sommige nog een foutmelding:

    de foutmelding:

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '


    <?php

    $text = $_POST['text'];
    $id = $_GET['id'];


    $sql = "UPDATE paginas SET content = '$text' WHERE id = '$id'";
    mysql_query($sql) or die("<h1>Er is iets misgegaan</h1><hr>".mysql_error());

    ?>


    ik weet al wel hoe het komt en heb al een workarround maar weet niet hoe ik de statement kan aanpassen zodat het wel nmormaal werkt.
    het probleem is namelijk dat ik een stuk text probeer op te slaan, maar de ' uit de text als bijvoorbeeld ergens komma 's worden gebruikt dan loopt hij daar tegen aan in de statement... dubbele quotes gebruiken is een oplossing maar dat gaat gewoon niet altijd

    iemand een idee hoe ik dit kan verhelpen ? ;(
    mysql_real_escape_string
    En $id hoeft waarschijnlijk niet in tussen enkele quotes, want zal een integer bevatten en je variabelen buiten quotes plaatsen
    1
    2
    3
    <?php
    $sql
    = "UPDATE paginas SET content = '".$text."' WHERE id = ".$id;
    ?>
    splendordonderdag 15 februari 2007 @ 19:47
    quote:
    Op donderdag 15 februari 2007 18:00 schreef ralfie het volgende:
    of gebruik pointers:
    [ code verwijderd ]

    In combinatie met een simpel for loopje natuurlijk helemaal te gek
    Ik heb nu:
    1
    2
    $pointer =& $clsObject->clsChild;
    $$var = $pointer->function();


    Dat werkt. Maar ik wil een oneindig aantal clsChilds, wee tje toevallig ook hoe dat moet?
    Dit werkt bijvoorbeeld niet:

    1
    2
    3
    $pointer =& $clsObject->clsChild;
    $pointer2 =& clsChild;
    $$var = $pointer->pointer2->function();
    Chandlerdonderdag 15 februari 2007 @ 20:38
    Minivraag

    met dit maak ik van een string een array
    1explode(",", FONTS)


    echter krijg ik dan

    1
    2
    3
    $font[0] = "Arial";
    $font[1] = "Times";
    etc


    maar eingelijk wil ik $font['Arial'] = "Arial" etc.

    Weet iemand hoe ik dat simpel kan realiseren
    Chandlerdonderdag 15 februari 2007 @ 20:39
    quote:
    Op donderdag 15 februari 2007 19:39 schreef Swetsenegger het volgende:

    [..]

    mysql_real_escape_string
    En $id hoeft waarschijnlijk niet in tussen enkele quotes, want zal een integer bevatten en je variabelen buiten quotes plaatsen
    [ code verwijderd ]
    Toch zou ik $_GET['id'] ff met is_numeric checken, in case of
    CraZaaydonderdag 15 februari 2007 @ 20:44
    quote:
    Op donderdag 15 februari 2007 20:38 schreef Chandler het volgende:
    Minivraag

    met dit maak ik van een string een array
    [ code verwijderd ]

    echter krijg ik dan
    [ code verwijderd ]

    maar eingelijk wil ik $font['Arial'] = "Arial" etc.

    Weet iemand hoe ik dat simpel kan realiseren
    explode() en dan array_flip()? En anders even verder kijken dan je neus lang is en http://nl2.php.net/manual/en/ref.array.php eens lezen
    Chandlerdonderdag 15 februari 2007 @ 20:56
    CraZaay, array_flip draait gegevens om... maar ik wil niet omdraaien, ik wil dat alle items in deze array dezelfde 'id' als value krijgen.. maar goed, dan maar een paar regels meer

    1
    2
    3
    4
    5
    $fnt = explode(",", FONTS);
        foreach ($fnt as $null => $font)
        {
            $fontArr[$font] = $font;
        }


    en heb die doc op php.net natuurlijk gelezen voordat ik hier ging posten
    Tijndonderdag 15 februari 2007 @ 21:01
    Waarom zou je willen dat de key hetzelfde is als de value? Wat is dan nog het nut van ze beiden opslaan?
    Swetseneggerdonderdag 15 februari 2007 @ 21:03
    quote:
    Op donderdag 15 februari 2007 20:39 schreef Chandler het volgende:

    [..]

    Toch zou ik $_GET['id'] ff met is_numeric checken, in case of
    Die discussie is nu al 500 keer gevoerd en het algemene standpunt daarin is ALTIJD USER INPUT CONTROLEREN en dat standpunt blijf ik niet herhalen.

    Uiteraard ga je met is_numeric controleren, hoewel de grotste angel er met mysql_real_escape_STRING AL WEL UIT IS.
    CraZaaydonderdag 15 februari 2007 @ 21:19
    quote:
    Op donderdag 15 februari 2007 21:01 schreef Tijn het volgende:
    Waarom zou je willen dat de key hetzelfde is als de value? Wat is dan nog het nut van ze beiden opslaan?
    Dat heeft inderdaad geen enkel nut
    CraZaaydonderdag 15 februari 2007 @ 21:20
    quote:
    Op donderdag 15 februari 2007 21:03 schreef Swetsenegger het volgende:

    Uiteraard ga je met is_numeric controleren, hoewel de grotste angel er met mysql_real_escape_STRING AL WEL UIT IS.
    Maar aangezien die er volgens mij geen quotes omheen zet, moet je wel heel zeker weten dat het een integer is.
    slakkiedonderdag 15 februari 2007 @ 21:45
    quote:
    Op donderdag 15 februari 2007 21:03 schreef Swetsenegger het volgende:

    Uiteraard ga je met is_numeric controleren, hoewel de grotste angel er met mysql_real_escape_STRING AL WEL UIT IS.
    Waarom zou je een integer gaan behandelen als een string?

    Als ie de is_numeric passed betekend het toch dat je deze data kan gebruiken voor je SQL query. Al dan niet met een single quote char eromheen.

    mysql_real_escape_string lijkt me voor strings alleen, niet voor een integer.
    Swetseneggerdonderdag 15 februari 2007 @ 22:17
    quote:
    Op donderdag 15 februari 2007 21:45 schreef slakkie het volgende:

    [..]

    Waarom zou je een integer gaan behandelen als een string?

    Als ie de is_numeric passed betekend het toch dat je deze data kan gebruiken voor je SQL query. Al dan niet met een single quote char eromheen.

    mysql_real_escape_string lijkt me voor strings alleen, niet voor een integer.
    mysql_real_escape_string slasht quotes en voorkomt derhalve sqlinjection. Ook integers als string behandelen is een goed idee, als je eens een keer slipt met je userinput controlle zou er wel eens een 'tje in je 'integer' kunnen staan.
    CraZaaydonderdag 15 februari 2007 @ 23:11
    quote:
    Op donderdag 15 februari 2007 22:17 schreef Swetsenegger het volgende:

    [..]

    mysql_real_escape_string slasht quotes en voorkomt derhalve sqlinjection. Ook integers als string behandelen is een goed idee, als je eens een keer slipt met je userinput controlle zou er wel eens een 'tje in je 'integer' kunnen staan.
    Nee, dat kan er dus niet in staan als is_numeric() true is
    Lightdonderdag 15 februari 2007 @ 23:28
    quote:
    Op donderdag 15 februari 2007 22:17 schreef Swetsenegger het volgende:

    [..]

    mysql_real_escape_string slasht quotes en voorkomt derhalve sqlinjection. Ook integers als string behandelen is een goed idee, als je eens een keer slipt met je userinput controlle zou er wel eens een 'tje in je 'integer' kunnen staan.
    Op zich is het ook een nadeel van mysql dat strings in een numeriek veld kunnen worden geplaatst.
    Xcaliburdonderdag 15 februari 2007 @ 23:29
    quote:
    Op dinsdag 13 februari 2007 08:50 schreef Xcalibur het volgende:
    voor alle regex mensen hier: weet iemand vanaf welke Linux / PHP versie de regex ook special characters kan matchen (ë / à / etc.). Ik had een Windows server met PHP 4.3.11 waar het werkte, maar nu ben ik over naar een Linux server met PHP 4.3.11, en daar werkt het niet

    Het gaat dus om regexen als: P{M} enzo

    Edit: ik krijg dus deze error: "Warning: preg_match(): Compilation failed: PCRE does not support L, l, N, P, p, U, u, or X"
    niemand die hier nog wat zinnigs over te zeggen heeft?
    slakkiedonderdag 15 februari 2007 @ 23:31
    quote:
    Op donderdag 15 februari 2007 22:17 schreef Swetsenegger het volgende:

    mysql_real_escape_string slasht quotes en voorkomt derhalve sqlinjection. Ook integers als string behandelen is een goed idee, als je eens een keer slipt met je userinput controlle zou er wel eens een 'tje in je 'integer' kunnen staan.
    Ik volg je niet echt..

    Ik zie de gehele reden voor de mysql_real_escape_string niet. Het is een integer, geen string. En zelfs al is het een string, dan heb je die mysql_real_escape_string niet nodig. Een input van '9 moet ie er zoiezo uitfilteren en op barfen, daar hoef je niet nog eens een \'9 van te maken. Dit is immers geen int.

    Ik zat ff te spelen met verschillende manier om te checken of iets een int is.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <?php
    $array 
    = array (
      
    9,
      
    '9',
      
    "9",
      
    "9.9",
      
    "9,9",
      
    "hello9",
      
    "hello world",
      
    "-9.0",
      
    "+99.0",
      
    "-9",
      
    "+9",
      
    "'+9'",
      
    "9.000001",
    );


    foreach (
    $array as $id) {

      echo 
    "$id\n";

      if (
    is_numeric($id) && (!is_float($id) && !is_string($id))) {
        echo 
    "is_nummeric and not float and not string\n";
      }

      if (
    ctype_digit($id)) {
        echo 
    "Is ctype_digit\n";
      }

      
    # -9.000 -9.0 -9 en zelfde voor + maar mag ook zonder ;)
      
    if (preg_match('/^[-+]?\s*d+([.,]0+)?\s*$/'$id)) {
        echo 
    "Is int - regexp\n";
      }
      echo 
    "\n";
    ?>


    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
    9
    is_nummeric and not float and not string
    Is int - regexp

    9
    Is ctype_digit
    Is int - regexp

    9
    Is ctype_digit
    Is int - regexp

    9.9

    9,9

    hello9

    hello world

    -9.0
    Is int - regexp

    +99.0
    Is int - regexp

    -9
    Is int - regexp

    +9
    Is int - regexp

    '+9'

    9.000001


    Zoals je kan zien, heb ik die hele mysql_real_escape_string niet nodig. Die is_numeric is mij te los qua wat ie als integer zit, ik zou hem iig daarvoor nooit gebruiken. Ik zou dus altijd met een regexp checken of het een integer is.

    Wellicht dat intval() ook nog gebruikt kan worden, ik heb ermee getest, maar die vind 9.9 ook een int, en daar ben ik het niet mee eens, dat is een double/float, en valt dus buiten de boot.
    Tuvai.netvrijdag 16 februari 2007 @ 06:08
    Als ik met SQL queries werk, gebruik ik gewoon intval() voor integers en mysql_real_escape_string() voor strings.
    Chandlervrijdag 16 februari 2007 @ 09:07
    quote:
    Op donderdag 15 februari 2007 21:01 schreef Tijn het volgende:
    Waarom zou je willen dat de key hetzelfde is als de value? Wat is dan nog het nut van ze beiden opslaan?
    Zie quote CraZaay
    quote:
    Op donderdag 15 februari 2007 21:19 schreef CraZaay het volgende:
    Dat heeft inderdaad geen enkel nut
    Geheel fout!

    Mijn eigen geschreven parser werkt met values, in een database heb ik een veld waarin ik de naam van het font bewaar. dus niet een ID maar de NAAM!. Mijn parser kan on the fly een option select list maken van een array en tevens de 'geselecteerde' optie selectere aan de hand van de 'ID!' maar in dit geval is het dus geen id maar een 'variabel!'

    dus enigzinds onzinnig om een antwoord te geven op iets waarvan jullie nog niet weten waarvoor het gebruikt is / gaat worden
    wobbelvrijdag 16 februari 2007 @ 17:08
    Is er een bug in PHP 4.3.9 ofzo? (jaja, oude versie ik weet maar ze willen nietu pdaten in de productie omgeving )

    Als ik dit script heb:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
    session_start 
    ( );

    $_SESSION['SettleLand'] = 1;

    echo 
    $_SESSION['SettleLand']; // 1 in dit geval

    if ( $_SESSION['SettleLand'] == )
    {

        
    $SettleLand "Nederland"

    }
    elseif
    {

        
    $SettleLand "Belgiieeuuuuh";

    }

    echo 
    $SettleLand// Nederland in dit geval
    echo $_SESSION['SettleLand']; // is ook veranderd in Nederland en niet meer 1 !!!
    ?>


    Als ik $SettleLand zou renamen naar $HeleAndereVariable dan is 't probleem opgelost, maar in PHP 5.2.0 bestaat dit probleem niet namelijk....en in de changelogs kan ik (zo gauw) niks vinden.
    splendorvrijdag 16 februari 2007 @ 17:16
    Controleer je php.ini eens of register_globals aan staat, die moet uitstaan en in php5 kun je die geloof ik niet eens meer aanzetten, dus dat zou het verklaren.

    register_globals zorgt ervoor dat je een global (session is dit geval) kunt gebruiken alsof het een normaal variable is, dus hij maakt van $_SESSION['SettleLand'] autoatisch al $SettleLand, en die is inderdaad "Nederland" geworden in jou script. Overigens raar dat $_SESSION['SettleLand'] ook nederland wordt maar vooruit, zal de andere kant ook wel zo op werken.
    wobbelvrijdag 16 februari 2007 @ 17:17
    quote:
    Op vrijdag 16 februari 2007 17:16 schreef splendor het volgende:
    Controleer je php.ini eens of register_globals aan staat, die moet uitstaan en in php5 kun je die geloof ik niet eens meer aanzetten, dus dat zou het verklaren.

    register_globals zorgt ervoor dat je een global (session is dit geval) kunt gebruiken alsof het een normaal variable is, dus hij maakt van $_SESSION['SettleLand'] autoatisch al $SettleLand, en die is inderdaad "Nederland" geworden in jou script. Overigens raar dat $_SESSION['SettleLand'] ook nederland wordt maar vooruit, zal de andere kant ook wel zo op werken.
    Verbaasde mij ook, want dit vond ik echt wel heel strange

    register_globals = On

    [ Bericht 3% gewijzigd door wobbel op 16-02-2007 17:27:11 (poep in m\'n hoofd) ]
    Xcaliburvrijdag 16 februari 2007 @ 18:32
    register_globals staat aan in een productieomgeving?
    da's wel heel slecht...
    Swetseneggervrijdag 16 februari 2007 @ 18:52
    quote:
    Op donderdag 15 februari 2007 23:31 schreef slakkie het volgende:

    [..]

    Ik volg je niet echt..

    Ik zie de gehele reden voor de mysql_real_escape_string niet. Het is een integer, geen string. En zelfs al is het een string, dan heb je die mysql_real_escape_string niet nodig. Een input van '9 moet ie er zoiezo uitfilteren en op barfen, daar hoef je niet nog eens een \'9 van te maken. Dit is immers geen int.

    Ik zat ff te spelen met verschillende manier om te checken of iets een int is.
    [ code verwijderd ]


    [ code verwijderd ]

    Zoals je kan zien, heb ik die hele mysql_real_escape_string niet nodig. Die is_numeric is mij te los qua wat ie als integer zit, ik zou hem iig daarvoor nooit gebruiken. Ik zou dus altijd met een regexp checken of het een integer is.

    Wellicht dat intval() ook nog gebruikt kan worden, ik heb ermee getest, maar die vind 9.9 ook een int, en daar ben ik het niet mee eens, dat is een double/float, en valt dus buiten de boot.
    Je gaat er maar vanuit dat je daadwerkelijk de userinput controleert. Zowel mysql als php zijn zo inconsistent als de tyfus met strings en integers, dus is 1 fuck-up voldoende om sql injection toe te staan.

    Ik begrijp jouw weerstand niet tegen een extra safety maatregel als mysql_real_escape_string. Zeker niet in toepassingen zoals de meeste hier maken waar performance geen groot issue is. Want eigenlijk is dat de enige reden die ik kan bedenken voor je aversie tegen een failback systeem

    Naast natuurlijk het feit dat je simpelweg userinput moet controleren.
    Swetseneggervrijdag 16 februari 2007 @ 18:53
    quote:
    Op donderdag 15 februari 2007 23:11 schreef CraZaay het volgende:

    [..]

    Nee, dat kan er dus niet in staan als is_numeric() true is
    quote:
    Op donderdag 15 februari 2007 22:17 schreef Swetsenegger het volgende:
    als je eens een keer slipt met je userinput controlle zou er wel eens een 'tje in je 'integer' kunnen staan.
    splendorvrijdag 16 februari 2007 @ 19:10
    Is het misschien iets om voor iedereen hier een functie te schrijven die veilig met $_GET's omgaat?

    Ik wil wel een begin geven door mijn voorlopige functie hier neer te zetten, kan iemand anders hem uitbreiden en er over discussiëren tot we een goeie hebben. :)

    1
    2
    3
    4
    function filterGET($getValue) {
       $getValue = trim(htmlspecialchars($getValue));
       return $getValue;
    }


    Misschien een idee dat je aangeeft of het een int, string of beide moet/mag zijn en dat ie daar dan ook op controleert.
    Swetseneggervrijdag 16 februari 2007 @ 20:08
    quote:
    Op vrijdag 16 februari 2007 19:10 schreef splendor het volgende:
    Is het misschien iets om voor iedereen hier een functie te schrijven die veilig met $_GET's omgaat?

    Ik wil wel een begin geven door mijn voorlopige functie hier neer te zetten, kan iemand anders hem uitbreiden en er over discussiëren tot we een goeie hebben.
    [ code verwijderd ]

    Misschien een idee dat je aangeeft of het een int, string of beide moet/mag zijn en dat ie daar dan ook op controleert.
    [php/mysql] SQL Injection, Maqic Quotes genoeg?
    http://www.phpfreakz.nl/artikelen.php?aid=106

    [ Bericht 8% gewijzigd door Swetsenegger op 16-02-2007 20:13:15 ]
    G.Fawkesvrijdag 16 februari 2007 @ 20:12
    Ik heb vandaag jinzora installeerd op mijn ubuntu server en hij doet het redelijk. twee foutmeldingen blijven verschijnen:

    1
    2
    3
    4
    5
    Warning: fopen(/var/www/mp3/temp/cache/ac00233293befcafae03b4e82ac8f134.html) [function.fopen]: failed to open stream: Permission denied in /var/www/mp3/frontend/display.php on line 138

    Warning: fwrite(): supplied argument is not a valid stream resource in /var/www/mp3/frontend/display.php on line 139

    Warning: fclose(): supplied argument is not a valid stream resource in /var/www/mp3/frontend/display.php on line 140


    en

    1
    2
    3
    4
    5
    Warning: fopen(/var/www/mp3/temp/cache/e6420d249144468d93a38591f933734d.html) [function.fopen]: failed to open stream: Permission denied in /var/www/mp3/frontend/display.php on line 138

    Warning: fwrite(): supplied argument is not a valid stream resource in /var/www/mp3/frontend/display.php on line 139

    Warning: fclose(): supplied argument is not a valid stream resource in /var/www/mp3/frontend/display.php on line 140


    Is er een bepaalde app die ik nog zou moeten installeren of dergelijke want hij zegt wel permission denied, maar chmod staat iig goed...
    Chandlervrijdag 16 februari 2007 @ 20:49
    -- edit: werkte wel, tiep fout --
    slakkievrijdag 16 februari 2007 @ 22:38
    quote:
    Op vrijdag 16 februari 2007 18:52 schreef Swetsenegger het volgende:

    Je gaat er maar vanuit dat je daadwerkelijk de userinput controleert. Zowel mysql als php zijn zo inconsistent als de tyfus met strings en integers, dus is 1 fuck-up voldoende om sql injection toe te staan.
    Ik neem niet aan dat de data al gevalideerd is. En in mijn check weet ik dat de data een integer is (in de regexp accepteerd ie ook doubles en floaters). Maar ik weet dat de data correct is en daarna alles met mijn data doen. Het is gechecked, alles wat ik daarna doe is op mijn conto en heeft dan niks meer te maken met users die SQL injection willen doen.

    GUI
    Check and sanatize data
    Do stuff with data and many more.

    Je hoeft in dat geval niet op meerdere plekken je data te valideren, dat is immers al gedaan. Je onderliggende klasses/functies hoeven dan alleen te checken of de input parameters goed zijn. Dwz, ik verwacht een string, en als ik dit niet krijg, error.
    quote:
    Ik begrijp jouw weerstand niet tegen een extra safety maatregel als mysql_real_escape_string. Zeker niet in toepassingen zoals de meeste hier maken waar performance geen groot issue is. Want eigenlijk is dat de enige reden die ik kan bedenken voor je aversie tegen een failback systeem
    Nee, ik begrijp je redenatie achter de safety maatregel. Ik snap alleen niet waarom je dit met een integer doet. Het is namelijk geen string. Dat is mijn enige commentaar.
    Swetseneggervrijdag 16 februari 2007 @ 22:41
    quote:
    Op vrijdag 16 februari 2007 22:38 schreef slakkie het volgende:

    [..]

    Ik neem niet aan dat de data al gevalideerd is. En in mijn check weet ik dat de data een integer is (in de regexp accepteerd ie ook doubles en floaters). Maar ik weet dat de data correct is en daarna alles met mijn data doen. Het is gechecked, alles wat ik daarna doe is op mijn conto en heeft dan niks meer te maken met users die SQL injection willen doen.
    Totdat er een keer niet gechecked is
    quote:
    Nee, ik begrijp je redenatie achter de safety maatregel. Ik snap alleen niet waarom je dit met een integer doet. Het is namelijk geen string. Dat is mijn enige commentaar.
    Tja, volgens php is $a="1" ook een integer, of probeert het in ieder geval als integer te parsen.
    slakkievrijdag 16 februari 2007 @ 22:58
    quote:
    Op vrijdag 16 februari 2007 22:41 schreef Swetsenegger het volgende:
    Ja, als het niet gechecked wordt is er toch ergens een grove fout gemaakt - die er uitgehaald had moeten worden in de unit test of end-to-end test.

    $a = "1"; $a = intval($a); zou dit volgens mij moeten oplossen, daar heb je geen extra functie voor nodig.
    jij hebt een andere mening hierover dan ik. Laten we het daarbij houden. Heb zo'n idee dat we niet dichter bijelkaar gaan komen.
    Swetseneggervrijdag 16 februari 2007 @ 23:04
    quote:
    Op vrijdag 16 februari 2007 22:58 schreef slakkie het volgende:

    [..]

    Ja, als het niet gechecked wordt is er toch ergens een grove fout gemaakt - die er uitgehaald had moeten worden in de unit test of end-to-end test.

    $a = "1"; $a = intval($a); zou dit volgens mij moeten oplossen, daar heb je geen extra functie voor nodig.
    jij hebt een andere mening hierover dan ik. Laten we het daarbij houden. Heb zo'n idee dat we niet dichter bijelkaar gaan komen.
    We zitten al op 1 lijn. Je moet user input controleren. Maar het wordt wel eens vergeten he, zeker in work in progress. Dus wat is er erg om in elke query een mysql_real_escape_string op te nemen om slips op te vangen? Dat is alles wat ik zeg.

    Je blijft contine maar zeggen dat het niet nodig is als je userinput controleert. Maar dat riep ik al in mijn eerste post waar ik mysql_real_escape_string voorstelde, dus is de hele discussie blijkbaar nutteloos.
    Lightvrijdag 16 februari 2007 @ 23:07
    quote:
    Op vrijdag 16 februari 2007 22:41 schreef Swetsenegger het volgende:

    Tja, volgens php is $a="1" ook een integer, of probeert het in ieder geval als integer te parsen.
    Ja, php is loosely typed. Dus na $a = "1"; $b = 2 + $a; is $b == 3. En na $a = "1"; $b = 2 . $a; is $b == "21";
    JeRavrijdag 16 februari 2007 @ 23:15
    Voor het bovenstaande verhaal is een vrij simpele oplossing;
    + Zorg ervoor dat dat je variabelen van het juiste type zijn, eventueel door ze te casten.
    + Prepared statements.
    + Gooi je database vol met constraints.
    + Vang verkeerde user input op met een nette waarschuwing.

    Knappe jongen als je het dan nog weet te verklooien
    slakkievrijdag 16 februari 2007 @ 23:27
    quote:
    Op vrijdag 16 februari 2007 23:15 schreef JeRa het volgende:
    Hier zijn we het allemaal mee eens denk ik
    Tijnvrijdag 16 februari 2007 @ 23:28
    quote:
    Op vrijdag 16 februari 2007 23:15 schreef JeRa het volgende:

    + Vang verkeerde user input op met een nette waarschuwing.
    Ik ben persoonlijk meer fan van een doodsbedreiging en een flinke scheldpartij
    Swetseneggervrijdag 16 februari 2007 @ 23:30
    quote:
    Op vrijdag 16 februari 2007 23:28 schreef Tijn het volgende:

    [..]

    Ik ben persoonlijk meer fan van een doodsbedreiging en een flinke scheldpartij
    "Denk je GODVERDOMME dat ik een mongool ben ofzo met je kut injection!!!!"
    Tuvai.netzaterdag 17 februari 2007 @ 00:21
    Zo had ik vroegâh een IP ban functie gemaakt op m'n site. Zodra je IP gebanned was kreeg je bij een poging m'n site te bekijken een paar popups die zichzelf weer gingen openen, en kreeg je de "You are an idiot" en "Hey everybody, I'm looking at gay porno!" Flash klassiekertjes voor je kiezen.
    Chandlerzaterdag 17 februari 2007 @ 08:23
    quote:
    Op vrijdag 16 februari 2007 23:30 schreef Swetsenegger het volgende:

    [..]

    "Denk je GODVERDOMME dat ik een mongool ben ofzo met je kut injection!!!!"
    en dan is het gewoon een tiepfoutje zal die gebruiker raar op kijken
    wondererzaterdag 17 februari 2007 @ 18:30
    Is er een makkelijker manier om te controleren of een bepaald record al bestaat dan met een SELECT en daarna een if(mysql_num_rows($result)!=0)(UPDATE) else (INSERT)?
    JeRazaterdag 17 februari 2007 @ 18:48
    quote:
    Op zaterdag 17 februari 2007 18:30 schreef wonderer het volgende:
    Is er een makkelijker manier om te controleren of een bepaald record al bestaat dan met een SELECT en daarna een if(mysql_num_rows($result)!=0)(UPDATE) else (INSERT)?
    INSERT ... ON DUPLICATE KEY UPDATE met een primary key?
    Lightzaterdag 17 februari 2007 @ 18:50
    quote:
    Op zaterdag 17 februari 2007 18:30 schreef wonderer het volgende:
    Is er een makkelijker manier om te controleren of een bepaald record al bestaat dan met een SELECT en daarna een if(mysql_num_rows($result)!=0)(UPDATE) else (INSERT)?
    Na een Update of een Insert kun je met mysql_affected_rows() opvragen hoeveel rijen er zijn aangepast. Als dat 0 is dan kun je met de andere functie in de herkansing
    Lightzaterdag 17 februari 2007 @ 18:51
    quote:
    Op zaterdag 17 februari 2007 18:48 schreef JeRa het volgende:

    [..]

    INSERT ... ON DUPLICATE KEY UPDATE met een primary key?
    Die is nog beter Maar pas beschikbaar vanaf MySQL 4.1.

    [ Bericht 5% gewijzigd door Light op 17-02-2007 18:53:59 (Nieuwe functie.) ]
    wondererzaterdag 17 februari 2007 @ 18:57
    quote:
    Op zaterdag 17 februari 2007 18:51 schreef Light het volgende:

    [..]

    Die is nog beter Maar pas beschikbaar vanaf MySQL 4.1.
    Mijn server draait 4.1.12 dus dat moet kunnen. Kun je in een tabel meer keys hebben? Ik heb nu de kolom "ID" als key maar ik wil zoeken op een ander veld.
    JeRazaterdag 17 februari 2007 @ 18:59
    quote:
    Op zaterdag 17 februari 2007 18:57 schreef wonderer het volgende:

    [..]

    Mijn server draait 4.1.12 dus dat moet kunnen. Kun je in een tabel meer keys hebben? Ik heb nu de kolom "ID" als key maar ik wil zoeken op een ander veld.
    Dat kan, de ON DUPLICATE KEY clausule is geldig wanneer er een PRIMARY of UNIQUE key overtreden wordt, dus bij een nieuwe PK maar een al bestaande UNIQUE key gaat dat gewoon werken
    wondererzaterdag 17 februari 2007 @ 19:06
    Oh, bah, ik bedenk me net dat het een veel op veel relatie is... (karakters in verhalen. Een karakter kan in meerdere verhalen zitten en een verhaal kan meerdere karakters hebben). Dus UNIQUE gaat niet werken. Het moet de combinatie van karakter en verhaal zijn...

    Hm, nou ja, die on duplicate kan ik nog wel voor andere dingen gebruiken. Dus helemaal nutteloos was het niet
    JeRazaterdag 17 februari 2007 @ 19:20
    quote:
    Op zaterdag 17 februari 2007 19:06 schreef wonderer het volgende:
    Oh, bah, ik bedenk me net dat het een veel op veel relatie is... (karakters in verhalen. Een karakter kan in meerdere verhalen zitten en een verhaal kan meerdere karakters hebben). Dus UNIQUE gaat niet werken. Het moet de combinatie van karakter en verhaal zijn...

    Hm, nou ja, die on duplicate kan ik nog wel voor andere dingen gebruiken. Dus helemaal nutteloos was het niet
    Je weet dat je een UNIQUE constraint ook op meerdere velden tegelijk kunt plaatsen? Dus, in jouw geval, een combinatie van karakter en verhaal?
    Lightzaterdag 17 februari 2007 @ 19:21
    quote:
    Op zaterdag 17 februari 2007 19:06 schreef wonderer het volgende:
    Oh, bah, ik bedenk me net dat het een veel op veel relatie is... (karakters in verhalen. Een karakter kan in meerdere verhalen zitten en een verhaal kan meerdere karakters hebben). Dus UNIQUE gaat niet werken. Het moet de combinatie van karakter en verhaal zijn...

    Hm, nou ja, die on duplicate kan ik nog wel voor andere dingen gebruiken. Dus helemaal nutteloos was het niet
    Een key kan best op meer dan 1 veld slaan.
    wondererzaterdag 17 februari 2007 @ 19:31
    quote:
    Op zaterdag 17 februari 2007 19:20 schreef JeRa het volgende:

    [..]

    Je weet dat je een UNIQUE constraint ook op meerdere velden tegelijk kunt plaatsen? Dus, in jouw geval, een combinatie van karakter en verhaal?
    Nee? Leg uit

    Ik heb het nou trouwens veranderd naar een cvs-stukje in een veld dat ik dan bij het ophalen met explode kan doen en dan is het ook klaar. Maar vertel vooral over dat unique gedoe want het komt regelmatig terug.
    JeRazaterdag 17 februari 2007 @ 19:44
    quote:
    Op zaterdag 17 februari 2007 19:31 schreef wonderer het volgende:

    [..]

    Nee? Leg uit

    Ik heb het nou trouwens veranderd naar een cvs-stukje in een veld dat ik dan bij het ophalen met explode kan doen en dan is het ook klaar. Maar vertel vooral over dat unique gedoe want het komt regelmatig terug.
    Je kunt een UNIQUE constraint leggen op één veld (UNIQUE(a)) of op meerdere velden (UNIQUE(a, b)). In dat geval mogen er geen twee records voorkomen waarbij a én b hetzelfde zijn dus dan zijn meerdere records met eenzelfde waarde voor veld a mogelijk, maar dan moet b wel verschillen.
    wondererzaterdag 17 februari 2007 @ 19:55
    Ooh, okee, dat doe je in de query en niet in de tabel zelf. Thanks.
    JeRazaterdag 17 februari 2007 @ 19:59
    quote:
    Op zaterdag 17 februari 2007 19:55 schreef wonderer het volgende:
    Ooh, okee, dat doe je in de query en niet in de tabel zelf. Thanks.
    Als je het over die unique constraints hebt: die doe je wel in de tabel zelf
    SuperRembozaterdag 17 februari 2007 @ 22:36
    quote:
    Op zaterdag 17 februari 2007 18:48 schreef JeRa het volgende:

    [..]

    INSERT ... ON DUPLICATE KEY UPDATE met een primary key?
    Dat lijkt heel erg op REPLACE. Heeft dat hetzelfde effect?
    Lightzaterdag 17 februari 2007 @ 22:44
    quote:
    Op zaterdag 17 februari 2007 22:36 schreef SuperRembo het volgende:

    [..]

    Dat lijkt heel erg op REPLACE. Heeft dat hetzelfde effect?
    Replace is eigenlijk een onding. Sowieso doet replace geen update. Als een waarde al bestaat dan wordt'ie doodleuk uit je database gegooid en er vervolgens opnieuw ingezet.
    Likkende_Lassiezondag 18 februari 2007 @ 13:55
    hoe kan je in 1 keer met de functie rename alle bestanden die bijvoorbeeld op *.txt eindigen wijzigen?
    Of bestanden die beginnen met een bepaalde tekst... heb '*' al geprobeerd, dat pakt i niet.
    Geqxonzondag 18 februari 2007 @ 15:42
    Leuke opgave, ben even aan het knutselen geweest :)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    $thisdir
    = dir(getcwd());                                            
    $imagepatern = '.txt$';                                                    

    while((
    $file = $thisdir->read()) !== false) {                        
        if (
    eregi($imagepatern, $file)) {                                
        
        
        
    // Plaats hier de rename functie, met $file pak je het bestand
        
        
    }
    }
    ?>
    Siegfriedmaandag 19 februari 2007 @ 00:56
    Kan ik htmlentities() ook weer omkeren?

    Edit: gevonden

    html_entity_decode()
    Siegfriedmaandag 19 februari 2007 @ 01:38
    WTF..

    Ik post een formulier naar een andere pagina.
    Als ik echter niets invul, dan zou ie dit moeten doen:
    1
    2
    3
    4
    5
    6
    <?php
    if ($post == "")
    {
        
    $post = "leeg bericht..";
    }
    ?>

    Echter, hij vervangt hierbij de waarde $post dus niet, en het resultaat blijft leeg.


    In dit geval:
    1
    2
    3
    4
    5
    6
    <?php
    if ($post == "bla")
    {
        
    $post = "je typte bla..";
    }
    ?>

    Werkt het wel, als ik bla invoer..

    Hoe kan dit nou?
    Geqxonmaandag 19 februari 2007 @ 01:41
    Probeer eens
    1
    2
    3
    4
    5
    <?php
    if (empty($post)){
    ...
    }
    ?>
    Siegfriedmaandag 19 februari 2007 @ 01:44
    Hmm ook niet.. Maar ik heb het nu wel op een andere manier werkend gekregen.
    Of naja.. Geen andere manier, maar door de check eerder in het script uit te laten voeren..

    Toch bedankt!
    wonderermaandag 19 februari 2007 @ 02:04
    -lamaar-

    [ Bericht 96% gewijzigd door wonderer op 19-02-2007 02:27:43 ]
    wobbelmaandag 19 februari 2007 @ 10:46
    Ik had het al een keer gevraagd, maar kwam er niet echt uit

    Ik heb meerdere producten in een tabel ( in dit geval 3 stuks ) maar nu wil ik dat je de volgorde kan aanpassen. Dat ik bijv. op kolom "Rank" kan sorteren op ASC/DESC bijv.

    Als ik bij de GH2138 op het pijltje omhoog doe dat de GH2138 op nr 2 komt en de GH2122 1tje naar beneden gaat, maar hoe laat ik dat nou mooi werken met PHP en MySQL?

    Siegfriedmaandag 19 februari 2007 @ 11:05
    Ik vermoed dat je een rang veld moet toevoegen in je DB.

    GH2108 = 1
    HG2122 = 2
    GH2138 = 3

    Als je op dat pijltje klikt moet je dat veld updaten, en van 3 -> 2 maken, en van 2 -> 3 maken.
    wobbelmaandag 19 februari 2007 @ 11:11
    quote:
    Op maandag 19 februari 2007 11:05 schreef Siegfried het volgende:
    Ik vermoed dat je een rang veld moet toevoegen in je DB.

    GH2108 = 1
    HG2122 = 2
    GH2138 = 3

    Als je op dat pijltje klikt moet je dat veld updaten, en van 3 -> 2 maken, en van 2 -> 3 maken.
    Krijg ik dan geen problemen als ik bijv. enkele producten verwijder en dan later wil updaten mbv rangs? Dan zou je in sommige gevallen wel + 10 moeten doen....of als ik een product verwijder alle BOVENLIGGENDE (dus hoger dan de rank van het verwijderde product) - 1


    "Als je op dat pijltje klikt moet je dat veld updaten, en van 3 -> 2 maken, en van 2 -> 3 maken. "

    Jah heel leuk, ik kan bij 1 veld wel 2 + 1 = 3 doen, maar hoe moet ik dan die 3 - 1 doen? Gewoon 2 + 1 = 3, dan zoeken waar RANG 3 is en daar - 1?

    En als ik een product toevoeg, moet ik de hoogste rang pakken en daar + 1 he?
    Geqxonmaandag 19 februari 2007 @ 11:24
    Twee producten kunnen toch ook dezelfde rang hebben? Dan sorteer je simpelweg verder op naam
    Likkende_Lassiemaandag 19 februari 2007 @ 11:32
    quote:
    Op zondag 18 februari 2007 15:42 schreef Geqxon het volgende:
    Leuke opgave, ben even aan het knutselen geweest
    [ code verwijderd ]
    Thanks! (vanwaar die '$' in de string imagepatern? )
    Wat als ik nou alles wil renamen / zien wat begint met iets?

    Edit, nevermind, logisch, gewoon dat in imagepatern zetten...deed ik net ook maar had spelfoutje gemaakt, vandaar
    Siegfriedmaandag 19 februari 2007 @ 11:34
    quote:
    Op maandag 19 februari 2007 11:11 schreef wobbel het volgende:

    Jah heel leuk, ik kan bij 1 veld wel 2 + 1 = 3 doen, maar hoe moet ik dan die 3 - 1 doen? Gewoon 2 + 1 = 3, dan zoeken waar RANG 3 is en daar - 1?

    En als ik een product toevoeg, moet ik de hoogste rang pakken en daar + 1 he?
    Uh, nee.. Gewoon:
    UPDATE `tabel` SET `rang` = '3' WHERE `id` = 'GH2122 ' LIMIT 1
    UPDATE `tabel` SET `rang` = '2' WHERE `id` = 'GH2138' LIMIT 1

    Lijkt mij
    JeRamaandag 19 februari 2007 @ 11:35
    quote:
    Op maandag 19 februari 2007 10:46 schreef wobbel het volgende:
    Ik had het al een keer gevraagd, maar kwam er niet echt uit

    Ik heb meerdere producten in een tabel ( in dit geval 3 stuks ) maar nu wil ik dat je de volgorde kan aanpassen. Dat ik bijv. op kolom "Rank" kan sorteren op ASC/DESC bijv.

    Als ik bij de GH2138 op het pijltje omhoog doe dat de GH2138 op nr 2 komt en de GH2122 1tje naar beneden gaat, maar hoe laat ik dat nou mooi werken met PHP en MySQL?

    [afbeelding]
    Hou zoals eerder gezegd een rang of positie bij:
    PK=45, pos=1
    PK=63, pos=2
    PK=19, pos=3

    Stel, je wilt PK=45 naar beneden schuiven. Dan doe je dit als volgt:
    1) Haal de positie van PK=45 op (pos1 = 1)
    2) Haal de PK van pos2 = pos1 + 1 op (PK = 63)
    3) Zet de positie van PK=45 op (pos1 + 1) (pos1 = 2)
    4) Zet de positie van PK=63 op pos1 (pos2 = 1)

    Kortom, je hebt primary of unique keys nodig . Overigens, een slimme truuk: als je een item een plek naar boven wilt opschuiven, dan is dit hetzelfde als het item erboven naar beneden te brengen.

    Verder wil je er misschien voor zorgen dat je deze twee stappen hebt:
    0) LOCK TABLES ...
    ...
    5) UNLOCK TABLES

    Om te voorkomen dat er meerdere mensen tegelijk de rangen gaan aanpassen en dat 't kapot gaat
    Geqxonmaandag 19 februari 2007 @ 11:36
    quote:
    Op maandag 19 februari 2007 11:32 schreef Likkende_Lassie het volgende:

    [..]

    Thanks! (vanwaar die '$' in de string imagepatern? )
    Wat als ik nou alles wil renamen / zien wat begint met iets?
    Het dollarteken in de string is puur dat het op .txt moet eindigen. Zo uit mijn roestige hersenpan is het volgens mij zo dat als het ergens mee moet beginnen, dat het dollarteken dan aan het begin moet.
    JeRamaandag 19 februari 2007 @ 11:56
    quote:
    Op maandag 19 februari 2007 11:36 schreef Geqxon het volgende:

    [..]

    Het dollarteken in de string is puur dat het op .txt moet eindigen. Zo uit mijn roestige hersenpan is het volgens mij zo dat als het ergens mee moet beginnen, dat het dollarteken dan aan het begin moet.
    Nee, dakje ^ is op het begin van de string, $ op het eind.
    Geqxonmaandag 19 februari 2007 @ 11:58
    quote:
    Op maandag 19 februari 2007 11:56 schreef JeRa het volgende:

    [..]

    Nee, dakje ^ is op het begin van de string, $ op het eind.
    Je hebt helemaal gelijk, ik was net bezig mijn stoffige schoolboeken over regular expressions er op na te slaan.
    Xcaliburmaandag 19 februari 2007 @ 12:15
    quote:
    Op maandag 19 februari 2007 10:46 schreef wobbel het volgende:
    Ik had het al een keer gevraagd, maar kwam er niet echt uit

    Ik heb meerdere producten in een tabel ( in dit geval 3 stuks ) maar nu wil ik dat je de volgorde kan aanpassen. Dat ik bijv. op kolom "Rank" kan sorteren op ASC/DESC bijv.

    Als ik bij de GH2138 op het pijltje omhoog doe dat de GH2138 op nr 2 komt en de GH2122 1tje naar beneden gaat, maar hoe laat ik dat nou mooi werken met PHP en MySQL?

    [afbeelding]
    ik voeg altijd een veld 'ORDER' toe, waarbij ieder record een waarde krijgt met een meervoud van 10. Dus 10 / 20 / 30 / 40. Als je dan een record verplaatst doe je die ORDER + 11 (of -11), zodat hij voorbij de de volgende komt. Daarna update je in een loop *alle* records in de tabel zodat ze weer netjes een waarde met een veelvoud van 10 hebben
    veldmuismaandag 19 februari 2007 @ 12:19
    Hoi.
    Ik heb een textdocumentje waar ik wat data uit wil halen, en daar wil ik wat mee gaan doen.
    Het textdocumentje staat gewoon op de server, in dezelfde dir als m'n PHP bestand.

    Hoe heet dat wat ik wil gaan doen, ik wil gaan zoeken op php.net maar heb geen idee op wat voor commando oid ik moet zoeken .
    Tijnmaandag 19 februari 2007 @ 12:22
    Je zou bijvoorbeeld fopen() kunnen gebruiken, veldmuis.
    veldmuismaandag 19 februari 2007 @ 12:33
    quote:
    Op maandag 19 februari 2007 12:22 schreef Tijn het volgende:
    Je zou bijvoorbeeld fopen() kunnen gebruiken, veldmuis.
    Tnx, ben wat verder nu idd!
    Alleen nu komt het: in het document staat wat data
    waarde1: de inhoud van waarde 1
    etc.

    De inhoud is altijd van een variabele lengte, maar wordt wel afgesloten door een </p>
    Die </p> zou ik dus als eind kunnen pakken, en dat 'waarde1:' als beginding. Maar hoe lees ik nou de waarde die daartussen staat uit?

    fgets en fread lijken niet de oplossing als ik het zo zie op php.net?
    Tijnmaandag 19 februari 2007 @ 12:36
    Nou, je zou met fgets() wel de regel kunnen uitlezen en dan die regel door een sjieke reguliere expressie halen om je data eruit te filteren.

    Hoe dat zit met die reguliere expressie moet je maar even aan iemand anders vragen, daar ben ik niet zo handig in
    JeRamaandag 19 februari 2007 @ 12:37
    quote:
    Op maandag 19 februari 2007 12:33 schreef veldmuis het volgende:

    [..]

    fgets en fread lijken niet de oplossing als ik het zo zie op php.net?
    Jawel, met die twee functies kun je een bestand inlezen en voor de rest is het pure string manipulatie

    Het simpelst is strpos() gebruiken om de positie van substrings in strings te vinden
    Swetseneggermaandag 19 februari 2007 @ 12:48
    quote:
    Op maandag 19 februari 2007 12:36 schreef Tijn het volgende:
    Nou, je zou met fgets() wel de regel kunnen uitlezen en dan die regel door een sjieke reguliere expressie halen om je data eruit te filteren.

    Hoe dat zit met die reguliere expressie moet je maar even aan iemand anders vragen, daar ben ik niet zo handig in :@
    1
    2
    3
    4
    5
    <?php
    $patern
    ="#waarde1(.*?)</p>#i"
    preg_replace($patern,$string,$match);
    echo 
    $match[1];
    ?>


    niet getest
    wobbelmaandag 19 februari 2007 @ 12:48
    quote:
    Op maandag 19 februari 2007 11:34 schreef Siegfried het volgende:

    [..]

    Uh, nee.. Gewoon:
    UPDATE `tabel` SET `rang` = '3' WHERE `id` = 'GH2122 ' LIMIT 1
    UPDATE `tabel` SET `rang` = '2' WHERE `id` = 'GH2138' LIMIT 1

    Lijkt mij
    dat gaat dus helemaal niet werken, want als ik bij 1 product rank + 1 doe, hoe weet ik dan welk product er dan 1 af moet?

    Maargoed, het werkt nu prima
    Swetseneggermaandag 19 februari 2007 @ 12:51
    Ow kijk ook naar file en file_get_contents. Vind ik persoonlijk altijd eenvoudiger dan fread
    veldmuismaandag 19 februari 2007 @ 12:53
    Ik zou toch graag een iets hardere schop in de goeie richting willen .

    Van stringmanipulatie en reguliere expressies snap ik niets .

    Als ik nou de inhoud tussen Waarde1: en </P> zou willen uitlezen, hoe doe ik dat dan? .
    JeRamaandag 19 februari 2007 @ 12:55
    quote:
    Op maandag 19 februari 2007 12:53 schreef veldmuis het volgende:
    Ik zou toch graag een iets hardere schop in de goeie richting willen :P.

    Van stringmanipulatie en reguliere expressies snap ik niets :@.

    Als ik nou de inhoud tussen Waarde1: en </P> zou willen uitlezen, hoe doe ik dat dan? :@.
    1
    2
    3
    4
    5
    6
    <?php
    $inhoud 
    file_get_contents('bestandsnaam');
    $matches = array();
    preg_match('#^Waarde1:(.*)</P>#Ui'$inhoud$matches);
    echo 
    $matches[1];
    ?>
    veldmuismaandag 19 februari 2007 @ 13:04
    Dank allen! Ik ga verder proberen!
    Nou ben ik alleen nog nieuwsgierig wat de [1] achter $matches/$match doet?
    JeRamaandag 19 februari 2007 @ 13:06
    quote:
    Op maandag 19 februari 2007 13:04 schreef veldmuis het volgende:
    Dank allen! Ik ga verder proberen!
    Nou ben ik alleen nog nieuwsgierig wat de [1] achter $matches/$match doet?
    $matches is in eerste instantie een lege array maar wordt gevuld met strings door de functie preg_match(). Daarna is $matches[1] gelijk aan de eerste subset in de regular expression in preg_match() (als je dat niet snapt maakt het niet uit ). $matches[1] is dus de string op 'positie 1' in de array (positie 0 bevat de gematchde string).
    Tuvai.netmaandag 19 februari 2007 @ 13:07
    $matches is een array, en in het voorbeeldje hierboven word die array aangevuld door de preg_match() functie. Waardes in een array() worden aangeroepen door $array_naam[0], $array_naam[1], $array_naam[2], enz.
    Swetseneggermaandag 19 februari 2007 @ 13:08
    quote:
    Op maandag 19 februari 2007 12:55 schreef JeRa het volgende:

    [..]
    [ code verwijderd ]
    ^waarde1: betekent toch dat de string daarmee begint?
    Geqxonmaandag 19 februari 2007 @ 13:10
    quote:
    Op maandag 19 februari 2007 13:08 schreef Swetsenegger het volgende:

    [..]

    ^waarde1: betekent toch dat de string daarmee begint?
    Zou dat dan geen [0] moeten zijn?
    JeRamaandag 19 februari 2007 @ 13:12
    quote:
    Op maandag 19 februari 2007 13:08 schreef Swetsenegger het volgende:

    [..]

    ^waarde1: betekent toch dat de string daarmee begint?
    Mjah, als test. Maar als hij ook waarde2, waarde3 etc wil matchen moet er toch een andere expression komen
    Swetseneggermaandag 19 februari 2007 @ 13:14
    quote:
    Op maandag 19 februari 2007 13:12 schreef JeRa het volgende:

    [..]

    Mjah, als test. Maar als hij ook waarde2, waarde3 etc wil matchen moet er toch een andere expression komen
    Maar het betekent toch ook dat de string er zo uit moet zien: "Waarde1:....." Op het moment dat de string niet met Waarde1 begint matched hij toch niet? dus de ^ moet toch gewoon weg?
    veldmuismaandag 19 februari 2007 @ 13:15
    "Call to undefined function preg_match()"
    Betekent dat dat m'n PHP de preg_match() niet ondersteunt of dat ik gewoon iets fout doe in de code? .
    Swetseneggermaandag 19 februari 2007 @ 13:16
    quote:
    Op maandag 19 februari 2007 13:15 schreef veldmuis het volgende:
    "Call to undefined function preg_match()"
    Betekent dat dat m'n PHP de preg_match() niet ondersteunt of dat ik gewoon iets fout doe in de code? .
    1
    2
    3
    preg_match

    (PHP 3 >= 3.0.9, PHP 4, PHP 5)

    Dan zou je php versie onder 3.0.9 moeten liggen en DAT lijkt me niet.
    veldmuismaandag 19 februari 2007 @ 13:17
    PHP Version 5.0.5, maar het zou zomaar kunnen dat het een ERG beperkte PHP is.
    CraZaaymaandag 19 februari 2007 @ 13:18
    quote:
    Op maandag 19 februari 2007 13:15 schreef veldmuis het volgende:
    "Call to undefined function preg_match()"
    Betekent dat dat m'n PHP de preg_match() niet ondersteunt of dat ik gewoon iets fout doe in de code? .
    Je zou denken dat eerste, maar het lijkt me sterk dat je met PHP 3 bezig bent
    Swetseneggermaandag 19 februari 2007 @ 13:19
    quote:
    Op maandag 19 februari 2007 13:17 schreef veldmuis het volgende:
    PHP Version 5.0.5, maar het zou zomaar kunnen dat het een ERG beperkte PHP is.
    quote:
    Afhankelijkheden

    Deze functies zijn beschikbaar als onderdeel van de standaard module die altijd beschikbaar is.
    bron
    Post je code eens dan.
    Tiemiemaandag 19 februari 2007 @ 13:23
    quote:
    Op maandag 19 februari 2007 13:16 schreef Swetsenegger het volgende:

    [..]
    [ code verwijderd ]

    Dan zou je php versie onder 3.0.9 moeten liggen en DAT lijkt me niet.
    Of het is om een wazige reden zonder pcre gecompiled .

    --without-pcre-regex
    JeRamaandag 19 februari 2007 @ 13:25
    quote:
    Op maandag 19 februari 2007 13:23 schreef Tiemie het volgende:

    [..]

    Of het is om een wazige reden zonder pcre gecompiled .

    --without-pcre-regex
    Dat zou eventueel kunnen, voor de size-obsessed compileerders onder ons die denken genoeg te hebben aan de ereg_*-functies
    veldmuismaandag 19 februari 2007 @ 13:26
    quote:
    Op maandag 19 februari 2007 13:19 schreef Swetsenegger het volgende:

    [..]


    [..]

    Post je code eens dan.
    Ik heb deze gepakt:
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    #!/usr/bin/php

    $inhoud = file_get_contents('test');
    $matches = array();
    preg_match('#^Waar:(.*)</P>#Ui', $inhoud, $matches);
    echo
    $matches[1];
    ?>
    quote:
    Op maandag 19 februari 2007 13:23 schreef Tiemie het volgende:

    [..]

    Of het is om een wazige reden zonder pcre gecompiled :{ .

    --without-pcre-regex
    Ow, dan is dat het. De reden is ruimtegebrek. Gok ik.
    veldmuismaandag 19 februari 2007 @ 13:27
    quote:
    Op maandag 19 februari 2007 13:25 schreef JeRa het volgende:

    [..]

    Dat zou eventueel kunnen, voor de size-obsessed compileerders onder ons die denken genoeg te hebben aan de ereg_*-functies
    Is het daarmee te doen? .
    Swetseneggermaandag 19 februari 2007 @ 13:32
    quote:
    Op maandag 19 februari 2007 13:27 schreef veldmuis het volgende:

    [..]

    Is het daarmee te doen? .
    http://nl2.php.net/manual/nl/function.ereg.php
    Volgens mij de preg_match alleen vervangen door ereg als ik de manual even snel scan.
    veldmuismaandag 19 februari 2007 @ 13:36
    Ik heb 'm als module erin geduwt, en dat lijkt te werken! !
    wobbelmaandag 19 februari 2007 @ 13:36
    Kan ik ook een join doen in een delete?

    Dus dat ik gegevens verwijder uit 2 tabellen die een relatie met elkaar hebben dmv ID?
    Swetseneggermaandag 19 februari 2007 @ 13:36
    quote:
    Op maandag 19 februari 2007 13:36 schreef wobbel het volgende:
    Kan ik ook een join doen in een delete?

    Dus dat ik gegevens verwijder uit 2 tabellen die een relatie met elkaar hebben dmv ID?
    Ja dat kan
    Geqxonmaandag 19 februari 2007 @ 13:45
    quote:
    Op maandag 19 februari 2007 13:36 schreef Swetsenegger het volgende:

    [..]

    Ja dat kan
    MySQL en subqueries? Ik leer telkens wat nieuws hier
    JeRamaandag 19 februari 2007 @ 13:46
    quote:
    Op maandag 19 februari 2007 13:45 schreef Geqxon het volgende:

    [..]

    MySQL en subqueries? Ik leer telkens wat nieuws hier
    Subqueries worden al erg lang door MySQL ondersteund, maar met een DELETE is het gewoon een simpele JOIN
    Geqxonmaandag 19 februari 2007 @ 13:53
    quote:
    Op maandag 19 februari 2007 13:46 schreef JeRa het volgende:

    [..]

    Subqueries worden al erg lang door MySQL ondersteund, maar met een DELETE is het gewoon een simpele JOIN
    Ik heb mijzelf in 2004/2005 MySQL aangeleerd, en één van de grote punten was de slechte support voor subqueries. Maar zoals ik al zei: Ik leer hier constant
    wobbelmaandag 19 februari 2007 @ 13:58
    quote:
    Op maandag 19 februari 2007 13:36 schreef Swetsenegger het volgende:

    [..]

    Ja dat kan
    Zo dus:

    1
    2
    3
    4
    5
    DELETE
    FROM SHOP_Products
    INNER JOIN SHOP_Products_Lang
    ON ( SHOP_Products_Lang.ProductId = SHOP_Products.IdProduct ) 
    WHERE SHOP_Products.SubcategoryId = '" . $SQL_SID . "'
    Swetseneggermaandag 19 februari 2007 @ 14:01
    quote:
    Op maandag 19 februari 2007 13:58 schreef wobbel het volgende:

    [..]

    Zo dus:
    [ code verwijderd ]
    Precies. Probeer het eerst uit met SELECT FROM <rest van je query> en als dat werkt gewoon je SELECT FROM vervangen door delete
    JeRamaandag 19 februari 2007 @ 14:02
    Overigens, in sommige andere RDBMS'en wordt het bovenstaande gedaan door foreign key constraints met een ON DELETE-clausule een ON DELETE CASCADE zorgt er dan voor dat wanneer je een record verwijdert waarna andere records verwijzen, dat dan die andere records ook worden verwijderd. Erg handig als je de database-inhoud consistent wilt houden PostgreSQL is een goede open source RDBMS die zoiets doet (maar ook de grotere commerciële varianten).
    Swetseneggermaandag 19 februari 2007 @ 14:08
    quote:
    Op maandag 19 februari 2007 14:02 schreef JeRa het volgende:
    Overigens, in sommige andere RDBMS'en wordt het bovenstaande gedaan door foreign key constraints met een ON DELETE-clausule een ON DELETE CASCADE zorgt er dan voor dat wanneer je een record verwijdert waarna andere records verwijzen, dat dan die andere records ook worden verwijderd. Erg handig als je de database-inhoud consistent wilt houden PostgreSQL is een goede open source RDBMS die zoiets doet (maar ook de grotere commerciële varianten).
    Interbase (firebird) doet dat ook begreep ik
    veldmuismaandag 19 februari 2007 @ 14:08
    quote:
    Op maandag 19 februari 2007 12:55 schreef JeRa het volgende:

    [..]


    1
    2
    3
    4
    5
    6
    <?php
    $inhoud 
    file_get_contents('bestandsnaam');
    $matches = array();
    preg_match('#^Waarde1:(.*)</P>#Ui'$inhoud$matches);
    echo 
    $matches[1];
    ?>
    Werkt inderdaad...MAAR!
    Er staat nog crap voor Waarde1:, hoe zorg ik dat-ie die crap negeert? :+.
    veldmuismaandag 19 februari 2007 @ 14:09
    Oh, en er komt ook nog een waarde2 achteraan, na weer wat crap .
    Geqxonmaandag 19 februari 2007 @ 14:15
    Een verkapte UTFS post:

    http://weblogtoolscollection.com/regex/regex.php

    Staat al weer maanden tussen mijn bookmarks, een erg handig overzicht
    veldmuismaandag 19 februari 2007 @ 14:16
    Dank, ik ga lezen!
    wobbelmaandag 19 februari 2007 @ 14:20
    Betreffende query: DELETE FROM SHOP_Products INNER JOIN SHOP_Products_Lang ON ( SHOP_Products.IdProduct = SHOP_Products_Lang.ProductId ) WHERE SHOP_Products.SubcategoryId = '1'

    MySQL error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INNER JOIN SHOP_Products_Lang ON ( SHOP_Products.IdProduct = ' at line 3

    wobbelmaandag 19 februari 2007 @ 14:27
    = kan weg =
    Swetseneggermaandag 19 februari 2007 @ 14:30
    quote:
    Op maandag 19 februari 2007 14:20 schreef wobbel het volgende:
    Betreffende query: DELETE FROM SHOP_Products INNER JOIN SHOP_Products_Lang ON ( SHOP_Products.IdProduct = SHOP_Products_Lang.ProductId ) WHERE SHOP_Products.SubcategoryId = '1'

    MySQL error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INNER JOIN SHOP_Products_Lang ON ( SHOP_Products.IdProduct = ' at line 3

    Vreemd, zou gewoon moeten werken. Geen komma's quotes of andere ongein verkeerd?

    http://www.electrictoolbox.com/article/mysql/cross-table-delete/
    JeRamaandag 19 februari 2007 @ 14:43
    Er zit een verschil in aanroep. In Swetsenegger's voorbeeld wordt er DELETE tabel1.*, tabel2.* FROM ... gedaan
    Swetseneggermaandag 19 februari 2007 @ 14:47
    quote:
    Op maandag 19 februari 2007 14:43 schreef JeRa het volgende:
    Er zit een verschil in aanroep. In Swetsenegger's voorbeeld wordt er DELETE tabel1.*, tabel2.* FROM ... gedaan
    Inderdaad.
    Maar zelf delete ik ergens in een script ook met een join en heb ik volgens mij hetzelfde gedaan als Wobbel in eerste instantie....Maar kan ook een leftjoin zijn...Ik zal vanavond even kijken.
    veldmuismaandag 19 februari 2007 @ 15:54
    Ik kom er nog niet helemaal uit met die regex. Ben al wat wijzer geworden, maar nu...
    Ik heb nu
    1preg_match('/Waarde1:(.*)</', $inhoud, $matches);

    De waarde komt er nu uit, maar er komt ook een </P> mee. Hoe fix ik dat nu?

    Edit: Kut, dat was een nieuwe regel. Het begin pakt-ie goed op, het eind niet. Betekent dat ik weer aan de gang kan, weet ik waar het fout gaat .

    [ Bericht 11% gewijzigd door veldmuis op 19-02-2007 16:01:04 ]
    veldmuismaandag 19 februari 2007 @ 16:29
    Hmm, ben eruit intussen.

    Ik begrijp dat je moet escapen, maar wat is nou het verschil tussen / en #?
    Ik las overal / maar jullie gaven in jullie voorbeeld # aan, en dat werkt dus wel.
    veldmuismaandag 19 februari 2007 @ 17:26
    Okay, andere vraag.

    dmv een shell_exec haal ik met wget het bestand op waar ik de data uit wil halen, dat gaat prima, maar daardoor krijg ik allemaal bagger in de pagina. Kan ik de output die wget geeft ergens anders heen sturen zodat het niet op m'n scherm komt?
    Swetseneggermaandag 19 februari 2007 @ 17:32
    quote:
    Op maandag 19 februari 2007 16:29 schreef veldmuis het volgende:
    Hmm, ben eruit intussen.

    Ik begrijp dat je moet escapen, maar wat is nou het verschil tussen / en #?
    Ik las overal / maar jullie gaven in jullie voorbeeld # aan, en dat werkt dus wel.
    die # is alleen start patroon, mag bijna elk teken zijn
    Swetseneggermaandag 19 februari 2007 @ 17:33
    quote:
    Op maandag 19 februari 2007 17:26 schreef veldmuis het volgende:
    Okay, andere vraag.

    dmv een shell_exec haal ik met wget het bestand op waar ik de data uit wil halen, dat gaat prima, maar daardoor krijg ik allemaal bagger in de pagina. Kan ik de output die wget geeft ergens anders heen sturen zodat het niet op m'n scherm komt?
    eh... niet de zooi parsen maar bewerken?
    veldmuismaandag 19 februari 2007 @ 18:30
    Eh, geen idee? Hoe doe je dat? .
    slakkiemaandag 19 februari 2007 @ 18:51
    veldmuis: wget -q "http://forum.fok.nl"
    veldmuismaandag 19 februari 2007 @ 18:53
    Niet eens aan gedacht, natuurlijk! Thanks!
    wondererdinsdag 20 februari 2007 @ 00:00
    Als ik een lange tekst heb (7000 woorden of zo) en ik wil alleen de eerste pakweg 250 woorden laten zien, hoe kan ik dat het beste aanpakken? explode lijkt me een beetje omslachtig...
    slakkiedinsdag 20 februari 2007 @ 00:13
    Denk zoiets als dit:
    http://nl2.php.net/manual/nl/function.chunk-split.php

    Eerste comment laat precies zien wat jij wilt.
    Tuvai.netdinsdag 20 februari 2007 @ 00:15
    substr()

    Of anders in je opslag/database bijvoorbeeld een veld voor het intro stukje (1 of 2 eerste allinea's) en een veld voor de rest.