FOK!forum / Digital Corner / [PHP/(My)SQL] voor dummies - Deel 67
PiRANiAvrijdag 9 januari 2009 @ 18:36

cd niet bijgeleverd

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

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


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

    Tutorials:
  • W3Schools PHP
  • W3Schools SQL

    Deze OP en instructies voor nieuw topic: http://wiki.fok.nl/index.php/OP/PHP
  • Kerolvrijdag 9 januari 2009 @ 18:44
    TVP
    PiRANiAvrijdag 9 januari 2009 @ 18:46
    Eindelijk weer eens een PI
    GlowMousevrijdag 9 januari 2009 @ 18:54
    quote:
    Op vrijdag 9 januari 2009 18:10 schreef Farenji het volgende:

    [..]

    Die tweede vorm is veel efficienter. Je geeft daar meteen aan hoe gejoind moet worden in de on clause, en daardoor kan de query beter geoptimaliseerd worden.
    Heb je één voorbeeld van tabellen, gegevens en een query die anders uitgevoerd wordt in Theta style dan in ANSI style? Het zou wel heel knullig zijn als de query optimizer dit verschillend oppakt.
    Voor zover ik weet zijn de enige voordelen van ANSI style de extra mogelijkheden om te joinen (outer join) en de overzichtelijkheid.
    Farenjivrijdag 9 januari 2009 @ 19:42
    quote:
    Op vrijdag 9 januari 2009 18:10 schreef Farenji het volgende:

    [..]

    Die tweede vorm is veel efficienter. Je geeft daar meteen aan hoe gejoind moet worden in de on clause, en daardoor kan de query beter geoptimaliseerd worden.
    Dit moet ik rectificeren. Het maakt geen fuck uit. Ik heb een benchmark gedraaid op een database met tabellen van miljoenen records en beide vormen zijn even snel.
    Roy_Tvrijdag 9 januari 2009 @ 20:09
    quote:
    Op vrijdag 9 januari 2009 15:24 schreef Gloeidoos het volgende:

    Ik heb de tables aangepast om het een beetje simpel te houden. In feite is het een kolomnaam met de naam state, enum('enabled','disabled'). Volgens mij komen hier uiteindelijk nog meer states bij, als dat nodig is.

    Maar voor booleans zal ik dan voortaan wel 0 en 1 gebruiken .
    Met meer states is enum inderdaad een optie
    GlowMousevrijdag 9 januari 2009 @ 20:12
    quote:
    Op vrijdag 9 januari 2009 20:09 schreef Roy_T het volgende:

    [..]

    Met meer states is enum inderdaad een optie
    De integer die jij voorstelde was sowieso overdone om 0 of 1 op te slaan. Een tinyint voldoet dan al. En onder de byte per veld kom je niet, dus tinyint/enum is om het even en dan kies je natuurlijk de duidelijkste.
    #ANONIEMvrijdag 9 januari 2009 @ 20:45
    quote:
    Op vrijdag 9 januari 2009 19:42 schreef Farenji het volgende:

    [..]

    Dit moet ik rectificeren. Het maakt geen fuck uit. Ik heb een benchmark gedraaid op een database met tabellen van miljoenen records en beide vormen zijn even snel.
    Het zou dan ook niet best zijn als het wél uit zou maken.
    Gloeidooszaterdag 10 januari 2009 @ 01:14
    Deze tvp ik dan maar. Bedankt voor de antwoorden.
    cablegunmasterzaterdag 10 januari 2009 @ 01:46
    hey :p

    hoe maak je een veld dat zichzelf optelt als er iets word bijgevoerd?
    stel een nieuw gegeven en dan moet dat cijfer in phpmyadmin doortellen.

    ik ben net begonnen met phpmyadmin. Hou hier alsjeblieft even rekening mee.
    GlowMousezaterdag 10 januari 2009 @ 11:07
    Zoek eens op primary key en auto_increment.
    Kerolzaterdag 10 januari 2009 @ 11:08
    Als je een nieuwe tabel maakt in je database staat bij Extra(volgens mij) staat auto_increment, die moet je selecteren, dan telt een veld zichzelf aldoor met 1 op.
    cablegunmasterzaterdag 10 januari 2009 @ 11:40
    thats all ?
    Kerolzaterdag 10 januari 2009 @ 11:42
    Probeer het eens uit
    Likkende_Lassiezaterdag 10 januari 2009 @ 14:15
    quote:
    Op zaterdag 10 januari 2009 11:40 schreef cablegunmaster het volgende:
    thats all ?
    Jeps

    Eventueel kan je ook nog 2 primare keys toevoegen, en één auto increment.
    Maar als je wilt kan het auto increment ook gebonden zijn aan de 2e primare key.
    JortKzaterdag 10 januari 2009 @ 14:18
    Present
    Lightzaterdag 10 januari 2009 @ 15:47
    quote:
    Op vrijdag 9 januari 2009 18:10 schreef Farenji het volgende:

    [..]

    Die tweede vorm is veel efficienter. Je geeft daar meteen aan hoe gejoind moet worden in de on clause, en daardoor kan de query beter geoptimaliseerd worden.
    Volgens mij maakt het MySQL niets uit of je WHERE of ON gebruikt bij een JOIN. Tenzij je op zoek gaat naar NULL-waardes, dat lukt je niet zonder ON.
    GlowMousezaterdag 10 januari 2009 @ 16:28
    quote:
    Op zaterdag 10 januari 2009 15:47 schreef Light het volgende:

    [..]

    Volgens mij maakt het MySQL niets uit of je WHERE of ON gebruikt bij een JOIN. Tenzij je op zoek gaat naar NULL-waardes, dat lukt je niet zonder ON.
    Bij een inner join maakt het inderdaad niets uit
    cablegunmasterzaterdag 10 januari 2009 @ 16:35
    ik heb nu alles werkend behalve het toevoegen.
    hoe krijg je dat een form submit en dan insert?
    ik zit nu namelijk met dat hij niet wil toevoegen.
    hij kan de database wel connecten.

    <?php
    if (isset($_POST['submit'])){
    <inc 'connect.php' >
    $submit = "insert into reis
    (bestemming )
    values ( ' ".strip_tags($_POST['bestemming']." ' )" ;

    $voegtoe = mysql_query($submit) or die (mysql_error ());

    } else {
    ?>
    <html>
    <body>
    <form action="<?php echo($_server["php_self"]);?> method="post">
    <input type="text" name="bestemming">
    <input type ="submit" name="submit" value="verzenden">
    <input type="reset" name="reset" value="leegmaken">
    </form>
    GlowMousezaterdag 10 januari 2009 @ 16:42
    Waarom wil hij niet toevoegen? Wat geeft echo $voegtoe?
    cablegunmasterzaterdag 10 januari 2009 @ 16:47
    quote:
    Op zaterdag 10 januari 2009 16:42 schreef GlowMouse het volgende:
    Waarom wil hij niet toevoegen? Wat geeft echo $voegtoe?
    hij laat het form zien..

    en dan submit ik en doet hij niks.
    en komt er in tabel reis niks bij.

    een parse error op de regel van die else
    GlowMousezaterdag 10 januari 2009 @ 16:48
    var_dump($_POST) bovenaan
    cablegunmasterzaterdag 10 januari 2009 @ 16:53
    quote:
    Op zaterdag 10 januari 2009 16:48 schreef GlowMouse het volgende:
    var_dump($_POST) bovenaan
    submit met een hoofdletter S en onder was ook met hoofdletter

    en dan mn isset niet goedstellen

    moet maar eens wat velden checken toevoegen werkt maar niet helemaal naar wens

    werkt nu wel btw

    gewoon een korte pauze nodig
    Likkende_Lassiezaterdag 10 januari 2009 @ 17:03
    isset... gebruiken jullie die nou altijd? Ik vind het echt een rare functie..snap hem wel, maar zonder isset, heb je toch hetzelfde?

    Bijvoorbeeld:

    if(ifset($value)){

    }

    tegen

    if($value){

    }


    geen verschil toch?
    GlowMousezaterdag 10 januari 2009 @ 17:07
    1
    2
    3
    4
    5
    6
    <?php
    $a 
    = array(false0'0');
    foreach(
    $a as $value) {
      echo 
    $value 'set' 'not set';
    }
    ?>
    Kerolzaterdag 10 januari 2009 @ 17:12
    Bij een IF Isset word gekeken of de variabele die je aangeeft (in jouw geval $value) een waarde heeft.
    Dit kun je bijvoorbeeld gebruiken om te controleren of iemand op de Submit knop heeft gedrukt o.i.d.

    Ik gebruik liever empty.
    Lightzaterdag 10 januari 2009 @ 17:51
    quote:
    Op zaterdag 10 januari 2009 17:07 schreef GlowMouse het volgende:

    [ code verwijderd ]
    Je vergeet nog de lege string en de lege array
    Lightzaterdag 10 januari 2009 @ 17:55
    quote:
    Op zaterdag 10 januari 2009 17:12 schreef Kerol het volgende:
    Bij een IF Isset word gekeken of de variabele die je aangeeft (in jouw geval $value) een waarde heeft.
    Dit kun je bijvoorbeeld gebruiken om te controleren of iemand op de Submit knop heeft gedrukt o.i.d.

    Ik gebruik liever empty.
    empty en isset zijn niet helemaal elkaars tegenpolen. Een variabele kan best een waarde hebben (isset) en toch leeg zijn (empty).
    Farenjizaterdag 10 januari 2009 @ 18:05
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $a 
    'a random string';
    $b 0;
     
    if ( 
    $a == true && $b == false && $a == $b )
    {
        die ( 
    'The universe is broken' );
    }
    ?>
    Xcaliburzaterdag 10 januari 2009 @ 18:10
    quote:
    Op zaterdag 10 januari 2009 16:35 schreef cablegunmaster het volgende:
    ik heb nu alles werkend behalve het toevoegen.
    hoe krijg je dat een form submit en dan insert?
    ik zit nu namelijk met dat hij niet wil toevoegen.
    hij kan de database wel connecten.

    <?php
    if (isset($_POST['submit'])){
    <inc 'connect.php' >
    $submit = "insert into reis
    (bestemming )
    values ( ' ".strip_tags($_POST['bestemming']." ' )" ;

    $voegtoe = mysql_query($submit) or die (mysql_error ());

    } else {
    ?>
    <html>
    <body>
    <form action="<?php echo($_server["php_self"]);?> method="post">
    <input type="text" name="bestemming">
    <input type ="submit" name="submit" value="verzenden">
    <input type="reset" name="reset" value="leegmaken">
    </form>


    Volgens mij mist hier sowieso een haakje sluiten voor de else ?
    Farenjizaterdag 10 januari 2009 @ 18:14
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <?php
    if ((int)0) {
        echo 
    " int 0 is true ";
    } else {
        echo 
    " int 0 is false ";
    }

    if ((string)
    "0") {
        echo 
    " string 0 is true ";
    } else {
        echo 
    " string 0 is false ";
    }

    if ((string)
    "wat dan ook maar niet 0") {
        echo 
    " n.e. string is true ";
    } else {
        echo 
    " n.e. string is false ";


    if ((string)
    "watdanook" == (int)0) {
        echo 
    " n.e. string is equal to int 0 ";
    } else {
        echo 
    " n.e. string is not equal to int 0 ";
    }
    ?>


    ;(
    Wouserzaterdag 10 januari 2009 @ 18:32
    omg waar heb je dat gevonde?
    Farenjizaterdag 10 januari 2009 @ 18:37
    Dit heb ik in de Fucking Manual gevonden. PHP is echt een brak kuttaaltje.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    var_dump
    (== "a"); // 0 == 0 -> true
    var_dump("1" == "01"); // 1 == 1 -> true
    var_dump("1" == "1e0"); // 1 == 1 -> true

    switch ("a") {
    case 
    0:
        echo 
    "0";
        break;
    case 
    "a"// never reached because "a" is already matched with 0
        
    echo "a";
        break;
    }
    ?>



    OMFG.
    cablegunmasterzaterdag 10 januari 2009 @ 19:19
    hoe zit het eigenlijk als ik plaatjes wil submitten ?

    bvb een input file en dan submit

    uiteindelijk geeft hij avatar.png weer input was C:\YYYY\avatar.png
    maar hij slaat hem zo niet op als C:\YYYY\avatar.png

    kan dit anders? of dat hij hem bij de httdocs neerzet, want dat doet hij ook niet.
    GlowMousezaterdag 10 januari 2009 @ 19:22
    http://nl3.php.net/features.file-upload doorlezen
    HuHuzaterdag 10 januari 2009 @ 19:29
    In navolging van Farenji:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php
    if(isset($_POST['code']))
    {
      
    $code preg_replace("/[^a-zA-Z0-9s]/"''strtolower(trim($_POST['code'])));
      
    $result $db->query("SELECT iets FROM tabel WHERE code = '"$db->real_escape_string($code) ."';");

      if(
    $result->num_rows) {
        
    // doe iets
        
    header('Location: http://het.is.gelukt.nl/pagina.html');
        exit;
      } else {
        echo 
    'Je code is onjuist.';
        exit;
      }

      echo 
    'Oké... wat nu?';
    }
    ?>


    Ik weet niet hoe en ik heb er geen verklaring voor, maar bij sommige bezoekers van mijn site werd "Oké... wat nu?" op het scherm gezet .

    PS: uiteraard had ik er wat anders/netjes van gemaakt, maar het gaat om het idee. Dit is echt het meest vage wat ik tot nu toe met PHP ben tegen gekomen.
    GlowMousezaterdag 10 januari 2009 @ 19:36
    quote:
    Op zaterdag 10 januari 2009 19:29 schreef HuHu het volgende:
    PS: uiteraard had ik er wat anders/netjes van gemaakt, maar het gaat om het idee. Dit is echt het meest vage wat ik tot nu toe met PHP ben tegen gekomen.
    Dan zal in dat proces wel iets fout zijn gegaan. Exit vergeten na de location-header ofzo.
    wipes66zaterdag 10 januari 2009 @ 21:29
    Ik kom er net achter dat mijn hosting een querie limit van 100.000 per uur heeft. Is dit toevallig te omzeilen? (ik kan geen meerder mysql account aanmaken).
    GlowMousezaterdag 10 januari 2009 @ 22:05
    Dingen cachen op je filesystem.
    kamustrazaterdag 10 januari 2009 @ 22:41
    quote:
    Op zaterdag 10 januari 2009 17:03 schreef Likkende_Lassie het volgende:
    isset... gebruiken jullie die nou altijd? Ik vind het echt een rare functie..snap hem wel, maar zonder isset, heb je toch hetzelfde?

    Bijvoorbeeld:

    if(ifset($value)){

    }

    tegen

    if($value){

    }


    geen verschil toch?
    Jawel, als je error_reporting op E_ALL zet, zal je zien dat php een warning geeft dat je een ongedefinieerde variable gebruikt als je if($value) gebruikt.
    kamustrazaterdag 10 januari 2009 @ 22:41
    Dubbel
    Kerolzondag 11 januari 2009 @ 00:07
    Waarom kan ik met elke willekeurige username en password inloggen op mijn site :S.
    Ik denk dat het fout gaat bij :
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $query 
    "SELECT COUNT(*) FROM members WHERE username='".$myusername."' AND password='".$password."'"
            
    $result mysql_query($query); 
            
    $rowcount mysql_num_rows($result);
            
            
    // als er een resultaat is.. (dus groter dan 0)
            
    if($rowcount 0)
    ?>


    De volledige 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
    <?php
    error_reporting
    (E_ALL);
    mysql_connect("localhost""root""")or die("mysql_error");
    mysql_select_db("opdracht1")or die("mysql_error");

    if(!empty(
    $_POST))
        { 
            
    // username and password verstuurd uit formulier
            
    $myusername=$_POST['username'];
            
    $mypassword=$_POST['wachtwoord'];

            
    // kleine protectie MySQL injection
            
    $myusername stripslashes($myusername);
            
    $mypassword stripslashes($mypassword);
            
    $myusername mysql_real_escape_string($myusername);
            
    $mypassword mysql_real_escape_string($mypassword);
            
    $password md5($mypassword);
            
    // kijk of er een username is met het ingevulde wachtwoord
                    
    $query "SELECT COUNT(*) FROM members WHERE username='".$myusername."' AND password='".$password."'"
            
    $result mysql_query($query); 
            
    $rowcount mysql_num_rows($result);
            
            
    // als er een resultaat is.. (dus groter dan 0)
            
    if($rowcount 0)
            { 
                
    $user $_POST["username"]; 
                
    $wachtwoord $_POST["wachtwoord"]; 
                
    $_SESSION['username'] = $user
                
    $_SESSION['wachtwoord'] = $wachtwoord

                
    header("Location: beveiligd.php"); 
            } 
            else 
            { 
                echo 
    "U heeft geen goede combinatie van emailadres en wachtwoord gebruikt."
            }          
        }
    else
    {
        echo 
    "U heeft de pagina verkeerd opgeroepen.";
    }
     
    ?>
    GlowMousezondag 11 januari 2009 @ 00:09
    count(*) geeft altijd een rijtje terug, namelijk een rij met daarin een getal dat het aantal rijen dat aan WHERE voldoet voorstelt.
    Kerolzondag 11 januari 2009 @ 00:18
    quote:
    Op zondag 11 januari 2009 00:09 schreef GlowMouse het volgende:
    count(*) geeft altijd een rijtje terug, namelijk een rij met daarin een getal dat het aantal rijen dat aan WHERE voldoet voorstelt.
    Dus ik kan beter
    1
    2
    3
    <?php
            $query 
    "SELECT `username` FROM `members` WHERE `username`='".$myusername."' AND password='".$password."'";
    ?>

    ervan maken?

    edit; Jup, dit werkt. Thanks.
    GlowMousezondag 11 januari 2009 @ 00:19
    Nee, je moet niet mysql_num_rows gebruiken.
    Kerolzondag 11 januari 2009 @ 00:26
    quote:
    Op zondag 11 januari 2009 00:19 schreef GlowMouse het volgende:
    Nee, je moet niet mysql_num_rows gebruiken.
    En waarom niet? Nu bekijkt hij toch hoeveel rijen usernames er zijn met de ingevoerde username en password.
    Bestaan de ingevoerde username en password in de db? -> Dan zal hij $rowcount = 1 geven. (Groter dan 1 kan ook niet omdat een username uniek is)
    Bestaan de ingevoerde username en password niet in de db? -> Dan zal hij $rowcount = 0 geven en zal hij direct door gaan naar de ELSE statement omdat alleen als $rowcount groter dan 0 is hij in die IF terugkomt.
    Lightzondag 11 januari 2009 @ 01:34
    quote:
    Op zondag 11 januari 2009 00:26 schreef Kerol het volgende:

    [..]

    En waarom niet? Nu bekijkt hij toch hoeveel rijen usernames er zijn met de ingevoerde username en password.
    Bestaan de ingevoerde username en password in de db? -> Dan zal hij $rowcount = 1 geven. (Groter dan 1 kan ook niet omdat een username uniek is)
    Bestaan de ingevoerde username en password niet in de db? -> Dan zal hij $rowcount = 0 geven en zal hij direct door gaan naar de ELSE statement omdat alleen als $rowcount groter dan 0 is hij in die IF terugkomt.
    Eens
    Maar ik zou geen wachtwoorden opslaan, ook niet in $_SESSION. Natuurlijk wel in de user-tabel, maar daar met encryptie (MD5 / SHA1 / etc). In $_SESSION kun je bijvoorbeeld userid en username opslaan, die kun je beide uit de database trekken. Als je de username uit de database haalt, krijg je de versie zoals die daar is opgeslagen. En omdat MySQL case insensitive is, hoeft dat niet hetzelfde te zijn als wat de klant heeft ingevoerd. (Meteen een reden om het wachtwoord wel via een versleuteling als MD5() te laten gaan, MD5('ABC') != MD5('abc').
    cablegunmasterzondag 11 januari 2009 @ 13:18
    ik heb een vraagje ik krijg in mn database wel de datum opgeslagen maar niet de tijd terwijl ik deze regel gebruik.

    date("Y-m-d H:i:s"))

    ligt het aan het veld van de database?
    dat is namelijk een date veld. of moet de tijd apart worden opgeslagen?
    GlowMousezondag 11 januari 2009 @ 13:22
    http://dev.mysql.com/doc/refman/5.1/en/datetime.html
    cablegunmasterzondag 11 januari 2009 @ 14:05
    quote:
    het is gelukt alleen maar een veld aanpassen
    cablegunmasterzondag 11 januari 2009 @ 15:02
    hoe zit het nu met uploaden van plaatjes

    ik wou een pagina maken waarin de plaatjes werden opgeslagen op hun eigen locatie alleen ik kom zover dat;
    enctype="multipart/form-data" in een form moest staan.

    en dat hiermee <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
    de grootte bepaald kon worden.

    ik snap alleen niet hoe je move_file_uploaded kan toepassen. want hoe definieer ik de locatie?
    ik gebruik Xampp en dan moet hij in localhost worden opgeslagen.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php
    $uploaddir 
    '/var/www/uploads/';
    $uploadfile $uploaddir basename($_FILES['avatar']['name']);

    echo 
    '<pre>';
    if (
    move_uploaded_file($_FILES['avatar']['tmp_name'], $uploadfile)) {
        echo 
    "Bestand is valide en is geupload \n";
    } else {
        echo 
    "dit bestand is niet valide! \n";
    }

    echo 
    'Wat heb ik fout gedaan:';
    print_r($_FILES);

    print 
    "</pre>";
    ?>


    en ik snap totaal niet hoe ik C:\bestand.jpg kan laten weergeven dat hij dat verplaatst

    krijg telkens dit te zien.
    move_uploaded_file(localhost/phpweek/ontvangen-productenpagina.jpg)

    de naam is alleen het bestand en niet het hele bestandspad hoe fix ik dit

    (ondertussen een gastenboek af met een werkend database tabelletje erachter connectie en verwijder knopje voor commentaar )

    [ Bericht 4% gewijzigd door cablegunmaster op 11-01-2009 15:10:39 ]
    GlowMousezondag 11 januari 2009 @ 15:09
    move_uploaded_file werkt op je filesystem en localhost heb je niet op je filesystem.
    cablegunmasterzondag 11 januari 2009 @ 15:11
    quote:
    Op zondag 11 januari 2009 15:09 schreef GlowMouse het volgende:
    move_uploaded_file werkt op je filesystem en localhost heb je niet op je filesystem.
    dus eigenlijk werkt het script wel als ik het online zou plaatsen?
    hoe zou de naam heten en zou ik een verbindings wachtwoord + ftp mee moeten sturen?

    natuurlijk CHMOD op de directory
    GlowMousezondag 11 januari 2009 @ 15:13
    Dat script werkt prima ja. Hij zet het bestand op de lokatie $uploadfile, zie de documentatie bij move_uploaded_file.

    Een zin als "en ik snap totaal niet hoe ik C:\bestand.jpg kan laten weergeven dat hij dat verplaatst" is onbegrijpelijk.

    Wat heeft FTP hiermee te maken?
    cablegunmasterzondag 11 januari 2009 @ 15:22
    quote:
    Op zondag 11 januari 2009 15:13 schreef GlowMouse het volgende:
    Dat script werkt prima ja. Hij zet het bestand op de lokatie $uploadfile, zie de documentatie bij move_uploaded_file.

    Een zin als "en ik snap totaal niet hoe ik C:\bestand.jpg kan laten weergeven dat hij dat verplaatst" is onbegrijpelijk.

    Wat heeft FTP hiermee te maken?
    Ja daar heb je totaal gelijk in.

    ik bedoel hoe kan je een script een plaatje laten weergeven.
    ik kies bijvoorbeeld C:\Glowmouse.jpg

    en dan wil ik dat hij het weergeeft als C:\Glowmouse.jpg
    ipv dat hij dat doet. Geeft hij Glowmouse.jpg weer.
    op de localhost zelf ipv op C:\ hierdoor kan het plaatje niet weergegeven worden.

    het plaatje hoeft niet verplaatst te worden

    weet niet of het mogelijk is

    [ Bericht 7% gewijzigd door cablegunmaster op 11-01-2009 15:41:47 ]
    Wouserzondag 11 januari 2009 @ 15:25
    Zijn er hier ook mensen die ervaring hebben met Zend_Controller class van Zend framework uiteraard? En dan met name met het gebruik van meerdere module?
    Roy_Tzondag 11 januari 2009 @ 17:59
    quote:
    Op vrijdag 9 januari 2009 20:12 schreef GlowMouse het volgende:

    De integer die jij voorstelde was sowieso overdone om 0 of 1 op te slaan. Een tinyint voldoet dan al. En onder de byte per veld kom je niet, dus tinyint/enum is om het even en dan kies je natuurlijk de duidelijkste.
    Ik bedoelde dan ook niet INTEGER vs TINYINT, maar een integer i.p.v. een string (het woord enum was toen helemaal nog niet gevallen). Het ging mij om het datatype.
    Xcaliburzondag 11 januari 2009 @ 18:01
    quote:
    Op zondag 11 januari 2009 15:22 schreef cablegunmaster het volgende:

    [..]

    Ja daar heb je totaal gelijk in.

    ik bedoel hoe kan je een script een plaatje laten weergeven.
    ik kies bijvoorbeeld C:\Glowmouse.jpg

    en dan wil ik dat hij het weergeeft als C:\Glowmouse.jpg
    ipv dat hij dat doet. Geeft hij Glowmouse.jpg weer.
    op de localhost zelf ipv op C:\ hierdoor kan het plaatje niet weergegeven worden.

    het plaatje hoeft niet verplaatst te worden

    weet niet of het mogelijk is
    Als je dit nou terugleest, snap je dan zelf wel wat je schrijft?

    Ik vermoed dat je het plaatje onder een andere naam wilt weergeven dan dat het opgeslagen is, door middel van een script? In dat geval moet je je eens gaan inlezen bij header() en file_get_contents()
    cablegunmasterzondag 11 januari 2009 @ 18:12
    quote:
    Op zondag 11 januari 2009 18:01 schreef Xcalibur het volgende:

    [..]

    Als je dit nou terugleest, snap je dan zelf wel wat je schrijft?

    Ik vermoed dat je het plaatje onder een andere naam wilt weergeven dan dat het opgeslagen is, door middel van een script? In dat geval moet je je eens gaan inlezen bij header() en file_get_contents()
    ik bedoel dat hij het opslaat als

    localhost\plaatje.jpg

    maar ik wil niet dat hij localhost
    plaatje.jpg weergeeft bij <img src="localhost\plaatje.jpg" \>

    maar dat hij c:\plaatje.jpg weergeeft in img src
    heerlijk onhandig ^^ denk ik maar als hij hem naar de localhost zou kopieren zou ik het ook niet erg vinden
    als hij dat maar deed!
    Likkende_Lassiezondag 11 januari 2009 @ 18:13
    Plaats anders even je code?
    Ik denk dat het dan voor iedereen een stuk duidelijker zou zijn wat je bedoeld.
    Farenjizondag 11 januari 2009 @ 18:18
    Je moet het plaatje gewoon in de http root opslaan en dan kun je in je html ernaar verwijzen als href="/plaatje.gif".
    cablegunmasterzondag 11 januari 2009 @ 18:33
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    <?php
    echo var_dump($_POST);
    if (isset(
    $_POST['Submit'])) { 

    if (
    $_POST['vnaam'] == "" ) { 
            
    $error "Voornaam is niet ingevuld<BR />"
        } if (
    $_POST['anaam'] == "") { 
            
    $error .= "Achternaam is niet ingevuld<BR />"
        } if (
    $_POST['email'] == "" ) { 
            
    $error .= "Uw email is niet ingevuld<BR />"
        } if (
    $_POST['comment'] == "" ) {
            
    $error .= "U heeft geen commentaar ingevuld<BR />";
        } if (
    strlen($_POST["vnaam"]) <= 2)  {
            
    $error .= "Voornaam moet minstens 2 tekens bevatten<BR />";
        } if (
    strlen($_POST["anaam"]) < 3)  {
            
    $error .= "Achternaam moet minstens 3 tekens bevatten";
        }
        
    //Als naam, leeftijd of land niet is ingevuld, is $error NIET leeg. 

                 
    if (!isset($error))  
        
    //als de variabele $error niet is aangemaakt ... 
    {
        
    $naam ucfirst($_POST["vnaam"]);
        
    $anaam ucfirst($_POST["anaam"]);
        
    $email $_POST["email"] ;
        
    $date $_POST["email"];
        
    $comment $_POST["comment"];
        
    $avatar $_POST["avatar"];
        
    $time $_POST["datum"];
        
        
    trim($naam);
        
    trim($anaam);
        
    strip_tags($naam);
        
    strip_tags($anaam);
        
    strip_tags($email);
        
    strip_tags($comment);
        
    strip_tags($avatar);
        
    // was ik later mee bezig  weet niet of het werkt
    $uploaddir 'localhost/phpweek/';
    $uploadfile $uploaddir basename($_FILES['avatar']['name']);

    echo 
    '<pre>';
    if (
    move_uploaded_file($_FILES['avatar']['tmp_name'], $uploadfile)) {
        echo 
    "Bestand is valide en is geupload \n";
    } else {
        echo 
    "dit bestand is niet valide! \n";
    }

    echo 
    'Wat heb ik fout gedaan:';
    print_r($_FILES);

    print 
    "</pre>";                            }
    */ 

        echo 
    $naam." ".$anaam."
        <br><a href=\"mailto:"
    .$email."\">".$email."</a><br>
        <img src=\""
    .$_FILES['avatar']['name']."\"/><br>
        "
    .$time."<br>Uw commentaar:<br>".$comment;
        echo(
    "<br><a href =\"".$_SERVER["PHP_SELF"] . "\">Nieuw commentaar toevoegen</a>");

            } else { 
            echo 
    "Gelieve alle formuliervelden netjes in te vullen !<BR /><BR />"
            echo 
    "<FONT COLOR=\"#FF0000\">".$error."</FONT>
            <br><a href =\""
    .$_SERVER["PHP_SELF"] . "\">Probeer opnieuw</a>";
        } 
       } else { 
         
    // als er niks ingevuld is word het gastenboek weergegeven net als het hoort.
    ?>

    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
    <html>
    <head>
       <title>Gastenboek</title>
    </head>
    <body>
    <h1>Schrijf een bijdrage in ons gastenboek!</h1>
    <form enctype="multipart/form-data" action="<?php echo($_server["php_self"]);?>" method="post">
    <table border = "0">
      <tr>
        <td align="right">Voornaam</td>
        <td><input type="text" name="vnaam" size='10'></td>
      </tr>
      <tr>
        <td align="right">Achternaam</td>
        <td><input type="text" name="anaam" size='10'></td>
      </tr>
      <tr>
        <td align="right">E-mailadres</td>
        <td><input type="text" name="email" size='10'></td>
      </tr>
      <tr>
        <td align="right">Avatar:</td>
        <td><input type="hidden" name="MAX_FILE_SIZE" value="30000" /><input type="file" name="avatar"></td>
      </tr>
      <tr>
        <td VALIGN="top">Uw bijdrage:</td>
        <td><textarea name="comment" size="255" rows="8"></textarea></td>
      </tr>
      <tr>
        <td><input type="hidden" name="datum" value="<?php echo(date("Y-m-d H:i:s")); ?>"> </td>
        <td><input type="Submit" name="Submit" value="Verzenden"<input type="reset" name="Reset" value="Leegmaken"></td>
      </tr>
    </table>
    </form>
    </table>

    1
    2
    3
    <?php
     

    ?>

    1
    2
    </body>
    </html> 


    het ging om een enkele post in het gastenboek :p niet om het gastenboek te zien of er iets geks mee te doen of een query ( heb al een werkend gastenboek :p maar het zou tof zijn om een avatar bij te kunnen hebben
    deze geeft alleen weer wat je erin stopt :p niet het gastenboek zelf.

    het idee is dat een plaatje word weergegeven. of geupload
    het uploaden snap ik nog niet helemaal.
    ik wou eerst dat het plaatje fysiek naar mn hardeschijf verwees maar online is dat zo kut.
    dus dat doen we niet :p want dan zien jullie mijn prachtige plaatjes niet. :p

    dus uploaden naar de site? hoe doe ik dat :p
    code zal vast wel wat fouten in zitten.

    ben ondertussen met een inlog systeem bezig en een pagina met sessie start stop
    id ^^ en later een wachtwoord vergeten knop word me een site.
    opdracht moet voor dinsdag af

    Eerste keer dat ik dit doe btw
    cablegunmasterzondag 11 januari 2009 @ 18:42
    quote:
    Op zondag 11 januari 2009 18:18 schreef Farenji het volgende:
    Je moet het plaatje gewoon in de http root opslaan en dan kun je in je html ernaar verwijzen als href="/plaatje.gif".
    je mist het punt das html geen php
    en als ik je dan heel veel bestanden toe stuur staat je root zo vol
    kan je beter een temp aanmaken ! of een picture map


    hoe zit het met sessies?

    ik kan nu registreren op mn site maar de vraag is moet ik alles opnieuw oproepen ?
    eruithalen van de database alvorens het in de sessie te stoppen ?
    en dan pas onthoud hij de gegevens?

    klopt dit of vergis ik me hierin?

    [ Bericht 21% gewijzigd door cablegunmaster op 11-01-2009 21:52:43 ]
    Roy_Tzondag 11 januari 2009 @ 22:30
    Sterker nog, als het om echt heel veel bestanden gaat kun je beter meer subdirs maken. Voor een applicatie met honderdduizend+ afbeeldingen plaats ik een bestand met de naam igifgarioufglieruhg.jpg daarom in "file/i/g/i/f/igifgarioufglieruhg.jpg"; oftewel subdirs op basis van de eerste 4 karakters van de naam. Als je zoveel bestanden in één dir hebt staan, dan wil dat nog weleens vertragend werken op filesystem niveau.
    GlowMousezondag 11 januari 2009 @ 22:42
    quote:
    Op zondag 11 januari 2009 22:30 schreef Roy_T het volgende:
    Sterker nog, als het om echt heel veel bestanden gaat kun je beter meer subdirs maken. Voor een applicatie met honderdduizend+ afbeeldingen plaats ik een bestand met de naam igifgarioufglieruhg.jpg daarom in "file/i/g/i/f/igifgarioufglieruhg.jpg"; oftewel subdirs op basis van de eerste 4 karakters van de naam. Als je zoveel bestanden in één dir hebt staan, dan wil dat nog weleens vertragend werken op filesystem niveau.
    Twee of drie diep is zát voor 100.000 afbeeldingen. De eerste vier tekens van de bestandsnaam zorgen trouwens niet echt voor een uniforme verdeling over mappen, of je applicatie moet bestanden zelf een random naam geven.
    Lightzondag 11 januari 2009 @ 23:03
    quote:
    Op zondag 11 januari 2009 22:42 schreef GlowMouse het volgende:

    [..]

    Twee of drie diep is zát voor 100.000 afbeeldingen. De eerste vier tekens van de bestandsnaam zorgen trouwens niet echt voor een uniforme verdeling over mappen, of je applicatie moet bestanden zelf een random naam geven.
    Bij twee niveau's diep en letters voor het aangeven van de niveau's heb je 148 bestanden per map. Uitgaande van een uniforme verdeling, uiteraard.
    cablegunmasterzondag 11 januari 2009 @ 23:17
    ik zet het resultaat binnenkort wel online. (deze week)

    van al je hulp diensten Glowmouse.
    ben je er heel erg dankbaar om.

    geen idee of file uploaden me gaat lukken


    Het stelt nu nog niet veel voor
    maar je kan inloggen gastenboek alleen als je inlogt
    en je moet er opdrachten op kunnen zien.

    [ Bericht 26% gewijzigd door cablegunmaster op 11-01-2009 23:39:11 ]
    Roy_Tmaandag 12 januari 2009 @ 01:08
    quote:
    Op zondag 11 januari 2009 22:42 schreef GlowMouse het volgende:

    Twee of drie diep is zát voor 100.000 afbeeldingen. De eerste vier tekens van de bestandsnaam zorgen trouwens niet echt voor een uniforme verdeling over mappen, of je applicatie moet bestanden zelf een random naam geven.
    Het is door randomization inderdaad uniform verdeeld. Ik had het over 100.000 plus, de kans is groot dat het er binnenkort een veelvoud van zijn. De details doen er eigenlijk ook niet toe; het was meer een "tip" over architectuur. Of je 2 of 4 niveau's diep wilt gaan kan van meerdere zaken afhangen natuurlijk
    HuHumaandag 12 januari 2009 @ 12:05
    quote:
    Op zondag 11 januari 2009 22:30 schreef Roy_T het volgende:
    Sterker nog, als het om echt heel veel bestanden gaat kun je beter meer subdirs maken. Voor een applicatie met honderdduizend+ afbeeldingen plaats ik een bestand met de naam igifgarioufglieruhg.jpg daarom in "file/i/g/i/f/igifgarioufglieruhg.jpg"; oftewel subdirs op basis van de eerste 4 karakters van de naam. Als je zoveel bestanden in één dir hebt staan, dan wil dat nog weleens vertragend werken op filesystem niveau.
    Vanaf wanneer gaat zoiets vertragend werken en wat is "vertragend"? Ik zit namelijk ook met tienduizenden afbeeldingen die momenteel nog in één map staan. De honderduizend afbeeldingen is naderend en geen idee hoe zich dit gaat houden als er nog tienduizenden afbeeldingen bij gaan komen. Kan iemand daar iets over zeggen?

    Het gaat om een Windows 2003 systeem met Apache 2 en de harde schijf als NTFS in RAID 1. Daarnaast leest dat systeem ook nog afbeeldingen van een Mac Leopard Server die bestanden deelt die op een HFS+ schijf in RAID 6 staat.
    GlowMousemaandag 12 januari 2009 @ 12:10
    Die limieten komen volgens mij meer uit oude filesystems. Tegenwoordig heb je er geen enkel probleem mee, totdat je het mapje opent in bv explorer.
    HuHumaandag 12 januari 2009 @ 12:18
    quote:
    Op maandag 12 januari 2009 12:10 schreef GlowMouse het volgende:
    Die limieten komen volgens mij meer uit oude filesystems. Tegenwoordig heb je er geen enkel probleem mee, totdat je het mapje opent in bv explorer.
    Ah... oké, dan hoef ik me voorlopig geen zorgen te maken denk ik. Alleen dat laatste (openen in explorer) klopt inderdaad, dat gaat echt rete-traag. Maar dat hoeft gelukkig nooit te gebeuren.
    Likkende_Lassiemaandag 12 januari 2009 @ 13:28
    Even een javascript vraagje, heb het ook al gepost in een javascript voor dummies, maar volgens mij zijn die topics niet heel erg actief

    De sitiutatie is als volgt:

    - Ik heb meerdere select's op mijn pagina, met precies dezelfde waarde, alleen de naam van select is anders.
    - Ik wil, dat zodra er één van de options wordt geselecteerd, in een willekeurige select, dat in elke select (behalve de huidige), de optie verdwijnt. Wordt de optie niet meer geselecteerd, dan moet hij weer overal verschijnen.

    Duidelijk?

    Dit heb ik al aan code:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function disable(){
       
       sel = document.frm.select1.selectedIndex;
       
       if(sel){
          document.frm.select2.remove(sel);
          //document.frm.select2.selectedIndex =0;
       }else{
          document.frm.select2.options[sel] = new Option('???wat te doen????',2);
       }
    }


    Eigenlijk zou hij alle select's op de pagina in een array moeten gooien, en vervolgens hier zn ding doen.
    Wie o wie!
    Farenjimaandag 12 januari 2009 @ 16:37
    quote:
    Op maandag 12 januari 2009 13:28 schreef Likkende_Lassie het volgende:
    Even een javascript vraagje, heb het ook al gepost in een javascript voor dummies, maar volgens mij zijn die topics niet heel erg actief

    De sitiutatie is als volgt:

    - Ik heb meerdere select's op mijn pagina, met precies dezelfde waarde, alleen de naam van select is anders.
    - Ik wil, dat zodra er één van de options wordt geselecteerd, in een willekeurige select, dat in elke select (behalve de huidige), de optie verdwijnt. Wordt de optie niet meer geselecteerd, dan moet hij weer overal verschijnen.

    Duidelijk?

    Dit heb ik al aan code:
    [ code verwijderd ]

    Eigenlijk zou hij alle select's op de pagina in een array moeten gooien, en vervolgens hier zn ding doen.
    Wie o wie!

    http://www.w3schools.com/HTMLDOM/met_doc_getelementsbytagname.asp
    Kerolmaandag 12 januari 2009 @ 20:18
    Ik heb een scriptje gemaakt voor als een gebruiker zijn account wilt verwijderen.
    Ik krijg telkens de message 'Uw account is succesvol verwijderd', wat overigens helemaal niet succesvol verlopen is, de user blijft gewoon bestaan en kan zelfs gewoon weer inloggen met dezelfde inloggegevens.
    Ziet iemand wat ik fout doe?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <?php
    error_reporting
    (E_ALL);
    mysql_connect("localhost""root""")or die("mysql_error");
    mysql_select_db("opdracht1")or die("mysql_error");
    $username $_SESSION['username'];
    if (empty(
    $_POST['submit']))
    {

    Weet je zeker dat je je account wilt verwijderen?
    <
    br/>
    <
    form method="post" action=" $_SERVER['PHP_SELF'] ">
    Ja <input type="radio" name="accdel" value="ja">
    Nee <input type="radio" name="accdel" value="nee"> <br/>
    <
    input type="submit" name="submit" value="Verwijder!"/>
    </
    form>

    }    
    else
    {
            if (
    $_POST['accdel'] == "ja")
            {
            
    mysql_query("DELETE FROM `members` WHERE `username` = '".$username."'");
            
    session_destroy();            
            echo 
    "Uw account is succesvol verwijderd.";
            }
            else
            {
                
    header(profiel.php);
            }
    }    
        
    ?>


    En FOK verwijderd die <? en ?> aldoor.
    GlowMousemaandag 12 januari 2009 @ 20:21
    mysql_error geeft? SQL injection rekening mee gehouden?

    header(profiel.php) is geen geldige PHP-code trouwens.
    PiRANiAmaandag 12 januari 2009 @ 20:23
    whoops
    Farenjimaandag 12 januari 2009 @ 20:24
    Weet je zeker dat die $username var goed gevuld is? Je vangt de sql errors ook niet af dus als daar wat fout gaat zie je het niet. Maar als $username leeg is dan slaagt de query wel gewoon maar wordt er niks verwijderd.
    Kerolmaandag 12 januari 2009 @ 20:26
    quote:
    Op maandag 12 januari 2009 20:21 schreef GlowMouse het volgende:
    mysql_error geeft? SQL injection rekening mee gehouden?

    header(profiel.php) is geen geldige PHP-code trouwens.
    SQL Injection maakt niet uit voor dit, het is maar een opgave voor school.
    mysql_error geeft niets, want er is geen error, de rij wordt in de db gewoon niet verwijderd.
    Kerolmaandag 12 januari 2009 @ 20:27
    quote:
    Op maandag 12 januari 2009 20:24 schreef Farenji het volgende:
    Weet je zeker dat die $username var goed gevuld is? Je vangt de sql errors ook niet af dus als daar wat fout gaat zie je het niet. Maar als $username leeg is dan slaagt de query wel gewoon maar wordt er niks verwijderd.
    $username is niet leeg, er staat wel wat in zie ik net via var_dump();
    GlowMousemaandag 12 januari 2009 @ 20:28
    quote:
    Op maandag 12 januari 2009 20:26 schreef Kerol het volgende:

    [..]

    SQL Injection maakt niet uit voor dit, het is maar een opgave voor school.
    mysql_error geeft niets, want er is geen error, de rij wordt in de db gewoon niet verwijderd.
    Je kunt de query gewoon bekijken en zelf uitvoeren en zien wat er gebeurt.
    Kerolmaandag 12 januari 2009 @ 20:30
    quote:
    Op maandag 12 januari 2009 20:28 schreef GlowMouse het volgende:

    [..]

    Je kunt de query gewoon bekijken en zelf uitvoeren en zien wat er gebeurt.
    Notice: Undefined index: username in C:\xampp\htdocs\marcc-online\deleteacc.php on line 22
    NULL

    Raar want als ik gewoon var_dump($username) doe krijg ik daar wel een resultaat uit.

    Nu werkt hij opeens weer
    GlowMousemaandag 12 januari 2009 @ 20:32
    En var_dump($_SESSION)? Je bent een regeltje vergeten
    Kerolmaandag 12 januari 2009 @ 20:34
    quote:
    Op maandag 12 januari 2009 20:32 schreef GlowMouse het volgende:
    En var_dump($_SESSION)? Je bent een regeltje vergeten
    Mja hij werkt opeens weer, geen idee wat de fout nou was maar opeens werkt het scriptje weer.
    GlowMousemaandag 12 januari 2009 @ 20:34
    session_start()?
    Kerolmaandag 12 januari 2009 @ 20:38
    quote:
    Op maandag 12 januari 2009 20:34 schreef GlowMouse het volgende:
    session_start()?
    Stond er ook al in, maar bedankt voor de hulp
    cablegunmasterdinsdag 13 januari 2009 @ 00:17
    Kerol mij is dat ook gelukt op mijn eigen manier om mijn account te verwijderen.
    is het jou al gelukt met de geheime vraag ?
    mij namelijk wel

    *zitten op zelfde school *
    schwa78dinsdag 13 januari 2009 @ 15:27
    Ik heb een kort reg expression vraagje:
    Hoe krijg ik uit de volgende tekst
    1example_text + 'needle';

    het volgende resultaat
    1needle


    Wat ik nu heb werkt niet:
    1preg_match('/example_text\s*+\s*\'(.*?)\'/i', "example_text + 'needle';", $matches);


    Sorry, ben een regex n00b :@
    GlowMousedinsdag 13 januari 2009 @ 15:34
    De + heeft in een regexp een speciale betekenis en moet je dus escapen.
    HuHudinsdag 13 januari 2009 @ 15:37
    quote:
    Op dinsdag 13 januari 2009 15:34 schreef GlowMouse het volgende:
    De + heeft in een regexp een speciale betekenis en moet je dus escapen.
    Dat dus. En verder zou je genoeg hebben aan:

    1
    2
    3
    <?php
    preg_match
    ('/\'(.*?)\'/i'"example_text + 'needle';"$matches);
    ?>


    Je wilt tenslotte alleen het stuk tussen de ' en die example_text ervoor boeit niet lijkt me?
    Farenjidinsdag 13 januari 2009 @ 15:38
    In een regexp is "+" een operator, dus als je het teken "+" wil matchen moet je hem escapen.
    Farenjidinsdag 13 januari 2009 @ 15:39
    Haha, spuit 11.
    schwa78dinsdag 13 januari 2009 @ 15:41
    Mijn fout. Ik had moeten vertellen dat dat hele "example_text + 'needle';" stuk in een grotere tekst staat.

    Ik heb dus die 'needle' nodig en het enige dat ik weet is dat het altijd voorafgegaan wordt door 'example_text + ' en tussen aanhalingstekens staat.

    Hoop dat het zo wat duidelijker is.
    HuHudinsdag 13 januari 2009 @ 15:47
    quote:
    Op dinsdag 13 januari 2009 15:41 schreef schwa78 het volgende:
    Mijn fout. Ik had moeten vertellen dat dat hele "example_text + 'needle';" stuk in een grotere tekst staat.

    Ik heb dus die 'needle' nodig en het enige dat ik weet is dat het altijd voorafgegaan wordt door 'example_text + ' en tussen aanhalingstekens staat.

    Hoop dat het zo wat duidelijker is.
    Dan zou een \ voor de + genoeg moeten zijn, zoals GlowMouse en Farenji aangeven.
    schwa78dinsdag 13 januari 2009 @ 15:53
    Je hebt gelijk! Hij doet het!

    Thx a bunch!!
    Wouserdinsdag 13 januari 2009 @ 17:12
    quote:
    Op maandag 12 januari 2009 12:18 schreef HuHu het volgende:

    [..]

    Ah... oké, dan hoef ik me voorlopig geen zorgen te maken denk ik. Alleen dat laatste (openen in explorer) klopt inderdaad, dat gaat echt rete-traag. Maar dat hoeft gelukkig nooit te gebeuren.
    Kan ik over meespreken heb een grote collectie aan .txt bestandjes van ieder 1.4gig enzo en als ik de map open duurt het wel eventjes... Maar dat komt meer omdat hij dan euh de auteur en de lengte van het txt bestandje moet ophalen
    cablegunmasterdinsdag 13 januari 2009 @ 21:45
    quote:
    Op dinsdag 13 januari 2009 17:12 schreef Wouser het volgende:

    [..]

    Kan ik over meespreken heb een grote collectie aan .txt bestandjes van ieder 1.4gig enzo en als ik de map open duurt het wel eventjes... Maar dat komt meer omdat hij dan euh de auteur en de lengte van het txt bestandje moet ophalen
    logbestanden?
    GlowMousedinsdag 13 januari 2009 @ 22:04
    Dan zul je het over nog geen 1000 bestandjes hebben van 1.4 GB/stuk.
    Likkende_Lassiewoensdag 14 januari 2009 @ 00:17
    Ik probeer een XML document in een array te zetten, maar dit wil niet echt lukken:
    Heb allerlei al reeds geschreven functies die ik op google heb gevonden, geprobeerd, maar ze doen niet wat ik wil.

    Ik wil uiteindelijk als volgt de data uit de array kunnen oproepen


    1
    2
    $array = $xml[0]0];
    $array = $xml[0][1];


    In plaats van de NAAM van de Attribute, wil ik dus ook met een 0 of een 1 de positie van de attribute aan kunnen geven.
    Het eerste nummer (de 0) die jullie zien, is de eerste waarde in het bestand.

    Zo ziet de xml er ongeveer uit:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <BESTAND>
       <ITEM>
          <ITEM_NAAM>product A</ITEM_NAAM>
          <ITEM_ID>5123</ITEM_ID>
       </ITEM>
       <ITEM>
          <ITEM_NAAM>product B</ITEM_NAAM>
          <ITEM_ID>123</ITEM_ID>
       </ITEM>
       <ITEM>
          <ITEM_NAAM>product C</ITEM_NAAM>
          <ITEM_ID>952</ITEM_ID>
       </ITEM>
    </BESTAND>


    Als ik bijvoorbeeld echo $array = $xml[1][0]; zou doen, wil ik de NAAM van het 2e item zien...
    Volgens mij moet het niet heel erg moelijk zijn, maar iemand misschien enig idee hoe dit in een array te krijgen? :)
    cablegunmasterwoensdag 14 januari 2009 @ 00:46
    quote:
    Op dinsdag 13 januari 2009 22:04 schreef GlowMouse het volgende:
    Dan zul je het over nog geen 1000 bestandjes hebben van 1.4 GB/stuk.
    dat vind ik ook veel !

    1.4 Terabyte!


    Maar even 1 vraag je ik moet nu alle uitwerkingen van mn opdrachten in html weergeven.

    Hoe kan ik in html bestand html en php weergeven?
    is er iets simpels als een functie die me daar bij helpt ?
    SuperRembowoensdag 14 januari 2009 @ 07:29
    quote:
    Op woensdag 14 januari 2009 00:17 schreef Likkende_Lassie het volgende:
    [...]
    Als ik bijvoorbeeld echo $array = $xml[1][0]; zou doen, wil ik de NAAM van het 2e item zien...
    Volgens mij moet het niet heel erg moelijk zijn, maar iemand misschien enig idee hoe dit in een array te krijgen?
    Je loopt recursief door de xml tree heen en bouwt ondertussen de array op. Lijkt me vrij recht toe recht aan.
    Xcaliburwoensdag 14 januari 2009 @ 08:34
    quote:
    Op woensdag 14 januari 2009 07:29 schreef SuperRembo het volgende:

    [..]

    Je loopt recursief door de xml tree heen en bouwt ondertussen de array op. Lijkt me vrij recht toe recht aan.
    Inderdaad, en op deze pagina staan een paar prima functies daarvoor (in de comments): http://nl3.php.net/xml_parse
    Likkende_Lassiewoensdag 14 januari 2009 @ 09:50
    Ik probeer het volgende, en ik kan niet anders dan de atribute op te roepen als $data_2->NAAM ipv $data_2[0];..

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $xml = simplexml_load_file('/var/www/html/beheer/temp_uploads/'.$_GET['option_2']);
       
       $row = 0;
       $row_2= 0;
       $dump = array();

       foreach ($xml AS $data){
          $dump[$row] = $data;
          $row++;
            
       }
       
       foreach ($dump AS $data_2){
          echo $data_2->NAAM;
          echo '<br />';
       }
    Farenjiwoensdag 14 januari 2009 @ 10:42
    quote:
    Op woensdag 14 januari 2009 09:50 schreef Likkende_Lassie het volgende:
    Ik probeer het volgende, en ik kan niet anders dan de atribute op te roepen als $data_2->NAAM ipv $data_2[0];..
    [ code verwijderd ]
    En dat is een probleem omdat?
    SuperRembowoensdag 14 januari 2009 @ 10:52
    Ja als je xml objecten in je array gooit, dan komen er ook weer xml objecten uit.
    Likkende_Lassiewoensdag 14 januari 2009 @ 11:05
    quote:
    Op woensdag 14 januari 2009 10:42 schreef Farenji het volgende:

    [..]

    En dat is een probleem omdat?
    ik het niet zo wil aan roepen
    dus hoe dat te doen?
    Roy_Twoensdag 14 januari 2009 @ 11:39
    quote:
    Op woensdag 14 januari 2009 11:05 schreef Likkende_Lassie het volgende:

    ik het niet zo wil aan roepen
    dus hoe dat te doen?
    Zorgen dat er arrays in komen, en geen objecten
    Farenjiwoensdag 14 januari 2009 @ 13:27
    quote:
    Op woensdag 14 januari 2009 11:05 schreef Likkende_Lassie het volgende:

    [..]

    ik het niet zo wil aan roepen
    dus hoe dat te doen?
    Je kan die hash die door simplexml wordt gemaakt toch omzetten naar elk formaat dat je zelf wil? Daar kun je gewoon je eigen routine voor schrijven. Of je zou je kunnen afvragen waarom je perse de data als array wil benaderen, wat is precies het voordeel?
    Likkende_Lassiewoensdag 14 januari 2009 @ 13:32
    Ik ben bezig met een importmodule, waar zowel CSV als XML bestanden kunnen worden geimporteerd.
    Op een gegeven moment kunnen er kolommen worden gekoppeld aan die van de database, zodat elke opbouw van zowel CSV als XML te gebruiken is

    Als ik de onderstaande code gebruik, krijg ik deze foutmelding:
    Fatal error: Call to a member function attributes() on a non-object in upload.php on line 137

    1
    2
    3
    4
    5
    6
    7
    $xml = simplexml_load_file('/var/www/html/uploads/9322689b8f690f9d43a47486051bc7db.xml');
    foreach($xml->body[0]->attributes() as $a => $b) {
       if($a=='type') {
          echo $a,'="',$b,"\"</br>";
       }else{ 
       }
    }


    EDIT : volgens mij heb ik het probleem, momentje

    [ Bericht 4% gewijzigd door Likkende_Lassie op 14-01-2009 13:38:32 ]
    Likkende_Lassiedonderdag 15 januari 2009 @ 10:47
    Het is gelukt!
    Het lukte mij echt totaal niet met de functies die hierboven staan, en als ik wat resultaten kreeg, dan had ik al snel 100 regels aan code. Maar zie hieronder:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php
    $dom 
    = new DomDocument();
          
    $dom->load('/uploads/'.$_GET['option_2']);
          
          foreach (
    $dom->documentElement->childNodes as $articles) {
             
              if (
    $articles->nodeType == && $articles->nodeName == "INFO") {
                  foreach (
    $articles->childNodes  as $item) {
                      if (
    $item->nodeType == AND $i 1) {
                         
    $files[0][] = $item->nodeName;
                      }
                  }
                  
    $i++;
              }
          }
    ?>


    Chandlerdonderdag 15 januari 2009 @ 13:16
    Ik heb weer een leuke vraag, ik heb 2 tabellen die ik join.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT images_tree.*, 
           images.id AS imageID, 
           images.filex , 
           images.filey 
    FROM images_tree 
    LEFT JOIN images ON images.cat_id = images_tree.id 
    WHERE images_tree.tree_id = '1' 
    GROUP BY images_tree.id 
    ORDER BY images_tree.title 
    LIMIT 20, 20


    daarvoor gebruik ik de volgende tabellen

    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
    --
    -- Tabel structuur voor tabel `images`
    --

    CREATE TABLE IF NOT EXISTS `images` (
      `id` int(10) unsigned NOT NULL auto_increment,
      `cat_id` mediumint(8) unsigned NOT NULL,
      `user_id` mediumint(8) unsigned NOT NULL,
      `user_ip` varchar(32) NOT NULL,
      `filename` varchar(32) NOT NULL,
      `filedate` date NOT NULL,
      `filetype` char(1) NOT NULL,
      `filesize` int(10) unsigned NOT NULL,
      `filecrc` varchar(15) NOT NULL,
      `filex` mediumint(8) unsigned NOT NULL,
      `filey` mediumint(8) unsigned NOT NULL,
      `views` int(10) unsigned NOT NULL,
      `vote` tinyint(3) unsigned NOT NULL,
      `votes` mediumint(8) unsigned NOT NULL,
      PRIMARY KEY  (`id`),
      UNIQUE KEY `filesize` (`filesize`,`filecrc`,`filex`,`filey`,`cat_id`),
      KEY `cat_id` (`cat_id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

    -- --------------------------------------------------------

    --
    -- Tabel structuur voor tabel `images_tree`
    --

    CREATE TABLE IF NOT EXISTS `images_tree` (
      `id` mediumint(8) unsigned NOT NULL auto_increment,
      `tree_id` mediumint(8) unsigned NOT NULL,
      `title` varchar(32) NOT NULL,
      `description` varchar(255) NOT NULL,
      `images` mediumint(8) unsigned NOT NULL,
      `images_size` bigint(20) unsigned NOT NULL,
      PRIMARY KEY  (`id`),
      KEY `id` (`id`,`tree_id`),
      KEY `title` (`title`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1;


    echter kost het ruim 0.3 seconden om 20 afbeeldingen uit te lezen uit een database van 1400 categorieen en 75000 afbeeldingen..

    Hoe kan ik deze optimaliseren? ik heb al EXPLAIN op de queries gedaan maar dan blijkt dat er geen filesort gebruikt wordt...
    HuHudonderdag 15 januari 2009 @ 13:28
    Helpt het als je de KEY id weg haalt bij images_tree en deze vervangt door een index op alleen tree_id?
    Chandlerdonderdag 15 januari 2009 @ 13:33
    Niet bepaald nee, dan wordt de query nog slomer
    GlowMousedonderdag 15 januari 2009 @ 14:24
    En wat is de output van EXPLAIN? Grote kans dat het niet veel sneller kan trouwens, GROUP BY col1 ORDER BY col2 is gewoon een vervelende combinatie.
    urseldonderdag 15 januari 2009 @ 14:43
    was ik toch bijna dit topic kwijt..
    Chandlerdonderdag 15 januari 2009 @ 16:14
    dit is de explain

    1
    2
    3
    id  select_type  table  type  possible_keys  key  key_len  ref  rows  Extra  
    1 SIMPLE images_tree index NULL title 34 NULL 1364 Using where; Using temporary 
    1 SIMPLE images ref cat_id cat_id 3 ****.images_tree.id 54   


    en idd het is nogal wat ongelukkig maar goed
    GlowMousedonderdag 15 januari 2009 @ 16:52
    Probeer de GROUP BY eens te wijzigen in GROUP BY images_tree.title,images_tree.id, en aan de index op title ook het veld id toe te voegen index toevoegen op (tree_id,title,id).
    Als dat niet werkt: ANALYSE TABLE op de twee tabellen, nog een keer proberen, en anders opnieuw de EXPLAIN-output geven.

    [ Bericht 7% gewijzigd door GlowMouse op 15-01-2009 17:01:01 ]
    Chandlerdonderdag 15 januari 2009 @ 17:16
    Ja die index werkt idd heerlijk

    -edit-
    alleen bij de eerste pagina's scheelt het aardig, maar hoever ik in de database kom (qua records) hoe langzamer
    GlowMousedonderdag 15 januari 2009 @ 17:37
    quote:
    Op donderdag 15 januari 2009 17:16 schreef Chandler het volgende:
    Ja die index werkt idd heerlijk

    -edit-
    alleen bij de eerste pagina's scheelt het aardig, maar hoever ik in de database kom (qua records) hoe langzamer
    Dat heb je wanneer je LIMIT gebruikt.
    Mag ik weten hoe snel de query is op pagina 1, en op pagina 10?
    cablegunmasterdonderdag 15 januari 2009 @ 18:47
    vraagje,

    nu ik mijn site online wil plaatsen waar moet ik opletten behalve op captcha tegen spambots en
    escape mysql strings?
    zijn er dingen waar ik rekening mee moet houden?
    behalve dan dat de database online komt te staan.
    Xcaliburdonderdag 15 januari 2009 @ 19:09
    waar doel je precies op...?
    PiRANiAdonderdag 15 januari 2009 @ 20:15
    Wie heeft een simpele JOIN tuto?
    cablegunmasterdonderdag 15 januari 2009 @ 20:18
    quote:
    Op donderdag 15 januari 2009 19:09 schreef Xcalibur het volgende:
    waar doel je precies op...? :?
    ik doel erop

    wat voor beveiliging kan je zelf instellen behalve de formulier checks op je website en de sql injectie checks?
    1
    2
    3
    4
    5
    <?php
    $PLAATJE 
    "rand(1,9)"

    echo "<img src =\"leukplaatje".$PLAATJE.".jpg\"/> ";
    ?>

    vond ik wel tof bedacht btw :D
    Xcaliburdonderdag 15 januari 2009 @ 20:36
    wat wil je dan beveiligen? en waarom?

    het random plaatje wat je post is op zich hartstikke leuk natuurlijk, maar heeft niks met beveiling te maken
    cablegunmasterdonderdag 15 januari 2009 @ 20:37
    quote:
    Op donderdag 15 januari 2009 20:36 schreef Xcalibur het volgende:
    wat wil je dan beveiligen? en waarom?

    het random plaatje wat je post is op zich hartstikke leuk natuurlijk, maar heeft niks met beveiling te maken
    nee ik bedoel weren tegen sql injecties.
    weren tegen kut users die mijn site proberen plat te leggen.
    users die mn database proberen te mollen!
    Farenjidonderdag 15 januari 2009 @ 21:22
    quote:
    Op donderdag 15 januari 2009 20:37 schreef cablegunmaster het volgende:

    [..]

    nee ik bedoel weren tegen sql injecties.
    weren tegen kut users die mijn site proberen plat te leggen.
    users die mn database proberen te mollen!
    Door te zorgen dat je in ieder geval niet de 25 gevaarlijkste programmeerfouten maakt.
    Chandlerdonderdag 15 januari 2009 @ 23:33
    quote:
    Op donderdag 15 januari 2009 17:37 schreef GlowMouse het volgende:
    Dat heb je wanneer je LIMIT gebruikt.
    Mag ik weten hoe snel de query is op pagina 1, en op pagina 10?
    Pagina 1. 0.01
    Pagina 10 0.09
    Pagina 20 0.13
    Pagina 50 0.3
    Pagina 69 0.44

    GlowMousedonderdag 15 januari 2009 @ 23:42
    quote:
    Op donderdag 15 januari 2009 23:33 schreef Chandler het volgende:

    [..]

    Pagina 1. 0.01
    Pagina 10 0.09
    Pagina 20 0.13
    Pagina 50 0.3
    Pagina 69 0.44

    Mooi lineair Nadeel van LIMIT, hij kan nooit weten wat er op de 59ste pagina komt zonder eerst de eerste 58 op te halen.
    Irixvrijdag 16 januari 2009 @ 01:00
    Ik heb de volgende 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
    $result = mysql_query("SELECT * FROM ur_pstats ORDER BY points DESC");
    $nr = 1;

    while($row = mysql_fetch_array($result))

    {

       if (in_array($row['user'],$flow))

       {

       $team = "Flow";

       }

       else

       {
       $team = "Allstars";
       }


    echo "<tr>";
    echo "<td>";
    echo $nr;
    echo "</td>";
    echo "<td>";
    echo $row['user'];
    echo "</td>";
    echo "<td>";
    echo $team;
    echo "</td>";
    echo "<td>";

    $points = $row['points'];
    $points2 = log($row['games'] + 1 ) * ($row['wins'] / $row['games']);

    $points = $points + $points2;
    $points = round($points, 2);

    echo $points;
    echo "</td>";


    Het gaat mij vervolgens om points. Zoals jullie kunnen zien is er in de table ur_pstats een kolom met de naam 'points'. Ik sorteer de resultaten op points. Nu is het probleem dat ik onlangs een wijziging heb doorgevoerd. Het gaat hierbij om de regel met log(). Na deze bewerking ontstaat er een nieuwe waarde voor points. Nu wil ik eigenlijk sorteren op deze points, en niet op de points die ik uit de tabel haal.

    Is hier een makkelijke oplossing voor? Het enige wat ik kan bedenken is op een of andere manier een array te maken, want volgens mij kun je de array ook sorteren op waarden. Een alternatief zou zijn om voordat de points worden opgeslagen de bewerking met log toe te voegen. Welke zou makkelijker zijn?
    GlowMousevrijdag 16 januari 2009 @ 01:01
    SELECT user,points,log(games+1)*wins/games AS points2 FROM ur_pstats ORDER BY points2 DESC
    GlowMousevrijdag 16 januari 2009 @ 01:02
    Lekker voor je performance trouwens als je veel rijen hebt. In dat geval kan het beter zijn om een apart veld aan te maken met deze score en daarop te indexeren.
    Irixvrijdag 16 januari 2009 @ 01:22
    Denk aan ongeveer 200 rijen. Als ik

    $result = mysql_query("SELECT * FROM ur_pstats ORDER BY points DESC");

    verander in

    $result = mysql_query("SELECT user,points,log(games+1)*wins/games AS points2 FROM ur_pstats ORDER BY points2 DESC");

    dan krijg ik een halve tabel met alleen maar nullen .

    edit-

    Ik heb t zelf inmiddels gefixed.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    while($row = mysql_fetch_array($result))


    {

    $user = $row['user'];
    $points = $row['points'];
    $points2 = log($row['games'] + 1 ) * ($row['wins'] / $row['games']);
    $points = $points + $points2;

    mysql_query("UPDATE ur_pstats SET points2 = '$points' WHERE user = '$user");

    }


    [ Bericht 51% gewijzigd door Irix op 16-01-2009 01:45:34 ]
    Chandlervrijdag 16 januari 2009 @ 08:48
    quote:
    Op donderdag 15 januari 2009 23:42 schreef GlowMouse het volgende:

    [..]

    Mooi lineair Nadeel van LIMIT, hij kan nooit weten wat er op de 59ste pagina komt zonder eerst de eerste 58 op te halen.
    Goed, maar hoe kan ik dit versnellen cq optimaliseren? D:
    GlowMousevrijdag 16 januari 2009 @ 10:42
    quote:
    Op vrijdag 16 januari 2009 08:48 schreef Chandler het volgende:

    [..]

    Goed, maar hoe kan ik dit versnellen cq optimaliseren? D:
    Vantevoren een tabel vullen met een extra veld waarin je aangeeft op welke plek welke foto komt. Op dat veld kun je indexeren en in je query kun je dan WHERE ipv LIMIT gebruiken.
    Chandlervrijdag 16 januari 2009 @ 11:20
    Hmm.. ik ga eens wat research doen en idd er is helaas in dit geval geen andere optie dan limit (tenminste zo zie ik het hehe).

    Dus moet ik de pagina's gewoon maar gaan cachen!

    [ Bericht 49% gewijzigd door Chandler op 16-01-2009 11:26:14 ]
    schwa78vrijdag 16 januari 2009 @ 14:44
    Ik heb een lastig regex probleempje. Of misschien wel heel simpel, maar ik weet er nog niet zo veel van af.

    Ik heb een lap tekst in een variabele staan en daarin komst steeds het volgende stuk tekst in voor (maar dan steeds met andere data).

    1
    2
    3
    4
    5
    6
    7
    8
    <p class="info">
    <strong class="TitleOff">
    <a href="[b]url_die_ik_zoek[/b]">[b]Titel die ik zoek[/b]</a>
    </strong> 
    <strong class="datetime">
    <span style="font-size:10px;">Aired</span>
    <span style="font-size:10px;">[b]Datum die ik zoek[/b]</span>
    </strong>[b]Omschrijving die ik zoek[/b]</p>


    Hoe krijg ik nou met preg_match nou alle informatie eruit gevist? En dan ook nog zo dat de gevonden titels en omschrijvingen ook nog bij elkaar matchen?
    Roy_Tvrijdag 16 januari 2009 @ 15:06
    Wil je per se een regex gebruiken? Anders zou de DOM parsen weleens veel makkelijker kunnen zijn.
    schwa78vrijdag 16 januari 2009 @ 15:11
    Dat had ik eerst geprobeerd, maar daar snap ik nog een stuk minder van.

    Het lukt me wel om bijvoorbeeld alle links eruit te zoeken, maar hoe ik verder moet zou ik niet zo snel weten.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $dom = new DOMDocument();
    @$dom->loadHTML($result);
    $xpath = new DOMXPath($dom);

    // -- Alle links
    $hrefs = $xpath->evaluate("/html/body//ol//li//a");

    // -- Links doorlopen
    for ($i = 0; $i < $hrefs->length; $i++)
    {
       $href = $hrefs->item($i);
       $url = $href->getAttribute('href');
       echo $url."<br />";
    }
    Roy_Tvrijdag 16 januari 2009 @ 15:25
    Je zou eerst alle <p>'s met class "info" kunnen zoeken, en vervolgens daar doorheen loopen en binnen iedere gevonden <p> zoeken op link (href en titel), de tweede <span>, etc.
    schwa78vrijdag 16 januari 2009 @ 15:30
    Eehhh Zoals ik al zei weet ik nog maar weinig van XPath.
    Hoe moet ik dat precies doen?
    Farenjivrijdag 16 januari 2009 @ 21:14
    http://www.w3schools.com/Xpath/
    Gloeidooszaterdag 17 januari 2009 @ 03:04
    quote:
    Op vrijdag 16 januari 2009 15:25 schreef Roy_T het volgende:
    Je zou eerst alle <p>'s met class "info" kunnen zoeken, en vervolgens daar doorheen loopen en binnen iedere gevonden <p> zoeken op link (href en titel), de tweede <span>, etc.
    Zo moeilijk is Xpath niet hoor ;)

    1
    2
    3
    4
    $nodes = $xpath->query('//p[@class="info"]');
    foreach($nodes as $node) {
         $a = $node->getAttribute('href');
    }


    Hiermee kan je wel vooruit denk ik.
    Roy_Tzaterdag 17 januari 2009 @ 08:57
    quote:
    Op zaterdag 17 januari 2009 03:04 schreef Gloeidoos het volgende:

    [..]

    Zo moeilijk is Xpath niet hoor
    [ code verwijderd ]

    Hiermee kan je wel vooruit denk ik.
    Alleen werkt dit natuurlijk niet, omdat een <p> geen href attribuut heeft
    mrpapluzaterdag 17 januari 2009 @ 12:24
    hey mensen, ik ben bezig met een pagina om je account te activeren. als je bent geregistreerd krijg je een mail met een link. (dat is nu nog gewoon op de site). De link ziet er uit als activate.php?activate=$activate&code=$code. Hier is $active het user_nr en $code de code die in de kolom active_code in de database is gezet. Alles werkt leuk en aardig, maar volgens mij doet hij het niet door de sql query. Hij veranderd namelijk ook niks in de database, maar hij komt wel door de check of $active > 0 en strlen($code) ==32. Iemand enig idee wat ik fout doe?
    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
    <?php
       if (isset($_GET['activate'])) {
          $activate = (int) $_GET['activate'];
       } else {
          $activate = 0;
       }
       if (isset($_GET['code'])) {
          $code = $_GET['code'];
       } else {
          $code = 0;
       }

       if ( ($activate > 0) && (strlen($code) == 32)) {
          include('include/inc_connect.php');
          $query = "UPDATE users SET active_code = NULL WHERE user_nr = '".$active."' AND active_code = '".$code."' LIMIT 1 ;";  
          $result = mysql_query($query) or die(mysql_error());

          if (mysql_affected_rows() == 1) {
             echo "<b class=\"title\">Geactiveerd</b>";
             echo "<p>Je account is nu actief, je kan nu inloggen.</p>";
          } else {
             echo "<b class=\"title\">Activeren niet succesvol</b>";
             echo "<p>Je account kon niet geactiveerd worden. Kijk of de link klopt of neem contact op met onze <a href=\"mailto:xxxxxxxx\">Administrator</a></p>";
          mysql_close();
          }
       } else {
          echo "<b class=\"title\">Activatie link klopt niet!</b>";
          echo "<p>Probeer opnieuw</p>";
       }
    ?>
    Gloeidooszaterdag 17 januari 2009 @ 14:16
    quote:
    Op zaterdag 17 januari 2009 08:57 schreef Roy_T het volgende:

    [..]

    Alleen werkt dit natuurlijk niet, omdat een <p> geen href attribuut heeft
    Hehe het was al laat.
    Roy_Tzondag 18 januari 2009 @ 09:59
    quote:
    Op zaterdag 17 januari 2009 12:24 schreef mrpaplu het volgende:
    hey mensen, ik ben bezig met een pagina om je account te activeren. als je bent geregistreerd krijg je een mail met een link. (dat is nu nog gewoon op de site). De link ziet er uit als activate.php?activate=$activate&code=$code. Hier is $active het user_nr en $code de code die in de kolom active_code in de database is gezet. Alles werkt leuk en aardig, maar volgens mij doet hij het niet door de sql query. Hij veranderd namelijk ook niks in de database, maar hij komt wel door de check of $active > 0 en strlen($code) ==32. Iemand enig idee wat ik fout doe?
    [ code verwijderd ]
    Wat heb je gedaan om te debuggen? Toen je om te debuggen "$query = "UPDATE users SET active_code = NULL WHERE user_nr = '".$active."' AND active_code = '".$code."' LIMIT 1 ;";" eens gewoon echode, wat kreeg te toen te zien?

    Want volgens mij bestaat heel de variabele $active niet (en bedoel je $activate).
    SuperRembozondag 18 januari 2009 @ 14:34
    quote:
    Op zaterdag 17 januari 2009 12:24 schreef mrpaplu het volgende:
    hey mensen, ik ben bezig met een pagina om je account te activeren. als je bent geregistreerd krijg je een mail met een link. (dat is nu nog gewoon op de site). De link ziet er uit als activate.php?activate=$activate&code=$code. Hier is $active het user_nr en $code de code die in de kolom active_code in de database is gezet. Alles werkt leuk en aardig, maar volgens mij doet hij het niet door de sql query. Hij veranderd namelijk ook niks in de database, maar hij komt wel door de check of $active > 0 en strlen($code) ==32. Iemand enig idee wat ik fout doe?
    [ code verwijderd ]
    Handig activeringssysteem. Code "'='' or ''='" (aanvullen met spaties tot 32 tekens) is altijd goed

    [ Bericht 1% gewijzigd door SuperRembo op 18-01-2009 16:38:23 ]
    cablegunmasterzondag 18 januari 2009 @ 15:45
    http://cablegunmaster.nl

    Mijn resultaat van al de php opdrachten van school. :p
    moet alleen nog weten hoe ik de php kan laten weergeven voor documenten , in html
    waarom dit geen spam is , komt omdat hier aan mensen van dit forum hebben meegeholpen
    Dank aan glowmouse vnmlijk

    [ Bericht 36% gewijzigd door cablegunmaster op 18-01-2009 15:54:51 ]
    GlowMousezondag 18 januari 2009 @ 16:03
    quote:
    Op zondag 18 januari 2009 15:45 schreef cablegunmaster het volgende:
    moet alleen nog weten hoe ik de php kan laten weergeven voor documenten , in html
    <?php echo '<?php echo \'hoi!\'; ?>'; ?>
    Of iets met http://nl2.php.net/manual/en/function.highlight-file.php
    cablegunmasterzondag 18 januari 2009 @ 16:03
    quote:
    Op zondag 18 januari 2009 16:03 schreef GlowMouse het volgende:

    [..]

    <?php echo '<?php echo \'hoi!\'; ?>'; ?>
    that all
    GlowMousezondag 18 januari 2009 @ 16:04
    Zie edit, waarschijnlijk staat de code namelijk wel in een bestand ergens. De uitdaging is dan nog om te zorgen dat alleen van de juiste bestanden de code weergegeven wordt.
    Likkende_Lassiezondag 18 januari 2009 @ 16:08
    quote:
    Op zondag 18 januari 2009 14:34 schreef SuperRembo het volgende:

    [..]

    Handig activeringssysteem. Code "'='' or ''='" is altijd goed

    Hoe dan? (waar?)
    GlowMousezondag 18 januari 2009 @ 16:09
    quote:
    Op zondag 18 januari 2009 16:08 schreef Likkende_Lassie het volgende:

    [..]

    Hoe dan? (waar?)
    In die query als $activate leeg is.
    Farenjizondag 18 januari 2009 @ 16:16
    Die parameter code wordt ook nergens gevalideerd. Dit is heel gevaarlijk. Je kan de email validatie makkelijk omzeilen door wat met de URL te rommelen (bedenk wat er gebeurt als $code = '1\' or \'1', *alle* users worden dan klakkeloos gevalideerd), en je kan veel ergere dingen doen (databases/tabellen droppen, wachtwoorden veranderen, etc).
    SuperRembozondag 18 januari 2009 @ 16:42
    quote:
    Op zondag 18 januari 2009 16:08 schreef Likkende_Lassie het volgende:

    [..]

    Hoe dan? (waar?)
    1
    2
    3
    4
    5
    $query = "UPDATE users 
       SET active_code = NULL 
       WHERE user_nr = '".$active."' 
          AND active_code = '".$code."' 
       LIMIT 1 ;";  


    wordt dan
    1
    2
    3
    4
    5
    $query = "UPDATE users 
       SET active_code = NULL 
       WHERE user_nr = '123' 
          AND active_code = '' OR '' = ''
       LIMIT 1 ;";  
    schwa78maandag 19 januari 2009 @ 10:48
    http://nl.wikipedia.org/wiki/SQL-injectie
    Tuvai.netmaandag 19 januari 2009 @ 10:50
    Ik maak voor de verandering ook maar eens een vragende post.

    Ik heb een klein appje gebouwd in PHP waarin bestanden van ewen paar honderden MBs kunnen worden geupload. Uiteraard niet de bedoeling, HTTP is daar niet voor bedoeld, en dat programma gaat ook flink tegen mijn principes in. Maar goed, in opdracht van stijfkoppige opdrachtgevers toch maar moeten maken.

    Nu werkt dat programma`tje heel leuk en aardig, is ook goed getest geworden met flinke bestanden tot 1 GB wat allemaal goed uitpakte. Nou doet zich 'opeens' een vreemd verschijnsel voor. Willekeurig retourneert $_FILES['blabla']['error'] nummertje 7. Men neme php.net: http://nl3.php.net/manual/en/features.file-upload.errors.php
    quote:
    UPLOAD_ERR_CANT_WRITE

    Value: 7; Failed to write file to disk. Introduced in PHP 5.1.0.
    Dat is hem dus. Tijdens het testen heb ik inderdaad gemerkt dat wanneer je in php.ini de upload_tmp_dir instelling vult met een verkeerd pad, je die error code 7 krijgt. Deze hadden we op het eind van de testronde echter naar de correcte map gezet, dat vervolgens ook succesvol werkte.

    En nu dus opeens willekeurig krijg je error code 7. Wie weet wat er hier aan de hand is? Ik heb al gegoogled maar vind alleen maar hetgeen dat ik hierboven gequote heb. Ik weet dus, wat de error message ook daadwerkelijk aangeeft, dat er niet naar de tmp dir geschreven kan worden, maar het waarom vind ik nergens.
    schwa78maandag 19 januari 2009 @ 10:57
    Is de map niet gewoon vol?
    Tuvai.netmaandag 19 januari 2009 @ 11:53
    Nop, het betreft hier een NAS met meer dan 1 TB opslagcapaciteit en daar is nog genoeg van beschikbaar.
    GlowMousemaandag 19 januari 2009 @ 11:57
    Bestand te groot voor het gebruikte filesystem? Foutmeldingen krijg je niet willekeurig, dus zoek het patroon maar
    Tuvai.netmaandag 19 januari 2009 @ 12:56
    quote:
    Op maandag 19 januari 2009 11:57 schreef GlowMouse het volgende:
    Bestand te groot voor het gebruikte filesystem? Foutmeldingen krijg je niet willekeurig, dus zoek het patroon maar
    Daar lijkt het juist wel heel erg op. Aan de grootte ligt het niet, want de ene keer pakt 'ie wel 700 MB, en de andere keer weer niet.
    HuHumaandag 19 januari 2009 @ 13:17
    quote:
    Op maandag 19 januari 2009 12:56 schreef Tuvai.net het volgende:

    [..]

    Daar lijkt het juist wel heel erg op. Aan de grootte ligt het niet, want de ene keer pakt 'ie wel 700 MB, en de andere keer weer niet.
    Problemen met het netwerk, dat de NAS onbereikbaar is (wordt ?) tijdens het wegschrijven?
    Tuvai.netmaandag 19 januari 2009 @ 13:45
    quote:
    Op maandag 19 januari 2009 13:17 schreef HuHu het volgende:

    [..]

    Problemen met het netwerk, dat de NAS onbereikbaar is (wordt ?) tijdens het wegschrijven?
    Dacht ik ook al aan, maar het gebeurt ook over een intern netwerk waar de verbinding constant en ononderbroken is.
    HuHumaandag 19 januari 2009 @ 13:47
    quote:
    Op maandag 19 januari 2009 13:45 schreef Tuvai.net het volgende:

    [..]

    Dacht ik ook al aan, maar het gebeurt ook over een intern netwerk waar de verbinding constant en ononderbroken is.
    Dat dacht ik ook over het interne netwerk op m'n werk, tot het moment dat het niet zo bleek te zijn .
    Tuvai.netmaandag 19 januari 2009 @ 13:57
    quote:
    Op maandag 19 januari 2009 13:47 schreef HuHu het volgende:

    [..]

    Dat dacht ik ook over het interne netwerk op m'n werk, tot het moment dat het niet zo bleek te zijn .
    Maar dat is in dit geval dus wel zo, dat hebben we zelfs nog met een tooltje geverifieerd.
    urselmaandag 19 januari 2009 @ 13:58
    Misschien een firewall die het niet toestaat dat ut lang open staat?
    Farenjimaandag 19 januari 2009 @ 16:33
    Check de max_execution_time eens van php... misschien krijg je die melding ook als ie de upload stopt omdat deze tijd is verstreken?
    cablegunmastermaandag 19 januari 2009 @ 18:04
    ik heb een vraag stel ik wil 100 posts op een gastenboek max hebben

    limit 0-10
    en dan wil ik de volgende 10 weer in een andere pagina etc.
    kan dit met een makkelijker scriptje?
    dan elke keer weer na 10 posts een nieuwe pagina te maken?
    GlowMousemaandag 19 januari 2009 @ 18:07
    Zet de huidige pagina in een GET-variabele.
    cablegunmastermaandag 19 januari 2009 @ 18:18
    quote:
    Op maandag 19 januari 2009 18:07 schreef GlowMouse het volgende:
    Zet de huidige pagina in een GET-variabele.
    ik zat te denken limit X en limit Y
    en dan +10 limit X en +10 limit Y
    alleen ik kon de hrefs niet verzinnen.

    dan krijg ik nog een switch met een get?
    boven op mijn switch en get

    dus simpelgezegd een nieuwe map ervoor gebruiken

    [ Bericht 10% gewijzigd door cablegunmaster op 19-01-2009 18:23:31 ]
    Tuvai.netmaandag 19 januari 2009 @ 18:27
    quote:
    Op maandag 19 januari 2009 16:33 schreef Farenji het volgende:
    Check de max_execution_time eens van php... misschien krijg je die melding ook als ie de upload stopt omdat deze tijd is verstreken?
    Deze staat ook al erg hoog. Was sowieso noodzakelijk omdat het hier vrij grote file uploads betreft.
    HuHumaandag 19 januari 2009 @ 18:36
    quote:
    Op maandag 19 januari 2009 18:27 schreef Tuvai.net het volgende:

    [..]

    Deze staat ook al erg hoog. Was sowieso noodzakelijk omdat het hier vrij grote file uploads betreft.
    Voor grote upload kun je beter geen PHP gebruiken, maar iets als über uploader.
    Lightmaandag 19 januari 2009 @ 18:40
    quote:
    Op maandag 19 januari 2009 18:27 schreef Tuvai.net het volgende:

    [..]

    Deze staat ook al erg hoog. Was sowieso noodzakelijk omdat het hier vrij grote file uploads betreft.
    Gewoon op oneindig zetten.
    1
    2
    3
    <?php
    set_time_limit
    (0);
    ?>
    Lightmaandag 19 januari 2009 @ 18:42
    quote:
    Op maandag 19 januari 2009 18:36 schreef HuHu het volgende:

    [..]

    Voor grote upload kun je beter geen PHP gebruiken, maar iets als über uploader.
    Er zijn oplossingen die beter geschikt zijn voor uploads dan php, da's waar. Maar soms heb je weinig keuze.
    HuHumaandag 19 januari 2009 @ 18:43
    quote:
    Op maandag 19 januari 2009 18:42 schreef Light het volgende:

    [..]

    Er zijn oplossingen die beter geschikt zijn voor uploads dan php, da's waar. Maar soms heb je weinig keuze.
    Dat klopt ja, als je vast zit aan een bepaald platform dan moet je wel. Maar als de keuze bestaat, dan zou je het kunnen overwegen. überuploader gaat via CGI en perl enzo (weet het niet precies) en dat ondersteunen veel hosts vaak wel.
    HuHumaandag 19 januari 2009 @ 18:45
    quote:
    Op maandag 19 januari 2009 18:40 schreef Light het volgende:

    [..]

    Gewoon op oneindig zetten.
    [ code verwijderd ]
    Die instelling heeft toch geen invloed op file uploads?
    quote:
    Note: The set_time_limit() function and the configuration directive max_execution_time only affect the execution time of the script itself. Any time spent on activity that happens outside the execution of the script such as system calls using system(), stream operations, database queries, etc. is not included when determining the maximum time that the script has been running.
    Zie het onderstreepte gedeelte, volgens mij houdt dat in dat uploads niet meetellen voor de execution time. Wel staat er nog dit:
    quote:
    Your web server can have other timeout configurations that may also interrupt PHP execution. Apache has a Timeout directive and IIS has a CGI timeout function. Both default to 300 seconds. See your web server documentation for specific details.
    Bron: php.net
    Tuvai.netmaandag 19 januari 2009 @ 19:06
    Ik baal ook behoorlijk van dit projectje. Ik heb immers vanaf het begin gezegd dat grote file uploads via HTTP een slecht idee is (is het gewoon niet voor bedoeld, daar heb je immers FTP voor), vanwege het 2GB bestandslimit, de fragiliteit van het uploaden via HTTP (één storing in he verbinding en je bent terug bij af), de slechte mogelijkheden van het geven van feedback naar de gebruiker toe (voortgang e.d., daar heb je enkel een hoop omslachtige PHP extensies voor die ook verre van heilig zijn). Maar goed, een stijfkoppige opdrachtgever wou toch per sé het hele gebeuren webbased en via HTTP en komt nu toch pijnlijk er achter dat dat achteraf niet zo'n goed idee was.

    Maar goed, daar kunnen we toch niks meer aan doen, maar dit probleem dat zich nu voordoet is wel heel erg vreemd, en erg willekeurig. Misschien ook wel handig om te vermelden dat de betreffende NAS een of ander gaar QNAP prul is waar je op allerlei gebieden mee beperkt wordt (zéér minieme en uitgeklede Linux distributie). Ook tijdens de installatie van het programma ontzettend veel problemen mee gehad.
    GlowMousemaandag 19 januari 2009 @ 19:24
    quote:
    Op maandag 19 januari 2009 18:18 schreef cablegunmaster het volgende:

    [..]

    ik zat te denken limit X en limit Y
    en dan +10 limit X en +10 limit Y
    alleen ik kon de hrefs niet verzinnen.

    dan krijg ik nog een switch met een get?
    boven op mijn switch en get

    dus simpelgezegd een nieuwe map ervoor gebruiken
    gastenboek.php?page=x.

    Daarna in je gastenboek.php:
    1
    2
    3
    4
    5
    6
    <?php
    $page 
    = (int)$_GET['page'];
    $page min(0$page);
    $page max($page$numpages);
    $query 'SELECT adsf FROM ghjkl ORDER BY qwerty LIMIT ' 10*$page ',10';
    ?>


    Voor dat uploadprobleem zou ik in de php-broncode duiken.
    Lightdinsdag 20 januari 2009 @ 09:28
    quote:
    Op maandag 19 januari 2009 18:45 schreef HuHu het volgende:

    [..]

    Die instelling heeft toch geen invloed op file uploads?
    [..]

    Zie het onderstreepte gedeelte, volgens mij houdt dat in dat uploads niet meetellen voor de execution time. Wel staat er nog dit:
    [..]

    Bron: php.net
    Je hebt gelijk. Gelukkig is er ook nog de instelling max_input_time.
    SuperRembodinsdag 20 januari 2009 @ 11:07
    quote:
    Op maandag 19 januari 2009 19:24 schreef GlowMouse het volgende:

    1
    2
    3
    $page = (int)$_GET['page'];
    $page = min(0, $page);
    $page = max($page, $numpages);
    Aangenomen dat $numpages groter is dan 0, resulteert dit altijd in $page = $numpages :P
    GlowMousedinsdag 20 januari 2009 @ 11:45
    quote:
    Op dinsdag 20 januari 2009 11:07 schreef SuperRembo het volgende:

    [..]

    Aangenomen dat $numpages groter is dan 0, resulteert dit altijd in $page = $numpages
    cablegunmasterdinsdag 20 januari 2009 @ 18:46
    Ik heb maar een script gepakt van internet.
    aangepast en in mijn gastenboek geplempt
    elke 10 berichtjes maakt hij een nieuwe pagina aan ( query variabele).
    TheRoachdonderdag 22 januari 2009 @ 10:06
    beste mensen,

    voor een opdracht moet ik een database maken (met sql) (op laag niveau) en daarin moet ik tabellen maken. De tabellen heb ik gemaakt met het create-statement. Het gaat over een tabel over smaakafwijkingen (zoet, zuur, bitter enz.). Hoe kan ik verwerken bij het schrijven van een tabel dat men alleen deze waardes kan invullen en geen andere? Moet dit meteen bij de create-statements of kan je dit later ook toevoegen als je de waardes in gaat vullen en dat je dan zegt dat ze alleen die smaken in kunnen voeren.

    Hopelijk is het een beetje duidelijk en alvast bedankt voor de reacties.

    [ Bericht 6% gewijzigd door TheRoach op 22-01-2009 10:14:00 ]
    HuHudonderdag 22 januari 2009 @ 10:12
    Als de smaken van te voren vast staan kun je een ENUM gebruiken.
    TheRoachdonderdag 22 januari 2009 @ 10:24
    quote:
    Op donderdag 22 januari 2009 10:12 schreef HuHu het volgende:
    Als de smaken van te voren vast staan kun je een ENUM gebruiken.
    Ok thnx. Klopt het dat het dan op deze manier moet:

    1
    2
    3
    4
    5
    Create table kwantitatief
                         (WBFnummer number (8) not null,
       Geuraanduiding enum ("zoet", "zuur", "bitter" enz. not null,
                          ......
       PRIMARY KEY(WBFnummer));


    En als mensen een cijfer moeten geven kan je dan ook gewoon [ kleur enum (1, 2, 3, ... , 10) not null,]
    doen?
    GlowMousedonderdag 22 januari 2009 @ 10:28
    Nee, dat kan niet. Lees http://dev.mysql.com/doc/refman/5.0/en/enum.html door (alles is wel interessant om te lezen daar).

    Maar voor getallen zijn er weer andere datatypen beschikbaar
    Xcaliburdonderdag 22 januari 2009 @ 10:29
    Nadeel van een enum is dat je je database moet aanpassen als er een smaak bijkomt
    Hoewel die kans in dit geval waarschijnlijk 0 is
    TheRoachdonderdag 22 januari 2009 @ 10:36
    Ja er komt geen smaak bij , dus dan is het wel makkelijk...
    TheRoachdonderdag 22 januari 2009 @ 10:44
    quote:
    Op donderdag 22 januari 2009 10:28 schreef GlowMouse het volgende:
    Nee, dat kan niet. Lees http://dev.mysql.com/doc/refman/5.0/en/enum.html door (alles is wel interessant om te lezen daar).

    Maar voor getallen zijn er weer andere datatypen beschikbaar
    Iets dergelijks klopt dus niet? Wat moet er veranderd worden?:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Create table kwantitatief
       (WBFnummer number (8) not null,
       Geuraanduiding ENUM (“vol” , “wijnachtig” , “complex” , “fris” , “fruitig” , “bloemig” , “kruidig” , “honingachtig” , “houtachtig” , “aards”)not null,
       Geurafwijking ENUM (“aceton” , “muf” , “muis” , “geranium” , “oxidatie” , “sulfiet” , “azijn” , “rotte_eieren” , “gist” , “medicijn”)not null,
       Smaakafwijking ENUM (“body” , “zoet” , “zuur” , “zout” , “bitter” , “mineralen” , “groenten” , “meststof” ) not null,
       Smaakgebrek ENUM (“oxidatie” , “azijnzuur” , “muf” , “medicijnachtig” , “gistsmaak” , “muis” , “rotte_eieren” )not null,
       Balansafwijking ENUM (“zoet” , “zuur” , “zout” , “bitter” , “jannine” , “body” , “alcohol” , “mousse” ) not null,
       Afdronkafwijking ENUM (“bitter” , “muf” , “zuur” )not null,
       Opmerkingen varchar (50),
       PRIMARY KEY(WBFnummer)
       );


    [ Bericht 39% gewijzigd door TheRoach op 22-01-2009 11:21:04 ]
    LordNemephisdonderdag 22 januari 2009 @ 11:21
    Hoi mensen,

    ik wil graag tellen hoeveel regels er in een text-area zitten. Dit heb ik tot nu toe
    1
    2
    $regels = count(explode("\n",$_POST['$fObjText']));
    echo $regels;


    Maar de waarde van uitkomst is altijd 1

    Iemand een idee hoe dit wel werkend te krijgen?
    GlowMousedonderdag 22 januari 2009 @ 11:24
    quote:
    Op donderdag 22 januari 2009 10:44 schreef TheRoach het volgende:

    [..]

    Iets dergelijks klopt dus niet? Wat moet er veranderd worden?:
    [ code verwijderd ]
    Met cijfers gaat het fout zoals je kunt lezen. Maar van het getallenidee ben je opeens afgestapt?
    quote:
    Op donderdag 22 januari 2009 11:21 schreef LordNemephis het volgende:
    Hoi mensen,

    ik wil graag tellen hoeveel regels er in een text-area zitten. Dit heb ik tot nu toe
    [ code verwijderd ]

    Maar de waarde van uitkomst is altijd 1

    Iemand een idee hoe dit wel werkend te krijgen?
    Gokje: $_POST['$fObjTest'] is niet ingesteld. Gaat dat wel goed het dat dollarteken?
    TheRoachdonderdag 22 januari 2009 @ 11:25
    quote:
    Op donderdag 22 januari 2009 11:24 schreef GlowMouse het volgende:

    [..]

    Met cijfers gaat het fout zoals je kunt lezen. Maar van het getallenidee ben je opeens afgestapt?
    [..]

    Ik heb 1 tabel met getallen (kwalitatief) en 1 tabel met letters (kwantitatief), deze laatste tabel heb ik hierboven laten zien. Maar kan dit zo of niet?
    Swetseneggerdonderdag 22 januari 2009 @ 11:38
    quote:
    Op donderdag 22 januari 2009 11:21 schreef LordNemephis het volgende:
    Hoi mensen,

    ik wil graag tellen hoeveel regels er in een text-area zitten. Dit heb ik tot nu toe
    [ code verwijderd ]

    Maar de waarde van uitkomst is altijd 1

    Iemand een idee hoe dit wel werkend te krijgen?
    Op de eerste plaats waarom wil je dit? en \n is niet op elk OS gelijk. Je kan beter PHP_EOL pakken
    GlowMousedonderdag 22 januari 2009 @ 11:48
    quote:
    Op donderdag 22 januari 2009 11:25 schreef TheRoach het volgende:

    [..]

    Ik heb 1 tabel met getallen (kwalitatief) en 1 tabel met letters (kwantitatief), deze laatste tabel heb ik hierboven laten zien. Maar kan dit zo of niet?
    Wat je liet zien wel, met cijfers moet je opletten, zie de eerder geplaatste link.
    quote:
    Op donderdag 22 januari 2009 11:38 schreef Swetsenegger het volgende:

    [..]

    en \n is niet op elk OS gelijk. Je kan beter PHP_EOL pakken
    Het gaat om user-invoer, dus je end-of-line hangt van de gebruiker af en niet van de server. Ik weet niet wat de browser doorstuurt trouwens, dat zou best voor alle OS's hetzelfde kunnen zijn.
    Swetseneggerdonderdag 22 januari 2009 @ 11:59
    quote:
    Op donderdag 22 januari 2009 11:48 schreef GlowMouse het volgende:

    [..]

    Wat je liet zien wel, met cijfers moet je opletten, zie de eerder geplaatste link.
    [..]

    Het gaat om user-invoer, dus je end-of-line hangt van de gebruiker af en niet van de server. Ik weet niet wat de browser doorstuurt trouwens, dat zou best voor alle OS's hetzelfde kunnen zijn.
    Hmz, nee volgens mij niet hoor. in de POST vars staat volgens mij het eol teken van je OS
    Swetseneggerdonderdag 22 januari 2009 @ 12:00
    Maar goed je kan er natuurlijk ook eerst een nl2br overheen halen en dan exploden op <br />
    GlowMousedonderdag 22 januari 2009 @ 12:02
    quote:
    Op donderdag 22 januari 2009 11:59 schreef Swetsenegger het volgende:

    [..]

    Hmz, nee volgens mij niet hoor. in de POST vars staat volgens mij het eol teken van je OS
    http://www.sitepoint.com/(...)dings-in-javascript/
    Je kunt niks vertrouwen blijkbaar.
    Tuvai.netdonderdag 22 januari 2009 @ 12:26
    Het file upload error nummer 7 probleem is opgelost. De fout zat 'm in het feit dat een van de 5 HDs van de NAS naar de knoppen was (RAID array). Schijfje vervangen en het schijnt weer te werken.
    Lightdonderdag 22 januari 2009 @ 15:32
    quote:
    Op donderdag 22 januari 2009 12:02 schreef GlowMouse het volgende:

    [..]

    http://www.sitepoint.com/(...)dings-in-javascript/
    Je kunt niks vertrouwen blijkbaar.
    Volgens mij kun je er prima op vertrouwen dat IE doet waar het zelf zin in heeft
    Flepkedonderdag 22 januari 2009 @ 17:00
    Jeuj mijn eerste post in deze reeks..
    Nouja, ik ben opzoek naar een domein check script, er is genoeg te vinden dat is het probleem niet.
    Helaas zijn alle scripts super langzaam.
    Ik heb tientallen scripts geprobeerd, deze bijvoorbeeld, erg mooi script maar lang niet zo snel als die van een hostingbedrijf zoals bijvoorbeeld deze.
    Iemand enig idee waar het hem in zit?
    urseldonderdag 22 januari 2009 @ 17:04
    Ik zal waarschijnlijk hier niet goed zitten, maar misschien dat jullie me wel kunnen helpen waar en hoe ik het volgende kan bewerkstelligen.

    Waar ik namelijk op zoek naar ben is een manier om de gebruikers te informeren. Echter is de bedoeling dat dit redelijk real-time gebeurd. In ons systeem komt het namelijk wel eens voor dat een pagina tot 30 minuten open staat. Men is dan in de tussentijd papieren aan het uitzoeken welke data ingevuld moet worden etc.
    Nu wil ik dus, dat ook al is er geen activiteit, dat het systeem ook bij deze gebruikers een bericht op het scherm kan plaatsen.

    Iemand een idee hoe ik dit doe en waar ik dit het beste kan zoeken?
    Eastmandonderdag 22 januari 2009 @ 17:58
    Ben mijn website aan het aanpassen, maar kom er even niet uit...

    Ik wil graag een hyperlink toevoegen aan een plaatje die in een <div> zit.
    hier onder het stukje code waar het om gaat...

    1
    2
    3
    4
    5
    6
    7
    else if($page == 'index.php')

             {
                
                echo "<div id='imageLeft6'></div>";

             }

    Heb <a href=""> op meerdere plekken geprobeerd, maar het lukt allemaal niet...

    thnx..
    Flepkedonderdag 22 januari 2009 @ 18:37
    quote:
    Op donderdag 22 januari 2009 17:04 schreef ursel het volgende:
    Ik zal waarschijnlijk hier niet goed zitten, maar misschien dat jullie me wel kunnen helpen waar en hoe ik het volgende kan bewerkstelligen.

    Waar ik namelijk op zoek naar ben is een manier om de gebruikers te informeren. Echter is de bedoeling dat dit redelijk real-time gebeurd. In ons systeem komt het namelijk wel eens voor dat een pagina tot 30 minuten open staat. Men is dan in de tussentijd papieren aan het uitzoeken welke data ingevuld moet worden etc.
    Nu wil ik dus, dat ook al is er geen activiteit, dat het systeem ook bij deze gebruikers een bericht op het scherm kan plaatsen.

    Iemand een idee hoe ik dit doe en waar ik dit het beste kan zoeken?
    Hmm lijkt me zo te zien wel iets om in ajax te maken
    Swetseneggerdonderdag 22 januari 2009 @ 18:42
    1
    2
    3
    4
    5
    6
    7
    else if($page == 'index.php')

             {
                
                echo "<div id='imageLeft6'><a href=\"linkje\"><img src=\"path/naar/plaatje\" /></div>";

             }
    Swetseneggerdonderdag 22 januari 2009 @ 18:44
    quote:
    Op donderdag 22 januari 2009 18:37 schreef Flepke het volgende:

    [..]

    Hmm lijkt me zo te zien wel iets om in ajax te maken
    Wat is er mis met gewoon simpele clientside scripting?
    LordNemephisdonderdag 22 januari 2009 @ 18:46
    quote:
    Op donderdag 22 januari 2009 17:58 schreef Eastman het volgende:
    Ben mijn website aan het aanpassen, maar kom er even niet uit...

    Ik wil graag een hyperlink toevoegen aan een plaatje die in een <div> zit.
    hier onder het stukje code waar het om gaat...
    [ code verwijderd ]

    Heb <a href=""> op meerdere plekken geprobeerd, maar het lukt allemaal niet...

    thnx..
    In je CSS bestand:
    1
    2
    3
    4
    5
    6
    7
    8
    #logo_4ro {
      background:url(../img/4ro.gif) no-repeat left;
      width: 120px;
      height: 39px;
      position: relative; 
      float: left; 
      margin-left: 32px;
    }


    in je header:
    1<script type="text/javascript" src="js/target_blank.js"></script>


    in je JS bestand:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // JavaScript Document
    function externalLinks() {
    if (!document.getElementsByTagName) return;
    var anchors = document.getElementsByTagName("a");
    for (var i=0; i<anchors.length; i++) {
    var anchor = anchors[i];
    if (anchor.getAttribute("href") &&
    anchor.getAttribute("rel") == "external")
    anchor.target = "_blank";
    }
    }
    window.onload = externalLinks; 


    en in je body:
    1<a id="logo_4ro" accesskey="0" href="http://www.4ro.nl" rel="external"></a>


    en terugkomend op mijn vraag:
    quote:
    Op donderdag 22 januari 2009 12:00 schreef Swetsenegger het volgende:
    Maar goed je kan er natuurlijk ook eerst een nl2br overheen halen en dan exploden op <br />
    Ik heb het uiteindelijk na een en ander proberen anders opgelost want het bleek dat regels tellen toch niet de oplossing was. Kan wel gaan uitleggen hoe en wat maar dat wordt een lang verhaal en ik wil zo eerst ontbijten

    Het is irritant als je nog niet genoeg kennis hebt om alles 123 op te lossen - wel leerzaam, maar ook tijdvretend om nieuwe dingen uit te vinden.

    [ Bericht 4% gewijzigd door LordNemephis op 22-01-2009 18:48:12 (typootje) ]
    SuperRembodonderdag 22 januari 2009 @ 19:15
    quote:
    Op donderdag 22 januari 2009 18:42 schreef Swetsenegger het volgende:

    [ code verwijderd ]
    En nog "</a>" na het plaatje. (Hoewel het zonder ook wel zal "werken")
    Eastmandonderdag 22 januari 2009 @ 19:19
    quote:
    Op donderdag 22 januari 2009 18:42 schreef Swetsenegger het volgende:

    [ code verwijderd ]


    Thanks, ik heb geprobeerd, maar het lukt niet echt...

    afbeelding is dan helemaal weg..
    Swetseneggerdonderdag 22 januari 2009 @ 19:21
    quote:
    Op donderdag 22 januari 2009 19:19 schreef Eastman het volgende:

    [..]

    Thanks, ik heb geprobeerd, maar het lukt niet echt...

    afbeelding is dan helemaal weg..
    Zie de opmerking van SuperRembo boven je. En post je relevante code eens.
    Farenjidonderdag 22 januari 2009 @ 19:23
    quote:
    Op donderdag 22 januari 2009 18:44 schreef Swetsenegger het volgende:

    [..]

    Wat is er mis met gewoon simpele clientside scripting?
    Ajax *is* gewoon "simpele clientside scripting", maar los daarvan:

    Zonder gebruik van asynchrone technieken moet je dan periodiek de hele pagina refreshen (het web is immers een pull technologie, geen push technologie) of je moet gebruik moet maken van ranzige truukjes als iframes (die je ook periodiek moet refreshen), en dan is het veel beter om gewoon gebruik te maken van ajax want dat is exact voor dat doel ontworpen.
    Swetseneggerdonderdag 22 januari 2009 @ 19:25
    quote:
    Op donderdag 22 januari 2009 19:23 schreef Farenji het volgende:

    [..]

    Ajax *is* gewoon "simpele clientside scripting", maar los daarvan:
    Bij ajax ga je verbinding leggen met de server, dus gaat een stapje verder.
    quote:
    Zonder gebruik van asynchrone technieken moet je dan periodiek de hele pagina refreshen (het web is immers een pull technologie, geen push technologie) of je moet gebruik moet maken van ranzige truukjes als iframes (die je ook periodiek moet refreshen)
    Waarom Controleer gewoon op input events.
    quote:
    , en dan is het veel beter om gewoon gebruik te maken van ajax want dat is exact voor dat doel ontworpen.
    Ik zie helemaal niet in waarom je de server erbij zou moeten betrekken om te controleren of de client wat doet.
    Eastmandonderdag 22 januari 2009 @ 19:28
    [post verwijderd]

    [ Bericht 50% gewijzigd door Eastman op 23-01-2009 14:43:24 ]
    Farenjidonderdag 22 januari 2009 @ 19:29
    quote:
    Op donderdag 22 januari 2009 19:25 schreef Swetsenegger het volgende:

    [..]

    Bij ajax ga je verbinding leggen met de server, dus gaat een stapje verder.
    [..]

    Waarom Controleer gewoon op input events.
    [..]

    Ik zie helemaal niet in waarom je de server erbij zou moeten betrekken om te controleren of de client wat doet.
    Het gaat ursel er om dat (als ik hem goed begrijp) *vanuit de webserver* een bericht *naar de gebruiker* verstuurd kan worden, *ook als die gebruiker geen activiteit vertoont*.

    Jij mag me uitleggen hoe je dat zonder ajax en zonder herladende iframes voor elkaar gaat krijgen.
    Swetseneggerdonderdag 22 januari 2009 @ 19:30
    quote:
    Op donderdag 22 januari 2009 19:29 schreef Farenji het volgende:

    [..]

    Het gaat ursel er om dat (als ik hem goed begrijp) *vanuit de webserver* een bericht *naar de gebruiker* verstuurd kan worden, *ook als die gebruiker geen activiteit vertoont*.

    Jij mag me uitleggen hoe je dat zonder ajax en zonder herladende iframes voor elkaar gaat krijgen.
    Dat gaat inderdaad niet, maar ik begrijp dat hij gebruikers gewoon wil waarschuwen bij te lange inactiviteit. En dat gaat prima zonder ajax.
    Farenjidonderdag 22 januari 2009 @ 19:34
    quote:
    Op donderdag 22 januari 2009 19:30 schreef Swetsenegger het volgende:

    [..]

    Dat gaat inderdaad niet, maar ik begrijp dat hij gebruikers gewoon wil waarschuwen bij te lange inactiviteit. En dat gaat prima zonder ajax.
    Dat zijn 2 verschillende dingen.
    Dus mag ursel even duidelijkheid geven over wat ie precies bedoelt, maar hoe dan ook, dat kan ie beter hier doen: [Javascript] voor dummies (deel 8)
    Roy_Tdonderdag 22 januari 2009 @ 19:48
    quote:
    Op donderdag 22 januari 2009 19:29 schreef Farenji het volgende:

    Het gaat ursel er om dat (als ik hem goed begrijp) *vanuit de webserver* een bericht *naar de gebruiker* verstuurd kan worden, *ook als die gebruiker geen activiteit vertoont*.

    Jij mag me uitleggen hoe je dat zonder ajax en zonder herladende iframes voor elkaar gaat krijgen.
    Comet (aka "reverse ajax")
    urseldonderdag 22 januari 2009 @ 19:58
    quote:
    Op donderdag 22 januari 2009 19:29 schreef Farenji het volgende:

    [..]

    Het gaat ursel er om dat (als ik hem goed begrijp) *vanuit de webserver* een bericht *naar de gebruiker* verstuurd kan worden, *ook als die gebruiker geen activiteit vertoont*.

    Jij mag me uitleggen hoe je dat zonder ajax en zonder herladende iframes voor elkaar gaat krijgen.
    Dit inderdaad. In dit geval moesten we met spoed voor onderhoud de applicatie tijdelijk uitschakelen. Echter zijn niet al onze gebruikers in het pand zelf aanwezig en kunnen dit ook gewoon bedrijven zijn welke ingelogged zijn. Om ervoor te zorgen dat ze niet al hun reeds al ingevulde, maar dus nog niet opgeslagen informatie kwijt raken zat ik er aan te denken om iets te bouwen dat ik een bericht op zijn scherm laat zien waarbij ik hem waarschuw dat het systeem er even uit moet.

    Maarja, verwachtte idd dat het wel iets van Ajax zou gaan worden ja. Ff maar in verdiepen dan

    [ Bericht 8% gewijzigd door ursel op 22-01-2009 20:08:20 ]
    Farenjidonderdag 22 januari 2009 @ 20:08
    quote:
    Op donderdag 22 januari 2009 19:48 schreef Roy_T het volgende:

    [..]

    Comet (aka "reverse ajax")
    Jaja.
    quote:
    Specific techniques for accomplishing streaming Comet include the following.

    Hidden IFrame
    [..]

    XMLHttpRequest
    [..]
    Dussss.... oude wijn in nieuwe zakken.
    HuHudonderdag 22 januari 2009 @ 20:14
    Er schijnt een één of ander Java ding te zijn dat een request kan ontvangen, in de wachtrij zetten en pas op het moment dat het nodig is een response stuurt. Werkt voor duizenden requests die op die manier kunnen blijven "hangen" zonder dat het problemen geeft op je server.

    Dan maakt je AJAX applicatie bij het laden een connectie, de server slaat die op en als het nodig is (na 10 minuten ofzo) stuurt 'ie data terug. Ik weet alleen even de naam niet .
    Roy_Tdonderdag 22 januari 2009 @ 20:15
    quote:
    Op donderdag 22 januari 2009 20:08 schreef Farenji het volgende:

    Jaja.
    Wat "Jaja"? Comet is een prima manier om een HTTP-connectie open te houden en data naar de client te sturen, zonder dat deze hoeft te pollen. Niet meer zeggen dus dat je altijd moet pollen (AJAX, pagina's in iframes refreshen, whatever).
    Swetseneggerdonderdag 22 januari 2009 @ 20:17
    quote:
    Op donderdag 22 januari 2009 20:15 schreef Roy_T het volgende:

    [..]

    Wat "Jaja"? Comet is een prima manier om een HTTP-connectie open te houden en data naar de client te sturen, zonder dat deze hoeft te pollen. Niet meer zeggen dus dat je altijd moet pollen (AJAX, pagina's in iframes refreshen, whatever).
    van je eigen bron
    quote:
    Comet applications typically use Ajax with long polling to detect new information on the server.
    HuHudonderdag 22 januari 2009 @ 20:47
    Ik weet al weer wat ik bedoelde: Continuations middels Jetty. Daarmee zou je zoiets kunnen doen.
    urseldonderdag 22 januari 2009 @ 20:54
    ahh.. mooi en genoeg leesvoer voor morgen..
    Bedankt allemaal..
    mrbombasticvrijdag 23 januari 2009 @ 00:11
    Ik moet een ranglijst maken voor een spel met 3 spelers. In totaal zijn er 111 spelers en ieder speelt 24 wedstrijden. Ik heb de volgende tabellen:

    Tabel1:
    Id | Naam | Punten1 | ... | Punten24 | Totaal

    Met punten1 de behaalde punten in wedstrijd 1 en totaal het totaal aantal punten.

    Tabel2:
    Id | Naam | Tegenstanders

    Tegenstanders is van het type string en gescheiden met komma's.

    Nu moet ik de volgende output hebben:

    Positie | Naam | Punten1 | ... | Punten24 | Totaal | Weerstand
    1. | John | ... | .....
    2. etcetera

    met Weerstand de som van de punten van alle tegenstanders van (in dit geval John). John heeft 48 tegenstanders gehad en van deze 48 personen moeten de totaalscores bij elkaar opgeteld worden en bij Weerstand van John komen te staan.
    En zo ook voor de overige 110 spelers.

    Het enige lastige hierbij is dus hoe ik de weerstandspunten van elke speler ga bepalen. Hier heb ik een query voor nodig, maar ik heb geen idee hoe ik die moet maken.
    GlowMousevrijdag 23 januari 2009 @ 00:12
    Het begint met een goede opzet. 24 kolommen om punten weer te geven is geen goede opzet. Strings scheiden met komma's is ook not-done in een database, niet hier althans.
    mrbombasticvrijdag 23 januari 2009 @ 01:21
    Ik heb volgens mij net een oplossing gevonden. De code (zonder alle 24 wedstrijden)

    1
    2
    3
    4
    5
    6
    7
    SELECT t.naam, t.totaal, SUM(s.totaal) AS weerstand
    FROM `tabel1` AS t, `tabel1` AS s
    WHERE FIND_IN_SET(s.naam,
      (SELECT tegenstanders from `tabel2` where naam=t.naam)
    )>0
    GROUP BY t.naam
    ORDER BY t.totaal DESC, weerstand DESC


    [ Bericht 19% gewijzigd door mrbombastic op 23-01-2009 12:19:40 ]
    Roy_Tvrijdag 23 januari 2009 @ 15:01
    Zou je die wedstrijden niet liever in een tabel "wedstrijden" zetten, met hierin dus voor iedere user 24 rows (eentje per wedstrijd)? En een tabel "tegenstanders" met hierin dus voor iedere user een row per tegenstander?

    PS: Het is niet echt een vraag
    beertenzondag 25 januari 2009 @ 13:37
    mail() en headers

    Hoi,

    ik ondervind problemen met de ingebouwde mail() functie van PHP.
    Als ik mijn nieuwsbirfe verstuur komt het HTML-mailtje lang niet overal correct aan. Wel HTML, geen HTML, alleen maar de gecodeerde tekst.

    Het zal naar ik vermoed te maken hebben met de headers van het emailtje.
    Nu ben ik naarstig op zoek naar een oplossing.
    - een tutorial waarin de mailheaders tot in details worden besproken.
    - een geschikte mailclass (phpmailer en swiftmailer bijvoorbeeld)
    - whatever

    Ik wil meer te weten komen over de oorzaken en oplossing. Met name details van de diverse headers. Wat ik ook zoek, ik kom niet veel verder dan de standaard opties (afzender, attachement, cc, bcc, returnadress etc.)

    Iemand een link met meer info over hoe email echt cporrect te versturen?
    Qunixzondag 25 januari 2009 @ 13:42
    Ik zoek tutorials over design patterns... Weet iemand een paar goeie?
    Swetseneggerzondag 25 januari 2009 @ 13:46
    quote:
    Op zondag 25 januari 2009 13:37 schreef beerten het volgende:
    mail() en headers

    Hoi,

    ik ondervind problemen met de ingebouwde mail() functie van PHP.
    Als ik mijn nieuwsbirfe verstuur komt het HTML-mailtje lang niet overal correct aan. Wel HTML, geen HTML, alleen maar de gecodeerde tekst.

    Het zal naar ik vermoed te maken hebben met de headers van het emailtje.
    Nu ben ik naarstig op zoek naar een oplossing.
    - een tutorial waarin de mailheaders tot in details worden besproken.
    - een geschikte mailclass (phpmailer en swiftmailer bijvoorbeeld)
    - whatever

    Ik wil meer te weten komen over de oorzaken en oplossing. Met name details van de diverse headers. Wat ik ook zoek, ik kom niet veel verder dan de standaard opties (afzender, attachement, cc, bcc, returnadress etc.)

    Iemand een link met meer info over hoe email echt cporrect te versturen?
    Houdt er ook rekening mee dat volgens een bepaalde rfc mails maar een bepaalde lengte mogen zijn zonder linebreak. In html mails zet ik dus gewoon achter elke regel een <br /> Dat heeft bij mij problemen met onder andere planet ontvangers afgevangen.

    Ah, gevonden: http://www.phpfreakz.nl/forum.php?forum=1&iid=776898
    Farenjizondag 25 januari 2009 @ 15:46
    quote:
    Op zondag 25 januari 2009 13:42 schreef Qunix het volgende:
    Ik zoek tutorials over design patterns... Weet iemand een paar goeie?
    Dat is een best breed begrip, welke / wat voor patterns? Creationele? Structurele? Er zijn er veel.
    Met google en in wikipedia vind je veel info maar goed toepassen van design patterns is imho niet iets dat je "even" uit een tutorial leert. Het gaat erom dat je weet welke bekende patterns er allemaal al zijn, en vooral: hoe richt je je applicatie zo goed mogelijk in, zodat je zo handig mogelijk van de patterns gebruik maakt (en ook: wanneer moet je een pattern niet gebruiken).

    Als je er echt meer over wil weten dan is het misschien het beste om er het standaardwerk over te kopen: http://www.amazon.com/Des(...)sional/dp/0201633612

    Mocht je gewoon willen beginnen met wat simpele patterns, dan zou ik aanraden: Observer, Iterator en Command. Relatief makkelijk te implementeren maar erg nuttig.
    Darkomenmaandag 26 januari 2009 @ 12:58
    Htacces en rewrite vraagje
    Ik heb 2 urls die moeten worden verwezen, deze kunnen dus beide voorkomen

    domein.nl/auto/userid
    en
    domein.nl/auto/userid?img=id

    De eerste los ik zo op,
    RewriteRule ^auto/$ [L]
    #RewriteRule auto/(.*) rewritetestfolder/?user=$1 [PT]

    en de 2de zo
    RewriteCond %{QUERY_STRING} img=(.*)
    RewriteRule ^auto/(.*) rewritetestfolder/index.php?user=$1&img=%1

    Maar hoe krijg ik deze samen werkend, als ik ze zoals hierboven bovenelkaar zit dan word de eerste url niet verwezen en krijg ik een 404 error.
    mstxmaandag 26 januari 2009 @ 13:42
    quote:
    Op maandag 26 januari 2009 12:58 schreef Darkomen het volgende:
    Htacces en rewrite vraagje
    Ik heb 2 urls die moeten worden verwezen, deze kunnen dus beide voorkomen

    domein.nl/auto/userid
    en
    domein.nl/auto/userid?img=id

    De eerste los ik zo op,
    RewriteRule ^auto/$ [L]
    #RewriteRule auto/(.*) rewritetestfolder/?user=$1 [PT]

    en de 2de zo
    RewriteCond %{QUERY_STRING} img=(.*)
    RewriteRule ^auto/(.*) rewritetestfolder/index.php?user=$1&img=%1

    Maar hoe krijg ik deze samen werkend, als ik ze zoals hierboven bovenelkaar zit dan word de eerste url niet verwezen en krijg ik een 404 error.
    Dat zou gewoon met 1 regel moeten kunnen omdat hij met de QSA parameter alle GET variabelen (dus ook "img") er automatisch bij zet.
    1RewriteRule ^auto/([0-9]+)$ rewritetestfolder/index.php?user=$1 [QSA]
    Darkomenmaandag 26 januari 2009 @ 13:48
    Oek dat zoek ik dus, eens proberen, alvast bedankt!
    RensWissemaandag 26 januari 2009 @ 15:06
    Hallo, ik heb hier een PHP-script. Dit script leest RSS items uit.

    Deze wil ik gebruiken voor een nieuwspagina, waarop meerdere nieuwsfeeds uit worden gelezen zoals AD, NU.nl, NOS en meer. Het is voor een website die ik voor mijn stage aan het vernieuwen ben.

    Eén van de problemen met de huidige site is dat er nogal veel tegelijkertijd wordt uitgelezen waardoor de site veel trager is en wat minder overzichtelijk is dan hij zou kunnen zijn.

    Nu is de bedoeling dit te verminderen door maximaal de vijf nieuwste items uit te lezen, in plaats van wat er soms wel twintig zijn per feed. Ik heb echter geen verstand van PHP en dit script ook niet geschreven, en nu is mijn vraag: hoe kan ik deze code aanpassen zodat alleen de vijf recentste berichten worden getoond? Verder werkt dit script overigens exact zoals de bedoeling is.

    Code:
    quote:
    <?php
    //define the source of the feed
    define('omroepzeeland_feed','http://www.omroepzeeland.nl/rss_feed/index.xml');
    //recive file form server
    $xml_feed = file_get_contents(omroepzeeland_feed);
    //create a xml phraser
    $xml_praser = xml_parser_create();
    //tell the vars to the xml phrasers
    xml_parse_into_struct($xml_praser,$xml_feed,$xml_keys,$xml_index);
    //lets phrase ^^
    xml_parser_free($xml_praser);
    //generate the headlines
    for($i = 2; !empty($xml_index['TITLE'][$i]); $i++){
    //title van de website in bold de rest niet.
    if($i == 0){
    //echo '<strong>Headlines van:<a href=\"'.$xml_keys[$xml_index['LINK'][$i]]['value'].'\">".$xml_keys[$xml_index['TITLE'][$i]]['value']."</a></strong><br />';
    echo '<strong>Headlines van:<a href="'.$xml_keys[$xml_index['LINK'][$i]]['value'].'">'.$xml_keys[$xml_index['TITLE'][$i]]['value'].'</a></strong><br />';
    }else{

    echo '<a href="'.$xml_keys[$xml_index['LINK'][$i]]['value'].'">'.$xml_keys[$xml_index['TITLE'][$i]]['value'].'</a><br />';
    }
    }
    ?>
    GlowMousemaandag 26 januari 2009 @ 15:08
    Om de vijf recenste op te halen moet je alsnog alle feeds ophalen, en dat is juist wat tijd kost. De truc is om de feeds al ergens lokaal te hebben staan.
    RensWissemaandag 26 januari 2009 @ 15:16
    Hm, dat is eigenlijk ook de bedoeling niet.

    Maar het is visueel in elk geval wel een oplossing, alleen technisch dus niet.
    Lightmaandag 26 januari 2009 @ 16:12
    quote:
    Op maandag 26 januari 2009 15:16 schreef RensWisse het volgende:
    Hm, dat is eigenlijk ook de bedoeling niet.

    Maar het is visueel in elk geval wel een oplossing, alleen technisch dus niet.
    Het idee achter RSS is ook niet dat je bij iedere pageview opnieuw de feed uitleest.
    Roy_Tmaandag 26 januari 2009 @ 16:53
    Gebruik MagpieRSS ofzo om die feeds binnen te trekken. Zit ingebakken caching in.
    Keroldinsdag 27 januari 2009 @ 11:59
    Parse error: syntax error, unexpected T_STRING in C:\xampp\htdocs\besteldone.php on line 111
    Dat is de error die ik krijg n.a.v. mijn volgende script:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
            mysql_connect
    (localhost"root""") or die mysql_error();[s][/s]
            
    mysql_select_db("leertaak") or die mysql_error();
            
            
    $query1 mysql_query("SELECT `klantnr` FROM `klant` WHERE `username` = '".$_SESSION['username']."'") or die mysql_error();
            
    $rowmysql_fetch_array($query1);
            
    $klantnr $row['klantnr'];
            
    mysql_query("INSERT INTO `orders` (`klantnr`) VALUES ('".$klantnr."')") or die mysql_error();
            
            
    $query2 mysql_query("SELECT `ordernr` FROM `orders` WHERE `klantnr` = '".$klantnr."'") or die mysql_error();
            
    $row2 mysql_fetch_array($query2);
            
    $ordernr $row2['ordernr'];
    ?>
    Natuurlijk is het script groter dan dit maar het gaat hierboven fout... Iemand die de fout ziet? Ik kom er niet uit.
    111 begint bij $query1 = ........

    [ Bericht 1% gewijzigd door Kerol op 27-01-2009 12:09:18 ]
    HuHudinsdag 27 januari 2009 @ 12:01
    1
    2
    3
    <?php
    mysql_select_db
    (leertaak);
    ?>


    Je bent de $ voor leertaak vergeten.
    Keroldinsdag 27 januari 2009 @ 12:08
    Nee $leertaak bestaat niet eens, maar leertaak is de database die geselecteerd moet worden..

    Overigens krijg ik nu deze error; Parse error: syntax error, unexpected T_STRING in C:\xampp\htdocs\besteldone.php on line 108
    GlowMousedinsdag 27 januari 2009 @ 12:14
    or die mysql_error();[ s ][ /s]

    wat is dat met die [ s ]?
    Keroldinsdag 27 januari 2009 @ 12:15
    quote:
    Op dinsdag 27 januari 2009 12:14 schreef GlowMouse het volgende:
    or die mysql_error();[ s ][ /s]

    wat is dat met die [ s ]?
    Heeft Fok er zelf ingezet, staat niet in het bestand
    GlowMousedinsdag 27 januari 2009 @ 12:26
    Die is een functie dus moet je haakjes gebruiken om argumenten mee te geven
    Keroldinsdag 27 januari 2009 @ 12:32
    quote:
    Op dinsdag 27 januari 2009 12:26 schreef GlowMouse het volgende:
    Die is een functie dus moet je haakjes gebruiken om argumenten mee te geven
    Chandlerdinsdag 27 januari 2009 @ 14:41
    Ik zit met iets vaags, op een of andere manier wordt een bepaald element niet meegenomen als ik een pagina verstuurd met POST (form)

    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
    <?php
    print_r($_POST);
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />

        <link href="/style.css" rel="stylesheet" type="text/css" />
        <link href="/style_menu.css" rel="stylesheet" type="text/css" />
        <link href="/card.css" rel="stylesheet" type="text/css" />
        <script type="text/javascript" src="/card.js"></script>
    </head>
    <body>


                <form method="post" action="" name="ecard_form">
                <input type="hidden" id="card_id" name="card_id" value="d9752b49" />

                <div class="ecard_left">
                    <strong>Ontvanger(s)</strong><br />
                    <br />
                    <fieldset>
                    <label>Naam</label><input type="text" id="card_receiver_name" name="card_receiver_name" /><br />
                    <label>Email</label><input type="text" id="card_receiver_email" name="card_receiver_email" /><br />
                    </fieldset>
                    <a style="font-size: 10px;" href="javascript:void(0);" onclick="ecardjs_toevoegen();">Toevoegen</a> -
                    <a style="font-size: 10px;" href="javascript:void(0);" onclick="ecardjs_verwijderen();">Verwijderen</a> -
                    <a style="font-size: 10px;" href="javascript:void(0);" onclick="ecardjs_bewerken();">Bewerken</a> -
                    <div style="font-size: 9px; display: inline;" id="ecards_over">10 over</div><br />
                    <select name="card_receivers" size="4" class="ecard_email_list" id="ecards_to"></select><br />
                </div>

                <br />
                <input type="submit" name="action_preview" value="Bekijk voorbeeld" />
                <input type="submit" name="action_send" value="Verstuur e-card" />
                </form>
    </body>
    </html>


    Als ik op bekijk voorbeeld klik zou ik ook in de array van $_POST card_receivers moeten tegenkomen maar die staat er niet bij (ongeacht of er gegevens zijn ingevuld)

    1
    2
    3
    4
    5
    6
    7
    Array
    (
        [card_id] => d9752b49
        [card_receiver_name] => 
        [card_receiver_email] => 
        [action_preview] => Bekijk voorbeeld
    )


    Wat doe ik fout?
    tomadinsdag 27 januari 2009 @ 14:54
    Ik ben een noob in php.
    maar ik ben nu bezig met een klein beetje tekst. zoals hieronder:
    1
    2
    3
    4
    5
    6
    7
    8
       <style type="text/css">
    .style1 {font-weight: bold}
        </style>
       <div class="footer">      
         <p>text.</p>
         <p>text.</p>
         <p>text.</p>
       </div>

    het probleem is dat ik nu steeds een witregel krijg tussen de stukken text ik krijg nu dus zoiets:
    quote:
    text.

    text.

    text.
    terwijl ik dit wil:
    quote:
    text.
    text.
    text.
    Weet iemand hoe ik dit (waarschijnlijk simpele) probleem op kan lossen?
    HuHudinsdag 27 januari 2009 @ 14:56
    Dat is geen PHP maar HTML. Je moet <br /> gebruiken. Zoek maar even op Google naar de betekenis van tags als <p> en <br /> en dergelijke.
    tomadinsdag 27 januari 2009 @ 14:58
    quote:
    Op dinsdag 27 januari 2009 14:56 schreef HuHu het volgende:
    Dat is geen PHP maar HTML. Je moet <br /> gebruiken. Zoek maar even op Google naar de betekenis van tags als <p> en <br /> en dergelijke.
    ok bedankt
    Xcaliburdinsdag 27 januari 2009 @ 14:58
    text<br />
    text<br />
    text<br />

    Tuvai.netdinsdag 27 januari 2009 @ 14:59
    quote:
    Op dinsdag 27 januari 2009 14:41 schreef Chandler het volgende:
    Ik zit met iets vaags, op een of andere manier wordt een bepaald element niet meegenomen als ik een pagina verstuurd met POST (form)
    [ code verwijderd ]

    Als ik op bekijk voorbeeld klik zou ik ook in de array van $_POST card_receivers moeten tegenkomen maar die staat er niet bij (ongeacht of er gegevens zijn ingevuld)
    [ code verwijderd ]

    Wat doe ik fout?
    Doe jij met JS dynamisch de 'naam' en 'email' veldjes vermeerderen? Zo ja, geef je die wel elk een uniek ID en name attribuut mee?
    tomadinsdag 27 januari 2009 @ 15:08
    Nou heb ik een volgend probleem
    De tekst staat bovenaan in een tekst vak. Maar deze moet tegen de onderkant aanzitten. Hoe doe ik dat?
    HuHudinsdag 27 januari 2009 @ 15:10
    quote:
    Op dinsdag 27 januari 2009 15:08 schreef toma het volgende:
    Nou heb ik een volgend probleem
    De tekst staat bovenaan in een tekst vak. Maar deze moet tegen de onderkant aanzitten. Hoe doe ik dat?
    Dat zou je wellicht hier kunnen vragen: [CSS] voor dummies - deel 11 of in een apart topic. Het heeft namelijk niets te maken met PHP of MySQL.
    tomadinsdag 27 januari 2009 @ 15:11
    quote:
    Op dinsdag 27 januari 2009 15:10 schreef HuHu het volgende:

    [..]

    Dat zou je wellicht hier kunnen vragen: [CSS] voor dummies - deel 11 of in een apart topic. Het heeft namelijk niets te maken met PHP of MySQL.
    Ok, ik wist niet dat daar een apart topic voor is.
    Lightdinsdag 27 januari 2009 @ 16:51
    quote:
    Op dinsdag 27 januari 2009 14:59 schreef Tuvai.net het volgende:

    [..]

    Doe jij met JS dynamisch de 'naam' en 'email' veldjes vermeerderen? Zo ja, geef je die wel elk een uniek ID en name attribuut mee?
    De naam hoeft niet uniek te zijn. Als je bijvoorbeeld name="card[]" gebruikt dan krijg je in het php-script netjes een array te zien
    Chandlerdinsdag 27 januari 2009 @ 16:52
    quote:
    Op dinsdag 27 januari 2009 14:59 schreef Tuvai.net het volgende:

    [..]

    Doe jij met JS dynamisch de 'naam' en 'email' veldjes vermeerderen? Zo ja, geef je die wel elk een uniek ID en name attribuut mee?
    Nee, die velden worden gebruikt om de card_receivers te vullen met data

    <option value="email">naam (email)</option>
    Swetseneggerdinsdag 27 januari 2009 @ 20:09
    query vraagje

    koppeltabel bestaande uit 2 kolommen, land_1 en land_2
    values

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    1   2
    1   3
    1   4
    1   5
    2   4
    2   5
    2   6
    2  10
    3   5
    4   5
    5   7
    5  12
    6  12
    8   9
    10 11
    13 14


    Nu wil ik alle buren van land 5, dus 1,2,3,4,7,12.

    query
    1SELECT * FROM buren WHERE land_1=5 OR land_2=5

    Maar dit geeft uiteraard OOK de 5 terug en die heb ik niet nodig.
    HuHudinsdag 27 januari 2009 @ 20:35
    1
    2
    3
    SELECT land_1 as buur FROM buren WHERE land_2 = 5
      UNION
    SELECT land_2 as buur FROM buren WHERE land_1 = 5


    Zoiets denk ik.
    SuperRembodinsdag 27 januari 2009 @ 20:41
    knip

    [ Bericht 98% gewijzigd door SuperRembo op 27-01-2009 20:42:20 (ff iets langer nadenken....) ]
    cablegunmasterdinsdag 27 januari 2009 @ 20:48
    ik vraag me af ik heb nu een lijst met informatie. uit een sql bestand
    hierop is een veld status
    nu wil ik op meerdere dingen veranderen en met 1 knop toegepast krijgen.


    bvb
    Besteld
    onbesteld
    geleverd
    ongeleverd

    maar hoe kan ik laten checken of er iets veranderd is ten opzichte van de database? en het daarin veranderen?

    ik zat zelf te denken aan een query om het eruit te halen.
    en een update query alleen hoe zet ik een for each voorwaarde die controleerd of het verandert is of niet?
    moet ik dan een extra veld met aanvink erachter maken? zoiets van vink deze.
    Ik zat me af te vragen of het ook zonder kon
    SuperRembodinsdag 27 januari 2009 @ 21:02
    quote:
    Op dinsdag 27 januari 2009 20:09 schreef Swetsenegger het volgende:
    query vraagje
    [...] Nu wil ik alle buren van land 5, dus 1,2,3,4,7,12. [...]
    Als je de buren van land 5 wil hebben, dan moet je de regels hebben waarbij een van de twee landen 5 is, maar je wil uiteindelijk het land hebben dat juist ongelijk aan 5 is:

    1
    2
    3
    SELECT CASE land_1 WHEN 5 THEN land_2 ELSE land_1 END AS land
    FROM buren 
    WHERE 5 IN (land_1, land_2)


    Of anders geschreven:
    1
    2
    3
    SELECT IF (land_1 = 5, land_2, land_1) AS land
    FROM buren 
    WHERE 5 IN (land_1, land_2)


    [ Bericht 16% gewijzigd door SuperRembo op 27-01-2009 21:08:18 ]
    Swetseneggerdinsdag 27 januari 2009 @ 21:11
    quote:
    Op dinsdag 27 januari 2009 21:02 schreef SuperRembo het volgende:

    [..]

    Als je de buren van land 5 wil hebben, dan moet je de regels hebben waarbij een van de twee landen 5 is, maar je wil uiteindelijk het land hebben dat juist ongelijk aan 5 is:
    [ code verwijderd ]

    Of anders geschreven:
    [ code verwijderd ]
    Klinkt logisch. Wat ik er niet bij verteld heb is dat het access betreft. En ik krijg een foutmelding terug

    invalid sql statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' or 'UPDATE'

    iemand een idee?
    Swetseneggerdinsdag 27 januari 2009 @ 21:22
    ach nevermind, hij maakt z'n eigen huiswerk maar. Heb al 3 van de 4 voor 'm opgelost
    SuperRembodinsdag 27 januari 2009 @ 21:23
    In Access moet je denk ik IIf() gebruiken in plaats van If().
    Chandlerwoensdag 28 januari 2009 @ 09:00
    quote:
    Op dinsdag 27 januari 2009 16:52 schreef Chandler het volgende:

    [..]

    Nee, die velden worden gebruikt om de card_receivers te vullen met data

    <option value="email">naam (email)</option>
    Iemand die mijn fout ziet? of ben ik nou gek aan't worden?
    Tuvai.netwoensdag 28 januari 2009 @ 09:10
    quote:
    Op woensdag 28 januari 2009 09:00 schreef Chandler het volgende:

    [..]

    Iemand die mijn fout ziet? of ben ik nou gek aan't worden?
    De fout zit 'm dan sowieso in het feit hoe die 'options' dynamisch gegenereerd worden. Post je Javascript eens.
    Chandlerwoensdag 28 januari 2009 @ 10:02
    -edit-

    [ Bericht 99% gewijzigd door Chandler op 28-01-2009 14:39:39 ]
    Chandlerwoensdag 28 januari 2009 @ 11:01
    Volgens mij kan het trouwens niet aan javascript liggen, tenminste dat is mijn idee
    Roy_Twoensdag 28 januari 2009 @ 13:32
    Nee, maar eventueel wel aan de HTML die je JS uitpoept. Post dus even de HTML die er is nadat eventuele JS "onload" is uitgevoerd.
    Chandlerwoensdag 28 januari 2009 @ 14:10
    dat is er niet, er wordt geen javascript gedraaid zonder interactie van de gebruiker. Oftewel de gebruiker dient te klikken alvorens javascript functies worden gebruikt.

    en zo wordt de selectbox toegevoegd..

    1document.getElementById('ecards_to').options[document.getElementById('ecards_to').options.length] = new Option(name + " (" + email + ")", email, false, false);


    maar ik zit mij te bedenken dat wanneer geen van de items worden geselecteerd deze ook niet meegenomen worden in de output van de form. Ik ga eens testen als ze allemaal geselecteerd zijn..

    ik hoor zo dat dit werkt )

    -edit-

    dat is stom maar idd de adressen moesten gewoon geselecteerd worden... dat een mens daar zo lang overheen kan kijken
    SuperRembowoensdag 28 januari 2009 @ 19:38
    Ik snap nooit hoe je zulke onleesbare code kan schrijven :X
    Zo zie je toch veel beter wat je doet:

    1
    2
    var options = document.getElementById('ecards_to').options;
    options[options.length] = new Option(name + " (" + email + ")", email, false, false);
    Lightwoensdag 28 januari 2009 @ 20:04
    Ik zorg altijd voor een $-functie in javascript. Voor zover ik weet zit die ook (maar dan uitgebreider) in de meeste frameworks, dus wel zo makkelijk.
    1
    2
    3
    function $(e) {
      return document.getElementById(e);
    }


    En speciaal voor Chandler is er ook [Javascript] voor dummies (deel 8)
    SuperRembowoensdag 28 januari 2009 @ 20:07
    quote:
    Op woensdag 28 januari 2009 20:04 schreef Light het volgende:
    Ik zorg altijd voor een $-functie in javascript. Voor zover ik weet zit die ook (maar dan uitgebreider) in de meeste frameworks, dus wel zo makkelijk.
    [ code verwijderd ]

    En speciaal voor Chandler is er ook [Javascript] voor dummies (deel 8)
    Ja fijn een "$" functie waarmee je kan verhullen dat je vreselijk inefficiente code schrijft
    Lightwoensdag 28 januari 2009 @ 20:19
    quote:
    Op woensdag 28 januari 2009 20:07 schreef SuperRembo het volgende:

    [..]

    Ja fijn een "$" functie waarmee je kan verhullen dat je vreselijk inefficiente code schrijft
    Ja, het is een extra functie-aanroep en dat kun je als inefficient betitelen. Aan de andere kant vind ik het de leesbaarheid juist ten goede komen. En er zijn meer mogelijkheden met zo'n functie.
    SuperRembowoensdag 28 januari 2009 @ 22:19
    "$" is een totaal nietszeggende "naam", en draagt daardoor niet erg bij aan de leesbaarheid. En met verhullen bedoelde ik in dit gevan niet de extra functieaanroep, maar het 2x opzoeken van een element op basis van id.

    Maar dit gaat wel erg off topic voor dit php topic
    Chandlerdonderdag 29 januari 2009 @ 12:54
    Ik ben goed in onschrijfbare taal :P

    Maar tnx SR, ik zal het in het vervol eens wat duidelijker beschrijven.

    Nu iets anders

    1
    2
    3
    4
    EXPLAIN SELECT images . * 
    FROM images
    ORDER BY rand( ) 
    LIMIT 4 


    geeft een filesort weer, hoe kan ik het beste random items uit een database halen? zonder op een filesort uit te komen?
    cablegunmasterdonderdag 29 januari 2009 @ 13:02
    quote:
    Op donderdag 29 januari 2009 12:54 schreef Chandler het volgende:
    Ik ben goed in onschrijfbare taal

    Maar tnx SR, ik zal het in het vervol eens wat duidelijker beschrijven.

    Nu iets anders
    [ code verwijderd ]

    geeft een filesort weer, hoe kan ik het beste random items uit een database halen? zonder op een filesort uit te komen?
    ik snap niet wat je bedoelt. hiermee krijg je 4 random resultaten uit je database?
    en wat is een filesort
    Chandlerdonderdag 29 januari 2009 @ 13:04
    Met explain voor deze query krijg je uitleg van MySQL

    Dit is de uitleg

    1
    2
    id  select_type  table  type  possible_keys  key  key_len  ref  rows  Extra  
    1 SIMPLE images ALL NULL NULL NULL NULL 109447 Using temporary; Using filesort 


    echter duurt het laden van 4 afbeeldingen veelste lang.

    1Toon Records 0 - 3 (4 totaal, Query duurde 0.2950 sec
    HuHudonderdag 29 januari 2009 @ 13:09
    Ik denk dat 'ie bijna 110.000 rijen niet meer in z'n geheugen kan sorteren, dus dat 'ie over gaat op een filesort. Vermoed dat je er weinig aan kunt veranderen.
    Chandlerdonderdag 29 januari 2009 @ 13:19
    Gatsie, maar server technisch dan?
    mstxdonderdag 29 januari 2009 @ 13:20
    Je zou kunnen proberen of het sneller is als je alle rijen ophaalt en in de rest van je (PHP?) script er random 4 uit te halen.
    Of als er geen rijen verwijderd zijn (geen missende id's) kun je met PHP 4 random nummers genereren en die in de WHERE gebruiken (WHERE id IN (500,345,12342,34327)).
    Chandlerdonderdag 29 januari 2009 @ 13:32
    mstx, goed idee zeg.

    Alleen in dit geval komt het voor dat rijen verwijderd worden.. Maar dan nog zou dit theoretisch sneller zijn, al zou ik 10 rijen laden...

    Maar in dit geval kan ik natuurlijk met gemak 10 nummers opgeven

    1SELECT images.* FROM images WHERE id IN ('35431','84018','65942','62894','54022','41721','61780','90420','10700','50790') LIMIT 4


    werkt binnen 0.001 seconde

    [ Bericht 64% gewijzigd door Chandler op 29-01-2009 13:39:53 ]
    HuHudonderdag 29 januari 2009 @ 13:35
    Je kunt ook 4 queries doen met:

    1SELECT images.* FROM images WHERE id = RAND() * MAX(id);


    Dat is misschien wel sneller. Wat ook sneller kan zijn is dit:

    1SELECT images.* FROM images WHERE id IN (SELECT id FROM images ORDER BY RAND() LIMIT 4)


    Als je op id een INDEX hebt is dat sneller.

    edit: dat laatste is dus hetzelfde als hierboven, maar dan in MySQL en met de garantie dat je geen ontbrekende nummers selecteert (wat dodelijk is voor je query).
    Chandlerdonderdag 29 januari 2009 @ 13:49
    id is sowiezo geindexeerd aangezien deze primary is (auto_increment)

    en helaas kan ik nog geen subqueries gebruiken op meeste van mijn hosting pakketten... dus moet ik het doen met enkele queries... toch super dat je meedenkt!
    GlowMousedonderdag 29 januari 2009 @ 14:45
    Filesort heeft niets met het filesystem te maken; ook een sorteerproces dat geheel in het geheugen plaatsvindt wordt zo genoemd. Er zijn tegenwoordig twee manieren waarop MySQL handmatig kan sorteren, de details zijn wel in de manual te vinden.
    quote:
    Op donderdag 29 januari 2009 13:35 schreef HuHu het volgende:
    Je kunt ook 4 queries doen met:
    [ code verwijderd ]
    Met het risico dat het betreffende id niet bestaat. De IN met LIMIT is trouwens zeker sneller, maar heeft ook als risico dat je geen 4 rijen terugkrijgt.
    quote:
    Op donderdag 29 januari 2009 13:35 schreef HuHu het volgende:
    Wat ook sneller kan zijn is dit:
    [ code verwijderd ]

    Als je op id een INDEX hebt is dat sneller.

    edit: dat laatste is dus hetzelfde als hierboven, maar dan in MySQL en met de garantie dat je geen ontbrekende nummers selecteert (wat dodelijk is voor je query).
    Zit je weer met die ORDER BY RAND() die je op grote datasets wilt vermijden.

    Ik zou een tweede tabel maken met mooie oplopende getallen en daaruit selecteren. Heb je zowel het voordeel van de index als de zekerheid dat je 4 rijen terugkrijgt.
    Chandlerdonderdag 29 januari 2009 @ 14:51
    Nou ik doe het nu gewoon anders, ik maak met PHP 10 random getallen aan, die ik een array zet, deze array zet ik weer binnen de id IN () en zet daar een LIMIT van 4 op zo kom ik er dus ook
    GlowMousedonderdag 29 januari 2009 @ 14:55
    Die had je al gezegd, maar heeft als risico dat je niet gegarandeerd 4 rijen terugkrijgt. Als je random getallen toevallig hetzelfde zijn, krijg je zeker geen 4 rijen terug.
    Chandlerdonderdag 29 januari 2009 @ 17:09
    Dat klopt idd maar daar moeten de gebruikers het dan maar mee doen
    veldmuiszaterdag 31 januari 2009 @ 11:11
    1
    2
    $data = mysql_real_escape_string(trim($_POST['content']));
    $query = "UPDATE pages SET content = '".$data."' WHERE id = '".$_GET['id']."'";

    Alles gaat goed, de query doet z'n werk, maar met de URL's gaat het fout, deze zien er zo uit: \"http://bla\"

    De postdata komt van de FCKeditor.

    Ik heb al wat zitten rommelen met magic_quotes, maar die staat volgens de hoster UIT op de server.
    Verder heb ik stripslashes geprobeerd, dat heeft ook geen enkel nut.

    Na 2 dagen ben ik het rotzooien beu, en hoop ik dat iemand een oplossing weet :@.
    GlowMousezaterdag 31 januari 2009 @ 11:18
    Of het uitstaat kun je zo zien in phpinfo. Via .htaccess kun je het evt uitschakelen, en voor compatibiliteit neem je zoiets op in een headerfile.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php
    if(get_magic_quotes_gpc()) {
      foreach(
    $_POST as $key => $val) {
        
    $_POST[$key] = stripslashes($val);
      }
      foreach(
    $_GET as $key => $val) {
        
    $_GET[$key] = stripslashes($val);
      }
      foreach(
    $_COOKIE as $key => $val) {
        
    $_COOKIE[$key] = stripslashes($val);
      }
      foreach(
    $_REQUEST as $key => $val) {
        
    $_REQUEST[$key] = stripslashes($val);
      }
    }
    ?>


    Waarom niet $id = intval($_GET['id']); en $id in je query gebruiken? Zonder magic_quotes is je query namelijk niet zo best.
    Lightzaterdag 31 januari 2009 @ 11:28
    quote:
    Op zaterdag 31 januari 2009 11:18 schreef GlowMouse het volgende:
    Of het uitstaat kun je zo zien in phpinfo. Via .htaccess kun je het evt uitschakelen, en voor compatibiliteit neem je zoiets op in een headerfile.
    [ code verwijderd ]
    Die code gaat fout als er arrays in $_POST, $_GET ofzo zitten.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php
    if(get_magic_quotes_gpc()) {
        function 
    stripslashes_deep(&$value)
        {
            
    $value is_array($value) ?
                        
    array_map('stripslashes_deep'$value) :
                        
    stripslashes($value);

            return 
    $value;
        }

        
    stripslashes_deep($_GET);
        
    stripslashes_deep($_POST);
        
    stripslashes_deep($_COOKIE);
        
    stripslashes_deep($_REQUEST);
    }
     
    ?>


    Zie ook http://nl.php.net/manual/en/function.get-magic-quotes-gpc.php
    veldmuiszaterdag 31 januari 2009 @ 11:32
    Dat script deed 't 'm wel.
    Ik had het via htaccess uitgeschakeld, maar dat leverde geen resultaat op. Vreemd dus, maar nou werkt het. Thanks!

    Het nut van intval snap ik. Dat heb ik ook gelijk toegepast. .

    Maar wat is er niet zo best aan m'n query? Ik ben nog niet zo'n PHP held.
    GlowMousezaterdag 31 januari 2009 @ 11:34
    Script van Light is een stuk beter dus gebruik die maar.

    Zonder magic_quotes zou $_GET['id'] best gelijk kunnen zijn aan ' OR 'a'='a

    groetjes,
    GlowMouse
    Lightzaterdag 31 januari 2009 @ 11:37
    quote:
    Op zaterdag 31 januari 2009 11:32 schreef veldmuis het volgende:
    Dat script deed 't 'm wel.
    Ik had het via htaccess uitgeschakeld, maar dat leverde geen resultaat op. Vreemd dus, maar nou werkt het. Thanks!

    Het nut van intval snap ik. Dat heb ik ook gelijk toegepast. .

    Maar wat is er niet zo best aan m'n query? Ik ben nog niet zo'n PHP held.
    Volgens mij was het ontbreken van de intval() eigenlijk het grootste probleem. De rest komt netjes door mysql_real_escape_string() en is dus ook veilig. Overigens hoef je getallen ($id) niet tussen quotes te zetten.
    cablegunmasterzondag 1 februari 2009 @ 12:47
    stel ik heb een tekst van 600 tekens.
    maar het is te lang om op het beeld weer tegeven achter elkaar.

    de tekst staat aan elkaar. Kan ik dan een for each ( strlength($tekst > 150 )
    { echo "<br>";}
    en dat de tekst word opgesplitst? of kan ik beter met subregels werken?

    en dan de textarea in 4 delen maken ? want ik vind het wel stom om een commentaar veld op te splitsen.
    GlowMousezondag 1 februari 2009 @ 12:48
    http://nl.php.net/manual/en/function.wordwrap.php
    cablegunmasterzondag 1 februari 2009 @ 12:55
    quote:
    danke
    RoW_0zondag 1 februari 2009 @ 12:57
    Hay, ik wil een visitekaartjewebsite in php maken. Is het mogelijk doormiddel van een grafische applicatie gewoon er een kan ontwerpen? met html kan dat al wel natuurlijk.
    GlowMousezondag 1 februari 2009 @ 12:58
    quote:
    Op zondag 1 februari 2009 12:57 schreef RoW_0 het volgende:
    Hay, ik wil een visitekaartjewebsite in php maken. Is het mogelijk doormiddel van een grafische applicatie gewoon er een kan ontwerpen? met html kan dat al wel natuurlijk.
    Wat moet de rol van PHP zijn
    RoW_0zondag 1 februari 2009 @ 12:59
    quote:
    Op zondag 1 februari 2009 12:58 schreef GlowMouse het volgende:

    [..]

    Wat moet de rol van PHP zijn
    ziet dat er niet wat mooier uit? ben een noob op de scripting gebied. maar HTML ziet er soms zo 1998 uit.
    GlowMousezondag 1 februari 2009 @ 13:03
    Ziet een huis er van buiten mooier uit als er een CV-ketel in zit?
    Jo0Lzmaandag 2 februari 2009 @ 09:30
    [PHP/(My)SQL] voor dummies - Deel 68