FOK!forum / Digital Corner / [PHP/(My)SQL] voor dummies - Deel 18
the_disheaverdonderdag 15 december 2005 @ 18:14

cd niet bijgeleverd

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

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

    Deze OP en instructies voor nieuw topic: http://wiki.fok.nl/index.php/OP/PHP
  • the_disheaverdonderdag 15 december 2005 @ 18:32
    ff een apache-vraagje...

    Mijn server geeft diverse bestanden niet weer. html-bestanden (geen ramp aangezien ik het alleen als php-server gebruik) maar ook geen afbeeldingen, en dat is een groter probleem... Enige afbeeldingsoort wat hij weergeeft is png...tenminste nog iets...

    Kan het zijn dat mijn php.ini verkeerd is afgesteld? Het is apache op win xp.
    IbeBendonderdag 15 december 2005 @ 18:40
    quote:
    Op donderdag 15 december 2005 16:43 schreef IbeBen het volgende:


    Ik begin maar met de meest kneuzige vraag,
    Wat is het gemiddelde aantal factuurregels in 2004?

    Ik heb (onder andere) de tabel Factuurregel dus daar zal het antwoord wel vandaan moeten komen.
    Factuurregel
    Factuurnummer
    Artikelcode
    verkoopaantal
    verkoopprijs

    Volgens mij moet ik dus gewoon de factuurnummer optellen en dan delen door het aantal "gecounte" factuurnummers.
    Zelf kwam ik tot

    SELECT factuurnummer/COUNT(factuurnummer)
    FROM factuurnummer;

    IbeBen[/]

    moet je voor het gemiddelde aantal factuur regels niet eerst alle factuurregels bij elkeer optellen (de aantallen wat in de tabel staan) en dan delen door het aantal factuurnummers.

    hoe dat in sql precies moet weet k niet zo 123 (moet het in 1 query trouwens of mag je er ook meerdere achter elkaar uitvoeren?)
    Klopt, dat is inderdaad wel de manier. Ik weet ookdat het totaal aantal factuurnummers 59 is en als ik Count(factuurnummer) doe dat het dan 16 is. Oftewel het antwoord moet 59/16 = 3.6875 zijn. Het probleem alleen is nu hoe ik het in SQL neerzet.

    Het moet wel in een query, een subquery is wel toegestaan maar niet 2 afzonderlijke om tot het antwoord te komen.
    JeRadonderdag 15 december 2005 @ 19:20
    quote:
    Op donderdag 15 december 2005 18:32 schreef the_disheaver het volgende:
    ff een apache-vraagje...

    Mijn server geeft diverse bestanden niet weer. html-bestanden (geen ramp aangezien ik het alleen als php-server gebruik) maar ook geen afbeeldingen, en dat is een groter probleem... Enige afbeeldingsoort wat hij weergeeft is png...tenminste nog iets...

    Kan het zijn dat mijn php.ini verkeerd is afgesteld? Het is apache op win xp.
    PHP heeft als het goed is weinig te maken met de verwerking van bestanden door de webserver. Wat bedoel je met 'hij geeft het niet weer', krijg je een foutmelding of doet de browser iets verkeerds? Zo ja, wat doet ie dan verkeerd? Dat kan ik niet opmaken uit je post.

    Ook kan een firewall van invloed zijn, heb je die draaien?
    Swetseneggerdonderdag 15 december 2005 @ 19:21
    Join vraagje.

    Ik heb bv een tabel users met user_id als auto increment.
    En dan heb ik een tabel order, waarbij ik de user id opneem zodat ik weet wie de bestelling heeft gedaan.

    Maar de laatste keer dat ik zo'n constructie had, kreeg ik het niet voor elkaar om te joinen van user tabel en order tabel op basis van INNER JOIN tabelnaam ON(user_id= user_id). Ik heb toen uiteindelijk in de order tabel user_id id_user genoemd. Maar dit moet toch gewoon kunnen? Ik moet zeker alleen aliassen?

    En kan iemand een heldere uitleg geven over Joins misschien

    -edit- Ik vergat nog een kort vraagje. Een kolom unique maken. Wat heeft dat voor consequenties als er onverhoopt een niet unieke waarde wordt gesubmit? Foutmelding en geen data in de rij neem ik aan?
    SkaterSamdonderdag 15 december 2005 @ 19:42
    Even een leuk scriptje geschreven om wat makkelijker de laatste resultaten uit de error.log van Apache te lezen, zonder hem telkens te moeten openen, dit script haalt de laatste 10 resultaten uit de error.log

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $lines
    = file('path/naar/je/error.log ');

    $max = count($lines);
    echo
    "<p><b>Dit zijn de laatste tien lijnen, beginnend van lijn:</b>" . $max . "</p>";

    for (
    $i = ($max - 1); $i &gt; ($max - 11); $i--) {
        echo
    "<p>" . $lines[$i] . "</p>";
    }
    ?>

    Misschien als het je het nog aanvult met een header refresh, of meta refresh ofzo hoef je zelfs niet eens f5 te drukken. En natuurlijk kan je hem nog aankleden met CSS.

    tvp
    JeRadonderdag 15 december 2005 @ 19:58
    quote:
    Op donderdag 15 december 2005 19:21 schreef Swetsenegger het volgende:
    Join vraagje.

    Ik heb bv een tabel users met user_id als auto increment.
    En dan heb ik een tabel order, waarbij ik de user id opneem zodat ik weet wie de bestelling heeft gedaan.

    Maar de laatste keer dat ik zo'n constructie had, kreeg ik het niet voor elkaar om te joinen van user tabel en order tabel op basis van INNER JOIN tabelnaam ON(user_id= user_id). Ik heb toen uiteindelijk in de order tabel user_id id_user genoemd. Maar dit moet toch gewoon kunnen? Ik moet zeker alleen aliassen?

    En kan iemand een heldere uitleg geven over Joins misschien
    Je moet de ene tabel met de andere joinen. Zoiets als dit:

    SELECT *
    FROM orders AS o //dit is je eerste tabel die links staat
    LEFT JOIN users AS u //dit is je tweede tabel die daar rechts van staat
    ON o.user_id = u.user_id //je koppelt de tabellen op de user_id kolom.
    WHERE etc

    Overigens is dit een 'normale' constructie voor de kolommen:

    ON o.userid = u.id

    De ene tabel heeft een 'id'-kolom, en de ander verwijst naar de naam van de eerste tabel + 'id' om aan te geven dat we die kolom uit de andere tabel willen hebben. Maar dat ligt vooral aan jezelf, hoe je het wilt hebben
    quote:
    -edit- Ik vergat nog een kort vraagje. Een kolom unique maken. Wat heeft dat voor consequenties als er onverhoopt een niet unieke waarde wordt gesubmit? Foutmelding en geen data in de rij neem ik aan?
    Klopt. Je krijgt een foutmelding en er wordt niets geinsert wel opletten als je meerdere INSERTs achter elkaar doet die samenhangend zijn dus.
    the_disheaverdonderdag 15 december 2005 @ 19:59
    quote:
    Op donderdag 15 december 2005 19:20 schreef JeRa het volgende:

    [..]


    Ook kan een firewall van invloed zijn, heb je die draaien?
    Hij geeft een lege pagina (bij een afbeelding laat hij alleen een kader zien.

    Maar na het uitschakelen van mn firewall doet hij het

    FF kijken wat er met ZoneAlarm mankeert Dank iig
    JeRadonderdag 15 december 2005 @ 20:03
    quote:
    Op donderdag 15 december 2005 19:59 schreef the_disheaver het volgende:

    [..]

    Hij geeft een lege pagina (bij een afbeelding laat hij alleen een kader zien.

    Maar na het uitschakelen van mn firewall doet hij het

    FF kijken wat er met ZoneAlarm mankeert Dank iig
    ZoneAlarm is op z'n lichtjes gezegd gewoon zwaar kut in combinatie met dit soort zaken het is iig een bekend fenomeen dat bijv. Apache en ZoneAlarm gewoon niet willen samenwerken.
    Desdinovadonderdag 15 december 2005 @ 20:07
    Ik heb een tabel newsmet columnamen Year, Month en Day

    ik voer de volgende query uit:

    $query = "SELECT * FROM news WHERE Item_offline = '0' ORDER BY Year, Month, Day DESC";

    Hij ordered hem niet goed. Ik wil de nieuwste datum als eerste item. Sorteren per ID kan niet want de invoer van de datum is handmatig.
    the_disheaverdonderdag 15 december 2005 @ 20:13
    quote:
    Op donderdag 15 december 2005 20:03 schreef JeRa het volgende:

    [..]

    ZoneAlarm is op z'n lichtjes gezegd gewoon zwaar kut in combinatie met dit soort zaken het is iig een bekend fenomeen dat bijv. Apache en ZoneAlarm gewoon niet willen samenwerken.
    Ow joepie... Ff proberen het werkend te krijgen , en anders een andere firewall

    edit:
    localhost ipv mijn ip doet het wel... ;S
    Swetseneggerdonderdag 15 december 2005 @ 20:14
    quote:
    Op donderdag 15 december 2005 19:58 schreef JeRa het volgende:
    [heldere uitleg]

    Klopt. Je krijgt een foutmelding en er wordt niets geinsert wel opletten als je meerdere INSERTs achter elkaar doet die samenhangend zijn dus.
    Hoe kan je een sql foutmelding afvangen? Je kan natuurlijk zeggen

    if(mysql_query($query)){
    // doe wat
    }else{
    //insert nog een keer
    }

    Maar dan controleer je niet op een specifieke SQL fout.
    JeRadonderdag 15 december 2005 @ 20:15
    quote:
    Op donderdag 15 december 2005 20:07 schreef Desdinova het volgende:
    Ik heb een tabel newsmet columnamen Year, Month en Day

    ik voer de volgende query uit:

    $query = "SELECT * FROM news WHERE Item_offline = '0' ORDER BY Year, Month, Day DESC";

    Hij ordered hem niet goed. Ik wil de nieuwste datum als eerste item. Sorteren per ID kan niet want de invoer van de datum is handmatig.
    Je moet voor elke kolom aangeven hoe je wilt sorteren.

    ORDER BY Year DESC, Month DESC, Day DESC

    Anders neemt ie voor Year en Month standaard ASC aan
    Swetseneggerdonderdag 15 december 2005 @ 20:15
    quote:
    Op donderdag 15 december 2005 20:07 schreef Desdinova het volgende:
    Ik heb een tabel newsmet columnamen Year, Month en Day

    ik voer de volgende query uit:

    $query = "SELECT * FROM news WHERE Item_offline = '0' ORDER BY Year, Month, Day DESC";

    Hij ordered hem niet goed. Ik wil de nieuwste datum als eerste item. Sorteren per ID kan niet want de invoer van de datum is handmatig.
    Waarom geef je je records geen DATE of DATETIME mee in sql?
    JeRadonderdag 15 december 2005 @ 20:16
    quote:
    Op donderdag 15 december 2005 20:14 schreef Swetsenegger het volgende:

    [..]

    Hoe kan je een sql foutmelding afvangen? Je kan natuurlijk zeggen

    if(mysql_query($query)){
    // doe wat
    }else{
    //insert nog een keer
    }

    Maar dan controleer je niet op een specifieke SQL fout.
    De meeste mensen doen zoiets:

    1
    2
    3
    4
    5
    $result = mysql_query($query);
    if (!$result) {
        echo mysql_errno() . ': ' . mysql_error();
        exit;
    }


    Met mysql_errno() kun je bepalen wat voor fout er opgetreden is
    Swetseneggerdonderdag 15 december 2005 @ 20:54
    quote:
    Op donderdag 15 december 2005 20:16 schreef JeRa het volgende:

    [..]

    De meeste mensen doen zoiets:
    [ code verwijderd ]

    Met mysql_errno() kun je bepalen wat voor fout er opgetreden is
    Ok, ik neem aan dat op mysql.org een lijstje is met nummers en hun specifieke betekenis.
    Lightdonderdag 15 december 2005 @ 21:01
    quote:
    Op donderdag 15 december 2005 19:58 schreef JeRa het volgende:

    [..]

    Je moet de ene tabel met de andere joinen. Zoiets als dit:

    SELECT *
    FROM orders AS o //dit is je eerste tabel die links staat
    LEFT JOIN users AS u //dit is je tweede tabel die daar rechts van staat
    ON o.user_id = u.user_id //je koppelt de tabellen op de user_id kolom.
    WHERE etc
    Of, een iets andere schrijfwijze maar met hetzelfde resultaat

    SELECT *
    FROM orders AS o //dit is je eerste tabel die links staat
    LEFT JOIN users AS u //dit is je tweede tabel die daar rechts van staat
    USING(user_id) //je koppelt de tabellen op de user_id kolom.
    WHERE etc
    Lightdonderdag 15 december 2005 @ 21:02
    quote:
    Op donderdag 15 december 2005 20:54 schreef Swetsenegger het volgende:

    [..]

    Ok, ik neem aan dat op mysql.org een lijstje is met nummers en hun specifieke betekenis.
    mysql.com ook goed? Er staat een lijstje.
    Swetseneggerdonderdag 15 december 2005 @ 22:56
    quote:
    Op donderdag 15 december 2005 21:02 schreef Light het volgende:

    [..]

    mysql.com ook goed? Er staat een lijstje.
    Ik had 'm al gevonden

    Annder probleempje.
    Hieronder een stukje code van 2 array's welke een relatie hebben.

    In dit geval is de value van $_SESSION['giftwrap'][GW_1]==2;
    Het getal in [GW_1] heeft een relatie met $_SESSION['cart']

    1
    2
    3
    4
    5
    6
    7
    <?php
    foreach($_SESSION['cart'] as $k =&gt; $v){
            if(
    array_key_exists("GW_".$k,$_SESSION['giftwrap'])){
                
    $giftwrap=$_SESSION['giftwrap']['GW_'.$k];
            }
    }
    ?>


    In de eerste run van de foreach, wordt giftwrap keurig 2. Echter wordt $_SESSION['giftwrap'] in zijn geheel 2 ...geen keys meer, geen values. Na de eerste loop geeft print_r($_SESSION['giftwrap']); '2' terug. en niet (bv) Array ( [GW_1] => 2 [GW_4] => 1 )

    Iemand enig idee waarom? Ow, de array_key_exists werkt prima. ik heb dat getest met een echo welke keurig de juiste waardes terug geeft. Pas wanneer ik deze gebruik $giftwrap=$_SESSION['giftwrap']['GW_'.$k]; gaat het mis.
    JeRadonderdag 15 december 2005 @ 23:24
    Heel apart. Is er ergens nog andere code die met $giftwrap en $_SESSION['giftwrap'] te maken heeft?

    Zoiets zou jouw probleem kunnen verklaren:

    $giftwrap=&$_SESSION['giftwrap'];

    Hierdoor wordt $giftwrap verwezen naar het giftwrap-element uit de $_SESSION array, waarna hij door de regel

    $giftwarp = ....;

    wordt overschreven, en hiermee meteen de waarde in $_SESSION. Zo in jouw code kan ik niets zien dat fout is.

    edit: oeh, staat register_globals trouwens aan? Als dat zo is, dan is misschien $giftwrap gelijk gesteld aan de variabele $_SESSION['giftwrap'].
    the_disheavervrijdag 16 december 2005 @ 00:20
    Is het eigenlijk verkeerd om dit soort notice te krijgen? (bv door een if fucntie of een bepaalde variable gelijk is aan een bepaalde waarde)

    Notice: Undefined index: afdeling_id in

    Het is geen fatal error oid, maar is het nadelig? dwv dat het langzamer duurt (0.0001 seconde...)

    Je kunt dit (meestal) eenvoudig oplossen door eerst te bekijken of de variable bestaat. Maar met if(isset()) duurt het script ook enkele millisecondes langer. Welke van die 2 duurt langer?

    Natuurlijk is het wel gewoon beter om een script te maken zonder warnings, errors of notice...
    JeRavrijdag 16 december 2005 @ 00:43
    quote:
    Op vrijdag 16 december 2005 00:20 schreef the_disheaver het volgende:
    Is het eigenlijk verkeerd om dit soort notice te krijgen? (bv door een if fucntie of een bepaalde variable gelijk is aan een bepaalde waarde)

    Notice: Undefined index: afdeling_id in

    Het is geen fatal error oid, maar is het nadelig? dwv dat het langzamer duurt (0.0001 seconde...)

    Je kunt dit (meestal) eenvoudig oplossen door eerst te bekijken of de variable bestaat. Maar met if(isset()) duurt het script ook enkele millisecondes langer. Welke van die 2 duurt langer?

    Natuurlijk is het wel gewoon beter om een script te maken zonder warnings, errors of notice...
    Die notice slaat op het idee dat je niet zomaar een index van een array mag opvragen die niet bestaat. In Java zou je een IndexOutOfBounds exception krijgen, in C++ wordt zoiets een segmentation fault. Over het algemeen geen goede praktijk dus, en als je ooit verder wilt gaan in programmeren is het handig om eraan te wennen het op de goede manier te doen.

    Ik weet niet om wat voor array het gaat, maar kun je er niet voor zorgen dat de index van de array sowieso bestaat?
    the_disheavervrijdag 16 december 2005 @ 03:59
    [beetje offtopic]heb zonealarm de deur uitgegooid, en mijn apache werkt weer volledig (tenminste, zo te zien)[/offtopcic]
    Swetseneggervrijdag 16 december 2005 @ 09:08
    quote:
    Op donderdag 15 december 2005 23:24 schreef JeRa het volgende:
    Heel apart. Is er ergens nog andere code die met $giftwrap en $_SESSION['giftwrap'] te maken heeft?

    Zoiets zou jouw probleem kunnen verklaren:

    $giftwrap=&$_SESSION['giftwrap'];

    Hierdoor wordt $giftwrap verwezen naar het giftwrap-element uit de $_SESSION array, waarna hij door de regel

    $giftwarp = ....;

    wordt overschreven, en hiermee meteen de waarde in $_SESSION. Zo in jouw code kan ik niets zien dat fout is.
    In cart.php wordt de array cart en giftwarp gevuld.
    Vervolgens ga je naar order_1.php, waar je kan inloggen of op 'volgende' kan klikken om een nieuwe gebruiker aan te maken.
    order_2.php logt je in, of maakt een nieuwe gebruiker aan en logt deze direkt in.
    Order_3.php is deze code, welke de inhoud van de sessions naar database schrijven. Dus nee, in deze pagina gebeurt verder niets meer met deze sessions
    quote:
    edit: oeh, staat register_globals trouwens aan? Als dat zo is, dan is misschien $giftwrap gelijk gesteld aan de variabele $_SESSION['giftwrap'].
    Het is ook de bedoeling dat $giftwrap gelijk wordt aan var $_SESSION['giftwrap'][specifieke key]
    Maar, ik wilde al 'Nee natuurlijk niet' tikken, maar even gecheked met phpinfo.php:

    1register_globals On On 


    Zou het zo kunnen zijn dat de sessie dan gelijk gesteld wordt aan de string?
    Ik zal de code eens controleren op m'n lokale servertje

    -edit-
    Begrijp er geen moer van, deze code functioneert prima op mijn lokale server, waar register_globals OOK op on staat

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?
        $_SESSION['cart']=array(1 => 2, 4 => 1, 7 => 3);
        $_SESSION['giftwrap']=array(GW_1 => 1, GW_7 => 3);
        foreach($_SESSION['cart'] as $k => $v){
            if(array_key_exists("GW_".$k,$_SESSION['giftwrap'])){
                $giftwrap=$_SESSION['giftwrap']['GW_'.$k];
                echo $giftwrap."\r\n";
                print_r($_SESSION['cart']);
                print_r($_SESSION['giftwrap']);
            }}
    ?>

    -edit- Hmz, op de live server ook.
    Dan moet er dus wat vreemds in mijn sessies zitten in de 'echte' code.

    -edit 2-
    Begrijp er werkelijk geen moer van.
    Dit geeft print_r terug van mijn sessies welke door cart.php gevuld zijn.

    1Array ( [1] => 3 [7] => 2 [6] => 1 ) Array ( [GW_1] => 2 [GW_7] => 1 )

    Mijn arrays zijn dus prima.

    Vervolgens draai ik de foreach, welke het met de testcode hierboven prima werkt en dan geeft print_r het volgende terug
    1Array ( [1] => 3 [7] => 2 [6] => 1 ) 2




    [ Bericht 10% gewijzigd door Swetsenegger op 16-12-2005 10:07:27 ]
    Swetseneggervrijdag 16 december 2005 @ 10:26
    Het wordt steeds gekker

    test.php
    1
    2
    3
    4
    5
    6
    <?
    session_start();
        $_SESSION['cart']=array(1 => 2, 4 => 1, 7 => 3);
        $_SESSION['giftwrap']=array(GW_1 => 1, GW_7 => 3);
        header("location:test2.php");
    ?>


    test2.php
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?
    session_start();
        foreach($_SESSION['cart'] as $k => $v){
            if(array_key_exists("GW_".$k,$_SESSION['giftwrap'])){
                $giftwrap=$_SESSION['giftwrap']['GW_'.$k];
                echo $giftwrap."\r\n";
                print_r($_SESSION['cart']);
                print_r($_SESSION['giftwrap']);
            }}
    ?>


    uitkomst
    1
    2
    3
    4
    1 Array ( [1] => 2 [4] => 1 [7] => 3 ) 1
    Warning: array_key_exists(): The second argument should be either an array or an object in c:\appserv\www\test2.php on line 4

    Warning: array_key_exists(): The second argument should be either an array or an object in c:\appserv\www\test2.php on line 


    Zelfde probleem dus. Maar DIT werkt WEL

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?
        $_SESSION['cart']=array(1 => 2, 4 => 1, 7 => 3);
        $_SESSION['giftwrap']=array(GW_1 => 1, GW_7 => 3);
        foreach($_SESSION['cart'] as $k => $v){
            if(array_key_exists("GW_".$k,$_SESSION['giftwrap'])){
                $giftwrap=$_SESSION['giftwrap']['GW_'.$k];
                echo $giftwrap."\r\n";
                print_r($_SESSION['cart']);
                print_r($_SESSION['giftwrap']);
            }}
    ?>


    Kan iemand dit bevestigen?
    JeRavrijdag 16 december 2005 @ 10:40
    Zoals ik al zei, ik heb het vermoeden dat $giftwrap gelijk wordt gesteld aan $_SESSION['giftwrap']. Zodra je een array gaat toekennen aan $_SESSION['giftwrap'] verbreek je die verbinding.

    Doe voor de grap eens een unset($giftwrap) voor die foreach-loop en kijk dan eens of het werkt
    Swetseneggervrijdag 16 december 2005 @ 10:50
    quote:
    Op vrijdag 16 december 2005 10:40 schreef JeRa het volgende:
    Zoals ik al zei, ik heb het vermoeden dat $giftwrap gelijk wordt gesteld aan $_SESSION['giftwrap']. Zodra je een array gaat toekennen aan $_SESSION['giftwrap'] verbreek je die verbinding.

    Doe voor de grap eens een unset($giftwrap) voor die foreach-loop en kijk dan eens of het werkt
    Waarom werkt dit dan wel opdezelfde server?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?
        $_SESSION['cart']=array(1 => 2, 4 => 1, 7 => 3);
        $_SESSION['giftwrap']=array(GW_1 => 1, GW_7 => 3);
        foreach($_SESSION['cart'] as $k => $v){
            if(array_key_exists("GW_".$k,$_SESSION['giftwrap'])){
                $giftwrap=$_SESSION['giftwrap']['GW_'.$k];
                echo $giftwrap."\r\n";
                print_r($_SESSION['cart']);
                print_r($_SESSION['giftwrap']);
            }}
    ?>


    Alleen wanneer de sessie van een andere page komt werkt het niet.
    Ook met register_globals: off werkt het niet.

    Ik heb geloof ik de oplossing nu door de var een andere naam te geven dan de sessie naam (dus $kadoverpakking=$_SESSION['giftwrap'][specifieke key];

    Wazig, je zou denken dat register_globals off dat ook oplost
    JeRavrijdag 16 december 2005 @ 11:19
    Met get_defined_vars() kun je erachter komen welke variabelen er zijn ingesteld voordat je je script draait. Dus:

    print_r(get_defined_vars());

    Zie je daar iets speciaals aan m.b.t. giftwrap en $_SESSION[giftwrap]?
    Swetseneggervrijdag 16 december 2005 @ 11:25
    quote:
    Op vrijdag 16 december 2005 11:19 schreef JeRa het volgende:
    Met get_defined_vars() kun je erachter komen welke variabelen er zijn ingesteld voordat je je script draait. Dus:

    print_r(get_defined_vars());

    Zie je daar iets speciaals aan m.b.t. giftwrap en $_SESSION[giftwrap]?
    Ben wel benieuwd, zal straks eens kijken

    -edit-
    Voor de foreach krijg ik dit terug
    [HTTP_SESSION_VARS] => Array ( [cart] => Array ( [1] => 2 [4] => 1 [7] => 3 ) [giftwrap] => Array ( [GW_1] => 1 [GW_7] => 3 ) ) [_SESSION] => Array ( [cart] => Array ( [1] => 2 [4] => 1 [7] => 3 ) [giftwrap] => Array ( [GW_1] => 1 [GW_7] => 3 ) ) [cart] => Array ( [1] => 2 [4] => 1 [7] => 3 ) [giftwrap] => Array ( [GW_1] => 1 [GW_7] => 3 ) ) 1 Array ( [1] => 2 [4] => 1 [7] => 3 ) Array ( [GW_1] => 1 [GW_7] => 3 ) 3 Array ( [1] => 2 [4] => 1 [7] => 3 ) Array ( [GW_1] => 1 [GW_7] => 3 )

    [ Bericht 32% gewijzigd door Swetsenegger op 16-12-2005 11:37:05 ]
    Swetseneggervrijdag 16 december 2005 @ 14:15
    JeRa, je hebt het regelmatig over multiple inserts. Ik neem aan dat je bedoeld dat je met 1 insert meerdere records kan invoegen?
    Waar vind ik daar documentatie over, kan het in de mysql manual niet vinden (of mijn zoekterm klopt niet)
    Swetseneggervrijdag 16 december 2005 @ 23:10
    1if(preg_match('/^[0-9A-Za-z_\-]+[@][0-9A-Za-z_\-]+([.][0-9A-Za-z]+)([.][A-Za-z]{2,4}){0,1}$/x',$_POST['email'])){


    Deze gebruik ik op een formulier, om redelijk strak te controleren om zo mailinjection te voorkomen.
    Maar hij staat wel erg strak, want jeroen.swets@gmail.com pakt hij niet

    Zo pakt hij dat wel toch:

    '/^[0-9A-Za-z_\-][.][0-9A-Za-z_\-] +[@][0-9A-Za-z_\-]+([.][0-9A-Za-z]+)([.][A-Za-z]{2,4}){0,1}$/x'

    of pakt hij dan weer teveel
    Lightvrijdag 16 december 2005 @ 23:39
    quote:
    Op vrijdag 16 december 2005 14:15 schreef Swetsenegger het volgende:
    JeRa, je hebt het regelmatig over multiple inserts. Ik neem aan dat je bedoeld dat je met 1 insert meerdere records kan invoegen?
    Waar vind ik daar documentatie over, kan het in de mysql manual niet vinden (of mijn zoekterm klopt niet)
    Insert into table (field1, field2, field3, field4)
    values (1, 2, 3, 4), (2, 3, 4, 5), (3, 4, 5, 6), (4, 5, 6, 7)

    You get the idea
    Lightvrijdag 16 december 2005 @ 23:43
    quote:
    Op vrijdag 16 december 2005 23:10 schreef Swetsenegger het volgende:

    [ code verwijderd ]

    Deze gebruik ik op een formulier, om redelijk strak te controleren om zo mailinjection te voorkomen.
    Maar hij staat wel erg strak, want jeroen.swets@gmail.com pakt hij niet

    Zo pakt hij dat wel toch:

    '/^[0-9A-Za-z_\-][.][0-9A-Za-z_\-] +[@][0-9A-Za-z_\-]+([.][0-9A-Za-z]+)([.][A-Za-z]{2,4}){0,1}$/x'

    of pakt hij dan weer teveel
    Mail header injection is makkelijker te voorkomen. Volgens de mail-rfc's moeten de mailheaders gescheiden worden door \r\n, maar het is bekend dat sommige servers ook alleen \n als scheiding accepteren. Maar zolang er geen \n in het mailadres staat is mail header injection niet mogelijk (iig niet voor zover ik weet). Het ergste dat er dan nog kan gebeuren is dat de persoon in kwestie geen email krijgt. Da's weliswaar vervelend, maar niet echt ernstig qua veiligheidsrisico
    JeRazaterdag 17 december 2005 @ 00:57
    quote:
    Op vrijdag 16 december 2005 11:25 schreef Swetsenegger het volgende:

    [..]

    Ben wel benieuwd, zal straks eens kijken

    -edit-
    Voor de foreach krijg ik dit terug
    -snip-
    Zo te zien wordt $giftwrap wel geïnitialiseerd op de session-key 'giftwrap'. Nou zou dit niets uit mogen maken, maar ik denk dat het veranderen van de naam van de variabele (wat je dus al gedaan hebt) de beste oplossing is wellicht is het een bug in een bepaalde versie van PHP die op de ene plek wel gedraaid wordt en op de andere niet.
    quote:
    JeRa, je hebt het regelmatig over multiple inserts.
    Regelmatig? anyway, die methode die Light noemt is de juiste
    RichardQuestzaterdag 17 december 2005 @ 11:46
    Ik wil vanuit een select-menu html-files (die gewoon met URL in de <option> staan) includen, zodat het menu behouden blijft. Kan iemand mij helpen?
    JeRazaterdag 17 december 2005 @ 11:49
    quote:
    Op zaterdag 17 december 2005 11:46 schreef RichardQuest het volgende:
    Ik wil vanuit een select-menu html-files (die gewoon met URL in de <option> staan) includen, zodat het menu behouden blijft. Kan iemand mij helpen?
    Includen is serverside. Als iemand een SELECT gebruikt moet er toch echt een request naar de server om zo'n include uit te voeren; maar ik betwijfel het of je daar iets aan hebt. Wat wil je precies doen?
    wobbelzaterdag 17 december 2005 @ 11:56
    M'n vraag uit het vorige topic...

    Hoe moet mijn statement worden? met OR, AND of ||?

    Als $aap = 1 mag je door, als $blaat = 1 is mag je door, maar als ze allebei 1 zijn mag je ook door.
    Als ze allebei 0 zijn, mag je niet door....welke statement moet ik dan hebben?
    RichardQuestzaterdag 17 december 2005 @ 11:57
    quote:
    Op zaterdag 17 december 2005 11:49 schreef JeRa het volgende:

    [..]

    Includen is serverside. Als iemand een SELECT gebruikt moet er toch echt een request naar de server om zo'n include uit te voeren; maar ik betwijfel het of je daar iets aan hebt. Wat wil je precies doen?
    Ik bedoel dus <select> en niet de SQL SELECT...

    1
    2
    3
    4
    5
    6
    echo ("<select name=HTMLkeuze>");
    echo ("<option value="" selected>Selecteer een pagina</option>");
    echo ("<option value=pagina1.html>pag 1</option>");
    echo ("<option value=pagina2.html>pag 2</option>");
    echo ("<option value=pagina3.html>pag 3</option>");
    echo ("</select>");


    Aan de hand van deze keuze moeten de HTML-pagina's onder het menu komen (met het menu zichtbaar).
    JeRazaterdag 17 december 2005 @ 12:00
    quote:
    Op zaterdag 17 december 2005 11:57 schreef RichardQuest het volgende:

    [..]

    Ik bedoel dus <select> en niet de SQL SELECT...
    [ code verwijderd ]

    Aan de hand van deze keuze moeten de HTML-pagina's onder het menu komen (met het menu zichtbaar).
    Is het geen optie om een onchange te gebruiken voor je SELECT-box? Zodra de gebruiker iets kiest, laadt je het menu opnieuw waarbij je de huidige option op de gekozen waarde zet en onder het menu een bestand include.

    Anders wordt het denk ik werken met (i )frames
    RichardQuestzaterdag 17 december 2005 @ 12:03
    quote:
    Op zaterdag 17 december 2005 12:00 schreef JeRa het volgende:

    [..]

    Is het geen optie om een onchange te gebruiken voor je SELECT-box? Zodra de gebruiker iets kiest, laadt je het menu opnieuw waarbij je de huidige option op de gekozen waarde zet en onder het menu een bestand include.

    Anders wordt het denk ik werken met (i )frames
    Frames is geen optie. Kun je me met de code helpen?
    JeRazaterdag 17 december 2005 @ 12:07
    quote:
    Op zaterdag 17 december 2005 12:03 schreef RichardQuest het volgende:

    [..]

    Frames is geen optie. Kun je me met de code helpen?
    Moet je wel zeggen waar je vastloopt

    Snap je hoe je een actie kunt uitvoeren aan de clientside zodra er een optie wordt gekozen door middel van Javascript? (of eventueel als je dit niet wilt, een formulier versturen zodra de gebruiker op een knop drukt)

    Snap je hoe je vervolgens een PHP-bestand kunt aanroepen met daarachteraan de naam van het document dat je wilt openen? Bijv. file.php?item=blaat

    En hoe je vervolgens die query kunt ophalen ('item' dus), controleren op waarde en vervolgens het goede bestand includen? (of liever, requiren)
    RichardQuestzaterdag 17 december 2005 @ 12:15
    quote:
    Op zaterdag 17 december 2005 12:07 schreef JeRa het volgende:

    [..]

    Moet je wel zeggen waar je vastloopt

    Snap je hoe je een actie kunt uitvoeren aan de clientside zodra er een optie wordt gekozen door middel van Javascript? (of eventueel als je dit niet wilt, een formulier versturen zodra de gebruiker op een knop drukt)

    Snap je hoe je vervolgens een PHP-bestand kunt aanroepen met daarachteraan de naam van het document dat je wilt openen? Bijv. file.php?item=blaat

    En hoe je vervolgens die query kunt ophalen ('item' dus), controleren op waarde en vervolgens het goede bestand includen? (of liever, requiren)
    Oké, na wat gepruts heb ik dit:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function Navigeer(lijst) {
      var Geselecteerd = lijst.selectedIndex
      // als de bovenste optie geselecteerd is niets doen
      if (Geselecteerd != 0) {
        window.location = lijst.options[Geselecteerd].value;
      }
    }
    // -->
    </SCRIPT>  

    <? 
    echo ("<select name=HTMLkeuze onchange="Navigeer(this);">");
    echo ("<option value="" selected>Selecteer een pagina</option>");
    echo ("<option value=pag1.html> 1</option>");
    echo ("<option value=pag2.html> 2</option>");
    echo ("<option value=pag3.html> 3</option>");
    echo ("</select>");
    ?>


    Maar nu opent hij de pagina's zonder dat het menu weer terugkomt .
    JeRazaterdag 17 december 2005 @ 12:23
    quote:
    Op zaterdag 17 december 2005 12:15 schreef RichardQuest het volgende:

    [..]

    Oké, na wat gepruts heb ik dit:
    [ code verwijderd ]

    Maar nu opent hij de pagina's zonder dat het menu weer terugkomt .
    Dat klopt, aangezien je de location naar de waarde van de OPTION omzet je raakt dus het hele menu kwijt. Dit komt meer in de richting:
    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
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function Navigeer(lijst) {
      var Geselecteerd = lijst.selectedIndex
      // als de bovenste optie geselecteerd is niets doen
      if (Geselecteerd != 0) {
        window.location = 'menu.php?item=' + lijst.options[Geselecteerd].value;
      }
    }
    // -->
    </SCRIPT>  

    <? 
    echo ("<select name=HTMLkeuze onchange="Navigeer(this);">");
    echo ("<option value="" selected>Selecteer een pagina</option>");
    echo ("<option value=pag1> 1</option>");
    echo ("<option value=pag2> 2</option>");
    echo ("<option value=pag3> 3</option>");
    echo ("</select>");

    //Haal item op
    $item = strtolower(trim($_GET['item']));

    if ($item != '') {
        //Controleer item
        $toegestaan = array('pag1', 'pag2', 'pag3');
        $bestandsnaam = $item . '.html';
        if ((!in_array($item, $toegestaan)) || (!file_exists($bestandsnaam))) {
            exit('Ongeldige keuze.');
        }

        //Include bestand
        require($bestandsnaam);
    }

    ?>
    RichardQuestzaterdag 17 december 2005 @ 12:30
    voor JeRa .
    PunisherADFzaterdag 17 december 2005 @ 12:55
    Hallo,

    Ik heb nog steeds problemen met het connecten naar een MySQL database.
    Ik heb Apache 2 / PHP 5 / Mysql 5 draaien, MySQL Front connect goed naar de database die werkt dus ook goed. PHP scripts draaien goed op de Apache 2 server maar zodra ik vanaf PHP een connect wil maken naar de MySQL db gaat er iets mis. Ik roep het mysql_connect() aan met de benodige argumenten maar het hele script doet dan niks. error_reporting staat op e_all maar die geeft ook niks weer. Zodra ik mysql_connect in me script zet lijkt het wel of niks meer werkt.

    Iemand nog tips want ik kom er niet echt meer uit ?
    Swetseneggerzaterdag 17 december 2005 @ 13:03
    quote:
    Op vrijdag 16 december 2005 23:39 schreef Light het volgende:

    [..]

    Insert into table (field1, field2, field3, field4)
    values (1, 2, 3, 4), (2, 3, 4, 5), (3, 4, 5, 6), (4, 5, 6, 7)

    You get the idea
    Ah ok, dus meerdere values in dezelfde tabel. Het is niet mogelijk om met 1 insert meerdere records verdeeld over meerdere tabellen te inserten?
    Swetseneggerzaterdag 17 december 2005 @ 13:06
    quote:
    Op vrijdag 16 december 2005 23:43 schreef Light het volgende:

    [..]

    Mail header injection is makkelijker te voorkomen. Volgens de mail-rfc's moeten de mailheaders gescheiden worden door \r\n, maar het is bekend dat sommige servers ook alleen \n als scheiding accepteren. Maar zolang er geen \n in het mailadres staat is mail header injection niet mogelijk (iig niet voor zover ik weet). Het ergste dat er dan nog kan gebeuren is dat de persoon in kwestie geen email krijgt. Da's weliswaar vervelend, maar niet echt ernstig qua veiligheidsrisico
    Ja klopt, dat heb ik gelezen.
    Maar sowieso wil ik wel op een valid mail adres checken.

    Ik heb deze reguliere expressie trouwens eens gevonden voor een javascript check, maar ik begrijp er geen moer van:

    /^[^@]+@[^@.]+\.[^@]*\w\w$/

    Client side werkttie prima overigens
    JeRazaterdag 17 december 2005 @ 13:18
    quote:
    Op zaterdag 17 december 2005 12:55 schreef PunisherADF het volgende:
    Hallo,

    Ik heb nog steeds problemen met het connecten naar een MySQL database.
    Ik heb Apache 2 / PHP 5 / Mysql 5 draaien, MySQL Front connect goed naar de database die werkt dus ook goed. PHP scripts draaien goed op de Apache 2 server maar zodra ik vanaf PHP een connect wil maken naar de MySQL db gaat er iets mis. Ik roep het mysql_connect() aan met de benodige argumenten maar het hele script doet dan niks. error_reporting staat op e_all maar die geeft ook niks weer. Zodra ik mysql_connect in me script zet lijkt het wel of niks meer werkt.

    Iemand nog tips want ik kom er niet echt meer uit ?
    Wellicht kun je wat met mysql_error(), door de output van deze functie na het connecten even te laten zien?
    JeRazaterdag 17 december 2005 @ 13:20
    quote:
    Op zaterdag 17 december 2005 13:03 schreef Swetsenegger het volgende:

    [..]

    Ah ok, dus meerdere values in dezelfde tabel. Het is niet mogelijk om met 1 insert meerdere records verdeeld over meerdere tabellen te inserten?
    Voor zover ik weet niet nee. Als je meerdere INSERTs doet die op elkaar leunen (zeg door een foreign key) dan kun je het beste dus eerst LOCK TABLES table1 WRITE, table2 WRITE gebruiken om te verzekeren dat er geen DELETE in de tussentijd kan plaatsvinden bijvoorbeeld
    JeRazaterdag 17 december 2005 @ 13:24
    quote:
    Op zaterdag 17 december 2005 13:06 schreef Swetsenegger het volgende:

    [..]

    Ja klopt, dat heb ik gelezen.
    Maar sowieso wil ik wel op een valid mail adres checken.

    Ik heb deze reguliere expressie trouwens eens gevonden voor een javascript check, maar ik begrijp er geen moer van:

    /^[^@]+@[^@.]+\.[^@]*\w\w$/

    Client side werkttie prima overigens
    Tja, de regex voor een e-mailadres heeft al vele hoofdbrekens opgeleverd. Je kunt er nooit zeker van zijn, maar met zoiets is het toch wel redelijk te checken? Heb 't ff snel bedacht, kan goed zijn dat er iets niet aan klopt, dus feel free to enhance/fix

    1/^[a-z0-9_\-]+(\.[a-z0-9_\-]+)*@[a-z0-9\-]+(\.[a-z0-9\-]+)+$/Ui


    Deze pikt als het goed is alle e-mailadressen, zowel die met een domeinnaam als IP-adres achter het @-teken. Maar zoals ik al eerder zei, je kunt er gewoon nooit zeker van zijn zelfs niet als je MX-records gaat checken.
    PunisherADFzaterdag 17 december 2005 @ 13:37
    quote:
    Op zaterdag 17 december 2005 13:18 schreef JeRa het volgende:

    [..]

    Wellicht kun je wat met mysql_error(), door de output van deze functie na het connecten even te laten zien?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $link = mysql_connect("localhost", "mysql_user", "mysql_password");

    mysql_select_db("nonexistentdb", $link);
    echo mysql_errno($link) . ": " . mysql_error($link). "\n";

    mysql_select_db("kossu", $link);
    mysql_query("SELECT * FROM nonexistenttable", $link);
    echo mysql_errno($link) . ": " . mysql_error($link) . "\n";
    ?> 


    Ik heb ff dat scriptje rechtstreeks gebruikt, alleen dan zie ik nog steeds helemaal niks ? (met goede user/pass uiteraard)

    Niks met het mysql lijkt te werken. Als ik er een mysql_iets aanroep inzet doet de rest van het scripts niks meer.

    [ Bericht 5% gewijzigd door PunisherADF op 17-12-2005 13:46:42 ]
    JeRazaterdag 17 december 2005 @ 14:21
    quote:
    Op zaterdag 17 december 2005 13:37 schreef PunisherADF het volgende:

    [..]
    [ code verwijderd ]

    Ik heb ff dat scriptje rechtstreeks gebruikt, alleen dan zie ik nog steeds helemaal niks ? (met goede user/pass uiteraard)

    Niks met het mysql lijkt te werken. Als ik er een mysql_iets aanroep inzet doet de rest van het scripts niks meer.
    Volgens mij worden je errors naar een bestand weggeschreven ipv dat ze naar de output gaan.

    Maar mysql_error() moet je zónder $link aanroepen, direct na de mysql_connect(). Waarom? Omdat als mysql_connect() failed, er niets zinnigs in $link staat in de manual staat ook dat je mysql_error() dan zonder argumenten moet aanroepen.
    PunisherADFzaterdag 17 december 2005 @ 16:11
    Okeej,

    1
    2
    $link = mysql_connect("localhost","user","pass");
    mysql_error();


    geeft in Apache error.log het volgende:

    [Sat Dec 17 16:06:44 2005] [error] [client 127.0.0.1] PHP Fatal error: Call to undefined function mysql_connect() in C:\\Program Files\\Apache Group\\Apache2\\htdocs\\database.php on line 6
    JeRazaterdag 17 december 2005 @ 16:13
    quote:
    Op zaterdag 17 december 2005 16:11 schreef PunisherADF het volgende:
    Okeej,
    [ code verwijderd ]

    geeft in Apache error.log het volgende:

    [Sat Dec 17 16:06:44 2005] [error] [client 127.0.0.1] PHP Fatal error: Call to undefined function mysql_connect() in C:\\Program Files\\Apache Group\\Apache2\\htdocs\\database.php on line 6
    Oftewel, de MySQL-extension staat niet aan in die PHP-configuratie die moet je eerst aanzetten door php.ini te wijzigen.
    Swetseneggerzaterdag 17 december 2005 @ 16:30
    quote:
    Op zaterdag 17 december 2005 13:20 schreef JeRa het volgende:

    [..]

    Voor zover ik weet niet nee. Als je meerdere INSERTs doet die op elkaar leunen (zeg door een foreign key) dan kun je het beste dus eerst LOCK TABLES table1 WRITE, table2 WRITE gebruiken om te verzekeren dat er geen DELETE in de tussentijd kan plaatsvinden bijvoorbeeld
    Je precies, dan is het locken van tables toch wel verstandig?
    Wat geberut er als er een insert plaats vind, terwijl sql nog op locked staat van een vorige insert? Gewoon een foutmelding, of wacht sql tot de tables vrij zijn en voert hij dan pas de tweede insert uit.

    Met andere woorden, moet je het nog opvangen, of doet mysql dat zelf?
    JeRazaterdag 17 december 2005 @ 16:32
    quote:
    Op zaterdag 17 december 2005 16:30 schreef Swetsenegger het volgende:

    [..]

    Je precies, dan is het locken van tables toch wel verstandig?
    Wat geberut er als er een insert plaats vind, terwijl sql nog op locked staat van een vorige insert? Gewoon een foutmelding, of wacht sql tot de tables vrij zijn en voert hij dan pas de tweede insert uit.

    Met andere woorden, moet je het nog opvangen, of doet mysql dat zelf?
    Locken in MySQL gebeurt net zoals in vrijwel alle andere situaties: hij wacht net zolang totdat de lock wordt vrijgegeven en neemt 'm daarna meteen in
    Swetseneggerzaterdag 17 december 2005 @ 16:40
    quote:
    Op zaterdag 17 december 2005 16:32 schreef JeRa het volgende:

    [..]

    Locken in MySQL gebeurt net zoals in vrijwel alle andere situaties: hij wacht net zolang totdat de lock wordt vrijgegeven en neemt 'm daarna meteen in
    Das mooi
    Bedankt weer
    PunisherADFzaterdag 17 december 2005 @ 17:09
    quote:
    Op zaterdag 17 december 2005 16:13 schreef JeRa het volgende:

    [..]

    Oftewel, de MySQL-extension staat niet aan in die PHP-configuratie die moet je eerst aanzetten door php.ini te wijzigen.
    Haha super het werkt
    wobbelzaterdag 17 december 2005 @ 17:22
    quote:
    Op zaterdag 17 december 2005 11:56 schreef wobbel het volgende:
    M'n vraag uit het vorige topic...

    Hoe moet mijn statement worden? met OR, AND of ||?

    Als $aap = 1 mag je door, als $blaat = 1 is mag je door, maar als ze allebei 1 zijn mag je ook door.
    Als ze allebei 0 zijn, mag je niet door....welke statement moet ik dan hebben?
    Lightzaterdag 17 december 2005 @ 17:49
    quote:
    Op zaterdag 17 december 2005 17:22 schreef wobbel het volgende:

    M'n vraag uit het vorige topic...

    Hoe moet mijn statement worden? met OR, AND of ||?

    Als $aap = 1 mag je door, als $blaat = 1 is mag je door, maar als ze allebei 1 zijn mag je ook door.
    Als ze allebei 0 zijn, mag je niet door....welke statement moet ik dan hebben?
    OR, of ||
    AND en && zijn iig fout, dan mag je alleen verder als beide zijden waar zijn.
    wobbelzaterdag 17 december 2005 @ 17:56
    quote:
    Op zaterdag 17 december 2005 17:49 schreef Light het volgende:

    [..]

    OR, of ||
    AND en && zijn iig fout, dan mag je alleen verder als beide zijden waar zijn.
    K thnx, loop daar nogal vaak mee te worstelen
    Swetseneggerzaterdag 17 december 2005 @ 18:02
    quote:
    Op zaterdag 17 december 2005 17:56 schreef wobbel het volgende:

    [..]

    K thnx, loop daar nogal vaak mee te worstelen
    Als je het gewoon voor jezelf in woorden zegt is het een stuk simpeler.
    Als aap OF blaat 1 is, dan wel anders niet.
    MeScottzaterdag 17 december 2005 @ 18:08
    quote:
    Op zaterdag 17 december 2005 11:56 schreef wobbel het volgende:
    M'n vraag uit het vorige topic...

    Hoe moet mijn statement worden? met OR, AND of ||?

    Als $aap = 1 mag je door, als $blaat = 1 is mag je door, maar als ze allebei 1 zijn mag je ook door.
    Als ze allebei 0 zijn, mag je niet door....welke statement moet ik dan hebben?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if ($aap == 1 || $blaat == 1) {

    // door

    }

    else {

    // doei

    }




    edit: Nee, zo langzaam typ ik niet, ja, zo slecht lees ik wel
    wobbelzaterdag 17 december 2005 @ 18:31
    Mmm, waarschijnlijk heb ik mijn vraag ook verkeerd gesteld, ik kan nu ook reacties van andere users bewerken en daar gebruik ik de statement voor

    Als $aap = 1 mag je door, als $aap 0 is mag je niet door MAAR als $god = 1 mag je altijd door
    of moet ik daar 2 statements voor maken?
    JeRazaterdag 17 december 2005 @ 18:36
    quote:
    Op zaterdag 17 december 2005 18:31 schreef wobbel het volgende:
    Mmm, waarschijnlijk heb ik mijn vraag ook verkeerd gesteld, ik kan nu ook reacties van andere users bewerken en daar gebruik ik de statement voor

    Als $aap = 1 mag je door, als $aap 0 is mag je niet door MAAR als $god = 1 mag je altijd door
    of moet ik daar 2 statements voor maken?
    Probeer eens in te zien wat je wilt bereiken. Een reactie mag gewijzigd worden als $aap==1, of $god==1. Dat is in feite wat je zegt dus:

    1
    2
    3
    if (($aap == 1) || ($god == 1)) {
        nakendInEenWeideMetBier();
    }
    wobbelzaterdag 17 december 2005 @ 18:50
    quote:
    Op zaterdag 17 december 2005 18:36 schreef JeRa het volgende:

    [..]

    Probeer eens in te zien wat je wilt bereiken. Een reactie mag gewijzigd worden als $aap==1, of $god==1. Dat is in feite wat je zegt dus:
    [ code verwijderd ]
    Maar ze mogen ook beide 1 zijn, dan moet je ook doorkunnen , maargoed, je kan dus met haakjes werken
    JeRazaterdag 17 december 2005 @ 18:51
    quote:
    Op zaterdag 17 december 2005 18:50 schreef wobbel het volgende:

    [..]

    Maar ze mogen ook beide 1 zijn, dan moet je ook doorkunnen , maargoed, je kan dus met haakjes werken
    Wat denk je dat || doet? Die haakjes hebben er verschrikkelijk weinig mee te maken
    Swetseneggerzaterdag 17 december 2005 @ 18:53
    quote:
    Op zaterdag 17 december 2005 18:50 schreef wobbel het volgende:

    [..]

    Maar ze mogen ook beide 1 zijn, dan moet je ook doorkunnen , maargoed, je kan dus met haakjes werken
    Als een van de twee 1 is mag je door.
    Wanneer beide 1 zijn, is ook 1 van de twee 1 en mag je dus door .

    Overigens wel vreemd dat je En user EN admin tegelijk kan zijn
    JeRazaterdag 17 december 2005 @ 18:55
    quote:
    Op zaterdag 17 december 2005 18:53 schreef Swetsenegger het volgende:

    [..]

    Als een van de twee 1 is mag je door.
    Wanneer beide 1 zijn, is ook 1 van de twee 1 en mag je dus door .

    Overigens wel vreemd dat je En user EN admin tegelijk kan zijn
    Ik heb zo'n idee dat hij op twee variabelen controleert - 'ingelogde user' en 'adminmode'
    Swetseneggerzaterdag 17 december 2005 @ 18:57
    quote:
    Op zaterdag 17 december 2005 18:55 schreef JeRa het volgende:

    [..]

    Ik heb zo'n idee dat hij op twee variabelen controleert - 'ingelogde user' en 'adminmode'
    Dan is aap toch altijd 1 als god 1 is. Je kan immers geen admin zijn en NIET ingelogged
    Overigens maakt dat geen verscil voor de ||
    wobbelzaterdag 17 december 2005 @ 19:08
    quote:
    Op zaterdag 17 december 2005 18:55 schreef JeRa het volgende:

    [..]

    Ik heb zo'n idee dat hij op twee variabelen controleert - 'ingelogde user' en 'adminmode'
    ik kijk eerst of de reactie wel van jou, zoja ($aap = 1)...dan mag je door...
    maar als je admin bent ($god = 1)

    Dus als beide 1 is mag je door, is maar 1 van de 2 goed (dus of $aap is goed, of $admin is goed) dan mag je door, maar als beide 0 zijn mag je niet door
    quote:
    Op zaterdag 17 december 2005 18:57 schreef Swetsenegger het volgende:

    [..]

    Dan is aap toch altijd 1 als god 1 is. Je kan immers geen admin zijn en NIET ingelogged
    Overigens maakt dat geen verscil voor de ||
    Die haakjes maken idd niet uit, maar als je niet bent ingelogd kom je niet eens zo ver in me script dat je doormag, dus dat doet er niet toe.
    wobbelzaterdag 17 december 2005 @ 19:12
    Klopt dit?

    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    if(($aap == 1 || $god == 1) || ($aap == 1 && $god == 1)) {
       echo
    'je mag door';
    }
    else {
       echo
    'gaat heen! verderfelijk creatuur opgerezen uit de poelen van de verdoemenis in de diepste krochten van de aarde waar het vuur nooit dooft'
    }
    ?>
    Swetseneggerzaterdag 17 december 2005 @ 19:13
    quote:
    Op zaterdag 17 december 2005 19:08 schreef wobbel het volgende:


    Dus als beide 1 is mag je door, is maar 1 van de 2 goed (dus of $aap is goed, of $admin is goed) dan mag je door, maar als beide 0 zijn mag je niet door
    Ja dat was al een poosje duidelijk hoor

    if($aap==1 || $god==1) dus
    quote:
    Die haakjes maken idd niet uit, maar als je niet bent ingelogd kom je niet eens zo ver in me script dat je doormag, dus dat doet er niet toe.
    Wie heeft het over haakjes
    Swetseneggerzaterdag 17 december 2005 @ 19:14
    quote:
    Op zaterdag 17 december 2005 19:12 schreef wobbel het volgende:
    Klopt dit?
    [ code verwijderd ]
    Nee dus

    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    if($aap == 1 || $god == 1) {
       echo
    'je mag door';
    }
    else {
       echo
    'gaat heen! verderfelijk creatuur opgerezen uit de poelen van de verdoemenis in de diepste krochten van de aarde waar het vuur nooit dooft'
    }
    ?>

    Is voldoende
    wobbelzaterdag 17 december 2005 @ 19:15
    quote:
    Op zaterdag 17 december 2005 19:12 schreef wobbel het volgende:
    Klopt dit?
    [ code verwijderd ]
    Het werkt
    Hierbij dank ik sietse van www.tekview.net

    Het was ff prutsen maar hij leeeft
    1
    2
    3
    <?php
    if(($MySQL_Reactie_Assoc['UserId'] == $_SESSION['IdLid'] || $main-&gt;Rechten(1) == 1) || ($MySQL_Reactie_Assoc['UserId'] == $_SESSION['IdLid'] && $main-&gt;Rechten(1) == 1))
    ?>


    daar ging het om
    SuperRembozaterdag 17 december 2005 @ 20:42
    De laatste helft is overbodig.

    1
    2
    if (($MySQL_Reactie_Assoc['UserId'] == $_SESSION['IdLid'] 
        || $main->Rechten(1) == 1) )

    Dit geeft hetzelfde resultaat.
    Swetseneggerzaterdag 17 december 2005 @ 23:00
    quote:
    Op zaterdag 17 december 2005 20:42 schreef SuperRembo het volgende:
    De laatste helft is overbodig.
    [ code verwijderd ]

    Dit geeft hetzelfde resultaat.
    Dat proberen we 'm al een poosje uit te leggen
    Swetseneggerzaterdag 17 december 2005 @ 23:41
    Moet ik bij een UNLOCK TABLES specificeren welke tabellen het om gaat, of worden gewoon alle tabellen weer vrij gegeven?

    Hmz, kan de zooi ook naar innoDB tabellen omzetten. Dan kan ik transacties gebruiken.
    JeRazaterdag 17 december 2005 @ 23:44
    quote:
    Op zaterdag 17 december 2005 23:41 schreef Swetsenegger het volgende:
    Moet ik bij een UNLOCK TABLES specificeren welke tabellen het om gaat, of worden gewoon alle tabellen weer vrij gegeven?

    Hmz, kan de zooi ook naar innoDB tabellen omzetten. Dan kan ik transacties gebruiken.
    LOCK TABLES table1 WRITE, table2 READ, table3 WRITE
    ...
    UNLOCK TABLES

    Hij houdt bij welke tables je gelocked hebt voor de thread en je geeft met een UNLOCK in één keer alle locks weer vrij.
    Swetseneggerzaterdag 17 december 2005 @ 23:48
    quote:
    Op zaterdag 17 december 2005 23:44 schreef JeRa het volgende:

    [..]

    LOCK TABLES table1 WRITE, table2 READ, table3 WRITE
    ...
    UNLOCK TABLES

    Hij houdt bij welke tables je gelocked hebt voor de thread en je geeft met een UNLOCK in één keer alle locks weer vrij.
    Mooi, van de mysql handleiding begreep ik wel dat je in het LOCK TABLES statement alle tables moet opnemen welke je in die thread gaat gebruiken.

    hmz, nu doe ik het volgende:

    1. Nieuw record in order. Als de query is gelukt (start if)
    2. loop door de array met produkten en schrijf naar db
    3. lees klantgegevens en produkt info uit
    4. verstuur klant een bevestigingsmail
    5. einde if

    Kan ik die UNLOCK TABLES gewoon tussen twee en 3 ertussen gooien?

    -edit- Lijkt me wel

    [ Bericht 13% gewijzigd door Swetsenegger op 18-12-2005 00:00:07 ]
    JeRazondag 18 december 2005 @ 00:02
    Normaal doe je een LOCK TABLES en UNLOCK TABLES alleen om de queries die wijzigingen aanbrengen in je database dus voor zover je die punten volgt kan dat ja.
    Nevermindzondag 18 december 2005 @ 16:55
    Ik wil dit topic weer in MyAT, maar ik heb niks te melden, noch op te lossen. Daarom toch maar een schaamteloze tvp met wat geblaat eromheen om het niet te veel te laten opvallen
    Swetseneggerzondag 18 december 2005 @ 18:43
    quote:
    Op zondag 18 december 2005 16:55 schreef Nevermind het volgende:
    Ik wil dit topic weer in MyAT, maar ik heb niks te melden, noch op te lossen. Daarom toch maar een schaamteloze tvp met wat geblaat eromheen om het niet te veel te laten opvallen
    Ik stel dan meestal een nietszeggende vraag over LOCK TABLES ofzo .

    -edit- echte vraag. Ik neem aan dat er aan het eind van het script gewoon unlocked wordt? net als dat mysql_close automatisch plaatsvind aan het eind van het script?

    [ Bericht 13% gewijzigd door Swetsenegger op 18-12-2005 19:15:18 ]
    qu63zondag 18 december 2005 @ 19:50
    Lock tables
    qu63zondag 18 december 2005 @ 19:58
    nu mn echte vraag dan maar

    1
    2
    3
    <?php
    print("<tr><td class=rowhead width=1%>Download</td><td width=99% align=left><a class=\"index\" href=\"download.php/$id/" . rawurlencode($row["filename"]) . "\">" . htmlspecialchars($row["filename"]) . "</a></td></tr>");
    ?>


    resulteerd in deze link: http://tracker.qu63.nl/download.php/1/24.2.torrent

    mijn download.php:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <?php
    require_once("include/bittorrent.php");

    dbconn();

    hit_start();

    if (!
    preg_match(':^/(\d{1,10})/(.+)\.torrent$:', $_SERVER["PATH_INFO"], $matches))
        
    httperr();

    $id = 0 + $matches[1];
    if (!
    $id)
        
    httperr();


    hit_count();

    $res = mysql_query("SELECT name FROM torrents WHERE id = $id") or sqlerr(__FILE__, __LINE__);
    $row = mysql_fetch_assoc($res);

    $fn = "$torrent_dir/$id.torrent";

    if (!
    $row || !is_file($fn) || !is_readable($fn))
        
    httperr();


    mysql_query("UPDATE torrents SET hits = hits + 1 WHERE id = $id");

    header("Content-Type: application/x-bittorrent");

    readfile($fn);

    hit_end();
    ?>


    alleen die link geeft een foutmelding als ik erop klik
    " No input file specified. "

    Help
    Swetseneggerzondag 18 december 2005 @ 20:03
    quote:
    Op zondag 18 december 2005 19:58 schreef qu63 het volgende:
    nu mn echte vraag dan maar
    [ code verwijderd ]

    resulteerd in deze link: http://tracker.qu63.nl/download.php/1/24.2.torrent

    mijn download.php:
    [ code verwijderd ]

    alleen die link geeft een foutmelding als ik erop klik
    " No input file specified. "

    Help
    $fn = "$torrent_dir/$id.torrent";

    Waar komt $torrent_dir en $id.torrent vandaan? Want het ziet er naar uit dat er dus geen file te readen valt

    readfile($fn);
    qu63zondag 18 december 2005 @ 20:06
    quote:
    Op zondag 18 december 2005 20:03 schreef Swetsenegger het volgende:

    [..]

    $fn = "$torrent_dir/$id.torrent";

    Waar komt $torrent_dir en $id.torrent vandaan? Want het ziet er naar uit dat er dus geen file te readen valt

    readfile($fn);
    dat zit in "include/bittorrent.php"

    $torrent_dir is http://tracker.qu63.nl/torrents (in bittorrent.php als "torrents") en $id.torrent haalt ie uit de pagina waar de link is gemaakt. details.php dus
    Lightzondag 18 december 2005 @ 20:08
    quote:
    Op zondag 18 december 2005 18:43 schreef Swetsenegger het volgende:

    [..]

    Ik stel dan meestal een nietszeggende vraag over LOCK TABLES ofzo .

    -edit- echte vraag. Ik neem aan dat er aan het eind van het script gewoon unlocked wordt? net als dat mysql_close automatisch plaatsvind aan het eind van het script?
    Correct

    Van mysql.com
    quote:
    LOCK TABLES locks tables for the current thread. If any of the tables are locked by other threads, it blocks until all locks can be acquired. UNLOCK TABLES releases any locks held by the current thread. All tables that are locked by the current thread are implicitly unlocked when the thread issues another LOCK TABLES, or when the connection to the server is closed.
    SuperRembozondag 18 december 2005 @ 20:12
    Tenzij je een persistant connection gebruikt. Dan blijven alle locks en transactions open als je het zelf niet doet (of als je php script een fout veroorzaakt en de unlock niet uitvoert).
    JeRazondag 18 december 2005 @ 20:20
    quote:
    Op zondag 18 december 2005 20:12 schreef SuperRembo het volgende:
    Tenzij je een persistant connection gebruikt. Dan blijven alle locks en transactions open als je het zelf niet doet (of als je php script een fout veroorzaakt en de unlock niet uitvoert).
    En daarom is het ook een goed idee om altijd UNLOCK TABLES uit te voeren
    DionysuZzondag 18 december 2005 @ 23:21
    Als ik in een file.php include("../foo.php"); gebruik en in foo.php heb ik ook een include("bar.php") dan werkt het op sommige servers als: bar.php moet in dezelfde directory staan als file.php. Op weer andere servers doet ie et wel zoals ik wil (bar.php staat bij foo.php in de dir). Hoe komt dit? Oudere php versie ofzo?
    JeRazondag 18 december 2005 @ 23:25
    quote:
    Op zondag 18 december 2005 23:21 schreef DionysuZ het volgende:
    Als ik in een file.php include("../foo.php"); gebruik en in foo.php heb ik ook een include("bar.php") dan werkt het op sommige servers als: bar.php moet in dezelfde directory staan als file.php. Op weer andere servers doet ie et wel zoals ik wil (bar.php staat bij foo.php in de dir). Hoe komt dit? Oudere php versie ofzo?
    - PHP-versie
    - Manier van starten (CLI / CGI / mod_php*)
    - Includepaden van PHP

    Heb er ook heel veel problemen mee gehad, dus nu stop ik alle include-bestanden ofwel in dezelfde dir ofwel geef ik absolute bestandsnamen op
    Desdinovamaandag 19 december 2005 @ 09:34
    Een probleem wat ik in deeltje 16 vermelde ofzo heb ik nog steeds.. Ik kan mijn vinger er nog steeds niet opleggen..

    Het idee is als volgt
    ik heb een soort cmsje voor meerdere mensen. kunnen allemaal inloggen met hun eigen loginnaam en password. Aan de hand van hun loginnaam krijgen ze een unieke waarde mee in de vorm van een getal. Deze waarde is altijd gelijk per username.

    Nou kunnen ze dus een titel + een tekstje invoeren in een form (post) en als ze op submit klikken wordt dit toegevoegd in de database.

    Over het algemeen werkt dit prima. Er is alleen 1 raarrrr probleem.

    Er is een user die de titel niet ingevoerd krijgt in de database via dit systeem. Als ik print_r($_POST); doe wordt het hele titelveld niet meegestuurd

    kopieer ik deze tekst, en log ik in onder mijn proefaccount (die gebruik maakt van exact dezelfde bestanden, maar met een andere unieke waarde) en voer ik dit in met een titel, stuurt hij de titel wel mee in de POST en voegt het ook prima in in de db. Log ik in onder het account van deze user, en probeer ik dit trucje ook, lukt het weer niet. Ook bij het editten van dit bericht neemt hij de titel niet mee. Als ik het handmatig in de db invoer via phpmyadmin heeft hij geen problemen.

    Nou verwacht ik van deze user dat hij gare landinstellingen heeft van zn toetsenbord, omdat ik leestekens ben tegengekomen (in de vorm van kommaatjes in de lucht) die niet overeenkomen met de kommaatjes onder de tilde en de dubbele quote. Ik weet alleen niet of dit uit hoort te maken. Helemaal omdat het ook niet werkt als ik dus onder zijn account inlog.

    Behalve het veranderen van <br> in \r\n wordt er verder niks gedaan met de input. magicquotes staan aan dus addslashes is niet nodig (ook al geprobeerd trouwens).

    De code is te groot en rommelig om hier te kunnen plaatsen, dus ik hoop dat jullie met wat inbeelding mij kunnen helpen, want ik weet t echt ff niet meer
    SuperRembomaandag 19 december 2005 @ 11:22
    quote:
    Op maandag 19 december 2005 09:34 schreef Desdinova het volgende:
    [...] De code is te groot en rommelig [...]
    Ik denk dat daar het probleem zit

    Als het veld niet meegestuurd wordt in $_POST, dan zou er iets mis moeten zijn met het form.
    Desdinovamaandag 19 december 2005 @ 13:14
    het is gefixed
    charset 8859-1 veranderd in charset 8859-15

    met tx aan JeRa
    Desdinovamaandag 19 december 2005 @ 15:52
    ik heb een string met een linkje:

    'hee woeptiedoe <a href="#" javascriptenzolinkje hier>klik</a> en nog wat'.

    nu wil ik alles verwijderen vanaf <a href="#" tot en met >. linkjes die niet # als href hebben blijven op die manier gewoon intact. de </a> blijft ook gewoon staan maar dat is niet zo erg.

    iemand n keyword/functie voor me waar ik op kan googlen?
    DionysuZmaandag 19 december 2005 @ 15:59
    ik weet niet echt precies wat je wil doen, maar misschien is preg_replace() wat voor je?
    SkaterSammaandag 19 december 2005 @ 16:15
    1
    2
    3
    <?php
    $this
    -&gt;resultaten = mysql_query(mysql_real_escape_string($query),$this-&gt;c_id);
    ?>


    Als ik input wil controleren (ik heb ook htmlentities er in) is dit dan voldoende? Tenminste voor een MySQL INSERT of een SELECT?
    Desdinovamaandag 19 december 2005 @ 17:22
    quote:
    Op maandag 19 december 2005 15:59 schreef DionysuZ het volgende:
    ik weet niet echt precies wat je wil doen, maar misschien is preg_replace() wat voor je?
    1
    2
    3
    4
    <?php
    $pattern
    = '@<a href=\"#\".*(.*?)</a>@';
    $table = preg_replace($pattern, '\\1',$table);
    ?>


    dit werkt
    Nevermindmaandag 19 december 2005 @ 17:22
    quote:
    Op maandag 19 december 2005 15:52 schreef Desdinova het volgende:
    ik heb een string met een linkje:

    'hee woeptiedoe <a href="#" javascriptenzolinkje hier>klik</a> en nog wat'.

    nu wil ik alles verwijderen vanaf <a href="#" tot en met >. linkjes die niet # als href hebben blijven op die manier gewoon intact. de </a> blijft ook gewoon staan maar dat is niet zo erg.

    iemand n keyword/functie voor me waar ik op kan googlen?
    Ik ben niet zo'n expert met reguliere expressies, maar dit lijkt te werken:
    1
    2
    3
    4
    5
    6
    <?php
        $str
    = 'hoi test <a href="#" bladiebla>linkje</a> nogwat';
        echo
    $str . "<br>";
        
    $str = preg_replace( "/\<a href=\"#\"(.+)>(.+)<\/a>/is", '\2', $str );
        echo
    $str;
    ?>


    -edit- te laat
    en minder goed
    Desdinovamaandag 19 december 2005 @ 17:40
    quote:
    Op maandag 19 december 2005 17:22 schreef Desdinova het volgende:

    [..]
    [ code verwijderd ]

    dit werkt
    gvd
    die kuttag kloot met mn code.
    zo hoortie:

    $pattern = '@<a href=\"#\".*?>(.*?)</a>@';
    $table = preg_replace($pattern, '\\1',$table);
    DionysuZmaandag 19 december 2005 @ 17:47
    quote:
    Op maandag 19 december 2005 17:40 schreef Desdinova het volgende:

    [..]

    gvd
    die kuttag kloot met mn code.
    zo hoortie:

    $pattern = '@<a href=\"#\".*?>(.*?)</a>@';
    $table = preg_replace($pattern, '\\1',$table);
    en als ik nou <a blalalalalala href="#" bllalalalala>bloep</a> doe?
    Desdinovamaandag 19 december 2005 @ 17:53
    quote:
    Op maandag 19 december 2005 17:47 schreef DionysuZ het volgende:

    [..]

    en als ik nou <a blalalalalala href="#" bllalalalala>bloep</a> doe?
    dat mag want dan is t je eigen linkie
    degene die ik weg haal zijn mijn eigen linkies, die aktief moeten zijn tot n bepaald punt.

    t zijn zeg maar items, die je kan editten door erop te klikken (vandaar dus de link). en als ze afzijn, moet t linkie verwijderd worden.
    Swetseneggermaandag 19 december 2005 @ 20:55
    Hoe check ik eigenlijk het eenvoudigst of een sessie verlopen is?
    (Ik bedoel dus als je een sessie gezet hebt, met bv een login dan verloopt die na een bepaalde periode van inactiviteit. Omdat ik afhankelijk ben van meerdere sessies, wil ik ze allemaal unsetten zodra er 1 verloopt.)
    JeRamaandag 19 december 2005 @ 21:01
    Als je een eigen sessie-systeem hebt is het makkelijk:
    1) Haal de session key op uit de cookie
    2) Controleer of de session key nog in de database met sessions staat, zo niet: session verlopen

    Als je de standaard PHP sessions gebruikt weet ik het niet zeker, maar je zou kunnen controleren op de waarde van PHPSESSID in de cookie of controleren of een cruciale session-variabele aanwezig is (userid bijvoorbeeld), zo niet - session verlopen.
    SkaterSammaandag 19 december 2005 @ 21:28
    Ik doe altijd zo: een $_SESSION['time'] aanmaken met de waarde time() en dan controleren op elke pagina, met zoiets:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    //Sessie ouder dan 5 (5 x 60 seconden) minuten?
    if ((time() - $_SESSION['time']) &gt; 300) {
       unset(
    $_SESSION['time']);
       
    header("Location:index.php");
    } else {
       
    $_SESSION['time'] = time();
    }
    ?>

    Ik vond het wel een slimme methode
    JeRamaandag 19 december 2005 @ 21:30
    quote:
    Op maandag 19 december 2005 21:28 schreef SkaterSam het volgende:
    Ik doe altijd zo: een $_SESSION['time'] aanmaken met de waarde time() en dan controleren op elke pagina, met zoiets:
    [ code verwijderd ]

    Ik vond het wel een slimme methode
    Als je die code op index.php zet krijg je een oneindige loop.

    1) Is time() - session['time'] > 300? Dan unset(session['time'])
    2) Ga naar index.php
    3) Is time() - session['time'] > 300? Ja, want session['time'] bestaat niet meer (=0)
    4) Etc
    SkaterSammaandag 19 december 2005 @ 21:32
    Jaja, ok je moet natuurlijk ook kijken of de $_SESSION bestaat he , vergeten er bij te zetten. En de sessie zal niet starten, omdat ik niet session_start() heb aangeroepen, etc...

    1
    2
    3
    4
    5
    6
    7
    <?php
    if (isset($_SESSION['time'])) {
       
    //hier die code
    } else {
       
    // maak hier een nieuwe sessie, of een header, wat je maar wil
    }
    ?>
    Swetseneggermaandag 19 december 2005 @ 21:34
    quote:
    Op maandag 19 december 2005 21:01 schreef JeRa het volgende:
    Als je een eigen sessie-systeem hebt is het makkelijk:
    1) Haal de session key op uit de cookie
    2) Controleer of de session key nog in de database met sessions staat, zo niet: session verlopen

    Als je de standaard PHP sessions gebruikt weet ik het niet zeker, maar je zou kunnen controleren op de waarde van PHPSESSID in de cookie of controleren of een cruciale session-variabele aanwezig is (userid bijvoorbeeld), zo niet - session verlopen.
    Ik gebruik dus inderdaad standaard sessies.
    Ik had ook al bedacht dat ik gewoon alle benodigde sessies moet controleren op isset of !='' en indien 1 van de benodigde niet meer bestaat, unset alle sessies en een waarschuwing geven.
    SkaterSamdinsdag 20 december 2005 @ 00:27
    Grmmmblll, mijn query doet het niet

    1
    2
    3
    <?php
    $db
    -&gt;query("INSERT INTO nieuws (nieuws_titel, nieuws_bericht, nieuws_auteur, nieuws_categorie_id, nieuws_status) VALUES ('" . $titel . "','" . $text . "','" . $auteur . "','" . $categorie . "','" . $status . "')");
    ?>

    En daaronder staat een header verwijzing, maar hij wil het niet echt doen... Hij gaat wel naar die header, maar er komt geen INSERT in de DB.

    Bij een andere query, die soortgelijk is opgemaakt doet ie het wel:
    1
    2
    3
    <?php
    $db
    -&gt;query("INSERT INTO nieuws_categorie (nieuws_categorie_naam) VALUES ('" . $categorie . "')");
    ?>

    Wat doe ik fout, want ik kan het zelf niet vinden... Van al de variabelen is alleen categorie een nummer, btw
    Roonaandinsdag 20 december 2005 @ 00:30
    a) mysql_real_escape_string gebruiken
    b) header alleen doen als mysql_error() geen error aangeeft: if(!mysql_error()) {header() exit(); } else { //waarschuwing }
    c) slaap lekker, ik ga me nest in.

    -r-
    JeRadinsdag 20 december 2005 @ 00:31
    Mogen we ook de foutmelding weten die mysql_error() teruggeeft of is die geheim?

    Verder gok ik dat je je variabelen niet goed escaped, waardoor er apostrofes in de query kunnen komen wat ook groen licht geeft voor SQL injection. Maar het kan ook zijn dat magic_quotes_qpc aanstaat, en dan heb ik niks gezegd.

    edit: spuit bindec('1011');
    qu63dinsdag 20 december 2005 @ 00:33
    quote:
    Op zondag 18 december 2005 19:58 schreef qu63 het volgende:
    nu mn echte vraag dan maar


    [ code verwijderd ]

    resulteerd in deze link: http://tracker.qu63.nl/download.php/1/24.2.torrent

    mijn download.php:

    [ code verwijderd ]

    alleen die link geeft een foutmelding als ik erop klik
    " No input file specified. "

    Help
    JeRadinsdag 20 december 2005 @ 00:35
    @qu63:

    Op welke regel geeft hij die foutmelding?
    SkaterSamdinsdag 20 december 2005 @ 00:35
    quote:
    Op dinsdag 20 december 2005 00:30 schreef Ro�a� het volgende:
    a) mysql_real_escape_string gebruiken
    b) header alleen doen als mysql_error() geen error aangeeft: if(!mysql_error()) {header() exit(); } else { //waarschuwing }
    c) slaap lekker, ik ga me nest in.

    -r-
    a) bijdehante opmerking
    b) dat was ik dus vergeten om in de functie te zetten, ik zie het al, bedankt
    c) welterusten
    qu63dinsdag 20 december 2005 @ 00:36
    quote:
    Op dinsdag 20 december 2005 00:35 schreef JeRa het volgende:
    @qu63:

    Op welke regel geeft hij die foutmelding?
    hij geeft die foutmelding als je op http://tracker.qu63.nl/download.php/1/24.2.torrent klikt.
    niet op een regel dus, maar dat is het enige wat hij uitspuugd
    JeRadinsdag 20 december 2005 @ 00:38
    quote:
    Op dinsdag 20 december 2005 00:36 schreef qu63 het volgende:

    [..]

    hij geeft die foutmelding als je op http://tracker.qu63.nl/download.php/1/24.2.torrent klikt.
    niet op een regel dus, maar dat is het enige wat hij uitspuugd
    Is er niet de mogelijkheid dat die foutmelding wordt gegeven in die include van bittorrent.php? Heb je daar al naar gekeken? Wellicht kun je er dan achterkomen wat ervoor zorgt dat ie die foutmelding geeft
    JeRadinsdag 20 december 2005 @ 00:38
    quote:
    Op dinsdag 20 december 2005 00:35 schreef SkaterSam het volgende:

    [..]

    a) bijdehante opmerking
    b) dat was ik dus vergeten om in de functie te zetten, ik zie het al, bedankt
    c) welterusten
    Wat is daar bijdehand aan?
    SkaterSamdinsdag 20 december 2005 @ 00:40
    quote:
    Op dinsdag 20 december 2005 00:38 schreef JeRa het volgende:
    Wat is daar bijdehand aan?
    Goedbedoeld, dat zeker, maar ik ben niet zooo dom dat ik dat zou vergeten, hij staat in mijn query() functie er gewoon bij, misschien was het was hard van me
    JeRadinsdag 20 december 2005 @ 00:42
    quote:
    Op dinsdag 20 december 2005 00:40 schreef SkaterSam het volgende:

    [..]

    Goedbedoeld, dat zeker, maar ik ben niet zooo dom dat ik dat zou vergeten, hij staat in mijn query() functie er gewoon bij, misschien was het was hard van me
    Tja, dat had hij niet kunnen zien. En wat bedoel je met dat ie in je query()-functie erbij staat? Je gooit toch geen mysql_real_escape_string over je hele query he?

    Verder is de foutmelding best wel interessant enzo
    qu63dinsdag 20 december 2005 @ 00:50
    quote:
    Op dinsdag 20 december 2005 00:38 schreef JeRa het volgende:

    [..]

    Is er niet de mogelijkheid dat die foutmelding wordt gegeven in die include van bittorrent.php? Heb je daar al naar gekeken? Wellicht kun je er dan achterkomen wat ervoor zorgt dat ie die foutmelding geeft
    http://tracker.qu63.nl/bittorrent.txt

    heb em daar maar ff geplaatst
    heb geen idee waar de fout kan zitten
    JeRadinsdag 20 december 2005 @ 00:52
    quote:
    Op dinsdag 20 december 2005 00:50 schreef qu63 het volgende:

    [..]

    http://tracker.qu63.nl/bittorrent.txt

    heb em daar maar ff geplaatst
    heb geen idee waar de fout kan zitten
    Doe eens in plaats van die laatste header() en readfile() een 'echo $fn' om te zien wat de filename precies is die wordt gegenereerd
    SkaterSamdinsdag 20 december 2005 @ 00:54
    quote:
    Op dinsdag 20 december 2005 00:42 schreef JeRa het volgende:
    Tja, dat had hij niet kunnen zien. En wat bedoel je met dat ie in je query()-functie erbij staat? Je gooit toch geen mysql_real_escape_string over je hele query he?

    Verder is de foutmelding best wel interessant enzo
    Ik ben dus wel dom Ik ben er nog mee bezig hoor, maar ik was met andere dingen bezig, dus ja hij staat er nu zo bij:

    1
    2
    3
    <?php
    $this
    -&gt;resultaten = mysql_query(mysql_real_escape_string($query),$this-&gt;c_id);
    ?>

    Ik wil echter die hele functie nog een keer goed bekijken om een query te maken zoals dit:

    1
    2
    3
    <?php
    mysql_query
    ("SELECT * FROM bla WHERE id= ?", $check($id))
    ?>

    Dus dat die vraagtekens ernaar verwijzen, maar ik moet even kijken hoe dat nou werkt

    Verder, die foutmelding was dat ik de naam van een van de rijen verkeerd had
    qu63dinsdag 20 december 2005 @ 00:54
    quote:
    Op dinsdag 20 december 2005 00:52 schreef JeRa het volgende:

    [..]

    Doe eens in plaats van die laatste header() en readfile() een 'echo $fn' om te zien wat de filename precies is die wordt gegenereerd
    in welke pagina?
    JeRadinsdag 20 december 2005 @ 00:55
    quote:
    Op dinsdag 20 december 2005 00:54 schreef qu63 het volgende:

    [..]

    in welke pagina?
    In jouw script dat je had gepost het kleinere dus.
    qu63dinsdag 20 december 2005 @ 00:57
    quote:
    Op dinsdag 20 december 2005 00:55 schreef JeRa het volgende:

    [..]

    In jouw script dat je had gepost het kleinere dus.
    ok
    qu63dinsdag 20 december 2005 @ 01:00
    nog steeds No input file specified.

    ik heb het veranderd in download.php
    JeRadinsdag 20 december 2005 @ 01:01
    quote:
    Op dinsdag 20 december 2005 01:00 schreef qu63 het volgende:
    nog steeds No input file specified.

    ik heb het veranderd in download.php
    Zet eens op strategische plekken een exit() neer in jouw script, zodat je weet wanneer hij die foutmelding geeft. Te beginnen met helemaal bovenaan zolang je niets ziet verplaats je die exit() een regel naar beneden totdat je de foutmelding weer krijgt, en je weet waar het dus foutgaat

    edit: ik ga ook maar eens slapen trouwens, suc6 nog ik kijk morgenochtend wel weer.
    SkaterSamdinsdag 20 december 2005 @ 01:05
    Als je zoekt op Google naar 'php No input file specified' krijg je oa het volgende: http://www.byte.nl/docs/Php-Cgi-Mode.html, misschien is dat iets?
    qu63dinsdag 20 december 2005 @ 01:05
    quote:
    Op dinsdag 20 december 2005 01:01 schreef JeRa het volgende:

    [..]

    Zet eens op strategische plekken een exit() neer in jouw script, zodat je weet wanneer hij die foutmelding geeft. Te beginnen met helemaal bovenaan zolang je niets ziet verplaats je die exit() een regel naar beneden totdat je de foutmelding weer krijgt, en je weet waar het dus foutgaat
    ik blijf diezelfde melding krijgen
    zelfs na als ik exit(); na <? post
    qu63dinsdag 20 december 2005 @ 01:07
    quote:
    Op dinsdag 20 december 2005 01:05 schreef SkaterSam het volgende:
    Als je zoekt op Google naar 'php No input file specified' krijg je oa het volgende: http://www.byte.nl/docs/Php-Cgi-Mode.html, misschien is dat iets?
    het lijkt er wel op ja

    alleen ik kan dus niet bij de map waar php zit
    kan ik dat .htacces bestand ook ergens anders in doen? in mn root of in de include map ofzo
    qu63dinsdag 20 december 2005 @ 01:11
    .htacces aangemaakt in de map tracker.qu63.nl (de root voor de tracker dus, dezelfde map waar ook download.php in staat ) maar helpt niks
    DionysuZdinsdag 20 december 2005 @ 01:22
    quote:
    Op dinsdag 20 december 2005 01:11 schreef qu63 het volgende:
    .htacces aangemaakt in de map tracker.qu63.nl (de root voor de tracker dus, dezelfde map waar ook download.php in staat ) maar helpt niks
    .htaccess ook met dubbel s?
    qu63dinsdag 20 december 2005 @ 01:24
    quote:
    Op dinsdag 20 december 2005 01:22 schreef DionysuZ het volgende:

    [..]

    .htaccess ook met dubbel s?
    ehm
    qu63dinsdag 20 december 2005 @ 01:24
    quote:
    Op dinsdag 20 december 2005 01:24 schreef qu63 het volgende:

    [..]

    ehm
    nu wel

    maar dan krijg ik dit bij tracker.qu63.nl:

    IISPassword
    The page cannot be displayed
    There is a problem with the page youare trying to reach and it cannot be displayed. It is most likely that configuration files for this url are corrupted.

    Please try the following:

    * Click the Refresh button, or try again later.
    * Open the home page, and then look for links to the information you want.
    * If you believe you should be able to view this directory or page, please contact the Web site administrator by using the e-mail address or phone number listed on the home page.

    HTTP Error 500
    IISPassword for Internet Information Services » IISPassword Info
    JeRadinsdag 20 december 2005 @ 09:44
    Ik denk niet dat je dat moet doen. Die HTTP 500 error krijg je omdat je .htaccess niet goed in elkaar steekt - ik vermoed dat PHP-CGI al is ingeschakeld op jouw webserver, en dat je daarom die foutmelding krijgt. Die werk je niet weg door nóg een keer PHP-CGI proberen in te schakelen

    Even iets anders, de URL: http://tracker.qu63.nl/download.php/1/24.2.torrent

    Klopt deze wel? Heb je ergens gedefinieerd dat download.php/1/24.2.torrent moet verwijzen naar download.php? Op deze manier probeer je de map 'download.php' te openen, vervolgens de map '1' en vervolgens gaat ie proberen te zoeken naar 24.2.torrent. Ik neem aan dat dat niet is wat je wilt.
    Lightdinsdag 20 december 2005 @ 09:49
    quote:
    Op dinsdag 20 december 2005 09:44 schreef JeRa het volgende:

    Even iets anders, de URL: http://tracker.qu63.nl/download.php/1/24.2.torrent

    Klopt deze wel? Heb je ergens gedefinieerd dat download.php/1/24.2.torrent moet verwijzen naar download.php? Op deze manier probeer je de map 'download.php' te openen, vervolgens de map '1' en vervolgens gaat ie proberen te zoeken naar 24.2.torrent. Ik neem aan dat dat niet is wat je wilt.
    Dat zou wel moeten werken, eventueel met multiviews aan.
    qu63dinsdag 20 december 2005 @ 10:48
    quote:
    Op dinsdag 20 december 2005 09:44 schreef JeRa het volgende:
    Ik denk niet dat je dat moet doen. Die HTTP 500 error krijg je omdat je .htaccess niet goed in elkaar steekt - ik vermoed dat PHP-CGI al is ingeschakeld op jouw webserver, en dat je daarom die foutmelding krijgt. Die werk je niet weg door nóg een keer PHP-CGI proberen in te schakelen
    ik heb nu "allow from all" toegevoegd aan mn .htaccess , nu werkt het wel gewoon.
    RichardQuestdinsdag 20 december 2005 @ 11:00
    Ik heb een array gemaakt van alle bestanden in de directory in een array stopt en de .html-extensie eruit haalt zodat het wat mooier is (explode). Probleem is dat spaties in de bestandnaam wel meegenomen worden in de lijst, maar niet in de option value

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    //Lees directory naar array
    $handle = opendir($dir);

    //Eventuele direcories niet in de lijst
    while (false !== ($file = readdir($handle))) {
        if (!is_dir("./$file")) {
          $opdelen = explode(".", $file);
          
          //indexbestand wegfilteren
          if ($opdelen[0]<>"")
          {
            echo "<option value=$opdelen[0]>" . htmlspecialchars($opdelen[0]) . '</option>';
          }
        }
    }
    closedir($handle);

    qu63dinsdag 20 december 2005 @ 11:04
    quote:
    Op dinsdag 20 december 2005 09:44 schreef JeRa het volgende:
    Even iets anders, de URL: http://tracker.qu63.nl/download.php/1/24.2.torrent

    Klopt deze wel? Heb je ergens gedefinieerd dat download.php/1/24.2.torrent moet verwijzen naar download.php? Op deze manier probeer je de map 'download.php' te openen, vervolgens de map '1' en vervolgens gaat ie proberen te zoeken naar 24.2.torrent. Ik neem aan dat dat niet is wat je wilt.
    ik heb geen idee welk stukje code die verwijzing aanmaakt, dat is een beetje het probleem
    Neverminddinsdag 20 december 2005 @ 14:40
    quote:
    Op dinsdag 20 december 2005 11:00 schreef RichardQuest het volgende:
    Ik heb een array gemaakt van alle bestanden in de directory in een array stopt en de .html-extensie eruit haalt zodat het wat mooier is (explode). Probleem is dat spaties in de bestandnaam wel meegenomen worden in de lijst, maar niet in de option value
    [ code verwijderd ]

    Je option value moet tussen haakjes staan, zeker met spaties ertussen. Variabelen (of arrays) in je quotes zetten is sowieso 'ranzig' programmeren:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?
    $dir = 'd:'; // test

    $handle = opendir($dir);

    echo '<select>'; // test

    while (false !== ($file = readdir($handle))) {
        if (!is_dir("./$file")) {
          $opdelen = explode(".", $file);
          
          //indexbestand wegfilteren
          if ($opdelen[0]<>"")
          {
            echo '<option value="'.$opdelen[0].'">' . htmlspecialchars($opdelen[0]) . '</option>';
          }
        }
    }

    echo '</select>'; // test

    closedir($handle);
    ?>


    alle // test-regels kunnen weg
    RichardQuestdinsdag 20 december 2005 @ 14:49
    Hartstikke bedankt, de $dir-variabele en <select> had ik voor dit script staan overigens...
    Desdinovadinsdag 20 december 2005 @ 14:50
    Ik heb items in een database die ik wil sorteren op datum. Een probleem wat ik heb is dat de server in amerika staat en daarom dus een andere systeemtijd heeft die de date() meegeeft.

    Zoiezo vraag ik mij af of date() wel de juiste keuze is om te gebruiken. Hoe betrouwbaar is order by date? zijn er betere alternatieven?
    SkaterSamdinsdag 20 december 2005 @ 15:01
    Ik ben bezig met een soort van weblog systeem, maar nu vroeg ik me af hoe je de datum zoals op een weblog krijgt. Dat wil dus zeggen eerst een h1 met daarin de datum, en daaronder alle posts van die specifieke datum op tijdsvolgorde. Iets als dit:

    Vrijdag 13 oktober
    Log 1 - 16.00
    Log 2 - 15.00
    Donderdag 12 oktober
    Log 3 - 21.00

    Afijn, jullie begrijpen het idee. Ik vroeg me af of het kon met een query, er van uitgaande dat je maar een tabel hebt. Moet je dan twee rijen hebben in de DB, een met datum en een met tijd? Zowiezo begin je met een while() loop om alle data op te halen uit de query (SELECT * FROM table ORDER BY date), maar moet je dan nog een query uitvoeren? En nog een while() loop?
    Swetseneggerdinsdag 20 december 2005 @ 15:07
    quote:
    Op dinsdag 20 december 2005 15:01 schreef SkaterSam het volgende:
    Ik ben bezig met een soort van weblog systeem, maar nu vroeg ik me af hoe je de datum zoals op een weblog krijgt. Dat wil dus zeggen eerst een h1 met daarin de datum, en daaronder alle posts van die specifieke datum op tijdsvolgorde. Iets als dit:

    Vrijdag 13 oktober
    Log 1 - 16.00
    Log 2 - 15.00
    Donderdag 12 oktober
    Log 3 - 21.00

    Afijn, jullie begrijpen het idee. Ik vroeg me af of het kon met een query, er van uitgaande dat je maar een tabel hebt. Moet je dan twee rijen hebben in de DB, een met datum en een met tijd? Zowiezo begin je met een while() loop om alle data op te halen uit de query (SELECT * FROM table ORDER BY date), maar moet je dan nog een query uitvoeren? En nog een while() loop?
    In je database maak je een DATE of DATETIME veld aan.
    En vervolgens trek je ze er met een query uit

    SELECT * FROM table ORDER BY datum.
    Dan krijg je de records dus gegroepeerd op datum terug.
    SkaterSamdinsdag 20 december 2005 @ 15:17
    quote:
    Op dinsdag 20 december 2005 15:07 schreef Swetsenegger het volgende:
    In je database maak je een DATE of DATETIME veld aan.
    En vervolgens trek je ze er met een query uit

    SELECT * FROM table ORDER BY datum.
    Dan krijg je de records dus gegroepeerd op datum terug.
    Ja dat snap ik, maar ik wilde meer specifiek weten over de opmaak van de resultaten die je terugkrijgt eigenlijk. Zoals in mijn voorbeeld krijg je dus eerst een tag met de dag, en daaronder alle tijden van die dag.
    Desdinovadinsdag 20 december 2005 @ 15:24
    quote:
    Op dinsdag 20 december 2005 15:17 schreef SkaterSam het volgende:

    [..]

    Ja dat snap ik, maar ik wilde meer specifiek weten over de opmaak van de resultaten die je terugkrijgt eigenlijk. Zoals in mijn voorbeeld krijg je dus eerst een tag met de dag, en daaronder alle tijden van die dag.
    waarschijnlijk kan je iets doen in de trend van:


    if ($date == $currentdate){
    //echo de contentregels
    }
    if ($date != $currentdate){
    $currentdate = $date;
    echo $currentdate;
    //echo de contentregels
    }

    [edit]
    in de while uiteraard
    en $date is dan de datum die hij uit de db trekt
    Swetseneggerdinsdag 20 december 2005 @ 15:25
    quote:
    Op dinsdag 20 december 2005 15:17 schreef SkaterSam het volgende:

    [..]

    Ja dat snap ik, maar ik wilde meer specifiek weten over de opmaak van de resultaten die je terugkrijgt eigenlijk. Zoals in mijn voorbeeld krijg je dus eerst een tag met de dag, en daaronder alle tijden van die dag.
    de waarde welke je terug krijgt van $row['datum'] sla je op in een var $prev_date.

    1
    2
    3
    4
    5
    6
    if ($prev_date!=$row['datum']){
    // je datum resultaat is veranderd. het komende record heeft dus een andere datum
    echo'<td style="font-weight:bold">'.$row['datum'].'</td>';
    }else{
    //datum hetzelfde dus echo geen regel met datum
    }


    Zoiets
    SkaterSamdinsdag 20 december 2005 @ 17:19
    1
    2
    3
    <?php
    preg_match
    ('/^[\w\-\s]*$/i', $string)
    ?>


    Als je met de bovenstaande regex, bijvoorbeeld een naam controleert, accepteert deze dan ook Arabische en Chinese letters?

    --edit: Kan een email adres ook de volgende karakters bevatten: ç é à ö. Karakters met accenten dus?

    [ Bericht 8% gewijzigd door SkaterSam op 20-12-2005 18:05:44 ]
    freissdinsdag 20 december 2005 @ 18:01
    Overigens tvp ik deze nog even.
    SuperRembodinsdag 20 december 2005 @ 18:08
    Ik denk dat die regexp geen chinese karakters accepteerd. Wel als je de /u modifier toevoegt.
    Swetseneggerdinsdag 20 december 2005 @ 20:16
    tabel users bestaat uit user_id en verder NAW gegevens
    tabel produkten bestaat uit product_id, articlecode, price
    tabel orders bestaat uit order_id, user_id en een datum
    tabel order_content bestaat uit content_id, order_id, product_id en aantallen

    Op een bepaald punt heb ik de beschikking over het order_id
    1
    2
    3
    4
    5
    SELECT oc.number, p.articlecode, p.name, oc.giftwrap, p.first_price, p.second_price
                            FROM order_content AS oc
                            LEFT JOIN produkten AS p
                            USING (product_id)
                            WHERE oc.order_id=5

    Dit geeft prachtig de bestelde produkten terug, met de juiste naam per besteld produkt en de hoeveelheid en de hele rotzooi.

    Maar.... ik wil nu graag de naam erbij van degene welke de bestelling geplaatst heeft.

    1
    2
    3
    4
    5
    6
    7
    8
    SELECT u.name, oc.number, p.articlecode, p.name, oc.giftwrap, p.first_price, p.second_price
                            FROM order_content AS oc
                            LEFT JOIN produkten AS p
                            USING (product_id)
                            , orders AS o
                            RIGHT JOIN users as u
                            USING (user_id)
                            WHERE oc.order_id=5

    Dit geeft in ieder geval niet het verwachte resultaat terug .
    Kan dit uberhaupt in 1 query?
    SuperRembodinsdag 20 december 2005 @ 21:11
    Het eerste wat me opvalt is de tabel orders. Waarom staat die in de tweede query, je doet er niets mee
    [edit]
    Je gebruikt het om de user_id bij de order te halen, alleen specificeer je helemaal geen relatie tussen order_content en orders.
    (Ik vind die USING syntax niet erg overzichtelijk als er meer dan 2 tabellen worden gebruikt)

    [ Bericht 41% gewijzigd door SuperRembo op 20-12-2005 21:19:06 ]
    Swetseneggerdinsdag 20 december 2005 @ 21:23
    quote:
    Op dinsdag 20 december 2005 21:11 schreef SuperRembo het volgende:
    Het eerste wat me opvalt is de tabel orders. Waarom staat die in de tweede query, je doet er niets mee
    [edit]
    Je gebruikt het om de user_id bij de order te halen, alleen specificeer je helemaal geen relatie tussen order_content en orders.
    (Ik vind die USING syntax niet erg overzichtelijk als er meer dan 2 tabellen worden gebruikt)
    orders dus om order_id te kunnen koppelen aan user_id.
    Ik weet dat ik die relatie niet specificeer, ik heb geen flauw idee hoe ik doet moet aanpakken. -edit- Ik dacht dat dit de relatie was WHERE oc.order_id=5
    Ik was al helemaal trots op mezelf dat die eerste query werkte
    SuperRembodinsdag 20 december 2005 @ 21:23
    Je hebt een order, daar hoort de order_content bij. Bij de order_content horen produkten. Bij de order hoort ook een user. In SQL:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT
       u.name, 
       oc.number, 
       p.articlecode, 
       p.name, 
       oc.giftwrap, 
       p.first_price, 
       p.second_price
    FROM order o
    INNER JOIN order_content oc ON oc_order_id = o.order_id
    INNER JOIN produkten p ON p.product_id = oc.product_id
    INNER JOIN users u ON u.user_id = o.user_id
    WHERE o.order_id = 5


    Je zou er ook LEFT JOINs van kunnen maken, maar een order zonder user of produkten lijkt me niet zo logisch.

    (Tabel produkten, kolom product_id )
    Swetseneggerdinsdag 20 december 2005 @ 21:25
    quote:
    Op dinsdag 20 december 2005 21:23 schreef SuperRembo het volgende:

    [ code verwijderd ]

    Je zou er ook LEFT JOINs van kunnen maken, maar een order zonder user of produkten lijkt me niet zo logisch.

    (Tabel produkten, kolom product_id )
    Mjah, ik heb de tabel verzuimt products te noemen. Dat lijkt me nou toch niet echt een groot probleem

    -edit-
    1
    2
    3
    Error: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order o
    INNER JOIN order_content oc ON oc_order_id = o.order_id
    INNER JOIN pro' at line 9

    Ik heb het ook geprobeerd met USING ipv ON, maar geeft dezefde foutmelding.
    En geprobeerd met oc.order_id ipv oc_order_id .

    leermomentje... LEFT JOIN koppelt altijd de tabellen, INNER JOIN alleen als er een relatie bestaat toch?

    [ Bericht 19% gewijzigd door Swetsenegger op 20-12-2005 21:36:12 ]
    SuperRembodinsdag 20 december 2005 @ 21:42
    Dat moest natuurlijk oc.order_id zijn. En order moet orders zijn.

    Een inner join geeft alleen resultaten waarvoor de relatie bestaat.
    Een left outer join geeft alle regels uit de 1e tabel en alleen de regels uit de 2e tabel waarvoor de relatie bestaat.
    gielingdinsdag 20 december 2005 @ 21:50
    Niet om te spammen ofzo maar misschien heeft hier iemand interesse
    Swetseneggerdinsdag 20 december 2005 @ 21:54
    quote:
    Op dinsdag 20 december 2005 21:42 schreef SuperRembo het volgende:
    Dat moest natuurlijk oc.order_id zijn. En order moet orders zijn.


    Hij doet het
    SkaterSamdonderdag 22 december 2005 @ 16:20
    kan dit: $_SESSION['var1']['var2'] , dus een een variabele binnen de array var1 ?
    Lightdonderdag 22 december 2005 @ 17:08
    quote:
    Op donderdag 22 december 2005 16:20 schreef SkaterSam het volgende:
    kan dit: $_SESSION['var1']['var2'] , dus een een variabele binnen de array var1 ?
    Ja, dat kan.
    user931989donderdag 22 december 2005 @ 21:18
    Ik zoek in mijn tabel in mysql via deze 2 bestanden:

    1
    2
    3
    4
    5
    FORM METHOD="POST" ACTION="filmpjes_wijzig_result.php">

        Zoeken naar filmpje:<br>
        <input type="text" name="zoekterm" size="30"><br>
        <input type="submit" name="submit" value="Zoeken">


    1
    2
    3
    <?php
        $sql
    = "SELECT * FROM filmpjes WHERE titel LIKE '%$HTTP_POST_VARS[zoekterm]%' ORDER BY titel ASC";
    ?>


    Hoe kan ik nu instellen dat de zoekterm minimaal 3 tekens lang moet zijn?
    Tiemiedonderdag 22 december 2005 @ 21:34
    http://nl3.php.net/strlen

    (strlen -- Get string length)

    1
    2
    3
    4
    5
    6
    7
    <?php
    if(strlen($_POST['zoekterm']) &lt; 3){
       
    // foutmelding
    } else {
       
    // select query :-)
    }
    ?>
    SkaterSamdonderdag 22 december 2005 @ 23:27
    Ik heb nu dit:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    function checkError($string) {
        if (
    array_key_exists($string, $this-&gt;error)) {
            return
    "<span class=\"error\">" . $this-&gt;error[$string] . "</span>";
        } else {
            return
    "huh";
        }
    }
        
    function
    setError($field, $message) {
        
    $this-&gt;error[$field] = $message;
        
    $this-&gt;num_error = count($this-&gt;error);
    }
    ?>

    Deze roep ik aan met
    1
    2
    3
    <?php
    $form
    -&gt;setError("username", "username is niet correct");
    ?>

    Maar nu als ik de checkError("username") functie uitvoer krijg ik alleen maar "huh" ook al is de invoer niet correct ingevoerd.
    JeRadonderdag 22 december 2005 @ 23:29
    Je zou natuurlijk een print_r($this->error) kunnen doen in je checkError()-methode?
    SkaterSamdonderdag 22 december 2005 @ 23:34
    Hmmm, lege arrays...waarom krijg ik nou lege arrays?

    [ Bericht 44% gewijzigd door SkaterSam op 22-12-2005 23:50:00 ]
    DionysuZdonderdag 22 december 2005 @ 23:58
    gebruik je het wel in een class?

    edit: nevermind ik zie hoe je em aanroept
    SkaterSamvrijdag 23 december 2005 @ 00:00
    quote:
    Op donderdag 22 december 2005 23:58 schreef DionysuZ het volgende:
    gebruik je het wel in een class?

    edit: nevermind ik zie hoe je em aanroept
    Is er iets verkeerds aan hoe ik hem aanroep?
    DionysuZvrijdag 23 december 2005 @ 00:01
    quote:
    Op vrijdag 23 december 2005 00:00 schreef SkaterSam het volgende:

    [..]

    Is er iets verkeerds aan hoe ik hem aanroep?
    Nee het beantwoordt mijn vraag
    SkaterSamvrijdag 23 december 2005 @ 00:07
    quote:
    Op vrijdag 23 december 2005 00:01 schreef DionysuZ het volgende:
    Nee het beantwoordt mijn vraag
    Niet de mijne

    --edit: Ik geloof dat het iets te maken heeft met 'variable scope'

    --edit: of toch niet...

    [ Bericht 7% gewijzigd door SkaterSam op 23-12-2005 00:32:38 ]
    SkaterSamvrijdag 23 december 2005 @ 02:39
    Hmm, ik heb de simpelste oplossing gekozen om fouten te voorkomen, en gewoon een login class gemaakt met alle benodigdheden daarin.
    JeRavrijdag 23 december 2005 @ 06:49
    quote:
    Op vrijdag 23 december 2005 02:39 schreef SkaterSam het volgende:
    Hmm, ik heb de simpelste oplossing gekozen om fouten te voorkomen, en gewoon een login class gemaakt met alle benodigdheden daarin.
    Als die twee functions die je liet zien in een class staan vermoed ik dat je $fout out of scope laat gaan, maar dat is nogal lastig te zeggen zo zonder verdere code
    SkaterSamvrijdag 23 december 2005 @ 15:14
    Ja ik weet dus echt niet waarom die het niet doet, mijn setup is nu als volgt:
    1) index.php (loginscherm)
    2) login.php (login verwerking)
    3) login_class.php (de login class)

    Op index.php vul ik een naam en een wachtwoord in, deze gaat dan naar login.php, waar de login_class wordt aangeroepen. Dan is er een if/else statement, die ziet er zo uit:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    if ($login-&gt;logged_in == true) {
        
    header("Location:../admin/main.php");
    } else {
        
    $_SESSION['error_username'] = $login-&gt;checkError('username');
        
    $_SESSION['error_wachtwoord'] = $login-&gt;checkError('wachtwoord');
        
    header("Location:../admin/index.php");
    }
    ?>

    Het probleem ligt dan ook niet of die wel of niet login true teruggeeft, maar het feit dat die errors niet worden geset in de session. Deze session variabelen probeer ik namelijk in de index.php te echo'en, maar daar geeft die niks, terwijl als ik de else statement op login.php verander in:

    1
    2
    3
    4
    5
    6
    <?php
    } else {
    $login-&gt;checkError('username');
    $login-&gt;checkError('wachtwoord');
    }
    ?>

    Dan echo'ed die gewoon de variabelen correct terug. Ow en de error functie zien er nog steeds hetzelfde uit. Zoals dit dus:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    function checkError($string) {    
        if (
    array_key_exists($string, $this-&gt;error)) {
            echo
    "<span class=\"error\">" . $this-&gt;error[$string] . "</span>";
        } else {    
            return
    false;
        }                    
    }
        
    function
    setError($field, $message) {        
        
    $this-&gt;error[$field] = $message;
        
    $this-&gt;num_error = count($this-&gt;error);
    }
    ?>

    Ik vind het behoorlijk vreemd dat de errors, wanneer ik ze direct op het login.php script aanroep wel echo'en, maar als ik ze opsla in een sessie op het login script en daarna probeer te echo'en op de index.php dat ze verdwenen zijn.
    JeRavrijdag 23 december 2005 @ 15:22
    Ik vind dat niet zo vreemd - je doet immers een 'echo' en geen 'return'
    SkaterSamvrijdag 23 december 2005 @ 15:32
    quote:
    Op vrijdag 23 december 2005 15:22 schreef JeRa het volgende:
    Ik vind dat niet zo vreemd - je doet immers een 'echo' en geen 'return'
    Ook met 'return' in plaats van echo in de checkError functie pakt die hem niet.
    JeRavrijdag 23 december 2005 @ 15:51
    quote:
    Op vrijdag 23 december 2005 15:32 schreef SkaterSam het volgende:

    [..]

    Ook met 'return' in plaats van echo in de checkError functie pakt die hem niet.
    Hoe ziet je class eruit? Wat heb je nog meer geprobeerd qua debuggen?
    SkaterSamvrijdag 23 december 2005 @ 16:05
    Hoeren! Ik had gewoon niet session_start() aangeroepen boven het script

    Ik hou er maar mee op, denk ik
    JeRavrijdag 23 december 2005 @ 16:11
    quote:
    Op vrijdag 23 december 2005 16:05 schreef SkaterSam het volgende:
    Hoeren! Ik had gewoon niet session_start() aangeroepen boven het script
    Eigenlijk wilde ik dat niet eens noemen aangezien je de vorige keer zo verhit reageerde toen iemand je vroeg of je je strings in de query escapede (want je was niet totaal dom ofzo) had 't dus toch beter kunnen doen.
    SkaterSamvrijdag 23 december 2005 @ 16:16
    quote:
    Op vrijdag 23 december 2005 16:11 schreef JeRa het volgende:
    Eigenlijk wilde ik dat niet eens noemen aangezien je de vorige keer zo verhit reageerde toen iemand je vroeg of je je strings in de query escapede (want je was niet totaal dom ofzo) had 't dus toch beter kunnen doen.
    Ja misschien toch maar wel, maar gelukkig is dit de thread voor dummies, ik begin me aardig mee te identificeren En vorige keer had ik idd een beetje gepikeerd gereageerd, maar het was al laat geloof ik Dit soort dingen en typo's zijn echt het meest frustrerende van PHP. Nu eindelijk het script verder afmaken
    xmanvrijdag 23 december 2005 @ 16:43
    LOL! Kan iemand dit voor me vertalen:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            

    $sql  = <<< ___SQL

    SELECT *
    FROM axs_events
    WHERE evt_loc_id = {$loc_id}
    AND evt_date >= '{$date}'
    ORDER BY evt_date ASC
    ___SQL;


    Waarvoor 3x <<< en dat stukje met ___SQL snap ik ook niet. (de rest snap ik wel)
    JeRavrijdag 23 december 2005 @ 17:41
    Die query zit best gaar in elkaar, een groter-dan-of-gelijk-aan-vergelijking doen met een string?

    En wat je daar ziet is heredoc syntax, een alternatief voor quotes. Die <<< geeft het begin van de heredoc aan, en die ___SQL is een willekeurige identifier die het begin en einde aangeeft.
    xmanvrijdag 23 december 2005 @ 18:23
    quote:
    Op vrijdag 23 december 2005 17:41 schreef JeRa het volgende:
    Die query zit best gaar in elkaar, een groter-dan-of-gelijk-aan-vergelijking doen met een string?

    En wat je daar ziet is heredoc syntax, een alternatief voor quotes. Die <<< geeft het begin van de heredoc aan, en die ___SQL is een willekeurige identifier die het begin en einde aangeeft.
    Thnx!
    pc-fr34kzondag 25 december 2005 @ 02:23
    Wat doe ik fout, ik wil via PHP POST-data meegeven:
    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
            $fp
    = fsockopen("host.com", 80, $errno, $errstr, 30);
            if(!
    $fp)
            {
                echo
    "$errstr ($errno)<br />\n";
            }
            else
            {
                
    $data = "foo=bar\r\n";
                
    $out = "POST /scipt.php HTTP/1.1\r\n";
                
    $out .= "Host: host.com\r\n";
                
    $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
                
    $out.="Content-Length: " .strlen($data)."\r\n";
                
    $out.=$data ."\r\n";
                
    $out .= "Connection: Close\r\n\r\n";

                
    fwrite($fp, $out);
                while (!
    feof($fp))
                {
                    
    $content .=  fgets($fp, 128);
                }
                
    fclose($fp);
                echo
    $content;
            }
    ?>

    De host geeft de melding dat ik foo in moet vullen(connectie gaat dus wel goed, maar geen post-data) of dat ik een verkeerde request verstuur als ik wat dingen verander:
    1
    2
    3
    4
    Bad Request
    Your browser sent a request that this server could not understand.

    Request header field is missing colon separator.
    Chandlerzondag 25 december 2005 @ 10:05
    Mensen even een korte vraag, hoe kan ik een & omzetten zodat het niet in de URL als een & gezien wordt... want nu kan ik een bestand niet verwijderen
    pc-fr34kzondag 25 december 2005 @ 11:37
    quote:
    Op zondag 25 december 2005 10:05 schreef Chandler het volgende:
    Mensen even een korte vraag, hoe kan ik een & omzetten zodat het niet in de URL als een & gezien wordt... want nu kan ik een bestand niet verwijderen
    str_replace()
    En dan de & veranderen naar &
    SuperRembozondag 25 december 2005 @ 11:38
    Wat dacht je van urlencode?
    pc-fr34kzondag 25 december 2005 @ 11:47
    quote:
    Op zondag 25 december 2005 11:38 schreef SuperRembo het volgende:
    Wat dacht je van urlencode?
    D'oh, had ik moeten kunnen denken. .
    SuperRembozondag 25 december 2005 @ 12:41
    En een & wordt dan geen & amp; maar %26.
    Chandlerzondag 25 december 2005 @ 12:50
    owkee dan %26 die had ik nog niet gevonden
    user931989zondag 25 december 2005 @ 17:04
    hoe kan ik als ik een getal heb, bv. 10000000, hier duizendtalpunten tussen laten zetten?
    Ik bedoel dus dit:
    invoer: 10000000
    uitvoer: 10.000.000

    het moet ook werken met bv. 93185365
    wobbelzondag 25 december 2005 @ 17:26
    Als ik minuten en seconden heb, hoe kan ik deze omtoveren in seconden?

    Bijv:

    $blaat = "3:23";

    Hoe maak ik daar seconden van? (203 seconden)
    Eerst uit elkaar trekken bij de : (hoe????) en dan voor de : x 60 en dan achter de : erbij optellen
    Nevermindzondag 25 december 2005 @ 18:17
    quote:
    Op zondag 25 december 2005 17:04 schreef user931989 het volgende:
    hoe kan ik als ik een getal heb, bv. 10000000, hier duizendtalpunten tussen laten zetten?
    Ik bedoel dus dit:
    invoer: 10000000
    uitvoer: 10.000.000

    het moet ook werken met bv. 93185365
    Het zal vast wel met een simpele functie kunnen, maar volgens mij werkt dit wel:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?   
        $getal = 1234567890;
        settype( $getal, "string" );

        $nieuw = '';
        while( strlen( $getal ) > 3 )
        {
            $nieuw = '.' . substr( $getal, -3 ) . $nieuw;
            $getal = substr( $getal, 0, strlen( $getal ) - 3 );
        }

        $nieuw = $getal . $nieuw;

        echo $nieuw;
    ?>
    quote:
    Op zondag 25 december 2005 17:26 schreef wobbel het volgende:
    Als ik minuten en seconden heb, hoe kan ik deze omtoveren in seconden?

    Bijv:

    $blaat = "3:23";

    Hoe maak ik daar seconden van? (203 seconden)
    Eerst uit elkaar trekken bij de : (hoe????) en dan voor de : x 60 en dan achter de : erbij optellen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?

        $lengte = "3:23";
        $split = explode( ':', $lengte );
       
        settype( $split[0], "int" );
        settype( $split[1], "int" );

        $seconden = $split[0] * 60 + $split[1];

        echo $seconden;
    wobbelzondag 25 december 2005 @ 18:18
    quote:
    Op zondag 25 december 2005 17:04 schreef user931989 het volgende:
    hoe kan ik als ik een getal heb, bv. 10000000, hier duizendtalpunten tussen laten zetten?
    Ik bedoel dus dit:
    invoer: 10000000
    uitvoer: 10.000.000

    het moet ook werken met bv. 93185365
    met number_format();
    http://nl2.php.net/number_format
    Swetseneggerzondag 25 december 2005 @ 18:57
    Toevallig heb ik ook een url probleempje.
    Welke kan ik nu beter gebruiken? rawurlencode of urlencode?
    Het gaat om een link meegestuurd in een e-mail, met daarin een bevestigings token van 32 karakters.

    Dit werkte prima in OE en Entourage (microsofts mail client voor Mac), maar niet in Outlook 2000, welke de url automatisch encode. Aangezien mijn script niet decode, maar wel de lengte van de token checked, geeft hij een foutmelding.

    Ik wil nu dus de tokenencode, mailen, en de bevestigingspagina de token weer laten encoden.
    Nevermindzondag 25 december 2005 @ 20:05
    Erg handig: http://www.ilovejackdaniels.com/php/php-cheat-sheet/
    Zal ik em in de OP zetten?
    Chandlerzondag 25 december 2005 @ 21:39
    Die is heel goed Nevermind heb um gelijk maar ff uitgeprint
    DutchBloodmaandag 26 december 2005 @ 11:36
    Ik heb twee tabellen.
    Eentje met onderdelen erin, met daarin een veld catid.
    Dat veld catid verwijst naar het catid van de categorie waar het onderdeel in valt. Nu wil ik dus dmv een query de onderdelen selecten en meteen de naam van de categorie ophalen.

    Dat lijkt me te doen dmv. Joins, maar hoe?
    pc-fr34kmaandag 26 december 2005 @ 12:26
    Even een schopje voor mijn vraagje:
    [PHP/(My)SQL] voor dummies - Deel 18
    Swetseneggermaandag 26 december 2005 @ 12:39
    quote:
    Op maandag 26 december 2005 11:36 schreef DutchBlood het volgende:
    Ik heb twee tabellen.
    Eentje met onderdelen erin, met daarin een veld catid.
    Dat veld catid verwijst naar het catid van de categorie waar het onderdeel in valt. Nu wil ik dus dmv een query de onderdelen selecten en meteen de naam van de categorie ophalen.

    Dat lijkt me te doen dmv. Joins, maar hoe?
    1
    2
    3
    4
    5
    6
    SELECT
    o.whatever,
    c.name
    FROM onderdelen o
    LEFT JOIN catagory c ON o.cat_id = c.cat_id
    WHERE o.id=".$_GET['id']

    Zoiets, uiteraard afhankelijk van jouw tabel opbouw
    SuperRembomaandag 26 december 2005 @ 13:06
    quote:
    Op maandag 26 december 2005 12:26 schreef pc-fr34k het volgende:
    Even een schopje voor mijn vraagje:
    [PHP/(My)SQL] voor dummies - Deel 18
    Apache geeft bij mij een error
    Bad Request
    Your browser sent a request that this server could not understand.

    Request header field is missing colon separator.
    pc-fr34kmaandag 26 december 2005 @ 13:11
    quote:
    Op maandag 26 december 2005 13:06 schreef SuperRembo het volgende:

    [..]

    Apache geeft bij mij een error
    Bad Request
    Your browser sent a request that this server could not understand.

    Request header field is missing colon separator.
    Ja, daarom ook mijn vraag, wat doe ik fout. Als ik stukken weglaat die voor de POST-data zorgen dan krijg ik wel de pagina maar te zien dat er geen POST-data is verzonden. .
    SuperRembomaandag 26 december 2005 @ 14:41
    Je moet de data versturen na "Connection Close\r\n\r\n". (Vraag me niet waarom)
    pc-fr34kdinsdag 27 december 2005 @ 00:48
    quote:
    Op maandag 26 december 2005 14:41 schreef SuperRembo het volgende:
    Je moet de data versturen na "Connection Close\r\n\r\n". (Vraag me niet waarom)
    Het is geluk, bedankt. .
    wobbeldinsdag 27 december 2005 @ 11:43
    Ook nogmaals mijn vraag dan maar
    [PHP/(My)SQL] voor dummies - Deel 18
    freissdinsdag 27 december 2005 @ 12:00
    quote:
    Op dinsdag 27 december 2005 11:43 schreef wobbel het volgende:
    Ook nogmaals mijn vraag dan maar
    [PHP/(My)SQL] voor dummies - Deel 18
    Die is al beantwoord: [PHP/(My)SQL] voor dummies - Deel 18
    wobbeldinsdag 27 december 2005 @ 13:09
    quote:
    Op dinsdag 27 december 2005 12:00 schreef freiss het volgende:

    [..]

    Die is al beantwoord: [PHP/(My)SQL] voor dummies - Deel 18
    dan is die post later geedit
    Neverminddinsdag 27 december 2005 @ 13:42
    Welnee, je kan gewoon niet lezen
    JeRadinsdag 27 december 2005 @ 19:54
    quote:
    Op maandag 26 december 2005 14:41 schreef SuperRembo het volgende:
    Je moet de data versturen na "Connection Close\r\n\r\n". (Vraag me niet waarom)
    Het is de bedoeling dat bij een HTTP request de headers eerst komenk, vervolgens een lege regel (newline), en daarna de data. Op de manier zoals het eerst gedaan werd zat de header ná de data, en dat gaat dus niet werken
    SuperRembodinsdag 27 december 2005 @ 21:18
    Ja dat zag ik later ook.
    Het komt alleen een beetje vreemd over dat je eerst de header "Connection Close" stuurt en daarna pas de data. Maar die header betekent natuurlijk niet dat de connectie meteen dicht gegooid moet worden, maar dat de connectie dicht moet als ie klaar is.
    pc-fr34kdinsdag 27 december 2005 @ 22:39
    quote:
    Op dinsdag 27 december 2005 21:18 schreef SuperRembo het volgende:
    Ja dat zag ik later ook.
    Het komt alleen een beetje vreemd over dat je eerst de header "Connection Close" stuurt en daarna pas de data. Maar die header betekent natuurlijk niet dat de connectie meteen dicht gegooid moet worden, maar dat de connectie dicht moet als ie klaar is.
    Dat was inderdaad het evrwarrende, en ik moest \r\n veranderen naar \n. Nu werkt het iig.
    Swetseneggerdinsdag 27 december 2005 @ 22:40
    quote:
    Op dinsdag 27 december 2005 22:39 schreef pc-fr34k het volgende:
    \r\n veranderen naar \n.
    Dat is afhankelijk van het OS van de server.
    \r\n is windows \n is Linux.
    pc-fr34kdinsdag 27 december 2005 @ 22:46
    quote:
    Op dinsdag 27 december 2005 22:40 schreef Swetsenegger het volgende:

    [..]

    Dat is afhankelijk van het OS van de server.
    \r\n is windows \n is Linux.
    Oh, handig, dan weet ik dat ook weer. Leer elke dag nog wat.
    JeRadinsdag 27 december 2005 @ 23:53
    En \r schijnt Mac te zijn ik hou wel van standaardisatie dus bij tekstinvoer van welke soort dan ook is vaak het eerste wat ik doe alle \r\n en \r (in die volgorde) om te zetten naar \n
    Send-a-Clauswoensdag 28 december 2005 @ 11:15
    Ik wil in een tabel het aantal rijen tellen en dat vervolgens als variabele gebruiken in php. Dus heb ik het volgende gemaakt:

    1
    2
    3
    <?php
    $aantal
    = mysql_query("SELECT COUNT(*) FROM tabel");
    ?>


    Maar dat werkt natuurlijk niet. Ik moet dat resultaat nog fetchen enzo, maar daar heb ik totaal geen verstand van. Weet iemand hoe dat moet, want van al die mysql_fetch dingen op php.net wordt ik ook niet wijzer.
    wobbelwoensdag 28 december 2005 @ 11:16
    quote:
    Op woensdag 28 december 2005 11:15 schreef Send-a-Claus het volgende:
    Ik wil in een tabel het aantal rijen tellen en dat vervolgens als variabele gebruiken in php. Dus heb ik het volgende gemaakt:
    [ code verwijderd ]

    Maar dat werkt natuurlijk niet. Ik moet dat resultaat nog fetchen enzo, maar daar heb ik totaal geen verstand van. Weet iemand hoe dat moet, want van al die mysql_fetch dingen op php.net wordt ik ook niet wijzer.
    je wilt alles in een loop?
    Roonaanwoensdag 28 december 2005 @ 11:18
    quote:
    Op woensdag 28 december 2005 11:15 schreef Send-a-Claus het volgende:
    Ik wil in een tabel het aantal rijen tellen en dat vervolgens als variabele gebruiken in php. Dus heb ik het volgende gemaakt:
    [ code verwijderd ]

    Maar dat werkt natuurlijk niet. Ik moet dat resultaat nog fetchen enzo, maar daar heb ik totaal geen verstand van. Weet iemand hoe dat moet, want van al die mysql_fetch dingen op php.net wordt ik ook niet wijzer.
    <?php
    $aantal = mysql_result(mysql_query("SELECT COUNT(*) FROM tabel"),0,0);
    ?>
    freisswoensdag 28 december 2005 @ 11:19
    Volgens mij kan je gewoon:
    1
    2
    3
    <?php
    $query
    = mysql_query("SELECT * FROM xxx")
    ?>

    doen, en dan aanroepen met
    1
    2
    3
    <?php
    $aantal
    = mysql_num_rows($query)
    ?>
    Lightwoensdag 28 december 2005 @ 11:22
    1
    2
    3
    4
    5
    <?php
    $result
    = mysql_query("SELECT COUNT(*) FROM tabel");
    $row = mysql_fetch_row($result);
    $aantal = $row[0];
    ?>
    Lightwoensdag 28 december 2005 @ 11:25
    quote:
    Op woensdag 28 december 2005 11:19 schreef freiss het volgende:
    Volgens mij kan je gewoon:
    [ code verwijderd ]

    doen, en dan aanroepen met
    [ code verwijderd ]
    Ja, dat kan. Maar als je verder niets doet met de rijen uit de tabel dan is het nogal onzinnig om ze allemaal in te lezen. Daarnaast is een count in mysql sneller, omdat niet alle data hoeft te worden overgepompt van mysql naar php. Ofwel, het werkt, maar het is sterk af te raden.
    Send-a-Clauswoensdag 28 december 2005 @ 11:26
    Bedankt iedereen, ik heb de oplossing van Roonaan genomen en die werkt perfect.

    Dank.
    Swetseneggerwoensdag 28 december 2005 @ 11:52
    Een beter voorbeeld om aan te tonen dat het controleren van userinput een MUST is, is er niet

    Persoonsgegevens bij X-Toys.nl
    Swetseneggerwoensdag 28 december 2005 @ 12:05
    Maar even terug komend op mijn vraag... urlencode of rawurlencode?
    wobbelwoensdag 28 december 2005 @ 12:14
    ik doe voor ál mijn SQL inserts/updates/selects/deletes altijd addslashes();
    En mocht bij DELETE maar 1 record verwijderd worden, dan doe ik ook LIMIT 1
    En bij selecteren ga ik eerst kijken of de $_POST en/of $_GET wel bestaat.

    Is dat veilig genoeg?
    Lightwoensdag 28 december 2005 @ 12:20
    quote:
    Op zondag 25 december 2005 18:57 schreef Swetsenegger het volgende:
    Toevallig heb ik ook een url probleempje.
    Welke kan ik nu beter gebruiken? rawurlencode of urlencode?
    Het gaat om een link meegestuurd in een e-mail, met daarin een bevestigings token van 32 karakters.

    Dit werkte prima in OE en Entourage (microsofts mail client voor Mac), maar niet in Outlook 2000, welke de url automatisch encode. Aangezien mijn script niet decode, maar wel de lengte van de token checked, geeft hij een foutmelding.

    Ik wil nu dus de tokenencode, mailen, en de bevestigingspagina de token weer laten encoden.
    Lastig. Als je urlencode hebt geprobeerd en dat werkt niet goed samen met Outlook dan kun je eens rawurlencode proberen
    Swetseneggerwoensdag 28 december 2005 @ 12:21
    quote:
    Op woensdag 28 december 2005 12:14 schreef wobbel het volgende:
    ik doe voor ál mijn SQL inserts/updates/selects/deletes altijd addslashes();
    En mocht bij DELETE maar 1 record verwijderd worden, dan doe ik ook LIMIT 1
    En bij selecteren ga ik eerst kijken of de $_POST en/of $_GET wel bestaat.

    Is dat veilig genoeg?
    Ehmz, addslashes is overbodig als magic quotes aanstaat. Dus het is handig om te controleren of magic quotes aanstaat, en zo nee DAN addslashes te doen.

    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    if(!get_magic_quotes_gpc())
                        {
                        
    $_POST['name']=addslashes($_POST['name']);
                        
    $_POST['address']=addslashes($_POST['address']);
                        
    $_POST['city']=addslashes($_POST['city']);
                    }
    ?>


    Delete, inderdaad limit 1 als het om 1 record gaat, en if ($_SERVER['REQUEST_METHOD']=='GET') is wel handig.

    Maar je controleert geen userinput op die manier, je probeert alleen de schade te beperken indien er verkeerde input is. Handiger is het om te controlere of dat wat in je GET staat overeenkomt met wat je verwacht.

    Verwacht je bv een id terug, controleer dan op is_numeric. Verwacht je een string van een bepaalde lengte (bv een token van 32 karakters) controleer dan met strlen of de lengte van de GET overeenkomt met bv 32 karakters. Verwacht je een e-mail adres, controleer dan met een preg_match of het een valid e-mail adres is. Hetzelfde met bv een postcode.
    Swetseneggerwoensdag 28 december 2005 @ 12:22
    quote:
    Op woensdag 28 december 2005 12:20 schreef Light het volgende:

    [..]

    Lastig. Als je urlencode hebt geprobeerd en dat werkt niet goed samen met Outlook dan kun je eens rawurlencode proberen
    Nee, ik had geen enkele encode gebruikt. Werkt prima in OE en entourage, en ook in Outlook 2003. Maar bij iemand met Outlook 2000 stonden er opeens vreemde gecodeerde karakters tussen.

    Maar is urlencode sowieso aan te raden wanneer je een bevestigingslink mailt?
    wobbelwoensdag 28 december 2005 @ 12:25
    quote:
    Op woensdag 28 december 2005 12:21 schreef Swetsenegger het volgende:

    [..]

    Ehmz, addslashes is overbodig als magic quotes aanstaat. Dus het is handig om te controleren of magic quotes aanstaat, en zo nee DAN addslashes te doen.
    [ code verwijderd ]

    Delete, inderdaad limit 1 als het om 1 record gaat, en if ($_SERVER['REQUEST_METHOD']=='GET') is wel handig.

    Maar je controleert geen userinput op die manier, je probeert alleen de schade te beperken indien er verkeerde input is. Handiger is het om te controlere of dat wat in je GET staat overeenkomt met wat je verwacht.

    Verwacht je bv een id terug, controleer dan op is_numeric. Verwacht je een string van een bepaalde lengte (bv een token van 32 karakters) controleer dan met strlen of de lengte van de GET overeenkomt met bv 32 karakters.
    Hier mijn activate scriptje (ff iets simpels gekozen)

    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
    php
    session_start
    ();
    /* Load main library Files */
    require_once("lib/htconfig.php");
    require_once(
    $GLOBALS['SITE']['LibPath'] . "/main.php");

    /* Register page title */
    $tml-&gt;RegisterVar                        ("DESC", "Activeren");

    if(!
    $_GET['username'] || !$_GET['hash'])
    {

        
    $error-&gt;Report                        ("Niet alle (verplichte)variablen zijn toegewezen.");

    }
    else
    {

        
    $MySQL_Username_Select                 = mysql_query("SELECT count(*) FROM Leden WHERE Username = '" . addslashes($_GET['username']) . "' AND Hash = '" . addslashes($_GET['hash']) . "' AND Actief = '1'");
        
    $MySQL_Username_Count                = mysql_result($MySQL_Username_Select, 0);
        
        if(
    $MySQL_Username_Count == 1)
        {
        
            
    $MySQL_Actief_Update            = "UPDATE Leden SET Actief = '2' WHERE Username = '" . addslashes($_GET['username']) . "' AND Hash = '" . addslashes($_GET['hash']) . "' AND Actief = '1'";
            
    $MySQL_Actief_Query                = mysql_query($MySQL_Actief_Update) or die("Fout in query op regel " . __LINE__);
        
            
    $main-&gt;Message                    ("Geactiveerd", "Je hebt je account nu succesvol geactiveerd. Je kan nu inloggen.", "menu_home");    
        
        }
        else
        {
        
            
    $error-&gt;Report                    ("Er is geen gebruikersnaam gevonden die nog geactiveerd moet worden.");
        
        }

    }

    /* Output Pages */
    $tml-&gt;Output();
    ?>


    En soms controleer ik iets wel 4x ofzo, maar dat maakt toch niet uit?
    Swetseneggerwoensdag 28 december 2005 @ 12:31
    quote:
    Op woensdag 28 december 2005 12:25 schreef wobbel het volgende:

    [..]

    Hier mijn activate scriptje (ff iets simpels gekozen)
    [ code verwijderd ]

    En soms controleer ik iets wel 4x ofzo, maar dat maakt toch niet uit?
    Waarom doe je addslashes bij een select?

    Userinput controle is op twee punten belangrijk.
    Voordat het de database ingaat. Daar moet je controleren of wat je terug krijgt overeenkomt met wat je verwacht. Is een e-mail adres ook daadwerkelijk een e-mail adres, en moet je addslashes toevoegen, etc.

    Als het de database uitkomt. Bij bv het voorbeeld van xtoys hierboven, kunnen klanten dus gegevens opvragen van ANDERE klanten, simpelweg door een beetje te rommelen met een e-mail adres. Dat mag natuurlijk nooit de bedoeling zijn. Ik ben nu bezig met een webshop, en daar kunnen klanten de status van hun bestelling zien. Maar ik wil natuurlijk niet dat ze de bestelling van een andere klant kunnen zien.

    Op de eerste plaats moeten ze inloggen voordat ze de status kunnen zien. Op die manier heb ik in iedergeval hun user_id.

    Wanneer ze dan een order_id intikken, controleer ik eerst of die numeric is, vervolgens trek ik de order_id uit de tabel WHERE order_id is <dat wat in de get staat> EN user_id <van de ingelogde klant>

    Komt hier geen resultaat uit, hebben ze zelf een order_id in de url ingetikt welke niet van hun is. Dit kan dus een niet bestaand order_id zijn, of die van een andere klant. Op deze manier is het onmogelijk de order van een andere klant te zien. Mits je een sessie kan hacken en zo de inlog van een andere klant kan spoofen

    Maar in jouw script zie ik je nergens controleren of de hash bv de lengte heeft welke je verwacht.
    Lightwoensdag 28 december 2005 @ 12:34
    quote:
    Op woensdag 28 december 2005 12:22 schreef Swetsenegger het volgende:

    [..]

    Nee, ik had geen enkele encode gebruikt. Werkt prima in OE en entourage, en ook in Outlook 2003. Maar bij iemand met Outlook 2000 stonden er opeens vreemde gecodeerde karakters tussen.

    Maar is urlencode sowieso aan te raden wanneer je een bevestigingslink mailt?
    Het lijkt me wel handig ja. Al was het maar omdat je dan je mail in plaintext kunt versturen en alle mail clients het toch nog wel goed oppakken. Overigens is het niet nodig als je er zeker van bent dat er geen vreemde tekens in de tekst staat, door bijvoorbeeld md5 te gebruiken. Dat levert ook weer een string van 32 tekens op
    Swetseneggerwoensdag 28 december 2005 @ 12:35
    quote:
    Op woensdag 28 december 2005 12:34 schreef Light het volgende:

    [..]

    Het lijkt me wel handig ja. Al was het maar omdat je dan je mail in plaintext kunt versturen en alle mail clients het toch nog wel goed oppakken. Overigens is het niet nodig als je er zeker van bent dat er geen vreemde tekens in de tekst staat, door bijvoorbeeld md5 te gebruiken. Dat levert ook weer een string van 32 tekens op
    Het is dus een md5hash.
    Daar staan dus geen vreemde tekens in. Tussen de 32 karakters stond plotseling !%0d%0d.
    Ik heb nog niet gezocht waar%0d voor staat, dan kan ik misschien achterhalen hoe die er plotseling inkomen. de ! is sowieso een raadsel.
    Lightwoensdag 28 december 2005 @ 12:38
    quote:
    Op woensdag 28 december 2005 11:52 schreef Swetsenegger het volgende:
    Een beter voorbeeld om aan te tonen dat het controleren van userinput een MUST is, is er niet

    Persoonsgegevens bij X-Toys.nl
    Da's ook een voorbeeld dat er uberhaupt checks nodig zijn. Misschien doen ze wel user input valideren, dwz een is_numeric check op dingen die numeriek moeten zijn. En toch is dat niet voldoende.
    Lightwoensdag 28 december 2005 @ 12:43
    quote:
    Op woensdag 28 december 2005 12:35 schreef Swetsenegger het volgende:

    [..]

    Het is dus een md5hash.
    Daar staan dus geen vreemde tekens in. Tussen de 32 karakters stond plotseling !%0d%0d.
    Ik heb nog niet gezocht waar%0d voor staat, dan kan ik misschien achterhalen hoe die er plotseling inkomen. de ! is sowieso een raadsel.
    %0d is ACSII 13 is een newline. Enige reden die ik daarvoor kan verzinnen is dat de url halverwege wordt afgekapt door de mail client, die dan bij het versturen de enters er maar fijn in laat zitten. Dat uitroepteken heeft er vast ook mee te maken. Maar het ligt dus gewoon aan de mail client
    Swetseneggerwoensdag 28 december 2005 @ 12:58
    quote:
    Op woensdag 28 december 2005 12:43 schreef Light het volgende:

    [..]

    %0d is ACSII 13 is een newline. Enige reden die ik daarvoor kan verzinnen is dat de url halverwege wordt afgekapt door de mail client, die dan bij het versturen de enters er maar fijn in laat zitten. Dat uitroepteken heeft er vast ook mee te maken. Maar het ligt dus gewoon aan de mail client
    Hmz...., het is inderdaad een lange url en er zat een enter in. Hoe voor kom ik dat? Want die krijg ik er ook met een urldecode niet uit.
    Zelfs als ik de url selecteerde en copy paste gaf hij die newline. Als platte tekst versturen ipv html? Maar dat is vrij lastig ivm het netjes weergeven van de bestelling.
    Lightwoensdag 28 december 2005 @ 13:36
    quote:
    Op woensdag 28 december 2005 12:58 schreef Swetsenegger het volgende:

    [..]

    Hmz...., het is inderdaad een lange url en er zat een enter in. Hoe voor kom ik dat? Want die krijg ik er ook met een urldecode niet uit.
    Zelfs als ik de url selecteerde en copy paste gaf hij die newline. Als platte tekst versturen ipv html? Maar dat is vrij lastig ivm het netjes weergeven van de bestelling.
    HTML mail? Gewoon de link neerzetten, en met een stukje tekst erbij dat als het niet werkt dat ze dan even alles op 1 regel moete kopieren. Tenminste, dat lijkt mij handig. Voor de rest zou ik ook niet weten hoe je het moet oplossen.
    Swetseneggerwoensdag 28 december 2005 @ 15:26
    quote:
    Op woensdag 28 december 2005 13:36 schreef Light het volgende:

    [..]

    HTML mail? Gewoon de link neerzetten, en met een stukje tekst erbij dat als het niet werkt dat ze dan even alles op 1 regel moete kopieren. Tenminste, dat lijkt mij handig. Voor de rest zou ik ook niet weten hoe je het moet oplossen.
    Ja, ik stuur dus een html mail, met in de body gewoon een <a href....
    Als ik die klik (en dus alleen in die mail client) werkt het niet.
    Mjah, ik test nog wel verder, misschien ging er wat met verzenden fout ofzo
    Lightwoensdag 28 december 2005 @ 15:58
    Ik neem aan dat je zelf geen enters in de url plant, en dat je de url tussen " " hebt staan in die link. Als het dan mis gaat kan het volgens mij alleen nog maar aan de betreffende mail client liggen.
    Swetseneggerwoensdag 28 december 2005 @ 19:00
    quote:
    Op woensdag 28 december 2005 15:58 schreef Light het volgende:
    Ik neem aan dat je zelf geen enters in de url plant, en dat je de url tussen " " hebt staan in die link. Als het dan mis gaat kan het volgens mij alleen nog maar aan de betreffende mail client liggen.
    1
    2
    3
    <?php
    $body
    .= "<a href=\"http://www.domein.nl/bevestig.php?bestelling=".$bestel_id."&bestel_code=".$activatie_id."\">http://www.domein.nl/bevestig.php?bestelling=".$bestel_id."&bestel_code=".$activatie_id."</a><br /><br />";
    ?>


    Staat toch niets geks in dacht ik zo.
    Hmz, ik zag net dat ik na 'activatie_id." nog een spatie had voor de \".
    Lightwoensdag 28 december 2005 @ 19:14
    Dat ziet er gewoon goed uit En die spatie voor \" mag het verschil ook niet zijn.
    Swetseneggerwoensdag 28 december 2005 @ 19:16
    quote:
    Op woensdag 28 december 2005 19:14 schreef Light het volgende:
    Dat ziet er gewoon goed uit En die spatie voor \" mag het verschil ook niet zijn.
    Ik hou het erop dat het aan de specifieke mail client lag
    de beide vars in de url bevat geen vreemde tekens, er staan geen harde enters in de url en op elke mail client functioneert het prima verder.
    Lightwoensdag 28 december 2005 @ 19:17
    Ja, dat zei ik dus ook al Het is gewoon een brakke mail client
    FuifDuifwoensdag 28 december 2005 @ 19:27
    Een vraagje aan de experts:

    In hoeverre is PHP (inmiddels) geschikt en volwassen genoeg voor echte design pattern implementaties en object geörienteerd ontwikkelen?
    JeRawoensdag 28 december 2005 @ 19:38
    quote:
    Op woensdag 28 december 2005 19:27 schreef FuifDuif het volgende:
    In hoeverre is PHP (inmiddels) geschikt en volwassen genoeg voor echte design pattern implementaties en object geörienteerd ontwikkelen?
    Volwassen genoeg voor de zeer algemene omschrijving die jij geeft. Echter is de keuze voor PHP nooit zo vanzelfsprekend als wordt vaak wordt aangenomen, right tool for the right job enzo
    FuifDuifwoensdag 28 december 2005 @ 19:45
    quote:
    Op woensdag 28 december 2005 19:38 schreef JeRa het volgende:

    [..]

    Volwassen genoeg voor de zeer algemene omschrijving die jij geeft. Echter is de keuze voor PHP nooit zo vanzelfsprekend als wordt vaak wordt aangenomen, right tool for the right job enzo
    Het punt is: ik zelf hou best wel van PHP. Ik vind dat de syntaxis wel eens wat stenger mag (zoals het niet mogen declareren van variabelen in bijvoorbeeld if-statements en deze dan daaronder, buiten de if-statement, gewoon kunnen gebruiken ), maar wat betreft de mogelijkheden en de elegantie van de taal an sich, ben ik een voorstander van PHP (uiteraard wel uitgaande van de right tool for the right job). Alleen heb ik nog altijd een beetje het gevoel, dat PHP een wat hobbyisten taaltje is. Ik ben bang dat ik mijzelf ernstig beperk, wanneer ik mij wat meer serieus ga verdiepen in de wat 'hogere' mogelijkheden. Met andere woorden: ik ben bang dat dat verspilde moeite is.
    JeRawoensdag 28 december 2005 @ 19:54
    quote:
    Op woensdag 28 december 2005 19:45 schreef FuifDuif het volgende:
    Alleen heb ik nog altijd een beetje het gevoel, dat PHP een wat hobbyisten taaltje is. Ik ben bang dat ik mijzelf ernstig beperk, wanneer ik mij wat meer serieus ga verdiepen in de wat 'hogere' mogelijkheden. Met andere woorden: ik ben bang dat dat verspilde moeite is.
    Ik snap iets niet aan deze redenering. Je hebt het gevoel dat PHP een hobbyistentaaltje is, waardoor je wellicht zou willen kijken naar alternatieven. Maar je zegt niet waar je beperkt wordt, en als je niet wordt beperkt in je werken dan is er toch niets mis met PHP?
    Woudloperwoensdag 28 december 2005 @ 20:47
    Gezocht: functie om datum / tijd voor een formulier te tonen

    Momenteel ben ik bezig een formulier aan het maken met PHP en ben ik op zoek naar een functie die ik kan gebruiken om de datum / tijd te selecteren binnen een formulier en deze zo te updaten na de submit.

    Nu heb ik een smarty versie gevonden, te weten: html_select_date, maar die is alleen te gebruiken in combinatie met smarty. Dat laatste wil ik niet, ik wil gewoon een 'stand alone' versie van deze functie. De smarty functie is overigens wel lekker duidelijk met zijn 6 select lists voor: maand, datum, jaar, uur, minuut en seconden...

    Vraag: Kan iemand mij vertellen waar ik zo'n functie kan vinden zodat ik deze kan gebruiken voor mijn formulieren. Zelf heb ik naar mijn idee met alle mogelijke keywords gezocht op Google, maar kon helaas niets vinden...
    JeRawoensdag 28 december 2005 @ 20:53
    @Woudloper

    Wat is de connectie met PHP, dit lijkt me vooral HTML en Javascript?
    Woudloperwoensdag 28 december 2005 @ 20:59
    quote:
    Op woensdag 28 december 2005 20:53 schreef JeRa het volgende:
    Wat is de connectie met PHP, dit lijkt me vooral HTML en Javascript?
    Het formulier wordt gegenereerd met PHP en vervolgens wil ik dat de selectielijst standaard de huidige datum/tijd toont. Vervolgens wil ik deze informatie bij de submit weer afvangen. Dit is de connectie met PHP. Tijdens mijn zoektocht kwam ik de smarty functie tegen, deze was PHP en vandaar mijn vraag. Mocht je een andere oplossing weten dan houd ik mij natuurlijk ook aanbevolen...
    Roonaanwoensdag 28 december 2005 @ 20:59
    quote:
    Op woensdag 28 december 2005 19:45 schreef FuifDuif het volgende:

    [..]

    Het punt is: ik zelf hou best wel van PHP. Ik vind dat de syntaxis wel eens wat stenger mag (zoals het niet mogen declareren van variabelen in bijvoorbeeld if-statements en deze dan daaronder, buiten de if-statement, gewoon kunnen gebruiken ), maar wat betreft de mogelijkheden en de elegantie van de taal an sich, ben ik een voorstander van PHP (uiteraard wel uitgaande van de right tool for the right job). Alleen heb ik nog altijd een beetje het gevoel, dat PHP een wat hobbyisten taaltje is. Ik ben bang dat ik mijzelf ernstig beperk, wanneer ik mij wat meer serieus ga verdiepen in de wat 'hogere' mogelijkheden. Met andere woorden: ik ben bang dat dat verspilde moeite is.
    Gewoon kijken met welke van beiden je het beste je geld kan verdienen.
    Petertjuhhwoensdag 28 december 2005 @ 21:28
    Ik heb een bestandje waar ik een bepaalde rij alleen wil uitlezen. Zo ziet het er nu uit:

    1
    2
    3
    4
    78.39 78.47 +0.10% 
    120.86 120.76 -0.08% 
    67.73 67.67 -0.09% 
    etcetc

    en ik wil graag de procenten uitlezen.

    In html ziet het er zo uit:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <table>

    <tr>
    <td>78.39</td>
    <td>78.47</td>
    <td>+0.10%</td>
    </tr>


    <tr>
    <td>120.86</td>
    <td>120.76</td>
    <td>-0.08%</td>
    </tr>


    <tr>
    <td>67.73</td>
    <td>67.67</td>
    <td>-0.09%</td>
    </tr>

    etcetc


    Hoe kan ik dit dan in een array zetten?

    Bijv:
    1
    2
    3
    4
    5
    +0.10% 
    -0.08% 
    -0.09% 

    $procenten = array('0.10', '-0.08', '-0.09', etc);
    Swetseneggerwoensdag 28 december 2005 @ 22:06
    quote:
    Op woensdag 28 december 2005 21:28 schreef Petertjuhh het volgende:
    Ik heb een bestandje waar ik een bepaalde rij alleen wil uitlezen. Zo ziet het er nu uit:
    [ code verwijderd ]

    en ik wil graag de procenten uitlezen.

    In html ziet het er zo uit:
    [ code verwijderd ]

    Hoe kan ik dit dan in een array zetten?

    Bijv:
    [ code verwijderd ]
    www.php.net/file
    www.php.net/explode
    Petertjuhhwoensdag 28 december 2005 @ 22:32
    quote:
    Bedankt, ik ben eruit
    Swetseneggerwoensdag 28 december 2005 @ 23:06
    Nog een vraag over veiligheid.

    Ik stop bestellingen in een array, key is het id van de produkt database, value is het aantal dat besteld wordt. Deze array staat in een sessie. Zodra iemand wat besteld, wordt de sessie bijgewerkt. De invloed op het bestel formulier is beperkt. Men kan de aantallen van bestelde produkten wijzigen. Deze waarde controleer ik met is_numeric.

    De waarden welke uit de array komen gaan zonder verdere controlle de database in. In hoeverre is het realistisch dat iemand een sessie hyjacked om op die manier sql te injecten of is dat gewoon paranoia?
    pc-fr34kwoensdag 28 december 2005 @ 23:42
    quote:
    Op woensdag 28 december 2005 23:06 schreef Swetsenegger het volgende:
    De waarden welke uit de array komen gaan zonder verdere controlle de database in. In hoeverre is het realistisch dat iemand een sessie hyjacked om op die manier sql te injecten of is dat gewoon paranoia?
    Je kan toch nooit SQL injecten met alleen maar cijfers? . Lijkt me dus veilig.
    JeRawoensdag 28 december 2005 @ 23:47
    quote:
    Op woensdag 28 december 2005 23:06 schreef Swetsenegger het volgende:

    De waarden welke uit de array komen gaan zonder verdere controlle de database in. In hoeverre is het realistisch dat iemand een sessie hyjacked om op die manier sql te injecten of is dat gewoon paranoia?
    Als iemand een session overneemt betekent dat nog niet dat hij/zij iets aan die session kan veranderen. Dit gebeurt alleen via jouw webinterface en die interface dient dus goed in elkaar te zitten
    Lightdonderdag 29 december 2005 @ 00:03
    quote:
    Op woensdag 28 december 2005 23:06 schreef Swetsenegger het volgende:
    Nog een vraag over veiligheid.

    Ik stop bestellingen in een array, key is het id van de produkt database, value is het aantal dat besteld wordt. Deze array staat in een sessie. Zodra iemand wat besteld, wordt de sessie bijgewerkt. De invloed op het bestel formulier is beperkt. Men kan de aantallen van bestelde produkten wijzigen. Deze waarde controleer ik met is_numeric.

    De waarden welke uit de array komen gaan zonder verdere controlle de database in. In hoeverre is het realistisch dat iemand een sessie hyjacked om op die manier sql te injecten of is dat gewoon paranoia?
    Zolang jij de invoer controleert (zowel de key als de value) en zorgt dat die invoer aan de gestelde eisen voldoet voordat je die in de sessie stopt, kan iemand ook met een sessie hijack de gegevens niet zodanig veranderen dat er gevaarlijke dingen in komen te staan. En als je waarden concequent controleert voordat je ze in de sessie stopt dan hoef je ze niet te controleren als je ze er weer uithaalt.
    FuifDuifdonderdag 29 december 2005 @ 06:58
    quote:
    Op woensdag 28 december 2005 20:59 schreef Woudloper het volgende:

    [..]

    Het formulier wordt gegenereerd met PHP en vervolgens wil ik dat de selectielijst standaard de huidige datum/tijd toont. Vervolgens wil ik deze informatie bij de submit weer afvangen. Dit is de connectie met PHP. Tijdens mijn zoektocht kwam ik de smarty functie tegen, deze was PHP en vandaar mijn vraag. Mocht je een andere oplossing weten dan houd ik mij natuurlijk ook aanbevolen...
    Ik los dit altijd op met behulp van selectie-componenten. Voor de datum: één voor dag, één voor maand, één voor jaar; voor de tijd: één voor uur en één voor minuut. De inhoud bouw ik dan op in het presenterende script.
    SuperRembodonderdag 29 december 2005 @ 08:03
    quote:
    Op donderdag 29 december 2005 06:58 schreef FuifDuif het volgende:

    [..]

    Ik los dit altijd op met behulp van selectie-componenten. Voor de datum: één voor dag, één voor maand, één voor jaar; voor de tijd: één voor uur en één voor minuut. De inhoud bouw ik dan op in het presenterende script.
    Dat soort dingen vind ik altijd erg irritant om in te vullen.
    FuifDuifdonderdag 29 december 2005 @ 08:10
    quote:
    Op donderdag 29 december 2005 08:03 schreef SuperRembo het volgende:

    [..]

    Dat soort dingen vind ik altijd erg irritant om in te vullen.
    Serieus? Hoe vul jij het liefst een datum in? In een tekstveld waarbij het formaat bijvoorbeeld moet zijn "dd-mm-jjjj"? Dat is een mogelijkheid, maar met een tekstveld dwing je het correcte formaat 100% af.
    Roonaandonderdag 29 december 2005 @ 08:56
    quote:
    Op donderdag 29 december 2005 08:10 schreef FuifDuif het volgende:

    [..]

    Serieus? Hoe vul jij het liefst een datum in? In een tekstveld waarbij het formaat bijvoorbeeld moet zijn "dd-mm-jjjj"? Dat is een mogelijkheid, maar met een tekstveld dwing je het correcte formaat 100% af.
    Nee hoor. De foksearch zal straks ook meerdere formaten gaan ondersteunen, alhoewel deze helaas niet het verschil zal gaan zien tussen dd/mm/jjjj en mm/dd/jjjj; maar goed, die tweede gebruikt niemand lijkt me.
    Woudloperdonderdag 29 december 2005 @ 09:26
    quote:
    Op donderdag 29 december 2005 06:58 schreef FuifDuif het volgende:
    Ik los dit altijd op met behulp van selectie-componenten. Voor de datum: één voor dag, één voor maand, één voor jaar; voor de tijd: één voor uur en één voor minuut. De inhoud bouw ik dan op in het presenterende script.
    Naar zo'n script ben ik ook opzoek. De smarty versie waar ik het over had is namelijk ook zo vormgegeven en die geeft standaard bijvoorbeeld de datum weer. Echter vind ik het onzin om speciaal voor één zo'n functie helemaal smarty te gaan gebruiken...

    Heb jij wellicht een voorbeeld van dat script waar jij het over hebt. Op internet (diverse PHP websites) heb ik zoiets lopen zoeken, maar kon helaas niets vinden...
    FuifDuifdonderdag 29 december 2005 @ 11:22
    quote:
    Op donderdag 29 december 2005 09:26 schreef Woudloper het volgende:

    [..]

    Naar zo'n script ben ik ook opzoek. De smarty versie waar ik het over had is namelijk ook zo vormgegeven en die geeft standaard bijvoorbeeld de datum weer. Echter vind ik het onzin om speciaal voor één zo'n functie helemaal smarty te gaan gebruiken...

    Heb jij wellicht een voorbeeld van dat script waar jij het over hebt. Op internet (diverse PHP websites) heb ik zoiets lopen zoeken, maar kon helaas niets vinden...
    Je kunt zoiets eenvoudig zelf maken. Bijvoorbeeld even heel eenvoudig uit de losse pols (dus fouten onder voorbehoud ):

    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
    $day = $_POST["day"];
    $month = $_POST["month"];
    $year = $_POST["year"];

    <select name="day">
    <?
    for($i = 1; $i < 32; $i++)
    {
    ?>
    <option label="<?=$i?>" value="<?=$i?>" <? if($day == $i) { ?>selected="selected"<? } ?>><?=$i?></option>
    <?
    }
    ?>
    </select>

    <select name="month">
    <?
    for($i = 1; $i < 13; $i++)
    {
    ?>
    <option label="<?=$i?>" value="<?=$i?>" <? if($month == $i) { ?>selected="selected"<? } ?>><?=$i?></option>
    <?
    }
    ?>
    </select>

    <select name="year">
    <?
    $currentYear = date("Y");
    $firstYear = date("Y") - 100;
    for($i = $firstYear; $i < $currentYear; $i++)
    {
    ?>
    <option label="<?=$i?>" value="<?=$i?>" <? if$year == $i) { ?>selected="selected"<? } ?>><?=$i?></option>
    <?
    }
    ?>
    </select>


    Dit voorbeeld geeft bij een POST ook altijd de geselecteerde dag, maand en jaar terug. Bij de maanden zou je ook maandnamen weer kunnen geven en uiteraard gaat het bij de lijst van jaren erom wat je wilt (in dit voorbeeld wordt een lijst gemaakt van jaartallen van nu tot en met 100 jaar geleden).
    Roonaandonderdag 29 december 2005 @ 11:24
    Qua begrip zou ik echter <= 31 gebruiken ipv < 32 en < 13. eigenlijk.
    Lightdonderdag 29 december 2005 @ 11:30
    En qua resultaat zou ik <= $currentYear gebruiken.
    FuifDuifdonderdag 29 december 2005 @ 12:48
    Jullie hebben gelijk.
    #ANONIEMvrijdag 30 december 2005 @ 11:02
    hm, hoe kan ik het beste dit aanpakken:

    Ik heb een bestand met daarin veel van dit soort dingen:

    User.title = test
    User.name = test2
    User.age = 12
    Menu.header = test
    Menu.title = test2

    Hoe kan ik dit omzetten naar een array User met daarin die keys zoals age etc, en de waarde?

    Ik heb nu wel dit:

    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
    class fileReader {

          var
    $filename;
        var
    $settings;

        function
    fileReader () {
            
    $this-&gt;filename = './test.properties';
               
    $this-&gt;getSettings();
        }
          
        function
    getSettings () {
           
    $file = file($this-&gt;filename);
           
    reset($file);
          
           foreach (
    $file as $line) {
                
    $line = rtrim($line);  # Get rid of newline characters
                 
    $line = ltrim($line);  # Get rid of any leading spaces
                 
                
    if ($line == "" || $line == "\n" || strstr($line,"#") == 1) {
                       
    next($file);
                 } else {  
                       list(
    $key, $value) = preg_split("/\s*=\s*/", $line, 2); # split by "=" and removing blank space either side of it.
                       
    $this-&gt;settings[$key] = $value;
                 }
    // end if
               
    } // end for each
          
          
    } // end function
    }
    ?>


    Deze split dus wel de line, en maakt er een enkelvoudige array van, maar hoe pas ik dit aan?

    [ Bericht 92% gewijzigd door #ANONIEM op 30-12-2005 11:04:16 ]
    Lightvrijdag 30 december 2005 @ 12:46
    1
    2
    3
    4
    5
    6
    <?php
    list($array, $key, $value) = preg_split("/([^\.]+)\.(\S+)\s*=\s*(\S+)/", $line, 2); # split by "=" and removing blank space either side of it.
    $array = ucfirst(strtolower($array));  //Gebruikersvriendelijkheid
    $key = strtolower($key);
    $this-&gt;settings[$array][$key] = $value;
    ?>


    Niet getest overigens.
    splendorvrijdag 30 december 2005 @ 20:36
    Met ereg of str_replace kan ik uit een variable netjes een paar letters of woordjes vervangen door iets anders.. kut wordt **** enzo.
    Alleen heb ik nu een variable met een hoop rotzooi tekens erin zoals !@#$% en ik wil dat er alleen A-Za-z0-9 overblijft, de rest moet weg. Hoe doe ik dat?
    Of nog beter, is er een standaard functie die mijn variable schoonmaakt op wat browser compatible is? Zeg maar elk character die in html geen & wordt enzo mag blijven, de rest moet uit het variable.
    SuperRembovrijdag 30 december 2005 @ 21:13
    htmlentities() of htmlspecialchars().
    JeRavrijdag 30 december 2005 @ 21:16
    Met preg_replace() kun je alles wat niet in een range valt wegfiltreren:

    $string = preg_replace('/[^a-z0-9]/i', '', $string);

    En voor de rest dus dit:
    quote:
    Op vrijdag 30 december 2005 21:13 schreef SuperRembo het volgende:
    htmlentities() of htmlspecialchars().
    Swetseneggervrijdag 30 december 2005 @ 21:58
    1
    2
    DELETE * FROM users
    WHERE thedate=DATE_SUB(NOW(), INTERVAL 2 DAY) && activated=0


    Waarom geeft dit een error, en dit

    1
    2
    SELECT * FROM users
    WHERE thedate=DATE_SUB(NOW(), INTERVAL 2 DAY) && activated=0


    gewoon netjes de juiste records terug?

    de error bij de delete
    quote:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM users
    WHERE thedate=DATE_SUB(NOW(), INTERVAL 2 DAY) && activated=0' at line 1
    -edit- fuck, domme lul. DELETE FROM natuurlijk, zonder *
    In de war door een eerdere query:
    1
    2
    3
    4
    5
    6
    DELETE
    oc.*,o.*
    FROM orders AS o
    INNER JOIN order_content AS oc
    USING (order_id)
    WHERE o.thedate=DATE_SUB(NOW(), INTERVAL 2 DAY) && activated=0



    [ Bericht 13% gewijzigd door Swetsenegger op 30-12-2005 22:13:23 ]
    JeRavrijdag 30 december 2005 @ 22:33
    Ik zie dat je && gebruikt in plaats van AND, wat de meesten (ook ik) doen. Heeft iemand toevallig een idee wat ANSI SQL voorschrijft, want nu ben ik wel benieuwd en of er überhaupt verschil is in werking, volgens de documentatie krijgen ze een even hoge precendence.
    Lightvrijdag 30 december 2005 @ 22:43
    Daarvoor hebben we google:
    quote:
    MySQL understands the || and && operators to mean logical OR and AND, as in the C programming language. In MySQL, || and OR are synonyms, as are && and AND. Because of this nice syntax, MySQL doesn't support the ANSI SQL || operator for string concatenation; use CONCAT() instead. Because CONCAT() takes any number of arguments, it's easy to convert use of the || operator to MySQL.
    Bron
    SuperRembovrijdag 30 december 2005 @ 22:54
    Ik heb in sql nog nooit && gezien. Ook gezien de rest van de taal lijkt me AND logischer dan &&.
    && werkt ook niet in sql server.
    splendorzaterdag 31 december 2005 @ 01:41
    quote:
    Op vrijdag 30 december 2005 21:16 schreef JeRa het volgende:
    Met preg_replace() kun je alles wat niet in een range valt wegfiltreren:

    $string = preg_replace('/[^a-z0-9]/i', '', $string);

    En voor de rest dus dit:
    [..]

    Werkt perfect, bedankt allebei
    Lightzaterdag 31 december 2005 @ 01:48
    quote:
    Op vrijdag 30 december 2005 22:54 schreef SuperRembo het volgende:
    Ik heb in sql nog nooit && gezien. Ook gezien de rest van de taal lijkt me AND logischer dan &&.
    && werkt ook niet in sql server.
    Nou, omdat || in sql al niet hetzelfde is als OR denk ik ook niet dat && hetzelfde is als AND. En && wordt verder niet genoemd, dus het kan goed zijn dat dat helemaal geen functie heeft.
    Chandlerzaterdag 31 december 2005 @ 09:38
    Hellow allemaal,

    Op de laatste dag van dit jaar heb ik nog een leuke. Veel websites werken met het positioneren van data, dat gaat vaak doormiddel van het zetten van een positie nummer in een database. Nu wil ik eens weten hoe dat in zijn werk gaat.

    Stel ik heb een startpagina en heb 3 colums met in die 3 colums de onderdelen van de startpagina

    1
    2
    3
    4
    5
    6
    7
    8
    9
          COLUM 1     COLUM 2      COLUM 3

           item1       item2        item2

           item2       item3        item1

           item3       item1

                       item4


    Nu zie je dat colum 1 gewoon alles achter elkaar is, item 1 t/m 3 en dat colum 2 anders ingevuld zijn.

    Mijn database heeft 4 velden. (id, colum_id, sort_id, titel) en iedere keer als ik een item aan een colum toevoeg kijk ik naar hoeveel items er in dat colum staat en voeg die dan in in het veld sort_id +1 zodat het 1 groter is dan het aantal.

    Graag zou ik eens willen weten hoe mensen items verplaatsen... hoe pak je dit aan?
    Roonaanzaterdag 31 december 2005 @ 10:05
    *geen zin heeft om basics voor te kauwen*
    Chandlerzaterdag 31 december 2005 @ 10:12
    waarom post je dan? geef gewoon hints misschien zie ik het ligt dan? want ik heb wel een idee maar dan moet ik vele queries doen en veel bedoel ik het aantal items
    JeRazaterdag 31 december 2005 @ 10:22
    quote:
    Op zaterdag 31 december 2005 10:12 schreef Chandler het volgende:
    waarom post je dan? geef gewoon hints misschien zie ik het ligt dan? want ik heb wel een idee maar dan moet ik vele queries doen en veel bedoel ik het aantal items
    Ik vind het persoonlijk ook behoorlijk flauw van Roönaän.

    Als ik het goed begrijp heb je dus een veld 'sortid' (of sortnr, want het is eigenlijk geen ID als in een foreign key) waarop je sorteert. Als je vervolgens die velden wilt gaat verwisselen moet je dus achter de twee primary keys van die velden zien te komen, en hun sortid's omwisselen of is dat je vraag niet?
    Chandlerzaterdag 31 december 2005 @ 10:54
    dat is inderdaad wa ik bedoel maar ik doel meer dan stel je hebt 10 items en je wilt de bovenste ergens midden in planten en dat dan het liefst zonder al te veel queries! maar goed ik ga hier volgend jaar wel over verder.
    SuperRembozaterdag 31 december 2005 @ 11:02
    Je verplaatst item2 uit kolom 2 helemaal naar onderen. Dan krijgt item2 de sort_id van item4, de andere items in de kolom schuiven allemaal 1 op.
    FuifDuifzaterdag 31 december 2005 @ 11:05
    quote:
    Op zaterdag 31 december 2005 10:54 schreef Chandler het volgende:
    dat is inderdaad wa ik bedoel maar ik doel meer dan stel je hebt 10 items en je wilt de bovenste ergens midden in planten en dat dan het liefst zonder al te veel queries! maar goed ik ga hier volgend jaar wel over verder.
    In feite heb je daar niet veel queries voor nodig. Wanneer je hem insert, kun je er voor kiezen om een nieuwe insert standaard onderaan te plakken. Via een beheertool zou je daarnaast dan een overzicht kunnen geven waarmee je de indeling kunt instellen (bijvoorbeeld via pijl omhoog en naar beneden bij iedere records). De omhoog-pijl verwisselt het geselecteerde element met het element daarboven en een omlaag-pijl doet het andersom. Je kunt het natuurlijk zo uitgebreid maken als je zelf wilt.
    Roonaanzaterdag 31 december 2005 @ 11:35
    quote:
    Op zaterdag 31 december 2005 10:12 schreef Chandler het volgende:
    waarom post je dan? geef gewoon hints misschien zie ik het ligt dan? want ik heb wel een idee maar dan moet ik vele queries doen en veel bedoel ik het aantal items
    mja, je ziet toch zelf ook wel in dat al duizenden zij het niet honderdduizenden voor jou met dit probleem gezeten hebben.
    Swetseneggerzaterdag 31 december 2005 @ 11:53
    quote:
    Op zaterdag 31 december 2005 11:35 schreef Ro�a� het volgende:

    [..]

    mja, je ziet toch zelf ook wel in dat al duizenden zij het niet honderdduizenden voor jou met dit probleem gezeten hebben.
    Daarom heet dit topic ook [PHP/MySQL] voor dummies.
    Opzich is het natuurlijk vervelend wanneer mensen dezelfde vraag stellen, zonder er van te willen leren. Dan heb ik zelf ook een kort arrogant lontje, maar bij Chandler is dat toch niet echt het geval? Meestal pakt hij dingen snel op en is bereid zijn visie aan te passen.

    Daarnaast is het zo dat het op Fok niet erg eenvoudig zoeken is he op dit moment

    En uiteraard kan je de basics op google vast wel ergens vinden, maar schiet dit hele topic dan zijn doel niet een beetje voorbij? Of een discussie forum an sich. ALLES wat op fok besproken wordt is ook ergens anders wel te vinden. Het is toch juist bedoeld om de mindere geesten af en toe een zetje te geven.
    mooyazaterdag 31 december 2005 @ 12:05
    In heb een ubb parser die van [img]blabla/plaatje.jpg[/img] een afbeeldin gmaakt.

    1
    2
    3
    <?php
    $str
    = preg_replace("/\[img\](.*?)\[\/img\]/si","<img src=\"\\1\" alt=\"\">",$str);
    ?>


    Hoe kan ik de hoogte en breedte van de afbeelding ophalen? zodat ik de afbeelding kan verkleinen als deze te breed is

    Chandlerzaterdag 31 december 2005 @ 12:08
    @Sr; tnx.

    @anderen: tnx.

    @Roonaan; ongetwijfeld dat er voor voor me aangegaan zijn maar helaas blijkt niemand een overzichtelijke oplossing (voor zover ik gezocht heb) heeft beschreven...
    Chandlerzaterdag 31 december 2005 @ 12:09
    quote:
    Op zaterdag 31 december 2005 12:05 schreef mooya het volgende:
    In heb een ubb parser die van [[url=blabla/plaatje.jpg]afbeelding[/url]] een afbeeldin gmaakt.
    [ code verwijderd ]

    Hoe kan ik de hoogte en breedte van de afbeelding ophalen? zodat ik de afbeelding kan verkleinen als deze te breed is

    Dat doen ze tegenwoordig met Javascript zoals FOK ook heeft gedaan
    Swetseneggerzaterdag 31 december 2005 @ 12:12
    quote:
    Op zaterdag 31 december 2005 12:05 schreef mooya het volgende:
    In heb een ubb parser die van [[url=blabla/plaatje.jpg]afbeelding[/url]] een afbeeldin gmaakt.
    [ code verwijderd ]

    Hoe kan ik de hoogte en breedte van de afbeelding ophalen? zodat ik de afbeelding kan verkleinen als deze te breed is

    Als het plaatje wordt geupload kan je dat met PHP aanpassen. Als het om een afbeelding gaat, welke mensen in jouw toepassing linken of iets dergelijks, zal je het met clientside scripting moeten doen zoals javascript.
    mooyazaterdag 31 december 2005 @ 12:13
    quote:
    Op zaterdag 31 december 2005 12:09 schreef Chandler het volgende:

    [..]

    Dat doen ze tegenwoordig met Javascript zoals FOK ook heeft gedaan
    ok TNX..
    Zal eens kijken of ik er wijzer uit wordt.
    rickmanszaterdag 31 december 2005 @ 18:54
    wellicht een hele basic vraag, maar ik zie het niet zo heel snel langskomen in de manual van phpdoc. Ik merk dat phpdoc erg sterk is in het documentatie van classes, maar kan ik dit ook doen voor gewone files waarin bijvoorbeeld een simpele if staat? Wat ik tot nu toe zie is dat alleen een page-level docblock wordt meegenomen, maar documentatie bij bijvoorbeeld een eenvoudige if wordt niet opgepakt. Is dit juist, wordt het gewoon simpelweg niet meegenomen, of doe ik het een en ander fout waardoor het niet meegenomen wordt.
    Swetseneggerzaterdag 31 december 2005 @ 19:05
    quote:
    Op zaterdag 31 december 2005 18:54 schreef rickmans het volgende:
    wellicht een hele basic vraag, maar ik zie het niet zo heel snel langskomen in de manual van phpdoc. Ik merk dat phpdoc erg sterk is in het documentatie van classes, maar kan ik dit ook doen voor gewone files waarin bijvoorbeeld een simpele if staat? Wat ik tot nu toe zie is dat alleen een page-level docblock wordt meegenomen, maar documentatie bij bijvoorbeeld een eenvoudige if wordt niet opgepakt. Is dit juist, wordt het gewoon simpelweg niet meegenomen, of doe ik het een en ander fout waardoor het niet meegenomen wordt.
    Ik weet niet eens waar je het over hebt
    Wat is phpdoc?
    rickmanszaterdag 31 december 2005 @ 19:07
    quote:
    Op zaterdag 31 december 2005 19:05 schreef Swetsenegger het volgende:

    [..]

    Ik weet niet eens waar je het over hebt
    Wat is phpdoc?
    http://www.phpdoc.org/
    quote:
    phpdocu is the current standard auto-documentation tool for the php language. Similar to Javadoc, and written in php, phpDocumentor can be used from the command line or a web interface to create professional documentation from php source code. phpDocumentor has support for linking between documentation, incorporating user level documents like tutorials and creation of highlighted source code with cross referencing to php general documentation.
    Swetseneggerzaterdag 31 december 2005 @ 19:13
    quote:
    Op zaterdag 31 december 2005 19:07 schreef rickmans het volgende:

    [..]

    http://www.phpdoc.org/

    phpDocumentor can be used from the command line or a web interface to create professional documentation from php source code
    Concreet... wat doet het dan?
    rickmanszaterdag 31 december 2005 @ 19:19
    Het maakt op zich van de comments in je code een documentatie naslagwerkje. (om het even heel kort door de bocht te zeggen ).
    Swetseneggerzaterdag 31 december 2005 @ 19:20
    quote:
    Op zaterdag 31 december 2005 19:19 schreef rickmans het volgende:
    Het maakt op zich van de comments in je code een documentatie naslagwerkje. (om het even heel kort door de bocht te zeggen ).
    Ah, vandaar dat ik er niets van weet, aangezien ik een notoire ik-plaats-nooit-comments coder ben .
    SuperRembozaterdag 31 december 2005 @ 19:30
    quote:
    Op zaterdag 31 december 2005 19:20 schreef Swetsenegger het volgende:

    [..]

    Ah, vandaar dat ik er niets van weet, aangezien ik een notoire ik-plaats-nooit-comments coder ben .
    Laat je klanten het niet horen
    Lightzaterdag 31 december 2005 @ 21:41
    quote:
    Op zaterdag 31 december 2005 18:54 schreef rickmans het volgende:
    wellicht een hele basic vraag, maar ik zie het niet zo heel snel langskomen in de manual van phpdoc. Ik merk dat phpdoc erg sterk is in het documentatie van classes, maar kan ik dit ook doen voor gewone files waarin bijvoorbeeld een simpele if staat? Wat ik tot nu toe zie is dat alleen een page-level docblock wordt meegenomen, maar documentatie bij bijvoorbeeld een eenvoudige if wordt niet opgepakt. Is dit juist, wordt het gewoon simpelweg niet meegenomen, of doe ik het een en ander fout waardoor het niet meegenomen wordt.
    Volgens mij is phpdoc vooral bedoeld om na te kunnen gaan welke variabelen en functies er in een class zitten, en niet voor hoe die dingen intern werken. En in feite is dat ook niet echt interessant. Als je in phpdoc ziet dat er een functie foo is met argumenten bar1 en bar2 dan wil je kunnen terugvinden wat de functie doet met die argumenten, niet hoe.

    Commentaar bij een if mag natuurlijk wel maar dan gewoon als normaal commentaar met // of /* */ . Javadoc moet java classes begrijpbaar / bruikbaar maken, en dat in principe zonder dat je zelfs maar de code ervan kunt zien. Bij phpdoc geldt dan hetzelfde.
    rickmanszaterdag 31 december 2005 @ 22:16
    okay, dan hoef ik op dat stukje niet meer energie er in te steken, kan ik gewoon weer verder gaan met documentatie van classes en voor de andere files volstaan met een page-level docblock .
    Swetseneggerzondag 1 januari 2006 @ 00:59
    quote:
    Op zaterdag 31 december 2005 19:30 schreef SuperRembo het volgende:

    [..]

    Laat je klanten het niet horen
    Wat hebben die met mijn comments te maken?
    Swetseneggerzondag 1 januari 2006 @ 01:02
    Ow en allemaal de beste wensen
    Lightzondag 1 januari 2006 @ 01:10
    quote:
    Op zondag 1 januari 2006 01:02 schreef Swetsenegger het volgende:
    Ow en allemaal de beste wensen
    Dank, en van hetzelfde

    En de rest ook natuurlijk