FOK!forum / Digital Corner / [PHP/(My)SQL] voor dummies - Deel 19
Lightzondag 1 januari 2006 @ 01:11

cd niet bijgeleverd

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

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

    Deze OP en instructies voor nieuw topic: http://wiki.fok.nl/index.php/OP/PHP
  • Chandlerzondag 1 januari 2006 @ 10:19
    en alvast de beste wensen voor dit jaar natuurlijk
    freisszondag 1 januari 2006 @ 10:20
    quote:
    Op zondag 1 januari 2006 10:19 schreef Chandler het volgende:
    en alvast de beste wensen voor dit jaar natuurlijk
    Chandlerzondag 1 januari 2006 @ 13:05
    eingelijk mag dat alvast wel weg!
    Swetseneggerzondag 1 januari 2006 @ 13:09
    quote:
    Op zondag 1 januari 2006 13:05 schreef Chandler het volgende:
    eingelijk mag dat alvast wel weg!
    Kut he, die quote. Anders had je sneaky kunnen editten
    Nevermindzondag 1 januari 2006 @ 16:15
    Ook namens mij
    LeeHarveyOswaldmaandag 2 januari 2006 @ 10:27
    Beste wensen iedereen

    Gelijk een vraag:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    $vraag
    = array(1 =&gt; '$vraag1', 2 =&gt; '$vraag2', 3 =&gt; '$vraag3', 4 =&gt; '$vraag4', 5 =&gt; '$vraag5', 6 =&gt; '$vraag6');
    for (
    $counter = 0; $counter &lt;= 6; $counter += 1) {

    If (
    strlen(($arr["vraag"][$counter])) &gt; 1) {
    $sql_query = "INSERT INTO Pollgegevens (PollID, PollPlek, Antwoorden, Vraagnummer)";
    $sql_query .="VALUES ('".$pollID."','".$pollPlek."','".$arr["vraag"]."', '".$counter."');";
    $result = mysql_query($sql_query) or die(mysql_error());
    }
    }
    ?>


    Wat doe ik fout? Ik heb nooit eerder echt met array's gewerkt met PHP, maar ik wil dus 6 ingevulde antwoorden controlleren, en indien meer dan 1 karakter er in, in de database stoppen..

    alvast bedankt!
    LeeHarveyOswaldmaandag 2 januari 2006 @ 12:26
    tsss jullie konden gister je roes uitslapen
    freissmaandag 2 januari 2006 @ 12:38
    Wat ik zo snel zie, ben je een spatie vergeten in je $sql_query. Nu zit de ")" vast aan de "VALUES". Je kan overigens ook $counter += 1 als $counter++ schrijven.
    Swetseneggermaandag 2 januari 2006 @ 12:49
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $vraag = array(1 => '$vraag1', 2 => '$vraag2', 3 => '$vraag3', 4 => '$vraag4', 5 => '$vraag5', 6 => '$vraag6');
    for ( $counter = 0; $counter <= 6; $counter ++) {

    If (strlen($vraag[$counter]) > 1) {
    $sql_query = "INSERT INTO Pollgegevens (PollID, PollPlek, Antwoorden, Vraagnummer)";
    $sql_query .="VALUES ('".$pollID."','".$pollPlek."','".$arr["vraag"]."', '".$counter."');";
    $result = mysql_query($sql_query) or die(mysql_error());
    }
    }
    LeeHarveyOswaldmaandag 2 januari 2006 @ 12:58
    quote:
    Op maandag 2 januari 2006 12:49 schreef Swetsenegger het volgende:

    [ code verwijderd ]
    Dit werkt deels, ik krijg nu wat in mn database. Echter, de vragen-velden blijven leeg
    DjDevmaandag 2 januari 2006 @ 13:08
    Hallo..ik heb een probleempje
    Ik wil dat als je een van m'n avatars kiest je er ook gelijk de naam er bij krijgt
    Het werkt dus ong. zo

    1
    2
        echo  '<input type="radio" name="nummer" value="2">';
        echo "<img src='icon2.png'>";


    Nu werkt het alleen nog maar met nummers
    1 echo "Je hebt nummer $iconnummer gekozen";


    Hoe kan ik ervoor zorgen dat er ipv. $iconnummer staat er een naam komt?
    LeeHarveyOswaldmaandag 2 januari 2006 @ 13:14
    je avatar kiesding werkt niet, ik koos net de chinees!

    edit: ik zie nu geen chinees in het lijstje staan, was dus denk ik bij iemand anders met een avakies ding
    Swetseneggermaandag 2 januari 2006 @ 13:15
    quote:
    Op maandag 2 januari 2006 12:58 schreef LeeHarveyOswald het volgende:

    [..]

    Dit werkt deels, ik krijg nu wat in mn database. Echter, de vragen-velden blijven leeg
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $vraag = array(1 => '$vraag1', 2 => '$vraag2', 3 => '$vraag3', 4 => '$vraag4', 5 => '$vraag5', 6 => '$vraag6');
    for ( $counter = 0; $counter <= 6; $counter ++) {

    If (strlen($vraag[$counter]) > 1) {
    $sql_query = "INSERT INTO Pollgegevens (PollID, PollPlek, Antwoorden, Vraagnummer)";
    $sql_query .="VALUES ('".$pollID."','".$pollPlek."','".$vraag[$counter]."', '".$counter."');";
    $result = mysql_query($sql_query) or die(mysql_error());
    }
    }
    DjDevmaandag 2 januari 2006 @ 13:19
    quote:
    Op maandag 2 januari 2006 13:14 schreef LeeHarveyOswald het volgende:
    je avatar kiesding werkt niet, ik koos net de chinees!

    edit: ik zie nu geen chinees in het lijstje staan, was dus denk ik bij iemand anders met een avakies ding
    Ik heb ze nu ff allemaal weg gedaan...avatar kies dinges krijgt een hele update
    Momenteel kan je alleen 4x Olsens kiezen en 2x J.Lo
    LeeHarveyOswaldmaandag 2 januari 2006 @ 13:23
    quote:
    Op maandag 2 januari 2006 13:15 schreef Swetsenegger het volgende:

    [..]
    [ code verwijderd ]
    Dit resulteerd in de volgende inhoud van mijn database:

    $vraag3
    $vraag2
    $vraag1
    $vraag4
    $vraag5
    $vraag6
    Swetseneggermaandag 2 januari 2006 @ 13:34
    quote:
    Op maandag 2 januari 2006 13:23 schreef LeeHarveyOswald het volgende:

    [..]

    Dit resulteerd in de volgende inhoud van mijn database:

    $vraag3
    $vraag2
    $vraag1
    $vraag4
    $vraag5
    $vraag6
    Ik naam dan ook aan dat die $vraag1 in je array symbolisch was, en daar gewoon de vraag stond.
    Waarom los je dat zo op eigenlijk?
    LeeHarveyOswaldmaandag 2 januari 2006 @ 13:36
    Ik heb 6 velden waarin een vraag neergezet kan worden. Ik wil een veld alleen opnemen als er iets in staat, en langer dan 1 karakter is (zodat niet per ongeluk een spatie als poll antwoord er tussen komt te staan)

    Wat uit het formulier komt, komt in $vraagX te staan..
    LeeHarveyOswaldmaandag 2 januari 2006 @ 13:40
    array dinges aangepast, nu doettie et thnx
    JeRamaandag 2 januari 2006 @ 16:56
    quote:
    Op maandag 2 januari 2006 13:08 schreef DjDev het volgende:
    Hallo..ik heb een probleempje
    Ik wil dat als je een van m'n avatars kiest je er ook gelijk de naam er bij krijgt
    Het werkt dus ong. zo
    [ code verwijderd ]

    Nu werkt het alleen nog maar met nummers
    [ code verwijderd ]

    Hoe kan ik ervoor zorgen dat er ipv. $iconnummer staat er een naam komt?
    Dat is vrij basic, maar je dient een array aan te maken die de nummers koppelt aan namen. Dus zoiets als dit:

    $namen = array('A. Aars', 'B. Beer', 'C. Claus', ...);

    Waarbij de eerste naam index 0 heeft, de volgende 1, etc. Daarna doe je dit:

    echo 'Je hebt ' . $namen[$gekozenNummer] . ' gekozen!';
    DjDevmaandag 2 januari 2006 @ 16:59
    quote:
    Op maandag 2 januari 2006 16:56 schreef JeRa het volgende:

    [..]

    Dat is vrij basic, maar je dient een array aan te maken die de nummers koppelt aan namen. Dus zoiets als dit:

    $namen = array('A. Aars', 'B. Beer', 'C. Claus', ...);

    Waarbij de eerste naam index 0 heeft, de volgende 1, etc. Daarna doe je dit:

    echo 'Je hebt ' . $namen[$gekozenNummer] . ' gekozen!';
    Ok..ik ga ff wat dingen proberen
    Bedankt
    -edit-

    Het lukt niet echt...
    Ik krijg alleen "Je hebt gekozen!"
    Ik weet niet waar ik het fout doe maar ik denk bij $namen = array('A. Aars', 'B. Beer', 'C. Claus', ...);
    Ik snap dat niet echt..Kan je dat ff uitleggen?

    [ Bericht 19% gewijzigd door DjDev op 02-01-2006 17:12:47 ]
    Swetseneggermaandag 2 januari 2006 @ 17:17
    quote:
    Op maandag 2 januari 2006 16:59 schreef DjDev het volgende:

    [..]

    Ok..ik ga ff wat dingen proberen
    Bedankt
    -edit-

    Het lukt niet echt...
    Ik krijg alleen "Je hebt gekozen!"
    Ik weet niet waar ik het fout doe maar ik denk bij $namen = array('A. Aars', 'B. Beer', 'C. Claus', ...);
    Ik snap dat niet echt..Kan je dat ff uitleggen?
    Post je code eens.
    Chandlermaandag 2 januari 2006 @ 17:22
    Tja na wat vogelen met wat code om plaats te bepalen heb ik reeds het volgende stukje code gerealiseerd!.. maar helaas werkt dit niet echt optimaal... omdat ik soms een veld wil verplaatsen van kolom 1 naar kolom 2 of naar kolom 3, whatever.

    de code

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    function moveCat($id, $pos)
    {
        $sql = "SELECT tree.pos_id,
                       tree.sort_id
                FROM   `tree`
                WHERE  `id` = '" . $id . "'";
        $query = mysql_query($sql);
        $items = mysql_num_rows($query);
        
        if ($items > 0)
        {
            $list = mysql_fetch_object($query);
            
            if ($pos == "up")
            {
                $first = $list->sort_id -1;
                $last  = $list->sort_id;
            }
            else
            {
                $first = $list->sort_id;
                $last  = $list->sort_id +1;
            }


            $catSql   = "SELECT tree.id,
                                tree.sort_id
                         FROM   tree
                         WHERE  tree.pos_id = '" . $list->pos_id . "'
                         AND    tree.sort_id IN ('" . $first . "', '" . $last . "')";
            $catQuery = mysql_query($catSql) or die($catSql . mysql_error());
            $catItems = mysql_num_rows($catQuery);
            
            $arrMove = array();
            if ($catItems > 1)
            {
                for ($x = 0; $x < $catItems; $x++)
                {
                    $catList = mysql_fetch_object($catQuery);
                    
                    $arrMove[] = array('id'  => $catList->id,
                                       'sid' => $catList->sort_id);
                }
                
                mysql_query("UPDATE tree SET sort_id = '" . $arrMove[0]['sid'] . "' WHERE id = '" . $arrMove[1]['id'] . "'");
                mysql_query("UPDATE tree SET sort_id = '" . $arrMove[1]['sid'] . "' WHERE id = '" . $arrMove[0]['id'] . "'");

                return true;
            }
            else
            {
                return false;
            }
        }
        else
        {
            return false;
        }
    }


    nu doe ik toch echt iets echt heel goed fout... maar waar het zit weet ik niet, misschien de manier van uitlezen? heeft iemand suggesties?
    DjDevmaandag 2 januari 2006 @ 17:28
    -edit-

    Lama...ik heb alles verneukt

    [ Bericht 64% gewijzigd door DjDev op 02-01-2006 19:50:31 ]
    Swetseneggermaandag 2 januari 2006 @ 17:33
    quote:
    Op maandag 2 januari 2006 17:28 schreef DjDev het volgende:

    [..]
    [ code verwijderd ]

    Je nieuwe code met die array erin
    SkaterSammaandag 2 januari 2006 @ 17:38
    1
    2
    3
    4
    5
    6
    7
    <?php
    if (date(Y) == 2006) {
    echo
    "Gelukkig Nieuwjaar iedereen!";
    } else {
    echo
    "tvp";
    }
    ?>

    Flauw hè
    Chandlermaandag 2 januari 2006 @ 17:50
    quote:
    Op maandag 2 januari 2006 17:22 schreef Chandler het volgende:
    Tja na wat vogelen met wat code om plaats te bepalen heb ik reeds het volgende stukje code gerealiseerd!.. maar helaas werkt dit niet echt optimaal... omdat ik soms een veld wil verplaatsen van kolom 1 naar kolom 2 of naar kolom 3, whatever.

    de code
    [ code verwijderd ]

    nu doe ik toch echt iets echt heel goed fout... maar waar het zit weet ik niet, misschien de manier van uitlezen? heeft iemand suggesties?
    natuurlijk is het handig om te zien waarmee ik bezig ben, en heb dus ook al een preview online, alleen de frontpage werkt en de links die er in staan etc

    http://linkbase.bruggema.nl/
    SuperRembomaandag 2 januari 2006 @ 18:40
    quote:
    Op maandag 2 januari 2006 17:38 schreef SkaterSam het volgende:

    [ code verwijderd ]

    Flauw hè
    Dat kan korter

    1<?=date(Y)-2006?tvp:'Gelukkig Nieuwjaar iedereen!';
    DjDevmaandag 2 januari 2006 @ 18:55
    quote:
    Op maandag 2 januari 2006 17:33 schreef Swetsenegger het volgende:

    [..]


    Je nieuwe code met die array erin
    Die heb ik dus niet want ik snap het niet

    -edit-

    Ik heb dus ff ingetikt zoals ik dacht dat het moest...
    JeRamaandag 2 januari 2006 @ 19:11
    quote:
    Op maandag 2 januari 2006 18:55 schreef DjDev het volgende:

    [..]

    Die heb ik dus niet want ik snap het niet

    -edit-

    Ik heb dus ff ingetikt zoals ik dacht dat het moest...
    Die $value in je code is de index van de array. Dat moet dus $nummer of $iconnummer worden

    Als je een array zo aanmaakt:
    $newArray = array('a', 'b', 'c');

    Dan zien de indices er zo uit:

    0 => 'a'
    1 => 'b'
    2 => 'c'

    En die kun je aanroepen met $newArray[0] (geeft 'a' terug), $newArray[1] (geeft 'b' terug), etc
    Swetseneggermaandag 2 januari 2006 @ 19:12
    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
    if ($_SERVER['REQUEST_METHOD']=='POST' && (!empty($_POST['nummer'])){
      if ( ! (is_numeric($nummer) and ($nummer >= 1) and ($nummer <= 40)))  {

        die("Oeps! Je hebt niks gekozen!'>");
      }

    else
    include ("icon.dat");
       $file = fopen ("icon.dat","w");
       fputs($file, "<");
       fputs($file, "? $");
       fputs($file, "iconnummer=".$_POST['nummer']." ?");
       fputs($file, ">");
         fclose ($file);
       echo "Je hebt nummer ".$_POST['nummer']." gekozen<BR> <BR>";

    $namen = array('1.Naam1', '2. Naam2', '3. Naam3',);

    echo 'Je hebt ' . $namen[$_POST['nummer']] . ' gekozen!';
    }
    else{
    ?>

    <form method="post" action="edit.php">
    <p><font face="Lucida Console" color="Black">Mary-Kate And Ashley Olsen</font></p>
    <input type="radio" name="nummer" value="1">
    <img src="icon1.png" border=1>
    <input type="radio" name="nummer" value="2">
    <img src="icon2.png" border=1>
    <input type="radio" name="nummer" value="3">
    <img src="icon3.png" border=1>
    </form>
    <?}?>
    JeRamaandag 2 januari 2006 @ 19:14
    Swetsenegger, waarom check je op REQUEST_METHOD als $_POST variabelen anders niet eens gevuld kunnen worden?
    DjDevmaandag 2 januari 2006 @ 19:23
    quote:
    Op maandag 2 januari 2006 19:12 schreef Swetsenegger het volgende:

    [ code verwijderd ]
    Ik ben je erg dankbaar
    Swetseneggermaandag 2 januari 2006 @ 19:27
    quote:
    Op maandag 2 januari 2006 19:14 schreef JeRa het volgende:
    Swetsenegger, waarom check je op REQUEST_METHOD als $_POST variabelen anders niet eens gevuld kunnen worden?
    Ow, ik trok 'm uit een script welke ik toevallig had open liggen.

    REQUEST_METHOD komt van een stel fundamentalistische phpfreakz. $_POST['submit'] checken werkt namelijk niet met elke browser en de 'enter' toets. De Submit wordt dan niet herkent. Wanneer je REQUEST_METHOD gebruikt, wordt de submit altijd herkent. Ook wanneer je via een enter submit .
    Chandlermaandag 2 januari 2006 @ 19:28
    ik gebruik ook altijd request method, weet je zekers dat je goed zit
    DjDevmaandag 2 januari 2006 @ 19:40
    quote:
    Op maandag 2 januari 2006 19:12 schreef Swetsenegger het volgende:

    [ code verwijderd ]
    Hmm...ik krijg een parse error...
    Parse error: parse error, unexpected '{' in /home/phserver.net/devrim/edit.php on line 32 (eerste regel van wat jij hebt getypt dus..)

    Ik kan de fout niet vinden...
    freissmaandag 2 januari 2006 @ 19:45
    quote:
    Op maandag 2 januari 2006 19:40 schreef DjDev het volgende:

    [..]

    Hmm...ik krijg een parse error...
    Parse error: parse error, unexpected '{' in /home/phserver.net/devrim/edit.php on line 32 (eerste regel van wat jij hebt getypt dus..)

    Ik kan de fout niet vinden...
    er mist denk ik een ")" voor de "{"
    JeRamaandag 2 januari 2006 @ 19:48
    quote:
    Op maandag 2 januari 2006 19:27 schreef Swetsenegger het volgende:

    [..]

    Ow, ik trok 'm uit een script welke ik toevallig had open liggen.

    REQUEST_METHOD komt van een stel fundamentalistische phpfreakz. $_POST['submit'] checken werkt namelijk niet met elke browser en de 'enter' toets. De Submit wordt dan niet herkent. Wanneer je REQUEST_METHOD gebruikt, wordt de submit altijd herkent. Ook wanneer je via een enter submit .
    Ah, op die fiets ik gebruik daar zelf altijd een hidden field voor met ofwel een 'true'-waarde als ik gewoon wil checken of het formulier gesubmit is, ofwel een nuttige waarde zoals een ID van het object wat je op dat moment aan het wijzigen bent.
    DjDevmaandag 2 januari 2006 @ 19:50
    quote:
    Op maandag 2 januari 2006 19:45 schreef freiss het volgende:

    [..]

    er mist denk ik een ")" voor de "{"
    Laat maar..ik heb alles verneukt
    Ik begin wel helemaal opnieuw met dat ding..
    Chandlermaandag 2 januari 2006 @ 22:39
    Tnx Jera en SuperRembo, morgen kan ik weer hard aan het werk!!!
    Desdinovadinsdag 3 januari 2006 @ 09:42
    Ik geef via een form een get door naar een pagina. In deze get staat een array lists[]. Ik wil exact dezelfde get-info doorspelen naar een volgende pagina. Is er een manier om dat makkelijk af te vangen?

    mijn url is bijv:
    bla.php?lists[1]=on&lists[3]=on&dit=dat
    en alles vanaf t vraagtekentje tot t eind zou ik graag als een string willen hebben ofzo.
    dat ik makkelijk deze link kan maken:
    bla2.php?lists[1]=on&lists[3]=on&dit=dat
    Sjoe538dinsdag 3 januari 2006 @ 14:26
    http://213.124.228.7/jim/0506/havo5/eindmodule/start.php

    is een opdracht voor school, 1 tot 5 heb ik af, met 6 was ik bezig maar kom ik verder niet uit..
    hulp met de volgende opdrachten zou ik erg op prijs stellen, we werken met htmlkit.. ik kan je de files doorsturen wat ik tot nu toe heb.. hulp via msn zou makkelijk zijn..
    Swetseneggerdinsdag 3 januari 2006 @ 15:34
    quote:
    Op dinsdag 3 januari 2006 14:26 schreef Sjoe538 het volgende:
    http://213.124.228.7/jim/0506/havo5/eindmodule/start.php

    is een opdracht voor school, 1 tot 5 heb ik af, met 6 was ik bezig maar kom ik verder niet uit..
    hulp met de volgende opdrachten zou ik erg op prijs stellen, we werken met htmlkit.. ik kan je de files doorsturen wat ik tot nu toe heb.. hulp via msn zou makkelijk zijn..
    Dit is geen helpdesk
    Post maar wat precies je probleem is, en 'men' zal je trachten te helpen. Maar er wordt wel enige zelfredzaamheid verwacht eigenlijk.
    LeeHarveyOswalddinsdag 3 januari 2006 @ 15:50
    Simpel vraagje
    1
    2
    3
    4
    5
    <?php
    $var1
    = "LeeHarvey";
    $var2 = "Oswald"
    $var3 = $var1 & $var2;
    ?>

    Heeft var3 nu de waarde LeeHarveyOswald?
    Sjoe538dinsdag 3 januari 2006 @ 16:04
    quote:
    Op dinsdag 3 januari 2006 15:50 schreef LeeHarveyOswald het volgende:
    Simpel vraagje
    [ code verwijderd ]

    Heeft var3 nu de waarde LeeHarveyOswald?
    vergeet in je 2e regel de ; niet
    Desdinovadinsdag 3 januari 2006 @ 16:10
    quote:
    Op dinsdag 3 januari 2006 15:50 schreef LeeHarveyOswald het volgende:
    Simpel vraagje
    [ code verwijderd ]

    Heeft var3 nu de waarde LeeHarveyOswald?
    waarom probeer je dat niet even?

    en gebruik anders ipv de & een .
    LeeHarveyOswalddinsdag 3 januari 2006 @ 16:12
    quote:
    Op dinsdag 3 januari 2006 16:10 schreef Desdinova het volgende:

    [..]

    waarom probeer je dat niet even?

    en gebruik anders ipv de & een .
    Omdat de waarde meerdere keren in een database gestopt wordt en ik geen zin heb om straks allemaal dingen weg te gooien

    maar met een . gaat het zowiezo werken? (in de praktijk gaat het om 2 postcode velden; 1 met de getallen, 1 met de letters, en dat moet in 1 veld in de database komen)
    Desdinovadinsdag 3 januari 2006 @ 16:23
    jep punt werkt.
    $var = $var1.$var2;
    zet ze iig direct tegen elkaar aan. het lijkt me waarschijnlijk dat eventuele spaties tussen de vars en de punt weggelaten worden. wil je er een spatie tussen wordtie zo:
    $var = $var1." ".$var2;
    the_disheaverdinsdag 3 januari 2006 @ 16:29
    quote:
    Op dinsdag 3 januari 2006 16:12 schreef LeeHarveyOswald het volgende:

    [..]

    Omdat de waarde meerdere keren in een database gestopt wordt en ik geen zin heb om straks allemaal dingen weg te gooien

    maar met een . gaat het zowiezo werken? (in de praktijk gaat het om 2 postcode velden; 1 met de getallen, 1 met de letters, en dat moet in 1 veld in de database komen)
    Is het niet makkelijker voor de gebruiker om 1 postcode veld te hebben die je met een eigen script zelf controleerd? (spatie erin (of er juist uit)) en kijkt of het bestaat uit 4 cijfers en 2 letters?

    (tevens een tvp)
    Nevermindwoensdag 4 januari 2006 @ 00:32
    Waarom wil W2k mij niet vertellen of een bestand een directory of een bestand is?

    1is_dir( $file )

    Geeft altijd false terug

    1filetype( $file )

    Geeft niks terug, alleen 'file' als er geen enkele onderliggende map in een map zit

    1( fileperms($file) & 0x4000 ) == 0x4000 )

    Zelfde verhaal als is_dir...

    Mis ik een configuratie-instelling? Ik heb dit nog niet eerder meegemaakt.

    -edit-
    oja, iets dergelijks gebruik ik als script;

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      $dh = opendir('.');
      while( gettype( $file = readdir( $dh ) ) != boolean )
      {
         if( substr( $file, 0, 1 ) != '.' )
         {
           if( filetype( $file ) == 'dir' )
           {
             echo '[dir] '. $file;
           } else {
             echo $file;
           }
         }
      }


    Dit geeft dus nergens '[dir]' terug, ook al zijn er wel subdirectories.
    Desdinovawoensdag 4 januari 2006 @ 13:47
    Probleempje met preg_replace:

    ik heb hetvolgende:
    1
    2
    3
    4
    <?php
    $pattern
    = "@<a href=\"#\".*(.*?)</a>@";
    $table = preg_replace($pattern, '\\1',$table);
    ?>


    in principe werkt dit ok. Totdat er een andere link in de table staat. Ik wil dus dat alle links in de tabel die beginnen met <a href=\"#\" verwijderd worden (hoeft niet ook de hoofdletters mee te pakken), maar dat andere links gewoon intact blijven.

    de $table ziet er bijvoorbeeld zo uit:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?php
    $table
    = "
    <table>
    <tr>
      <td>
    <a href=\"#\" onclick=\"javascript:window.open(bla)\">Titel</a>
      </td>
    </tr>
    <tr>
      <td>
    <a href=\"#\" onclick=\"javascript:window.open(bla)\">
    Content en dat soort <a href=\"dingen.html\">klik</a>.
    <a href=\"#\" onclick=\"javascript:window.open(bla)\">
    en verder met content.
    </a>
      </td>
    </tr>
    </table>
    "
    ;
    ?>


    De <a> voor de titel haaltie weg, en voor de eerste content ook. maar zodra de link in de content is geweest houdt t op. tevens klopt het dat de <a> niet af wordt gesloten voor de content-link. misschien heeft dat er wat mee te maken?

    [edit]
    ok. hij doet t dus niet pas vanaf een andere link. als ik n ander item ($table) pak houdtie al op na de titel.

    als ik de links naast elkaar leg zien ze er precies hetzelfde uit. maar hij pakt ze dus niet allemaal.

    [ Bericht 5% gewijzigd door Desdinova op 04-01-2006 14:10:48 ]
    JeRawoensdag 4 januari 2006 @ 14:31
    Probeer eens dit:

    <?php
    $pattern = "/<a href=\'#\".*>(.*)<\/a>/Ui";
    $table = preg_replace($pattern, '\\1',$table);
    ?>


    Snap je eigenlijk wel waarom je huidige regex niet werkt?
    Desdinovawoensdag 4 januari 2006 @ 14:39
    werkt bijna. Hij heeft nu alleen ook de </a> achter de content-link verwijderd, dus alles is n link vanaf de link
    JeRawoensdag 4 januari 2006 @ 15:15
    quote:
    Op woensdag 4 januari 2006 14:39 schreef Desdinova het volgende:
    werkt bijna. Hij heeft nu alleen ook de </a> achter de content-link verwijderd, dus alles is n link vanaf de link
    Maar probeer zelfs eens wat voor mij lijkt deze te werken:

    $pattern = "/<a href=\"#\".*>(.*)<\/a>/Uis";
    Desdinovawoensdag 4 januari 2006 @ 15:51
    mm. ik heb nu \\1 vervangen door \\1</a>.

    dat werkt. alleen heb ik 1 </a> over. maarjaa. t werkt iig
    JeRawoensdag 4 januari 2006 @ 16:04
    quote:
    Op woensdag 4 januari 2006 15:51 schreef Desdinova het volgende:
    mm. ik heb nu \\1 vervangen door \\1</a>.

    dat werkt. alleen heb ik 1 </a> over. maarjaa. t werkt iig
    Waarom vervang je nu door \\1</a>? ik snap je hele bedoeling niet. Mijn pattern haalt alle links, exclusief de tekst van die links, weg die beginnen met <a href="#" maar wat jij doet snap ik dus niet.
    DjDevwoensdag 4 januari 2006 @ 16:17
    quote:
    Op maandag 2 januari 2006 19:50 schreef DjDev het volgende:

    [..]

    Laat maar..ik heb alles verneukt
    Ik begin wel helemaal opnieuw met dat ding..
    Zo...Alles werkt nu
    Bedankt iedereen die geholpen heeft
    DionysuZwoensdag 4 januari 2006 @ 16:21
    denk je niet dat het te maken heeft met hoe preg_replace de te vervangen tekst zoekt?

    edit: nee, volgens mij staat er een fout in de code van desdinova. Die van JeRa ziet er goed uit, waarom die niet gebruiken?
    Desdinovawoensdag 4 januari 2006 @ 17:13
    mnou dat heb ik geprobeerd. maar dan doetie t dus niet volledig
    maar nu icm \\1</a> wel. op de </a> op t eind na.

    edit
    ehmm onee, hij gaf geen </a> bij de andere links.

    <a href=\"bla\">klik</a> hier om verder te gaan

    werd

    <a href=\"bla\">klik hier om verder te gaan

    [ Bericht 36% gewijzigd door Desdinova op 04-01-2006 17:20:21 ]
    Fatalitywoensdag 4 januari 2006 @ 17:19
    Kan iemand mij een beetje advies geven met de installatie van PEAR:DB? Waar moet ik t neerzetten en hoe activeer ik het?
    DionysuZwoensdag 4 januari 2006 @ 17:19
    @desdinova

    het ligt aan het feit dat jij links nest in andere links
    Desdinovawoensdag 4 januari 2006 @ 17:22
    quote:
    Op woensdag 4 januari 2006 17:19 schreef DionysuZ het volgende:
    @desdinova

    het ligt aan het feit dat jij links nest in andere links
    dat zou t kunnen zijn.
    DionysuZwoensdag 4 januari 2006 @ 17:25
    (.*) is zeer greedy. Als ik bijv. de volgende code heb:

    [ code]bla[/code] blalaala [ code]test[/code]
    en ik gebruik een zoekpattern #\[ code\](.*)\[/code\]# dan is de output:

    [/code] blalaala [ code]

    Als je (.*?) gebruikt is de output anders
    Chandlerwoensdag 4 januari 2006 @ 17:28
    dan moet je dus als het ware je code gaan parsen... stackbased noemen ze dat ook wel, en kan je vertellen dat dat een pokke werk is...tis mzelf nog niet eerder gelukt
    DionysuZwoensdag 4 januari 2006 @ 17:33
    het is overigens GEEN valid html als je links gaat nesten. zie bijv. http://www.w3.org/TR/REC-html40/struct/links.html
    quote:
    12.2.2 Nested links are illegal

    Links and anchors defined by the A element must not be nested; an A element must not contain any other A elements.

    Since the DTD defines the LINK element to be empty, LINK elements may not be nested either.
    DionysuZwoensdag 4 januari 2006 @ 17:39
    ik gebruik overigens ook altijd msi bij mijn patterns (bv. #\[code\](.*?)\[/code\]#msi).

    i means that the search is case-insensitive.
    s means that the dot can also match new-lines
    m means that $ and ^ match not only at the very beginning / end of the string but also immediately before / after a new-line within the given string
    Chandlerwoensdag 4 januari 2006 @ 17:43
    Mensen ik zit met een PHP/GD probleem.

    Op mijn website (online) heb ik geen problemen met het vinden van de path van de fonts maar op mijn eigen windows omgeving heb ik er wel problemen mee.

    Als ik een font wil gebruiken krijg ik aldoor errors dat het fontje niet gevonden kan worden.

    wat heb ik geprobeerd?

    1. de volledige path (met / en met \)
    2. met putenv het path GDFONTPATH gezet

    beide oplossingen werkten helaas niet... iemand een idee hoe ik dit wel voor elkaar krijg?
    DionysuZwoensdag 4 januari 2006 @ 17:52
    quote:
    Op woensdag 4 januari 2006 17:43 schreef Chandler het volgende:
    Mensen ik zit met een PHP/GD probleem.

    Op mijn website (online) heb ik geen problemen met het vinden van de path van de fonts maar op mijn eigen windows omgeving heb ik er wel problemen mee.

    Als ik een font wil gebruiken krijg ik aldoor errors dat het fontje niet gevonden kan worden.

    wat heb ik geprobeerd?

    1. de volledige path (met / en met \)
    2. met putenv het path GDFONTPATH gezet

    beide oplossingen werkten helaas niet... iemand een idee hoe ik dit wel voor elkaar krijg?
    heb je al relatieve paden gebruikt? Ik heb mijn fonts als ik GD gebruik altijd in een dir fonts staan en dan link ik ze relatief. Dat werkt, ook op mijn windows bak.
    Chandlerwoensdag 4 januari 2006 @ 17:52
    met relatief bedoel je c:\fontpath\ ? oid? ja dat heb ik geprobeerd
    DionysuZwoensdag 4 januari 2006 @ 17:53
    quote:
    Op woensdag 4 januari 2006 17:52 schreef Chandler het volgende:
    met relatief bedoel je c:\fontpath\ ? oid? ja dat heb ik geprobeerd
    nee ../fonts/fontname
    Chandlerwoensdag 4 januari 2006 @ 17:55
    ook al geprobeerd werkte ook niet ....
    DionysuZwoensdag 4 januari 2006 @ 17:57
    quote:
    Op woensdag 4 januari 2006 17:55 schreef Chandler het volgende:
    ook al geprobeerd werkte ook niet ....
    hm lastig .. al met dirname(__FILE__) het absolute pad uit proberen te lezen en daarmee verder te gaan?
    Chandlerwoensdag 4 januari 2006 @ 18:06
    nee, maar weet zekers dat ik alles heb geprobeerd, zelfs die GDFONTPATH zou het probleem moeten oplossen...maar goed ik zal nog eens wat proberen..
    Chandlerwoensdag 4 januari 2006 @ 18:12
    1. eerste optie.. volledig path
    1
    2
    3
    Warning: Could not find/open font in d:\www\persoonlijk\gfxpoll.bruggema.nl\include\gfx.include.php on line 517

    path: d:/www/persoonlijk/gfxpoll.bruggema.nl/gfx/fonts/arial.ttf


    2. tweede poging met relatief path
    1
    2
    3
    Warning: Could not find/open font in d:\www\persoonlijk\gfxpoll.bruggema.nl\include\gfx.include.php on line 517

    path: ./gfx/fonts/arial.ttf


    3. ook zonder ./
    1
    2
    3
    Warning: Could not find/open font in d:\www\persoonlijk\gfxpoll.bruggema.nl\include\gfx.include.php on line 517

    path: gfx/fonts/arial.ttf


    4. ook met de \ ipv de / werkt het niet
    1
    2
    3
    Warning: Could not find/open font in d:\www\persoonlijk\gfxpoll.bruggema.nl\include\gfx.include.php on line 517

    path: d:\www\persoonlijk\gfxpoll.bruggema.nl\gfx\fonts\arial.ttf


    wordt er gek van
    DionysuZwoensdag 4 januari 2006 @ 18:18
    probeer eens zonder .ttf op het einde
    DionysuZwoensdag 4 januari 2006 @ 18:20
    quote:
    In many cases where a font resides in the same directory as the script using it the following trick will alleviate any include problems.
    1
    2
    3
    4
    5
    6
    7
    <?php
    // Set the enviroment variable for GD
    putenv('GDFONTPATH=' . realpath('.'));

    // Name the font to be used (note the lack of the .ttf extension)
    $font = 'SomeFont';
    ?>


    imagettftext()

    [ Bericht 51% gewijzigd door DionysuZ op 04-01-2006 18:27:56 ]
    Chandlerwoensdag 4 januari 2006 @ 19:16
    wat raar, waarom zonder .ttf... dat snap ik nou weer niet maar het probleem is alleen op me eigen PC en niet online, en daar wordt dus wel weer .ttf gebruikt? beetje raar...

    en als dat zo is, is er ook een manier om te checken of het een probleem geeft? zodat ik het code technisch of het ene of het andere kan gebruiken?
    DionysuZwoensdag 4 januari 2006 @ 19:44
    quote:
    Op woensdag 4 januari 2006 19:16 schreef Chandler het volgende:
    wat raar, waarom zonder .ttf... dat snap ik nou weer niet maar het probleem is alleen op me eigen PC en niet online, en daar wordt dus wel weer .ttf gebruikt? beetje raar...

    en als dat zo is, is er ook een manier om te checken of het een probleem geeft? zodat ik het code technisch of het ene of het andere kan gebruiken?
    ligt aan je GD versie
    quote:
    Depending on which version of the GD library PHP is using, when fontfile does not begin with a leading / then .ttf will be appended to the filename and the library will attempt to search for that filename along a library-defined font path.

    When using versions of the GD library lower than 2.0.18, a space character, rather than a semicolon, was used as the 'path separator' for different font files. Unintentional use of this feature will result in the warning message: Warning: Could not find/open font. For these affected versions, the only solution is moving the font to a path which does not contain spaces.
    markiemarkwoensdag 4 januari 2006 @ 20:28
    kan iemand mij hier mee helpen..

    ik heb een bestaande web applicatie in php en mysql. daar worden weken in benoemd met een weeknummer en een jaartal. de dagen worden genummerd van 0t/m6 ma t/m zo. nu wil ik aan de hand van deze gegevens een datum genereren. (dag, maand). kan dit met de functie date() of op een andere manier?
    SuperRembowoensdag 4 januari 2006 @ 20:58
  • Maak eerst een datum van 1 januari van het jaartal dat je wil gebruiken.
  • Bepaal het weeknummer van 1 januari. Als 1 januari een donderdag, vrijdag, zaterdag of zondag is, dan is het week 1. Als 1 januari een maandag, dinsdag of woensdag is, dan is het week 53 van het jaar er voor.
  • Je zoekt de datum van bijvoorbeeld week 10, dan moet je dus 9 weken = 9 * 7 dagen verder zijn.
  • Zoek bij de datum die je nu hebt de dag in de week die je wil hebben.

    Maar dan in php
  • SuperRembowoensdag 4 januari 2006 @ 21:08
    Misschien iets handiger:

  • Neem de datum van 4 januari van het jaat dat je wil gebruiken. Deze datum valt altijd in week 1.
  • Je zoekt de datum van bijvoorbeeld week 10, dan moet je dus 9 weken = 9 * 7 dagen verder zijn.
  • Zoek bij de datum die je nu hebt de dag in de week die je wil hebben.
  • JeRawoensdag 4 januari 2006 @ 21:10
    Ja, of je doet iets in de richting van

    strtotime('+' . $aantal_weken . ' week', $timestamp_van_eerste_dag_van_dat_jaar);

    Swetseneggerwoensdag 4 januari 2006 @ 21:16
    Ik ben gestopt met roken. Beetje moeite met concentreren nu. PHP'en gaat ook iets trager .
    JeRawoensdag 4 januari 2006 @ 21:18
    quote:
    Op woensdag 4 januari 2006 21:16 schreef Swetsenegger het volgende:
    Ik ben gestopt met roken. Beetje moeite met concentreren nu. PHP'en gaat ook iets trager .
    . Succes dan maar, en niet teveel op problemen blijven zitten, dat gaat alleen maar voor irritatie zorgen
    SuperRembowoensdag 4 januari 2006 @ 22:10
    quote:
    Op woensdag 4 januari 2006 21:10 schreef JeRa het volgende:
    Ja, of je doet iets in de richting van

    strtotime('+' . $aantal_weken . ' week', $timestamp_van_eerste_dag_van_dat_jaar);

    Daar schiet je toch niet zo gek veel mee op? Iets als "thursday week 10 2005" snapt strtotime niet.
    JeRawoensdag 4 januari 2006 @ 22:26
    -blaat-
    Lightwoensdag 4 januari 2006 @ 22:26
    quote:
    Op woensdag 4 januari 2006 22:10 schreef SuperRembo het volgende:

    [..]

    Daar schiet je toch niet zo gek veel mee op? Iets als "thursday week 10 2005" snapt strtotime niet.
    Maar daar had JeRa het ook niet over

    Strtotime accepteert ook 2 argumenten, waarbij het tweede argument de timestamp is vanaf waar gerekend moet worden. Standaard is dat natuurlijk de huidige tijd, maar je kunt er ook middernacht, het begin van 1 januari <jaar> invullen.
    JeRawoensdag 4 januari 2006 @ 22:31
    quote:
    Op woensdag 4 januari 2006 22:10 schreef SuperRembo het volgende:

    [..]

    Daar schiet je toch niet zo gek veel mee op? Iets als "thursday week 10 2005" snapt strtotime niet.
    Je kunt de dag van de week toch opvragen met date()?
    SuperRembowoensdag 4 januari 2006 @ 22:41
    Ja dat kan.
    Maar markiemark wil dus de datum weten van bijvoorbeeld de donderdag in week 10 van 2005. Het enige waar je volgens mij strtotime voor kan gebruiken is het optellen van een aantal weken. Dat is maar een onderdeel van het probleem (en ook simpel zonder strtotime te doen).
    Roonaanwoensdag 4 januari 2006 @ 22:44
    Je kan toch de donderdag in week 1 opvragen en daar 9x7 bij optellen?

    -r-
    SuperRembowoensdag 4 januari 2006 @ 23:37
    Zo dus

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // dow: 0 = sunday, 1 = monday, ... 6 = saturday, 7 = sunday
    function dateFromWeek($p_year, $p_week, $p_dow) {
       $date = mktime(0, 0, 0, 1, 4, $p_year);
       $dow = date('w', $date);
       if ($dow == 0) $dow = 7;
       if ($p_dow == 0) $p_dow = 7;
       $date += ($p_week - 1) * 7 * 24 * 60 *60;
       $date += ($p_dow - $dow) * 24 * 60 *60;
       return $date;
    }
    Darkomendonderdag 5 januari 2006 @ 11:00
    Ik ben de naam van de functie in php welke woorden kan vergelijken, zoiets als google suggest.
    Wie weet hem, het was volgens mij een redelijk onlogische naam, volgens mij naar iemand vernoemt of zo.
    Roonaandonderdag 5 januari 2006 @ 11:03
    http://nl3.php.net/manual/en/ref.strings.php
    http://nl3.php.net/manual/en/function.levenshtein.php
    Darkomendonderdag 5 januari 2006 @ 11:09
    levenshtein die zocht ik

    Ik zal de andere ook ff bekijken.
    Swetseneggerdonderdag 5 januari 2006 @ 11:11
    quote:
    Op donderdag 5 januari 2006 11:09 schreef Darkomen het volgende:
    levenshtein die zocht ik

    Ik zal de andere ook ff bekijken.
    die 'ander' is gewoon de handleiding met alle string functies
    Darkomendonderdag 5 januari 2006 @ 11:15
    Yups ik zag het
    markiemarkdonderdag 5 januari 2006 @ 12:28
    dank jullie wel allemaal! ik ga vanmiddag aan de knutsel!
    markiemarkdonderdag 5 januari 2006 @ 15:28
    quote:
    Op woensdag 4 januari 2006 23:37 schreef SuperRembo het volgende:
    Zo dus
    [ code verwijderd ]
    edit: zie dat het een timestamp is.. cool

    klein probleempje, rembo gaat er hier vanuit dat dag 0 zondag is, 1 maandag enz, maar het is iets anders..
    maandag = 0, dinsdag = 1 enz..

    ik kom er niet uit om dit goed te fixen.. maar het begint er op te lijken!

    [ Bericht 16% gewijzigd door markiemark op 05-01-2006 15:39:50 ]
    markiemarkdonderdag 5 januari 2006 @ 16:07
    ben er al uit.. op beetje vreemde manier, maar het werkt!
    Swetseneggerzaterdag 7 januari 2006 @ 15:12
    Probleempje.
    Ik kom op een specifieke pagina met POST data.
    Op die pagina kan ik weer doorklikken met GET data.

    Op die laatste pagina wil ik dmv een javascript history.back terug naar de vorige page. Maar dan krijg ik continue de 'deze pagina is verlopen' warning.

    Nu had ik eens gelezen dat header("Cache-control: private"); dit oplost, maar ik weet even niet goed hoe dit toe te passen en of dit uberhaupt een oplossing is

    Iemand een tip?

    -edit- opgelost

    [ Bericht 9% gewijzigd door Swetsenegger op 07-01-2006 15:26:59 ]
    sabanzondag 8 januari 2006 @ 19:26
    Ik heb de volgende tabel
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    CREATE TABLE
    `last_reacties` (
      `
    id` int(6) NOT NULL auto_increment,
      `
    ber_id` int(6) NOT NULL default '0',
      `
    onderwerp` varchar(35) NOT NULL default '',
      `
    tijd` varchar(14) NOT NULL default '',
      `
    soort` varchar(20) NOT NULL default '',
      `
    IP` varchar(16) NOT NULL default '',
      
    UNIQUE KEY `id` (`id`),
      
    KEY `ber_id` (`ber_id`)
    )
    TYPE=MyISAM AUTO_INCREMENT=0 ;
    ?>


    Met de volgende data erin;
    1
    2
    3
    4
    5
    6
    7
    8
    INSERT INTO `last_reacties` VALUES (1, 8, 'Club Arma', '20060108184603', 'evenementen', '82.156.118.119');
    INSERT INTO `last_reacties` VALUES (8, 59, 'Toevallig kinderporno downloaden st', '20060108185624', 'nieuws', '82.156.1');
    INSERT INTO `last_reacties` VALUES (9, 6, 'Yogurtlu Corba', '20060108185915', 'recepten', '82.156.118.119');
    INSERT INTO `last_reacties` VALUES (10, 60, '''Al-Zarqawi ontsnapt aan Amerikaans', '20060108191002', 'nieuws', '82.156.1');
    INSERT INTO `last_reacties` VALUES (11, 60, '''Al-Zarqawi ontsnapt aan Amerikaans', '20060108191023', 'nieuws', '82.156.1');
    INSERT INTO `last_reacties` VALUES (12, 38, 'nieuws', '20060108191131', 'nieuws', '82.156.118.119');
    INSERT INTO `last_reacties` VALUES (13, 60, '''Al-Zarqawi ontsnapt aan Amerikaans', '20060108191216', 'nieuws', '82.156.11');
    INSERT INTO `last_reacties` VALUES (14, 60, '''Al-Zarqawi ontsnapt aan Amerikaans', '20060108191526', 'nieuws', '82.156.1');


    Ik heb een query om de laatste 10 'inserts' uit te lezen, samengevoegt (GROUP) op ber_id;
    1SELECT id, ber_id, onderwerp, soort FROM `last_reacties` GROUP BY ber_id ORDER BY tijd DESC LIMIT 0, 10


    Hij leest inderdaad de laatste 10 inserts uit, ook voegt (GROUP) hij het samen op ber_id, maar hij GROUP't ze precies andersom.
    Als ik 2 records achter elkaar heb met dezelfde ber_id, dan laat hij de oudste (eerste) record zien, in plaats van de laatste.
    Kijk naar id 13 en 14. Hij voegt 10, 11, 13 en 14 samen omdat ze dezelfde ber_id hebben, maar in plaats van 14 te laten zien, laat hij mij 13 zien.

    Iemand een beter/juiste query voor me ?
    Chandlerzondag 8 januari 2006 @ 20:28
    Korte vraag; hoe trekken jullie een leeftijd van de huidige datum af om te checken of iemand ouder is dan 18? ik doe het met dit, maar dit geeft af en toe een error

    1
    2
    3
    4
    5
    6
    $eightien = mktime(0,0,0,date("d"),date("m"), date("Y")-18);
                    
    if (mktime(0,0,0, date("d"), date("m"), date("Y") - 18) > mktime(0,0,0, $_POST['day'], $_POST['month'], $_POST['year']))
    {
       // ouder
    }


    Iemand een idee waar ik de fout in ga?
    Roonaanzondag 8 januari 2006 @ 20:30
    Je volgorde van post vars klopt niet;
    ie. progseltje:

    $birth = mktime(0,0,0,intval($_POST['month']), intval($_POST['day']), intval($_POST['year']));
    if(strtotime('+18 years', $birth) > mktime()) {
    //te jong.
    }

    -r-
    sabanmaandag 9 januari 2006 @ 00:09
    Chandler of Roonaan geen oplossing voor mij ? =)
    JeRamaandag 9 januari 2006 @ 01:35
    quote:
    Op maandag 9 januari 2006 00:09 schreef saban het volgende:
    Chandler of Roonaan geen oplossing voor mij ? =)
    Ik snap je vraag wel, maar je voorbeeld van een fout niet. Je hebt het over id's 10, 11, 13 en 14 waarvan 10 de oudste is (zover ik kan zien). Toch zeg je dat ie 13 teruggeeft?
    Roonaanmaandag 9 januari 2006 @ 01:41
    quote:
    Op maandag 9 januari 2006 01:35 schreef JeRa het volgende:

    [..]

    Ik snap je vraag wel, maar je voorbeeld van een fout niet. Je hebt het over id's 10, 11, 13 en 14 waarvan 10 de oudste is (zover ik kan zien). Toch zeg je dat ie 13 teruggeeft?
    Zover ik weet kan je niet ordenen in je group statements toch?

    Ik dacht eerst dat hij wel min of max kon gebruiken maar dat gaat alleen op voor tijd. Als hij de message ook wil krijgen wordt dan ingewikkeld. Dit wordt op alfanum gesorteerd.
    rickmansmaandag 9 januari 2006 @ 06:39
    quote:
    Op zondag 8 januari 2006 19:26 schreef saban het volgende:
    Ik heb de volgende tabel
    [ code verwijderd ]

    Met de volgende data erin;
    [ code verwijderd ]

    Ik heb een query om de laatste 10 'inserts' uit te lezen, samengevoegt (GROUP) op ber_id;
    [ code verwijderd ]

    Hij leest inderdaad de laatste 10 inserts uit, ook voegt (GROUP) hij het samen op ber_id, maar hij GROUP't ze precies andersom.
    Als ik 2 records achter elkaar heb met dezelfde ber_id, dan laat hij de oudste (eerste) record zien, in plaats van de laatste.
    Kijk naar id 13 en 14. Hij voegt 10, 11, 13 en 14 samen omdat ze dezelfde ber_id hebben, maar in plaats van 14 te laten zien, laat hij mij 13 zien.

    Iemand een beter/juiste query voor me ?
    ik gebruik deze op de weblog om de laatste (in mijn geval unieke) reacties te laten zien:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    SELECT 
        r.site_id, 
        b.header,
        MAX(r.time) AS tijd
    FROM 
        b JOIN reacts AS r ON (b.id = r.site_id)
    WHERE 
        r.status = 'active'
    AND 
        b.status = 'active'
    AND 
        r.time > (UNIX_TIMESTAMP() - 259200)
    GROUP BY
        r.site_id, b.header
    ORDER BY 
        `tijd` DESC
    LIMIT 
       0 , 8
    sabanmaandag 9 januari 2006 @ 08:59
    quote:
    Op maandag 9 januari 2006 01:35 schreef JeRa het volgende:

    [..]

    Ik snap je vraag wel, maar je voorbeeld van een fout niet. Je hebt het over id's 10, 11, 13 en 14 waarvan 10 de oudste is (zover ik kan zien). Toch zeg je dat ie 13 teruggeeft?
    Waarom is id 10 het oudste ? Ik sorteer op tijd, en id 14 heeft het hoogste waarde (20060108191526), maar hij geeft helaas id 13 terug.
    sabanmaandag 9 januari 2006 @ 09:05
    Nu ik er even over nadenk, is dit ook mogelijk

    1
    2
    3
    4
    5
    SELECT id, ber_id, onderwerp, soort
    FROM `last_reacties` 
    GROUP BY onderwerp
    ORDER BY id DESC 
    LIMIT 0 , 10 


    Maar weer laat hij geen id 14 zien, en wel id 13.
    JeRamaandag 9 januari 2006 @ 09:09
    Kun je niet de query gebruiken die rickmans aanbiedt?

    En ik snap 'm nu wel weer, het komt er op neer dat je geen ORDER kunt doen vóór een GROUP BY om zo de groepering aan te passen. Je kunt ORDER wel gebruiken om de resultset aan te passen though. Gebruik de MAX()-(group)functie om de hoogste waarde te vinden
    Desdinovamaandag 9 januari 2006 @ 10:55
    even een snel vraagje.

    ik heb een $row->Date van zo'n 20-25 chars. Ik wil alleen de 1e 10 chars laten zien. Ik dacht dat dat kon met echo $row->Date{0,10} maar dat lijkt niet te werken. ik heb hier eventueel wel n wat uitgebreidere functie voor, maar ik dacht dat het ook op deze manier kon.

    Ik heb t fout zeker
    Roonaanmaandag 9 januari 2006 @ 10:56
    substr($row->Date,0,10);

    ?
    Desdinovamaandag 9 januari 2006 @ 11:03
    tx
    sabanmaandag 9 januari 2006 @ 12:21
    quote:
    Op maandag 9 januari 2006 09:09 schreef JeRa het volgende:
    Kun je niet de query gebruiken die rickmans aanbiedt?

    En ik snap 'm nu wel weer, het komt er op neer dat je geen ORDER kunt doen vóór een GROUP BY om zo de groepering aan te passen. Je kunt ORDER wel gebruiken om de resultset aan te passen though. Gebruik de MAX()-(group)functie om de hoogste waarde te vinden
    Ik gebruik nu de MAX functie, het werkt al iets beter, maar nog steeds niet 'bug-loos'. Helaas ben ik onbekend met JOINS.
    JeRamaandag 9 januari 2006 @ 13:12
    quote:
    Op maandag 9 januari 2006 12:21 schreef saban het volgende:

    [..]

    Ik gebruik nu de MAX functie, het werkt al iets beter, maar nog steeds niet 'bug-loos'. Helaas ben ik onbekend met JOINS.
    Hier heb je geen JOIN voor nodig. Ik heb je tabel geprobeerd en ik merk op dat je het veld 'tijd' als een VARCHAR opslaat. Dit type werkt niet zo geweldig met de MAX()-functie. Beter sla je die tijd op als een Unix Timestamp (epoch), dit is het aantal seconden vanaf 1 januari 1970. Deze kun je in MySQL opvragen als UNIX_TIMESTAMP() en neemt als UNSIGNED INT maar 4 bytes in beslag, dit in tegenstelling tot jouw huidige veld dat een veelvoud van dat inneemt.

    Als je een Unix timestamp als veld gebruikt kun je wél die MAX() gebruiken dan ziet je query er zo uit:

    1
    2
    3
    4
    5
    SELECT id, ber_id, onderwerp, MAX( tijd ) AS mtijd, soort, IP
    FROM last_reacties
    GROUP BY ber_id
    ORDER BY mtijd DESC
    LIMIT 0 , 10
    ToBemaandag 9 januari 2006 @ 14:09
    Super simpele vraag misschien, maar ik kom ergens niet uit.

    Ik heb een dir met daarin een 3tal bestanden.
    index.php hoofdpagina, met alle opmaak
    config.inc.php include file met allemaal variabelen met settings, geinclude in index.php
    functions.inc.php include file met allemaal functies die gebruik maken van de variabelen uit config.inc.php, geinclude in index.php

    Als ik bovenstaande doe, dan zijn de waardes van de variabelen leeg. De functies nemen de variableen niet over die gedefinieerd staan in config.inc.php. Hoe regel ik dat zij dat wel overnemen? Iets global oid maken?
    Roonaanmaandag 9 januari 2006 @ 14:12
    In principe zou je die variabelen mee moeten geven bij de functie aanroep als argumenten. Als dat echt niet mogelijk is, zou je kunnen overwegen om define() te gebruiken als het constanten betreft, of als het écht niet anders kan onderstaande te gebruiken:
    1
    2
    3
    4
    5
    <?php
    function ugly() {
      GLOBAL
    $uncleFester, $causinIt;
    }
    ?>


    -r-
    Chandlermaandag 9 januari 2006 @ 14:14
    global gebruiken is toch vies? of mag dat tegenwoordig wel?
    ToBemaandag 9 januari 2006 @ 14:21
    quote:
    Op maandag 9 januari 2006 14:12 schreef Ro�a� het volgende:
    In principe zou je die variabelen mee moeten geven bij de functie aanroep als argumenten. Als dat echt niet mogelijk is, zou je kunnen overwegen om define() te gebruiken als het constanten betreft, of als het écht niet anders kan onderstaande te gebruiken:
    [ code verwijderd ]

    -r-
    thnx

    ik definieer bv in config.inc.php het eerste woord dat na de url komt (www.example.org/woord/)
    Als ik het niet global maak, moet ik iedere keer in een functie opnieuw de string uitlezen, choppen en er een var van maken. Vind ik minder handig. Zie je daar een alternatief voor?
    rolandowmaandag 9 januari 2006 @ 14:27
    quote:
    Op maandag 9 januari 2006 14:09 schreef ToBe het volgende:
    Super simpele vraag misschien, maar ik kom ergens niet uit.

    Ik heb een dir met daarin een 3tal bestanden.
    index.php hoofdpagina, met alle opmaak
    config.inc.php include file met allemaal variabelen met settings, geinclude in index.php
    functions.inc.php include file met allemaal functies die gebruik maken van de variabelen uit config.inc.php, geinclude in index.php

    Als ik bovenstaande doe, dan zijn de waardes van de variabelen leeg. De functies nemen de variableen niet over die gedefinieerd staan in config.inc.php. Hoe regel ik dat zij dat wel overnemen? Iets global oid maken?
    Er zijn meerdere opties.

    1. Zet heb in de globals array: $GLOBALS['Varname'] = "Tralala";

    2. Gebruik define, zodat het een constante wordt: DEFINE(VAR, "Tralala");

    3. Maak hem global in de functie:

    function Foo() {
    global $var;

    echo $var;
    }

    Het mooiste is inderdaad gewoon om hem mee te geven aan de functie. Dat houdt je functie ook clean.
    Roonaanmaandag 9 januari 2006 @ 14:27
    $parts = explode('/', $_SERVER['QUERY_STRING']);
    define('WOORD1', isset($parts[0]) ? $parts[0] : 'default');

    if(WOORD1 == 'woord') {
    }

    -r-
    ToBemaandag 9 januari 2006 @ 14:32
    quote:
    Op maandag 9 januari 2006 14:27 schreef Ro�a� het volgende:
    $parts = explode('/', $_SERVER['QUERY_STRING']);
    define('WOORD1', isset($parts[0]) ? $parts[0] : 'default');

    if(WOORD1 == 'woord') {
    }

    -r-
    Thnx peeps, ik neem het mee in overweging. Even spelen wat ik het lekkerst vind
    JeRamaandag 9 januari 2006 @ 14:32
    quote:
    Op maandag 9 januari 2006 14:27 schreef Ro�a� het volgende:
    $parts = explode('/', $_SERVER['QUERY_STRING']);
    define('WOORD1', isset($parts[0]) ? $parts[0] : 'default');

    if(WOORD1 == 'woord') {
    }

    -r-
    Ehm, ik weet niet of het zo'n briljant plan is om misbruik te maken van constanten. Constanten horen constant te zijn, en niet variabel nu definiëer je een 'constante' die elke request anders is, daar is natuurlijk weinig constant aan en is mijns inziens nogal vies.

    Beter geef je voor een functie de benodigde variabelen via de parameters door, eventueel via een volledig $config-object.
    Roonaanmaandag 9 januari 2006 @ 14:37
    quote:
    Op maandag 9 januari 2006 14:32 schreef JeRa het volgende:

    [..]

    Ehm, ik weet niet of het zo'n briljant plan is om misbruik te maken van constanten. Constanten horen constant te zijn, en niet variabel nu definiëer je een 'constante' die elke request anders is, daar is natuurlijk weinig constant aan en is mijns inziens nogal vies.

    Beter geef je voor een functie de benodigde variabelen via de parameters door, eventueel via een volledig $config-object.
    Ja en nee. Ik vind het beter dan het overbodig rondslingeren van ellenlange argumentlijsten omdat een serie telkens terugkeerende runtime sermi-constanten mee te geven.
    Doe jij dan nooit:
    define('LANG', @$_REQUEST['lang'] == 'nl' ? 'nl' : 'en');
    Of soortgelijk?

    -r-
    JeRamaandag 9 januari 2006 @ 14:40
    quote:
    Op maandag 9 januari 2006 14:37 schreef Ro�a� het volgende:

    [..]

    Ja en nee. Ik vind het beter dan het overbodig rondslingeren van ellenlange argumentlijsten omdat een serie telkens terugkeerende runtime sermi-constanten mee te geven.
    Doe jij dan nooit:
    define('LANG', @$_REQUEST['lang'] == 'nl' ? 'nl' : 'en');
    Of soortgelijk?

    -r-
    Nee, alleen voor échte constanten waarvan ik niet verwacht dat ze binnen afzienbare tijd zullen veranderen doe ik op die manier. Voor de rest doe ik het zo (voorbeeldje):

    $config = array();
    ...
    $config['charset'] = 'iso-8859-15';
    $config['lang'] = (getCookie('lang') == 'nl') ? 'nl' : 'en';
    ...
    doSomething($config);

    Of heel eventueel, als ik de parameters zat ben, dit:

    function doSomething()
    {
    global $config;
    //etc
    }
    sabanmaandag 9 januari 2006 @ 16:27
    quote:
    Op maandag 9 januari 2006 13:12 schreef JeRa het volgende:

    [..]

    Hier heb je geen JOIN voor nodig. Ik heb je tabel geprobeerd en ik merk op dat je het veld 'tijd' als een VARCHAR opslaat. Dit type werkt niet zo geweldig met de MAX()-functie. Beter sla je die tijd op als een Unix Timestamp (epoch), dit is het aantal seconden vanaf 1 januari 1970. Deze kun je in MySQL opvragen als UNIX_TIMESTAMP() en neemt als UNSIGNED INT maar 4 bytes in beslag, dit in tegenstelling tot jouw huidige veld dat een veelvoud van dat inneemt.

    Als je een Unix timestamp als veld gebruikt kun je wél die MAX() gebruiken dan ziet je query er zo uit:
    [ code verwijderd ]
    Dan moet ik waarschijnlijk heel mijn database structuur ombouwen. Of ik moet het omslachtig doen door een extra tabel te maken met enkel de laatste reacties, gebaseerd op jou code.
    Desdinovadinsdag 10 januari 2006 @ 13:46
    ik las ergens iets over serverload qua processorusage en memusage. hoe tjek ik dat bij n eigen script?
    Roonaandinsdag 10 januari 2006 @ 13:59
    mem_get_usage() dacht ik. processor power weet ik niet.
    SkaterSamdinsdag 10 januari 2006 @ 14:04
    Verdorie mijn script wil een while loop niet laten werken...

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $db->query("SELECT * FROM nieuws WHERE n_status = 'visible' ORDER BY n_id DESC");
    if (mysql_num_rows($db->resultaten) <= 0) {
       ?>
       <h2>Geen resultaten</h2>
       <p>
          Er zijn geen resultaten gevonden in de database
       </p>
       <?php
    } else {
       while ($nieuws = $db->fetch()) { //loop hier }

    Nu krijg ik dus de hele tijd maar 1 resultaat in plaats van de 5 die er moeten zijn, ligt dit aan mijn query? In een ander script werkt een soortgelijke query met while loop namelijk wel.

    En een tweede vraag is hoe je de eerste vijftig woorden van een tekstbericht kan halen? Moet dat zo:

    1
    2
    3
    $bericht = explode(' ', $nieuws['nieuws']);
    //echo het resultaat
    echo substr(implode(' ', $bericht), 0, 50);

    Maar dan krijg ik alleen de eerste 50 woorden...
    Desdinovadinsdag 10 januari 2006 @ 14:12
    je wijst geen nieuwe data toe aan $db in de while loop?

    ik ken verder het principe wat je gebruikt niet.
    probeer anders dit eens:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    $query
    = "SELECT * FROM nieuws WHERE n_status = 'visible' ORDER BY n_id DESC";
    $result = mysql_query($query);
    if (
    mysql_num_rows($db-&gt;resultaten) &lt;= 0) {
       
       &
    lt;h2&gt;Geen resultaten&lt;/h2&gt;
       &
    lt;p&gt;
          
    Er zijn geen resultaten gevonden in de database
       
    &lt;/p&gt;
       
    php
    } else {
    while (
    $nieuws = mysql_fetch_object($result)){ // loop hier }
    ?>
    ExCibulardinsdag 10 januari 2006 @ 14:19
    Ik heb een vraag over mysql en database design. Ik heb al een paar keer een simpele website gebouwd waar ik de data gewoon uit een tabellteje kon halen maar volgens mij moet het deze keer anders.

    Ik zal even uitleggen wat ik wil:
    Een website met een CMS waarin de gebruiker data kan toevoegen. Het CMS moet heel simpel zijn en dus eigenlijk gewoon een formulier waar de tekst in staat, de gebruiker kan het aanpassen maar niks met de layout doen. Dmv van CSS wordt vervolgens de layout bepaalt. Alleen hebben we daarnaast een linkjes overzicht, een nieuws pagina en een rapporten overzicht.

    De nieuwspagina is anders omdat die ook in RSS moet worden uitgelezen. Nou vraag me af hoe kan ik dit het beste aanpakken, welke database opbouw werkt het snelst en zorgt ervoor dat ik zo min mogelijk php code nodig heb.

    En daarnaast, wat is het meest flexibel, als ik in de toekomst nog een bijzondere pagina wil toevoegen (nv fotooverzicht) welke manier van database opbouw is dan het makkelijkst voor mij.

    In de database komen de volgende onderdelen:
    Normale tekst -titel - tekts
    Nieuws -titel-beschrijving-tekst-datum
    Linkjes --URL- beschrijving
    Rapporten -naam-nummer -datum-URL (link naar het rapport)

    En voor de website heb ik nog -menu nodig

    Ik hoop dat iemand mij kan helpen hoe ik dit het beste kan oplossen!
    Alvast bedankt
    SkaterSamdinsdag 10 januari 2006 @ 14:37
    quote:
    Op dinsdag 10 januari 2006 14:12 schreef Desdinova het volgende:
    je wijst geen nieuwe data toe aan $db in de while loop?
    Ja, wel dus , ik gebruik een tweede $db->query in de while loop om de categorie te achterhalen, nu heb ik dat verandert in een normale query ($ret = mysql_query($query)), en dan doet ie het wel?

    Ik kan dus niet nog een keer $db->query doen in de while loop?
    Desdinovadinsdag 10 januari 2006 @ 14:44
    nee
    want dan raaktie je while-gegevens kwijt ofzo.

    [edit]
    k snap waarom

    ff met mijn code, zodat ik t zelf snap.

    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $query
    = "SELECT * FROM a WHERE b = 'c'";
    $result = mysql_query($query);

    while (
    $row = mysql_query($result)){
    //loop
    }
    ?>


    als je de query wijzigt in de loop, wijzigt $result ook. en die roeptie op bij de while.
    en daar gaat het dus fout

    [ Bericht 87% gewijzigd door Desdinova op 10-01-2006 14:55:24 ]
    9christensenwoensdag 11 januari 2006 @ 13:28
    Ik zoek een makkelijk phpscript waarmee ik een gastenboek kan maken. In dit gastenboek wil ik dat je berichten kunt quoten. Ik heb al op veel scriptsites gezocht, maar ben nog niet iets tegen gekomen.
    the_disheaverwoensdag 11 januari 2006 @ 13:40
    quote:
    Op woensdag 11 januari 2006 13:28 schreef 9christensen het volgende:
    Ik zoek een makkelijk phpscript waarmee ik een gastenboek kan maken. In dit gastenboek wil ik dat je berichten kunt quoten. Ik heb al op veel scriptsites gezocht, maar ben nog niet iets tegen gekomen.
    Zoek een gastenboek op welke met Mysql werkt,

    voeg er onder elke berichtje een quote-knopje toe waarin je de bericht ID naar het formulier doorspeelt

    Zoek vervolgens het bericht op in de database aan de hand van dat IDnummer, zet er quote-tags omheen en voeg een preg_expr toe welke van [quote] > <blockquote> maakt oid.
    9christensenwoensdag 11 januari 2006 @ 14:08
    quote:
    Op woensdag 11 januari 2006 13:40 schreef the_disheaver het volgende:

    [..]

    Zoek een gastenboek op welke met Mysql werkt,

    voeg er onder elke berichtje een quote-knopje toe waarin je de bericht ID naar het formulier doorspeelt

    Zoek vervolgens het bericht op in de database aan de hand van dat IDnummer, zet er quote-tags omheen en voeg een preg_expr toe welke van [quote] > <blockquote> maakt oid.
    mja, zo slim ben ik nog niet met php.

    ik zoek eigenlijk naar een scriptje dat alles al doet.
    tsjsiebwoensdag 11 januari 2006 @ 14:51
    quote:
    Op woensdag 11 januari 2006 14:08 schreef 9christensen het volgende:

    [..]

    mja, zo slim ben ik nog niet met php.

    ik zoek eigenlijk naar een scriptje dat alles al doet.
    Misschien kun je naar smartisoft phpBook kijken, deze heb ik vroeger ooit eens gebruikt.
    Ik geloof dat ie toen alleen niet helemaal perfect met firefox werkte, maar dat zou je zelf even moeten proberen.
    Fatalitywoensdag 11 januari 2006 @ 15:05
    hoe installeer ik die verpauperde PEAR-packages, via de CLI lukt het niet.

    gebruik trouwens voor het gemak PHPdev met php 4.3 erbij, bij wie is het hiermee wel gelukt? Bij het openen van mijn php-cli.exe en php.exe krijg ik een 'php4ts.dll niet gevonden' fout

    Man ik ben 90% van de tijd kwijt met dingen instellen en aanpassen van de localhostinstellingen.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Error


    Sorry! PEAR_Frontend_Web is not yet compatible

    with PEAR 1.4.x. A new version will be available soon.

    Until then, you may install the CLI version of PEAR,

    or grab the CVS version of PEAR_Frontend_Web via

    anonymous CVS (WARNING: experienced developers only)


    Wat moet ik hiermee, zoals ik dus al zei ben ik er al een tijdje mee bezig geweest.. maar ben ik helemaal niet van dat instellinggepriegel en meer van het scriptwerk zelf.
    Wie helpt me uit de brand of heeft wat tips?

    [ Bericht 32% gewijzigd door Fatality op 11-01-2006 19:42:23 ]
    wobbelwoensdag 11 januari 2006 @ 19:29
    Ik heb een DB met allerlei downloads met als titel 3532526_hierbestands_datum_dag.doc

    Hoe zorg ik ervoor dat ALLEEN alles voor de eerste _ wordt verwijderd? In dit geval dus alle nummers voor de eerste _.

    alle overige _ enzo mogen wel blijven staan
    Nevermindwoensdag 11 januari 2006 @ 19:58
    Iets dergelijks? Niet getest.

    1$titel = substr( $titel, strpos( $titel, "_" ) + 1 );
    the_disheaverwoensdag 11 januari 2006 @ 20:10
    quote:
    Op woensdag 11 januari 2006 19:58 schreef Nevermind het volgende:
    Iets dergelijks? Niet getest.
    [ code verwijderd ]
    offe:
    1
    2
    array = explode ("_", $bestandsnaam");
    $nieuw_bestandnaam = $array[1]."_".$array[2]."_".$array[3];

    Moet wel werken, maar niet getest. De vorige lijkt me netter.
    Nevermindwoensdag 11 januari 2006 @ 20:13
    quote:
    Op woensdag 11 januari 2006 20:10 schreef the_disheaver het volgende:

    [..]

    offe:
    [ code verwijderd ]

    Moet wel werken, maar niet getest. De vorige lijkt me netter.
    Dan zou ik wel iets als dit doen, iets flexibeler;

    1
    2
    3
    $array = explode( "_", $titel );
    unset( $array[0] );
    $titel = implode( "_", $array );


    Maar goed, waarom moeilijk doen als het makkelijk kan
    H4zewoensdag 11 januari 2006 @ 21:17
    SQL vraagje...

    Kan het kloppen dat het niet mogelijk is om in 1 DELETE statement gegevens uit meerdere tabellen te verwijderen?
    JeRawoensdag 11 januari 2006 @ 22:04
    Check the manual het is dus wel degelijk mogelijk om met één DELETE-statement rows uit meerdere tabellen te verwijderen.
    keeperwoensdag 11 januari 2006 @ 23:26
    Ik probeer een XML bestand te parsen, wat opzich goed gaat, maar ik val over een paar dingen.

    Ik moet oa informatie hebben die tussen <description>-tags staat. Dit lukt, maar als er tussen de start en eindtag witregels worden gebruikt, pakt de parser het maar tot de witregel.

    Dus
    1
    2
    3
    <description>BlaBla

    123!!</description>

    Levert als output alleen 'BlaBla'. Een nl2br(); lost hierbij niks op,

    Daarnaast is er ook een probleem als er een < of >-teken wordt gebruikt (bijvoorbeeld als er een link is opgenomen in de description, of een <b>-tag). De parser stopt dan ook op dit punt. De tags staan er trouwens niet hard in, maar in hun html-entity-waarde, dus &l_t en >. Dit geldt ook voor tekens als apostrof (') enzo, maar die kan ik er uitvissen met een ereg_replace:
    1$data = ereg_replace("&apo_s","'",$data);

    Doe ik dit echter bij de < en >-tekens, krijg ik deze error:
    quote:
    XML error: not well-formed at line xxx
    Die line xxx is overigens de eerste lijn in de xml-file waar zo'n <-teken staat.

    Als laatste puntje heb ik een probleem om de inhoud van een tag met een namespace-verwijzing daarin te pakken te krijgen. In dit geval de tag <lj:mood>. Ik begreep uit documentatie dat die namespace slechts ter identificatie dient en je gewoon op de tag zonder de namespace kan zoeken. Dus in dit geval <mood>. Helaas blijft mijn variabele waarin de inhoud van de tag zou moeten staan dan leeg .

    Iemand suggesties? Ik blijf zelf ook dingen proberen natuurlijk, als ik antwoorden heb post ik ze hier .

    In de voorbeelden hier heb ik die html-entities wat aangepast, want anders worden ze als teken neergezet door Replikk. In mijn echte code staan ze goed, dus zonder underscore en met punt-komma.

    De code van mijn parser.
    Fatalitywoensdag 11 januari 2006 @ 23:50
    quote:
    Op woensdag 11 januari 2006 15:05 schreef Fatality het volgende:
    hoe installeer ik die verpauperde PEAR-packages, via de CLI lukt het niet.

    gebruik trouwens voor het gemak PHPdev met php 4.3 erbij, bij wie is het hiermee wel gelukt? Bij het openen van mijn php-cli.exe en php.exe krijg ik een 'php4ts.dll niet gevonden' fout

    Man ik ben 90% van de tijd kwijt met dingen instellen en aanpassen van de localhostinstellingen.
    [ code verwijderd ]

    Wat moet ik hiermee, zoals ik dus al zei ben ik er al een tijdje mee bezig geweest.. maar ben ik helemaal niet van dat instellinggepriegel en meer van het scriptwerk zelf.
    Wie helpt me uit de brand of heeft wat tips?
    ok klaar. heb het gefixt en het loopt.

    Weet iemand een online digitale dictionary ofzo? Ik volg soms de Engelse digiterminologie niet volledig.
    Roonaandonderdag 12 januari 2006 @ 00:04
    freetranslation.com?
    DionysuZdonderdag 12 januari 2006 @ 00:19
    babelfish.altavista.com
    Swetseneggerdonderdag 12 januari 2006 @ 16:46
    Even een situatie schtes.

    Ik heb een aantal zinnen in een exel sheet
    Deze exel sheet wordt in 9 talen vertaald

    Vervolgens moeten deze zinnen in een txtfile komen waarbij de newline vervangen wordt door een ~ en alle html entities moeten vervangen worden door hun daadwerkelijk entitie (& uuml;, etc)

    Ok, daar heb ik een prachtig scriptje voor geschreven. Zodra ik mijn vertaalde exel sheetje heb binnen gekregen, plak ik de kolom in een txtfile. Upload de txtfile mijn scriptje in, en hij komt er geconverteerd uitrollen.

    Maar...... Helaas helaas zijn sommige teksten javascript alerts en confirms. En daar moeten entities vervangen worden door unicode (\u00f9, etc).

    Nu wil ik mijn script dus aanpassen dat ik de txtfile kan uploaden (zoals ik nu al doe) en een aantal nummers kan intikken van de zinnen welke unicode moeten worden ipv html entities. Vervolgens moet ik DIE specifieke nummers in mijn file array doorzoeken op html entities zoals ø en vervangen door unicode.

    Lange inleiding, maar het gaat nu om dit laatste. Ik heb een array met nummers, bv 10, 11, 13, 18.
    Die nummers staan gelijk aan de regels in mijn txt file voordat de newlines zijn vervangen door ~
    Die regels moet ik dan stuk voor stuk gaan doorzoeken op ß, à, á en vervangen door hun unicode equivalent \u00DF, \u00E0, \u00E1.

    Hoe ga ik dat laatste aanpakken? Een array waarbij de key de entity is en de value de unicode. En indien de key voorkomt in de array welke ik doorzoek, deze swappen met de value?

    Het huidige script
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <html>
    <head>
    <title>Linebreak to tilde convertor</title>
    <script type="text/javascript">
    function getPath() {
       document.myForm.path.value = document.myForm.file.value;
    }
    </script>
    <?php
    if(isset($_POST['submit'])){
        $path=stripslashes($_POST['path']);

    $document=file("{$_FILES['file']['tmp_name']}");
    foreach($document as $lines){
      $lines=str_replace("\n",'~',$lines);
    }
    $document=implode("~",$document);
    $document=str_replace("\r\n",'',$document);
    $document=htmlentities($document);

    //referer schrijven naar bestand

    $fp=fopen("$path",'w+');

          fwrite($fp,"$document");
          fclose($fp);
    }

    ?>
    </head>
    <body>
    <?
    if(!empty($document)){
    echo "$document";
    }else{
    ?>
    LET OP: De te converteren files moeten op de desktop staan ivm rechten
    <form name="myForm" onsubmit="getPath()" enctype="multipart/form-data" action="convertor.php" method="post">
    <input type="hidden" name="MAX_FILE_SIZE" value="1000000" /></p>
    <input type="hidden" name="path" value="">
    <p>Textfile: <input name="file" type="file" /></p>
    <input type="submit" name="submit" value="convert" />
    <?}?>
    </form>
    </body>
    </html>
    Roonaandonderdag 12 januari 2006 @ 17:06
    Je voegt een textveld toe aan je form waarin je in 1,2,3,4-format de regels aangeeft, vervolgens vervang je je php stuk:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $unicode_lines = explode(',', $_POST['unicodelines']);

    $output = '';
    foreach($document as $line_number => $line){
      if(in_array($line_number + 1, $unicode_lines)) {
        $output .= unicode_functie(trim($line)).'~';
      } else {
        $output .= htmlentities(trim($line)).'~';
     }
    }

    $f = fopen($path,'w');
    fwrite($f, $output);
    fclose($f);


    Zoiets ongeveer?
    Swetseneggerdonderdag 12 januari 2006 @ 17:14
    quote:
    Op donderdag 12 januari 2006 17:06 schreef Ro�a� het volgende:
    Je voegt een textveld toe aan je form waarin je in 1,2,3,4-format de regels aangeeft, vervolgens vervang je je php stuk:
    [ code verwijderd ]

    Zoiets ongeveer?
    De vraag was meer hoe ik die unicode_functie schrijf
    Overigens heb je hier ook niet implode toch?
    Roonaandonderdag 12 januari 2006 @ 17:22
    Moet je even bij http://nl2.php.net/ord, staat in de comments redelijk wat over uniord.
    Swetseneggerdonderdag 12 januari 2006 @ 17:28
    quote:
    Op donderdag 12 januari 2006 17:22 schreef Ro�a� het volgende:
    Moet je even bij http://nl2.php.net/ord, staat in de comments redelijk wat over uniord.
    Ik zie er inderdaad wel het een en ander tussen staan.
    Bedankt!
    Chandlerdonderdag 12 januari 2006 @ 18:11
    Ik gebruik al een tijd een manier om mysql hacks tegen te gaan..
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function mysql_text($in)
    {
        $remove = array("select ", "insert ", "update ", "delete ", "drop ", "'", "union ", "--");

        foreach ($remove as $key)
        {
            $in = str_replace($key, "", $in);
        }

        return addslashes($in);
    }


    maar denk dat dit niet de meest handige manier is... iemand een ander idee?
    JeRadonderdag 12 januari 2006 @ 18:21
    Wat voor MySQL hacks wil je tegengaan? Ik neem aan dat je niet zomaar een mysql_query() uitvoert op user input?

    De beste manier is je user input vailderen en op de juiste manier in een query te zetten:

    1
    2
    3
    4
    $getal = intval($_GET['userGetal']);
    $string = trim($_GET['userString'];

    $result = mysql_query('SELECT FROM `tabel` WHERE `getal` = ' . $getal . ' AND `string` = \'' . mysql_real_escape_string($string) . '\'');

    In plaats van mysql_real_escape_string() kun je ook addslashes() gebruiken, maar die houdt geen rekening met de collation van de database.
    Chandlerdonderdag 12 januari 2006 @ 19:41
    collation? kun je dat nog even uitleggen?
    JeRadonderdag 12 januari 2006 @ 19:46
    quote:
    Op donderdag 12 januari 2006 19:41 schreef Chandler het volgende:
    collation? kun je dat nog even uitleggen?
    Dat is de character set van een database, tabel of kolom in latere versies van MySQL (vanaf 4 geloof ik, en die is stable). Zie ook deze pagina voor een betere uitleg
    Swetseneggerdonderdag 12 januari 2006 @ 22:08
    quote:
    Op donderdag 12 januari 2006 17:22 schreef Ro�a� het volgende:
    Moet je even bij http://nl2.php.net/ord, staat in de comments redelijk wat over uniord.
    Hier staat wel het een en ander, maar gaat veel te ver voor wat ik nodig heb, en is ook niet simpel te verbouwen tot wat ik nodig heb.

    Ik hou eigenlijk 1 probleem over. Hoe vind ik in een string een htmlentitie ZONDER dat deze gelijk omgezet wordt naar z'n entity.

    Kortom, hoe vind ik ä, zonder dat deze direkt omgezet wordt naar & auml;.

    1
    2
    3
    $str='hülp';
    $entities = get_html_translation_table(HTML_ENTITIES,ENT_NOQUOTES);
    foreach ($entities as $entity){


    Ok, nu moet ik dus door de string stappen en ALS een karakter een entitie is, moet ik 'm omzetten naar ord(het karakter)

    met strstr etc kom ik er niet. Die geven alles terug VANAF de gevonden entity .

    -edit- stuk verder

    1
    2
    3
    4
    5
    6
    7
    8
    9
    $str='hülp';
    $entities = get_html_translation_table(HTML_ENTITIES,ENT_NOQUOTES);
    foreach ($entities as $entity){
        $pos=strpos($str,$entity);
        $char='\u00'.dechex(ord(substr($str,$pos+1,1)));
        $str=str_replace($entity,$char,$str);
    }

    echo $str;


    output hülp ipv h\u00fclp

    je moet natuurlijk wel op de key's van de $entities array checken

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?
    $str='hülp ü';
    $entities = get_html_translation_table(HTML_ENTITIES,ENT_NOQUOTES);
    foreach ($entities as $entity => $value){
        $pos=strpos($str,$entity);
        if($pos!==false){
            $char='\u00'.dechex(ord(substr($str,$pos,1)));
            $str=str_replace($entity,$char,$str);
        }
    }

    echo $str;

    ?>


    [ Bericht 22% gewijzigd door Swetsenegger op 12-01-2006 22:44:50 ]
    the_disheaverzaterdag 14 januari 2006 @ 01:49
    In mysql.

    Wanneer je ergens sorteert met ASC

    Dan zou een waarde 0 toch boven de waarde 1 moeten staan?

    Nu staat het als volgt:
    1
    1
    0
    0
    10
    10

    Lijkt me niet de juiste volgorde (btw: er staat 0, geen NULL)
    rickmanszaterdag 14 januari 2006 @ 07:39
    quote:
    Op zaterdag 14 januari 2006 01:49 schreef the_disheaver het volgende:
    In mysql.

    Wanneer je ergens sorteert met ASC

    Dan zou een waarde 0 toch boven de waarde 1 moeten staan?

    Nu staat het als volgt:
    1
    1
    0
    0
    10
    10

    Lijkt me niet de juiste volgorde (btw: er staat 0, geen NULL)
    normaal gesproken wel, hoe ziet je table eruit en hoe ziet je query er exact uit? Het is nooit zonder reden dat iets niet gaat zoals je het verwacht.
    the_disheaverzaterdag 14 januari 2006 @ 10:28
    quote:
    Op zaterdag 14 januari 2006 07:39 schreef rickmans het volgende:

    [..]

    normaal gesproken wel, hoe ziet je table eruit en hoe ziet je query er exact uit? Het is nooit zonder reden dat iets niet gaat zoals je het verwacht.
    Dat laatste zal wel het geval zijn. Het is een forum waar ik ff wat wou toevoegen, maar met een vreemd resultaat.

    Ik ga het wel ff testen in phpmyadmin,
    the_disheaverzaterdag 14 januari 2006 @ 11:24
    Bovenstaande klopt niet geheel, maar de volgorde is in ieder geval niet juist. Maar 1 van de kolomnamen is 'open'. In phpmyadmin lijkt het net dat hij die open als een aparte functie ziet (er wordt een nieuwe regel geopend, en heeft dezelfde stijl als 'SELCET', 'WHERE' enzo). Wel is het in klein capitaal ingevoerd. Kan dit er iets mee te maken hebben?

    1
    2
    3
    4
    5
    6
    7
    SELECT icon.title AS icontitle, icon.iconpath, thread.threadid,
     thread.title, lastpost, forumid, pollid, open , replycount, postusername,
     postuserid, lastposter, thread.dateline, views, thread.iconid, notes,
     thread.visible, sticky, votetotal, attach
    FROM thread
    LEFT JOIN icon ON ( icon.iconid = thread.iconid ) 
    ORDER BY sticky DESC , open DESC 


    Hoe hij zou moeten sorteren is:
    sticky DESC (waardes 1 bovenaan, 0 onderin)
    vervolgens op OPEN
    waardes 1 bovenin
    waardes 0 onderin.
    waardes 10 onderin of als 1 gesorteerd.
    (open=10 zijn alle verplaatste topics. Het mooiste zou zoals het nu is dat ze gewoon tussen de open=1 (normale open topics) staan, en gesorteerd op tijd.
    Eventueel zouden ze ook onderin mogen.

    Kan ik ook iets sorteren via een andere volgorde dan ASC of DESC? (dus een eigen sorteerindex bepalen)

    [ Bericht 7% gewijzigd door the_disheaver op 14-01-2006 11:29:55 ]
    SuperRembozaterdag 14 januari 2006 @ 11:28
    Zet dan backticks om `open` heen.
    the_disheaverzaterdag 14 januari 2006 @ 11:36
    quote:
    Op zaterdag 14 januari 2006 11:28 schreef SuperRembo het volgende:
    Zet dan backticks om `open` heen.
    Dank, dat geeft een logische volgorde aan.

    maar dan de vervolgvraag (zie edit) kan ik ook een eigen sorteerindex maken, anders dan ASC of DESC zodat hij sorteert
    1
    1
    0
    0
    10
    10

    Of misschien dat hij waardes met een 0 onderin zet, en waardes groter dan 0 bovenin?

    Of moet je daarvoor phpcode voor gaan toevoegen?
    Chandlerzaterdag 14 januari 2006 @ 11:54
    nee daarvoor hoef je geen phpcode toevoegen maar zou zeggen dat je sorteer index nooit een 0 is.
    SuperRembozaterdag 14 januari 2006 @ 12:10
    @the_disheaver:
    Ik dacht dat je probleem was dat de sorteervolgorde 1, 0, 10 werd. Maar het probleem is dus dat je wil dat de sorteervolgorde 1, 0, 10 wordt, maar dat je niet weet hoe je dat moet doen.
    SuperRembozaterdag 14 januari 2006 @ 12:14
    1
    2
    3
    4
    5
    6
    7
    8
    ORDER BY
       sticky DESC,
       CASE `open` 
          WHEN 1 THEN 1 
          WHEN 0 THEN 2 
          WHEN 10 THEN 3 
          ELSE 4 
       END ASC
    Chandlerzaterdag 14 januari 2006 @ 12:16
    Leuk man, dat inline scripten in mysql.. altijd handig!!
    wobbelzaterdag 14 januari 2006 @ 20:05
    met is_numeric() kan je kijken of een string numeriek is.
    Maar is er ook een variant om te kijken of er alleen letters inzitten?
    Nevermindzaterdag 14 januari 2006 @ 20:08
    Ik heb er nooit van gehoord, maar ik vond deze functie.
    Ik gebruik er altijd een simpele preg_match voor, maar ik weet niet wat sneller/beter is.
    the_disheaverzaterdag 14 januari 2006 @ 23:22
    quote:
    Op zaterdag 14 januari 2006 12:10 schreef SuperRembo het volgende:
    @the_disheaver:
    Ik dacht dat je probleem was dat de sorteervolgorde 1, 0, 10 werd. Maar het probleem is dus dat je wil dat de sorteervolgorde 1, 0, 10 wordt, maar dat je niet weet hoe je dat moet doen.
    Die eerste post klopte idd niet echt. waarschijnlijk de volgorde waar hij weer gegeven werd, en hoe ik wou dat het weer gegeven werd door elkaar gehaald. Maar het was zeker wel een niet logische volgorde.

    Dank voor je SQL, zal het ff proberen!
    the_disheaverzaterdag 14 januari 2006 @ 23:26
    quote:
    Op zaterdag 14 januari 2006 12:14 schreef SuperRembo het volgende:

    [ code verwijderd ]
    Tof, in phpmyadmin doet hij het goed. Nu nog in het php-bestand veranderen. Dank!

    edit: aangepast in het script en het werkt! Nogmaals dank
    Fatalityzondag 15 januari 2006 @ 14:05
    Ik krijg dus verschillende $_POST waarden naam, wachtwoord etc.
    maar nu staat er dit:

    1
    2
    3
    4
    5
    if ( get_magic_quotes_gpc () ) {
       foreach ( $_POST as $key => $value ) {
          $_POST [ $key ] = stripslashes ( $value );
       };
    };

    wat is hier de meerwaarde het $key invoegen?
    De array $_POST wordt toch vanzelf doorgelopen, en daar hoef ik toch niet nog de $key vooor te gebruiken?
    Roonaanzondag 15 januari 2006 @ 14:09
    foreach maakt een kopie van de array. Als je vervolgens value = stripslashes($value) alleen zou doen, zou er in $_POSt helemaal niets veranderd zijn. Daarom moet je met foreach expliciet terugschrijven naar de $_POST array.
    Fatalityzondag 15 januari 2006 @ 14:50
    ohja natuurlijk omdat je de gestipte $_POST ook buiten de foreach wilt gebruiken
    papernotezondag 15 januari 2006 @ 16:23
    Een PHP / Apache vraagje:

    Ik heb meerdere domeinnamen voor één en dezelfde site. Nu heb ik op 1 server deze site staan en de andere servers wil ik ook deze site laten tonen. Nu doe ik dat door in een frame de site te laden, maar dat is natuurlijk lelijk en men kan dan ook zien dat het een andere site betreft (in een andere taal, dat wel).

    Nu had ik het volgende bedacht, maar ik weet niet precies hoe ik het helemaal moet uitvoeren. In de .htaccess wil ik middels mod_rewrite alles paginaverzoeken op de tweede server laten doorverwijzen naar pagina.php?verzoek=*paginaverzoek*.

    Dus www.b.be/contact.php -> www.b.be/pagina.php?contact.php.

    Nu kan ik dat wel met de hand in gaan stellen voor elke pagina apart, maar dat is een beetje onhandig. Het bestand pagina.php bevat dan <?php include("www.a.nl/".$verzoek); ?>.

    Dat leek mij wel een nette oplossing. Ik werk niet meer met frames. De bezoeker ziet niet dat hij feitelijk op een andere server zit en het werkt ook wel makkelijk.

    Alleen ik weet niet hoe ik dat .htaccess bestand moet maken (de mod_rewrite code dan).
    JeRazondag 15 januari 2006 @ 16:45
    Is het niet mogelijk om met VirtualHosts te werken? Dan kun je een ServerAlias opgeven en werkt het exact hetzelfde voor zowel domein www.a.nl als voor www.b.nl
    papernotezondag 15 januari 2006 @ 16:48
    quote:
    Op zondag 15 januari 2006 16:45 schreef JeRa het volgende:
    Is het niet mogelijk om met VirtualHosts te werken? Dan kun je een ServerAlias opgeven en werkt het exact hetzelfde voor zowel domein www.a.nl als voor www.b.nl
    Daar heb ik helemaal geen verstand van
    papernotezondag 15 januari 2006 @ 17:17
    1
    2
    RewriteEngine On
    RewriteRule    ^(.*)$   /index.php?verzoek=$1


    Dit werkt, voor zover ik kan zien. Is dit ook correct en veilig?
    Fatalitymaandag 16 januari 2006 @ 00:34
    ah eindelijk mijn phpwerkjes mbv v.h pear-framework beginnen te draaien
    krozz56maandag 16 januari 2006 @ 10:42
    quote:
    Op zaterdag 14 januari 2006 20:05 schreef wobbel het volgende:
    met is_numeric() kan je kijken of een string numeriek is.
    Maar is er ook een variant om te kijken of er alleen letters inzitten?
    iidd een regular expression ding ertegen aan knallen, ctype_alpha() is idd nog beter
    Fatalitymaandag 16 januari 2006 @ 18:53
    1$datasource = $db_engine . '://' .  $db_user . ':'  $db_pass . '@' . $db_host  . '/' . $db_name;


    ik vraag me af he, wat doen die punten ( . ) telkens na en voor die variabelen?
    zorgen die ervoor dat de aanhalingstekens gescheiden blijven en zo niet aan de variabelen gaan plakken waardoor ze evt. string kunnen worden?
    rickmansmaandag 16 januari 2006 @ 19:02
    doe eens een print van datasource en je zal zien wat er gebeurt .
    the_disheavermaandag 16 januari 2006 @ 19:03
    -

    [ Bericht 100% gewijzigd door the_disheaver op 16-01-2006 19:03:19 ]
    SuperRembomaandag 16 januari 2006 @ 19:30
    String Operators
    [edit] Ai, wat ben ik traag [/edit]
    Fatalitymaandag 16 januari 2006 @ 20:01
    Huh, vroegâh gebruikte ik daar gewoon + voor
    JeRamaandag 16 januari 2006 @ 20:05
    quote:
    Op maandag 16 januari 2006 20:01 schreef Fatality het volgende:
    Huh, vroegâh gebruikte ik daar gewoon + voor
    Dat is optellen wat niet hetzelfde is als string concatten is.

    Doe dit maar eens in PHP:

    echo '5' + '3';

    En dit:

    echo '5' . '3';

    En je merkt het verschil (mede mogelijk gemaakt door loose typing)
    Swetseneggermaandag 16 januari 2006 @ 20:22
    quote:
    Op maandag 16 januari 2006 20:05 schreef JeRa het volgende:

    [..]

    Dat is optellen wat niet hetzelfde is als string concatten is.

    Doe dit maar eens in PHP:

    echo '5' + '3';

    En dit:

    echo '5' . '3';

    En je merkt het verschil (mede mogelijk gemaakt door loose typing)
    gokje, uitkomst 8 en uitkomst 53?
    JeRamaandag 16 januari 2006 @ 20:33
    quote:
    Op maandag 16 januari 2006 20:22 schreef Swetsenegger het volgende:

    [..]

    gokje, uitkomst 8 en uitkomst 53?
    Het was een vraagstuk voor Fatality ja voor gevorderde PHP'ers behoort dit basiskennis te zijn enzo
    Swetseneggermaandag 16 januari 2006 @ 20:43
    quote:
    Op maandag 16 januari 2006 20:33 schreef JeRa het volgende:

    [..]

    Het was een vraagstuk voor Fatality ja
    Ja die is het aan het inkloppen
    quote:
    voor gevorderde PHP'ers behoort dit basiskennis te zijn enzo
    Ik deed het helemaal uit het blote bolletje .
    JeRamaandag 16 januari 2006 @ 20:59
    quote:
    Op maandag 16 januari 2006 20:43 schreef Swetsenegger het volgende:

    [..]

    Ja die is het aan het inkloppen
    [..]

    Ik deed het helemaal uit het blote bolletje .
    Nee kijk, de beredenering erachter was dat Fatality die twee echo's zou overnemen en zou zeggen:

    "Omfg lollercopter, nu snap ik die hendig sjieke kankerkachels! Wellicht zou ik dit zo ook kunnen testen bij ándere operators die ik nog niet ken!"

    En zodoende was al het gepostopkrik mijner zijde niet nodig geweest
    Fatalitymaandag 16 januari 2006 @ 21:29
    quote:
    Op maandag 16 januari 2006 20:59 schreef JeRa het volgende:

    [..]

    Nee kijk, de beredenering erachter was dat Fatality die twee echo's zou overnemen en zou zeggen:

    "Omfg lollercopter, nu snap ik die hendig sjieke kankerkachels! Wellicht zou ik dit zo ook kunnen testen bij ándere operators die ik nog niet ken!"

    En zodoende was al het gepostopkrik mijner zijde niet nodig geweest
    Swetseneggermaandag 16 januari 2006 @ 21:31
    quote:
    Op maandag 16 januari 2006 20:59 schreef JeRa het volgende:

    [..]

    Nee kijk, de beredenering erachter was dat Fatality die twee echo's zou overnemen en zou zeggen:

    "Omfg lollercopter, nu snap ik die hendig sjieke kankerkachels! Wellicht zou ik dit zo ook kunnen testen bij ándere operators die ik nog niet ken!"

    En zodoende was al het gepostopkrik mijner zijde niet nodig geweest
    Mooi he dat je kan bijdrage aan de educatie van minder bedeelde php'ers .
    JeRamaandag 16 januari 2006 @ 21:36
    quote:
    Op maandag 16 januari 2006 21:31 schreef Swetsenegger het volgende:

    [..]

    Mooi he dat je kan bijdrage aan de educatie van minder bedeelde php'ers .
    Ik barst 's nachts wel eens in huilen uit, puur vanwege de pracht

    Oh. Ehm. Even een educatief momentje.

    $postopkrik++;

    Is trager dan

    ++$postopkrik;

    Maar verschillen weldegelijk in de geretourneerde waarde bij evaluatie. De eerste zal de waarde vóór de increment retourneren, terwijl de tweede de waarde ná de increment retourneert. Dit maakt de tweede variant sneller daar er geen tijdelijke variabele hoeft worden bijgehouden.

    En nu weer echt ontopic
    keepermaandag 16 januari 2006 @ 22:51
    quote:
    Op woensdag 11 januari 2006 23:26 schreef keeper het volgende:
    Ik probeer een XML bestand te parsen, wat opzich goed gaat, maar ik val over een paar dingen.

    Ik moet oa informatie hebben die tussen <description>-tags staat. Dit lukt, maar als er tussen de start en eindtag witregels worden gebruikt, pakt de parser het maar tot de witregel.

    Dus
    [ code verwijderd ]

    Levert als output alleen 'BlaBla'. Een nl2br(); lost hierbij niks op,

    Daarnaast is er ook een probleem als er een < of >-teken wordt gebruikt (bijvoorbeeld als er een link is opgenomen in de description, of een <b>-tag). De parser stopt dan ook op dit punt. De tags staan er trouwens niet hard in, maar in hun html-entity-waarde, dus &l_t en >. Dit geldt ook voor tekens als apostrof (') enzo, maar die kan ik er uitvissen met een ereg_replace:
    [ code verwijderd ]

    Doe ik dit echter bij de < en >-tekens, krijg ik deze error:
    [..]

    Die line xxx is overigens de eerste lijn in de xml-file waar zo'n <-teken staat.

    Als laatste puntje heb ik een probleem om de inhoud van een tag met een namespace-verwijzing daarin te pakken te krijgen. In dit geval de tag <lj:mood>. Ik begreep uit documentatie dat die namespace slechts ter identificatie dient en je gewoon op de tag zonder de namespace kan zoeken. Dus in dit geval <mood>. Helaas blijft mijn variabele waarin de inhoud van de tag zou moeten staan dan leeg .

    Iemand suggesties? Ik blijf zelf ook dingen proberen natuurlijk, als ik antwoorden heb post ik ze hier .

    In de voorbeelden hier heb ik die html-entities wat aangepast, want anders worden ze als teken neergezet door Replikk. In mijn echte code staan ze goed, dus zonder underscore en met punt-komma.

    De code van mijn parser.
    Niemand die hier nog geniale gedachtes over heeft? Ik zit er zelf ook een beetje vast mee. Geen idee waarop ik moet zoeken ook.
    markiemarkmaandag 16 januari 2006 @ 23:53
    over die < en die > is een functie, htmlentities() voor.
    SkaterSamdinsdag 17 januari 2006 @ 00:11
    Even een vraagje, ik heb een nieuwsbericht waarin door nl2br() de breaks er in worden gezet. Dus voor paragrafen wordt dat dus een dubbele break. Nu wil ik echter alleen de eerste paragraaf selecteren, dus het eerste deel voor de dubbele break, dus ik probeer met explode() te breken, maar in de geretourneerde code van nl2br() zitten de breaks onder elkaar

    1
    2
    3
    blablablabla hier<br />
    <br />
    blablabla etc...

    dus ik kan niet explode('<br /><br />'), iemand die een oplossing weet.

    Ik weet ook niet helemaal wat een \r (carriage return) en een \n (newline) is, dan kon ik mijn eigen functie schrijven (iets als preg_replace('\r', '<br />', $string) ofzoiets).
    JeRadinsdag 17 januari 2006 @ 00:22
    @SkaterSam

    Ik weet niet hoe bij jou de nieuwsberichten worden opgeslagen, doe je dit mét of zonder HTML?

    Zonder is het namelijk vrij simpel; dan hoef je alleen te zoeken op twee opeenvolgende "\n"-tekens (gegeven dat je de "\r" tekens gefilterd hebt of op een andere manier hebt weggelaten). Sla je de berichten zowel met HTML als met carriage returns en newlines op, dan zul je aan de slag moeten met preg_split()
    keeperdinsdag 17 januari 2006 @ 00:27
    quote:
    Op maandag 16 januari 2006 23:53 schreef markiemark het volgende:
    over die < en die > is een functie, htmlentities() voor.
    Dan krijg ik dus een XML Wellformedness error .

    Ik heb nu een ander scriptje gebrouwen, dat gewoon de inhoud van de xml inleest en dan echoot. Wat ik dan moet hebben is dus dat hij de data die tussen de tags <description> en </description> staat, inclusief html-entities en de hele whitespace rommel, naar de variabele 'description' schrijft.

    Ik heb nu een interessant uitziende tutorial gevonden op http://www.wdvl.com/Authoring/Languages/PHP/Pro/prophp5_2.html, dus die ga ik maar even (morgen) doorspitten.
    SkaterSamdinsdag 17 januari 2006 @ 00:28
    Zo'n bericht wordt ongeëdit opgeslagen, dus direct van de textarea af in MySQL, pas wanneer ze eruit worden gehaald worden ze gebroken met nl2br(). Dat betekent dus dan dat ik beter een eigen functie kan schrijven?

    1preg_replace("\n\n", "<br /><br />", $string)
    the_disheaverdinsdag 17 januari 2006 @ 00:31
    quote:
    Op dinsdag 17 januari 2006 00:11 schreef SkaterSam het volgende:
    Even een vraagje, ik heb een nieuwsbericht waarin door nl2br() de breaks er in worden gezet. Dus voor paragrafen wordt dat dus een dubbele break. Nu wil ik echter alleen de eerste paragraaf selecteren, dus het eerste deel voor de dubbele break, dus ik probeer met explode() te breken, maar in de geretourneerde code van nl2br() zitten de breaks onder elkaar
    [ code verwijderd ]

    dus ik kan niet explode('<br /><br />'), iemand die een oplossing weet.

    Ik weet ook niet helemaal wat een \r (carriage return) en een \n (newline) is, dan kon ik mijn eigen functie schrijven (iets als preg_replace('\r', '<br />', $string) ofzoiets).
    1
    2
    3
    4
    <?php
    $argument
    = "<br />\r\n<br />\r\n";
    $blaat = explode($argument, $blaat);
    ?>
    JeRadinsdag 17 januari 2006 @ 00:50
    quote:
    Op dinsdag 17 januari 2006 00:28 schreef SkaterSam het volgende:
    Zo'n bericht wordt ongeëdit opgeslagen, dus direct van de textarea af in MySQL, pas wanneer ze eruit worden gehaald worden ze gebroken met nl2br(). Dat betekent dus dan dat ik beter een eigen functie kan schrijven?
    [ code verwijderd ]
    [offtopic]
    preg_replace() behoor je voornamelijk te gebruiken als je ook daadwerkelijk een regular expression hebt. Wil je een normale string of een array van strings replacen door iets anders, dan moet je gaan voor str_replace() welke vele malen sneller is
    SkaterSamdinsdag 17 januari 2006 @ 00:56
    Dank voor de info! Nu had ik nog een vraagje, is het mogelijk wanneer je resultaten ophaalt uit MySQL met een while() loop, om het laatste resultaat te kiezen, om bijvoorbeeld net een andere layout te gebruiken.
    Roonaandinsdag 17 januari 2006 @ 08:17
    Jawel;

    je kan met $numRows = mysql_num_rows($resultVariable); het aantal regels opvragen, gegeven dat je query aanroep als $resultVariable = mysql_query() gevormd is ($resultVariable moet in beide gevallen dezelfde var zijn).

    Vervolgens kan je in je while een tellertje opnemen:
    $i = 1;
    while($row = mysql_fetch_assoc($resultVariable)) {
    $i++;
    if($i == $numRows) {
    //laatste regel
    }
    }

    -r-
    ToBedinsdag 17 januari 2006 @ 08:22
    Nog maar een vraagje, mijn vorige vraag hier heeft mij wat handige inzichten opgeleverd (ik ben trouwens toen voor de $config['bla'] en dan in functies global $config gegaan).

    Ik heb binnen mijn applicaties 2 soorten pagina's, pagina's die toonbaar zijn voor iedereen die ingelogd is en pagina's die zichtbaar zijn voor mensen die ingelogd zijn EN een bepaalde rol hebben toegewezen.

    Wat ik zou kunnen doen per pagina is:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php
    if (!isset($_SESSION['login']) && $_SESSION['login'] != 1)
    {
      echo
    'niet toegestaan dit te zien';
    }
    else
    {
      if(
    $_SESSION['role'] != "bla")
      {
        echo
    'Niet toegestaan';
      }
      else
      {
         echo
    'laat alles gewoon maar zien';
      }
    }
    ?>


    Maar is dit een handige manier? Kan dit niet slimmer, zodat ik niet overal van die accoladers moet plaatsen.

    Ik heb zitten denken aan iets met die of break, maar ik meen dat dan gelijk alles wordt afgebroken, en de hoofdpagina index.php include alle andere pagina's. De rest zou dan ook niet worden gedisplayed, naar ik meen.

    Iemand suggesties?
    Roonaandinsdag 17 januari 2006 @ 08:30
    Ja en nee.

    Als het een include file is, kan je 'return' gebruiken om uit de include file terug naar de parent file te springen:

    1
    2
    3
    4
    5
    6
    7
    <?php
    if (!isset($_SESSION['login']) && $_SESSION['login'] != 1)
    {
      echo 'niet toegestaan dit te zien';
      return;
    }
    ?>

    Vervolgens zou je nog die tweede if, in de eeste kunnen opnemen:
    1
    2
    3
    4
    5
    6
    7
    if(   !isset($_SESSION['login']) || $_SESSION['login'] != 1
        ||!isset($_SESSION['role']) || $_SESSION['role'] != "bla")
      {
        echo 'Niet toegestaan';
       return;
      }
    ?>

    Hier zou je vervolgens een functie van kunnen breien zodat het uiteindelijk iets wordt als:

    1
    2
    3
    4
    5
    <?php
    if(!userLoggedInAs("bla")) {
      return;
    }
    ?>

    De functie zelf zou je dan als volgt kunnen doen:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function userLoggedInAs($role, $displayWarning = true) {
      if(   isset($_SESSION['login']) && $_SESSION['login'] == 1
         &&!isset($_SESSION['role']) && $_SESSION['role'] == $role) {
       return true;

    if($displayWarning) {
      echo 'U heeft geen toegang';
    }
    return false;
    }
    Swetseneggerdinsdag 17 januari 2006 @ 08:31
    Je kan de eerste en tweede if toch gewoon samenvoegen?
    en checken op isset EN een waarde is volgens mij een beetje onzin. Als Session['login'] niet geset is, zal hij ook geen 1 zijn.
    ToBedinsdag 17 januari 2006 @ 08:39
    Yeps het samenvoegen had ik ook gezien, vroeg mij alleen af (wilde ik nog testen) of het sneller is om twee maal los te checken of in 1 keer beide.

    Ik ga even kijken wat ik met bovenstaande dingen kan doen. Thnx for the help!
    Lightdinsdag 17 januari 2006 @ 08:50
    quote:
    Op dinsdag 17 januari 2006 08:31 schreef Swetsenegger het volgende:
    Je kan de eerste en tweede if toch gewoon samenvoegen?
    en checken op isset EN een waarde is volgens mij een beetje onzin. Als Session['login'] niet geset is, zal hij ook geen 1 zijn.
    Het is niet strikt noodzakelijk om eerst te checken op isset, maar het is wel netter. Ik geloof dat PHP een notice geeft als je een vergelijking uitvoert met een variabele die niet geset is, en door isset te gebruiken kun je dat afvangen. Als je ooit in een andere taal wilt gaan programmeren dan is het handiger om je meteen die isset-checks aan te leren, de meeste talen zijn er niet zo makkelijk in.
    Swetseneggerdinsdag 17 januari 2006 @ 09:19
    quote:
    Op dinsdag 17 januari 2006 08:50 schreef Light het volgende:

    [..]

    Het is niet strikt noodzakelijk om eerst te checken op isset, maar het is wel netter. Ik geloof dat PHP een notice geeft als je een vergelijking uitvoert met een variabele die niet geset is, en door isset te gebruiken kun je dat afvangen. Als je ooit in een andere taal wilt gaan programmeren dan is het handiger om je meteen die isset-checks aan te leren, de meeste talen zijn er niet zo makkelijk in.
    Ik zeg niet dat hij niet moet controleren op isset, maar controleren op isset EN value is nutteloos. Met een or zoals in roonaan zijn voorbeeld is wat logischer.
    rickmansdinsdag 17 januari 2006 @ 09:34
    quote:
    Op dinsdag 17 januari 2006 09:19 schreef Swetsenegger het volgende:

    [..]

    Ik zeg niet dat hij niet moet controleren op isset, maar controleren op isset EN value is nutteloos. Met een or zoals in roonaan zijn voorbeeld is wat logischer.
    als je de notice wil voorkomen is isset niet nutteloos, alleen is het de vraag of je doel moet zijn om die notice te voorkomen .
    Swetseneggerdinsdag 17 januari 2006 @ 09:38
    quote:
    Op dinsdag 17 januari 2006 09:34 schreef rickmans het volgende:

    [..]

    als je de notice wil voorkomen is isset niet nutteloos, alleen is het de vraag of je doel moet zijn om die notice te voorkomen .
    Nee precies.
    Dus je controlleert of de sessie bestaat en zoja, controleer je of hij de waarde heeft welke je verwacht
    H4zewoensdag 18 januari 2006 @ 12:08
    Ik zit hier met een SQL boek voor me, en daar staat de scalaire functie 'CONVERT_DATE' in (converteert een datum zoals 1988-05-20 naar 20 mei 1988). Nu wil ik deze ff op m'n mysql DB uitproberen:

    1
    2
    3
    SELECT CONVERT_DATE(releasedatum) 
    FROM catalogusnummer
    WHERE releasedatum='2004-10-12' 


    Dit werkt dus niet...In dat boek stond ook dat deze functie in enkele producten CTOD heet, maar ook wanneer ik dat gebruik krijg ik een foutmelding.
    Desdinovawoensdag 18 januari 2006 @ 12:14
    is je database column wel het goede formaat? of zou dat niet uitmaken.
    H4zewoensdag 18 januari 2006 @ 12:18
    Jep, die is gewoon in 't DATE formaat. Ik kan verder ook gewoon dingen als YEAR(releasedatum) enzo doen, dus dat zit gewoon goed
    Desdinovawoensdag 18 januari 2006 @ 13:15
    quote:
    Op woensdag 18 januari 2006 12:18 schreef H4ze het volgende:
    Jep, die is gewoon in 't DATE formaat. Ik kan verder ook gewoon dingen als YEAR(releasedatum) enzo doen, dus dat zit gewoon goed
    mm okee. dan weet ik t niet. wat ik wel weet, is dat jij dus n boek hebt liggen daar
    [boeken] verschillende talen en graden

    als jij dat nou s in mijn supergoedlopendetopic plaatst
    SuperRembowoensdag 18 januari 2006 @ 13:20
    Ik kan de convert_date functie niet vinden in de MySQL manual.
    Swetseneggerwoensdag 18 januari 2006 @ 13:45
    Ik ken wel DATE_FORMAT

    1
    2
    3
    SELECT DATE_FORMAT(releasedatum,%d-%m-%Y) AS dutch_date 
    FROM catalogusnummer
    WHERE releasedatum='2004-10-12' 
    Desdinovawoensdag 18 januari 2006 @ 13:59
    $nummer = 4;
    $nummer = "4";

    het werkt allebei. welke is netter?
    Arjan321woensdag 18 januari 2006 @ 14:14
    $nummer = 4.. dan is het een integer
    $nummer = "4", dan is het een string

    Als je iets wilt teller kan je dus beter de eerste variant gebruiken
    JeRawoensdag 18 januari 2006 @ 14:38
    quote:
    Op woensdag 18 januari 2006 13:59 schreef Desdinova het volgende:
    het werkt allebei. welke is netter?
    Dit verhaal zul je in elke programmeertaal tegenkomen maar vooral ook in PHP aangezien PHP loose typing ondersteunt. Als jij met getallen wilt werken moet je integers gebruiken, wil je met strings werken dan zet je er aanhalingstekens omheen. MySQL een beetje hetzelfde verhaal, je kúnt timestamps wel opslaan in een VARCHAR(zoveel) maar het is over het algemeen (en technisch gezien) veel beter daar gewoon een UNSIGNED INT voor te gebruiken. Als je specifiek met data wilt werken kun je ook het DATE of DATETIME type voor gebruiken.

    Moraal van het verhaal: twee manieren kunnen hetzelfde opleveren maar als je de meest logische keuze neemt heb je vaak ook de efficiëntste methode en later minder problemen in andere talen.
    Swetseneggerwoensdag 18 januari 2006 @ 15:27
    Is het met php mogelijk om de resolutie van een image welke op het filesystseem staat te achterhalen?
    Met andere woorden, ik plaats een rijtje foto's waarvan de naam in de database staat, maar de fysieke foto in het filesysteem op een website. En ik wil nu een height en width meegeven.

    Aangezien die variabel is, dien ik die dus te achterhalen op het moment van plaatsing.
    JeRawoensdag 18 januari 2006 @ 15:28
    quote:
    Op woensdag 18 januari 2006 15:27 schreef Swetsenegger het volgende:
    Is het met php mogelijk om de resolutie van een image welke op het filesystseem staat te achterhalen?
    Met andere woorden, ik plaats een rijtje foto's waarvan de naam in de database staat, maar de fysieke foto in het filesysteem op een website. En ik wil nu een height en width meegeven.

    Aangezien die variabel is, dien ik die dus te achterhalen op het moment van plaatsing.
    Dat en nog veel meer is te achterhalen met deze functie alhoewel je dat soort informatie beter kunt cachen in de database (al die disk reads zijn niet geweldig voor de performance)
    Swetseneggerwoensdag 18 januari 2006 @ 15:34
    quote:
    Op woensdag 18 januari 2006 15:28 schreef JeRa het volgende:

    [..]

    Dat en nog veel meer is te achterhalen met deze functie alhoewel je dat soort informatie beter kunt cachen in de database (al die disk reads zijn niet geweldig voor de performance)
    Ja, het probleem is dat het bestaande informatie is. 'even' deze info in de db erbij opslaan zal dus niet gaan.

    Hmz....
    JeRawoensdag 18 januari 2006 @ 15:41
    quote:
    Op woensdag 18 januari 2006 15:34 schreef Swetsenegger het volgende:

    [..]

    Ja, het probleem is dat het bestaande informatie is. 'even' deze info in de db erbij opslaan zal dus niet gaan.

    Hmz....
    Twee velden in de database aanmaken en vervolgens:
    1) Een scriptje laten draaien dat van alle bestanden de afmetingen in de database opslaat
    2) Een interface schrijven die bij het opvragen van de informatie kijkt of het al in de database staat, zo niet, het dan inleest door middel van die functie en wegschrijft naar de database

    En dan natuurlijk bij nieuwe afbeeldingen de informatie vantevoren al opslaan dan kun je na een tijdje optie 2) uitfaseren (alhoewel me 1) het beste lijkt).
    Swetseneggerwoensdag 18 januari 2006 @ 16:06
    quote:
    Op woensdag 18 januari 2006 15:41 schreef JeRa het volgende:

    [..]

    Twee velden in de database aanmaken en vervolgens:
    1) Een scriptje laten draaien dat van alle bestanden de afmetingen in de database opslaat
    2) Een interface schrijven die bij het opvragen van de informatie kijkt of het al in de database staat, zo niet, het dan inleest door middel van die functie en wegschrijft naar de database

    En dan natuurlijk bij nieuwe afbeeldingen de informatie vantevoren al opslaan dan kun je na een tijdje optie 2) uitfaseren (alhoewel me 1) het beste lijkt).
    Ik heb even gekeken. Op dit moment heeft 99% van de images dezelfde resolutie. Dus die gooi ik in 1 keer in de database.
    De afbeeldingen worden uiteraard via het cms geupload en geresized. Ik kan dus heel eenvoudig dat script aanpassen zodat voor elke nieuwe upload de hoogte en breedte in de database gezet wordt.

    En die 5 foto's met een afwijkende resolutie zet ik er handmatig in.

    Probleem opgelost.
    Fatalitywoensdag 18 januari 2006 @ 17:35
    if ($row = $rst->fetchRow()) { // Bestaat de waarde al?

    Nou $row is nergens een waarde toegekend eerder in de code.
    Nu snap ik niet helemaal wat nu wordt vergeleken, een object waarin de fetchRowwaarde in is gedrukt wordt vergeleken met een lege variabel?
    JeRawoensdag 18 januari 2006 @ 17:53
    @Fatality:

    Dit is een toewijzing:

    $a = 1;

    Eigenschap van deze toewijzing is dat hij hetgeen dat toegewezen wordt retourneert. Je kunt dus dit doen:

    if (($a = 1) == 1) {
    echo '1 is toegewezen aan $a!';
    }

    En als je zoiets doet:

    if ($row = $rst->fetchRow()) {
    //blaat
    }

    Dan wordt er gewoon gekeken of er iets wordt toegewezen aan $row dat ongelijk aan nul evalueert
    H4zewoensdag 18 januari 2006 @ 19:12
    quote:
    Op woensdag 18 januari 2006 13:45 schreef Swetsenegger het volgende:
    Ik ken wel DATE_FORMAT
    [ code verwijderd ]
    Ah, die werkt wel! Thnx
    Swetseneggerwoensdag 18 januari 2006 @ 19:36
    quote:
    Op woensdag 18 januari 2006 16:06 schreef Swetsenegger het volgende:

    Ik kan dus heel eenvoudig dat script aanpassen zodat voor elke nieuwe upload de hoogte en breedte in de database gezet wordt.
    Dat is dus niet helemaal waar.

    De foto's worden geschaald in een resize functie:

    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
    function resize_photo($new_name,$new_width,$new_height,$filename){

    // Content type
    header('Content-type: image/jpeg');

    // nieuwe resolutie bepalen
    list($width_orig, $height_orig) = getimagesize($filename);
    if(empty($new_height)){
                            $new_height = round(($new_width / $width_orig) * $height_orig);

    }elseif(empty($new_width)){
             $new_width = round(($new_height / $height_orig) * $width_orig);

    }elseif ($new_width && ($width_orig < $height_orig)) {
             $new_width = ($new_height / $height_orig) * $width_orig;

    }else{
                            $new_height = ($new_width / $width_orig) * $height_orig;
    }

    // Resample
    $image_p = imagecreatetruecolor($new_width, $new_height);
    $image = imagecreatefromjpeg($filename);
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width_orig, $height_orig);

    // Output
    imagejpeg($image_p, $new_name, 80);
    Imagedestroy($image);
    }

    De nieuwe resolutie is dus een bij produkt van deze funtie.
    Maar.... nu heb ik ze dus verderop in het script nodig. Hoe krijg ik die nu uit de functie?

    $resolution=array($new_width,$new_height);
    return $resolution;

    Dit heb ik toegevoegd, maar wanneer ik in mijn script NA de functie call een print_r ($resolution); doe krijg ik in ieder geval niets terug.
    JeRawoensdag 18 januari 2006 @ 19:50
    Even samengevat:

    1
    2
    3
    4
    5
    6
    7
    8
    function blaat()
    {
        return array(1, 2);
    }

    $resultaat = blaat();

    print_r($resultaat);

    Dat is je basisopzet om een array terug te krijgen van je functie; je weet zeker dat het zo in elkaar zit?
    SuperRembowoensdag 18 januari 2006 @ 19:51
    Je doet toch wel iets als $resolution = resize_photo(...); hè? just checking
    IbeBenwoensdag 18 januari 2006 @ 20:26
    Goedenavond,

    Voor een IFK vak heb ik een persoonlijke opdracht gekregen over SQL. Nu ben ik hier niet echt een ster in dus schakel ik de hulplijn in
    Ik moet informatie uit een database halen via SQL queries.
    De bedoeling is om dit te doen via de volgende volgorde:
    SELECT:
    WHERE:
    FROM:
    SORT BY:
    GROUP BY:
    HAVING:
    Hierachter moeten dus de functies komen (als ik het goed zeg). Sub-Query's zijn toegestaan.

    Een van de vragen waar ik niet uit kom is:
    Bepaal per factuur het factuurbedrag. Toon factuurnummer, factuurdatum eb factuurbedrag. Let op!: De verkoopprijs is exclusief een korting voor de afnemer.

    Daarbij moet ik gebruik maken van de Tabellen
    Factuur(factuurnummer, afnemernummer,factuurdatum en personeelsnummer)
    Factuurregel(factuurnummer, artikelcode, verkoopaantal, verkoopprijs)
    Korting (kortinggroepnummer, kortingspercentage)
    Afnemer(afnemernummer,naam,adres,postcode,plaats,regio,kortinggroepnummer)

    Ik weet dat het een ultieme n00b-vraag is, maar hoop toch dat iemand mij kan helpen...
    SuperRembowoensdag 18 januari 2006 @ 20:41
  • Stap 1: zoek alle artikelen bij de factuur
  • Stap 2: bepaal het totaalbedrag (zonder korting)
  • Stap 3: zoek het kortingspercentage bij de factuur
  • Stap 4: bepaal het factuurbedrag
  • IbeBenwoensdag 18 januari 2006 @ 20:44
    quote:
    Op woensdag 18 januari 2006 20:41 schreef SuperRembo het volgende:
  • Stap 1: zoek alle artikelen bij de factuur
  • Stap 2: bepaal het totaalbedrag (zonder korting)
  • Stap 3: zoek het kortingspercentage bij de factuur
  • Stap 4: bepaal het factuurbedrag
  • Tot die beredenatie kwam ik ook nog Nu alleen nog uitvoeren, das een beetje het probleem zeg maar...
    SuperRembowoensdag 18 januari 2006 @ 20:48
    Probeer eens wat. Stap 1 moet wel lukken lijkt me.
    Swetseneggerwoensdag 18 januari 2006 @ 21:01
    quote:
    Op woensdag 18 januari 2006 19:50 schreef JeRa het volgende:
    Even samengevat:
    [ code verwijderd ]

    Dat is je basisopzet om een array terug te krijgen van je functie; je weet zeker dat het zo in elkaar zit?
    quote:
    Op woensdag 18 januari 2006 19:51 schreef SuperRembo het volgende:
    Je doet toch wel iets als $resolution = resize_photo(...); hè? just checking
    Nee dus heren, tenslotte is $resolution een bijprodukt van resize();

    Momenteel roep ik 'm zo aan

    1
    2
    3
    $new_width=175;
    $new_height=75;
    resize_photo($new_name,$new_width,$new_height,$filename);


    Maar daar kan ik dus zonder problemen

    1$resolution=resize_photo($new_name,$new_width,$new_height,$filename);

    van maken?

    -edit- ja dus
    JeRawoensdag 18 januari 2006 @ 21:12
    quote:
    Op woensdag 18 januari 2006 21:01 schreef Swetsenegger het volgende:
    Nee dus heren, tenslotte is $resolution een bijprodukt van resize();
    Nee hoor, $resolution is helemaal geen bijproduct van resize() de variabele zelf gaat out of scope nadat de functie klaar is en het resultaat wordt klaarblijkelijk gewoon weggegooid en raak je dus ook kwijt
    Swetseneggerwoensdag 18 januari 2006 @ 22:23
    quote:
    Op woensdag 18 januari 2006 21:12 schreef JeRa het volgende:

    [..]

    Nee hoor, $resolution is helemaal geen bijproduct van resize() de variabele zelf gaat out of scope nadat de functie klaar is en het resultaat wordt klaarblijkelijk gewoon weggegooid en raak je dus ook kwijt
    Je begrijpt niet wat ik bedoel.
    De functie resize is nooit bedoeld om de uiteindelijke resolutie terug te geven. Tot vandaag interesseerde die me niet.
    Dus die werd inderdaad alleen in de functie gebruikt om de image te resizen naar de juiste maat, en was nergens in de global scope nodig en dus weggegooid.

    Dus in die zin was de resolutie welke in resize() wordt gebruikt een bijprodukt van de functie
    Fatalitydonderdag 19 januari 2006 @ 00:06
    quote:
    Op woensdag 18 januari 2006 17:53 schreef JeRa het volgende:
    @Fatality:

    Dit is een toewijzing:

    $a = 1;

    Eigenschap van deze toewijzing is dat hij hetgeen dat toegewezen wordt retourneert. Je kunt dus dit doen:

    if (($a = 1) == 1) {
    echo '1 is toegewezen aan $a!';
    }

    En als je zoiets doet:

    if ($row = $rst->fetchRow()) {
    //blaat
    }

    Dan wordt er gewoon gekeken of er iets wordt toegewezen aan $row dat ongelijk aan nul evalueert
    verdomd ik moet die operators eens allemaal uitmekaar halen.
    Gh0stbust3rdonderdag 19 januari 2006 @ 10:55
    Hallo,

    ik moet voor school een website maken met php. Ik heb geen kennis van php, weet iemand een site of iets dergelijks waarmee ik wel een begin kan maken aan de website... Heb echt 0.0 verstand ervan
    wobbeldonderdag 19 januari 2006 @ 14:37
    Ik zit met een vaag dillema.

    Ik heb een webshop die multishop is, dat wil zeggen dat op 1 domeinnaam 3 virtuele shops lopen d.m.v. een sessie. Tabel Shops heeft dus 3 records (1,2 en 3 met resp. LCD, MP3 en GSM shop)

    Nu heb ik ook een tabel met alle producten erin. Deze producten kan je koppelen aan 1 shop, 2 shops maar ook alle 3 de virtuele shops.
    Dit gebeurd met een speciale tabel genaamd ProductLinkShops. Hierin staat voor elk product een record om hem te koppelen aan een shop.

    Voorbeeld van ProductLinkShops.
    1 | 64 | 3
    2 | 64 | 2
    3 | 24 | 1
    4 | 122 | 1
    5 | 33 | 3

    1 t/m 5 is gewoon het id van dat record, 64, 24 122 en 33 zijn ProductId's en die 3, 2, 1, 1 en 3 zijn de betreffende shops waarin ze moeten voorkomen. Het systeem werkt prima

    Maar nu moet ik een search maken

    Je moet kunnen zoeken in de titel van het product. Maar hij mag alleen de producten weergeven als ze ook voor de huidige shop bedoeld zijn.
    Als ik in shop 3 zoek, mag ik dus alleen product 33 en product 64 in beeld krijgen (als de trefwoorden kloppen)

    Hoe de neuk flik ik dat?

    Ik heb nu dit, maar dit geeft ALTIJD 0 resultaten weer

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    $rSearchQuery                                                
    = mysql_query ( "SELECT
                                                                    Producten.ProductNaam,
                                                                    Producten.KorteOmschrijving,
                                                                    Producten.LangeOmschrijving,
                                                                    ProductenLinkShop.pls_productId,
                                                                    ProductenLinkShop.pls_shopId
                                                                    FROM Producten
                                                                    INNER JOIN ProductenLinkShop
                                                                    ON ( ProductenLinkShop.pls_productId = Producten.IdProduct )
                                                                    WHERE ProductenLinkShop.pls_shopId = '"
    . $_SESSION['CCShop'] . "'
                                                                    AND Producten.ProductNaam = '%"
    . $sSearchTerm . "%'" ) or die ( mysql_error (  ) );
    ?>
    dossiedonderdag 19 januari 2006 @ 15:02
    Ik wou even kijken hoe een random password maken in zijn werk gaat.

    Nu kwam ik de volgende voorbeeldcode tegen op php.net, een reactie bij de functie mt_rand.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    php
      $acceptedChars
    = 'azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN0123456789';
      
    $max = strlen($acceptedChars)-1;
      
    $password = null;
      for(
    $i=0; $i &lt; 8; $i++) {
       
    $password .= $acceptedChars{mt_rand(0, $max)};
      }
      echo
    $password;
    ?>


    Ik snap de accolades achter de variabele $acceptedChars niet! Ik heb de code getest, en hij werkt gewoon zoals het hoort. Maar ik dacht dat je die accolades alleen gebruikt voor een functie of een lus ofzo, en hier wordt het gewoon achter de variabale gezet.

    Kan iemand mij dit uitleggen?
    JeRadonderdag 19 januari 2006 @ 15:06
    @dossie:

    Met accolades achter een variabele die een string is, kun je een teken op een bepaalde positie opvragen.

    Voorbeeldje:
    1
    2
    3
    4
    5
    6
    7
    8
    <?php

    $string = 'abcdef';

    echo $string{2};
    echo $string[2];

    ?>

    Zoals je ziet werken de rechte brackets ook, alleen wordt het ten zeerste aangeraden de accolades te gebruiken
    JeRadonderdag 19 januari 2006 @ 15:09
    quote:
    Op donderdag 19 januari 2006 14:37 schreef wobbel het volgende:
    Ik zit met een vaag dillema.

    Ik heb een webshop die multishop is, dat wil zeggen dat op 1 domeinnaam 3 virtuele shops lopen d.m.v. een sessie. Tabel Shops heeft dus 3 records (1,2 en 3 met resp. LCD, MP3 en GSM shop)

    -snip-
    Ik heb nog niet uitgebreid naar je probleem gekeken, maar ik weet je al wel te vertellen dat je een LIKE moet gebruiken als je wilt zoeken d.m.v. '%string%'
    JeRadonderdag 19 januari 2006 @ 15:10
    quote:
    Op donderdag 19 januari 2006 10:55 schreef Gh0stbust3r het volgende:
    Hallo,

    ik moet voor school een website maken met php. Ik heb geen kennis van php, weet iemand een site of iets dergelijks waarmee ik wel een begin kan maken aan de website... Heb echt 0.0 verstand ervan
    Google is your friend als je al verstand hebt van andere talen is de beste plek om te beginnen wellicht de site van PHP zelf; check de documentatie.
    dossiedonderdag 19 januari 2006 @ 15:14
    quote:
    Op donderdag 19 januari 2006 15:06 schreef JeRa het volgende:
    @dossie:

    Met accolades achter een variabele die een string is, kun je een teken op een bepaalde positie opvragen.

    Voorbeeldje:
    [ code verwijderd ]

    Zoals je ziet werken de rechte brackets ook, alleen wordt het ten zeerste aangeraden de accolades te gebruiken
    Ah, dat verklaart weer een boel

    Enig idee welk gedeelte van php.net ik had moeten doorwerken om dit te weten? Misschien staan daar nog meer basics die ik helemaal niet ken. iig bedankt
    Swetseneggerdonderdag 19 januari 2006 @ 15:28
    quote:
    Op donderdag 19 januari 2006 14:37 schreef wobbel het volgende:
    Ik zit met een vaag dillema.

    Ik heb een webshop die multishop is, dat wil zeggen dat op 1 domeinnaam 3 virtuele shops lopen d.m.v. een sessie. Tabel Shops heeft dus 3 records (1,2 en 3 met resp. LCD, MP3 en GSM shop)

    Nu heb ik ook een tabel met alle producten erin. Deze producten kan je koppelen aan 1 shop, 2 shops maar ook alle 3 de virtuele shops.
    Dit gebeurd met een speciale tabel genaamd ProductLinkShops. Hierin staat voor elk product een record om hem te koppelen aan een shop.

    Voorbeeld van ProductLinkShops.
    1 | 64 | 3
    2 | 64 | 2
    3 | 24 | 1
    4 | 122 | 1
    5 | 33 | 3

    1 t/m 5 is gewoon het id van dat record, 64, 24 122 en 33 zijn ProductId's en die 3, 2, 1, 1 en 3 zijn de betreffende shops waarin ze moeten voorkomen. Het systeem werkt prima

    Maar nu moet ik een search maken

    Je moet kunnen zoeken in de titel van het product. Maar hij mag alleen de producten weergeven als ze ook voor de huidige shop bedoeld zijn.
    Als ik in shop 3 zoek, mag ik dus alleen product 33 en product 64 in beeld krijgen (als de trefwoorden kloppen)

    Hoe de neuk flik ik dat?

    Ik heb nu dit, maar dit geeft ALTIJD 0 resultaten weer
    [ code verwijderd ]
    LEFT ipv INNER join?
    Swetseneggerdonderdag 19 januari 2006 @ 15:30
    quote:
    Op donderdag 19 januari 2006 15:14 schreef dossie het volgende:

    [..]

    Ah, dat verklaart weer een boel

    Enig idee welk gedeelte van php.net ik had moeten doorwerken om dit te weten? Misschien staan daar nog meer basics die ik helemaal niet ken. iig bedankt
    http://www.php.net/manual/en/
    Desdinovadonderdag 19 januari 2006 @ 16:08
    waarom werkt dit niet:

    1
    2
    3
    4
    5
    6
    7
    <?php
    $date
    = substr($row-&gt;Date,9,10);
    $date.= " - ";
    $date.= substr($row-&gt;Date,6,7);
    $date.= " - ";
    $date.= substr($row-&gt;Date,0,4);
    ?>


    ik wil dus gewoon de tekentjes in een andere volgorde weergeven, maar hij geeft veel meer tekentjes weer dan ik specificeer (en dat rijmt )
    JeRadonderdag 19 januari 2006 @ 16:14
    @Desdinova

    Al eens naar deze pagina gekeken?
    SuperRembodonderdag 19 januari 2006 @ 16:25
    quote:
    Op donderdag 19 januari 2006 15:30 schreef Swetsenegger het volgende:

    [..]

    http://www.php.net/manual/en/
    Een beetje flauw om alleen een link naar de manual ToC te geven.

    String access and modification by character
    dossiedonderdag 19 januari 2006 @ 16:28
    quote:
    Op donderdag 19 januari 2006 16:25 schreef SuperRembo het volgende:

    [..]

    Een beetje flauw om alleen een link naar de manual ToC te geven.

    String access and modification by character

    Bedankt dat bedoelde ik. Maar ik snap schwarzeneggert ook wel, moet ik maar beter zoeken. Maar bedankt!
    Desdinovadonderdag 19 januari 2006 @ 16:43
    quote:
    Op donderdag 19 januari 2006 16:14 schreef JeRa het volgende:
    @Desdinova

    Al eens naar deze pagina gekeken?
    oooo fuck joh werkt dat zo.
    ik ging van teveel uit
    Swetseneggerdonderdag 19 januari 2006 @ 16:44
    quote:
    Op donderdag 19 januari 2006 16:25 schreef SuperRembo het volgende:

    [..]

    Een beetje flauw om alleen een link naar de manual ToC te geven.

    String access and modification by character
    Ik kon hem niet zo snel vinden.
    Aangezien hij het over php.net had, heb ik hem maar wel even specifiek naar de manual verwezen. de rest is een kwestie van zoeken.
    SkaterSamvrijdag 20 januari 2006 @ 02:07
    Ok ik heb een probleem, of niet (je weet het nooit)...

    Ik probeer een admin systeem te maken, met een login. Dit systeem maakt gebruik van sessions. Je gaat dus naar de index.php, vult je wachtwoord en je usernaam in en dan ga je naar login.php waar je oa dit vindt:

    1$login->doLogin($_POST['username'], $_POST['password']);

    Met bijbehorende code uit de login class (login_class.php):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    function doLogin($user, $pass) {
                    
          $this->checkLoginInput($user, "username");
          $this->checkLoginInput($pass, "wachtwoord");
          
          if ($this->num_error > 0) {
          
             $this->logged_in = false;
             
          } else {   
          
             $db = new Db_functies('user','ww','db');
             $this->bevestigPass($user, $pass, $db); 
             
             if ($this->num_error > 0) {   
                   
                $this->logged_in = false;
                $db->closedb();   
                         
             } else {   
                   
                $this->username = $_SESSION['username'] = $user;
                $this->random_id = $_SESSION['random_id'] = $this->makeFingerprint();
                $_SESSION['time'] = time();
                
                $db->query("UPDATE red_user SET red_random_id = '" . $this->random_id . "' WHERE red_usernaam ='" . $this->username . "'");
                
                session_regenerate_id();
                $this->logged_in = true;
                $db->closedb();                  
             }
          }   
       }

    So far, so good. Dit gebeurt allemaal correct, de Sessions worden ook weggeschreven, want je wordt verwezen naar home.php, waar de Sessions voor je worden uitgelezen (bijv. "Hallo" . $_SESSION['username']). Dit zie je ook op het scherm staan. Dan wil ik naar een andere pagina, maar ik wil eerst controleren of mijn sessie valide is, dus bovenaan de pagina staat:

    1
    2
    require_once('inc/session_class.php');
    $controle = new SessionCheck(60);

    Met de volgende code in session_class.php:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    function SessionCheck($duur) {
          if (isset($_SESSION['username']) && isset($_SESSION['random_id']) && isset($_SESSION['time'])) {
             
             $tijd = $_SESSION['time'];
             $user = $_SESSION['username'];
             
             if ($this->checkSessionTime($tijd, $duur) == false) {
                echo "tijd doet het niet<br />";
             }
             
             if ($this->checkFingerprint($user) == false) {
                echo "username doet het niet<br />";
             }
             
             $_SESSION['time'] = time();
             $this->logged_in = true;
          
          } else {      
          
             echo "iets is niet gezet<br />";
             
          }
       }

    Wat gebeurt er dus nu, hij geeeft keer op keer de boodschappen:

    tijd doet het niet
    username doet het niet

    Om aan te geven dat ze false zijn, de volgende twee functies:

    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
    //Controleer de unieke fingerprint van de gebruiker
       function checkFingerprint($user) {
          $temp = "BLIK_REDACTIE" . $_SERVER['HTTP_USER_AGENT'];
          $id = md5($temp);
       
          $db = new Db_functies('user','ww','db');
          $db->query("SELECT red_random_id FROM red_user WHERE red_usernaam = '" . $user . "'");
          $result = mysql_fetch_row($db->resultaten);
          echo $result[0] . "<br />";
          
          if(mysql_num_rows($db->resultaten) < 1) {
             return false;
          } 
             
          if ($id != $result[0]) {
             return false;
          }
          
          
       }

       //Controleer of de sessie is verlopen
       function checkSessionTime($tijd, $duur) {
          if ((time() - $tijd) > $duur) {
             return false;
          }
       }

    Ik heb al de resultaten al een ge-echoed, en ze kloppen gewoon, dus ik snap niet wat er fout is, het enige wat ik kon bedenken, was dat de equal operators een enkele '=' moest zijn (in SessionCheck), maar toen kreeg ik een parse error...
    SuperRembovrijdag 20 januari 2006 @ 04:39
    Wanneer geeft checkSessionTime() true terug?
    JeRavrijdag 20 januari 2006 @ 06:16
    quote:
    Op vrijdag 20 januari 2006 04:39 schreef SuperRembo het volgende:
    Wanneer geeft checkSessionTime() true terug?
    Wat hij zegt, maar dan ook voor de checkFingerprint()-functie
    9christensenvrijdag 20 januari 2006 @ 11:07
    MySql vraagje

    Ik heb een kolom met IP adressen.
    Nu moet ik een top 10 selecteren welke ip's het meest voorkomen.

    Hoe krijg ik dit voor elkaar?
    JeRavrijdag 20 januari 2006 @ 11:24
    quote:
    Op vrijdag 20 januari 2006 11:07 schreef 9christensen het volgende:
    MySql vraagje

    Ik heb een kolom met IP adressen.
    Nu moet ik een top 10 selecteren welke ip's het meest voorkomen.

    Hoe krijg ik dit voor elkaar?
    Door middel van een GROUP BY

    SELECT COUNT(id) AS aantal, ip FROM ip_adressen GROUP BY ip ORDER BY aantal DESC LIMIT 0, 10

    Met een GROUP BY 'groepeer' je in feite de resultaten op een bepaalde kolom. COUNT() is een typische functie die als GROUP-functie kan worden gebruikt en telt het aantal keer dat een rij binnen een groep voorkomt.
    9christensenvrijdag 20 januari 2006 @ 11:46
    en werkt dit ook in access? ik krijg nu een foutmelding:

    "syntax error in ORDER BY clause"
    SuperRembovrijdag 20 januari 2006 @ 11:57
    In MSAccess kan je 'aantal' niet in de ORDER BY gebruiken. Je kunt wel 'ORDER BY COUNT(id)' gebruike.
    JeRavrijdag 20 januari 2006 @ 11:58
    quote:
    Op vrijdag 20 januari 2006 11:46 schreef 9christensen het volgende:
    en werkt dit ook in access?
    quote:
    Op vrijdag 20 januari 2006 11:07 schreef 9christensen het volgende:
    MySql vraagje
    Je weet dat MySQL en Access beiden SQL ondersteunen maar twee verschillende programma's zijn?
    9christensenvrijdag 20 januari 2006 @ 12:06
    Ik heb nu dit

    SELECT COUNT([id]) AS aantal, [SrcIP]
    FROM Notificaction
    GROUP BY [SrcIP]

    nu laat hij alles zien. ik wil slechts 10 ID's laten zien die het meest voorkomen.
    JeRavrijdag 20 januari 2006 @ 12:13
    quote:
    Op vrijdag 20 januari 2006 12:06 schreef 9christensen het volgende:
    Ik heb nu dit

    SELECT COUNT([id]) AS aantal, [SrcIP]
    FROM Notificaction
    GROUP BY [SrcIP]

    nu laat hij alles zien. ik wil slechts 10 ID's laten zien die het meest voorkomen.
    Met de ORDER BY hint van SuperRembo en de LIMIT van mijn oorspronkelijke query moet je een heel eind komen lijkt me.
    CrashOnevrijdag 20 januari 2006 @ 12:15
    Ik word niet echt veel wijzer van het gebruik van foreign en primary keys en relaties met InnoDb tables.

    Hoe alter ik een table en geef ik deze relaties (met cascading deletes etc), ik word niet echt veel wijzer van de manual.

    Kan iemand die misschien duidelijk uitleggen?
    9christensenvrijdag 20 januari 2006 @ 12:19
    SELECT COUNT([id]) AS aantal, [SrcIP]
    FROM Notificaction
    GROUP BY [SrcIP]
    ORDER BY COUNT([id]) DESC;

    zo heb ik 'm.

    nu wil ik slechts de top 10 laten zien

    SELECT COUNT([id]) AS aantal, [SrcIP]
    FROM Notificaction
    GROUP BY [SrcIP]
    ORDER BY COUNT([id]) DESC LIMIT 0, 10

    en dan krijg ik weer een foutmelding
    CrashOnevrijdag 20 januari 2006 @ 12:19
    quote:
    Op vrijdag 20 januari 2006 11:58 schreef JeRa het volgende:

    [..]


    [..]

    Je weet dat MySQL en Access beiden SQL ondersteunen maar twee verschillende programma's zijn?
    Limit werkt niet in access/mssql, dit is ook geen standaard. Hiervoor gebruik je TOP icm met recordset paging.
    CrashOnevrijdag 20 januari 2006 @ 12:20
    quote:
    Op vrijdag 20 januari 2006 12:19 schreef 9christensen het volgende:
    SELECT COUNT([id]) AS aantal, [SrcIP]
    FROM Notificaction
    GROUP BY [SrcIP]
    ORDER BY COUNT([id]) DESC;

    zo heb ik 'm.

    nu wil ik slechts de top 10 laten zien

    SELECT COUNT([id]) AS aantal, [SrcIP]
    FROM Notificaction
    GROUP BY [SrcIP]
    ORDER BY COUNT([id]) DESC LIMIT 0, 10

    en dan krijg ik weer een foutmelding
    Gebruik eens TOP, zoiets.:
    SELECT TOP 10, COUNT([id]) AS aantal, [SrcIP]
    FROM Notificaction
    GROUP BY [SrcIP]
    ORDER BY COUNT([id]) DESC
    ikke_ookvrijdag 20 januari 2006 @ 12:21
    Is het nou mysql of niet? zoja, wat doen die blokhaken dan om je kolomnamen
    Vipersvrijdag 20 januari 2006 @ 12:27
    quote:
    Op vrijdag 20 januari 2006 12:21 schreef ikke_ook het volgende:
    Is het nou mysql of niet? zoja, wat doen die blokhaken dan om je kolomnamen
    Inderdaad snap er de ballen meer van. Is het nou Mysql
    CrashOnevrijdag 20 januari 2006 @ 12:30
    Hij vraagt of de syntax ook werkt in access en zegt daarna dat hij een foutmelding krijgt, dus ik ga er vanuit dat bij access gebruikt.
    9christensenvrijdag 20 januari 2006 @ 13:27
    Ja access. Die blokhaken doet access er vanzelf in. Maar hij werkt nu

    Nog een vraagje

    Ik heb zo'n 1400 records met ip's en datum en tijd van inloggen. Nu moet ik ook uitzoeken hoe vaak een ip inlogt tussen bijv. 4 en 10 uur. Dus zou ik een formulier moeten maken en dat je het daar in kan typen. Maar hoe krijg ik die ip's dan als resultaat
    CrashOnevrijdag 20 januari 2006 @ 14:01
    SELECT * FROM log_table WHERE date_time between to_date ('2005/12/31', 'yyyy/mm/dd')
    AND to_date ('2006/01/20', 'yyyy/mm/dd');

    Iemand nog wat uitleg voor mijn vraag?
    Twisted_Logicvrijdag 20 januari 2006 @ 14:36
    Ik zit met het volgende, ik heb een forum draaien maar ik wil graag dat de crew topics niet in de AT voorkomen. Dit is de code die ik heb, en waar volgens mij de fout in zit:

    1
    2
    3
    4
    5
    6
    7
    <?php
    $sql
    = "SELECT id
            FROM "
    .$db['prefix']."subs
            WHERE perm_view = 2
            OR perm_view = 3
            OR perm_view = 9"
    ;
    ?>


  • perm_vieuw 2 is in de MySQL een mod van niv 2.
  • perm_vieuw 3 is in de MySQL een crew van niv 3.
  • perm_vieuw 9 is in de MySQL een admin van niv 9.

    Als hier geen fout in zet moet ik iets meer van de code geven .

    Bedankt alvast.
  • Swetseneggervrijdag 20 januari 2006 @ 14:40
    quote:
    Op vrijdag 20 januari 2006 14:36 schreef Twisted_Logic het volgende:
    Ik zit met het volgende, ik heb een forum draaien maar ik wil graag dat de crew topics niet in de AT voorkomen. Dit is de code die ik heb, en waar volgens mij de fout in zit:
    [ code verwijderd ]

  • perm_vieuw 2 is in de MySQL een mod van niv 2.
  • perm_vieuw 3 is in de MySQL een crew van niv 3.
  • perm_vieuw 9 is in de MySQL een admin van niv 9.

    Als hier geen fout in zet moet ik iets meer van de code geven .

    Bedankt alvast.
  • Hiermee selecteer je elke ID uit de database welke een permview heeft van 2,3 of 9.
    Kortom, alle crew topics en geen enkel user topic.
    Twisted_Logicvrijdag 20 januari 2006 @ 14:44
    quote:
    Op vrijdag 20 januari 2006 14:40 schreef Swetsenegger het volgende:

    [..]

    Hiermee selecteer je elke ID uit de database welke een permview heeft van 2,3 of 9.
    Kortom, alle crew topics en geen enkel user topic.
    Ja maar die topics moeten niet voor komen in de Active Topics, alleen maar de user topics. Ik zit te denken wat er nu fout gaat want volgens mij is de activetopics.php bij mij goed .
    Swetseneggervrijdag 20 januari 2006 @ 14:48
    quote:
    Op vrijdag 20 januari 2006 14:44 schreef Twisted_Logic het volgende:

    [..]

    Ja maar die topics moeten niet voor komen in de Active Topics, alleen maar de user topics. Ik zit te denken wat er nu fout gaat want volgens mij is de activetopics.php bij mij goed .
    1
    2
    3
    4
    5
    6
    $sql = "SELECT id
            FROM ".$db['prefix']."subs
            WHERE perm_view != 2
            OR perm_view != 3
            OR perm_view != 9";
    ?>


    Of bij de WHERE zet je de perm_view value neer welke overeenkomt met een normale gebruiker

    1
    2
    3
    4
    $sql = "SELECT id
            FROM ".$db['prefix']."subs
            WHERE perm_view=1";
    ?>
    Twisted_Logicvrijdag 20 januari 2006 @ 14:53
    quote:
    Op vrijdag 20 januari 2006 14:48 schreef Swetsenegger het volgende:

    [..]
    [ code verwijderd ]

    Of bij de WHERE zet je de perm_view value neer welke overeenkomt met een normale gebruiker
    [ code verwijderd ]
    Het werkt nog niet, maar volgens mij ligt het daar niet aan. Ik neem even een bak koffie en ga het dan nog maar is even allemaal langs lopen.

    Bedankt iig!
    SuperRembovrijdag 20 januari 2006 @ 16:53
    quote:
    Op vrijdag 20 januari 2006 14:48 schreef Swetsenegger het volgende:

    [..]
    [ code verwijderd ]
    Dat is niet de tegenhanger van de originele query. Deze query geeft alle topics terug (een id is alijd ongelijk aan 2 of ongelijk aan 3).
    Ik zou er WHERE perm_view NOT IN (2, 3, 9) van maken.
    Swetseneggervrijdag 20 januari 2006 @ 19:29
    quote:
    Op vrijdag 20 januari 2006 16:53 schreef SuperRembo het volgende:
    een id is alijd ongelijk aan 2 of ongelijk aan 3


    Hij is inderdaad ernstig stupide. Met AND had hij wel geklopt trouwens
    ikke_ookzaterdag 21 januari 2006 @ 23:00
    Is dit slecht programmeerwerk?:
    1${checked.$a}

    De bedoeling is dat ik variabelen krijg die er zoiets uitzien:
    1
    2
    3
    $checked1
    $checked2
    ....

    Een array is veel mooier vind ik, maar dat werkt niet want ik wil de variabelen graag gebruiken in een
    1
    2
    3
    $code = <<< EOCODE

    EOCODE;

    constructie gebruiken, en daar kan ik gewone variabelen wel gewoon inzetten, maar variabelen uit een array niet.

    Zijn er andere/betere opties, of is mijn oplossing prima?
    SuperRembozondag 22 januari 2006 @ 01:12
    Variabelen worden in een heredoc string op dezelfde manier geparst als in een double quoted string. Ik zie het probleem niet.
    ikke_ookzondag 22 januari 2006 @ 18:46
    quote:
    Op zondag 22 januari 2006 01:12 schreef SuperRembo het volgende:
    Variabelen worden in een heredoc string op dezelfde manier geparst als in een double quoted string. Ik zie het probleem niet.
    als ik er $array['test1'] inzet werkt het niet, met accolades eromheen werkt wel... Dus tis opgelost.
    SuperRembozondag 22 januari 2006 @ 19:05
    Als je een array in een string gebruikt, dan moet je juist geen '' om de key zetten

    1
    2
    3
    4
    5
    $array['key'] = 'value';
    echo "$array['key']";// geeft parse error
    echo "$array[key]";// goed
    echo "{$array[key]}";// geeft notice (undefinded constant key)
    echo "{$array['key']}";// goed
    ikke_ookzondag 22 januari 2006 @ 21:14
    Aha dat wist ik niet, als ik een array in een string gebruik haal ik hem er altijd buiten met ".$array['key']."
    bedankt iig
    ikke_ookzondag 22 januari 2006 @ 21:49
    Ik heb een tabel met landen erin met allemaal een uniek ID.
    Nu wil ik een lijstje maken met alle landen maar het land met ID 8 moet bovenaan in het lijstje staan, de rest van het lijstje moet op alfabetische volgorde zijn. Kan ik dit voor elkaar krijgen met 1 query?
    freisszondag 22 januari 2006 @ 21:56
    quote:
    Op zondag 22 januari 2006 21:49 schreef ikke_ook het volgende:
    Ik heb een tabel met landen erin met allemaal een uniek ID.
    Nu wil ik een lijstje maken met alle landen maar het land met ID 8 moet bovenaan in het lijstje staan, de rest van het lijstje moet op alfabetische volgorde zijn. Kan ik dit voor elkaar krijgen met 1 query?
    De enige oplossing die ik kan bedenken is om gewoon alles te selecteren en dan mbv PHP eerst diegene met id 8 weergeven, om daarna met een loop de andere te verwerken
    JeRazondag 22 januari 2006 @ 22:46
    Als je kunt sorteren op condities (geen idee of dat kan ) dan zou je zoiets kunnen overwegen:

    ORDER BY (`id` = 8) DESC, `name` ASC
    Lightzondag 22 januari 2006 @ 22:54
    quote:
    Op zondag 22 januari 2006 22:46 schreef JeRa het volgende:
    Als je kunt sorteren op condities (geen idee of dat kan ) dan zou je zoiets kunnen overwegen:

    ORDER BY (`id` = 8) DESC, `name` ASC
    Dat werkt nog ook
    En ja, ik heb het getest
    Swetseneggerzondag 22 januari 2006 @ 22:59
    quote:
    Op zondag 22 januari 2006 22:54 schreef Light het volgende:

    [..]

    Dat werkt nog ook
    En ja, ik heb het getest
    Dat is wel stoer.
    Deze moet ik even goed onthouden.
    ikke_ookzondag 22 januari 2006 @ 23:29
    Bedankt, maar ik heb een andere constructie bedacht waardoor die hele query vervalt
    ikke_ookzondag 22 januari 2006 @ 23:33
    Ik heb nog een vraagje over JOIN.
    Ik heb 3 tabellen.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    information
       infoID
       userID
       info
       locationID

    users
       userID
       username
       
    locations
       locationID
       location

    Nu wil ik van een bepaald infoID alle velden hebben, ingevuld uit de andere tabellen.
    Dus met 2x een join.
    Maar welke join (left,right,inner,outer) moet ik hiervoor gebruiken?en hoe komt de query eruit te zien?


    -edit-

    Is het verschil tussen left en right alleen dat LEFT NULL teruggeeft als het userID niet gevonden kan worden in de usertable, en dat RIGHT alleen een veld teruggeeft als er een user kan worden gevonden bij een bepaald userID?

    Of kan ik hier andere fouten in maken dat ik straks 3 tabellen compleet opvraag terwijl ik maar 1 record wil hebben?

    [ Bericht 17% gewijzigd door ikke_ook op 22-01-2006 23:41:21 ]
    Swetseneggerzondag 22 januari 2006 @ 23:39
    1
    2
    3
    4
    5
    6
    7
    8
      $query="SELECT
            i.info,
            u.name,
            l.location,
            FROM information i
            INNER JOIN users u ON i.userID= u.userID
            INNER JOIN locations l ON i.locationID = l.locationID 
            WHERE i.infoID=".$_GET['id']
    ikke_ookzondag 22 januari 2006 @ 23:43
    Ja die INNER join geeft hetzelfde resultaat als een RIGHT join maar is dit de beste query?
    Swetseneggerzondag 22 januari 2006 @ 23:46
    quote:
    Op zondag 22 januari 2006 23:43 schreef ikke_ook het volgende:
    Ja die INNER join geeft hetzelfde resultaat als een RIGHT join maar is dit de beste query?
    Een inner join pakt volgens mij alleen de data ALS er een relatie is. left en right joins pakken altijd de overeenkomstige velden of iets dergelijks... dacht ik

    Bovenstaande is een verbouwing van een query welke ik van superrembo kreeg aangerijkt bij een soortgelijk probleem. SQL is sowieso niet mijn sterkste punt en joins en dergelijke moet ik me nog eens goed in verdiepen
    SuperRembomaandag 23 januari 2006 @ 00:04
    1
    2
    3
    4
     $query="SELECT *
            FROM information i
            INNER JOIN users u ON i.userID = u.userID
            WHERE i.infoID = ".$_GET['id']

    Nu krijg je alleen regels terug waarbij beide regels in information en user bestaan waarvoor i.userID = u.userID.
    Als je er een LEFT OUTER JOIN van maakt, dan krijg je ook regels van information terug waarbij geen bijbehorende regel in users bestaat. Dus als i.userID = NULL of als i.userID niet bestaat. Dit maakt dus alleen verschil als i.userID NULL mag zijn.
    Als je er een RIGHT OUTER JOIN van maakt, dan zou je ook regels uit users kunnen krijgen waar geen regel in information bij bestaat. Maar omdat er ook i.infoID = $_GET['id'] in de WHERE bij staat worden die er weer uitgefilterd.
    Normaal gesproken gebruik je in dit geval dus een INNER JOIN, behalve als de userID NULL mag zijn, dan gebruik je een LEFT OUTER JOIN.
    ikke_ookmaandag 23 januari 2006 @ 10:19
    Duidelijk, bedankt
    9christensenmaandag 23 januari 2006 @ 11:48
    Ik ben al een hele tijd bezig, maar kom er niet uit.

    http://img16.imageshack.us/img16/8155/accessssssss5ql.jpg

    ik heb hier een tabel. je moet in de tabel kunnen zoeken op datum en op tijd. (in een formulier denk ik). nu denk ik dat het met mysql moet in een query, maar zit nu eigenlijk een beetje vast.
    Tokusmaandag 23 januari 2006 @ 11:51
    Waarom wordt er door de mensen hier die mysql'en zovaak nadrukkelijk een inner join aangegeven zoals hierboven ("inner join user u on i.userid = u.userid") ?

    Dat kan toch ook gewoon door 2 tabellen te noemen en in je where-clause ze te verbinden?
    Swetseneggermaandag 23 januari 2006 @ 11:54
    quote:
    Op maandag 23 januari 2006 11:48 schreef 9christensen het volgende:
    Ik ben al een hele tijd bezig, maar kom er niet uit.

    http://img16.imageshack.us/img16/8155/accessssssss5ql.jpg

    ik heb hier een tabel. je moet in de tabel kunnen zoeken op datum en op tijd. (in een formulier denk ik). nu denk ik dat het met mysql moet in een query, maar zit nu eigenlijk een beetje vast.
    kijk eens in de mysql handleiding op DATE_SUB