FOK!forum / Digital Corner / [PHP/(My)SQL] voor dummies - Deel 17
existenzzaterdag 3 december 2005 @ 15:01

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

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
  • existenzzaterdag 3 december 2005 @ 15:03
    Laatste stukje uit vorige topic:
    quote:
    Op zaterdag 3 december 2005 14:55 schreef Onderbroek het volgende:
    ik moet als opdracht voor school een klein invulschermpje maken (php). alles is goed gegaan maar ik weet niet hoe ik alles netjes onder elkaar kan zetten, misschien dat jullie mij daarmee kunnen helpen.

    de code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <body>
    <FORM name=Voornaam action=toon_keuze.php method=get>
    <?php echo ("voornaam")?><INPUT value=... name=Voornaam><BR>
    <?php echo ("achternaam")?><INPUT value=... name=Achternaam> <BR><BR>
    <?php echo ("geslacht")?><BR>
    <?php echo ("man")?><INPUT type=radio value=man name=geslacht> <BR>
    <?php echo ("vrouw")?><INPUT type=radio value=vrouw name=geslacht> <BR><BR>
    <?php echo ("interesse")?><BR>
    <?php echo ("Volkskrant")?><INPUT type=checkbox value=Volkskrant name=Interesse> <BR>
    <?php echo ("Algemeen Dagblad")?><INPUT type=checkbox value="Algemeen Dagblad" name=Interesse> <BR>
    <INPUT type=submit value=send name=submit> </FORM>
    </body>
    Antwoord:
    1
    2
    3
    4
    5
    6
    <table width="100%">
    <tr width=100%>
    <td width="40%"><?php echo "voornaam" ?></td>
    <td> <INPUT value=... name=Voornaam></td>
    </tr>
    </table> 


    Hoeft dus niet in php te gebeuren Gewoon met tabellen of divjes in html werken.
    Onderbroekzaterdag 3 december 2005 @ 15:13
    quote:
    Op zaterdag 3 december 2005 15:03 schreef existenz het volgende:
    Laatste stukje uit vorige topic:
    [..]

    Antwoord:
    [ code verwijderd ]

    Hoeft dus niet in php te gebeuren Gewoon met tabellen of divjes in html werken.
    ik heb alles in een tabel staan maar het blijft scheef...zou je misschien precies uit kunnen leggen hoe de code eruit moet zien?
    existenzzaterdag 3 december 2005 @ 15:47
    quote:
    Op zaterdag 3 december 2005 15:13 schreef Onderbroek het volgende:

    [..]

    ik heb alles in een tabel staan maar het blijft scheef...zou je misschien precies uit kunnen leggen hoe de code eruit moet zien?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <table width="100%">
    <tr width=100%>
    <td width="40%"><?php echo "voornaam" ?></td>
    <td> <INPUT value=... name=Voornaam></td>
    </tr>
    <tr>
    <td><?php echo "achternaam" ?></td>
    <td> <INPUT value=... name=Achternaam></td>
    </tr>
    </table> 


    Dus per "rij" een <tr> (tabel row) met 2 <td>'s (Tabel d?? (wtf is die d eigenlijk?) kolom).
    SuperRembozaterdag 3 december 2005 @ 15:52
    De d van data
    existenzzaterdag 3 december 2005 @ 15:55
    quote:
    Op zaterdag 3 december 2005 15:52 schreef SuperRembo het volgende:
    De d van data
    Dat had ik kunnen weten dat het zoiets lomps zou zijn . Iedereen noemt het kolommen maar W3C, de organisatie voor standaarden, wijkt weer es lekker af
    SuperRembozaterdag 3 december 2005 @ 16:04
    tr: table row
    td: table data cell
    th: table header cell
    Daar is niets onlogisch aan.

    In plaats van de width op elke td zetten, is het mss makkelijker om de col-tag te gebruiken:

    1
    2
    3
    4
    5
    <table>
       <col width="40%">
       <col width="60%">
       <tr>
          ...


    Je zou het ook met een definitionlist (dl) kunnen stylen.
    visvogelzaterdag 3 december 2005 @ 16:04
    quote:
    Op zaterdag 3 december 2005 15:03 schreef existenz het volgende:
    Laatste stukje uit vorige topic:
    [..]

    Antwoord:
    [ code verwijderd ]

    Hoeft dus niet in php te gebeuren Gewoon met tabellen of divjes in html werken.
    Ik snap niet waarom je : <?php echo "Voornaam"; ?> gebruikt.... gewoon "Voornaam" doet precies hetzelfde dacht ik zo... Of ga je met verschillende talen werken? Dan moet je ze in variabelen gooien:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $word_voornaam    
    = "Voornaam";
    $word_achternaam = "Achternaam";
    enz...

    echo
    $word_voornaam;
    echo
    "<br><input type=\"text\" name=\"voornaam\"><br>";
    Enz enz enz...
    ?>



    [ Bericht 33% gewijzigd door visvogel op 03-12-2005 16:20:42 ]
    existenzzaterdag 3 december 2005 @ 16:06
    quote:
    Op zaterdag 3 december 2005 16:04 schreef visvogel het volgende:

    [..]

    Ik snap niet waarom je : <?php echo "Voornaam"; ?> gebruikt.... gewoon "Voornaam" doet precies hetzelfde dacht ik zo... Of ga je met verschillende talen werken? Dan moet je ze in variabelen gooien:

    <code>
    <?
    $word_voornaam = "Voornaam";
    $word_achternaam = "Achternaam";
    \\ enz...

    echo $word_voornaam;
    echo "<br><input type=\"text\" name=\"voornaam\"><br>";
    \\Enz enz enz...
    ?>

    </code>
    Ik heb geen flauw idee. Ik heb dat stuk uit de code van Onderbroek gekopieerd en heb dus geen idee wat hij er mee wil doen.
    Onderbroekzaterdag 3 december 2005 @ 16:31
    quote:
    Op zaterdag 3 december 2005 16:06 schreef existenz het volgende:

    [..]

    Ik heb geen flauw idee. Ik heb dat stuk uit de code van Onderbroek gekopieerd en heb dus geen idee wat hij er mee wil doen.
    ik moet gewoon een invulschermpje maken voor een oefenopdracht voor school. Het is de bedoeling dat je op deze manier php leert kennen.
    Ik heb de code gemaakt zoals ik dacht dat ie zou moeten werken...ik ben zoals je blijkbaar gemerkt hebt geen php-held

    Beginner-X----------------------Ervaren (de X is mijn niveau op het moment )
    the_disheaverzaterdag 3 december 2005 @ 16:38
    quote:
    Op zaterdag 3 december 2005 15:47 schreef existenz het volgende:

    [..]
    [ code verwijderd ]

    Dus per "rij" een <tr> (tabel row) met 2 <td>'s (Tabel d?? (wtf is die d eigenlijk?) kolom).
    Je mist volgens mij een puntkomma (';') achter de echo's ik weet het wel zeker, maar toch moest ik ergens een v vandaan halen...
    quote:
    Op zaterdag 3 december 2005 16:04 schreef SuperRembo het volgende:
    In plaats van de width op elke td zetten, is het mss makkelijker om de col-tag te gebruiken:
    [ code verwijderd ]
    Dankje weer wat html geleerd
    SuperRembozaterdag 3 december 2005 @ 16:54
    Voor de php sluittag (?>) hoeft geen ;
    the_disheaverzaterdag 3 december 2005 @ 17:09
    quote:
    Op zaterdag 3 december 2005 16:54 schreef SuperRembo het volgende:
    Voor de php sluittag (?>) hoeft geen ;
    ow.... Nog meer geleerd...

    Maar om de kans om die puntkommas te vergeten is het toch verstandig voor mij om die wel te plaatsen...
    Hoe voorkomen jullie die irritante fouten als een variable een verkeerde naam te geven waardoor je uren zit te staren waarom ie het niet doet...?

    Moet wel gezegd worden dat ik de variable in eerte instantie wel goed had, maar na de problemen met een input veld die niets doorzond heb ik diverse andere stukken veranderd... waaronder die variable
    existenzzaterdag 3 december 2005 @ 18:17
    quote:
    Op zaterdag 3 december 2005 16:04 schreef SuperRembo het volgende:
    tr: table row
    td: table data cell
    th: table header cell
    Daar is niets onlogisch aan.

    In plaats van de width op elke td zetten, is het mss makkelijker om de col-tag te gebruiken:
    [ code verwijderd ]

    Je zou het ook met een definitionlist (dl) kunnen stylen.
    Hoeft niet perse. Je kunt ook gewoon 1x de size zetten. Daarna kopieert ie hem voor de rest. Is gewoon wat je makkelijk vind. Je zou het zelfs in je CSS kunnen opnemen als je dat liever hebt.
    freisszaterdag 3 december 2005 @ 18:21
    een niet opvallende tvp'tje eigenlijk
    JeRazaterdag 3 december 2005 @ 21:11
    quote:
    Op zaterdag 3 december 2005 17:09 schreef the_disheaver het volgende:

    [..]

    Hoe voorkomen jullie die irritante fouten als een variable een verkeerde naam te geven waardoor je uren zit te staren waarom ie het niet doet...?
    1error_reporting(E_ALL & E_STRICT);

    That does the trick for me
    Wifibrozaterdag 3 december 2005 @ 21:24
    Ik wou even zeggen dat er helemaal geen nieuwe PHP GOLF #7 is gestart op http://www.phpfreakz.nl/forum.php?iid=741097, waarin je zonder eval() toch moet proberen in zo weinig mogelijk tekens een per formulier ingevoerd sommetje weer te geven met 2 decimalen.
    En dat er een verzoek is om ook hier geen oplossingen te posten. Allemaal laster en leugens!
    SuperRembozaterdag 3 december 2005 @ 21:53
    Voor deze leugens is een apart topic
    the_disheaverzaterdag 3 december 2005 @ 22:25
    Kan ik zonder GD de afmetingen van een afbeelding (die niet op deze server hoeft te staan) krijgen?
    the_disheaverzaterdag 3 december 2005 @ 22:28
    Op bovenstaande vraag heb ik de antwoord al: via getimagesize()

    Maar de submit knoppen in mijn edit view is opeens verdwenen...


    edit: en ik heb weer submitknopjes
    SuperRembozaterdag 3 december 2005 @ 22:28
    getimagesize werkt ook zonder GD
    the_disheaverzaterdag 3 december 2005 @ 22:31
    quote:
    Op zaterdag 3 december 2005 22:28 schreef SuperRembo het volgende:
    getimagesize werkt ook zonder GD
    Dank, maar ik zag het net.
    existenzzaterdag 3 december 2005 @ 23:31
    quote:
    Op zaterdag 3 december 2005 21:24 schreef Wifibro het volgende:
    Ik wou even zeggen dat er helemaal geen nieuwe PHP GOLF #7 is gestart op http://www.phpfreakz.nl/forum.php?iid=741097, waarin je zonder eval() toch moet proberen in zo weinig mogelijk tekens een per formulier ingevoerd sommetje weer te geven met 2 decimalen.
    En dat er een verzoek is om ook hier geen oplossingen te posten. Allemaal laster en leugens!
    Daar zijn standaard geoptimaliseerde oplossingen voor in google .
    existenzzaterdag 3 december 2005 @ 23:35
    Die ZCE courses zijn net zo lomp als elk ander certificaat. Jammer, je leert er weer niets van. Gewoon uit je kop stampen en je hebt je certificaat. Helaas is dat bij elk examen tegenwoordig zo
    mscholzondag 4 december 2005 @ 00:00
    quote:
    Op zaterdag 3 december 2005 23:35 schreef existenz het volgende:
    Die ZCE courses zijn net zo lomp als elk ander certificaat. Jammer, je leert er weer niets van. Gewoon uit je kop stampen en je hebt je certificaat. Helaas is dat bij elk examen tegenwoordig zo
    ik heb ze idd nog niet anders mee gemaakt..
    waren die er wel dan?
    existenzzondag 4 december 2005 @ 00:29
    quote:
    Op zondag 4 december 2005 00:00 schreef mschol het volgende:

    [..]

    ik heb ze idd nog niet anders mee gemaakt..
    waren die er wel dan?
    Ja, vroegâh
    DionysuZzondag 4 december 2005 @ 03:45
    geen enkele klant van mij tot nu toe heeft ooit gehoord van Zend of het zijn van een ZCE, dus ik vraag me werkelijk af of het zijn geld waard is. (eigenlijk een soort van tvp dus )
    JeRazondag 4 december 2005 @ 04:38
    quote:
    Op zondag 4 december 2005 03:45 schreef DionysuZ het volgende:
    geen enkele klant van mij tot nu toe heeft ooit gehoord van Zend of het zijn van een ZCE, dus ik vraag me werkelijk af of het zijn geld waard is. (eigenlijk een soort van tvp dus )
    Ik denk eerder dat het om je werkgever gaat.
    DionysuZzondag 4 december 2005 @ 04:55
    quote:
    Op zondag 4 december 2005 04:38 schreef JeRa het volgende:

    [..]

    Ik denk eerder dat het om je werkgever gaat.
    maar die heb ik niet .
    JeRazondag 4 december 2005 @ 05:42
    quote:
    Op zondag 4 december 2005 04:55 schreef DionysuZ het volgende:

    [..]

    maar die heb ik niet .
    Daarom. Je klanten zal het in 99% van de gevallen aan hun aarschen roesten wat voor certificaten je hebt, als het gewenste product maar afgeleverd wordt.

    Werkgevers denken daar in eerste instantie niet zo over en kunnen aan certificaten als ZCE zien dat je de nodige kennis in huis hebt
    Chandlerzondag 4 december 2005 @ 11:11
    terug vindje postje...
    papernotemaandag 5 december 2005 @ 14:48
    Ik heb een site bij XS4all en op mijn site kunnen mensen bestanden uploaden. De volgende waarden wil ik veranderen:

  • memory_limit
  • post_max_size
  • upload_max_filesize

    Ik wil bestanden tot 20 MegaByte kunnen uploaden, dus lijkt mij (respektievelijk) 22, 20 en 20 MegaByte een goede instelling.

    Volgens php.net is memory_limit PHP_INI_ALL en de overige twee PHP_INI_PERDIR 'changeable'. Dat zou inhouden dat ik in mijn .htaccess deze waarden kan instellen.

    Maar als ik de volgende regel invoer in mijn .htaccess:

    php_value upload_max_filesize 20M

    Dan krijg ik een mooie 500 Internal Error nogwat. En bijkomend voordeel is, dat m'n hele site offline is

    Weet iemand hoe ik deze 3 waarden correct in m'n .htaccess kan invoeren, zonder dat ik allerlei foutmeldingen krijgt?
  • Nioxmaandag 5 december 2005 @ 15:00
    quote:
    Op maandag 5 december 2005 14:48 schreef papernote het volgende:
    Maar als ik de volgende regel invoer in mijn .htaccess:

    php_value upload_max_filesize 20M

    Dan krijg ik een mooie 500 Internal Error nogwat. En bijkomend voordeel is, dat m'n hele site offline is
    Dat zou moeten werken, tenzij PHP als CGI draait ipv als Apache Module. Workaround is

    1ini_set("upload_max_filesize", "20M");


    in je script zetten
    papernotemaandag 5 december 2005 @ 15:47
    quote:
    Op maandag 5 december 2005 15:00 schreef Niox het volgende:

    [..]

    Dat zou moeten werken, tenzij PHP als CGI draait ipv als Apache Module. Workaround is
    [ code verwijderd ]

    in je script zetten
    upload_max_filesize is 'changeable' PHP_INI_PERDIR, dus: " Entry can be set in php.ini, .htaccess or httpd.conf".

    Het is dus niet mogelijk om deze in scripts te veranderen.
    papernotemaandag 5 december 2005 @ 16:07
    Ik kan natuurlijk ook een alternatieve php.ini opgeven. Maar ik weet niet precies hoe dat moet, weet iemand dat soms?
    SuperRembomaandag 5 december 2005 @ 17:22
    Je kan proberen of je het in een .htaccess file kan instellen. Als dat niet kan dan heeft je webhost het geblokkerd (wat me niet onverstandig lijkt).
    Desdinovamaandag 5 december 2005 @ 19:44
    ik heb een vrij simpel vraagje, ik denk dat t iets met arrays wordt.

    users kunnen bij mij een soort boodschappenlijstje samenstellen.
    ze moeten zelf een product toevoegen voor deze op het boodschappenlijstje kan komen te staan.

    deze items worden per user opgeslagen, zodat er een soort history komt aan alle items die ooit op zijn boodschappenlijstje hebben gestaan.

    nu wil ik dus deze volledige lijst zichtbar maken onder n kopje 'boodschappenhistory' ofzo. Hier moet de user dan alle items kunnen zien en selecteren (aanvinken ofzo) om te importeren naar een nieuw lijstje.

    het laten zien is niet zo'n punt, en ik kan er ook checkboxes van maken per item.

    echter, wat is verstandig? moet ik van al deze items 1 array maken? en dan een foreach gebruiken om de items in de database in te voeren bij het huidige boodschappenlijstje (insert..select?)

    ik weet niet zo goed wat de beste manier is om dit aan te pakken, omdat het aantal waardes wat doorgegeven wordt nogal varierend is.

    ik weet wel een optie, maar die is niet rendabel:
    elke checkbox krijgt als name het itemID.
    en aangezien bij elk item toch geregistreerd staat bij welke user hij hoort, kan ik natuurlijk in mijn voer-het-in-de-database-script een soort van query zetten die alle items uit de database trekt waar UserID = $userid. Dat zet ik in een while-loop en laat per while een check doen of het bijpassende ID uit de post een gecheckte box had of niet, en hem dan invoeren bij het nieuwe boodschappenlijstje.

    maar dit kan natuurlijk veel netter
    toch?
    DionysuZmaandag 5 december 2005 @ 19:58
    Waarom sla je je boodschappenlijstje niet in een sessie op ipv de database?

    edit: ik lees weer eens niet goed :p
    Desdinovamaandag 5 december 2005 @ 19:59
    nah zover ben ik nog niet en wil dit ff zsm werkend hebben en de database is er al voor ontworpen enzo.. dus van die optie stap ik nog niet af. misschien bij een remake ofzo wanneer nodig.
    cyberstalkermaandag 5 december 2005 @ 20:04
    Maak gewoon een extra tabel, waarin je de historie opslaat.

    De volgende velden o.i.d.

    - userId (de gebruiker die het product heeft gekocht)
    - productId (id van het aangeschafte product)
    - eventueel nog datum/tijd kolom
    existenzmaandag 5 december 2005 @ 20:54
    quote:
    Op maandag 5 december 2005 20:04 schreef cyberstalker het volgende:
    Maak gewoon een extra tabel, waarin je de historie opslaat.

    De volgende velden o.i.d.

    - userId (de gebruiker die het product heeft gekocht)
    - productId (id van het aangeschafte product)
    - eventueel nog datum/tijd kolom
    een extra kolom in de huidige tabel met daarin true/false werkt ook, echter zal dat de consistentie van de database niet te goede komen. Boeit je dat niets (Geldt voor 99% vd phpérs), dan is je tabel uitbreiden het makkelijkste voor je, anders de oplossing voor cyberstalker. Die is netter.
    Desdinovamaandag 5 december 2005 @ 21:00
    ehmm die tabel is er. ik heb gewoon een tabel met de lijst.

    het punt is zeg maar het kopieren van de items, naar het nieuwe boodschappenlijstje.

    dat is dus gewoon boodschappenlijstjeID, userID, en itemID in 1 tabel. maar het punt is dus

    "nu wil ik dus deze volledige lijst zichtbar maken onder n kopje 'boodschappenhistory' ofzo. Hier moet de user dan alle items kunnen zien en selecteren (aanvinken ofzo) om te importeren naar een nieuw lijstje.

    het laten zien is niet zo'n punt, en ik kan er ook checkboxes van maken per item.

    echter, wat is verstandig? moet ik van al deze items 1 array maken? en dan een foreach gebruiken om de items in de database in te voeren bij het huidige boodschappenlijstje (insert..select?)

    ik weet niet zo goed wat de beste manier is om dit aan te pakken, omdat het aantal waardes wat doorgegeven wordt nogal varierend is."

    cyberstalkermaandag 5 december 2005 @ 21:01
    Je INSERT de items toch gewoon op het moment dat iemand ze toevoegt aan zijn winkelwagentje? Ik begrijp niet helemaal wat je nu wil met je foreach eigenlijk.
    Desdinovamaandag 5 december 2005 @ 21:05
    nou. ik krijg dus een lange lijst met items, en daar wil ik in 1x de items aan kunnen vinken die ik in mn lijstje wil hebben. dus dat betekent in 1x bijv. 5 van de 25 produkten kopieren naar mijn boodschappenlijstje. dus niet per item.

    dus hoe maak ik t form-field met de items, en hoe vang ik dit form field op met de meest rendabele code?
    cyberstalkermaandag 5 december 2005 @ 21:07
    Ja, dat zal dan met een foreach moeten denk ik. Je kunt met php maar één INSERT per query doen.
    Desdinovamaandag 5 december 2005 @ 21:19
    dat weet ik
    haha. maar hoe moet ik t form opzetten?
    form tag begint, dan komen alle items met bijbehorende checkboxes (via een while), en dan het eind van de form tag.

    en dan als name van elk item iets van 'items[]' doen ofzo? zo wordt het een array toch?
    maar hoe vang ik het dan weer op bij de uiteindelijke verwerking
    papernotemaandag 5 december 2005 @ 21:21
    quote:
    Op maandag 5 december 2005 17:22 schreef SuperRembo het volgende:
    Je kan proberen of je het in een .htaccess file kan instellen. Als dat niet kan dan heeft je webhost het geblokkerd (wat me niet onverstandig lijkt).
    Ik heb het in m'n .htaccess proberen in te stellen, toen kwam er een 500 Internal Server Error en was m 'n site down

    Maar bij de helpdesk van XS4all zeiden ze dat ik een alternatieve php.ini kon maken. Dat moest ik dan zelf doen. Maar ik kan niet vinden hoe ik dat moet doen.

    ini_set() werkt niet.
    in de .htaccess werkt niet
    dus alleen een alternatieve php.ini maken en gebruiken is de laatste oplossing. Maar hoe ???
    cyberstalkermaandag 5 december 2005 @ 21:21
    Je $_POST['items'] of $_GET['items'] is dan ook weer een array.
    existenzmaandag 5 december 2005 @ 21:30
    quote:
    Op maandag 5 december 2005 21:19 schreef Desdinova het volgende:
    dat weet ik
    haha. maar hoe moet ik t form opzetten?
    form tag begint, dan komen alle items met bijbehorende checkboxes (via een while), en dan het eind van de form tag.

    en dan als name van elk item iets van 'items[]' doen ofzo? zo wordt het een array toch?
    maar hoe vang ik het dan weer op bij de uiteindelijke verwerking
    Ik wilde zeggen:
    1
    2
    3
    ComboListBox clb = new ComboListBox();
    clb.DataSource = this.data;
    clb.DataMember = "Veldje";


    Maar dat is de verkeerde taal

    Gewoon een for(each) lus binnen het form met daarin de checkboxen en die daarna in de POST ophalen en inserten? En misschien nog een mooie "Check All" knop erbij maken? Of mis ik nu een gedeelte van het probleem.
    cyberstalkermaandag 5 december 2005 @ 21:31
    @existenz: hij wil juist weten hoe hij het formulier goed verwerkt na het versturen volgens mij.
    existenzmaandag 5 december 2005 @ 21:34
    quote:
    Op maandag 5 december 2005 21:31 schreef cyberstalker het volgende:
    @existenz: hij wil juist weten hoe hij het formulier goed verwerkt na het versturen volgens mij.
    Oh Dan is het wat jij zei
    Desdinovamaandag 5 december 2005 @ 21:40
    dus als ik het goed begrijp kan ik dan iets doen van

    foreach ($_POST['items'] as $value){
    de rest
    }

    als iemand dit kan confirmeren heb ik nu door hoe arrays werken
    cyberstalkermaandag 5 december 2005 @ 21:46
    Klopt, dat zou moeten werken ja.
    JeRamaandag 5 december 2005 @ 22:22
    *Mee-confirmeert*

    Als je ook nog de keys van een array nodig hebt kun je dat als volgt foreach'en:

    1
    2
    3
    foreach ($array as $key => $value) {
        echo '<b>' . $key . '</b>: ' . $value . '<br />';
    }


    Foreach maakt wel een kopie van de array aangezien je dan de oorspronkelijke array kunt wijzigen zonder dat dit de werking van de foreach beïnvloedt. Doe je dit toch niet en wil je een ietwat snellere oplossing (zeker bij de wat grotere arrays), dan kun je dit gebruiken:

    1
    2
    3
    4
    reset($array);
    while (list($key, $value) = each($array)) {
        echo '<b>' . $key . '</b>: ' . $value . '</br >';
    }
    Lightmaandag 5 december 2005 @ 23:39
    quote:
    Op zondag 4 december 2005 05:42 schreef JeRa het volgende:

    [..]

    Daarom. Je klanten zal het in 99% van de gevallen aan hun aarschen roesten wat voor certificaten je hebt, als het gewenste product maar afgeleverd wordt.
    Klanten zal het waarschijnlijk ook niet zo heel veel uitmaken welke taal je gebruikt voor een site. Ik denk dat een klant eerder zegt "ik wil een online shop" dan "ik wil een online shop in php". Als een klant al weet wat php is dan nog zullen ze er niet alles van weten, ook niet dat er een bedrijf Zend achter zit. En als je dat niet weet dan is het logisch dat ZCE je ook niets zegt.
    quote:
    Werkgevers denken daar in eerste instantie niet zo over en kunnen aan certificaten als ZCE zien dat je de nodige kennis in huis hebt
    True, dat kan wel handig zijn
    Chandlermaandag 5 december 2005 @ 23:46
    ja maar dan moet je ook geld voor zo'n leuk certificaat hebben, en natuurlijk ook de mogelijke kennis (helaas heb ik beiden (nog) niet )
    Desdinovadinsdag 6 december 2005 @ 11:51
    ik heb een vraagje over Insert-select.

    Dat is dus iets van:
    INSERT INTO table1 (col1, col2, col3)
    SELECT table1.col1, table1.col2, table1.col3
    FROM table1 WHERE ID = $id

    nou wil ik dit een tikkie anders. in plaats van dat table1.col2 in table1.col2 wordt ingevoerd, wil ik daar $col2 invoeren. Hoe doe ik dat?

    tevens las ik iets over dat je niet kan insert-selecten en lezen uit dezelfde tabel tegelijk. Dat zou dus betekenen dat ik helemaal niet mijn items kan kopieren van table1 naar table1. klopt dat?
    Neverminddinsdag 6 december 2005 @ 12:20
    Een regexp vraagje:

    De volgende code:
    1
    2
    3
    4
    5
    6
    7
    [menu="Menu titel"]
    [tab="link1"]Link #1[/tab]
    [tab="link2"]Link #2[/tab]
    [tab="link3"]Link #3[/tab]
    [tab="link4"]Link #4[/tab]
    [tab="link5"]Link #5[/tab]
    [/menu]


    Moet iets dergelijks als dit worden:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <table>
    <tr>
      <th colspan="5">Menu Titel</th>
    </tr>
    <tr>
      <td><a href="link1">Link #1</a></td>
      <td><a href="link2">Link #2</a></td>
      <td><a href="link3">Link #3</a></td>
      <td><a href="link4">Link #4</a></td>
      <td><a href="link5">Link #5</a></td>
    </tr>
    </table>


    Er is dus een variabel aantal menu-items. Nou heb ik wel deze expressies:
    1
    2
    "/\[menu=\"(.+?)\"\](.+?)\[\/menu\]/ies"
    "/\[tab=\"(.+?)\"\](.+?)\[\/tab\]/ies"


    Maar, ik zou het graag in één preg_replace willen hebben. Er wordt, indien deze expressie aangetroffen wordt, een functie aangeroepen die het menu (de tabel) bouwt. Komt het volgende probleem erbij; hoe kan ik een variabel aantal items naar een functie sturen? Alle [tab=\"bla\"]bla[/tab] in een array stoppen is bijvoorbeeld een mogelijkheid, maar hoe doe ik dat via een preg_replace?
    cyberstalkerdinsdag 6 december 2005 @ 12:28
    quote:
    Op dinsdag 6 december 2005 11:51 schreef Desdinova het volgende:
    ik heb een vraagje over Insert-select.

    Dat is dus iets van:
    INSERT INTO table1 (col1, col2, col3)
    SELECT table1.col1, table1.col2, table1.col3
    FROM table1 WHERE ID = $id

    nou wil ik dit een tikkie anders. in plaats van dat table1.col2 in table1.col2 wordt ingevoerd, wil ik daar $col2 invoeren. Hoe doe ik dat?

    tevens las ik iets over dat je niet kan insert-selecten en lezen uit dezelfde tabel tegelijk. Dat zou dus betekenen dat ik helemaal niet mijn items kan kopieren van table1 naar table1. klopt dat?
    Dan verwissel je dat toch gewoon in je INSERT INTO regel?
    Desdinovadinsdag 6 december 2005 @ 12:53
    quote:
    Op dinsdag 6 december 2005 12:28 schreef cyberstalker het volgende:

    [..]

    Dan verwissel je dat toch gewoon in je INSERT INTO regel?


    okee. maar hoe dan?
    Jimmydinsdag 6 december 2005 @ 12:58
    quote:
    Op dinsdag 6 december 2005 11:51 schreef Desdinova het volgende:
    INSERT INTO table1 (col1, col2, col3)
    SELECT table1.col1, table1.col2, table1.col3
    FROM table1 WHERE ID = $id

    nou wil ik dit een tikkie anders. in plaats van dat table1.col2 in table1.col2 wordt ingevoerd, wil ik daar $col2 invoeren. Hoe doe ik dat?
    Doe je het vanuit php? dan lijkt me dat je zo je query in elkaar draait:

    1
    2
    3
    $sql = "INSERT INTO table1 (col1, col2, col3) 
    (SELECT table1.col1, ".$col.", table1.col3
    FROM table1 WHERE ID = ".$id.")";
    quote:
    tevens las ik iets over dat je niet kan insert-selecten en lezen uit dezelfde tabel tegelijk. Dat zou dus betekenen dat ik helemaal niet mijn items kan kopieren van table1 naar table1. klopt dat?
    Je haalt dan gewoon eerst in je php script de data op die je wilt kopieren, en dan insert je het ook weer vanuit je php-script. Gewoon 1 extra tussenstap.

    Wat is trouwens de situatie waarin je regels wilt kopieren?
    Lightdinsdag 6 december 2005 @ 12:59
    quote:
    Op dinsdag 6 december 2005 12:20 schreef Nevermind het volgende:
    Een regexp vraagje:

    De volgende code:
    [ code verwijderd ]

    Moet iets dergelijks als dit worden:
    [ code verwijderd ]

    Er is dus een variabel aantal menu-items. Nou heb ik wel deze expressies:
    [ code verwijderd ]

    Maar, ik zou het graag in één preg_replace willen hebben. Er wordt, indien deze expressie aangetroffen wordt, een functie aangeroepen die het menu (de tabel) bouwt. Komt het volgende probleem erbij; hoe kan ik een variabel aantal items naar een functie sturen? Alle [tab=\"bla\"]bla[/tab] in een array stoppen is bijvoorbeeld een mogelijkheid, maar hoe doe ik dat via een preg_replace?
    1"/\[menu=\"(.+)\"\]([\s|\n]*\[tab=\"(.+)\"\](.+)\[\/tab\])*[\s|\n]*\[\/menu\]/Uies"

    Zo even uit de losse pols, niet getest dus
    Desdinovadinsdag 6 december 2005 @ 13:02
    quote:
    Op dinsdag 6 december 2005 12:58 schreef Jimmy het volgende:

    [..]

    Doe je het vanuit php? dan lijkt me dat je zo je query in elkaar draait:
    [ code verwijderd ]

    [..]

    Je haalt dan gewoon eerst in je php script de data op die je wilt kopieren, en dan insert je het ook weer vanuit je php-script. Gewoon 1 extra tussenstap.

    Wat is trouwens de situatie waarin je regels wilt kopieren?
    aah ok. heel simpel dus eigenlijk. gaat idd vanuit php.

    mnou heeft te maken met het boodschappenverhaaltje waar ik t over had, via deze copy-actie kopieer ik dus n item naar n ander boodschappenlijstje. (elk item heeft een eigen boodschappenlijstjeID. het leek me niet rendabel om een tabel te maken met hierin de boodschappenlijstjeID's en de itemID's, gezien producten nooit geshared worden tussen users).
    cyberstalkerdinsdag 6 december 2005 @ 13:56
    Hier zou je juist wel een aparte tabel moeten maken. Ik weet niet wat je nog meer hebt op je site, maar ik zou de volgende tabellen maken:

    - Gebruikers
    - Producten
    - Boodschappenlijstjes

    Op die manier hou je je tabellen het kleinst, en snelst.
    Neverminddinsdag 6 december 2005 @ 15:06
    quote:
    Op dinsdag 6 december 2005 12:59 schreef Light het volgende:

    [..]
    [ code verwijderd ]

    Zo even uit de losse pols, niet getest dus
    Bedankt voor de hulp Maar, hoe gebruik ik de gevonden waarden in een functie? De preg_replace roept de functie buildMenu() aan, hoe geef ik de argumenten daar aan door? Ik heb dan toch iets nodig als de $matches-array die je bijvoorbeeld bij preg_match hebt?
    JeRadinsdag 6 december 2005 @ 15:45
    quote:
    Op dinsdag 6 december 2005 15:06 schreef Nevermind het volgende:

    [..]

    Bedankt voor de hulp Maar, hoe gebruik ik de gevonden waarden in een functie? De preg_replace roept de functie buildMenu() aan, hoe geef ik de argumenten daar aan door? Ik heb dan toch iets nodig als de $matches-array die je bijvoorbeeld bij preg_match hebt?
    Gebruik de /e-modifier op deze manier:
    1$tekst = preg_replace('/[0-9]*/e', 'md5(\'$1\')', $tekst);

    En dan zou het moeten lukken je kunt dus gewoon argumenten in de vervangingsstring meegeven.
    Lightdinsdag 6 december 2005 @ 16:02
    quote:
    Op dinsdag 6 december 2005 15:45 schreef JeRa het volgende:

    [..]

    Gebruik de /e-modifier op deze manier:
    [ code verwijderd ]

    En dan zou het moeten lukken je kunt dus gewoon argumenten in de vervangingsstring meegeven.
    Dat kan wel eens lastig worden als je niet weet hoeveel argumenten er zijn.
    JeRadinsdag 6 december 2005 @ 16:53
    quote:
    Op dinsdag 6 december 2005 16:02 schreef Light het volgende:

    [..]

    Dat kan wel eens lastig worden als je niet weet hoeveel argumenten er zijn.
    Och ja, dan gebruik je toch preg_replace_callback()?
    Neverminddinsdag 6 december 2005 @ 18:01
    -edit-
    laat maar. ik begrijp minder van reguliere expressies dan ik dacht

    [ Bericht 33% gewijzigd door Nevermind op 06-12-2005 20:12:10 ]
    ikke_ookdinsdag 6 december 2005 @ 22:57
    Vraag eens wat makkelijks, dan kan ik ook antwoord geven, anders moet ik een TVP plaatsen
    JeRadinsdag 6 december 2005 @ 23:00
    Ik wist het zo ook niet Nevermind, in alle testcases die ik had gedaan kwam dezelfde fout naar boven altijd werd het laatste subelement geretourneerd ipv. alle subelementen. Ik denk dat dat gewoon de implementatie van de PCRE-functies is.

    [lichtelijk offtopic]
    Aangezien het mij (en pc-fr34k) niet zo slim leek om de sourcecode van Fok!client te posten heb ik de dienst van Fok!signature nu wel voor iedereen beschikbaar gemaakt (met tijdslimiet op het posten van berichten om de load zo laag mogelijk te houden). Als je de link in m'n signature bekijkt snap je vast hoe je dit voor je eigen account kunt doen

    edit: @ikke_ook
    De maxlength is overal aan de client- én serverside opgegeven

    edit: @DionysuZ
    Alles is geschreven met veiligheid in het achterhoofd mijn gegevens staan er ook in dus wat dat betreft heb ik wel vertrouwen trouwens, zou je een voorbeeldje kunnen geven van wanneer die {$variabele}-constructie bij een POST-request fout zou gaan?

    [ Bericht 9% gewijzigd door JeRa op 06-12-2005 23:35:51 ]
    ikke_ookdinsdag 6 december 2005 @ 23:13
    -offtopic-
    Ik zie t JeRa. Had ik ook wel verwacht eigenlijk
    Lightwoensdag 7 december 2005 @ 00:15
    quote:
    Op dinsdag 6 december 2005 23:00 schreef JeRa het volgende:
    Ik wist het zo ook niet Nevermind, in alle testcases die ik had gedaan kwam dezelfde fout naar boven altijd werd het laatste subelement geretourneerd ipv. alle subelementen. Ik denk dat dat gewoon de implementatie van de PCRE-functies is.
    Ik had het ook niet getest Makkelijkere optie is waarschijnlijk om toch maar gebruik te maken van 2 expressies, als je dat handig aanpakt dan werkt die tweede alleen op de match van de eerste. Dat kan ook in de callback functie van de /e modifier natuurlijk
    DionysuZwoensdag 7 december 2005 @ 00:26
    ahhhhh mn webhoster heeft php5 ^_^ eindelijk eens echt OOP.
    Darkomenwoensdag 7 december 2005 @ 18:05
    Ik heb weer een dummie vraag hoor,
    Ik gebruik de onderstaade functie om thumbnails of images te resizen, dit gaat goed, totdat er gifs komen, gif files openen en maken word ondersteunt door mn host maar ik krijg constant fouten bij imagecopyresampled, heeft iemand een idee?

    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
    function createthumb($start_image,$enddirectory_image,$new_w,$new_h)
       {
          $sizes =  getimagesize($start_image);
          $extension = addslashes($sizes['mime']);
          if(in_array($extension, array('image/jpg','image/jpeg','image/pjpeg'))){$src_img=imagecreatefromjpeg($start_image);}
          elseif (eregi("image/png",$extension)){$src_img=imagecreatefrompng($start_image);}
          else {imagecreatefromgif($start_image);}

          //print_r($sizes);

          $old_x = $sizes[0];
          $old_y = $sizes[1];

          if ($old_x > $old_y) {
          $thumb_w=$new_w;
          $thumb_h=$old_y*($new_h/$old_x);
          }
          if ($old_x < $old_y) {
          $thumb_w=$old_x*($new_w/$old_y);
          $thumb_h=$new_h;
          }
          if ($old_x == $old_y) {
          $thumb_w=$new_w;
          $thumb_h=$new_h;
          }
          $thumb_w =ceil($thumb_w);
          $thumb_h =ceil($thumb_h);   

          $dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
          imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y) or die($enddirectory_image.'<br>'.$thumb_w.'<br>'.$thumb_h.'<br>'.$old_x.'<br>'.$old_y);

          if(in_array($extension, array('image/jpg','image/jpeg','image/pjpeg'))) {imagejpeg($dst_img,$enddirectory_image);}
          elseif (eregi("image/png",$extension)) {imagepng($dst_img,$enddirectory_image);} 
          else {imagegif($dst_img,$enddirectory_image);}

          imagedestroy($dst_img); 
       }



    Eigenlijk is het zelfs de bedoeling dat ik gewoon de data van de image uit mn database laad en deze dan resized en weer uitspuugt zonder deze op te slaan op de server, maar daar had ik nog ff geen tijd voor.

    [ Bericht 1% gewijzigd door Darkomen op 07-12-2005 18:17:02 ]
    DionysuZwoensdag 7 december 2005 @ 18:22
    Check http://nl2.php.net/manual/en/function.imagecreatetruecolor.php

    Note: This function will not work with GIF file formats.
    Darkomenwoensdag 7 december 2005 @ 18:31
    DOH, ff zoeken hoe wel gif images te resizen
    Nevermindwoensdag 7 december 2005 @ 18:46
    quote:
    Op woensdag 7 december 2005 00:15 schreef Light het volgende:

    [..]

    Ik had het ook niet getest Makkelijkere optie is waarschijnlijk om toch maar gebruik te maken van 2 expressies, als je dat handig aanpakt dan werkt die tweede alleen op de match van de eerste. Dat kan ook in de callback functie van de /e modifier natuurlijk
    Ik heb het opgelost door de inhoud van de [menu]-tag (alle [tab]-tags dus) door te sturen naar een functie, en die dan te parsen. Dan kan ik het zelf nog begrijpen in ieder geval
    DionysuZwoensdag 7 december 2005 @ 18:47
    quote:
    Op woensdag 7 december 2005 18:31 schreef Darkomen het volgende:
    DOH, ff zoeken hoe wel gif images te resizen
    misschien gewoon met imagecreate?
    Swetseneggerwoensdag 7 december 2005 @ 19:27
    client side/server side probleempje.
    Bij het deleten van een database entry, wil ik een confirm vragen.

    Maar... deze database entry is gekoppeld met een andere tabel. En pas wanneer in die andere tabel items aanwezig zijn, wil ik de confirm vragen.

    Dit betekent dus serverside query draaien welke controleert of het te delete item koppelingen heeft.
    Zo ja, een client sode confirm met de opmerking dat er koppelingen zijn en of men dus wel echt wil deleten. Indien men ECHT wil deleten, serverside query welke de entry delete.

    DIT is natuurlijk smerige zooi
    1
    2
    3
    4
    5
    6
    $query="SELECT COUNT(*) AS aantal FROM tabel WHERE id=".$id;
    $r=mysql_query($query);
    $row=mysql_fetch_assoc($r);
    if($row['aantal']!=0){
    echo'<script type="text/javascript">if (confirm(\'verwijderen?\')){document.write(\'<?//delete query;?>\')}</script>';
    }


    Hoe pak ik dit aan?
    SuperRembowoensdag 7 december 2005 @ 19:30
    Dan zal je met een XMLHttpRequest moeten kijken of je een confirm moet tonen.
    Darkomenwoensdag 7 december 2005 @ 20:49
    De kwaliteit is dan slecht

    [ Bericht 81% gewijzigd door Darkomen op 07-12-2005 20:56:54 ]
    JeRawoensdag 7 december 2005 @ 20:54
    Daarvoor hebben we ook imagecreatetruecolor()
    Darkomenwoensdag 7 december 2005 @ 21:04
    maar dat ging weer niet met mn gifs
    JeRawoensdag 7 december 2005 @ 21:08
    quote:
    Op woensdag 7 december 2005 21:04 schreef Darkomen het volgende:
    maar dat ging weer niet met mn gifs
    Hoezo niet? Kun je die gif niet laden en naar een truecolor canvas kopiëren?
    Darkomenwoensdag 7 december 2005 @ 21:27
    Ze bewegen dan niet meer
    JeRawoensdag 7 december 2005 @ 21:33
    quote:
    Op woensdag 7 december 2005 21:27 schreef Darkomen het volgende:
    Ze bewegen dan niet meer
    Tja, of een mooi plaatje, of een lelijke animatie. Denk niet dat je het heel gemakkelijk kunt oplossen, hoewel er misschien wel ergens implementaties van een gif-resizer te vinden zijn
    Darkomenwoensdag 7 december 2005 @ 21:36
    Ik ben al druk aan het googlen
    DutchBloodwoensdag 7 december 2005 @ 21:39
    Ok. Waar zit de fout?

    1INSERT INTO registraties ('username','password','realname','email','regdate','regip') VALUES ( 'Testje','s5rspvs','tester','test@c-q.nl','1133988314','62.195.241.114')
    JeRawoensdag 7 december 2005 @ 21:45
    Je mag kolomnamen niet met singlequotes omvatten, dat zul je zonder moeten doen of met backticks (`), die zit links van je niet-keypad '1'-knop op je toetsenbord.

    Overigens wordt het over het algemeen wel gewaardeerd als je bij iets dat 'niet werkt' een foutmelding levert dan kunnen we meestal wat sneller zien waar de fout zit.
    DutchBloodwoensdag 7 december 2005 @ 22:01
    quote:
    Op woensdag 7 december 2005 21:45 schreef JeRa het volgende:
    Je mag kolomnamen niet met singlequotes omvatten, dat zul je zonder moeten doen of met backticks (`), die zit links van je niet-keypad '1'-knop op je toetsenbord.

    Overigens wordt het over het algemeen wel gewaardeerd als je bij iets dat 'niet werkt' een foutmelding levert dan kunnen we meestal wat sneller zien waar de fout zit.
    Thnx.
    Swetseneggerwoensdag 7 december 2005 @ 22:43
    quote:
    Op woensdag 7 december 2005 19:30 schreef SuperRembo het volgende:
    Dan zal je met een XMLHttpRequest moeten kijken of je een confirm moet tonen.
    Hmz...., ja dat kan werken.
    Client side checken of er relaties zijn.

    -edit- alleen heb ik tot nu toe alleen maar een serverside txt file via xmlhttprequest aangesproken. Hoe ik de database moet benaderen is me nog even een raadsel
    SuperRembowoensdag 7 december 2005 @ 23:03
    Een XMLHttpRequest is voor php een request (get of post) als alle andere.
    Je haalt je wel flink wat op de hals, en dat alleen om een confirm over te kunnen slaan.
    JeRawoensdag 7 december 2005 @ 23:13
    quote:
    Op woensdag 7 december 2005 23:03 schreef SuperRembo het volgende:
    Een XMLHttpRequest is voor php een request (get of post) als alle andere.
    Je haalt je wel flink wat op de hals, en dat alleen om een confirm over te kunnen slaan.
    Inderdaad. Waarom vraag je niet standaard om een confirm (je verwijdert iets!)?

    [ Bericht 0% gewijzigd door JeRa op 07-12-2005 23:20:06 ]
    Swetseneggerdonderdag 8 december 2005 @ 08:21
    quote:
    Op woensdag 7 december 2005 23:13 schreef JeRa het volgende:

    [..]

    Inderdaad. Waarom vraag je niet standaard om een confirm (je verwijdert iets!)?
    Het gaat om een menu item. En ik wil eigenlijk een EXTRA warning geven wanneer er aan dat menu item produkten gekoppeld zijn.

    Maar het is inderdaad een hoop moeite voor een extra warning. En in principe is het ergste wat er kan gebeuren dat je via het menu niet meer bij een aantal produkten kan komen. Die moet je dan in het CMS eerst aan een andere menu item koppelen.

    Ik ga er nog eens goed over nadenken
    Darkomendonderdag 8 december 2005 @ 10:15
    quote:
    Op woensdag 7 december 2005 21:33 schreef JeRa het volgende:

    [..]

    Tja, of een mooi plaatje, of een lelijke animatie. Denk niet dat je het heel gemakkelijk kunt oplossen, hoewel er misschien wel ergens implementaties van een gif-resizer te vinden zijn
    Dit is dus nog vrij moeilijk te vinden, wel genoeg mensen die met hetzelfde zitten

    maar fok kan het ook, dus waarom wij niet
    JeRadonderdag 8 december 2005 @ 10:27
    quote:
    Op donderdag 8 december 2005 08:21 schreef Swetsenegger het volgende:

    [..]

    Maar het is inderdaad een hoop moeite voor een extra warning. En in principe is het ergste wat er kan gebeuren dat je via het menu niet meer bij een aantal produkten kan komen. Die moet je dan in het CMS eerst aan een andere menu item koppelen.
    Ik zou dát als oplossing nemen met eventueel een extra melding ná het verwijderen in de trant van 'Het door u zojuist verwijderde menu-item bevatte subitems die nu niet meer gekoppeld zijn'.

    Een alternatief is om alle subitems onder de parent van het zojuist verwijderde item te hangen, maar dit is niet professioneel op een live site en moet je alleen doen als je het menu naar hartelust kunt wijzigen zónder dat dit effect heeft op het 'echte' menu.
    JeRadonderdag 8 december 2005 @ 10:28
    quote:
    Op donderdag 8 december 2005 10:15 schreef Darkomen het volgende:

    [..]

    maar fok kan het ook, dus waarom wij niet
    Kan fok het ook?
    Swetseneggerdonderdag 8 december 2005 @ 11:27
    quote:
    Op donderdag 8 december 2005 10:27 schreef JeRa het volgende:

    [..]

    Ik zou dát als oplossing nemen met eventueel een extra melding ná het verwijderen in de trant van 'Het door u zojuist verwijderde menu-item bevatte subitems die nu niet meer gekoppeld zijn'.
    Dat is wel een mooie oplossing inderdaad.

    Het verwijderen op zich kan geen kwaad, het is slechts ter informatie dat de beheerder er rekening mee houdt dat er op dat moment produkten niet gekoppeld zijn.
    quote:
    Een alternatief is om alle subitems onder de parent van het zojuist verwijderde item te hangen, maar dit is niet professioneel op een live site en moet je alleen doen als je het menu naar hartelust kunt wijzigen zónder dat dit effect heeft op het 'echte' menu.
    Sowieso is het geen risico voor het menu. Parents kunnen niet verwijderd worden, alleen childeren/leafenodes. Alleen het diepste level dus.
    SuperRembodonderdag 8 december 2005 @ 12:24
    quote:
    Op donderdag 8 december 2005 10:15 schreef Darkomen het volgende:
    [..]
    maar fok kan het ook, dus waarom wij niet
    Als je de usericons op de FP bedoelt, die zijn "geresized" met width="30" height="30".
    Darkomendonderdag 8 december 2005 @ 13:22
    Bedoel die hier op het forum, maar daar is het vast hetzelfde :$
    JeRadonderdag 8 december 2005 @ 13:37
    quote:
    Op donderdag 8 december 2005 13:22 schreef Darkomen het volgende:
    Bedoel die hier op het forum, maar daar is het vast hetzelfde :$
    1) Ofwel bedoel je de iconmanager, dus dat je GIF-afbeeldingen kunt uploaden en als vaste usericon kunt gebruiken. Voor zover ik weet kan die geen GIF-animaties resizen.
    2) Ófwel bedoel je de webicons, die worden door de browser geresized naar 60x60 en zien er derhalve dus ook niet uit.
    Darkomendonderdag 8 december 2005 @ 13:52
    Het laatste dus
    Chandlerdonderdag 8 december 2005 @ 16:45
    Luitjes..

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
          Tree[0]  = "1|0|Page 1|#";
          Tree[1]    = "2|1|Page 1.1|#";
          Tree[2]  = "3|1|Page 1.2|#";
          Tree[3]  = "4|3|Page 1.2.1|#";
          Tree[4]  = "5|1|Page 1.3|#";
          Tree[5]  = "6|2|Page 1.1.1|#";
          Tree[6]  = "7|6|Page 1.1.1.1|#";
          Tree[7]  = "8|6|Page 1.1.1.2|#";
          Tree[8]  = "9|1|Page 1.4|#";
          Tree[9]  = "10|9|Page 1.4.1|#";
          Tree[10] = "11|0|Page 2|#";


    dit is wat ik wil crearen met een tree loper echter krijg ik het niet goed voor elkaar en krijg steeds 1|1 1|2 etc

    vb

    1
    2
    3
    4
    5
    6
    7
    1|1|WINDOWS|C://WINDOWS
    1|1|system32|C://WINDOWS/system32
    1|1|config|C://WINDOWS/system32/config
    1|1|systemprofile|C://WINDOWS/system32/config/systemprofile
    1|1|Local Settings|C://WINDOWS/system32/config/systemprofile/Local Settings
    1|1|Temp|C://WINDOWS/system32/config/systemprofile/Local Settings/Temp
    1|2|Geschiedenis|C://WINDOWS/system32/config/systemprofile/Local Settings/Geschiedenis


    zoals je ziet gaat het ergens goed fout, echter zie ik niet waar!?

    de code
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <?

    error_reporting(E_ALL);

    function scantree($start, $fDb = 0, $pathCount = 0)
    {
    //    global $fDb;
        
        $fDb++;
        
        $pathcount = 0;
        
        $dir = opendir($start);
        
        while (($file = readdir($dir)) != false)
        {
            if (is_dir($start . "/" . $file) && $file != "." && $file != "..")
            {
                $pathcount++;
                
                echo 'test[' . $fDb . '] = ' . $fDb + 1 . '|' . $pathcount . '|' . $file . '|' . $start . "/" . $file . CHR(13) . CHR(10);

                scantree($start . "/" . $file, $fDb, $pathCount);
                
            }
        }
    }

    $fDb = -1;

    if (isSet($_GET['drive']) && substr($_GET['drive'], 1,1) == ":")
    {
        scantree($_GET['drive'] . "/");// the tree looping can begin
    }
    else
    {
        echo 'no ow no';
    }


    allemaal weer uit het hoofd, maar goed... iemand een suggestie!?
    DutchBlooddonderdag 8 december 2005 @ 17:09
    quote:
    Op donderdag 8 december 2005 16:45 schreef Chandler het volgende:
    Luitjes..
    [ code verwijderd ]

    dit is wat ik wil crearen met een tree loper echter krijg ik het niet goed voor elkaar en krijg steeds 1|1 1|2 etc

    vb
    [ code verwijderd ]

    zoals je ziet gaat het ergens goed fout, echter zie ik niet waar!?

    de code
    [ code verwijderd ]

    allemaal weer uit het hoofd, maar goed... iemand een suggestie!?
    Regel 23. Je gebruikt de functie scantree in de functie scantree?
    Chandlerdonderdag 8 december 2005 @ 17:30
    dat kan toch, dat is juist nodig voor de diepgang
    JeRadonderdag 8 december 2005 @ 18:45
    quote:
    Op donderdag 8 december 2005 17:30 schreef Chandler het volgende:
    dat kan toch, dat is juist nodig voor de diepgang
    Ik snap je voorbeeld niet dat het eerste getal telkens opgehoogd dient te worden snap ik (heb je eigenlijk niet eens nodig maar toch), maar wat doet het tweede getal?
    DionysuZdonderdag 8 december 2005 @ 18:58
    wat lelijk dat hoofdlettergebruik ook :S $pathcount en $pathCount. Het werkt ZEER verwarrend. En zo geef je als je recursief scantree weer aanroept $pathCount en niet $pathcount, degene die opgehoogd wordt.
    Swetseneggerdonderdag 8 december 2005 @ 19:26
    Ik ben toch maar voor de xmlhttprequest gegaan .
    En hij werkt. eigenlijk zelfs verdomd simpel

    -edit- iets te voorbarig, ik krijg mijn parameters om daadwerkelijk te deleten niet mee .

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    if(!empty($_GET['right'])){
       if(is_numeric($_GET['id']) && is_numeric($_GET['right'])){
           deleteLeaf($_GET['right'],$_GET['id']);
       }
    }

    function deleteLeaf($right,$id){
    $query="DELETE FROM menu WHERE id=".$id." LIMIT 1";
    mysql_query($query);
    $query="UPDATE menu SET rgt=rgt-2 WHERE rgt>".$right;
    mysql_query($query);
    $query="UPDATE menu SET lft=lft-2 WHERE lft>".$right;
    mysql_query($query);
    header("location: ".$_SERVER['PHP_SELF']);
    }

    Voor de php'ers, dit is redelijk duidelijk

    Nu het probleem. Aan dit menu zitten produkten gekoppeld. Wanneer iemand nu een menu-item delete, wil ik een waarschuwing geven indien er nog produkten gekoppeld zijn.
    Dit werkt met een xmlhttprequest:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    <script type="text/javascript">

    var url = "checkProduct.php?id="; // The server-side script
    var http = getHTTPObject();

    function handleHttpResponse() {
        if (http.readyState == 4) {
        results = http.responseText;
            if(results!=0){
                if(confirm('Aan dit menu-item zijn produkten gekoppeld!\nIndien u dit menu-item verwijderd, moet u er rekening mee houden de produkten aan een ander menu-item te koppelen.\nMenu-item verwijderen?')){
                    alert('verwijder');
                }
            }else{
                if(confirm('Weet u zeker dat u dit menu-item wilt verwijderen?')){
                    alert('verwijderd')
                }
            }
        }
    }

    function checkProduct(id) {

        http.open("GET", url + escape(id), true);
        http.onreadystatechange = handleHttpResponse;
        http.send(null);
     }

    function getHTTPObject() {

      var xmlhttp;

      /*@cc_on

      @if (@_jscript_version >= 5)

        try {

          xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");

        } catch (e) {

          try {

            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

          } catch (E) {

            xmlhttp = false;

          }

        }

      @else

      xmlhttp = false;

      @end @*/

      if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {

        try {

          xmlhttp = new XMLHttpRequest();

        } catch (e) {

          xmlhttp = false;

        }

      }

      return xmlhttp;

    }

    </script>


    en de link welke het hele spul in gang zet

    1[<a class="admin2" href="#" onClick="checkProduct('.$row['id'].')">delete</a>]

    [/code]

    Ok, de de link roept de javascript functie checkProduct aan, welke via een xmlhttprequest het resultaat van checkProduct.php terugkrijgt (zonder refresh dus). Uiteraard is checkProduct.php niets anders dan een COUNT.

    Bovenstaand werkt, maar uiteraard wil ik de alert('verwijderd') vervangen in een window.location="pagina.php?id="+id+"&right="+right;
    De parameters id en right moet ik dus van checkProduct door geven aan handleHttpResponse. Maar dit

    1
    2
    3
    4
    5
    6
    function checkProduct(id) {

        http.open("GET", url + escape(id), true);
        http.onreadystatechange = handleHttpResponse(id);
        http.send(null);
     }


    zorgt ervoor dat ik uberhaupt niet meer in handleHttpResponse terecht kom
    Mijn javascript kennis schiet hier te kort.

    [ Bericht 63% gewijzigd door Swetsenegger op 08-12-2005 20:01:46 ]
    SuperRembodonderdag 8 december 2005 @ 20:19
    @chandler:
    Zet eens haakje om $fDb + 1

    Lang leve loose typed talen
    DionysuZdonderdag 8 december 2005 @ 20:27
    quote:
    Op donderdag 8 december 2005 20:19 schreef SuperRembo het volgende:
    @chandler:
    Zet eens haakje om $fDb + 1

    Lang leve loose typed talen
    hehehe het heeft door zijn simpliciteit natuurlijk ook veel voordelen.
    SuperRembodonderdag 8 december 2005 @ 20:40
    @swetsenegger:
    quote:
    http.onreadystatechange = handleHttpResponse;
    Zorgt er voor dat http.onreadystatechange gelijk wordt aan de functie handleHttpResponse.
    quote:
    http.onreadystatechange = handleHttpResponse(id);
    Zorgt er voor dat http.onreadystatechange gelijk wordt aan het resultaat van het uitvoeren van handleHttpResponse(id).

    Dit kan je op verschillende manieren oplossen.
    Met een closure:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function checkProduct(id) {
        http.open("GET", url + escape(id), true);
        http.onreadystatechange = function() {
           if (http.readyState == 4) {
              checkProductCallback(id);
           }
        }
        http.send(null);
    }


    Doordat de functie binnen de functie checkProduct wordt gedefinieerd, blijft de scope van checkProduct behouden. Daardoor is id binnen de onreadystatechange functie nog bekend op het moment dat die aangeroepen wordt.

    Een andere oplossing is dat je niet alleen het aantal producten terug stuurt, maar ook de id.


    Internet Explorer heeft trouwens een vervelende bug: het resultaat van de httprequest wordt gecached. Als de url van twee requests gelijk zijn, dan wordt geen cal naar de server gedaan, maar krijg je gewoon de eerder opgehaalde resultaten terug. Dit is gelukkig simpel te voorkomen door een random string aan de url toe te voegen.

    Dit is trouwens allemaal clientside scripting, dus meer iets voor het javascript topic.
    Swetseneggerdonderdag 8 december 2005 @ 20:40
    Probleem opgelost.

    1
    2
    3
    4
    5
    6
    function checkProduct(id) {
        id=id; //Dit maakt de var id global
        http.open("GET", url + escape(id), true);
        http.onreadystatechange = handleHttpResponse(id);
        http.send(null);
     } 
    SuperRembodonderdag 8 december 2005 @ 20:42
    Dit lijkt me geen handige oplossing
    Swetseneggerdonderdag 8 december 2005 @ 20:44
    quote:
    Op donderdag 8 december 2005 20:40 schreef SuperRembo het volgende:
    @swetsenegger:
    [..]

    Zorgt er voor dat http.onreadystatechange gelijk wordt aan de functie handleHttpResponse.
    [..]

    Zorgt er voor dat http.onreadystatechange gelijk wordt aan het resultaat van het uitvoeren van handleHttpResponse(id).

    Dit kan je op verschillende manieren oplossen.
    Met een closure:
    [ code verwijderd ]

    Doordat de functie binnen de functie checkProduct wordt gedefinieerd, blijft de scope van checkProduct behouden. Daardoor is id binnen de onreadystatechange functie nog bekend op het moment dat die aangeroepen wordt.

    Een andere oplossing is dat je niet alleen het aantal producten terug stuurt, maar ook de id.
    Closure werkte ook, maar een aparte functie was even netter
    quote:
    Internet Explorer heeft trouwens een vervelende bug: het resultaat van de httprequest wordt gecached. Als de url van twee requests gelijk zijn, dan wordt geen cal naar de server gedaan, maar krijg je gewoon de eerder opgehaalde resultaten terug. Dit is gelukkig simpel te voorkomen door een random string aan de url toe te voegen.
    Ah... dus wanneer ik delete.php?id=6 stuur en er voor kies NIET te deleten, kan hij de volgende keer abusievelijk zeggen dat er produkten aan 6 gekoppeld zitten wat niet het geval is? Cached hij in temp files?
    quote:
    Dit is trouwens allemaal clientside scripting, dus meer iets voor het javascript topic.
    Klopt, maar het was gecombineerd door de xmlhttprequest. Ik heb 'm dus in beide topics gecrosspost
    wobbeldonderdag 8 december 2005 @ 20:47
    Hoe kijk of ik er wel écht een bestand wordt geupload bij een formulier met een file-field?

    if($_FILES['Avatar']) is namelijk altijd positief, ook als ik geen enkel bestand invul.

    Ik heb if($_FILES['Avatar']['tmp_name']) en name ook al gebruikt, maar dan kan ik bij het file-field ook wat random tekens invullen ipv een bestand, en dan zegt ie alsnog dat er wél een bestand is geupload.

    Ik heb http://nl2.php.net/features.file-upload er al op nageslagen, maar het helpt me niet echt :s
    Swetseneggerdonderdag 8 december 2005 @ 20:48
    quote:
    Op donderdag 8 december 2005 20:42 schreef SuperRembo het volgende:
    Dit lijkt me geen handige oplossing
    wrom niet?

    hij is trouwens wel net iets anders:
    1
    2
    3
    function checkProduct(rgt,menu) {
        id=menu; //var global maken
        right=rgt; //var global maken
    DionysuZdonderdag 8 december 2005 @ 20:49
    if ($_FILES["Avatar"]["size"] > 0)
    wobbeldonderdag 8 december 2005 @ 20:50
    quote:
    Op donderdag 8 december 2005 20:49 schreef DionysuZ het volgende:
    if ($_FILES["Avatar"]["size"] > 0)
    Dat vind ik zo'n kromme oplossing, maar kan het écht niet anders?
    Swetseneggerdonderdag 8 december 2005 @ 20:52
    quote:
    Op donderdag 8 december 2005 20:47 schreef wobbel het volgende:
    Hoe kijk of ik er wel écht een bestand wordt geupload bij een formulier met een file-field?

    if($_FILES['Avatar']) is namelijk altijd positief, ook als ik geen enkel bestand invul.

    Ik heb if($_FILES['Avatar']['tmp_name']) en name ook al gebruikt, maar dan kan ik bij het file-field ook wat random tekens invullen ipv een bestand, en dan zegt ie alsnog dat er wél een bestand is geupload.

    Ik heb http://nl2.php.net/features.file-upload er al op nageslagen, maar het helpt me niet echt :s
    if($_FILES['avatar']['tmp_name']!='') om te checken of er een bestandsnaam is ingevuld
    if(preg_match("/\.(jpg)$/i", $_FILES['avatar']['name'])) om te checken of de geuploade file een jpg is (uiteraard aan te passen voor gif, etc)
    wobbeldonderdag 8 december 2005 @ 20:54
    quote:
    Op donderdag 8 december 2005 20:52 schreef Swetsenegger het volgende:

    [..]

    if($_FILES['avatar']['tmp_name']!='') om te checken of er een bestandsnaam is ingevuld
    if(preg_match("/\.(jpg)$/i", $_FILES['avatar']['name'])) om te checken of de geuploade file een jpg is (uiteraard aan te passen voor gif, etc)
    dan kan ik een PHP file ook wel de extensie .jpg geven, en met punten erin wordt het ook een probleem.
    Gewoon $_FILES['Avatar']['type'] gebruiken, en zelfs dan kan het nog wel misgaan maar is de kans wel kleiner.
    DionysuZdonderdag 8 december 2005 @ 20:55
    quote:
    Op donderdag 8 december 2005 20:52 schreef Swetsenegger het volgende:

    [..]

    if($_FILES['avatar']['tmp_name']!='') om te checken of er een bestandsnaam is ingevuld
    if(preg_match("/\.(jpg)$/i", $_FILES['avatar']['name'])) om te checken of de geuploade file een jpg is (uiteraard aan te passen voor gif, etc)
    ik zou eerder $_FILES["avatar"]["type"] gebruiken om te checken of het een jpg is..
    DionysuZdonderdag 8 december 2005 @ 20:57
    quote:
    Op donderdag 8 december 2005 20:50 schreef wobbel het volgende:

    [..]

    Dat vind ik zo'n kromme oplossing, maar kan het écht niet anders?
    http://nl2.php.net/features.file-upload
    If no file is selected for upload in your form, PHP will return $_FILES['userfile']['size'] as 0, and $_FILES['userfile']['tmp_name'] as none.
    Chandlerdonderdag 8 december 2005 @ 20:59
    quote:
    Op donderdag 8 december 2005 18:45 schreef JeRa het volgende:

    [..]

    Ik snap je voorbeeld niet dat het eerste getal telkens opgehoogd dient te worden snap ik (heb je eigenlijk niet eens nodig maar toch), maar wat doet het tweede getal?
    Dat is voor de link van het vorige mapje

    voorbeeld er staan 3 mappen in de root
    1
    2
    3
    1 windows
    2 program files
    3 documents and settings


    dan is het ook handig dat de mappen die er onder zitten een goede beschrijving krijgen waar ze horen. Ik heb 2 mappen onder windows (en 1 submap) en 1 onder program files en 0 onder documents en settings in het volgende voorbeeld.

    1
    2
    3
    4
    5
    6
    7
    1|1| Windows
    2|1| Windows\System
    3|1| Windows\Temp
    4|3| Windows\Temp\inst_all
    5|1| Program files
    6|5| Program files\Winzip
    7|1| Documents and Settings


    zie je de link?, zo moet ik dus een tree opbouwen echter lukt me dat niet met aangegeven voorbeeld alleen zie ik de fout niet
    quote:
    Op donderdag 8 december 2005 18:58 schreef DionysuZ het volgende:
    wat lelijk dat hoofdlettergebruik ook :S $pathcount en $pathCount. Het werkt ZEER verwarrend. En zo geef je als je recursief scantree weer aanroept $pathCount en niet $pathcount, degene die opgehoogd wordt.
    Je hebt inderdaad gelijk, zal eens kijken of de error daaruit komt
    quote:
    Op donderdag 8 december 2005 20:19 schreef SuperRembo het volgende:
    @chandler:
    Zet eens haakje om $fDb + 1
    Ga ik ook doen
    quote:
    Lang leve loose typed talen
    what do you mean?
    quote:
    Op donderdag 8 december 2005 20:27 schreef DionysuZ het volgende:
    hehehe het heeft door zijn simpliciteit natuurlijk ook veel voordelen.
    Voordelen alleen heb ik die nog niet gezien
    Swetseneggerdonderdag 8 december 2005 @ 21:01
    quote:
    Op donderdag 8 december 2005 20:55 schreef DionysuZ het volgende:

    [..]

    ik zou eerder $_FILES["avatar"]["type"] gebruiken om te checken of het een jpg is..
    Ja klopt, die check je vervolgens tegen je preg_match en indien dat niet klopt ban je sucker gelijk
    Chandlerdonderdag 8 december 2005 @ 21:06
    Heb jullie ideeen verwerkt maar helaas nog geen werkend resultaat

    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
    <?

    error_reporting(E_ALL);

    function scantree($start, $fDb = 0, $pathcount = 0)
    {
    //    global $fDb;
        
        $fDb++;

        $dir = opendir($start);
        
        while (($file = readdir($dir)) != false)
        {
            if (is_dir($start . $file) && $file != "." && $file != "..")
            {
                $pathcount++;
                echo 'test[' . $pathcount . '] = ' . ($fDb + 1) . '|' . $pathcount . '|' . $file . '|' . $start .  $file . CHR(13) . CHR(10);

                scantree($start . $file . "/", $fDb, $pathcount);
                
            }
        }
    }

    $fDb = -1;

    if (isSet($_GET['drive']) && substr($_GET['drive'], 1,1) == ":")
    {
        scantree($_GET['drive'] . "/");// the tree looping can begin
    }
    else
    {
        echo 'no ow no';
    }


    'k snap echt niet waar ik de fout in ga
    SuperRembodonderdag 8 december 2005 @ 21:12
    quote:
    Op donderdag 8 december 2005 20:59 schreef Chandler het volgende:
    what do you mean?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $a = 'test';
    echo $a;// $a is een string

    $a = 'test'. 1;
    echo $a;// $a is een string

    $a = 'test'. 1 + 2;
    echo $a;// $a is nu een integer

    $a = 'test'. 1 + 2 .'drie';
    echo $a;// $a is weer string


    Bij een strict typed taal kan je geen getallen bij tekst optellen (of andersom). Dan maak je dit soort fouten dus niet.
    mscholdonderdag 8 december 2005 @ 21:54
    ik zit met klein, waarschijnlijk simpel, probleempje...
    ik heb met een htaccess bestand gezorgd dat al mijn plaatjes op mijn server lopen via een php bestand dit ziet er als volgt uit:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php
    php
    if($ext == "jpeg" || $ext == "jpg")
    {
    imagejpeg($_SERVER['HTTP_HOST']."/".$_GET['pic']);
    }
    if(
    $ext == "bmp")
    {
    imagewbmp($_SERVER['HTTP_HOST']."/".$_GET['pic']);
    }
    if(
    $ext == "gif")
    {
    imagegif($_SERVER['HTTP_HOST']."/".$_GET['pic']);
    }
    if(
    $ext == "png")
    {
    imagepng($_SERVER['HTTP_HOST']."/".$_GET['pic']);
    }
    ?>


    nou wil ik een stukkie tekst toevoegen aan een plaatje..
    hoe kan ik het zo doen dat de tekst procentueel gezien op dezelfde hoogte komt...?
    Fugiedonderdag 8 december 2005 @ 22:01
    jo even een vraagje, ik heb een inlogfunctie (heel simpel) en ik wil dat wanneer iemand succesvol inlogd mijn menuframe wordt refreshed. Nu heb ik tot nu toe niets werkend gekregen, ik kan de functie header niet gebruiken omdat ik dan een foutmelding krijg dat de header al eerder is verzonden en de enige andere manier die ik tot nu tegenkwam was een stukkie javascript erin ramme maar dat heeft ook nog niet gewerkt. Iemand hier nog een idee ?
    wobbeldonderdag 8 december 2005 @ 22:02
    Krijg bij deze code, onderstaande error....

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    if($_FILES['Avatar']['type'] == "image/jpg" OR $_FILES['Avatar']['type'] == "image/jpeg" OR $_FILES['Avatar']['type'] == "image/pjpg" OR $_FILES['Avatar']['type'] == "image/pjpeg" OR $_FILES['Avatar']['type'] == "image/gif")
    {

        
    // Tjekken op size :P
        
    $SizeX    = imagesx($_FILES['Avatar']['tmp_name']);
        
    $SizeY    = imagesy($_FILES['Avatar']['tmp_name']);
        
        echo
    $SizeX . " en de ander is " . $SizeY;


    }
    ?>


    1
    2
    3
    Warning: imagesx(): supplied argument is not a valid Image resource in /home/xostnl/public_html/tccl/member_avatar.php on line 68

    Warning: imagesy(): supplied argument is not a valid Image resource in /home/xostnl/public_html/tccl/member_avatar.php on line 69
    mscholdonderdag 8 december 2005 @ 22:05
    quote:
    Op donderdag 8 december 2005 22:01 schreef Fugie het volgende:
    jo even een vraagje, ik heb een inlogfunctie (heel simpel) en ik wil dat wanneer iemand succesvol inlogd mijn menuframe wordt refreshed. Nu heb ik tot nu toe niets werkend gekregen, ik kan de functie header niet gebruiken omdat ik dan een foutmelding krijg dat de header al eerder is verzonden en de enige andere manier die ik tot nu tegenkwam was een stukkie javascript erin ramme maar dat heeft ook nog niet gewerkt. Iemand hier nog een idee ?
    of met javascript je menuframe reloaden (iets van menuframe.location.reload ofzo...)
    of je hele frameset pagina opnieuw aanroepen...
    Fugiedonderdag 8 december 2005 @ 22:07
    quote:
    Op donderdag 8 december 2005 22:05 schreef mschol het volgende:

    [..]

    of met javascript je menuframe reloaden (iets van menuframe.location.reload ofzo...)
    of je hele frameset pagina opnieuw aanroepen...
    ja ik heb dat al geprobeerd ja maar dat haalde om de 1 of andere suffe reden niets uit
    mscholdonderdag 8 december 2005 @ 22:08
    quote:
    Op donderdag 8 december 2005 22:02 schreef wobbel het volgende:
    Krijg bij deze code, onderstaande error....
    [ code verwijderd ]


    [ code verwijderd ]
    probeer getimagesize eens
    wobbeldonderdag 8 december 2005 @ 22:09
    quote:
    Op donderdag 8 december 2005 21:54 schreef mschol het volgende:
    ik zit met klein, waarschijnlijk simpel, probleempje...
    ik heb met een htaccess bestand gezorgd dat al mijn plaatjes op mijn server lopen via een php bestand dit ziet er als volgt uit:
    [ code verwijderd ]

    nou wil ik een stukkie tekst toevoegen aan een plaatje..
    hoe kan ik het zo doen dat de tekst procentueel gezien op dezelfde hoogte komt...?
    imagey(); doen met de afbeelding, en dan daar bijv 10 pixels vanaf halen, en op die hoogte de tekst plaatsen.
    Als je de tekst wilt centeren, moet je een imagettftextbox gebruiken dacht ik (horizontaal)
    the_disheaverdonderdag 8 december 2005 @ 22:11
    Moet voor imagesx/y niet een gd-image achtige variable zijn? (geen idee hoe ik het goed uitleg...)

    In de php comments kijkend, zou het wel kunnen als je er tusen magecreatefromgif() gebruikt, maar daar heb je dus GD voor nodig.

    Maar als je alleen de hoogte/breedte nodig hebt, kun je ook gewoon getimagesize() gebruiken.
    image_data = getimagesize($imagepath);

    komt een array uit met [0] = witdh, [1]=heigth en nog enkele variables.
    wobbeldonderdag 8 december 2005 @ 22:12
    quote:
    Op donderdag 8 december 2005 22:09 schreef wobbel het volgende:

    [..]

    imagey(); doen met de afbeelding, en dan daar bijv 10 pixels vanaf halen, en op die hoogte de tekst plaatsen.
    Als je de tekst wilt centeren, moet je een imagettftextbox gebruiken dacht ik (horizontaal)
    werkt
    wobbeldonderdag 8 december 2005 @ 22:13
    quote:
    Op donderdag 8 december 2005 22:11 schreef the_disheaver het volgende:
    Moet voor imagesx/y niet een gd-image achtige variable zijn? (geen idee hoe ik het goed uitleg...)

    In de php comments kijkend, zou het wel kunnen als je er tusen magecreatefromgif() gebruikt, maar daar heb je dus GD voor nodig.

    Maar als je alleen de hoogte/breedte nodig hebt, kun je ook gewoon getimagesize() gebruiken.
    image_data = getimagesize($imagepath);

    komt een array uit met [0] = witdh, [1]=heigth en nog enkele variables.
    Maar als hij een tekst over de afbeelding wil poepen, moet hij dat zoiezo in GD gaan doen, tenzij hij met HTML wi lgaan prutsen,
    the_disheaverdonderdag 8 december 2005 @ 22:14
    quote:
    Op donderdag 8 december 2005 22:09 schreef wobbel het volgende:

    [..]

    imagey(); doen met de afbeelding, en dan daar bijv 10 pixels vanaf halen, en op die hoogte de tekst plaatsen.
    Als je de tekst wilt centeren, moet je een imagettftextbox gebruiken dacht ik (horizontaal)
    Als je er 10 pixels af haalt, heb je niet een procentuele gelijke hoogte.

    Wel als je die hoogte vermenigvuldigd met een getal (kleiner dan 1...).
    Bv * 0.9 zodat ie op 90% van de hoogte vanaf de bovenkant komt.
    the_disheaverdonderdag 8 december 2005 @ 22:18
    quote:
    Op donderdag 8 december 2005 22:13 schreef wobbel het volgende:

    [..]

    Maar als hij een tekst over de afbeelding wil poepen, moet hij dat zoiezo in GD gaan doen, tenzij hij met HTML wi lgaan prutsen,
    Was meer op jou vraag van toepassing (ja, ik was laat...)
    the_disheaverdonderdag 8 december 2005 @ 22:20
    quote:
    Op donderdag 8 december 2005 22:01 schreef Fugie het volgende:
    jo even een vraagje, ik heb een inlogfunctie (heel simpel) en ik wil dat wanneer iemand succesvol inlogd mijn menuframe wordt refreshed. Nu heb ik tot nu toe niets werkend gekregen, ik kan de functie header niet gebruiken omdat ik dan een foutmelding krijg dat de header al eerder is verzonden en de enige andere manier die ik tot nu tegenkwam was een stukkie javascript erin ramme maar dat heeft ook nog niet gewerkt. Iemand hier nog een idee ?
    Mag ik vragen waarom je uberhaupt frames gebruikt wanneer je met php werkt?

    Maar anders de frameset opnieuw aanroepen, met daarin php-variables met het doelframe? (zodat je wel op dezelfde pagina blijft).
    wobbeldonderdag 8 december 2005 @ 22:20
    quote:
    Op donderdag 8 december 2005 22:18 schreef the_disheaver het volgende:

    [..]

    Was meer op jou vraag van toepassing (ja, ik was laat...)
    ik begrijp wat je bedoelt...
    dan zou ik eerst imagecreatefromfile moeten doen voordat ik imagesx kon doen
    Chandlerdonderdag 8 december 2005 @ 22:32
    Ik heb het al voor elkaar maar bij een grote directory structuur gaat er echt iets fout, oftewel de brouwser kan het niet aa

    voorbeeld http://www.bruggema.nl/sr/treeding.html

    met de volgende code
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <html>
    <head>
       <title>destroydrop » JavaScripts » Tree</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
       <link rel="StyleSheet" href="tree.css" type="text/css">
       <script type="text/javascript" src="tree.js"></script>
       <script type="text/javascript">

          <!--
          var Tree = new Array;
          // nodeId | parentNodeId | nodeName | nodeUrl
    <?

    error_reporting(E_ALL);

    function scantree($start, $id = 0)
    {
        $parent_id = $id;
        
        $id++;

        $dir = opendir($start);
        
        while (($file = readdir($dir)) != false)
        {
            if (is_dir($start . $file) && $file != "." && $file != "..")
            {
                echo 'Tree[' . ($id -1) . '] = "' . ($id) . '|' . $parent_id . '|' . $file . '|#";' .  CHR(13) . CHR(10);

                list($id) = scantree($start . $file . "/", $id);

            }
        }
        
        return array($id);

    }

    if (isSet($_GET['drive']) && substr($_GET['drive'], 1,1) == ":")
    {
        scantree($_GET['drive'] . "/");// the tree looping can begin
    }
    else
    {
        echo 'no ow no';
    }

    ?>

          //-->
       </script>
    </head>

    <body>

    <div class="tree">
    <script type="text/javascript">
    <!--
       createTree(Tree);
    //-->
    </script>
    </div>


    </body>
    </html>


    altijd handig hé, maar denk dat ik met XMLHTTP aan de slag moet ofzo, want dit is niet echt handig
    wobbeldonderdag 8 december 2005 @ 22:37
    Werkt perfect en snel hier in FF 1.5?
    the_disheaverdonderdag 8 december 2005 @ 22:57
    ik snap idd niet wat er mis mee is, ziet er gaaf uit... (opera 8.51 hierzo)
    Chandlerdonderdag 8 december 2005 @ 22:58
    ja maar dit is maar een kleine tree, je wil die van me hele HDD (c partitie) niet zien namelijk, dan crasht me brouwser

    ff met firefox proberen trouwens
    Chandlerdonderdag 8 december 2005 @ 23:03
    Ik moet zeggen dat firefox m'n hele tree ook niet echt leuk vind
    DionysuZdonderdag 8 december 2005 @ 23:09
    quote:
    Op donderdag 8 december 2005 23:03 schreef Chandler het volgende:
    Ik moet zeggen dat firefox m'n hele tree ook niet echt leuk vind
    waarom bouw je hem met javascript op?
    SuperRembodonderdag 8 december 2005 @ 23:25
    Je hele C schijf omzetten naar een tree in JS zal altijd lang duren. Je kan dan beter met XMLHttp steeds nieuwe gegevens ophalen als je een folder uitklapt. Op die manier laadt je niet meer dan nodig is.
    Lightdonderdag 8 december 2005 @ 23:31
    quote:
    Op donderdag 8 december 2005 23:09 schreef DionysuZ het volgende:

    [..]

    waarom bouw je hem met javascript op?
    Dat is natuurlijk niet nodig, het opbouwen kan ook serverside gebeuren. Nadeel is dan wel dat je heel veel data moet verstouwen, en dat maakt het toch weer traag.
    DionysuZdonderdag 8 december 2005 @ 23:37
    quote:
    Op donderdag 8 december 2005 23:31 schreef Light het volgende:

    [..]

    Dat is natuurlijk niet nodig, het opbouwen kan ook serverside gebeuren. Nadeel is dan wel dat je heel veel data moet verstouwen, en dat maakt het toch weer traag.
    true, true.
    Chandlervrijdag 9 december 2005 @ 00:00
    quote:
    Op donderdag 8 december 2005 23:09 schreef DionysuZ het volgende:
    waarom bouw je hem met javascript op?
    Euh, omdat mij dat wel handig leek, maar bij nader inzien is dat helaas niet echt handig
    quote:
    Op donderdag 8 december 2005 23:25 schreef SuperRembo het volgende:
    Je hele C schijf omzetten naar een tree in JS zal altijd lang duren. Je kan dan beter met XMLHttp steeds nieuwe gegevens ophalen als je een folder uitklapt. Op die manier laadt je niet meer dan nodig is.
    Je hebt gelijk, ik weet het. Echter heb ik geen flauw idee hoe ik dat dan moet realiseren. Heb er namelijk zelf ook al overna gedacht maar kan maar geen goed idee bedenken
    quote:
    Op donderdag 8 december 2005 23:31 schreef Light het volgende:
    Dat is natuurlijk niet nodig, het opbouwen kan ook serverside gebeuren. Nadeel is dan wel dat je heel veel data moet verstouwen, en dat maakt het toch weer traag.
    Inderdaad, zo zat ik ook te denken maar goed... sommige mensen denken net even iets anders
    quote:
    Op donderdag 8 december 2005 23:37 schreef DionysuZ het volgende:
    true, true.
    Dat heb ik helaas gemerkt ja, alleen hoe dat dan met XMLHTTP te realiseren is me nog een vraag, met FireFox kwam ik echter wel iets verder dan met IE
    the_disheavervrijdag 9 december 2005 @ 00:07
    quote:
    Op vrijdag 9 december 2005 00:00 schreef Chandler het volgende:

    Dat heb ik helaas gemerkt ja, alleen hoe dat dan met XMLHTTP te realiseren is me nog een vraag, met FireFox kwam ik echter wel iets verder dan met IE
    *is stiekem wel benieuwd hoever je met opera komt
    Chandlervrijdag 9 december 2005 @ 00:09
    zal het ff uittesten
    DionysuZvrijdag 9 december 2005 @ 00:12
    quote:
    Op donderdag 8 december 2005 23:25 schreef SuperRembo het volgende:
    Je hele C schijf omzetten naar een tree in JS zal altijd lang duren. Je kan dan beter met XMLHttp steeds nieuwe gegevens ophalen als je een folder uitklapt. Op die manier laadt je niet meer dan nodig is.
    deze manier is wel een leuke Chandler .
    Chandlervrijdag 9 december 2005 @ 00:15
    quote:
    Op vrijdag 9 december 2005 00:12 schreef DionysuZ het volgende:
    deze manier is wel een leuke Chandler .
    Absoluut, daar ben ik het mee eens, maar dan zit ik nog steeds mezelf af te vragen hoe ik dat correct voor elkaar krijg? Want ik wil wel graag de mappen structuur behouden... heb reeds gezocht naar een voorbeeld die daar wat dieper op inging maar helaas heb dus niets gevonden en nog steeds geen idee hoe dit te verwezelijken.
    DionysuZvrijdag 9 december 2005 @ 00:19
    quote:
    Op vrijdag 9 december 2005 00:15 schreef Chandler het volgende:

    [..]

    Absoluut, daar ben ik het mee eens, maar dan zit ik nog steeds mezelf af te vragen hoe ik dat correct voor elkaar krijg? Want ik wil wel graag de mappen structuur behouden... heb reeds gezocht naar een voorbeeld die daar wat dieper op inging maar helaas heb dus niets gevonden en nog steeds geen idee hoe dit te verwezelijken.
    ik wil me ook nog eens een keer goed verdiepen in xmlhttprequests. Maar dat is misschien iets voor het javascript topic? [javascript] voor dummies - deel 3 dan tvp ik me daar ook ff
    Chandlervrijdag 9 december 2005 @ 00:20
    Met opera is het echt gelukt al duurde het wel wat minuten voordat de gehele tree er stond best jammer eingelijk, had best sneller gekund maar goed... na 4200+ items kan je ook niet veel anders verwachten... Wel mooi dat opera het hele script gewoon lekker laat draaien zonder error meldingen te geven. IE en FF kappen het gewoon af of blijven met errors (notices) komen
    Roonaanvrijdag 9 december 2005 @ 00:21
    quote:
    Op vrijdag 9 december 2005 00:19 schreef DionysuZ het volgende:

    [..]

    ik wil me ook nog eens een keer goed verdiepen in xmlhttprequests. Maar dat is misschien iets voor het javascript topic? [javascript] voor dummies - deel 3 dan tvp ik me daar ook ff
    prototype.js is het keyword. Die is zo goed als crossbrowser zover ik weet.
    the_disheavervrijdag 9 december 2005 @ 00:24
    quote:
    Op vrijdag 9 december 2005 00:20 schreef Chandler het volgende:
    Met opera is het echt gelukt al duurde het wel wat minuten voordat de gehele tree er stond best jammer eingelijk, had best sneller gekund maar goed... na 4200+ items kan je ook niet veel anders verwachten... Wel mooi dat opera het hele script gewoon lekker laat draaien zonder error meldingen te geven. IE en FF kappen het gewoon af of blijven met errors (notices) komen


    Ik heb het script je ff zelf geprobeerd, maar dat duurde (voor mn c schijf) langer dan 30 secondes om de gehele lijst te krijgen, waardoor de max runtime (oid) overschreven werd...

    Het duurde idd best lang voordat een kleinere map geopend werd.

    edit: secondes bedoel ik natuurlijk...
    DionysuZvrijdag 9 december 2005 @ 00:26
    quote:
    Op vrijdag 9 december 2005 00:24 schreef the_disheaver het volgende:

    [..]



    Ik heb het script je ff zelf geprobeerd, maar dat duurde (voor mn c schijf) langer dan 30 minuten om de gehele lijst te krijgen, waardoor de max runtime (oid) overschreven werd...

    Het duurde idd best lang voordat een kleinere map geopend werd.
    sja... javascript he
    Chandlervrijdag 9 december 2005 @ 00:29
    Je hebt het script nu gezien, heb je misschien anders een idee hoe ik dit dan moet aanpakken? met andere DIVS? zonder javascript? of toch maar met XMLHTTP (waar ik nog steeds op zit te spacen?) .. Divs zou ook wel kunnen hoor maar dan houd je idd nog een zeer grote lap met bandwidth voor misschien een 0.01% gebruik daarvan en dan is XMLHTTP wel weer handig... maar goed...
    Chandlervrijdag 9 december 2005 @ 00:32
    http://webfx.eae.net/dhtml/xloadtree/demo.html dit is wel een mooie, die moet ik maar eens uit gaan spitten, want lijkt me wel verdomde handig
    JeRavrijdag 9 december 2005 @ 00:34
    quote:
    Op vrijdag 9 december 2005 00:32 schreef Chandler het volgende:
    http://webfx.eae.net/dhtml/xloadtree/demo.html dit is wel een mooie, die moet ik maar eens uit gaan spitten, want lijkt me wel verdomde handig
    Ja godsamme ik blijf maar klikken bij die tree willen ze een wereldwijde denial of service gaan uitoefenen met die eeuwige uitklapbare meuk?
    Chandlervrijdag 9 december 2005 @ 00:36
    dat denk ik maar ziet er toch best goed uit; al zeg ik het zelf; maar zo iets moet ik dan ook maar gaan realiseren ofzo... lijkt me wel verdomde handig ivm server data.
    DionysuZvrijdag 9 december 2005 @ 00:40
    quote:
    Op vrijdag 9 december 2005 00:29 schreef Chandler het volgende:
    Je hebt het script nu gezien, heb je misschien anders een idee hoe ik dit dan moet aanpakken? met andere DIVS? zonder javascript? of toch maar met XMLHTTP (waar ik nog steeds op zit te spacen?) .. Divs zou ook wel kunnen hoor maar dan houd je idd nog een zeer grote lap met bandwidth voor misschien een 0.01% gebruik daarvan en dan is XMLHTTP wel weer handig... maar goed...
    geen probleem met javascript hoor. Maar het is zo traag en processorvretend . Ik zou het denk ik op de XMLHTTP manier proberen. Dan heb je stukken minder te processen per keer.
    DionysuZvrijdag 9 december 2005 @ 00:41
    quote:
    Op vrijdag 9 december 2005 00:34 schreef JeRa het volgende:

    [..]

    Ja godsamme ik blijf maar klikken bij die tree willen ze een wereldwijde denial of service gaan uitoefenen met die eeuwige uitklapbare meuk?
    haha dat was me ook al opgevallen
    JeRavrijdag 9 december 2005 @ 02:27
    Even een vraagje met betrekking tot security, of iig, het in stand houden daarvan.

    Ik heb hier twee perfect samenwerkende servers staan die vanalles doen, en om dat te managen heb ik in PHP een tool gemaakt genaamd AAP, Ares Administrative Panel (Ares is de naam van de server die o.a. als webserver fungeert). Deze tool is interactief en maakt dus gebruik van STDIN om mijn input te verwerken en draait dus ook onder php-cli, met de rechten van root. Dit is omdat AAP in staat moet zijn user directories te maken en qua rechten goed te zetten, de Apache webserver moet kunnen laten reloaden, en nog veel meer. Dit is op het moment allemaal prima afgeschermd.

    Echter wil ik nu alles modulebased opbouwen waarbij ik voor iedere account incluis mezelf (de administrator) een webinterface biedt. Nu moet ik dus in staat zijn om via die webinterface hetzelfde te doen als via AAP, maar gezien PHP via Apache draait heeft het dus zo min mogelijk rechten (wat heel logisch is maar niet door elke webhoster in stand wordt gehouden - dat terzijde) waardoor dat niet mogelijk is. Ik heb dus een manier nodig om een veilige communicatie op te zetten tussen de webinterface en de 'backend' die als root-account aanpassingen aan beide servers doet.

    Qua scripten is het voor mij geen probleem dit veilig te doen, het gaat mij vooral om de globale manier waarop ik dit zou moeten doen ik had zelf al bedacht dat ik wellicht een backend kon schrijven die als server fungeert en verbindingen accepteert, de verbinding authenticeert en vervolgens bepaalde acties toelaat. Gebruikers moeten overigens straks zelf ook in staat zijn subdomeinen toe te voegen waar een Apache reload voor nodig is.
    Chandlervrijdag 9 december 2005 @ 09:02
    Heeft iemand een manier waarop ik dat gebeuren met de tree kan verwezelijken? een guide how to zonder alle code direct... want ik moet natuurlijk ook de directories laten zien die leeg zijn maar die moeten dan weer niet open kunnen hé.

    Ik zat zelf te denken aan het volgende.

    Met XMLHTTP vraag ik bv C:\ op en dan krijg ik data terug

    1 = including subdirs, 0 = geen subdirs..

    bv
    1
    2
    [Windows, C:\Windows, 1]
    [Test, C:\Test, 0]


    verder weet ik het nog niet, deze data kan ik wel uit een php script trekken maar moet ik dit dan doen met divjes...
    Lightvrijdag 9 december 2005 @ 10:25
    quote:
    Op vrijdag 9 december 2005 09:02 schreef Chandler het volgende:

    want ik moet natuurlijk ook de directories laten zien die leeg zijn maar die moeten dan weer niet open kunnen hé.
    Waarom niet? Windows / Explorer (om eens een voorbeeld te nemen) laat ook gewoon folder zien. En als blijkt dat een folder geen subfolders heeft dan verdwijnt het plusje voor de foldernaam wel op het moment dat je erop klikt. Pas op het moment dat je een folder opent ga je kijken naar de inhoud, niet eerder.
    Swetseneggervrijdag 9 december 2005 @ 10:27
    quote:
    Op vrijdag 9 december 2005 00:21 schreef Ro�a� het volgende:

    [..]

    prototype.js is het keyword. Die is zo goed als crossbrowser zover ik weet.
    Ik gebruik er nu een welke in ieder geval werkt op Firefox, Internet Explorer en Opera (allemaal windows).

    Ik zal deze eens downloaden en kijken wat er anders aan is, want xmlhttprequests zijn wel ontzettend geil. De ultieme koppeling tussen client en server side .
    the_disheavervrijdag 9 december 2005 @ 10:30
    quote:
    Op vrijdag 9 december 2005 10:25 schreef Light het volgende:

    [..]

    Waarom niet? Windows / Explorer (om eens een voorbeeld te nemen) laat ook gewoon folder zien. En als blijkt dat een folder geen subfolders heeft dan verdwijnt het plusje voor de foldernaam wel op het moment dat je erop klikt. Pas op het moment dat je een folder opent ga je kijken naar de inhoud, niet eerder.
    Misschien doet verkenner dat dan wel zo, maar dat betekend dus niet dat de manier hoe verkenner dat doet ook de beste is.

    Ik erger me dat er wel een plusje staat voor een lege map

    Verschil is er wel: de tree in explorer laat alleen de mampjes zien, en in de tree van Chandler is het wss de bedoeling dat ook de bestanden in de tree komen te staan, ofwel: de kans is veel kleiner op een lege map. Is het dus de moeite waard om dat te doen?
    Chandlervrijdag 9 december 2005 @ 12:52
    quote:
    Op vrijdag 9 december 2005 10:25 schreef Light het volgende:
    Waarom niet? Windows / Explorer (om eens een voorbeeld te nemen) laat ook gewoon folder zien. En als blijkt dat een folder geen subfolders heeft dan verdwijnt het plusje voor de foldernaam wel op het moment dat je erop klikt. Pas op het moment dat je een folder opent ga je kijken naar de inhoud, niet eerder.
    Je hebt gelijk, echter is dat dan weer de vraag hoe dat te verwerken
    Chandlervrijdag 9 december 2005 @ 13:06
    -edit-

    Heb nu een ander stuk van het internet getrokken en dat geeft resultaat

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <html>
        <head>
            <title>XMLHTTP example</title>
            <script type="text/javascript" language="javascript">

                var http_request = false;

                function makeRequest(path, id) 
                {

                    if (window.XMLHttpRequest) 
                    { // Mozilla, Safari,...
                        http_request = new XMLHttpRequest();
                    } 
                    else if (window.ActiveXObject) 
                    { // IE
                        http_request = new ActiveXObject("Microsoft.XMLHTTP");
                    }

                    http_request.onreadystatechange = alertContents;
                    http_request.open('GET', "tree.php?path=" + path + "&id=" + id, true);
                    http_request.send(null);

                }

                function alertContents() 
                {

                    if (http_request.readyState == 4) 
                    {
                        if (http_request.status == 200) 
                        {
                            alert(http_request.responseText);
                        } 
                        else 
                        {
                            alert('There was a problem with the request.');
                        }
                    }

                }
            </script>
        </head>
        <body>
            <a href="#" onclick="makeRequest('c:/myserver/', 666);">Make a request</a>
        </body>
    </html>


    echter blijkt dat continue de inhoud die gefetcht wordt met XMLHTTP gecached wordt, hoe kan ik dat voorkomen? want wil geen cache in mijn XMLHTTP

    [ Bericht 53% gewijzigd door Chandler op 09-12-2005 13:21:37 ]
    Roonaanvrijdag 9 december 2005 @ 13:40
    timestamp meesturen als query string parameter.
    wobbelvrijdag 9 december 2005 @ 13:47
    Hoe zorg ik voor een goede quote functie zoals op Fok?!

    Dus [quote=Naam]blaat[/quote]
    Maar ook quoten zonder naam en maximaal 1 level 'diep' quoten, dus dat je geen oneinde loop met quotes in elkeer krijgt
    Chandlervrijdag 9 december 2005 @ 13:57
    &Roonaan; ok dat snap ik had ik ook al aan gedacht maar is er geen andere mogelijkheid om de caching uit te zetten?

    @Wobbel:

    Je kan in een quote een quote verwijderen str_replace hé
    Roonaanvrijdag 9 december 2005 @ 14:06
    quote:
    Op vrijdag 9 december 2005 13:57 schreef Chandler het volgende:
    &Roonaan; ok dat snap ik had ik ook al aan gedacht maar is er geen andere mogelijkheid om de caching uit te zetten?

    @Wobbel:

    Je kan in een quote een quote verwijderen str_replace hé
    no cache headers meesturen vanaf de server, zoals dat altijd voor php geldt.
    Chandlervrijdag 9 december 2005 @ 14:10
    owkee, gaan we inbouwen
    Chandlervrijdag 9 december 2005 @ 14:27
    het werkt idd, maar nu zit ik dus met de opbouw van divjes, hoe ik een begin moet maken met een tree en hoe ik deze dan kan updaten zonder probelemen etc... want iedere div moet natuurlijk ook een naam (id) hebben? best pittig hoor ...
    Roonaanvrijdag 9 december 2005 @ 14:34
    1_2_3_4_5_6_
    path_c_temp_dev_fok_

    zo zijn er genoeg te verzinnen die redelijkerwijs unieke div ids opleveren.

    -r-
    Chandlervrijdag 9 december 2005 @ 14:41
    hmmm... dat is ook wel weer een leuk idee ik ga er ff mee spelen...
    Roonaanvrijdag 9 december 2005 @ 14:42
    quote:
    Op vrijdag 9 december 2005 14:41 schreef Chandler het volgende:
    hmmm... dat is ook wel weer een leuk idee ik ga er ff mee spelen...
    tot zo
    Chandlervrijdag 9 december 2005 @ 14:51
    ik heb nu zo iets als dit
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <style>

    .fld {
    margin-left: 16px;
    }
    </style>

    <div class="fld" id="test1">
        <img id="test1fld" src="images/foldericon.png"> Folder1
        <div class="fld" id="test4">
            <img id="test4fld" src="images/foldericon.png"> Folder4
        </div>
        <div class="fld" id="test2">
            <img id="tes2fld" src="images/foldericon.png"> Folder2
            <div class="fld" id="test3">
                <img id="test3fld" src="images/foldericon.png"> Folder3
            </div>
        </div>
    </div>
    <div class="fld" id="test5">
        <img id="test5fld" src="images/foldericon.png"> Folder5
    </div>


    maar daar kom ik ook niet echt verder mee... weet iemand een voorbeeld van een tree die gewoon werkt met divjes zonder al te veel functies... dus alleen maar aanroepen voor display veranderingen!?
    Chandlervrijdag 9 december 2005 @ 14:51
    quote:
    Op vrijdag 9 december 2005 14:42 schreef Ro�a� het volgende:
    tot zo
    Je kent me een beetje hé
    Desdinovazaterdag 10 december 2005 @ 12:59
    Ik heb een soort inlogsysteem gemaakt wat je wachtwoord (md5) checked met het opgegeven md5(wachtwoord) in de database. werkt prima en is op zich wel redelijk veilig denk ik.

    punt is, hij is niet hoofdlettergevoelig
    is dat te fixen?
    Lightzaterdag 10 december 2005 @ 13:08
    quote:
    Op zaterdag 10 december 2005 12:59 schreef Desdinova het volgende:
    Ik heb een soort inlogsysteem gemaakt wat je wachtwoord (md5) checked met het opgegeven md5(wachtwoord) in de database. werkt prima en is op zich wel redelijk veilig denk ik.

    punt is, hij is niet hoofdlettergevoelig
    is dat te fixen?
    MySQL is bij het controleren van een string niet hoofdlettergevoelig. Wat je wel kunt doen is de passwordstring (dus die md5-string) uit je database halen, dan krijg je precies dat wat er ook is ingezet. En dat kun je dan met strcmp weer vergelijken, strcmp moet dan 0 opleveren.
    Desdinovazaterdag 10 december 2005 @ 14:35
    oh hij deed t al
    ik denk dat ik nog ingelogd was

    md5(bla) creeert niet dezelfde waarde als md5(BLA)
    dus op die manier is het hoofdlettergevoelig.

    tx iig
    Lightzaterdag 10 december 2005 @ 14:37
    quote:
    Op zaterdag 10 december 2005 14:35 schreef Desdinova het volgende:

    md5(bla) creeert niet dezelfde waarde als md5(BLA)
    dus op die manier is het hoofdlettergevoelig.
    Da's logisch toch? "bla" en "BLA" zijn verschillende strings. Het zou heel wat makkelijker kraken worden als dat niet zo was.
    wobbelzaterdag 10 december 2005 @ 14:43
    Hoe kan ik met PHP een bestand doorgeven?

    Ik heb blaat.php, en daar wil ik de inhoud van poepchinees.jpg in weergeven. Iets met filepassthrough() ofzo?
    Lightzaterdag 10 december 2005 @ 14:50
    quote:
    Op zaterdag 10 december 2005 14:43 schreef wobbel het volgende:
    Hoe kan ik met PHP een bestand doorgeven?

    Ik heb blaat.php, en daar wil ik de inhoud van poepchinees.jpg in weergeven. Iets met filepassthrough() ofzo?
    Readfile is waarschijnlijk het makkelijkst.
    the_disheaverzaterdag 10 december 2005 @ 14:51
    echo '<a href="poepchinees.jpg">' ?

    Maar header() zal een stapje moeten zijn (hoe verder weet ik niet zo)
    wobbelzaterdag 10 december 2005 @ 14:51
    quote:
    Op zaterdag 10 december 2005 14:50 schreef Light het volgende:

    [..]

    Readfile is waarschijnlijk het makkelijkst.
    readfile idd, ik wou het net posten hier...maar er is er nog 1tje volgensmij
    Desdinovazaterdag 10 december 2005 @ 14:54
    fread?

    ik heb een bestandje wat ws precies hetzelfde doet als wat de jouwes moet doen

    de phpfile wordt je plaatje zeg maar. en dan moet je dus de filetype headers meegeven
    JeRazaterdag 10 december 2005 @ 15:07
    quote:
    Op vrijdag 9 december 2005 02:27 schreef JeRa het volgende:
    Even een vraagje met betrekking tot security, of iig, het in stand houden daarvan.

    (...)
    Niemand die zijn licht kan laten schijnen over bovenstaande post?
    existenzzaterdag 10 december 2005 @ 17:51
    quote:
    Op vrijdag 9 december 2005 02:27 schreef JeRa het volgende:
    Even een vraagje met betrekking tot security, of iig, het in stand houden daarvan.

    Ik heb hier twee perfect samenwerkende servers staan die vanalles doen, en om dat te managen heb ik in PHP een tool gemaakt genaamd AAP, Ares Administrative Panel (Ares is de naam van de server die o.a. als webserver fungeert). Deze tool is interactief en maakt dus gebruik van STDIN om mijn input te verwerken en draait dus ook onder php-cli, met de rechten van root. Dit is omdat AAP in staat moet zijn user directories te maken en qua rechten goed te zetten, de Apache webserver moet kunnen laten reloaden, en nog veel meer. Dit is op het moment allemaal prima afgeschermd.

    Echter wil ik nu alles modulebased opbouwen waarbij ik voor iedere account incluis mezelf (de administrator) een webinterface biedt. Nu moet ik dus in staat zijn om via die webinterface hetzelfde te doen als via AAP, maar gezien PHP via Apache draait heeft het dus zo min mogelijk rechten (wat heel logisch is maar niet door elke webhoster in stand wordt gehouden - dat terzijde) waardoor dat niet mogelijk is. Ik heb dus een manier nodig om een veilige communicatie op te zetten tussen de webinterface en de 'backend' die als root-account aanpassingen aan beide servers doet.

    Qua scripten is het voor mij geen probleem dit veilig te doen, het gaat mij vooral om de globale manier waarop ik dit zou moeten doen ik had zelf al bedacht dat ik wellicht een backend kon schrijven die als server fungeert en verbindingen accepteert, de verbinding authenticeert en vervolgens bepaalde acties toelaat. Gebruikers moeten overigens straks zelf ook in staat zijn subdomeinen toe te voegen waar een Apache reload voor nodig is.
    Kort antwoord: Nee. Het kan veel veiliger.

    Iets standaard onder root draaien is niet goed, geef hem pas de rechten van root, of gebruik het pas wanneer die functies nodig zijn. Doe het niet meteen al. Echter heb je het al afgeschermd zeg je, dus naar het tweede punt

    Schrijf een backend applicatie die de rechten heeft van de user die je laat inloggen. Je php en linux logins zullen dus gelijk moeten zijn en de applicatie zal in iedereen zijn homedir moeten staan met zijn eigen rechten dus bijvoorbeeld:
    /home/piet/
    piet piet Run.sh

    /home/henk/
    henk henk Run.sh

    Zo kun je alles netjes afschermen wat ze wel en niet mogen doen, en mogelijk heb je zo zelfs het root account niet nodig, als je de administrator de minimale maximale rechten geeft die hij nodig heeft.

    Klinkt misschien wat warrig Maar hopelijk helpt het je
    JeRazaterdag 10 december 2005 @ 18:15
    quote:
    Op zaterdag 10 december 2005 17:51 schreef existenz het volgende:

    [..]

    Schrijf een backend applicatie die de rechten heeft van de user die je laat inloggen. Je php en linux logins zullen dus gelijk moeten zijn en de applicatie zal in iedereen zijn homedir moeten staan met zijn eigen rechten dus bijvoorbeeld:
    /home/piet/
    piet piet Run.sh

    /home/henk/
    henk henk Run.sh
    Hierbij komt een ietwat complexer geheel kijken.

    Alle userinformatie, inclusief informatie over quotas, webdirectories, e-mailaliassen, etc, etc, wordt opgeslagen in een centrale database. Het is natuurlijk geen goed idee om iedereen toegang te geven tot die gegevens, dus is er een aparte account die alleen dit werk afhandelt.

    De gebruikers kunnen zelf straks e-mailaliassen of subdomeinen aanmaken. Als ik dat onder hun account doe moeten ze ook het recht hebben om naam + wachtwoord van de account waarmee die informatie in de database kan worden gewijzigd te achterhalen --> weg veiligheid.

    Dus ik had zo bedacht dat alles via één systeem moet lopen waarbij de gebruikers niet de werking van het systeem kunnen achterhalen (immers, alle scripts en wachtwoorden zitten in de bestanden waar zowel de webserver als de accounts op de machine zelf niet bij kunnen). Zou ik niet een zooi aan bash-scriptjes het onderliggende werk kunnen doen (apache reloaden, etc) d.m.v. sudo?
    existenzzaterdag 10 december 2005 @ 18:50
    quote:
    Op zaterdag 10 december 2005 18:15 schreef JeRa het volgende:

    [..]

    Hierbij komt een ietwat complexer geheel kijken.

    Alle userinformatie, inclusief informatie over quotas, webdirectories, e-mailaliassen, etc, etc, wordt opgeslagen in een centrale database. Het is natuurlijk geen goed idee om iedereen toegang te geven tot die gegevens, dus is er een aparte account die alleen dit werk afhandelt.

    De gebruikers kunnen zelf straks e-mailaliassen of subdomeinen aanmaken. Als ik dat onder hun account doe moeten ze ook het recht hebben om naam + wachtwoord van de account waarmee die informatie in de database kan worden gewijzigd te achterhalen --> weg veiligheid.

    Dus ik had zo bedacht dat alles via één systeem moet lopen waarbij de gebruikers niet de werking van het systeem kunnen achterhalen (immers, alle scripts en wachtwoorden zitten in de bestanden waar zowel de webserver als de accounts op de machine zelf niet bij kunnen). Zou ik niet een zooi aan bash-scriptjes het onderliggende werk kunnen doen (apache reloaden, etc) d.m.v. sudo?
    Ja, dat doet ongeveer hetgene waar ik op doel, alleen kies jij voor een (misschien wel betere) oplossing waar het op 1 plaats gebeurd, maar de scripts dus meer rechten nodig hebben (denk ik, ik ken je model niet, en dat moet ook niet, anders had je het niet hoeven te bouwen ) of een lokale oplossing met ieg al meer onderhoud en mogelijk idd meer risico's.

    Maar jou keuze idd, wat ik zou kiezen weet ik niet. Daar weet ik te weinig van jouw systeem en omgeving over, maar de oplossing die je aandraagt vind ik zeker aannemelijk.
    SkaterSamzaterdag 10 december 2005 @ 20:43
    Grmmbblll, op een of andere manier krijg ik nooit errors te zien, maar telkens een standaard blanke pagina, maar dat terzijde...

    Ik probeer een class te schrijven om een verbinding te maken met de database, maar ik krijg volgens de error.log van Apache de volgende fout:

    1PHP Parse error:  syntax error, unexpected T_OBJECT_OPERATOR in <<path naar document.php>> on line 37


    Maar ik snap niet wat er nou fout is...Dit is de code
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php
    class Db_functies {
    // enkele variabalen worden gedefinieerd hier...

        
    function Db_functies($user,$pw,$naam) {
            if (
    trim($user) == '') {
                
    this-&gt;fout('Er is geen gebruiker opgegeven'); //Dit is lijn 37!!!
            
    }
            if (
    trim($pw) == '') {
                
    this-&gt;fout('Er is geen wachtwoord opgegeven');
            }
            if (
    trim($naam) == '') {
                
    this-&gt;fout('Er is geen database opgegeven');
            }
            
            
    this-&gt;db_user = $user;
            
    this-&gt;db_pw = $pw;
            
    this-&gt;db_naam = $naam;
            
    this-&gt;c_db();
        }
    ?>


    De functie fout() zit even verderop in het bestand, maar de fout zit dus volgens de lijst van Parser Tokens op php.net in de -> (het pijltje) tussen this en fout.. Is er iets wat ik over het hoofd zie...?
    JeRazaterdag 10 december 2005 @ 21:14
    Je moet $this gebruiken en niet this
    SkaterSamzaterdag 10 december 2005 @ 21:25
    Grrmmmbllll zal je altijd zien, zoiets simpels... danku
    existenzzaterdag 10 december 2005 @ 21:36
    quote:
    Op zaterdag 10 december 2005 21:25 schreef SkaterSam het volgende:
    Grrmmmbllll zal je altijd zien, zoiets simpels... danku
    PHP is bijna altijd de $ ervoor
    wobbelzaterdag 10 december 2005 @ 21:37
    quote:
    Op zaterdag 10 december 2005 21:25 schreef SkaterSam het volgende:
    Grrmmmbllll zal je altijd zien, zoiets simpels... danku
    Dat soort dingen heb ik ook heel veel hoor schaam je niet
    * wobbel phpt er lekker op los nu


    Vergeet je PHPMyAdmin trouwens niet te updaten!! Zit groot security leak in!

    [ Bericht 5% gewijzigd door wobbel op 10-12-2005 21:45:21 ]
    SuperRembozaterdag 10 december 2005 @ 22:46
    quote:
    Op zaterdag 10 december 2005 20:43 schreef SkaterSam het volgende:
    Grmmbblll, op een of andere manier krijg ik nooit errors te zien, maar telkens een standaard blanke pagina, maar dat terzijde...
    Heb je wel display_errors = On staan in php.ini?
    Swetseneggerzaterdag 10 december 2005 @ 22:53
    quote:
    Op zaterdag 10 december 2005 22:46 schreef SuperRembo het volgende:

    [..]

    Heb je wel display_errors = On staan in php.ini?
    Ik heb tijdens ontwikkeling altijd error_reporting(E_ALL); aanstaan, maar als ik een curly bracket vergeet krijg ik ook een lege page te zien en geen foutmelding
    SkaterSamzaterdag 10 december 2005 @ 22:54
    quote:
    Op zaterdag 10 december 2005 22:53 schreef Swetsenegger het volgende:

    [..]

    Ik heb tijdens ontwikkeling altijd error_reporting(E_ALL); aanstaan, maar als ik een curly bracket vergeet krijg ik ook een lege page te zien en geen foutmelding
    Jup, dat heb ik dus ook ja, dus moet ik altijd de fouten uit de error.log lezen, verder niet zo'n probleem, wel een beetje onhandig
    the_disheaverzaterdag 10 december 2005 @ 22:55
    quote:
    Op zaterdag 10 december 2005 22:46 schreef SuperRembo het volgende:

    [..]

    Heb je wel display_errors = On staan in php.ini?
    Dank, ik niet
    mscholzaterdag 10 december 2005 @ 23:10
    quote:
    Op zaterdag 10 december 2005 22:54 schreef SkaterSam het volgende:

    [..]

    Jup, dat heb ik dus ook ja, dus moet ik altijd de fouten uit de error.log lezen, verder niet zo'n probleem, wel een beetje onhandig
    weet iemand een leuke windows apache log file parser?
    zou ik wel handig vinden..
    wobbelzondag 11 december 2005 @ 16:21
    Ok, komt ie dan...ik ben bezig met een Forum en het is circa 1½ jaar geleden dat ik met joins ofzo heb gewerkt in een query. Dat ik dus gegevens uit 2 tabellen haal dmv 1 query.

    Wat is het doel? Ik wil informatie uit 2 tabellen ophalen. Ik heb nu de tabel ForumTopics,waarmee ik een loop maak om alle topics uit te poepen. Opzich werkt dat prima. Nu heb ik ook een tabel genaamd ForumMessages met alle berichten (ook het eerste bericht). Nu wil ik dus de datum van het laatste geplaatste bericht uit ForumMessages weergeven in de loop van ForumTopics. Dus achter elke topic wanneer er voor het laatst gereageerd is.
    Ook wil ik het aantal records uit ForumMessages weten bij het bijbehorende IdTopic uit de loop.

    M'n algemene vraag is dus: Kan dit met minder query's? (alleen als het sneller is)
    Wat heb ik nu? Ik heb het nu dmv 3 aparte query's. Lekker brak dus.
    Zie mijn code hieronder:

    http://194.126.173.14/~xostnl/tccl/fokcode.phps
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    <?php
    php
    session_start
    ();
    /* Load main library Files */
    require_once                                    ("lib/htconfig.php");
    require_once(                                    
    $GLOBALS['SITE']['LibPath'] . "/main.php");

    if(!
    $_GET['sid'])
    {

        
    $error-&gt;Report                                ("Er is geen (sub)forum ID meegegeven. Bewerking is afgebroken.");

    }
    else
    {

        
    $MySQL_Fora_Select                            = "SELECT IdForumSubCat, ForumCatId, Titel FROM ForumSubCat WHERE IdForumSubCat = '" . addslashes($_GET['sid']) . "' LIMIT 1";
        
    $MySQL_Fora_Query                            = mysql_query($MySQL_Fora_Select) or die($error-&gt;ReportMysqlError(__FILE__, $MySQL_Fora_Select ,__LINE__));
        
    $MySQL_Fora_Numrow                            = mysql_num_rows($MySQL_Fora_Query);
        
        if(
    $MySQL_Fora_Numrow &gt;= 1)
        {
        
            
    ## Select the main forum Titel and Image
            
    $MySQL_Fora_Assoc                        = mysql_fetch_assoc($MySQL_Fora_Query);

            
    $MySQL_Forum_Select                        = "SELECT IdForumCat, Titel, TitelImage FROM ForumCat WHERE IdForumCat = '" . addslashes($MySQL_Fora_Assoc['ForumCatId']) . "' LIMIT 1";
            
    $MySQL_Forum_Query                        = mysql_query($MySQL_Forum_Select) or die(mysql_error());
            
    $MySQL_Forum_Assoc                        = mysql_fetch_assoc($MySQL_Forum_Query);
            
            
    $tml-&gt;RegisterVar                        ("CONTENTTOP", $MySQL_Forum_Assoc['TitelImage']);
            
    $tml-&gt;RegisterVar                        ("FORUMTITLE", $MySQL_Forum_Assoc['Titel']);
            
    $tml-&gt;RegisterVar                        ("SUBFORUMTITLE", $MySQL_Fora_Assoc['Titel']);
            
    ##
        
            
    $MySQL_Topic_Select                        = "SELECT IdTopic, UserId, Titel, Type FROM ForumTopics WHERE SubCatId = '" . addslashes($_GET['sid']) . "' ORDER BY Date DESC";
            
    $MySQL_Topic_Query                        = mysql_query($MySQL_Topic_Select) or die(mysql_error());
            
    $MySQL_Topic_Numrow                        = mysql_num_rows($MySQL_Topic_Query);
                    
            while(
    $Topic = mysql_fetch_assoc($MySQL_Topic_Query))
            {                
                
                
    $MySQL_Message_Select                = "SELECT TopicId, Datum FROM ForumMessages WHERE TopicId = '" . $Topic['IdTopic'] . "' ORDER BY Datum DESC LIMIT 1";
                
    $MySQL_Message_Query                = mysql_query($MySQL_Message_Select) or die(mysql_error() . " op regel: " . __LINE__ . "<br />De betreffende query:" . $MySQL_Message_Select);
                
    $MySQL_Message_Assoc                = mysql_fetch_assoc($MySQL_Message_Query);            
                
    $LastPostInTopic                    = $MySQL_Message_Assoc['Datum'];
                
                
    $MySQL_Reacties_Select                = "SELECT COUNT(IdMessage) FROM ForumMessages WHERE TopicId = '" . $Topic['IdTopic'] . "'";
                
    $MySQL_Reacties_Query                = mysql_query($MySQL_Reacties_Select);
                
    $MySQL_Reacties_Result                = mysql_result($MySQL_Reacties_Query, 0);
                            
                
    $LoopData         = array    (
                
                                                    
    "TITLE"                =&gt; $Topic['Titel'],
                                                    
    "IDTOPIC"            =&gt; $Topic['IdTopic'],
                                                    
    "USERID"            =&gt; $main-&gt;User_Name($Topic['UserId'], 1),
                                                    
    "REACTIES"            =&gt; $MySQL_Reacties_Result,
                                                    
    "LASTPOST"            =&gt; date("d-m-Y H:i:s", $LastPostInTopic),
                                                                        
                                        );
            
                
                
    $i++;
                
                
    /* Registreren van een Loop */
                
    $tml-&gt;RegisterLoop("TOPIC",$i,$LoopData);
                    
            }
        
            
    /* Load Header file */
            
    $tml-&gt;LoadFromFile                        ("pages/overall_header");
            
    $tml-&gt;Parse();
            
            
    /* Load Page Content */
            
    $tml-&gt;LoadFromFile                        ("pages/forum_subcat");
            
    $tml-&gt;Parse();
            
            
    /* Load Footer file */
            
    $tml-&gt;LoadFromFile                        ("pages/overall_footer");
            
    $tml-&gt;Parse();
            
            
    /* Output Pages */
            
    $tml-&gt;Output();
            
        }
        else
        {
        
            
    $error-&gt;Report                            ("Het (sub)forum dat je probeert op te vragen is niet gevonden.");
        
        }
        
    }
    ?>
    Swetseneggerzondag 11 december 2005 @ 20:15
    Korte vraag,

    zoals jullie weten ben ik met een webshop bezig.
    Het winkelwagentje is een array, waarbij de key het produkt ID is en de value het aantal.

    Nu moet ik deze gegevens op gaan slaan in de db. Zal ik simpelweg de array opslaan in een kolom? Het lijkt me een beetje 'vreemde' oplossing eigenlijk, maar aan de andere kant lijkt het me niet handig wanneer ik elk produkt van de bestelling afzonderlijk in een kolom of rij op ga slaan en vervolgens nog iets van een koppeltable moet maken voor de aantallen.
    existenzzondag 11 december 2005 @ 20:33
    quote:
    Op zondag 11 december 2005 20:15 schreef Swetsenegger het volgende:
    Korte vraag,

    zoals jullie weten ben ik met een webshop bezig.
    Het winkelwagentje is een array, waarbij de key het produkt ID is en de value het aantal.

    Nu moet ik deze gegevens op gaan slaan in de db. Zal ik simpelweg de array opslaan in een kolom? Het lijkt me een beetje 'vreemde' oplossing eigenlijk, maar aan de andere kant lijkt het me niet handig wanneer ik elk produkt van de bestelling afzonderlijk in een kolom of rij op ga slaan en vervolgens nog iets van een koppeltable moet maken voor de aantallen.
    Dat laatste is dus wel de juiste manier, het gaat hier niet om "handig", want misschien gaat het opslaan zo wel sneller, maar het ophalen wel 10x zo traag!
    JeRazondag 11 december 2005 @ 20:34
    quote:
    Op zondag 11 december 2005 20:15 schreef Swetsenegger het volgende:
    Korte vraag,

    zoals jullie weten ben ik met een webshop bezig.
    Het winkelwagentje is een array, waarbij de key het produkt ID is en de value het aantal.

    Nu moet ik deze gegevens op gaan slaan in de db. Zal ik simpelweg de array opslaan in een kolom? Het lijkt me een beetje 'vreemde' oplossing eigenlijk, maar aan de andere kant lijkt het me niet handig wanneer ik elk produkt van de bestelling afzonderlijk in een kolom of rij op ga slaan en vervolgens nog iets van een koppeltable moet maken voor de aantallen.
    Je hebt alleen een tabel nodig (inhoud van de winkelwagen) die de gebruiker koppelt aan de gekozen producten en het aantal dat daarbij hoort. Oftwel, een userid, productid en number (aantal producten).

    Mocht je het toch als array willen opslaan, dan kan dat het makkelijkst via serialize()
    Swetseneggerzondag 11 december 2005 @ 20:34
    quote:
    Op zondag 11 december 2005 20:33 schreef existenz het volgende:

    [..]

    Dat laatste is dus wel de juiste manier, het gaat hier niet om "handig", want misschien gaat het opslaan zo wel sneller, maar het ophalen wel 10x zo traag!
    Hoezo?
    Een array uit een kolom trekken kost geen zeeen van tijd dacht ik zo
    Swetseneggerzondag 11 december 2005 @ 20:34
    quote:
    Op zondag 11 december 2005 20:34 schreef JeRa het volgende:

    [..]

    Je hebt alleen een tabel nodig (inhoud van de winkelwagen) die de gebruiker koppelt aan de gekozen producten en het aantal dat daarbij hoort. Oftwel, een userid, productid en number (aantal producten).

    Mocht je het toch als array willen opslaan, dan kan dat het makkelijkst via serialize()
    De tabel moet dan wel userid, product id, order id en number worden.
    Anders weet ik nooit welke rij bij welke bestelling hoort en een klant kan meerdere bestellingen plaatsen.

    Hmz, zit ik weer met het ophogen van order_id. Of ik moet me in 'unique' mbt mysql gaan verdiepen. *zucht*.
    JeRazondag 11 december 2005 @ 20:44
    quote:
    Op zondag 11 december 2005 20:34 schreef Swetsenegger het volgende:

    [..]

    De tabel moet dan wel userid, product id, order id en number worden.
    Anders weet ik nooit welke rij bij welke bestelling hoort en een klant kan meerdere bestellingen plaatsen.

    Hmz, zit ik weer met het ophogen van order_id. Of ik moet me in 'unique' mbt mysql gaan verdiepen. *zucht*.
    Ophogen van order_id?

    Als een klant een nieuwe bestelling doet maak je (neem ik aan) een nieuwe entry in de tabel met orders. De id van die tabel is dan toch gewoon AUTO_INCREMENT? Vervolgens plaats je in de tabel met de inhoud van een bestelling de id van die bestelling
    Swetseneggerzondag 11 december 2005 @ 21:06
    quote:
    Op zondag 11 december 2005 20:44 schreef JeRa het volgende:

    [..]

    Ophogen van order_id?

    Als een klant een nieuwe bestelling doet maak je (neem ik aan) een nieuwe entry in de tabel met orders. De id van die tabel is dan toch gewoon AUTO_INCREMENT? Vervolgens plaats je in de tabel met de inhoud van een bestelling de id van die bestelling
    Je geeft als voorbeeld een tabel met de volgende kolommen:

    user_id (de klant welke de bestelling doet)
    product_id (het bestelde product)
    number (het aantal van het bestelde product)

    Dit betekent dus voor ELK product een rij en een verhoogd id van deze tabel, laten we die voor het gemak order_table_id noemen

    Maar een klant kan toch meerdere produkten bestellen in 1 keer. En een klant kan een maand later weer produkten bestellen, zelfs dezelfde als een maand geleden.

    Dus ik moet een kolom toevoegen met order_id. En elke keer als een klant een bestelling doet, moet ik dat order_id genereren en bij elk besteld product in de order tabel schrijven toch...

    1
    2
    3
    4
    5
    order_table_id     user_id     order_id     product_id     number
    1                  1           1            1              2
    2                  1           1            4              1
    3                  2           2            3              1
    4                  1           3            1              1


    In dit voorbeeld is 1 en 2 één bestelling van 1 klant
    3 is een bestelling van een andere klant
    4 is wederom een bestelling van klant 1, maar WEL een nieuwe, bv een maand later.

    Bij elke klant welke een bestlling doet, moet ik dus een unieke order_id hebben welke niet gewoon auto increment kan zijn in dit voorbeeld.

    -edit- Ow wacht ff, jij bedoeld dat order_id in dit geval uit een tabel orders komt en dat bovenstaande tabel order inhoud is.

    [ Bericht 2% gewijzigd door Swetsenegger op 11-12-2005 21:18:47 ]
    JeRazondag 11 december 2005 @ 21:18
    Ik snap niet welk probleem je hebt

    Je hebt een tabel users met daarin de klantennummers. FK = userid.
    Je hebt een tabel orders met daarin de bestellingen. FK = orderid.
    Je hebt een tabel products met daarin de producten. FK = productid
    Je hebt een tabel winkelwagen (ofzo) met daarin de koppeling van bovenstaande drie tabellen én het aantal producten. Die ziet er dan toch als volgt uit?

    id --> unieke verwijzing naar een bestelling in een winkelwagen (AUTO_INCREMENT PRIMARY KEY)
    userid --> verwijzing naar klant (mag ook vaker voorkomen)
    orderid --> verwijzing naar order. De 'id'-kolom van de tabel 'orders' is AUTO_INCREMENT
    productid --> verwijzing naar het product
    number --> aantal producten dat gewenst is

    Wat is het probleem hiermee?
    Swetseneggerzondag 11 december 2005 @ 21:20
    quote:
    Op zondag 11 december 2005 21:18 schreef JeRa het volgende:
    Ik snap niet welk probleem je hebt

    Je hebt een tabel users met daarin de klantennummers. FK = userid.
    Je hebt een tabel orders met daarin de bestellingen. FK = orderid.
    Je hebt een tabel products met daarin de producten. FK = productid
    Je hebt een tabel winkelwagen (ofzo) met daarin de koppeling van bovenstaande drie tabellen én het aantal producten. Die ziet er dan toch als volgt uit?

    id --> unieke verwijzing naar een bestelling in een winkelwagen (AUTO_INCREMENT PRIMARY KEY)
    userid --> verwijzing naar klant (mag ook vaker voorkomen)
    orderid --> verwijzing naar order. De 'id'-kolom van de tabel 'orders' is AUTO_INCREMENT
    productid --> verwijzing naar het product
    number --> aantal producten dat gewenst is

    Wat is het probleem hiermee?
    Zie de edit.
    Het ontging me even dat je een extra tabel bedoelde:
    orderid --> verwijzing naar order. De 'id'-kolom van de tabel 'orders' is AUTO_INCREMENT

    Ok, even pragmatisch. Klant pleurt van alles in zijn winkelwagen
    Gaat naar bestellen.
    Vult zijn klantgegevens in, die gaan in de user tabel.
    Ik zet zijn user_id in de order tabel.
    Ik zet user_id, order_id, product_id en number voor elk besteld product in de cart tabel.

    Als ik de history van een klant wil laten bekijken door de beheerder, toon ik de order tabel WHERE user_id == de gekozen user.

    Vervolgens kan ik op de order_id klikken om de specifieke bestelling in zijn geheel uit de cart tabel te trekken.
    JeRazondag 11 december 2005 @ 21:32
    Mja, dat gaat toch werken? sorry dat ik even niet duidelijk aangaf dat ik het over een nieuwe koppeltabel had
    Swetseneggerzondag 11 december 2005 @ 21:43
    quote:
    Op zondag 11 december 2005 21:32 schreef JeRa het volgende:
    Mja, dat gaat toch werken? sorry dat ik even niet duidelijk aangaf dat ik het over een nieuwe koppeltabel had
    Ja dat gaat perfect werken
    Ik moet nog wel even goed nadenken, want orders moeten nogwel via mail bevestigt worden dus in de order tabel komt nog een activation kolom.

    Indien niet geactiveerd moet ik dus wel de order EN de inhoud wissen.
    JeRazondag 11 december 2005 @ 21:49
    quote:
    Op zondag 11 december 2005 21:43 schreef Swetsenegger het volgende:

    [..]

    Ja dat gaat perfect werken
    Ik moet nog wel even goed nadenken, want orders moeten nogwel via mail bevestigt worden dus in de order tabel komt nog een activation kolom.
    Er komt natuurlijk nog veel meer bij kijken; ik noem even het tijdstip van aanmaken of het IP-adres van de klant. Maar dat is aan jou
    quote:
    Indien niet geactiveerd moet ik dus wel de order EN de inhoud wissen.
    Dat kan met één DELETE door te joinen of meerdere DELETEs die je binnen een LOCK TABLES / UNLOCK TABLES zet.
    Swetseneggerzondag 11 december 2005 @ 21:56
    quote:
    Op zondag 11 december 2005 21:49 schreef JeRa het volgende:

    [..]

    Er komt natuurlijk nog veel meer bij kijken; ik noem even het tijdstip van aanmaken of het IP-adres van de klant. Maar dat is aan jou
    Ja, dat heb ik allemaal op een rijtje ivm tweedehandsboek, waarbij gebruikers ook hun aanmelding moeten bevestigen. Er moet dus ook een datum/tijd in de order tabel
    quote:
    Dat kan met één DELETE door te joinen of meerdere DELETEs die je binnen een LOCK TABLES / UNLOCK TABLES zet.
    Bedankt voor de tip, daar ga ik mee stoeien.

    Andere vraag.
    Klanten stoppen het een en ander in de winkelwagen en gaan bestellen. Indien ze al eerder besteld hebben kunnen ze vervolgens inloggen zodat de voorgaande gegevens direkt bekend zijn. Indien het een nieuwe klant is, moet deze z'n NAW gegevens invullen.

    Nu wil ik op deze NAW gegevens pagina nadat een en ander succesvol is ingevuld en naar db is geschreven de klant direkt automatisch inloggen. Maar vanuit PHP Kan ik volgens mij niet automatisch de juiste gegevens (inlognaam en wachtwoord welke bij aanmelden is opgegeven) POSTen naar inlog.php. Uiteraard kan het wel met GET, maar dat lijkt me niet zo veilig
    JeRazondag 11 december 2005 @ 22:00
    quote:
    Op zondag 11 december 2005 21:56 schreef Swetsenegger het volgende:
    Nu wil ik op deze NAW gegevens pagina nadat een en ander succesvol is ingevuld en naar db is geschreven de klant direkt automatisch inloggen. Maar vanuit PHP Kan ik volgens mij niet automatisch de juiste gegevens (inlognaam en wachtwoord welke bij aanmelden is opgegeven) POSTen naar inlog.php. Uiteraard kan het wel met GET, maar dat lijkt me niet zo veilig
    Dat ligt aan je inlogsysteem. Stel, je hebt een sessie-variabele genaamd 'userid' waarvoor geldt dat als userid groter is dan 0 de user is ingelogd als klant nummer #userid. Dan kun je na het toevoegen van de NAW-gegevens in de usertabel de primary key ophalen (mysql_insertid) en die in je sessie-variabele zetten. Voila, user ingelogd
    Swetseneggerzondag 11 december 2005 @ 22:04
    quote:
    Op zondag 11 december 2005 22:00 schreef JeRa het volgende:

    [..]

    Dat ligt aan je inlogsysteem. Stel, je hebt een sessie-variabele genaamd 'userid' waarvoor geldt dat als userid groter is dan 0 de user is ingelogd als klant nummer #userid. Dan kun je na het toevoegen van de NAW-gegevens in de usertabel de primary key ophalen (mysql_insertid) en die in je sessie-variabele zetten. Voila, user ingelogd
    Maar dat is een klein risico als er meerdere gebruikers min of meer teglijk aanmelden. mysql_insertid kan dan hoger zijn dan degene welke ik voor deze klant bedoel toch?
    Of ik moet met lock table gaan werken natuurlijk.
    JeRazondag 11 december 2005 @ 22:05
    quote:
    Op zondag 11 december 2005 22:04 schreef Swetsenegger het volgende:

    [..]

    Maar dat is een klein risico als er meerdere gebruikers min of meer teglijk aanmelden. mysql_insertid kan dan hoger zijn dan degene welke ik voor deze klant bedoel toch?
    Of ik moet met lock table gaan werken natuurlijk.
    Nope, mysql_insert_id() geeft de waarde terug van de laatste INSERT-operatie van de huidige thread. Zolang je users niet weten hoe ze op de webserver threads moeten overnemen is dat vrij veilig

    Nu lees ik op die pagina ook dat je LAST_INSERT_ID kunt gebruiken dat is eigenlijk wel heel handig, gegeven dat dat ook de laatste insert id van de huidige thread is.

    edit: nee dus.
    quote:
    Note: The value of the MySQL SQL function LAST_INSERT_ID() always contains the most recently generated AUTO_INCREMENT value, and is not reset between queries.
    mysql_insert_id() it is dus
    Swetseneggerzondag 11 december 2005 @ 22:11
    quote:
    Op zondag 11 december 2005 22:05 schreef JeRa het volgende:

    [..]

    Nope, mysql_insert_id() geeft de waarde terug van de laatste INSERT-operatie van de huidige thread. Zolang je users niet weten hoe ze op de webserver threads moeten overnemen is dat vrij veilig

    Nu lees ik op die pagina ook dat je LAST_INSERT_ID kunt gebruiken dat is eigenlijk wel heel handig, gegeven dat dat ook de laatste insert id van de huidige thread is.

    edit: nee dus.
    [..]

    mysql_insert_id() it is dus
    Het verschil tussen beide ontging me even, maar ik lees dat last_insert_id niet gereset wordt tussen queries en dus niet thread gerelateerd is. Begrijp ik het zo goed?

    Maar ik kan dus save mysql_insert_id gebruiken direkt na de query welke de klantgegevens in de DB zet.
    JeRazondag 11 december 2005 @ 22:16
    quote:
    Op zondag 11 december 2005 22:11 schreef Swetsenegger het volgende:

    [..]

    Het verschil tussen beide ontging me even, maar ik lees dat last_insert_id niet gereset wordt tussen queries en dus niet thread gerelateerd is. Begrijp ik het zo goed?
    Klopt.
    quote:
    Maar ik kan dus save mysql_insert_id gebruiken direkt na de query welke de klantgegevens in de DB zet.
    Klopt ook.
    SuperRembozondag 11 december 2005 @ 22:30
    quote:
    Op zondag 11 december 2005 21:18 schreef JeRa het volgende:
    id --> unieke verwijzing naar een bestelling in een winkelwagen (AUTO_INCREMENT PRIMARY KEY)
    userid --> verwijzing naar klant (mag ook vaker voorkomen)
    orderid --> verwijzing naar order. De 'id'-kolom van de tabel 'orders' is AUTO_INCREMENT
    productid --> verwijzing naar het product
    number --> aantal producten dat gewenst is
    De combinatie orderid, productid is uniek, dus die kan je als PK gebruiken.
    Ik neem aan dat in de tabel met bestellingen bij een order een userid staat. Dan is de kolom userid in deze tabel overbodig.
    Swetseneggerzondag 11 december 2005 @ 22:33
    quote:
    Op zondag 11 december 2005 22:30 schreef SuperRembo het volgende:

    [..]

    De combinatie orderid, productid is uniek, dus die kan je als PK gebruiken.
    Ik neem aan dat in de tabel met bestellingen bij een order een userid staat. Dan is de kolom userid in deze tabel overbodig.
    PK?

    Ja ik had me inderdaad al bedacht dat user_id ook nog een keer in de inhoud tabel toevoegen ietwat overdreven is die moet bestaan uit inhoud_id, order_id, product_id en number
    JeRazondag 11 december 2005 @ 22:41
    quote:
    Op zondag 11 december 2005 22:30 schreef SuperRembo het volgende:

    [..]

    De combinatie orderid, productid is uniek, dus die kan je als PK gebruiken.
    Ik neem aan dat in de tabel met bestellingen bij een order een userid staat. Dan is de kolom userid in deze tabel overbodig.
    Klopt helemaal. Over die primary key, ikzelf vind het altijd handig om in elke tabel een unieke waarde te hebben die ik kan toekennen aan elke entry, vandaar ook als je nog een koppeling wilt leggen tussen een product uit een bestelling en iets anders is het handig als je niet met twee variabelen hoeft te klooien.
    Lightzondag 11 december 2005 @ 22:42
    quote:
    Op zondag 11 december 2005 22:33 schreef Swetsenegger het volgende:

    [..]

    PK?
    Primary Key.

    FK is Foreign Key.
    Swetseneggerzondag 11 december 2005 @ 23:20
    quote:
    Op zondag 11 december 2005 22:42 schreef Light het volgende:

    [..]

    Primary Key.

    FK is Foreign Key.
    Nav JeRa begreep ik 'm

    Simpele vraag,
    Wanneer ik een UPDATE query uitvoer met data welke gelijk is aan de huidige data, krijg je een sql error.

    Is die error eenvoudig op te vangen en te vervangen door een specifieke string?
    Lightzondag 11 december 2005 @ 23:22
    Huh? Wat voor query doe je dan?
    Swetseneggerzondag 11 december 2005 @ 23:26
    quote:
    Op zondag 11 december 2005 23:22 schreef Light het volgende:
    Huh? Wat voor query doe je dan?
    Ik niets , maar ik heb klantgegevens. En als klanten op edit drukken, vul ik de gegevens al voor ze in in het formulier. Maar als ze vervolgens op submit rammen zonder iets te veranderen, ga ik dus een UPDATE query draaien met dezelfde gegevens als de huidige. Dat geeft een sql error/notice.
    Lightzondag 11 december 2005 @ 23:30
    MySQL (phpmyadmin) geeft bij mij gewoon een melding dat er 0 rijen zijn aangepast. Geen foutmeldingen ofzo.
    JeRazondag 11 december 2005 @ 23:37
    Hier doet ie dat ook niet. Wat is de exacte error die je van MySQL krijgt?
    SuperRembozondag 11 december 2005 @ 23:43
    quote:
    Op zondag 11 december 2005 23:30 schreef Light het volgende:
    MySQL (phpmyadmin) geeft bij mij gewoon een melding dat er 0 rijen zijn aangepast. Geen foutmeldingen ofzo.
    Hmmmz. Dat is weer zo'n vaag iets van MySQL
    Als je dus 2x het statement "UPDATE MyTable SET name = 'Foo' WHERE id = 1" uitvoert, dat krijg je de eerste keer affected rows = 1, maar daarna affected rows = 0
    Lightzondag 11 december 2005 @ 23:46
    quote:
    Op zondag 11 december 2005 23:43 schreef SuperRembo het volgende:

    [..]

    Hmmmz. Dat is weer zo'n vaag iets van MySQL
    Als je dus 2x het statement "UPDATE MyTable SET name = 'Foo' WHERE id = 1" uitvoert, dat krijg je de eerste keer affected rows = 1, maar daarna affected rows = 0
    MySQL redeneert dat als er geen velden worden aangepast, dat er dan ook geen rijen worden aangepast. En het schijnt sneller te zijn om niet opnieuw te schrijven als de waarde voor en na de update gelijk is. Klinkt op zich ook nog wel logisch, ergens
    JeRazondag 11 december 2005 @ 23:48
    quote:
    Op zondag 11 december 2005 23:43 schreef SuperRembo het volgende:

    [..]

    Hmmmz. Dat is weer zo'n vaag iets van MySQL
    Als je dus 2x het statement "UPDATE MyTable SET name = 'Foo' WHERE id = 1" uitvoert, dat krijg je de eerste keer affected rows = 1, maar daarna affected rows = 0
    Het kost veel minder tijd om zo'n waarde niet weg te schrijven (indices hoeven dan ook niet bijgewerkt te worden, query/block cache kan blijven bestaan, etc). Echter zou het wel wat netter zijn als affected rows 1 teruggaf ja
    SuperRembozondag 11 december 2005 @ 23:54
    quote:
    Op zondag 11 december 2005 23:46 schreef Light het volgende:

    [..]

    MySQL redeneert dat als er geen velden worden aangepast, dat er dan ook geen rijen worden aangepast. En het schijnt sneller te zijn om niet opnieuw te schrijven als de waarde voor en na de update gelijk is. Klinkt op zich ook nog wel logisch, ergens
    Je moet dan wel eerst de oude en de nieuwe gegevens vergelijken, dat kost ook tijd.

    Het lijkt me geen standaard gedrag. Is dat is MySQL 5 ook zo?
    JeRamaandag 12 december 2005 @ 00:04
    quote:
    Op zondag 11 december 2005 23:54 schreef SuperRembo het volgende:

    [..]

    Je moet dan wel eerst de oude en de nieuwe gegevens vergelijken, dat kost ook tijd.

    Het lijkt me geen standaard gedrag. Is dat is MySQL 5 ook zo?
    Ja (heb het hier draaien). Weliswaar niet in de strict-modus, misschien dat dat wat uitmaakt?
    Roonaanmaandag 12 december 2005 @ 00:05
    Wie gebruikt er eik weleens bij sql "replace" ?
    Lightmaandag 12 december 2005 @ 00:08
    quote:
    Op maandag 12 december 2005 00:05 schreef Ro�a� het volgende:
    Wie gebruikt er eik weleens bij sql "replace" ?
    Ik. En eigenlijk moeten die herschreven worden, ze kunnen best zwaar worden voor de server (die het toch al niet makkelijk heeft). En nee, die queries gooi ik hier niet neer
    JeRamaandag 12 december 2005 @ 00:15
    quote:
    Op maandag 12 december 2005 00:05 schreef Ro�a� het volgende:
    Wie gebruikt er eik weleens bij sql "replace" ?
    Ik niet. Maar even gelezen in de documentation, dan worden alle dubbele rijen gedelete en opnieuw geinsert met een nieuwe primary key. Dat moet je niet te vaak doen op een grote tabel
    Lightmaandag 12 december 2005 @ 00:30
    quote:
    Op maandag 12 december 2005 00:15 schreef JeRa het volgende:

    [..]

    Ik niet. Maar even gelezen in de documentation, dan worden alle dubbele rijen gedelete en opnieuw geinsert met een nieuwe primary key. Dat moet je niet te vaak doen op een grote tabel
    replace into mytable (id, name) values (1, "test")
    Dat levert een 1 affected row op als je nog geen rij hebt met id=1, en anders 2. Ik ga er dan dus wel even vanuit dat id de PK is.
    Desdinovamaandag 12 december 2005 @ 12:58
    af en toe laat ik het een en ander uit een database echoen in een tabel. komt ook best vaak voor dat ik die tabel maar 3 td's breed wil, en de volgende 3 in een rij daaronder komen, de drie daarna weer daaronder etc.

    dit vang ik momenteel op door php te laten tellen. per while doet hij $nr + 1;, waardoor er bij de 3e een waarde van 3 komt en de rij wordt afgebroken door een ander te laten echoen en een nieuwe wordt begonnen. daarna wordt $nr weer teruggezet op 0 zodat de riedel weer van voor af aan begint.

    is dit niet wat makkelijker en netter af te vangen?
    Roonaanmaandag 12 december 2005 @ 13:07
    Zijn de cellen allemaal even hoog?
    Desdinovamaandag 12 december 2005 @ 13:10
    mja zijn wel even hoog.

    ik zit net te denken aan een float.. als ik ze allemaal een float left meegeef, en ze per stuk in een div zet ofzo met aangegeven waardes, heb ik waarschijnlijk de hele tabel niet nodig. misschien een omringende tabel of div om de totale breedte aan te geven. eensch?
    Roonaanmaandag 12 december 2005 @ 13:10
    Jups, daar zat ik ook aan te denken idd.
    HuHumaandag 12 december 2005 @ 15:43
    Vraagje:

    ik heb een site waarop mensen dingen kunnen kopen (soort webwinkel) en mensen kunnen betalen via CreditCard of eenmalige incasso. De betalingen worden geregeld via een Payment Service Provider, dus daar heb ik geen zorgen om.

    Maar ik moet de gegevens van de bestelling naar de PSP toe sturen. Als voorbeeld geven zij een HTML pagina met daarin een FORM waarin bedrag, ordernummer, enzovoorts staan. Alles wordt vervolgens gepostnaar een HTTPS geval.

    Ik wil nu vanuit een PHP bestand ook die POST kunnen uitvoeren. Dus dat ik de headers naar mijn PSP stuur. Ik had zelf het volgende gemaakt gejat:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php
    $url
    = "https://[psp]/[psp].php";
    $host = substr($url, 0, strpos($url, "/"));
    $uri = strstr($url, "/");
    $reqbody = "";
          foreach(
    $data as $key=&gt;$val) {
              if (!empty(
    $reqbody)) $reqbody.= "&";
          
    $reqbody.= $key."=".urlencode($val);
          }
    $contentlength = strlen($reqbody);
    $reqheader =  "Location: $url\r\n".
        
    "POST $uri HTTPS/1.1\r\n".
        
    "Host: ssl://$host\n". "User-Agent: PostIt\r\n".
        
    "Content-Type: application/x-www-form-urlencoded\r\n".
        
    "Content-Length: $contentlength\r\n\r\n".
        
    "$reqbody\r\n";
    header($reqheader);
    ?>


    Maar dit werkt niet helemaal goed, want de data is niet SSL versleuteld enzo. Dus m'n PSP accepteerd het niet. Nu las ik ergens dat je ook gebruik kon maken van cURL, maar ik heb geen flauw idee hoe ik dat kan doen. Kan iemand daarmee helpen?

    [ Bericht 11% gewijzigd door HuHu op 12-12-2005 15:54:23 ]
    Swetseneggermaandag 12 december 2005 @ 18:46
    Heeft je PSP geen kant en klaar php script dan?
    HuHumaandag 12 december 2005 @ 18:56
    quote:
    Op maandag 12 december 2005 18:46 schreef Swetsenegger het volgende:
    Heeft je PSP geen kant en klaar php script dan?
    Helaas niet en de support afdeling was vandaag niet aanwezig. Maar ik ga zeker contact met ze opnemen om dit te overleggen. Het enige kant-en-klare 'script' wat ze aanboden was een HTML pagina. En dat is niet echt zo netjes, als je gebruikers eerst op een lege pagina komen alwaar ze een knop moeten indrukken. Ik wil ze gewoon direct doorverwijzen naar de PSP. Het is dan ook niet mogelijk voor de wat slimmere mensen om bijvoorbeeld het bedrag aan te passen.
    Swetseneggermaandag 12 december 2005 @ 19:02
    Maar je hebt die HTML page toch? Wat staat daar in dan?
    Swetseneggermaandag 12 december 2005 @ 19:10
    quote:
    Op zondag 11 december 2005 23:30 schreef Light het volgende:
    MySQL (phpmyadmin) geeft bij mij gewoon een melding dat er 0 rijen zijn aangepast. Geen foutmeldingen ofzo.

    Als je checked op effected_rows==1 krijg je een melding terug...

    Mijn fout.
    HuHumaandag 12 december 2005 @ 19:14
    In die HTML page staan alle benodigde variabelen (ordernummer, bedrag, enzovoorts) als hidden FORM fields. En die worden, zodra je op de knop drukt, gepost naar een https server waar vervolgens de betaling wordt afgehandeld en de gebruiker z'n creditcard gegevens invuld.

    Het gaat nu dus zo:
    Gebruiker kiest product en vult ons bestelformulier in.
    Mijn PHP script met database handelingen en bevestigingmailtjes
    Scherm met: druk op de knop om te betalen
    Betalen bij de PSP

    Maar ik wil dat nutteloze tussenscherm eruit hebben door de variabelen die daarin staan direct vanuit mijn PHP script naar de server van de PSP te posten. Maar dat moet via SSL, en ik weet niet hoe dat moet.
    Swetseneggermaandag 12 december 2005 @ 19:28
    quote:
    Op maandag 12 december 2005 19:14 schreef HuHu het volgende:
    In die HTML page staan alle benodigde variabelen (ordernummer, bedrag, enzovoorts) als hidden FORM fields. En die worden, zodra je op de knop drukt, gepost naar een https server waar vervolgens de betaling wordt afgehandeld en de gebruiker z'n creditcard gegevens invuld.

    Het gaat nu dus zo:
    Gebruiker kiest product en vult ons bestelformulier in.
    Mijn PHP script met database handelingen en bevestigingmailtjes
    Scherm met: druk op de knop om te betalen
    Betalen bij de PSP

    Maar ik wil dat nutteloze tussenscherm eruit hebben door de variabelen die daarin staan direct vanuit mijn PHP script naar de server van de PSP te posten. Maar dat moet via SSL, en ik weet niet hoe dat moet.
    Nu post dat HTML scherm toch naar de PSP? Dan moet er in die HTML file toch aan de submit knop een CGI of ander soortig script hangen welke die verbinding opzet.
    Je kan in je PHP form toch gewoon dezelfde action gebruiken als nu in dat HTML form?
    HuHumaandag 12 december 2005 @ 19:38
    quote:
    Op maandag 12 december 2005 19:28 schreef Swetsenegger het volgende:

    [..]

    Nu post dat HTML scherm toch naar de PSP? Dan moet er in die HTML file toch aan de submit knop een CGI of ander soortig script hangen welke die verbinding opzet.
    Je kan in je PHP form toch gewoon dezelfde action gebruiken als nu in dat HTML form?
    Dit is de FORM actie:

    1<form method="post" action="https://multipay.net/transaction/mpmain.php">


    Hij post dus naar een beveiligde server. Nu wil ik met PHP naar die beveiligde server posten. Maar hoe versleutel ik mijn variabelen en dergelijke, zodat de server ze accepteerd.
    Swetseneggermaandag 12 december 2005 @ 20:08
    quote:
    Op maandag 12 december 2005 19:38 schreef HuHu het volgende:

    [..]

    Dit is de FORM actie:
    [ code verwijderd ]

    Hij post dus naar een beveiligde server. Nu wil ik met PHP naar die beveiligde server posten. Maar hoe versleutel ik mijn variabelen en dergelijke, zodat de server ze accepteerd.
    Hoe versleutelt die HTML ze?
    Ik bedoel er veranderd toch niets? Die html POST toch dezelfde data als wanneer je php script het POST?
    SuperRembomaandag 12 december 2005 @ 20:12
    Op php.net staat een voorbeeld van een post request naar een https server met behulp van een socket.
    DutchBloodmaandag 12 december 2005 @ 21:25
    quote:
    Op maandag 12 december 2005 19:38 schreef HuHu het volgende:

    [..]

    Dit is de FORM actie:
    [ code verwijderd ]

    Hij post dus naar een beveiligde server. Nu wil ik met PHP naar die beveiligde server posten. Maar hoe versleutel ik mijn variabelen en dergelijke, zodat de server ze accepteerd.
    Wil je het per se via php doen dan? Dus niet via een html form aan de client zijde waarin je die variabele echo't?
    SkaterSamdinsdag 13 december 2005 @ 19:37
    Hmmm, wat is de beste manier om meerdere DELETES uit te voeren op de DB, ik heb nu het volgende:
    1
    2
    3
    4
    5
    6
    7
    <?php
    foreach($_POST['cat'] as $a) {
            
    $db-&gt;query("DELETE FROM nieuws_categorie WHERE nieuws_categorie_id='$a'");
            }
            
            
    $db-&gt;closedb();
    ?>

    De rijen die moeten worden verwijderd worden geselecteerd met een checkbox, die er zo uit ziet:
    1<input type="checkbox" name="cat[]" value="<?php echo $table['nieuws_categorie_id'] ?>" />

    Maar volgens mij is mijn code niet erg efficient, aangezien die 3 queries zal uitvoeren, is er een makkelijkere manier?
    SuperRembodinsdag 13 december 2005 @ 19:47
    Je kan meerdere records tegelijk verwijderen in 1 sql statement met:

    1DELETE FROM myTable WHERE id IN (1, 2, 3)

    Hoe je die string samenstelt mag je zelf uitzoeken
    Vergeet niet om de invoer van de gebruiker te controleren.
    Chandlerdinsdag 13 december 2005 @ 20:27
    idd zo doe ik het ook altijd, trouwens het combineren van een array kan dmv implode (heb ik van roonaan geleerd ofzo )
    SkaterSamdinsdag 13 december 2005 @ 20:32
    Ik zal eens kijken naar implode(), ondertussen heb ik weer van alles verzonnen , zoals het volgende, alleen werkt dat natuurlijk niet

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    $remove
    = $_POST['cat'];
        
    $db_query = "DELETE FROM nieuws_categorie WHERE nieuws_categorie_id IN (";
        
    for(
    $i = 0; $i &lt; count($remove); $i++) {
        
    $db_query .=  substr("'" . $remove[$i] . "',", 0, -1) . ")";
    }
            
    $db-&gt;query($db_query);
    ?>
    DionysuZdinsdag 13 december 2005 @ 20:41
    werkt IN (bla,bla,ba) ook bij MySQL dan? heb er veel problemen mee gehad.
    JeRadinsdag 13 december 2005 @ 20:50
    quote:
    Op dinsdag 13 december 2005 20:41 schreef DionysuZ het volgende:
    werkt IN (bla,bla,ba) ook bij MySQL dan? heb er veel problemen mee gehad.
    Heb die constructie al een behoorlijke tijd gebruikt zonder enige problemen lijkt me van wel dus. Weet iemand of die operatie atomic is?
    SkaterSamdinsdag 13 december 2005 @ 20:50
    Dit werkt voor mij nu

    1
    2
    3
    4
    5
    6
    <?php
    $remove
    = $_POST['cat'];
    $remove = implode(',',$remove);
            
    $db-&gt;query("DELETE FROM nieuws_categorie WHERE nieuws_categorie_id IN (" . $remove . ")");
    ?>

    Dank voor de hints
    SuperRembodinsdag 13 december 2005 @ 20:57
    quote:
    Op dinsdag 13 december 2005 19:47 schreef SuperRembo het volgende:
    Vergeet niet om de invoer van de gebruiker te controleren.
    SkaterSamdinsdag 13 december 2005 @ 21:16
    quote:
    Op dinsdag 13 december 2005 19:47 schreef SuperRembo het volgende:
    Vergeet niet om de invoer van de gebruiker te controleren.
    Ik zal het niet vergeten

    Er wordt al gekeken of de waarden in de array nummers zijn via is_numeric(), en straks nog even een mysql_real_escape_string() er over heen.

    Zo goed ?
    JeRadinsdag 13 december 2005 @ 21:22
    quote:
    Op dinsdag 13 december 2005 21:16 schreef SkaterSam het volgende:

    [..]

    Ik zal het niet vergeten

    Er wordt al gekeken of de waarden in de array nummers zijn via is_numeric(), en straks nog even een mysql_real_escape_string() er over heen.

    Zo goed ?
    Een mysql_real_escape_string() heb je nodig als je een waarde in een string gaat zetten in de query. Nu werk je met integers, en is het minste wat je moet doen checken of het daadwerkelijk een getal is (en dat eventueel zo maken met intval() of strval()) en of het in de gewenste range ligt.
    SkaterSamdinsdag 13 december 2005 @ 21:37
    quote:
    Op dinsdag 13 december 2005 21:22 schreef JeRa het volgende:

    [..]

    Een mysql_real_escape_string() heb je nodig als je een waarde in een string gaat zetten in de query. Nu werk je met integers, en is het minste wat je moet doen checken of het daadwerkelijk een getal is (en dat eventueel zo maken met intval() of strval()) en of het in de gewenste range ligt.
    Haha, weer wat geleerd in ieder geval, dan heb ik dus nu met mijn

    1
    2
    3
    4
    5
    6
    7
    <?php
    if (is_numeric(array_sum($_POST['cat']))) {
    // voer code uit
    } else {
    // stout!!!
    }
    ?>


    genoeg gecontroleerd? En wat is dan een range? Het zijn gewoon allemaal ID's die ik bij elkaar optel. Ik Google wel even wat een "range" inhoudt.
    Lightdinsdag 13 december 2005 @ 22:01
    quote:
    Op dinsdag 13 december 2005 21:37 schreef SkaterSam het volgende:

    [..]

    Haha, weer wat geleerd in ieder geval, dan heb ik dus nu met mijn
    [ code verwijderd ]

    genoeg gecontroleerd? En wat is dan een range? Het zijn gewoon allemaal ID's die ik bij elkaar optel. Ik Google wel even wat een "range" inhoudt.
    Nee. Het feit dat array_sum een getal oplevert zegt niets over de afzonderlijke elementen van de array. Het kunnen nog steeds allemaal strings zijn, die worden bij rekenkundige bewerkingen naar de waarde nul omgezet.

    1
    2
    3
    <?php
    echo array_sum(array(2,5,'a','zes'));
    ?>

    Dit levert 7 op.

    Nog leuker, de uitkomst van array_sum is per definitie numeriek.
    SkaterSamdinsdag 13 december 2005 @ 22:54
    Ik heb het zo opgelost, maar na de eerste twee posts zal ik niet meer beweren dat dit de juiste code is

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php
    $remove
    = $_POST['cat'];
    $b = array();
        
    foreach(
    $remove as $a) {
        if(!
    is_numeric($a)) {
            
    $a = '';
        } else {
            
    $b[] = $a;
        }
    }
        
    //Maak een verbinding met DB
            
    $b = implode(',',$b);
            
    $db-&gt;query("DELETE FROM nieuws_categorie WHERE nieuws_categorie_id IN (" . $b . ")");
    ?>

    Ik heb nog even gekeken naar in_array(), maar ik begreep niet hoe je de needle kon definieren als een niet-nummer... Zo werkt het ook in ieder geval

    -edit: dit is mijn uiteindelijke code (23.46)

    [ Bericht 13% gewijzigd door SkaterSam op 13-12-2005 23:46:27 ]
    Chandlerdinsdag 13 december 2005 @ 23:00
    quote:
    Op dinsdag 13 december 2005 20:50 schreef JeRa het volgende:

    [..]

    Heb die constructie al een behoorlijke tijd gebruikt zonder enige problemen lijkt me van wel dus. Weet iemand of die operatie atomic is?
    wat bedoel je daar mee als ik vragen mag?
    JeRadinsdag 13 december 2005 @ 23:16
    quote:
    Op dinsdag 13 december 2005 23:00 schreef Chandler het volgende:

    [..]

    wat bedoel je daar mee als ik vragen mag?
    Atomic komt van het idee van het 'kleinste deeltje', in dit geval het idee dat een operatie in één geheel kan worden uitgevoerd. Een INSERT is atomic, dit betekent dat men geen SELECT kan uitvoeren terwijl de INSERT halverwege is bijvoorbeeld. Ik vroeg me af of dit ook het geval is bij een DELETE waarbij je meerdere items verwijderd, aangezien een DELETE op één item normaal wel atomic is
    SuperRembodinsdag 13 december 2005 @ 23:42
    Dit statement update de kolom vieworder. 10 wordt 5, 5 t/m 9 worden 1 verhoogd.

    1
    2
    3
    UPDATE menu
    SET vieworder = CASE vieworder WHEN 10 THEN 5 ELSE vieworder + 1 END
    WHERE vieworder BETWEEN 5 AND 10

    Voor en na de update zijn de waarden in vieworder uniek. Als deze operatie atomic is, dan werkt deze update ook als er een unieke index op vieworder staat. Dat tijdens het updaten van de regels de vieworder niet uniek is maakt niet uit.

    Met MySQL 4 krijg je iets van een duplicate index foutmelding.
    cygnusxwoensdag 14 december 2005 @ 19:46
    Hoi,
    Ik ben een forum aan het bouwen. en ik wil nu het zo hebben dat je 10 posts per pagina ziet.
    Oftewel, als er meer dan 10 posts zijn moeten onderaan klikbare nummers verschijnen met het aantal pagina's. Ik zou hier vast wel een oplossing voor kunnen vinden, maar hoogstwaarschijnlijk is dat een heel omslachtige manier om dit te doen. Wie heeft er een efficientere manier voor me?

    (een ingekorte versie van mijn script)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    $posts = @mysql_query("SELECT * FROM ".$forum_prefix."posts WHERE tid=".$id);
    if(!@mysql_num_rows($posts)>0){
       home();
       return;
    }
    $titel = mysql_fetch_assoc($titel);
    ?>
    <h4><?php echo $titel['titel']; ?></h4>
    <?php while($data = mysql_fetch_assoc($posts)){?>

    <?php
    $smilies = array(':)', ':(', ':+', '_O_', '(Y)', ';)', ':{', ':P', ':p','(A)');
    $images = array('<img src="smilies/smile.gif">', '<img src="smilies/frown.gif">', '<img src="smilies/clown.gif">', '<img src="smilies/worshippy.gif">', '<img src="smilies/thumbsup.gif">', '<img src="smilies/wink.gif">', '<img src="smilies/nosmile.gif">', '<img src="smilies/puh2.gif">', '<img src="smilies/puh2.gif">', '<img src="smilies/hypocrite.gif">');
    $content = str_replace($smilies, $images, $data['content']);
    echo $content; ?><br><br>
    <?php }
    ?>
    DionysuZwoensdag 14 december 2005 @ 19:53
    een COUNT(id) voor het aantal posts (zodat je het aantal pagina's kunt berekenen) en een LIMIT x,10 voor je 10 posts (x staat dan voor pagina*10)
    SkaterSamwoensdag 14 december 2005 @ 20:03
    1. bereken het totaal aantal resultaten (bijv. mysql_num_rows() )
    2. definieer het maximum aantal resultaten per pagina (bijv. $pp = 10 )
    3. bereken het aantal pagina's dat je krijgt door het aantal resultaten te delen door het maximum en het op hele naar boven af te ronden
    4. creëer een offset (van welk nummer moeten de resultaten verder gaan op de volgende pagina (bijv. door de link show.php?page=3 en dan de offset berekenen door ($page - 1) * 10 te doen.)
    5. Deze offset in de query zetten bij LIMIT $offset, 10

    En die linkjes er onder kan je dan met allerlei if/else statements maken, bijvoorbeeld als er maar een pagina is zijn vorige en volgende geen links... Dit doe ik altijd in ieder geval
    DionysuZwoensdag 14 december 2005 @ 20:16
    quote:
    Op woensdag 14 december 2005 20:03 schreef SkaterSam het volgende:
    1. bereken het totaal aantal resultaten (bijv. mysql_num_rows() )
    2. definieer het maximum aantal resultaten per pagina (bijv. $pp = 10 )
    3. bereken het aantal pagina's dat je krijgt door het aantal resultaten te delen door het maximum en het op hele naar boven af te ronden
    4. creëer een offset (van welk nummer moeten de resultaten verder gaan op de volgende pagina (bijv. door de link show.php?page=3 en dan de offset berekenen door ($page - 1) * 10 te doen.)
    5. Deze offset in de query zetten bij LIMIT $offset, 10

    En die linkjes er onder kan je dan met allerlei if/else statements maken, bijvoorbeeld als er maar een pagina is zijn vorige en volgende geen links... Dit doe ik altijd in ieder geval
    Dit is een leuke. Bij een topic met 10.000 posts haal je ze dus allemaal op om het totaal te berekenen terwijl je er maar 10 wilt laten zien? Niet erg efficient.
    SkaterSamwoensdag 14 december 2005 @ 20:25
    quote:
    Op woensdag 14 december 2005 20:16 schreef DionysuZ het volgende:
    Dit is een leuke. Bij een topic met 10.000 posts haal je ze dus allemaal op om het totaal te berekenen terwijl je er maar 10 wilt laten zien? Niet erg efficient.
    Doe je SELECT count(*) as TOTAL FROM table LIMIT $offset,10 of zoiets? Zo bedoel je? Maar berekent die dan niet alleen maar degene die hij ophaalt (TOTAL zou dan 10 zijn) ? Enlighten me
    JeRawoensdag 14 december 2005 @ 20:26
    quote:
    Op woensdag 14 december 2005 20:25 schreef SkaterSam het volgende:

    [..]

    Doe je SELECT count(*) as TOTAL FROM table LIMIT $offset,10 of zoiets? Zo bedoel je? Maar berekent die dan niet alleen maar degene die hij ophaalt (TOTAL zou dan 10 zijn) ? Enlighten me
    Nee, je doet een aparte COUNT(*)-query zodat MySQL snel het aantal rows kan teruggeven en je het totaal aantal posts weet. Dit is snel omdat de MyISAM-tables een rowcounter bijhouden, bij InnoDB gaat dit niet zo gemakkelijk. Vervolgens kun je door een nieuwe query te LIMIT'en bepalen welke posts je precies ziet
    DionysuZwoensdag 14 december 2005 @ 20:28
    quote:
    Op woensdag 14 december 2005 20:25 schreef SkaterSam het volgende:

    [..]

    Doe je SELECT count(*) as TOTAL FROM table LIMIT $offset,10 of zoiets? Zo bedoel je? Maar berekent die dan niet alleen maar degene die hij ophaalt (TOTAL zou dan 10 zijn) ? Enlighten me
    Gewoon een SELECT count(*) as TOTAL FROM table.
    En daarna een SELECT * FROM table ORDER BY bla LIMIT bla,10. Of een combinatie van beiden op een of andere manier.
    DionysuZwoensdag 14 december 2005 @ 20:28
    quote:
    Op woensdag 14 december 2005 20:26 schreef JeRa het volgende:

    [..]

    Nee, je doet een aparte COUNT(*)-query zodat MySQL snel het aantal rows kan teruggeven en je het totaal aantal posts weet. Dit is snel omdat de MyISAM-tables een rowcounter bijhouden, bij InnoDB gaat dit niet zo gemakkelijk. Vervolgens kun je door een nieuwe query te LIMIT'en bepalen welke posts je precies ziet
    SkaterSamwoensdag 14 december 2005 @ 20:31
    COUNT(*) telt dus alle rijen in een DB, terwijl mysql_num_rows() alleen de rijen die uit een query komen telt. Ik snap het denk ik. De rest van de 5 stappen was echter wel 'logisch'?
    JeRawoensdag 14 december 2005 @ 21:10
    quote:
    Op woensdag 14 december 2005 20:31 schreef SkaterSam het volgende:
    COUNT(*) telt dus alle rijen in een DB, terwijl mysql_num_rows() alleen de rijen die uit een query komen telt. Ik snap het denk ik. De rest van de 5 stappen was echter wel 'logisch'?
    Voor zover ik zie wel
    Desdinovadonderdag 15 december 2005 @ 10:18
    Ik ben op zoek naar een soort image-editor. er zijn n aantal pietlutjes hier die 5mb digitale camera foto's uploaden op een website, en aangezien ik hen werk wil besparen door met paint ( bij gebrek aan beter) te resizen (wat ze vaak niet eens kunnen schrijven), lijkt het me gaaf als ik die afbeeldingen kan standaardiseren naar een breedte van zeg 300 pixels. de hoogte mag daarbij varieren (wel in verhouding tot natuurlijk).

    wat misschien nog gaver is, is dat de foto wordt omgezet naar een vierkantje (dus er wordt gecropped zeg maar) maar misschien is dat nog wat te ver gegrepen.

    Weet iemand naar welke termen ik moet kijken? of zijn hier toevallig voor t gemak al complete scripts van (zo simpel mogelijk, t liefst automatisch, zonder fratsen enzo).

    tx
    DionysuZdonderdag 15 december 2005 @ 10:20
    http://nl3.php.net/manual/en/function.imagecopyresampled.php
    misschien dat je daar iets aan hebt
    DionysuZdonderdag 15 december 2005 @ 10:21
    overigens kun je met imagejpeg() ook de kwaliteit opgeven van de output
    HuHudonderdag 15 december 2005 @ 10:25
    Croppen kan wel, maar daarbij heb je wel de kans dat je dingen verliest die je toch had willen bewaren. Dus daarmee zou ik uitkijken.
    Swetseneggerdonderdag 15 december 2005 @ 10:35
    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
    <?php
    function resize_photo($new_name,$new_width,$new_height,$filename){

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

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

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

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

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

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

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


    Aanroepen met:

    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $filename
    = $_FILES['photo']['tmp_name'];
    list(
    $width_orig, $height_orig) = getimagesize($filename);
    $new_name="../pathnaarfotomap/".$watdanook;
    $new_width=300; //mag ook leeg izjn
    $new_height=200; //mag ook leeg zijn
    resize_photo($new_name,$new_width,$new_height,$filename);
    ?>


    Alleen voor jpg, maar dat is redelijk eenvoudig aan te passen in de functie.

    Je moet wel GD2 op de server hebben staan.
    Desdinovadonderdag 15 december 2005 @ 11:50
    quote:
    Op donderdag 15 december 2005 10:35 schreef Swetsenegger het volgende:

    [ code verwijderd ]

    Aanroepen met:
    [ code verwijderd ]

    Alleen voor jpg, maar dat is redelijk eenvoudig aan te passen in de functie.

    Je moet wel GD2 op de server hebben staan.
    tx allen

    daar ga ik vast uitkomen
    DionysuZdonderdag 15 december 2005 @ 14:22
    1
    2
    // Content type
    header('Content-type: image/jpeg');

    dit is dan toch niet nodig Swetsenegger?
    Swetseneggerdonderdag 15 december 2005 @ 15:13
    quote:
    Op donderdag 15 december 2005 14:22 schreef DionysuZ het volgende:

    [ code verwijderd ]

    dit is dan toch niet nodig Swetsenegger?
    Komt rechtstreeks van php.net: http://nl3.php.net/manual/en/function.imagecopyresampled.php. Ik heb gewoon die functie gepakt en wat aangepast toen ik 'm nodig had
    DionysuZdonderdag 15 december 2005 @ 15:23
    quote:
    Op donderdag 15 december 2005 15:13 schreef Swetsenegger het volgende:

    [..]

    Komt rechtstreeks van php.net: http://nl3.php.net/manual/en/function.imagecopyresampled.php. Ik heb gewoon die functie gepakt en wat aangepast toen ik 'm nodig had
    Het is nodig als je rechtstreeks een jpeg als output wil hebben, niet als je een jpg file maakt.
    IbeBendonderdag 15 december 2005 @ 16:43
    Hallo,

    Voor school moet ik een opdracht over SQL maken (ik studeer economie en dan SQL ). Magoed, ik kom er dus niet helemaal uit. Een aantal vragen blijven open en zijn volgens mij niet echt moeilijk ofzo...voor de gevorderde gebruiker dan

    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;

    Maar dat is dus niet helemaal goed. Wie kan me helpen?

    Groeten
    IbeBen
    wobbeldonderdag 15 december 2005 @ 16:55
    $MySQL_Factuurregels_Select = "SELECT COUNT(*) FROM Factuurregel";
    $MySQL_Factuurregels_Query = mysql_query($MySQL_Factuurregels_Select);
    $MySQL_Factuurregels_Result = mysql_result($MySQL_Factuurregels_Query, 0);
    wobbeldonderdag 15 december 2005 @ 16:56
    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?
    IbeBendonderdag 15 december 2005 @ 16:59
    Wobbel,

    Thanks voor je reactie..Maar ik gebruik volgens mij een ander programma ofoz
    Het wordt uit tabellen van access gehaald en vervolgens in het programma S(impel)QL ingetypt.

    Zou je je post ook kunnen neerzetten in
    Select:
    From:
    Where:

    ?

    Thanx
    wobbeldonderdag 15 december 2005 @ 17:02
    ?? ik begrijp ff niet wat je bedoeld
    IbeBendonderdag 15 december 2005 @ 17:12
    Euhmm oke Zal proberen wat duidelijker te zijn

    Ik heb dus die access database met gegevens enzo. Daar moet ik dus als opdracht uitkrijgen Wat het gemiddelde aantal factuurregels in 2004 is. Daarvoor gebruk ik (verplicht) het programma-tje S(imple)QL Download

    De uitvoer (oftewel de invoer in het programma S(impel)QL) moet in de volgende lay-out
    SELECT
    FROM
    WHERE
    GROUP BY
    HAVING

    ed.

    Hopelijk is het nu wat duidelijker
    Twisted2000donderdag 15 december 2005 @ 17:24
    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?)