FOK!forum / Digital Corner / [PHP/(My)SQL] voor dummies #97
Swetseneggerzaterdag 17 december 2011 @ 20:28
php.jpg


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

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

Tutorials:
W3Schools PHP
W3Schools SQL
GlowMousezaterdag 17 december 2011 @ 20:29
De output van EXPLAIN zal verschillen (tabelvolgorde). De beste volgorde hangt van je data af.
Swetseneggerzaterdag 17 december 2011 @ 20:36
quote:
0s.gif Op zaterdag 17 december 2011 20:29 schreef GlowMouse het volgende:
De output van EXPLAIN zal verschillen (tabelvolgorde). De beste volgorde hangt van je data af.
Rly?! Kan je do volgorde ook beinvloeden? En hoe weet je welke volgorde het beste is? Hoe moet je zo'n explain lezen?
GlowMousezaterdag 17 december 2011 @ 20:40
dat kan met STRAIGHT_JOIN, proberen/ervaring
-Datdus-zaterdag 17 december 2011 @ 22:06
Als ik met Curl een fok! profiel pagina probeer te krijgen staat er "Deze functie is momenteel niet beschikbaar. Misschien ben je niet ingelogd of heb je geen toegang tot deze functie.". Komt dit door fok! en is er een weg omheen? Ik wil namelijk een naam en hash uit het profiel halen zodat ik voor een minecraft server kan verifiëren dat de persoon een fok!ker is.

Ik probeer deze pagina te krijgen: -Datdus-
#ANONIEMzaterdag 17 december 2011 @ 22:08
probeer eens een profiel te bekijken op fok zonder je in te loggen.. dan heb je het antwoord.
GlowMousezaterdag 17 december 2011 @ 22:10
wat voor hash?
-Datdus-zaterdag 17 december 2011 @ 22:10
quote:
0s.gif Op zaterdag 17 december 2011 22:08 schreef totalvamp het volgende:
probeer eens een profiel te bekijken op fok zonder je in te loggen.. dan heb je het antwoord.
Ik kan gewoon bij die pagina dan hoor. :P
-Datdus-zaterdag 17 december 2011 @ 22:11
quote:
0s.gif Op zaterdag 17 december 2011 22:10 schreef GlowMouse het volgende:
wat voor hash?
Nou mijn idee was dat mijn scriptje je een random string geeft die je dan in je sig zet. Zo kan mijn script checken of je de goede persoon bent.
GlowMousezaterdag 17 december 2011 @ 22:14
De check is niet goed: je kunt altijd iemand bewegen iets in zijn sig te zetten. Daarnaast denk ik niet dat FOK! het goed vindt wanneer jij een database van FOK!kers aanlegt.
#ANONIEMzaterdag 17 december 2011 @ 22:20
quote:
0s.gif Op zaterdag 17 december 2011 22:10 schreef -Datdus- het volgende:

[..]

Ik kan gewoon bij die pagina dan hoor. :P
of je doet iets fout in je code of FoK is beveiligd ertegen. Je kunt dan altijd inloggen proberen met je eigen username.
-Datdus-zaterdag 17 december 2011 @ 22:26
quote:
0s.gif Op zaterdag 17 december 2011 22:14 schreef GlowMouse het volgende:
De check is niet goed: je kunt altijd iemand bewegen iets in zijn sig te zetten. Daarnaast denk ik niet dat FOK! het goed vindt wanneer jij een database van FOK!kers aanlegt.
Waarom zijn die pagina's dan openbaar als fok! het daar niet mee eens is? Tevens worden de gegevens niet opgeslagen maar alleen gebruikt als check. Zodra het licht groen is moet je je Minecraft naam invullen en dan kan je spelen.
Dannyzaterdag 17 december 2011 @ 22:44
quote:
0s.gif Op zaterdag 17 december 2011 22:26 schreef -Datdus- het volgende:

Waarom zijn die pagina's dan openbaar als fok! het daar niet mee eens is?
Dat iets openbaar is wil niet zeggen dat het publiek domein is.

quote:
Tevens worden de gegevens niet opgeslagen maar alleen gebruikt als check. Zodra het licht groen is moet je je Minecraft naam invullen en dan kan je spelen.
Waarom zou je FOK! sigs misbruiken voor je eigen checks en waarom zouden wij dat moeten goedvinden?
-Datdus-zaterdag 17 december 2011 @ 23:01
quote:
0s.gif Op zaterdag 17 december 2011 22:44 schreef Danny het volgende:

[..]

Dat iets openbaar is wil niet zeggen dat het publiek domein is.

[..]

Waarom zou je FOK! sigs misbruiken voor je eigen checks en waarom zouden wij dat moeten goedvinden?
Dan doe ik het niet, ook goed. En misbruiken is wel erg overdreven. Gebruikers kiezen er zelf voor omdat te doen.

[ Bericht 0% gewijzigd door -Datdus- op 17-12-2011 23:10:47 ]
Dannyzaterdag 17 december 2011 @ 23:04
quote:
1s.gif Op zaterdag 17 december 2011 23:01 schreef -Datdus- het volgende:

[..]

Dan doe niet, ook goed. En misbruiken is wel erg overdreven. Gebruikers kiezen er zelf voor omdat te doen.
De sigs hebben een doel op FOK!. Je kunt er iets van jezelf in kwijt. Het is natuurlijk niet de bedoeling dat anderen jouw je sig laten gebruiken om verificatiedoeleinden oid. En als het daadwerkelijk een keuze is; hoe zit het dan met mensen die kiezen de code NIET in hun sig te plaatsen? Want als het werkelijk een keuze is zou dat voor jou niets uit moeten maken.
-Datdus-zaterdag 17 december 2011 @ 23:09
quote:
0s.gif Op zaterdag 17 december 2011 23:04 schreef Danny het volgende:

[..]

De sigs hebben een doel op FOK!. Je kunt er iets van jezelf in kwijt. Het is natuurlijk niet de bedoeling dat anderen jouw je sig laten gebruiken om verificatiedoeleinden oid. En als het daadwerkelijk een keuze is; hoe zit het dan met mensen die kiezen de code NIET in hun sig te plaatsen? Want als het werkelijk een keuze is zou dat voor jou niets uit moeten maken.
Dat zou geen probleem zijn. Het idee was bedoeld om nieuwe mensen sneller rechten te geven op de server. Nu moeten ze wachten tot er een admin online is etc en dat is ook prima hoor.
Crimyclownzaterdag 17 december 2011 @ 23:10
Ik heb nu een database waarin een paar ingevoerde getallen worden opgeslagen en hiervoor een id aangemaakt wordt. Maar hoe kan ik deze gegevens aan een gebruiker/sessie linken zonder dat deze is aangemeld. Zodat deze gegevens in een later venster kunnen worden weergeven.

Nu kan ik alleen op de vervolg pagina gegevens ophalen omdat ik van te voren niet weet onder welk id het opgeslagen wordt.

[ Bericht 40% gewijzigd door Crimyclown op 17-12-2011 23:18:34 ]
GlowMousezaterdag 17 december 2011 @ 23:57
quote:
0s.gif Op zaterdag 17 december 2011 23:10 schreef Crimyclown het volgende:
Ik heb nu een database waarin een paar ingevoerde getallen worden opgeslagen en hiervoor een id aangemaakt wordt. Maar hoe kan ik deze gegevens aan een gebruiker/sessie linken zonder dat deze is aangemeld. Zodat deze gegevens in een later venster kunnen worden weergeven.

Nu kan ik alleen op de vervolg pagina gegevens ophalen omdat ik van te voren niet weet onder welk id het opgeslagen wordt.
geef ze een sessie die niet aan een gebruiker is gekoppeld, of sla nog niks in een database op (maar in $_SESSION).
Crimyclownzaterdag 17 december 2011 @ 23:59
quote:
0s.gif Op zaterdag 17 december 2011 23:57 schreef GlowMouse het volgende:

[..]

geef ze een sessie die niet aan een gebruiker is gekoppeld, of sla nog niks in een database op (maar in $_SESSION).
Dank, het werkt.
VuilnisMetaalzondag 18 december 2011 @ 15:31
Ik heb de volgende query in mijn PHP staan:
1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE Accounts (

        AccountID int NOT NULL AUTO_INCREMENT, 

        PRIMARY KEY (AccountID),

        FirstName varchar(20),

        LastName varchar(20)

      )
Dit werkt prima, er wordt een tabel aangemaakt in MySQL en er kan gewoon data in worden gezet, maar zodra ik de query verander in
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
      CREATE TABLE Accounts (

        AccountID int NOT NULL AUTO_INCREMENT, 

        PRIMARY KEY (AccountID),

        FirstName varchar(20),

        LastName varchar(20)

      )

      CREATE TABLE Relatives (

        RelativeID int NOT NULL AUTO_INCREMENT, 

        PRIMARY KEY (RelativeID),

        FirstName varchar(20),

        LastName varchar(20),

        AccountID int,

        FOREIGN KEY (AccountID) REFERENCES Accounts (AccountID)

      )

      CREATE TABLE Constructs (

        ConstructID int NOT NULL AUTO_INCREMENT, 

        PRIMARY KEY (ConstructID),

        String varchar(255),

        AccountID int,

        FOREIGN KEY (AccountID) REFERENCES Accounts (AccountID)

      )

      CREATE TABLE Answers (

        AnswerID int NOT NULL AUTO_INCREMENT, 

        PRIMARY KEY (AnswerID),

        String varchar(255),

        ConstructID int,

        FOREIGN KEY (ConstructID) REFERENCES Constructs (ConstructID)

      )
wordt er geen enkele tabel aangemaakt.

Weet iemand wat ik fout doe?
Pileszondag 18 december 2011 @ 15:33
Wat zegt mysql_error()?
VuilnisMetaalzondag 18 december 2011 @ 15:39
quote:
0s.gif Op zondag 18 december 2011 15:33 schreef Piles het volgende:
Wat zegt mysql_error()?
Niks, er zit geen error in blijkbaar. Echt heel raar...

Hier is het volledige PHP-script btw:
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
  <?php

  

    $server 
'127.0.01';

    
$username 'root';

    
$password 'root';

    
$database 'properdb';

    
$con mysql_connect("localhost"$username$password) or die('Kan niet verbinden met de server: ' mysql_error());

      

    
// Create tables

    
mysql_select_db($database$con);

    
$sql "

      

      CREATE TABLE Accounts (

        AccountID int NOT NULL AUTO_INCREMENT, 

        PRIMARY KEY (AccountID),

        FirstName varchar(20),

        LastName varchar(20)

      )

      CREATE TABLE Relatives (

        RelativeID int NOT NULL AUTO_INCREMENT, 

        PRIMARY KEY (RelativeID),

        FirstName varchar(20),

        LastName varchar(20),

        AccountID int,

        FOREIGN KEY (AccountID) REFERENCES Accounts (AccountID)

      )

      CREATE TABLE Constructs (

        ConstructID int NOT NULL AUTO_INCREMENT, 

        PRIMARY KEY (ConstructID),

        String varchar(255),

        AccountID int,

        FOREIGN KEY (AccountID) REFERENCES Accounts (AccountID)

      )

      CREATE TABLE Answers (

        AnswerID int NOT NULL AUTO_INCREMENT, 

        PRIMARY KEY (AnswerID),

        String varchar(255),

        ConstructID int,

        FOREIGN KEY (ConstructID) REFERENCES Constructs (ConstructID)

      )

    "
;

    
// Execute query

    
mysql_query($sql,$con);  

    
mysql_close($con);

  

  
?>
Swetseneggerzondag 18 december 2011 @ 15:46
Nu heb ik deze prachtige query om de top 10 verkochte producten van het afgelopen jaar uit mijn DB te trekken:

quote:
SELECT produkten.*, count(*) as productcount
FROM order_content
JOIN orders on (orders.order_id=order_content.order_id)
JOIN produkten on (produkten.product_id=order_content.product_id)
WHERE produkten.product_menu IS NOT NULL AND produkten.product_menu<>0 AND orders.wishlist=0 AND orders.activated=1 AND orders.orderdate between ('2011-01-01 0:0:0') AND ('2012-01-01 0:0:0')
GROUP BY produkten.product_id
ORDER BY productcount DESC
LIMIT 0, 10
Maar als ik dan dit leesvraag ik me af of ik wel de juiste resultaten terug krijg?
GlowMousezondag 18 december 2011 @ 15:55
quote:
0s.gif Op zondag 18 december 2011 15:39 schreef VuilnisMetaal het volgende:

[..]

Niks, er zit geen error in blijkbaar. Echt heel raar...

Hier is het volledige PHP-script btw:
[ code verwijderd ]

je vergeet puntkomma's tussen queries, en je vergeet dat mysql_query maar één query uit kan voeren
quote:
5s.gif Op zondag 18 december 2011 15:46 schreef Swetsenegger het volgende:
Nu heb ik deze prachtige query om de top 10 verkochte producten van het afgelopen jaar uit mijn DB te trekken:

[..]

Maar als ik dan dit leesvraag ik me af of ik wel de juiste resultaten terug krijg?
dan moet je het nog een keer lezen
VuilnisMetaalzondag 18 december 2011 @ 16:15
quote:
0s.gif Op zondag 18 december 2011 15:55 schreef GlowMouse het volgende:

[..]

je vergeet puntkomma's tussen queries, en je vergeet dat mysql_query maar één query uit kan voeren

[..]

dan moet je het nog een keer lezen
Juist! Het werkt nu helemaal! Dankjewel _O_
Swetseneggerzondag 18 december 2011 @ 16:20
quote:
0s.gif Op zondag 18 december 2011 15:55 schreef GlowMouse het volgende:

dan moet je het nog een keer lezen
Hoe bedoel je?
GlowMousezondag 18 december 2011 @ 16:58
quote:
5s.gif Op zondag 18 december 2011 16:20 schreef Swetsenegger het volgende:

[..]

Hoe bedoel je?
Het stukje waaruit je opmaakte dat je wellicht niet de juiste resultaten terugkrijgt, heb je niet begrepen.
Swetseneggerzondag 18 december 2011 @ 17:01
quote:
0s.gif Op zondag 18 december 2011 16:58 schreef GlowMouse het volgende:

[..]

Het stukje waaruit je opmaakte dat je wellicht niet de juiste resultaten terugkrijgt, heb je niet begrepen.
Er staat dat je in je group by all niet aggregate kolommen zou moeten opnemen. Dat heb ik in bovenstaande query toch niet? Of zie ik wat over het hoofd?
GlowMousezondag 18 december 2011 @ 17:10
eigenlijk niet (een andere db-server keurt je query af), maar van de oorzaak waardoor in hun voorbeeld verkeerde rijen worden teruggegeven heb jij geen last
Swetseneggerzondag 18 december 2011 @ 17:13
quote:
0s.gif Op zondag 18 december 2011 17:10 schreef GlowMouse het volgende:
eigenlijk niet (een andere db-server keurt je query af), maar van de oorzaak waardoor in hun voorbeeld verkeerde rijen worden teruggegeven heb jij geen last
Das mooi :)

Kan je uitleggen waarom? Dan ga ik het misschien ook snappen. Tenslotte is dit een 'voor dummies' topic.
GlowMousezondag 18 december 2011 @ 17:31
Dummy betekent niet dat je niet hoeft te googlen. http://dev.mysql.com/doc/(...)-hidden-columns.html
Swetseneggerzondag 18 december 2011 @ 17:39
quote:
0s.gif Op zondag 18 december 2011 17:31 schreef GlowMouse het volgende:
Dummy betekent niet dat je niet hoeft te googlen. http://dev.mysql.com/doc/(...)-hidden-columns.html
Moet je wel weten waar je op moet googlen. Gelezen en duidelijk.
-Datdus-dinsdag 20 december 2011 @ 21:19
Ik ben bezig met wat reguliere expressies en hier loop ik een beetje op stuk.

Dit is mijn code:
1return(preg_match('^[0-9]{$min,$max}^', $string))? 1 : 0;

Ik wil alleen nummers toelaten met een range die wordt bepaald door de $min en $max variabelen. Hij blijft een verkeerde waarde geven behalve als ik het zo doe:

1return(preg_match('^[0-9]{0,10}^', $string))? 1 : 0;

Ik heb dit al geprobeerd maar dit werkt ook niet.
1return(preg_match('^[0-9]{'.$min.','.$max.'}^', $string))? 1 : 0;

Weten jullie hoe ik dit op kan lossen? :)
GlowMousedinsdag 20 december 2011 @ 21:24
Die laatste werkt weldegelijk. Je kunt ook gewoon preg_match returnen, die ? 1 : 0 is eigenlijk onlogisch.
-Datdus-dinsdag 20 december 2011 @ 21:26
quote:
0s.gif Op dinsdag 20 december 2011 21:24 schreef GlowMouse het volgende:
Die laatste werkt weldegelijk. Je kunt ook gewoon preg_match returnen, die ? 1 : 0 is eigenlijk onlogisch.
Je hebt gelijk, bedankt!
GlowMousedinsdag 20 december 2011 @ 21:28
En je staat nu asdf1234asdf ook toe. Je zoekt iets als /^[0-9]{0,10}$/
GIwoensdag 21 december 2011 @ 08:01
Zit hier toevallig een regexp expert die mij een alleen alfanumerieke characters regexp kan vertellen ?
Ik heb nu bijvoorbeeld :
1
2
3
<?php
$factuur
["levPostalcode"] = preg_replace("/[^0-9\s]/"""$factuur["levPostalcode"]);
?>
om de cijfers uit een postcode te plukken. Maar ik wil nu een vergelijkbare hebben die het huisnummer weglaat uit een adres.

Nou kan ik wel valsspelen en de code die ik heb te gebruiken en die daarna uit het adres te replacen met "" maar das net weer niet netjes genoeg :+
GlowMousewoensdag 21 december 2011 @ 10:11
Haal de ^ en de \s uit de regex en rtrim het resultaat.
uppie83woensdag 21 december 2011 @ 12:45
Ik heb een stuk code dat controleert of een string aan een aantal eisen voor een kenteken voldoet. Gek genoeg levert de enige juiste string een 'maximum execution time exceeded' op (bij $kent4). Ik zie niet wat het probleem is. 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
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
<?php
/*
Een autokenteken bestaat altijd uit 8 tekens (XX-XX-XX). 
Ieder teken is een letter, een cijfer of een &lsquo;-&lsquo;-teken. 
Een letter staat altijd naast een andere letter of naast een &lsquo;-&lsquo;-teken. 
Een cijfer staat altijd naast een ander cijfer of naast een &lsquo;-&lsquo;-teken.
*/

function kenteken($string){                                                        //maakt de functie aan die als parameter de string accepteert
    
$length strlen($string);                                                    //bekijkt de lengte van de string         
    
$letters = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');  //array met alle letters
    
$cijfers = array('1','2','3','4','5','6','7','8','9','0');                    //array met alle cijfers
    
$which=0;                                                                    //$which zal later in de loop aangeven in welke categorie het vorige teken viel, 1 = letter, 2 = cijfer, 3 = '-'
    
if($length != 8){                                                              //als de lengte van de string niet gelijk is aan acht wordt aan de eerste voorwaarde al niet voldaan en 'false' gereturned
        
return false;
    }
    elseif(
$string[3]!='-' and $string[5]!='-'  ){                                //kijkt of op de 3e en 6e plek wel het '-' teken staat
        
return false;
    }
    else {
        for(
$index 0$index $length$index++){                            //loop om door de stringposities heen te lopen
            
if(in_array(strtoupper($string[$index]),$letters)){                    //als aan deze conditie wordt voldaan, dan is het huidige teken een letter
                
if($which != 2){                                                 //als het vorige teken geen cijfer was (dus een 0, een 1 of een 3) wordt $which op 1 gezet
                    
$which=1;
                }
                else{                                                            
//het huidige teken is een letter, terwijl de voorgaande een cijfer was, wat niet is toegestaan
                    
return false;
                }                                        
            }
            elseif(
in_array($string[$index],$letters)){                            //als aan deze conditie wordt voldaan, dan is het huidige teken een cijfer
                
if($which != 1){                                                   //als het vorige teken geen letter was (dus een 0, een 2 of een 3) wordt $which op 2 gezet
                    
$which=2;
                }
                else{                                                             
//het huidige teken is een cijfer, terwijl de voorgaande een letter was, wat niet is toegestaan
                    
return false;
                }
            }
            elseif(
$string[$index]== '-'){                                         //als aan deze conditie wordt voldaan, dan is het huidige teken een '-'
                
if ($index=or $index=5){                                        //het '-' teken mag alleen op posities 3 en 6 voorkomen
                    
$which=3;                                                    //$which wordt enkel op 3 gezet wanneer het '-' teken op de juiste positie staat
                
}
                else{
                    return 
false;
                }
            }
            else{                                                                 
//het huidige teken valt in geen van de toegestane condities, dus een false wordt gereturned
                
return false;
            }
        }
        return 
true;                                                            //als de loop is doorlopen en niet is afgebroken doordat niet aan een van de eisen is voldaan, kan true worden gereturned     
    
}
}      

$kent1="ABCDEFGHI";
$kent2="a3-za-aa";
$kent3="ac-44-@r";
$kent4="ac-pz-44";
$kent5="jhgddest";
$kent6="12345678";

if(
kenteken($kent1)){  echo "$kent1 is een kenteken.<br>"; }
else { echo 
"$kent1 is geen kenteken.<br>"; }
if(
kenteken($kent2)){  echo "$kent2 is een kenteken.<br>"; }
else { echo 
"$kent2 is geen kenteken.<br>"; }
if(
kenteken($kent3)){  echo "$kent3 is een kenteken.<br>"; }
else { echo 
"$kent3 is geen kenteken.<br>"; }
if(
kenteken($kent4)){  echo "$kent4 is een kenteken.<br>"; }
else { echo 
"$kent4 is geen kenteken.<br>"; }
if(
kenteken($kent5)){  echo "$kent5 is een kenteken.<br>"; }
else { echo 
"$kent5 is geen kenteken.<br>"; }
if(
kenteken($kent6)){  echo "$kent6 is een kenteken.<br>"; }
else { echo 
"$kent6 is geen kenteken.<br>"; }
?>
mstxwoensdag 21 december 2011 @ 12:52
quote:
0s.gif Op woensdag 21 december 2011 12:45 schreef uppie83 het volgende:
Ik heb een stuk code dat controleert of een string aan een aantal eisen voor een kenteken voldoet. Gek genoeg levert de enige juiste string een 'maximum execution time exceeded' op (bij $kent4). Ik zie niet wat het probleem is. Iemand een idee?
[ code verwijderd ]

if ($index=2 or $index=5){

Ik zou daar == gebruiken.
Als hij 1x bij die regel komt zet hij hem elke keer weer op 2 waardoor hij oneindig door blijft gaan.
GlowMousewoensdag 21 december 2011 @ 12:57
Op regel 30 moet je $cijfers gebruiken. En je doet nu niks met nieuwe kentekens met een groepje van 3 letters; wat je nu hebt kan ook met een regex.
uppie83woensdag 21 december 2011 @ 13:02
quote:
0s.gif Op woensdag 21 december 2011 12:52 schreef mstx het volgende:

[..]

if ($index=2 or $index=5){

Ik zou daar == gebruiken.
Als hij 1x bij die regel komt zet hij hem elke keer weer op 2 waardoor hij oneindig door blijft gaan.
Bedankt :) Dat was idd de truc.

quote:
0s.gif Op woensdag 21 december 2011 12:57 schreef GlowMouse het volgende:
Op regel 30 moet je $cijfers gebruiken. En je doet nu niks met nieuwe kentekens met een groepje van 3 letters; wat je nu hebt kan ook met een regex.
Ook bedankt, dat loste inderdaad het laatste probleem nog op. Klopt dat ik niets met nieuwe kentekens doe, maar dat was niet de opdracht :) Regex ken ik niet... De docent gaf als tip om modulo te gebruiken, maar die begreep ik dan weer niet :P
Sitethiefwoensdag 21 december 2011 @ 13:38
Wat doet jouw systeem met de volgende kentekens:

00-BBB-1
1-VBB-01
DB-001-B
D-001-BB

Die zijn namelijk ook gewoon geldig...
GlowMousewoensdag 21 december 2011 @ 13:57
quote:
0s.gif Op woensdag 21 december 2011 13:38 schreef Sitethief het volgende:
Wat doet jouw systeem met de volgende kentekens:

00-BBB-1
1-VBB-01
DB-001-B
D-001-BB

Die zijn namelijk ook gewoon geldig...
Heb jij oogjes gekregen van onze goede Heer?
Sitethiefwoensdag 21 december 2011 @ 15:00
Je hebt gelijk, ik hoop dat ie niet straks alsnog dat kan inbouwen :X
uppie83woensdag 21 december 2011 @ 15:17
quote:
0s.gif Op woensdag 21 december 2011 15:00 schreef Sitethief het volgende:
Je hebt gelijk, ik hoop dat ie niet straks alsnog dat kan inbouwen :X
Geen idee, maar volgens mij zou ik dat oplossen door de condities rondom het '-' teken wat te versoepelen.
Pizzaluchtwoensdag 21 december 2011 @ 15:47
Ik heb een master/slave opstelling gemaakt in MySQL, op dit moment loopt hij perfect waarbij de slave tot nu toe elk moment maximaal een seconde achter ligt.

Kan iemand mij vertellen of zo'n opstelling verstandig en stabiel is?

Ja, we weten dat je niet kan schrijven naar een slave dabase(hij schrijft het iig niet weg naar de master).
GlowMousewoensdag 21 december 2011 @ 15:53
Ligt er net aan wat je ervan verwacht.
Pizzaluchtwoensdag 21 december 2011 @ 16:00
Het gaat erom dat we de login gegevens van phpbb gebruiken voor het inloggen op een ander systeem(spel). Nu maken we nog verbinding naar de externe server(de webserver), daar willen we vanaf omdat die voor steeds meer load op die server zorgt en we niet afhankelijk van de webserver willen zijn.
GlowMousewoensdag 21 december 2011 @ 16:03
Een inlogsysteem dat voor te hoge load zorgt :') Zorg dat je direct met MySQL verbindt en niet via een webscript communiceert, dan mag er geen enkel probleem zijn.
Pizzaluchtwoensdag 21 december 2011 @ 16:05
Je kan wel :') doen, maar je hebt geen idee hoe het in elkaar zit, dus doe even normaal.

We willen gewoon niet afhankelijk zijn van de webserver, dat als deze eruit ligt mensen nog gewoon in kunnen loggen op het spel.
GlowMousewoensdag 21 december 2011 @ 16:08
Username en wachtwoord ophalen is een enkele primary key lookup, dat kost zo weinig rekenkracht dat je er een gigabitlijn mee voltrekt.
Pizzaluchtwoensdag 21 december 2011 @ 16:09
Hij laad ook profile fields, hij checkt op bans, en haalt wat andere dingen op.

Gameservers doen ook session checks om te kijken of de gebruiker geldig is.

Er zit ook authenticatie op de gameservers om te kijken of deze een geldige key hebben om te hosten.

Is het zo raar dat we de webserver en gameserver gescheiden willen houden?

En je gaat er ook van uit dat de webserver niets anders te doen heeft dan logins regelen voor de gameserver, wat natuurlijk niet waar is.
GlowMousewoensdag 21 december 2011 @ 16:12
Nog steeds zie ik geen fancy dingen waarvoor je naar een master/slave setup zou willen. Ik zou eerst eens uitzoeken waarom de load zo hoog is.
#ANONIEMwoensdag 21 december 2011 @ 16:15
Zo`n hoge load is ongezond. Beter ga je structureel bekijken waarom de load zo hoog is.
Pizzaluchtwoensdag 21 december 2011 @ 16:16
Wat zou jij dan doen? Weet je, laat maar weer lekker zitten Gloeimuisje, je bent weer lekker behulpzaam. Ik vraag alleen of mensen ervaring hebben met een master/slave en of het stabiel is.

Ik zeg dat we niet afhankelijk willen zijn van de webserver, waardoor een simpele verbinding naar de webserver al niet mogelijk is.

Misschien is onze load wel hoog omdat we veel bezoekers/spelers hebben?

Ik zeg niet dat onze load te hoog is, ik wil alleen voorkomen dat hij te hoog wordt als we volledig over gaan op het loginsysteem.

quote:
0s.gif Op woensdag 21 december 2011 16:15 schreef Scorpie het volgende:
Zo`n hoge load is ongezond. Beter ga je structureel bekijken waarom de load zo hoog is.
En waar staat wat voor load ik heb?
#ANONIEMwoensdag 21 december 2011 @ 16:16
Daarnaast snap ik de scheiding niet zo goed.
Pizzaluchtwoensdag 21 december 2011 @ 16:16
quote:
0s.gif Op woensdag 21 december 2011 16:16 schreef Scorpie het volgende:
Daarnaast snap ik de scheiding niet zo goed.
quote:
0s.gif Op woensdag 21 december 2011 16:05 schreef Pizzalucht het volgende:
We willen gewoon niet afhankelijk zijn van de webserver, dat als deze eruit ligt mensen nog gewoon in kunnen loggen op het spel.
+Dat een verbinding naar een andere server niet zo optimaal is.
#ANONIEMwoensdag 21 december 2011 @ 16:17
quote:
0s.gif Op woensdag 21 december 2011 16:00 schreef Pizzalucht het volgende:
Het gaat erom dat we de login gegevens van phpbb gebruiken voor het inloggen op een ander systeem(spel). Nu maken we nog verbinding naar de externe server(de webserver), daar willen we vanaf omdat die voor steeds meer load op die server zorgt en we niet afhankelijk van de webserver willen zijn.
Dat wil je dus niet. Je wilt blijkbaar niet afhankelijk zijn van je webserver.
#ANONIEMwoensdag 21 december 2011 @ 16:18
Dus je hebt straks een gameserver waarop een webserver draait die je los wilt koppelen van je primaire webserver waar het forum e.d. op draait?
Pizzaluchtwoensdag 21 december 2011 @ 16:19
quote:
5s.gif Op woensdag 21 december 2011 16:18 schreef Scorpie het volgende:
Dus je hebt straks een gameserver waarop een webserver draait die je los wilt koppelen van je primaire webserver waar het forum e.d. op draait?
Nee, die gameserver heeft geen webserver?

We hebben 2 fysieke servers, een de webserver, de andere de gameserver.
Ze hebben allebei MySQL, en de webserver is de master.

Even voor de duidelijkheid, we hebben het over een desktop game die contact maakt met de gameserver voor login/friendsystem/serverlist/stats
GlowMousewoensdag 21 december 2011 @ 16:24
quote:
0s.gif Op woensdag 21 december 2011 16:16 schreef Pizzalucht het volgende:
Weet je, laat maar weer lekker zitten Gloeimuisje, je bent weer lekker behulpzaam.
:')
quote:
Ik vraag alleen of mensen ervaring hebben met een master/slave en of het stabiel is.
Niemand heeft ervaring, want het is heel onstabiel :') Grote bedrijven gebruiken MySQL, wat denk je zelf dat het stabiel is :')
#ANONIEMwoensdag 21 december 2011 @ 16:24
Maar je primaire login gegevens staan op de webserver?
Pizzaluchtwoensdag 21 december 2011 @ 16:25
quote:
0s.gif Op woensdag 21 december 2011 16:24 schreef Scorpie het volgende:
Maar je primaire login gegevens staan op de webserver?
Inderdaad, mensen loggen in met hun forum account.

quote:
0s.gif Op woensdag 21 december 2011 16:24 schreef GlowMouse het volgende:

[..]

Niemand heeft ervaring, want het is heel onstabiel :') Grote bedrijven gebruiken MySQL, wat denk je zelf dat het stabiel is :')
Ik heb het over master/slave, niet over MySQL zelf...
#ANONIEMwoensdag 21 december 2011 @ 16:28
quote:
0s.gif Op woensdag 21 december 2011 16:25 schreef Pizzalucht het volgende:

[..]

Inderdaad, mensen loggen in met hun forum account.
Daar zou ik dan sowieso vanaf willen stappen. Maak een apart login systeem voor je game. Scheelt je een hoop gezeik.
Pizzaluchtwoensdag 21 december 2011 @ 16:29
quote:
0s.gif Op woensdag 21 december 2011 16:28 schreef Scorpie het volgende:

[..]

Daar zou ik dan sowieso vanaf willen stappen. Maak een apart login systeem voor je game. Scheelt je een hoop gezeik.
Waarom? Waarom zouden mensen 2 verschillende accounts willen hebben?
#ANONIEMwoensdag 21 december 2011 @ 16:47
quote:
0s.gif Op woensdag 21 december 2011 16:29 schreef Pizzalucht het volgende:

[..]

Waarom? Waarom zouden mensen 2 verschillende accounts willen hebben?
Je denkt teveel vanuit de gebruiker en te weinig vanuit de techniek.

Je webserver wordt gehacked en je forum database wordt leeggetrokken. Weg spel, weg forum.

Je forum wordt gehacked en je user wachtwoorden worden gekraakt. Weg spel, weg forum.

Je spel login systeem wordt gekraakt en mensen trekken je forum database leeg. Kraken de wachtwoorden en kunnen zo root krijgen op je forum. Weg spel, weg forum.

Ik zou nooit, maar dan ook echt nooit mijn beveiliging in de handen van phpBB leggen voor zo`n spel.

[ Bericht 5% gewijzigd door #ANONIEM op 21-12-2011 16:47:36 ]
MrNileswoensdag 21 december 2011 @ 21:29
ik heb een fotoalbum(van internet geplukt) in een ?func=fotoalbum gezet
alles leek goed te werken, op een browser op het werk
maar thuis krijg ik ineens een boel foutmeldingen
oa
1
2
3
<?php
Warning
chmod() [function.chmod]: Unable to access /thumbs/klein_ in /xxx/blabla/domains/blabla.nl/public_html/includes/fotos.php on line 78
?>
regel 78
1
2
3
<?php
chmod
($map '/thumbs/' $type '_' $bestandsnaam0777);
?>

wat gaat er nu precies fout?
alle folders bestaan, script werkt verder zoals het hoort
maar ik heb wel 10 foutmeldingen varierent van bovenstaande tot Notice: Undefined offset: 0
GlowMousewoensdag 21 december 2011 @ 21:34
$map zal wel leeg zijn
MrNileswoensdag 21 december 2011 @ 21:35
quote:
0s.gif Op woensdag 21 december 2011 21:34 schreef GlowMouse het volgende:
$map zal wel leeg zijn
nope
bovenaan in script
1
2
3
<?php
$map 
'fotoalbum';
?>
in fotoalbum staat mijn foto's + thumbs
deze zie ik ook op scherm
kan het iets te maken hebben met schrijfrechten?
boem-dikkiewoensdag 21 december 2011 @ 21:56
Ben je nu niet je bestand aan het chmodden in plaats van je map?
mstxwoensdag 21 december 2011 @ 21:57
quote:
0s.gif Op woensdag 21 december 2011 21:35 schreef MrNiles het volgende:

[..]

nope
bovenaan in script
[ code verwijderd ]

in fotoalbum staat mijn foto's + thumbs
deze zie ik ook op scherm
kan het iets te maken hebben met schrijfrechten?
Waarom zoekt het script dan naar "/thumbs/klein_" ? Voor zover ik kan zien betekent dat dat zowel $map als $bestandsnaam leeg zijn, anders stond er wel "fotoalbum/thumbs/klein_bestandsnaam.ext".
MrNileswoensdag 21 december 2011 @ 22:10
quote:
0s.gif Op woensdag 21 december 2011 21:57 schreef mstx het volgende:

[..]

Waarom zoekt het script dan naar "/thumbs/klein_" ? Voor zover ik kan zien betekent dat dat zowel $map als $bestandsnaam leeg zijn, anders stond er wel "fotoalbum/thumbs/klein_bestandsnaam.ext".
kan zijn...vreemd
krijg ook de melding
Warning: Division by zero
de waarde die nul zou zijn is $breedte_origineel
die gehaalt wordt uit
1
2
3
<?php
list($breedte_origineel$hoogte_origineel$extensie) = getimagesize($map '/' $bestandsnaam);
?>
tja..ik zie m echt niet..nog ff kijken en anders morgen weer een dag
Pakspulwoensdag 21 december 2011 @ 22:16
quote:
0s.gif Op woensdag 21 december 2011 22:10 schreef MrNiles het volgende:

[..]

kan zijn...vreemd
krijg ook de melding
Warning: Division by zero
de waarde die nul zou zijn is $breedte_origineel
die gehaalt wordt uit
[ code verwijderd ]

tja..ik zie m echt niet..nog ff kijken en anders morgen weer een dag
var_dump die bende dan en loop stap voor stap na en kijk wat de variabelen voor waarde hebben en of dit klopt met wat de bedoeling is. Beetje debuggen is toch niet zo complex iets.
Sitethiefwoensdag 21 december 2011 @ 23:06
Var_dump?

xdebug + netbeans _O_
Pakspulwoensdag 21 december 2011 @ 23:09
Notepad de gekste jeweetz :P
MXDwoensdag 21 december 2011 @ 23:16
Hoi allen!

Ik heb een site gemaakt met poging tot php-formulier, samen met database.
Ik vul mijn tabelletje op mijn site in en krijg de volgende foutmelding: " Er is een fout opgetreden met foutnummer 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 2 "

Dit is mijn code:

SPOILER
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
<?php
// nadat de pagina zichzelf heeft aangeroepen variabelen initialiseren
if (!empty($_POST)){
$server "*";
$user "*"];
$wachtwoord "*";
$database "*";
$query "";
$bedankt "bevestiging_toevoegen.php"// adres van de bedank-pagina.
// Database openen.
$db mysql_connect($server$user$wachtwoord); // verbinding maken
mysql_select_db($database); // database selecteren
/* stel een SQL-query op met de gegevens uit het formulier,
eerst worden de kolomnamen genoemd, daarna de waarden van de velden.
Voor de waarde van "id" vul je een lege waarde in.
De operator .= plakt dit allemaal aan elkaar vast.
Let daarna goed op de positie van de aanhalingstekens!
Na "loopnummer" wordt afgesloten met een haakje.
*/
$query "INSERT INTO contact (id, voornaam, tussenvoegsel, achternaam,
leeftijd, leerzaam, cijfer) "
;
$query .= "VALUES ('', '";
$query .= $_POST["voornaam"] . "', '";
$query .= $_POST["tussenvoegsel"] . "', '";
$query .= $_POST["achternaam"] . "', '";
$query .= $_POST["leeftijd"] . "', '";
$query .= $_POST["leerzaam"] . "', '";
$query .= $_POST["cijfer"] . "', '";
// probeer de query (zoek-opdracht) uit te voeren
if (!mysql_query($query)){
// als er een fout is opgetreden
echo "Er is een fout opgetreden met foutnummer " mysql_errno() . " : " .
mysql_error();
mysql_close($db); // database afsluiten
exit;
}
else{
/* Invoegen is geslaagd.
De functie mysql_insert_id() haalt de id van de laatste INSERT opdracht
op.
Geef het id van de zojuist ingevoegde gegevens mee als querystring aan
het adres van de bedank-pagina.
Daarna database afsluiten en bezoeker doorsturen naar de bedank-pagina.
*/
$bedankt .= "?id=" mysql_insert_id($db);
mysql_close($db);
header("location:$bedankt");
}
}
else{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<!-- De globale variabele $_SERVER["PHP_SELF"] zorgt ervoor dat als het formulier
verzonden wordt, de pagina zichzelf weer aanroept. Globale variabelen zijn variabelen
die op alle pagina's geldig zijn. De meeste variabelen zijn "Lokale variabelen". Deze zijn
slechts geldig op de pagina waar ze gedefinieerd zijn.
-->
<h2>Vul hier uw gegevens in:</h2>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"?>">
Voornaam : <input type="text" name="voornaam"><br />
Tussenvoegsel: <input type="text" name="tussenvoegsel"><br />
Achternaam : <input type="text" name="achternaam"><br />
Leeftijd : <input type="text" name="leeftijd"><br />
Vond u deze site leerzaam? : <input type="text" name="leerzaam"><br />
Wat voor cijfer geeft u deze site? : <input type="text" name="cijfer"><br />
<input type="submit" name="verzenden" value="Verzenden">
<input type="reset" name="leegmaken" value="Leegmaken">
<hr />
</form>
</body>
</html>
<?php
// het else-blok afsluiten
?>
Dingen met een * heb ik voor hier even leeggelaten, staat wel ingevuld.

Wat moet ik doen? Ik ben namelijk niet zo'n PHP-held, en heb dit gekopiëerd uit een bestand dat ik van m'n leraar heb gekregen.

Alvast bedankt!
GlowMousewoensdag 21 december 2011 @ 23:17
Al eens gekeken hoe de query eruit ziet?
MXDwoensdag 21 december 2011 @ 23:18
Als jij me uitlegt wat dat is en hoe ik ernaar moet kijken? :P
Arceewoensdag 21 december 2011 @ 23:23
Je sluit je INSERT-statement niet af. Na de laatste toevoeging moet geen ,' meer, maar gewoon een sluithaakje.

Vervang

1$query .= $_POST["cijfer"] . "', '";

Door

1$query .= $_POST["cijfer"] . "')";
MXDwoensdag 21 december 2011 @ 23:28
Lost niks op.
Heb ik alles wel goed ingevuld?

deze gegevens heb ik van mijn host gekregen:
$mysql_host = "mysql4.000webhost.com";
$mysql_database = "a1320523_MVDVR";
$mysql_user = "a1320523_mvdvr";
$mysql_password = "*";

mijn tabel in de database heet contact

1
2
3
4
5
6
7
8
<?php
$server 
"mysql4.000webhost.com";
$user "a1320523_mvdvr";
$wachtwoord "*";
$database "a1320523_MVDVR";
$query "";
$bedankt "bevestiging_toevoegen.php"// adres van de bedank-pagina.
?>

is dit dan goed ingevuld?

* is overigens weer vervangen
Arceewoensdag 21 december 2011 @ 23:31
1    $query .= $_POST["cijfer"] . "')";

Echt vervangen door bovenstaande? Dus door single quote + sluithaakje.

In het commentaar staat ook nog: Na "loopnummer" wordt afgesloten met een haakje.

In het origineel zat mogelijk nog een veld loopnummer waar het sluithaakje in stond.
cablegunmasterwoensdag 21 december 2011 @ 23:32
quote:
0s.gif Op woensdag 21 december 2011 23:28 schreef MXD het volgende:
Lost niks op.
Heb ik alles wel goed ingevuld?

deze gegevens heb ik van mijn host gekregen:
$mysql_host = "mysql4.000webhost.com";
$mysql_database = "a1320523_MVDVR";
$mysql_user = "a1320523_mvdvr";
$mysql_password = "*";

mijn tabel in de database heet contact
[ code verwijderd ]

is dit dan goed ingevuld?

* is overigens weer vervangen
Lijkt me goed ingevuld. heb je nog ergens problemen? of een foutmelding?
MXDwoensdag 21 december 2011 @ 23:40
Hij doet het nu. Ik heb geen idee hoe, maar hij doet het!

Alsnog bedankt iedereen! :)
MXDwoensdag 21 december 2011 @ 23:45
Nee toch niet.

Ik heb 1x mijn gegevens ingevoerd en die staan nu in de database. Echter, als ik dit nog eens doe (met andere gegevens) krijg ik dit: Er is een fout opgetreden met foutnummer 1062 : Duplicate entry '0' for key 'PRIMARY'

Ik snapt dat het ID dan niet veranderd wordt en er van elk ID maar 1 mag zijn, maar hoe los ik dit op?
KomtTijd...woensdag 21 december 2011 @ 23:47
Door dat veld te veranderen.
GlowMousewoensdag 21 december 2011 @ 23:49
leer eerst SQL
The_Terminatordonderdag 22 december 2011 @ 00:02
quote:
0s.gif Op woensdag 21 december 2011 23:45 schreef MXD het volgende:
Nee toch niet.

Ik heb 1x mijn gegevens ingevoerd en die staan nu in de database. Echter, als ik dit nog eens doe (met andere gegevens) krijg ik dit: Er is een fout opgetreden met foutnummer 1062 : Duplicate entry '0' for key 'PRIMARY'

Ik snapt dat het ID dan niet veranderd wordt en er van elk ID maar 1 mag zijn, maar hoe los ik dit op?
http://dev.mysql.com/doc/(...)-auto-increment.html
Pizzaluchtdonderdag 22 december 2011 @ 00:16
En natuurlijk de input escapen
cablegunmasterdonderdag 22 december 2011 @ 00:17
quote:
10s.gif Op donderdag 22 december 2011 00:16 schreef Pizzalucht het volgende:
En natuurlijk de input escapen
ik gebruik meestal zo'n soort functie daarvoor :).

1
2
3
4
5
<?php
function esc($str){
return 
mysql_real_escape_string($str);
}
?>
Pizzaluchtdonderdag 22 december 2011 @ 01:12
quote:
0s.gif Op donderdag 22 december 2011 00:17 schreef cablegunmaster het volgende:

[..]

ik gebruik meestal zo'n soort functie daarvoor :).
[ code verwijderd ]

Ja of PDO. Of een eigen database wrapper. Maakt niet echt uit, als je het maar doet.
Cue_donderdag 22 december 2011 @ 08:31
Oke, nieuw probleempje.

Heb een php pagina met daarin verschillende gegevens, opgebouwd met ong 5 blokken als onderstaande:
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
echo "
<a name='Aantallen_te_Matchen_Orders'></a>
<b>Aantallen te Matchen Orders</b>  Status van ".$datumvandaag."  tijdstip ".$tijdnu." <a href='#Top'>Top</a>
</div>
<br>
<table style='text-align: left; width: 644px;' border='1' cellspacing='2' cellpadding='2'>
  <tbody>
    <tr>
      <td style='vertical-align: top; background-color: rgb(255, 204, 153);  text-align: center;'>Plangroep<br></td>
      <td style='vertical-align: top; background-color: rgb(255, 204, 153);  text-align: center;'>Totaal<br></td>
      <td style='vertical-align: top; background-color: rgb(255, 204, 153); text-align: center;'>ap1<br></td>
      <td style='vertical-align: top; background-color: rgb(255, 204, 153);  text-align: center;'>ap2<br></td>
      <td style='vertical-align: top; background-color: rgb(255, 204, 153);  text-align: center;'>ap3<br></td>
      <td style='vertical-align: top; background-color: rgb(255, 204, 153);  text-align: center;'>ap4<br></td>
      <td style='vertical-align: top; background-color: rgb(255, 204, 153);  text-align: center;'>ap5<br></td>
      <td style='vertical-align: top; background-color: rgb(255, 204, 153);  text-align: center;'>ap6<br></td>
      <td style='vertical-align: top; background-color: rgb(255, 204, 153);  text-align: center;'>ap7<br></td>
      <td style='vertical-align: top; background-color: rgb(255, 204, 153);  text-align: center;'>ap8<br></td>
      <td style='vertical-align: top; background-color: rgb(255, 204, 153);  text-align: center;'>ap9<br></td>
    </tr>
     <tr>
      <td style='vertical-align: top; text-align: center;'>Aantal<br></td>   
    ";
    AantalTeMatchen('lijst');
 echo " </tr> 
  </tbody>
</table>
 <br>
 ";

Nu moet er nieuwe pagina erbij komen die eigenlijk zorgt dat de verschillende blokken omstebeurten getoond worden. Dus eerst de uitkomst van blok 1, daarna blok 2, blok 3 etc.
Zag zoiets wel mbv javascript
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
ar quote=new Array();
  quote[0]='This is quote number one';    /* add as many quotes as you like!*/
  quote[1]='This is quote number two';
  quote[2]='This is quote number three';
  quote[3]='This is quote number four';
  quote[4]='This is quote number five';
  quote[5]='This is quote number six';
  quote[6]='This is quote number seven';
  quote[7]='This is quote number eight';
  quote[8]='This is quote number nine';
  quote[9]='This is quote number ten';

var speed=2000;    /*this is the time in milliseconds adjust to suit*/
var q=0;

function showQuote() {

     document.getElementById("quotes").innerHTML=quote[q];
     q++;
if(q==quote.length) {
     q=0;
  }
}
setInterval('showQuote()',speed);
   
 //]]>
</script>

Maar hoe ik t van mij erin zal moeten verwerken.. ik heb geen idee :N Jullie tips? of andere ideeen?
Swetseneggerdonderdag 22 december 2011 @ 08:49
Wat probeer je nu precies te bereiken? Je hebt een pagina waarin je random 1 van de 5 tables toont? Of je wil die 5 tables in willekeurige volgorde parsen?

-edit-
Ow wacht, je wil als de pagina geladen is op een bepaalde positie in je pagina elke keer een nieuw blok tonen zonder de pagina te verversen? Dat gaat niet met PHP, dat moet je clientside doen.
Cue_donderdag 22 december 2011 @ 08:52
Ik wil dat hij 10 sec table 1 laat zien, vervolgens 10 sec table 2 , tot en met table 5 en dan weer begint bij table 1.

edit:yup dat inderdaad. Zat al te zoeken naar het javascript topic, maar kon ik niet vinden (vaag) dus probeerde het hier even.
Swetseneggerdonderdag 22 december 2011 @ 08:54
Er was vroeger wel een javascript voor dummies topic.
Swetseneggerdonderdag 22 december 2011 @ 08:57
[Javascript] voor dummies (deel 12)
Cue_donderdag 22 december 2011 @ 08:59
quote:
Er is al 49 dagen niet in dit topic gepost. Bedenk je of het zinvol is dit topic omhoog te schoppen. Klik hier om tóch te reageren.

Geen wonder dat ik hem niet kon vinden. Tnx O+
MrNilesdonderdag 22 december 2011 @ 09:09
quote:
0s.gif Op donderdag 22 december 2011 08:59 schreef Cue_ het volgende:

[..]

Er is al 49 dagen niet in dit topic gepost. Bedenk je of het zinvol is dit topic omhoog te schoppen. Klik hier om tóch te reageren.

Geen wonder dat ik hem niet kon vinden. Tnx O+
[html, css, js] voor dummies #20 is meer actueler
Lightdonderdag 22 december 2011 @ 22:49
quote:
0s.gif Op woensdag 21 december 2011 23:45 schreef MXD het volgende:
Nee toch niet.

Ik heb 1x mijn gegevens ingevoerd en die staan nu in de database. Echter, als ik dit nog eens doe (met andere gegevens) krijg ik dit: Er is een fout opgetreden met foutnummer 1062 : Duplicate entry '0' for key 'PRIMARY'

Ik snapt dat het ID dan niet veranderd wordt en er van elk ID maar 1 mag zijn, maar hoe los ik dit op?
Door het veld ID niet op te nemen in je query. Hoef je er ook zelf geen waarde voor te verzinnen.
Lightdonderdag 22 december 2011 @ 23:01
quote:
3s.gif Op woensdag 21 december 2011 08:01 schreef GI het volgende:
Zit hier toevallig een regexp expert die mij een alleen alfanumerieke characters regexp kan vertellen ?
Ik heb nu bijvoorbeeld :
[ code verwijderd ]

om de cijfers uit een postcode te plukken. Maar ik wil nu een vergelijkbare hebben die het huisnummer weglaat uit een adres.

Nou kan ik wel valsspelen en de code die ik heb te gebruiken en die daarna uit het adres te replacen met "" maar das net weer niet netjes genoeg :+
Huisnummer weglaten uit het adres is lastig. Je hebt namelijk ook straten met een nummer in de straatnaam. En je hebt te maken met huisnummers met toevoeging, waarbij die toevoeging uit letters en/of cijfers en/of spaties kan bestaan. :)
The_Terminatordonderdag 22 december 2011 @ 23:09
quote:
0s.gif Op donderdag 22 december 2011 23:01 schreef Light het volgende:

[..]

Huisnummer weglaten uit het adres is lastig. Je hebt namelijk ook straten met een nummer in de straatnaam. En je hebt te maken met huisnummers met toevoeging, waarbij die toevoeging uit letters en/of cijfers en/of spaties kan bestaan. :)
Een deel kun je al opvangen door de string na de laatste spatie als huisnummer te beschouwen.
Lightdonderdag 22 december 2011 @ 23:14
quote:
0s.gif Op donderdag 22 december 2011 23:09 schreef The_Terminator het volgende:

[..]

Een deel kun je al opvangen door de string na de laatste spatie als huisnummer te beschouwen.
Dus in "Dorpsstraat 5 E" wil je "E" als huisnummer beschouwen?
KomtTijd...donderdag 22 december 2011 @ 23:15
quote:
0s.gif Op donderdag 22 december 2011 23:14 schreef Light het volgende:

[..]

Dus in "Dorpsstraat 5 E" wil je "E" als huisnummer beschouwen?
Maak er de laatste numerieke string van dan ;)
The_Terminatordonderdag 22 december 2011 @ 23:16
quote:
0s.gif Op donderdag 22 december 2011 23:14 schreef Light het volgende:

[..]

Dus in "Dorpsstraat 5 E" wil je "E" als huisnummer beschouwen?
Daarom zeg ik ook 'een deel', ik zeg niet dat mijn methode perfect is natuurlijk.
Apekoekvrijdag 23 december 2011 @ 11:57
Goed, ik heb deskundige hulp nodig, dat lijkt hier wel snor te zitten :) .

Ik heb namelijk een plugin in Wordpress die nog niet precies doet wat ik wil. Namelijk de "Contact form 7 to database extension". Graag wil ik de uploads die via het normale contact form zijn voltooid, downloadbaar worden in een post of op een pagina aan de voorkant. Echter zit ik hier met een PHP achtige generator die niet doet wat ik wil, of beter gezegd, welke code ik ook maak, ik kom er simpel weg niet uit. Ik zou namelijk erg graag het e-mail adres met de upload ergens in een post willen tonen.

Wat moet ik hier mee als jullie dit zo zien?
k51s04.png
Apekoekvrijdag 23 december 2011 @ 12:19
quote:
0s.gif Op vrijdag 23 december 2011 11:57 schreef Apekoek het volgende:
Goed, ik heb deskundige hulp nodig, dat lijkt hier wel snor te zitten :) .

Ik heb namelijk een plugin in Wordpress die nog niet precies doet wat ik wil. Namelijk de "Contact form 7 to database extension". Graag wil ik de uploads die via het normale contact form zijn voltooid, downloadbaar worden in een post of op een pagina aan de voorkant. Echter zit ik hier met een PHP achtige generator die niet doet wat ik wil, of beter gezegd, welke code ik ook maak, ik kom er simpel weg niet uit. Ik zou namelijk erg graag het e-mail adres met de upload ergens in een post willen tonen.

Wat moet ik hier mee als jullie dit zo zien?
[ afbeelding ]
Ik heb er nu zoiets van gemaakt:

1
2
3
4
5
6
7
[cfdb-html form="Test formulier" show="your-name,Upload" limit="10" orderby="Submitted desc" filelinks="link"]

<div class="your-headline-style">${your-name}</div>

<div class="download-link">${Upload}</div>

[/cfdb-html]

Echter zie ik dan alleen de namen van de uploads, geen downloadbare links. :(
Crimyclownvrijdag 23 december 2011 @ 13:34
Hoe submit je session values naar een database? Probeer het nu met een contactformulier maar krijg alleen maar errors.
Pakspulvrijdag 23 december 2011 @ 13:40
INSERT into database tabel?

Vaag antwoord op een vage vraag. Als je een concreter antwoord wilt dan moet je meer informatie geven. Vooral wat de foutmelding is kan zeer handig zijn.
Crimyclownvrijdag 23 december 2011 @ 13:57
1
2
3
<?php
session_start
();
?>

1
2
3
4
5
6
<form action="scripts/hoi.php" method="post"><table border="0">    
<?php $_SESSION['breedte'] = $_POST['breedte']; echo $_SESSION['breedte'] ?>
<?php $_SESSION['hoogte'] = $_POST['hoogte']; echo $_SESSION['hoogte'] ?>
<input type="text" name="naam" value="testnaam" readonly /></td>
<input type="submit" value="Invoeren" id="invoerknop" style="cursor:hand; cursor:pointer;" />
</form>

hoi.php
1
2
3
4
5
6
7
<?php
include("db.inc.php");

$sql="INSERT INTO crimyclowndb (breedte,hoogte,naam)
VALUES('{$_POST['breedte']}','{$_POST['hoogte']}','{$_POST['naam']}');"
;
mysql_query($sql) or die(mysql_error());
?>

foutmelding:
quote:
Array
(
[naam] => testnaam
)
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2


[ Bericht 10% gewijzigd door Crimyclown op 23-12-2011 14:18:20 ]
Pakspulvrijdag 23 december 2011 @ 14:08
Je geeft de SESSION waardes weer op het beeld en dan verwacht je dat ze ineens in het formulier terug komen? Dan zou je deze eerst aan een formulier object moeten handen.
1<input type=hidden name=hoogte value=10 />
bijvoorbeeld.

Of je moet $_SESSION i.p.v. $_POST in je query gebruiken.


[edit]Echo de $sql eens en kijken eens of je rare dingen ziet die niet mogen.[/edit]
Crimyclownvrijdag 23 december 2011 @ 14:54
quote:
0s.gif Op vrijdag 23 december 2011 14:08 schreef Pakspul het volgende:
Je geeft de SESSION waardes weer op het beeld en dan verwacht je dat ze ineens in het formulier terug komen? Dan zou je deze eerst aan een formulier object moeten handen.
[ code verwijderd ]

bijvoorbeeld.

Of je moet $_SESSION i.p.v. $_POST in je query gebruiken.

[edit]Echo de $sql eens en kijken eens of je rare dingen ziet die niet mogen.[/edit]
SESSIONS op alles gezet behalve de naam die op POST. Nu krijg ik geen errors meer, maar hij doet het ook nog niet.
Catch22-vrijdag 23 december 2011 @ 15:02
Ga alsjeblieft prepared statements gebruiken. Never, ever, ever, userinput (of post/get info) in je mysql gooien.
Pakspulvrijdag 23 december 2011 @ 15:04
quote:
7s.gif Op vrijdag 23 december 2011 14:54 schreef Crimyclown het volgende:

[..]

SESSIONS op alles gezet behalve de naam die op POST. Nu krijg ik geen errors meer, maar hij doet het ook nog niet.
Begrijp je eigenlijk wat je doet? Als je de query gaat debuggen wat zegt je logica dan?
quote:
11s.gif Op vrijdag 23 december 2011 15:02 schreef Catch22- het volgende:
Ga alsjeblieft prepared statements gebruiken. Never, ever, ever, userinput (of post/get info) in je mysql gooien.
Correct, maar laten we het voor niet te moeilijk maken :P
Crimyclownvrijdag 23 december 2011 @ 15:29
zoiets?
1
2
3
4
5
6
7
8
9
10
<?php
include("db.inc.php");
echo 
"<pre>";
print_r($_SESSION);

$query "INSERT into crimyclowndb (hoogte, breedte ) "
"VALUES ('$hoogte', '$breedte')";

mysql_query($query) or die('Error, query failed : ' mysql_error());
?>
Catch22-vrijdag 23 december 2011 @ 15:31
http://www.phptuts.nl/view/26/5/
Cue_vrijdag 23 december 2011 @ 15:36
quote:
11s.gif Op vrijdag 23 december 2011 15:02 schreef Catch22- het volgende:
Ga alsjeblieft prepared statements gebruiken. Never, ever, ever, userinput (of post/get info) in je mysql gooien.
Mag vast wel in Oracle he :P
hier willen we daar uiteindelijk nog wel naar toe, maar dat is ondertussen al een jaar uitgesteld volgens mij :')
Pakspulvrijdag 23 december 2011 @ 16:02
quote:
5s.gif Op vrijdag 23 december 2011 15:29 schreef Crimyclown het volgende:
zoiets?
[ code verwijderd ]

Je hebt dus absoluut geen idee wat je doet...
Crimyclownvrijdag 23 december 2011 @ 16:08
quote:
0s.gif Op vrijdag 23 december 2011 16:02 schreef Pakspul het volgende:

[..]

Je hebt dus absoluut geen idee wat je doet...
Niet bepaalt, zal straks het naslag werk erbij halen.
GlowMousevrijdag 23 december 2011 @ 16:13
*bepaald, *naslagwerk
Apekoekvrijdag 23 december 2011 @ 19:01
Iemand hier die me hier mee kan helpen?

quote:
0s.gif Op vrijdag 23 december 2011 11:57 schreef Apekoek het volgende:
Goed, ik heb deskundige hulp nodig, dat lijkt hier wel snor te zitten :) .

Ik heb namelijk een plugin in Wordpress die nog niet precies doet wat ik wil. Namelijk de "Contact form 7 to database extension". Graag wil ik de uploads die via het normale contact form zijn voltooid, downloadbaar worden in een post of op een pagina aan de voorkant. Echter zit ik hier met een PHP achtige generator die niet doet wat ik wil, of beter gezegd, welke code ik ook maak, ik kom er simpel weg niet uit. Ik zou namelijk erg graag het e-mail adres met de upload ergens in een post willen tonen.

Wat moet ik hier mee als jullie dit zo zien?
[ afbeelding ]
Lightvrijdag 23 december 2011 @ 23:55
quote:
0s.gif Op vrijdag 23 december 2011 15:04 schreef Pakspul het volgende:

Correct, maar laten we het voor niet te moeilijk maken :P
Alsof PDO lastiger is dan standaard SQL
Lightvrijdag 23 december 2011 @ 23:58
quote:
0s.gif Op vrijdag 23 december 2011 15:36 schreef Cue_ het volgende:

[..]

Mag vast wel in Oracle he :P
hier willen we daar uiteindelijk nog wel naar toe, maar dat is ondertussen al een jaar uitgesteld volgens mij :')
exploits_of_a_mom.png
Ofyles2zondag 25 december 2011 @ 18:18
quote:
0s.gif Op vrijdag 23 december 2011 23:55 schreef Light het volgende:

[..]

Alsof PDO lastiger is dan standaard SQL
Daar ben ik sinds kort op overgestapt. Dit omdat ik MySQL direct gebruiken onpraktischer begon te vinden en ik MySQLi ook zo'n onding vind.
glasbakmaandag 26 december 2011 @ 21:12
Ik loop weer eens te prutsen.

Ik heb (als voorbeeld) in mijn database, een tabel met 5 users, nummer 1,2,3,4 en 5 (hoe logisch).

Ik heb in een andere tabel vragen staan, met in een van de velden de nummers van users die die vraag al gezien hebben. Daar kan dus bijvoorbeeld instaan, 2,4,5

Hoe kan ik nu het beste een vraag selecteren die bijvoorbeeld user nummer 3 nog niet gehad heeft?

WHERE NOT IN (3) werkt niet, of ik moet iets verkeerds doen.

Of moet ik de manier van opslaan anders aanpakken?
GlowMousemaandag 26 december 2011 @ 21:43
http://explainextended.co(...)ts-nullable-columns/
MrNilesdinsdag 27 december 2011 @ 10:43
om maar op 1 plaats te wijzigen heb ik nu een menu gemaakt uit een database

1
2
3
4
5
<?php
$result 
mysql_query ("SELECT * FROM hoofdmenu ORDER BY H_id ASC");
while(
$row mysql_fetch_array($result)){              
echo 
"<a href = 'index_new.php?func=".$row['H_name']."' class='".$row['H_name']." ' >".$row['H_name']."</a>";
?>

maar hoe kan ik hier nu iets active maken?
ik gebruik functions voor elke pagina aan te roepen (index.php?func=home of func=pagina2 etc

zelf dat ik iets aan
1
2
3
4
5
6
7
8
9
10
<?php
$result 
mysql_query ("SELECT * FROM hoofdmenu ORDER BY H_id ASC");
while(
$row mysql_fetch_array($result)){

if (
$row['H_actief'] == "1") {
echo 
"<a href = 'index_new.php?func=".$row['H_name']."' class='".$row['H_name']." actief"." ' >".$row['H_name']."</a>";
}
else{
echo 
"<a href = 'index_new.php?func=".$row['H_name']."' class='".$row['H_name']." ' >".$row['H_name']."</a>";
?>

maar ben er nog niet helemaal aan uit hoe die 1 en 0 in de database kan updaten

iemand een idee hoe zoiets aan te pakken
of moet het helemaal anders opgezet worden?
mstxdinsdag 27 december 2011 @ 10:53
quote:
0s.gif Op dinsdag 27 december 2011 10:43 schreef MrNiles het volgende:
om maar op 1 plaats te wijzigen heb ik nu een menu gemaakt uit een database
[ code verwijderd ]

maar hoe kan ik hier nu iets active maken?
ik gebruik functions voor elke pagina aan te roepen (index.php?func=home of func=pagina2 etc

zelf dat ik iets aan
[ code verwijderd ]

maar ben er nog niet helemaal aan uit hoe die 1 en 0 in de database kan updaten

iemand een idee hoe zoiets aan te pakken
of moet het helemaal anders opgezet worden?
Je bedoelt dat het item met de pagina waar je op bent actief is?
1
2
3
<?php
if ($row['H_name'] == $_GET['func']) {
?>
MrNilesdinsdag 27 december 2011 @ 11:12
quote:
0s.gif Op dinsdag 27 december 2011 10:53 schreef mstx het volgende:

[..]

Je bedoelt dat het item met de pagina waar je op bent actief is?
[ code verwijderd ]

maar het wordt eigenlijk iets ingewikkelder :p
ik heb een "TOP"menu (een fixed balk bovenin de pagina) met enkele mogelijkheden
elk topmenu-item krijgt links op de pagina een submenu.
Ik had bedacht om ook daarvoor die func mee te geven..maar dan ben ik dus mijn actief in het topmenu kwijt

is dit iets voor multidimensional arrays?
ik wil geen dropdown menu maken maar een topmenu-balk die een submenu opent op het scherm

[ Bericht 4% gewijzigd door MrNiles op 27-12-2011 15:27:52 ]
Feyenoordlifevrijdag 30 december 2011 @ 16:40
Even geleden dat ik wat met PHP heb gedaan, en ik moet nu even snel iets fixen voor een trainingskamp. Het lukt mij alleen niet meer om meerdere records tegelijk in te voeren. Het was een simpel iets, maar ik kom er zo snel ff niet meer op.

Ik krijg een aantal resultaten uit mijn while loop en deze worden in een tabelletje gegooid (niet erg netjes nu, maar dat maakt hiervoor even niet uit).

1
2
3
4
5
6
7
8
9
10
<tr><td><?php echo $row[Naam]; ?><input name="Naam[]" value="<?php echo $row[Naam]; ?>" type="hidden"></td> <td><input name="Punten[]" size="2" value="1"></td> <td><input name="Onderdeel" value="<?php echo $Onderdeel?>" type="hidden"><input name="ID" value="<?php echo $row[ID]; ?>" type="hidden"></td></tr>
<?php ?>
</table>
<input type="submit" name="Opslaan" value="Opslaan" /></form><br />

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST' AND (!empty($_POST['Opslaan']))) {

$sql = ("INSERT INTO scoretabel VALUES('$Naam', '$Onderdeel', '$Punten')");
mysql_query($sql) or die(mysql_error());
Zou iemand dit even snel kunnen (helpen met) oplossen?
The_Terminatorvrijdag 30 december 2011 @ 17:27
quote:
0s.gif Op vrijdag 30 december 2011 16:40 schreef Feyenoordlife het volgende:
Even geleden dat ik wat met PHP heb gedaan, en ik moet nu even snel iets fixen voor een trainingskamp. Het lukt mij alleen niet meer om meerdere records tegelijk in te voeren. Het was een simpel iets, maar ik kom er zo snel ff niet meer op.

Ik krijg een aantal resultaten uit mijn while loop en deze worden in een tabelletje gegooid (niet erg netjes nu, maar dat maakt hiervoor even niet uit).
[ code verwijderd ]

Zou iemand dit even snel kunnen (helpen met) oplossen?
Je wilt alle gegevens uit de post array halen voor het element: "Naam[]"?

Zo ja;
1
2
3
4
5
<?php
foreach($_POST['naam'] as $k => $v) {
//hierin je code om het naar de db te schrijven. variable $v bevat de waarde van de input. Niet vergeten te escapen.
}
?>
Feyenoordlifevrijdag 30 december 2011 @ 18:15
quote:
0s.gif Op vrijdag 30 december 2011 17:27 schreef The_Terminator het volgende:

[..]

Je wilt alle gegevens uit de post array halen voor het element: "Naam[]"?

Zo ja;
[ code verwijderd ]

Ongeveer ja, alleen moeten de punten er ook nog bij. In ieder geval bedankt al voor dit gedeelte.
The_Terminatorvrijdag 30 december 2011 @ 21:39
quote:
0s.gif Op vrijdag 30 december 2011 18:15 schreef Feyenoordlife het volgende:

[..]

Ongeveer ja, alleen moeten de punten er ook nog bij. In ieder geval bedankt al voor dit gedeelte.
Zet dit in de loop om de punten array uit te lezen:

1
2
3
<?php
$punten 
$_POST['Punten'][$k];
?>
Feyenoordlifevrijdag 30 december 2011 @ 21:47
quote:
0s.gif Op vrijdag 30 december 2011 21:39 schreef The_Terminator het volgende:

[..]

Zet dit in de loop om de punten array uit te lezen:
[ code verwijderd ]

Yes, dat was hem ja. Dankje!
Feyenoordlifemaandag 2 januari 2012 @ 01:01
Nog een vraagje: Waarom sorteert hij nu niet gewoon netjes op Score van hoog naar laag?

1
2
3
4
5
6
7
8
9
10
11
<?php
foreach($_POST['Naam'] as $k => $v) {

    
$sql =  ("SELECT Naam, SUM(Punten) as Punten_totaal FROM scoretabel WHERE Naam = '".$v."' ORDER BY Punten_totaal DESC ");
    
    
$result mysql_query($sql) or die(mysql_error());
    while (
$row mysql_fetch_array($result)){
        echo 
"$row[Punten_totaal] $row[Naam] <br>";

    }
?>
GlowMousemaandag 2 januari 2012 @ 01:05
Van regel 4 t/m 9 doet hij dat wel, maar voor elke nieuwe $k en $v begint een nieuwe sortering. Let bij echo $row['Naam'] op voor XSS aanvallen.
Feyenoordlifemaandag 2 januari 2012 @ 01:12
quote:
0s.gif Op maandag 2 januari 2012 01:05 schreef GlowMouse het volgende:
Van regel 4 t/m 9 doet hij dat wel, maar voor elke nieuwe $k en $v begint een nieuwe sortering. Let bij echo $row['Naam'] op voor XSS aanvallen.
Bedankt, ga ik ff naar kijken. XSS aanvallen hoef ik voor dit projectje niet naar te kijken, wordt alleen door mij gebruikt draait op localhost.
Apekoekmaandag 2 januari 2012 @ 02:35
Een simpele vraag voor jullie kenners, voor mij echter niet, wie helpt mij uit de brand?

Ik wil downloadbare links tonen op mijn website, dit zijn bestanden die vanuit een upload map moeten komen. Echter krijg ik nu de meldong "forbidden" en de bestanden zijn dus nie letterlijk downloadbaar via de directe link. In dat zelfde mapje zit een .htaccess file waar "deny for all" in staat (dit bestand van contact forms 7 keert zelfs na verwijdering terug).

Hoe de links/uploads downloadbaar te maken zonder de "forbidden" pagina?
#ANONIEMmaandag 2 januari 2012 @ 10:40
quote:
1s.gif Op maandag 2 januari 2012 02:35 schreef Apekoek het volgende:
Een simpele vraag voor jullie kenners, voor mij echter niet, wie helpt mij uit de brand?

Ik wil downloadbare links tonen op mijn website, dit zijn bestanden die vanuit een upload map moeten komen. Echter krijg ik nu de meldong "forbidden" en de bestanden zijn dus nie letterlijk downloadbaar via de directe link. In dat zelfde mapje zit een .htaccess file waar "deny for all" in staat (dit bestand van contact forms 7 keert zelfs na verwijdering terug).

Hoe de links/uploads downloadbaar te maken zonder de "forbidden" pagina?
Je haalt nogal wat dingen door elkaar nu.
The_Terminatormaandag 2 januari 2012 @ 11:19
quote:
1s.gif Op maandag 2 januari 2012 02:35 schreef Apekoek het volgende:
Een simpele vraag voor jullie kenners, voor mij echter niet, wie helpt mij uit de brand?

Ik wil downloadbare links tonen op mijn website, dit zijn bestanden die vanuit een upload map moeten komen. Echter krijg ik nu de meldong "forbidden" en de bestanden zijn dus nie letterlijk downloadbaar via de directe link. In dat zelfde mapje zit een .htaccess file waar "deny for all" in staat (dit bestand van contact forms 7 keert zelfs na verwijdering terug).

Hoe de links/uploads downloadbaar te maken zonder de "forbidden" pagina?
Als dat bestand steeds terugkomt gaat het nooit lukken natuurlijk. Wat is 'contact forms 7' precies?

Je zou een soort van proxy script kunnen schrijven dat het bestand aanbiedt via de readfile functie, echter is het misschien beter om gewoon de oorzaak te achterhalen waarom dat .htaccess bestand steeds terugkeert na het verwijderen.
Apekoekmaandag 2 januari 2012 @ 11:32
quote:
0s.gif Op maandag 2 januari 2012 11:19 schreef The_Terminator het volgende:

[..]

Als dat bestand steeds terugkomt gaat het nooit lukken natuurlijk. Wat is 'contact forms 7' precies?

Je zou een soort van proxy script kunnen schrijven dat het bestand aanbiedt via de readfile functie, echter is het misschien beter om gewoon de oorzaak te achterhalen waarom dat .htaccess bestand steeds terugkeert na het verwijderen.
Zorgt de .htaccess met "Deny for all" voor de forbidden pagina wanneer ik uit dezelfde map een bestand downloadbaar wil maken?

Het gaat trouwens om een Wordpress plugin voor formulieren (http://contactform7.com/), de bestanden die worden upgeload via het formulier wil ik niet alleen per mail krijgen maar ook op mijn server krijgen (deze bestanden wil ik dan downloadbaar maken op een andere sectie op mijn website).

Hoe op te lossen? :)
The_Terminatormaandag 2 januari 2012 @ 11:41
quote:
0s.gif Op maandag 2 januari 2012 11:32 schreef Apekoek het volgende:

[..]

Zorgt de .htaccess met "Deny for all" voor de forbidden pagina wanneer ik uit dezelfde map een bestand downloadbaar wil maken?

Het gaat trouwens om een Wordpress plugin voor formulieren (http://contactform7.com/), de bestanden die worden upgeload via het formulier wil ik niet alleen per mail krijgen maar ook op mijn server krijgen (deze bestanden wil ik dan downloadbaar maken op een andere sectie op mijn website).

Hoe op te lossen? :)
Een .htaccess met daarin de string 'deny for all' zorgt er inderdaad voor dat de directory niet leesbaar is door de webserver. Je zou het op kunnen lossen door een lege .htaccess in de dir te plaatsten en die te chmodden naar bijvoorbeeld 444, dan kan de webserver het bestand niet meer aanpassen, een nette oplossing is het echter niet.

Zoals ik in mijn vorige bericht al aangaf zou je naar de oorzaak kunnen zoeken. Waarschijnlijk staat ergens in de broncode van de plugin een lijn code dat ervoor zorgt dat de .htaccess wordt weggeschreven, als een soort van beveiliging...
Apekoekmaandag 2 januari 2012 @ 11:46
quote:
0s.gif Op maandag 2 januari 2012 11:41 schreef The_Terminator het volgende:

[..]

Een .htaccess met daarin de string 'deny for all' zorgt er inderdaad voor dat de directory niet leesbaar is door de webserver. Je zou het op kunnen lossen door een lege .htaccess in de dir te plaatsten en die te chmodden naar bijvoorbeeld 444, dan kan de webserver het bestand niet meer aanpassen, een nette oplossing is het echter niet.

Zoals ik in mijn vorige bericht al aangaf zou je naar de oorzaak kunnen zoeken. Waarschijnlijk staat ergens in de broncode van de plugin een lijn code dat ervoor zorgt dat de .htaccess wordt weggeschreven, als een soort van beveiliging...
Klopt het dient als een beveiliging, dus ik ben ook niet helemaal zeker van of ik hier goed aan doe. Correctie, ik bedoelde deny from all ipv for, maar het idee zal wel hetzelfde zijn.
Apekoekmaandag 2 januari 2012 @ 11:48
quote:
0s.gif Op maandag 2 januari 2012 11:41 schreef The_Terminator het volgende:

[..]

Een .htaccess met daarin de string 'deny for all' zorgt er inderdaad voor dat de directory niet leesbaar is door de webserver. Je zou het op kunnen lossen door een lege .htaccess in de dir te plaatsten en die te chmodden naar bijvoorbeeld 444, dan kan de webserver het bestand niet meer aanpassen, een nette oplossing is het echter niet.

Zoals ik in mijn vorige bericht al aangaf zou je naar de oorzaak kunnen zoeken. Waarschijnlijk staat ergens in de broncode van de plugin een lijn code dat ervoor zorgt dat de .htaccess wordt weggeschreven, als een soort van beveiliging...
Helaas, zelfs een lege .htaccess file op een chmod van 444 zorgt voor een 403 Forbidden pagina (wanneer ik een upgeload bestand wil benaderen vanuit mijn website).
GlowMousemaandag 2 januari 2012 @ 11:51
Zet er Options +Indexes in.
Apekoekmaandag 2 januari 2012 @ 12:46
quote:
0s.gif Op maandag 2 januari 2012 11:51 schreef GlowMouse het volgende:
Zet er Options +Indexes in.
Nog steeds niet het gewenste resultaat en al heel wat geprobeerd, ik denk dat ik maar eens voor een betaalde plugin met de gewenste functies ga (raden jullie dat ook aan in het geval van een n00b zoals ik?).
Onnomanwoensdag 4 januari 2012 @ 14:49
Goedemiddag,

ik probeer 2 google web translators toe te passen op mijn website, die synchroon werken.
Dus gewoon eigenlijk een duplicaat.

dit div element plaatst de google dropdown, maar als je deze elders ook wilt toepassen krijg ik deze niet in zicht.

<div id="google_translate_element"></div>

(zie http://translate.google.com/translate_tools )
Ofyles2woensdag 4 januari 2012 @ 16:12
quote:
0s.gif Op woensdag 4 januari 2012 14:49 schreef Onnoman het volgende:
Goedemiddag,

ik probeer 2 google web translators toe te passen op mijn website, die synchroon werken.
Dus gewoon eigenlijk een duplicaat.

dit div element plaatst de google dropdown, maar als je deze elders ook wilt toepassen krijg ik deze niet in zicht.

<div id="google_translate_element"></div>

(zie http://translate.google.com/translate_tools )
Div-id's kun je maar één keer in een pagina gebruiken, div-classes onbeperkt.
Vanillaxdonderdag 5 januari 2012 @ 00:17
Hoi allemaal :)
Ik ben bezig met een website voor mijn vriend, omdat ik graag meer wil leren qua websites bouwen en omdat ik het gewoon leuk vind.

Ik heb een PHP mail form script van mijn leraar gehad, tijdens het oefenen ging het super maar ik ben nu even helemaal de draad kwijt, en tsja, het is vakantie.
Ik heb het script werkende gekregen maar ik snap niet waar ik moet opgeven naar welk adres het bericht verzonden moet worden..
Ik dacht bij 'mail' maar nu krijg ik te zien dat het bericht niet verzonden kan worden.
Wat gaat er fout? :s

Dit is de pagina; http://www.lucsenden.nl/contact.php
Tegandonderdag 5 januari 2012 @ 00:18
Je script?
Lightdonderdag 5 januari 2012 @ 00:24
quote:
Da's niet echt nuttig op die manier, zo kunnen we de PHP code niet lezen.
Beter plaats je de code hier, tussen [php] en [/php]. Dan verschijnt het met regelnummers en allemaal leuke kleurtjes enzo, helpt vaak ook :) Verder is het handig als je probeert om je code te beperken tot de relevant delen.
Vanillaxdonderdag 5 januari 2012 @ 00:24
Ah, ja. Ik heb zojuist geleerd dat je dat niet kan zien via de source.
Hier mijn volledige code;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<HEAD><TITLE>www.lucsenden.nl - Voor al uw videoproducties.</TITLE>

<META content="text/html; charset=utf-8" http-equiv=Content-Type>

<META name=robots content=index,follow>

<META name=keywords content=" ">

<META name=description content=" ">

<META content=0 http-equiv=Expires><LINK rel=stylesheet type=text/css href="style.css" media=screen>

<script type="text/javascript" src="js/jquery-1.4.2.js"></script>
<!--[if IE]>
<link type="text/css" href="css/ie.css" rel="stylesheet" media="screen" />
<![endif]-->
<!--[if IE 6]>
<script type="text/javascript" src="js/pngfix.js"></script>
<script type="text/javascript"> 
DD_belatedPNG.fix('img,#logo');
</script> 
<![endif]-->

<LINK rel=stylesheet type=text/css href="css/ie.css" media=screen>

</HEAD>

<BODY>

<DIV class=top-bar-wrap>&nbsp;</DIV>

<DIV class=main-bg>

<DIV id=sub-page class=main-wrap>

<DIV id=header class=mod-con>

<H1 id=logo><A href="/#"><IMG alt="" src="/image/luc.png"></A></H1>

<UL id=main-menu>

<LI><A href="/index.html"><STRONG>Home</STRONG></A><A class=cur href="/about.html"><STRONG>Over mij</STRONG></A> </LI>

<LI><A href="/diensten.html"><STRONG>Diensten</STRONG></A> </LI>

<LI><A href="/portfolio.html"><STRONG>Portfolio</STRONG></A> </LI>

<LI><A href="/referenties.html"><STRONG>Referenties</STRONG></A> </LI>

<LI><A href="/contact.html"><STRONG>Contact</STRONG></A> </LI></UL></DIV>

<DIV id=main class=mod-con>

<DIV class="container clearfix">

<DIV style="WIDTH: 861px;HEIGHT: 1006px" id=about-page class=main-con>

<DIV class=title-nav>

<H2>Contact</H2></DIV>

<DIV class=content>

<P>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam et risus non arcu porttitor feugi at in at neque. In hac habitasse platea dictumst. Proin pretium neque at turpis fermentum de aliquet. Ut risus nisi, scelerisque in convallis et, volutpat malesuada elit. Ut nulla libero, condi entum eget scelerisque eget, blandit sit amet metus. Suspendisse potenti. Nulla luctus temus augue dictum cursus. Curabitur non risus dui. In sit amet tellus in lacus fringilla condimentuma t sit amet libero. Fusce purus ligula, hendrerit ut vulputate eget, vestibulum non diam. Vestib ulum facilisis, leo id volutpat vestibulum, eros ligula ornare urna, pellentesque laoreet magna purus ac metus. Nulla facilisi.</P>
<?php

echo '';

if(isset(
$_POST['submit'])) {

    
$subject $_POST['naam'].' stuurde een mail via PHP!';
    
$email $_POST['xmemorylane@hotmail.com'];
    
$bericht wordwrap($_POST['bericht'], 70);
    
    
$versturen_gelukt mail($email$subject$bericht);
    
    if(
$versturen_gelukt) {
        echo 
'        <p>De email is verstuurd! <a href="'.$_SERVER['PHP_SELF'].'">Nog een mail sturen</a>.</p>'."\r\n";
    } else {
        echo 
'        <p>Er is iets mis gegaan, <a href="'.$_SERVER['PHP_SELF'].'">probeer het opnieuw</a>.</p>'."\r\n";
    }

} else {

    echo 
'
    <form action="'
.$_SERVER['PHP_SELF'].'" method="POST" type="text/plain">

        <label for="name">Naam</label>
            <input type="naam" name="naam" id="naam" />
            
        <label for="email">Email</label>
            <input type="email" name="email" id="email" />
            
        <label for="bericht">Bericht</label>
            <textarea name="bericht" id="bericht"></textarea>
            
        <label for="submit"></label>
            <input type="submit" name="submit" id="submit" value="Stuur bericht!" />
            
    </form>
    '
;
}

echo 
' ';

?>
</DIV></DIV></DIV></DIV></DIV></DIV>

<DIV class=siteintro-wrap>&nbsp;</DIV>
<DIV class=footer-wrap>
    <DIV id=footer class=mod-con>
    <DIV class=copyright>&#169 2012 Copyright Lucsenden.nl. All Rights Reserved.
    </DIV>
        <DIV class=hovergallery>
        <a href="http://facebook.com/lucsenden"><img src="http://i44.tinypic.com/10p9g5i.png" /></a>
        <a href="http://youtube.com/luckske112"><img src="http://i44.tinypic.com/34rwqdv.png" /></a>
        <a href="http://twitter.com/lucsenden"><img src="http://i42.tinypic.com/xfst8g.png" /></a>
        </DIV>
    </DIV></DIV></BODY></html>


[ Bericht 21% gewijzigd door Vanillax op 05-01-2012 00:35:19 ]
Vanillaxdonderdag 5 januari 2012 @ 00:25
Diepe zucht. Ik kan niet quoten, kan geen tekst in een area zetten, helemaal niks. Wordt er gek van.
Lightdonderdag 5 januari 2012 @ 00:26
quote:
0s.gif Op donderdag 5 januari 2012 00:25 schreef Vanillax het volgende:
Diepe zucht. Ik kan niet quoten, kan geen tekst in een area zetten, helemaal niks. Wordt er gek van.
Dan moet je je adblocker uitzetten.
Vanillaxdonderdag 5 januari 2012 @ 00:27
Super. Dankje! :P
GlowMousedonderdag 5 januari 2012 @ 00:28
kijk eens naar http://nl3.php.net/manual/en/function.mail.php
Vanillaxdonderdag 5 januari 2012 @ 00:33
quote:
Ik had die pagina toevallig net gevonden, ik snap het alleen niet want ze hebben het daar over mails versturen vanuit een script en niet vanuit een form. Ik weet dat mijn script goed is (tenminste, dat mag ik toch hopen als de hele klas het al gebruikt heeft) alleen ik weet niet hoe ik hem werkende krijg..

Als ik nu alles invul en op zenden klik komt er 'Er is iets mis gegaan, probeer het opnieuw'.
Lightdonderdag 5 januari 2012 @ 00:35
quote:
0s.gif Op donderdag 5 januari 2012 00:24 schreef Vanillax het volgende:
Ah, ja. Ik heb zojuist geleerd dat je dat niet kan zien via de source.
Hier mijn volledige code;
[ code verwijderd ]

Op regel 74 wordt $_POST uitgelezen voor een e-mailadres. Het adres staat helemaal niet in $_POST, en al zeker niet met de key die je daar uitleest.
KomtTijd...donderdag 5 januari 2012 @ 00:37
quote:
0s.gif Op donderdag 5 januari 2012 00:33 schreef Vanillax het volgende:

[..]

Ik had die pagina toevallig net gevonden, ik snap het alleen niet want ze hebben het daar over mails versturen vanuit een script en niet vanuit een form. Ik weet dat mijn script goed is (tenminste, dat mag ik toch hopen als de hele klas het al gebruikt heeft) alleen ik weet niet hoe ik hem werkende krijg..

Als ik nu alles invul en op zenden klik komt er 'Er is iets mis gegaan, probeer het opnieuw'.
Je script is helemaal niet goed. Ga je gewoon eens verdiepen in wat je aan het doen bent, in plaats van (fout) het werk van je klasgenoten te kopieren en dan gelijk hierheen rennen als het niet werkt. Zo leer je nooit wat.
Vanillaxdonderdag 5 januari 2012 @ 00:38
quote:
13s.gif Op donderdag 5 januari 2012 00:37 schreef KomtTijd... het volgende:

[..]

Je script is helemaal niet goed. Ga je gewoon eens verdiepen in wat je aan het doen bent, in plaats van (fout) het werk van je klasgenoten te kopieren en dan gelijk hierheen rennen als het niet werkt. Zo leer je nooit wat.
Fout werk van mijn klasgenoten?
Het is een bestand dat we gekregen hebben van de leraar om mee te oefenen en om van te leren.
Ik ben er al de hele dag mee bezig, heb vanalles gelezen en geprobeerd dus ga nu alsjeblieft niet beginnen over 'gelijk hierheen rennen als het niet werkt'.
Bedankt voor je geweldige hulp.
Tegandonderdag 5 januari 2012 @ 00:39
Post eens het originele bestand van je leraar dan?
Vanillaxdonderdag 5 januari 2012 @ 00:41
Dit is zijn volledige bestand;

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

echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    
    <title>Email formulier</title>
    <link href="/style/style_normal.css" rel="Stylesheet" type="text/css" media="all" />
</head>
<body>
    
    <div id="wrapper">
'
;

if(isset(
$_POST['submit'])) {

    
$subject $_POST['naam'].' stuurde een mail via PHP!';
    
$email $_POST['email'];
    
$bericht wordwrap($_POST['bericht'], 70);
    
    
$versturen_gelukt mail($email$subject$bericht);
    
    if(
$versturen_gelukt) {
        echo 
'        <p>De email is verstuurd! <a href="'.$_SERVER['PHP_SELF'].'">Nog een mail sturen</a>.</p>'."\r\n";
    } else {
        echo 
'        <p>Er is iets mis gegaan, <a href="'.$_SERVER['PHP_SELF'].'">probeer het opnieuw</a>.</p>'."\r\n";
    }

} else {

    echo 
'
    <form action="'
.$_SERVER['PHP_SELF'].'" method="POST" type="text/plain">

        <label for="name">Naam</label>
            <input type="naam" name="naam" id="naam" />
            
        <label for="email">Email</label>
            <input type="email" name="email" id="email" />
            
        <label for="bericht">Bericht</label>
            <textarea name="bericht" id="bericht"></textarea>
            
        <label for="submit"></label>
            <input type="submit" name="submit" id="submit" value="Stuur bericht!" />
            
    </form>
    '
;
}

echo 
'
    </div>

</body>
</html>
'
;

?>
Tegandonderdag 5 januari 2012 @ 00:47
Ok, en wat heb je allemaal aangepast?

Regel 19 bijvoorbeeld. Waarom heb je daar je email ingevuld?
Lightdonderdag 5 januari 2012 @ 00:47
Uit jouw versie:
1
2
3
4
5
6
7
8
9
<?php
if(isset($_POST['submit'])) {

    
$subject $_POST['naam'].' stuurde een mail via PHP!';
    
$email $_POST['xmemorylane@hotmail.com'];
    
$bericht wordwrap($_POST['bericht'], 70);
    
    
$versturen_gelukt mail($email$subject$bericht);
?>

Uit de versie van je docent:
1
2
3
4
5
6
7
8
9
<?php
if(isset($_POST['submit'])) {

    
$subject $_POST['naam'].' stuurde een mail via PHP!';
    
$email $_POST['email'];
    
$bericht wordwrap($_POST['bericht'], 70);
    
    
$versturen_gelukt mail($email$subject$bericht);
?>

Zoek de verschillen :)
GlowMousedonderdag 5 januari 2012 @ 00:47
quote:
0s.gif Op donderdag 5 januari 2012 00:33 schreef Vanillax het volgende:

[..]

Ik had die pagina toevallig net gevonden, ik snap het alleen niet want ze hebben het daar over mails versturen vanuit een script en niet vanuit een form. Ik weet dat mijn script goed is (tenminste, dat mag ik toch hopen als de hele klas het al gebruikt heeft) alleen ik weet niet hoe ik hem werkende krijg..

Als ik nu alles invul en op zenden klik komt er 'Er is iets mis gegaan, probeer het opnieuw'.
Ergens in jouw code staat mail(...). Uit http://nl3.php.net/manual/en/function.mail.php haal je dat de eerste parameter het e-mailadres is waar de e-mail naartoe wordt gestuurd. Daar vul jij $email in. Kijk eens welke waarde $email heeft.
Lightdonderdag 5 januari 2012 @ 00:49
quote:
0s.gif Op donderdag 5 januari 2012 00:47 schreef Tegan het volgende:
Ok, en wat heb je allemaal aangepast?

Regel 19 bijvoorbeeld. Waarom heb je daar je email ingevuld?
quote:
0s.gif Op donderdag 5 januari 2012 00:35 schreef Light het volgende:

[..]

Op regel 74 wordt $_POST uitgelezen voor een e-mailadres. Het adres staat helemaal niet in $_POST, en al zeker niet met de key die je daar uitleest.
Vanillaxdonderdag 5 januari 2012 @ 00:54
Ah, ik vulde daar mijn email in omdat ik dat ergens op google had gelezen, maar dat is dus niet de bedoeling.

Alleen begrijp ik glowmouse niet helemaal..
Ik vul bij de waarde die mijn email adres moet zijn $email in?
Maar dat is dus niet goed?
Over welke regel heb jij het daar glowmouse?

//Volgensmij komt er rond deze tijd echt niets zinnigs uit me, bedankt voor de hulp alvast en ik spreek jullie hopelijk morgen weer :)
Tegandonderdag 5 januari 2012 @ 01:12
Dat script is gemaakt om een email te sturen naar diegene die je invult bij 'email' in het formulier dus :P.

Denk niet dat het jou zelfstandig gaat lukken om hem aan te passen naar je eigen wensen. Een script dat een email naar een vast emailadres stuurt.
Sitethiefdonderdag 5 januari 2012 @ 09:40
@Vanillax

Even een korte uitleg
1
2
3
4
5
6
7
8
9
10
11
12
$variable  //dit is een variable
//in een variable kun je van alles stoppen
$variable = 'lala'  //nu zit er lala in $variable
echo $variable //nu verschijnt er de inhoud van $variable op het scherm
$variable = 'lulu'  //nu zit er lulu in $variable

//er bestaan ook arrays, dat is een soort lijst met keys en values
$test = array();  //hier maak je een array mee aan die leeg is
$test['lala'] = 'haha'; //hiermee maak je een array aan met een key die lala heet en een waarde die haha heet

//een speciaal type array is bijvoorbeeld $_POST
$_POST['email'] //hier staat de waarde van het veld uit je formulier met de naam 'email' . Het ['email'] achter $_POST is dus niet de plek waar jij je eigen mailadres moet invullen. Dat doe je in het veld zelf.
boem-dikkiedonderdag 5 januari 2012 @ 11:05
Dat script van die leraar trouwens. Je hele HTML echo'en. :')
GlowMousedonderdag 5 januari 2012 @ 11:08
quote:
9s.gif Op donderdag 5 januari 2012 11:05 schreef boem-dikkie het volgende:
Dat script van die leraar trouwens. Je hele HTML echo'enSpammers vrij spel geven. :')
Sitethiefdonderdag 5 januari 2012 @ 12:01
Technisch gezien echo'en de meeste template parsers ook ;) .
KomtTijd...donderdag 5 januari 2012 @ 12:02
quote:
0s.gif Op donderdag 5 januari 2012 12:01 schreef Sitethief het volgende:
Technisch gezien echo'en de meeste template parsers ook ;) .
Template parsers júíst niet, over het algemeen.
#ANONIEMdonderdag 5 januari 2012 @ 12:10
Dat hele script :')
The_Terminatordonderdag 5 januari 2012 @ 12:38
quote:
9s.gif Op donderdag 5 januari 2012 11:05 schreef boem-dikkie het volgende:
Dat script van die leraar trouwens. Je hele HTML echo'en. :')
Erg slordig idd. Waarom makkelijk doen als het moeilijk kan :')

@Vanillax: laat je leraar het volgende even zien, die heeft blijkbaar nog veel te leren op PHP gebied...

1
2
3
4
5
6
7
8
<html>
<head>
<title>bla</title>
</head>
<body>
<center><?php echo str_repeat('bla '1000); ?></center>
</body>
</html>


[ Bericht 2% gewijzigd door The_Terminator op 05-01-2012 13:02:22 ]
GlowMousedonderdag 5 januari 2012 @ 12:45
quote:
7s.gif Op donderdag 5 januari 2012 12:38 schreef The_Terminator het volgende:

[..]

Erg slordig idd. Waarom makkelijk doen als het moeilijk kan :')

@Vanillax: laat je leraar het volgende even zien, die heeft blijkbaar nog veel te leren op PHP gebied...
[ code verwijderd ]

geen echo
Pakspuldonderdag 5 januari 2012 @ 12:51
quote:
16s.gif Op donderdag 5 januari 2012 12:45 schreef GlowMouse het volgende:

[..]

geen echo
of = teken i.c.m. shorttags. :P
The_Terminatordonderdag 5 januari 2012 @ 13:02
quote:
16s.gif Op donderdag 5 januari 2012 12:45 schreef GlowMouse het volgende:

[..]

geen echo
Oeps :') Toegevoegd :@
Geflipte-Koelkastdonderdag 5 januari 2012 @ 14:06
Goedemiddag,

Ik heb het volgende probleem: Ik heb een contact pagina op mijn website gezet in html, en het mail script in PHP. Geen probleem, het word gewoon verzonden en ik ontvang ook een mailtje in de mailbox. Echter, de ingevulde tekstvelden worden niet meegezonden, waardoor ik een witte mail te zien krijg. Wat doet ik fout?

Oja, vroeger nooit problemen gehad met script, maar het trad op na de verhuizing van de bestanden.
SPOILER
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
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Naam</title>
</head>

<body>
<form method="post" action="http://walibi.herobo.com/vergelijkdebon/formulierverzenden.php">
    <ul>
        <li>Je voornaam *</li>
        <li><input type="text" name="voornaam" /></li>
        <li>Je achternaam *</li>
        <li><input type="text" name="achternaam" /></li>
        <li>Je e-mail adres *</li>
        <li><input type="text" name="email" /></li>
        <li>Je berichtje *</li>
        <li><textarea cols="50" rows="12" name="bericht"></textarea></li>
        <li><input type="reset" value="Begin opnieuw" /> <input type="submit" name="versturen" value="Verstuur bericht" /></li>
    </ul>
    <p>Alle velden gemarkeerd met een * zijn verplicht.</p>
</form>
</body>

</html>

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
<?php
$naar 
'contact@hiereenemailadres.nl'// Waar moet het naartoe?
$onderwerp 'Contact via Website'// Het onderwerp van het bericht
 
// Header instellen, zodat nl2br() werkt
$headers "MIME-version: 1.0\r\n"
$headers .= "content-type: text/html;charset=utf-8\r\n";
 
if(isset(
$_POST['versturen'])) // Als het formulier verzonden is door op de verzend knop te klikken
{
    
$voornaam trim($_POST['voornaam']); // Alle overbodige spaties uit het voornaam veld verwijderen
    
$achternaam trim($_POST['achternaam']); // Alle overbodige spaties uit het achternaam veld verwijderen
    
$email trim($_POST['email']); // Alle overbodige spaties uit het email veld verwijderen
    
$bericht trim($_POST['bericht']); // Alle overbodige spaties uit het bericht veld verwijderen
    
$fout false// Om te kijken straks of er wat fout is
 
    
}
    if(empty(
$email)) // Als het email veld niet is ingevuld
    
{
        print 
'<p>Helaas, het email veld is verplicht maar is nu niet ingevuld!</p>';
        
$fout true;
    }
    if(!
filter_var($emailFILTER_VALIDATE_EMAIL)) // Als het email adres niet correct is
    
{
        print 
'<p>Helaas, het email adres is niet correct!</p>';
        
$fout true;
    }
 
    if(
$fout == false// Als er niks fout is (alles is dus netjes ingevuld)
    
{
        
$headers .= 'From: ' $voornaam ' ' $achternaam '<' $email '>'// Een afzender instellen zodat je kan reageren.
 
        
if(mail($naar$onderwerpnl2br($bericht), $headers))
        {
            print 
'<p>Het bericht is succesvol verzonden!</p>';
        }
        else
        {
            print 
'<p>Helaas, er is wat fout gegaan tijdens het verzenden van het formulier.</p>';
        }
    }
?>
GlowMousedonderdag 5 januari 2012 @ 14:11
Dat is raar, denk ook niet dat er zo wat over te zeggen valt. Je kunt de bron van de e-mail eens goed bekijken. Let ook op mail header injection.
Vanillaxdonderdag 5 januari 2012 @ 15:17
Bedankt voor de hulp allemaal, vooral die uitleg, ik snap nu wat alles is.
En ik snap dus ook wat er fout ging bij het script, ik moet dus een totaal ander script hebben.

Weten jullie of het mogelijk is zo'n script kant en klaar van internet te halen?
Of heb ik ook daar nog niet genoeg kennis voor?
Vriendlief wil wel graag een contact formulier op zn website namelijk..
Dokaydonderdag 5 januari 2012 @ 21:40
Beste PHP devvers,

Even een vrij basale vraag. Voor mijn werkgever heb ik een php applicatie in elkaar geknutseld waarbij men intern mensen in kan roosteren en mensen extern aan kunnen geven wanneer ze beschikbaar zijn. Ziekte en verlof worden ook allemaal geregeld, iedereen blij. Alleen nu het steeds meer en meer gebruikt wordt door deze middelgrote organisatie begint mijn zorg over de veiligheid te stijgen. Laat ik eerlijk zijn: ik heb het in elkaar gezet met trail en error, heb nooit een PHP boek of cursus gedaan en met frunniken lukt me eigenlijk altijd wel wat ik wil. Maar ik weet ook dat het waarschijnlijk niet de veiligste en meest efficiente manier is.

Waar ik vooral tegen aan loop en wil vragen hoe jullie dat doen;

Als ik variabelen door minimaal 2 verschillende page's moet loodsen, gebruik ik de HTML "hidden input" tag om deze vast te houden en vervolgens weer door te zetten naar de volgende pagina die er wat mee doet.

Nou heb ik er nooit bij stilgestaan dat een kwaadwillende gebruiker deze hidden input tag kan invullen naar wens en vervolgens terug kan sturen naar de server met allerlei kwaadaardige code. In het geval van mijn appje zou dat een catastrofe zijn, want het zit bomvol met dit soort code om de eerder opgegeven waarde vast te houden.

Ik heb gepoogd om een extra SESSION aan te maken om de variable vast te houden, maar er loopt er al een van de gebruiker die ingelogd is en welke zijn ID vasthoud. Het geeft problemen als ik een tweede sessie hiernaast probeer te starten want dan wordt aangegeven dat er al een sessie loopt.

Hoe lossen jullie dit op? Alvast bedankt!
Ofyles2donderdag 5 januari 2012 @ 21:50
quote:
9s.gif Op donderdag 5 januari 2012 11:05 schreef boem-dikkie het volgende:
Dat script van die leraar trouwens. Je hele HTML echo'en. :')
Deed ik heel vroeger ook (toen ik 16-17 was), nu werk ik volgens OOP en MVC.

Liever een onderhoudsvriendelijk bulkproject dan een klein compact en onoverzichtelijk pakketje.
Ofyles2donderdag 5 januari 2012 @ 22:00
quote:
6s.gif Op donderdag 5 januari 2012 21:40 schreef Dokay het volgende:
Beste PHP devvers,

Even een vrij basale vraag. Voor mijn werkgever heb ik een php applicatie in elkaar geknutseld waarbij men intern mensen in kan roosteren en mensen extern aan kunnen geven wanneer ze beschikbaar zijn. Ziekte en verlof worden ook allemaal geregeld, iedereen blij. Alleen nu het steeds meer en meer gebruikt wordt door deze middelgrote organisatie begint mijn zorg over de veiligheid te stijgen. Laat ik eerlijk zijn: ik heb het in elkaar gezet met trail en error, heb nooit een PHP boek of cursus gedaan en met frunniken lukt me eigenlijk altijd wel wat ik wil. Maar ik weet ook dat het waarschijnlijk niet de veiligste en meest efficiente manier is.

Waar ik vooral tegen aan loop en wil vragen hoe jullie dat doen;

Als ik variabelen door minimaal 2 verschillende page's moet loodsen, gebruik ik de HTML "hidden input" tag om deze vast te houden en vervolgens weer door te zetten naar de volgende pagina die er wat mee doet.

Nou heb ik er nooit bij stilgestaan dat een kwaadwillende gebruiker deze hidden input tag kan invullen naar wens en vervolgens terug kan sturen naar de server met allerlei kwaadaardige code. In het geval van mijn appje zou dat een catastrofe zijn, want het zit bomvol met dit soort code om de eerder opgegeven waarde vast te houden.

Ik heb gepoogd om een extra SESSION aan te maken om de variable vast te houden, maar er loopt er al een van de gebruiker die ingelogd is en welke zijn ID vasthoud. Het geeft problemen als ik een tweede sessie hiernaast probeer te starten want dan wordt aangegeven dat er al een sessie loopt.

Hoe lossen jullie dit op? Alvast bedankt!
Extra sessies zijn eigenlijk ook slechts lapmiddelen.

Ik zou de gegevens gewoon controleren totdat een gebruiker zijn opdracht volledig heeft voltooid.

Dus onder andere: waarden typecasten (in een voor jouw gunstige type), reguliere expressies, htmlentities, strip_tags. Ik stel voor de controlemodellen in een aparte map op te slaan en de bestanden hierin alleen aan te roepen als het echt nodig is.

Desgewenst kun je je projectje ook naar mij toesturen als je het echt niet ziet zitten...
Dokaydonderdag 5 januari 2012 @ 22:20
quote:
0s.gif Op donderdag 5 januari 2012 22:00 schreef Ofyles2 het volgende:

[..]

Extra sessies zijn eigenlijk ook slechts lapmiddelen.

Ik zou de gegevens gewoon controleren totdat een gebruiker zijn opdracht volledig heeft voltooid.

Dus onder andere: waarden typecasten (in een voor jouw gunstige type), reguliere expressies, htmlentities, strip_tags. Ik stel voor de controlemodellen in een aparte map op te slaan en de bestanden hierin alleen aan te roepen als het echt nodig is.

Desgewenst kun je je projectje ook naar mij toesturen als je het echt niet ziet zitten...
Bedankt voor je snelle reactie,

Ik ging ervanuit dat de gebruiker geen manier heeft om te zien wat er in een server sided sessie gebeurt, tegenover de hidden value HTML tag die vanaf de gebruikers' machine wordt verstuurd. Ik strip inderdaad al form input van ongewenste mogelijke injectie input, maar zit nog steeds met het feit dat ik weet dat de verkeerde methode gebruikt wordt om variabelen door te geven.

Wat ook moeilijk is is vanaf een initieel overzicht de waarde aan een php script doorgeven. Wat ik hiermee bedoel (voorbeeld alert..);

Ik heb een lijst met zeg 30 diensten, welk allemaal uit de database worden getrokken en onder elkaar gezet. Elke dienst heeft een unieke "id", waarmee deze word onderscheiden van andere diensten. Deze unieke dienst id word voor elke dienst opgeslagen in een bijbehorende "hidden input" HTML tag. De gebruiker kan zich opgeven voor een openstaande dienst door op de knop "Inschrijven" te drukk die naast elke dienst wordt weergeven. Tot zover goed.

Nou wil een kwaadwillende gebruiker eens het systeem in de war schoppen en besluit deze id aan te passen en wellicht al toegewezen diensten over te schrijven door een al bestaande id van een andere dienst op te geven, of het systeem te laten crashen door sql injectie code in de hidden value te plaatsen of een andere foutieve waarde.

Vraag: Hoe kan ik het systeem laten begrijpen om welke dienst het gaat die de gebruiker selecteert, maar wel dat het veilig is en dat de gebruiker er geen misbruik van zou kunnen maken?
Ofyles2donderdag 5 januari 2012 @ 22:29
In dat geval zou ik ook voor de 30 diensten een aparte MySQL-tabel maken. Het id-nummer zou ik meegeven met de URL.

Wat betreft SQL-injecties: deze kun je tegengaan door invoerwaarden te controleren en eventueel te escapen (mysql_real_escape_string).

Off-topic:

Een veel betere aanrader is PDO (hier een tutorial), waarmee je meerdere databasesystemen kunt gebruiken zonder complete codeblokken om te ploegen.
Pakspuldonderdag 5 januari 2012 @ 22:31
quote:
0s.gif Op donderdag 5 januari 2012 22:29 schreef Ofyles2 het volgende:
In dat geval zou ik ook voor de 30 diensten een aparte MySQL-tabel maken. Het id-nummer zou ik meegeven met de URL.

Wat betreft SQL-injecties: deze kun je tegengaan door invoerwaarden te controleren en eventueel te escapen (mysql_real_escape_string).

Off-topic:

Een veel betere aanrader is PDO (hier een tutorial), waarmee je meerdere databasesystemen kunt gebruiken zonder complete codeblokken om te ploegen.
Of je verdiept je een keer in classes en bent ook per direct van het gezeik af. Dan ben je nog flexibeler :)
GlowMousedonderdag 5 januari 2012 @ 22:34
quote:
6s.gif Op donderdag 5 januari 2012 21:40 schreef Dokay het volgende:
Ik heb gepoogd om een extra SESSION aan te maken om de variable vast te houden, maar er loopt er al een van de gebruiker die ingelogd is en welke zijn ID vasthoud. Het geeft problemen als ik een tweede sessie hiernaast probeer te starten want dan wordt aangegeven dat er al een sessie loopt.
Dat gaat in dezelfde sessie, je kunt $_SESSION['blahblah'] met vullen en daarna $_SESSION['user'] met wat anders.
Dokaydonderdag 5 januari 2012 @ 22:37
quote:
0s.gif Op donderdag 5 januari 2012 22:34 schreef GlowMouse het volgende:

[..]

Dat gaat in dezelfde sessie, je kunt $_SESSION['blahblah'] met vullen en daarna $_SESSION['user'] met wat anders.
Bedankt voor je tip, ik ga het morgen meteen uitproberen!
Is er ook een mogelijkheid om van te voren gedefinieerde waarden (welke ik nu in hidden HTML tags heb staan) veilig over te dragen tijdens de POST naar de volgende pagina..? (Behalve strip tags, eigenlijk dat er geen wijzingen in welke zin dan ook mogelijk zijn van de huidige waarde..)
Ofyles2donderdag 5 januari 2012 @ 22:40
quote:
0s.gif Op donderdag 5 januari 2012 22:37 schreef Dokay het volgende:

[..]

Bedankt voor je tip, ik ga het morgen meteen uitproberen!
Is er ook een mogelijkheid om van te voren gedefinieerde waarden (welke ik nu in hidden HTML tags heb staan) veilig over te dragen tijdens de POST naar de volgende pagina..? (Behalve strip tags, eigenlijk dat er geen wijzingen in welke zin dan ook mogelijk zijn van de huidige waarde..)
Yep.
Sitethiefdonderdag 5 januari 2012 @ 23:11
Je kunt bepaalde dingen hashen, met een POST/GET meesturen en aan de andere kant checken. Dat kan natuurlijk alleen met dingen waarvan je aan beide kanten weet wat het ongeveer moet zijn, statische data dus. Andere data zou ik, mits dat niet teveel problemen oplevert via de sessie opslaan, mocht het data zijn die je langer nodig hebt dan een sessie idd in de db.
Ofyles2donderdag 5 januari 2012 @ 23:21
quote:
0s.gif Op donderdag 5 januari 2012 22:31 schreef Pakspul het volgende:

[..]

Of je verdiept je een keer in classes en bent ook per direct van het gezeik af. Dan ben je nog flexibeler :)
Klopt, daar ben ik ook zeer grote voorstander van (als onderdeel van MVC- en OOP-programmeren).
Dokaydonderdag 5 januari 2012 @ 23:41
Bedankt voor jullie reacties! Ik ga morgen eens kijken of ik verder kom. :)
Tegandonderdag 5 januari 2012 @ 23:49
Hadden jullie dit al gezien?

http://tweakers.net/nieuw(...)ia-sql-injectie.html

:'(.
GlowMousevrijdag 6 januari 2012 @ 00:44
Er zijn teveel amateurs :Y
Ofyles2vrijdag 6 januari 2012 @ 00:50
quote:
0s.gif Op vrijdag 6 januari 2012 00:44 schreef GlowMouse het volgende:
Er zijn teveel amateurs :Y
It wasn't me...
KomtTijd...vrijdag 6 januari 2012 @ 00:54
quote:
0s.gif Op vrijdag 6 januari 2012 00:44 schreef GlowMouse het volgende:
Er zijn teveel amateurs :Y
*meldt.

Daarom ga ik ook niet datsoort systemen klussen, Maar srsly, een maximale lengte aan het password veld geven om SQL injectie te voorkomen? Echt wtf! Blijkbaar heeft iemand er wel over nagedacht dus, maar toen besloten dat mysql_real_escape() te moeilijk was ofzo :') Nog even los van de vragen over hoe dat in hemelsnaam gehashed is als die input zo de query in geslingerd wordt...
GlowMousevrijdag 6 januari 2012 @ 00:55
quote:
14s.gif Op vrijdag 6 januari 2012 00:54 schreef KomtTijd... het volgende:

[..]

Maar srsly, een maximale lengte aan het password veld geven om SQL injectie te voorkomen?
Die reden zal wel later bedacht zijn. Als hashing ontbreekt zal de lengte van het db-veld de ware reden achter de beperking tot 12 karakters zijn.
Ofyles2vrijdag 6 januari 2012 @ 00:57
quote:
14s.gif Op vrijdag 6 januari 2012 00:54 schreef KomtTijd... het volgende:

[..]

*meldt.

Daarom ga ik ook niet datsoort systemen klussen, Maar srsly, een maximale lengte aan het password veld geven om SQL injectie te voorkomen? Echt wtf! Blijkbaar heeft iemand er wel over nagedacht dus, maar toen besloten dat mysql_real_escape() te moeilijk was ofzo :') Nog even los van de vragen over hoe dat in hemelsnaam gehashed is als die input zo de query in geslingerd wordt...
Zoiets hoor je eerder op te lossen met preg_match en PDO.
KomtTijd...vrijdag 6 januari 2012 @ 00:59
quote:
0s.gif Op vrijdag 6 januari 2012 00:57 schreef Ofyles2 het volgende:

[..]

Zoiets hoor je eerder op te lossen met preg_match en PDO.
Preg_match :? En ja tegenwoordig doet iedereen dat met PDO of MySQLi (of aanverwanten in andere talen) maar als die website 5 jaar oud is ga je 'm niet helemaal herschrijven daarvoor.
Ofyles2vrijdag 6 januari 2012 @ 01:03
quote:
5s.gif Op vrijdag 6 januari 2012 00:59 schreef KomtTijd... het volgende:

[..]

Preg_match :? En ja tegenwoordig doet iedereen dat met PDO of MySQLi (of aanverwanten in andere talen) maar als die website 5 jaar oud is ga je 'm niet helemaal herschrijven daarvoor.
Preg_match voor reguliere expressies. Je kunt nooit 100% zeker zijn dat al je bezoekers zo poeslief zijn...
KomtTijd...vrijdag 6 januari 2012 @ 01:50
Ik weet wat preg_match is.

Maar als tientallen mensen die jarenlang gestudeerd hebben op SQL injectie een functie maken die dagelijks door duizenden kwaadwillende mensen beproefd wordt, om alle mogelijke manieren van SQL injectie te voorkomen, maar jij denkt dat je het beter kunt met een preg_match, ben je wel redelijk naief.
Ofyles2vrijdag 6 januari 2012 @ 01:52
quote:
14s.gif Op vrijdag 6 januari 2012 01:50 schreef KomtTijd... het volgende:
Ik weet wat preg_match is.

Maar als tientallen mensen die jarenlang gestudeerd hebben op SQL injectie een functie maken die dagelijks door duizenden kwaadwillende mensen beproefd wordt, om alle mogelijke manieren van SQL injectie te voorkomen, maar jij denkt dat je het beter kunt met een preg_match, ben je wel redelijk naief.
Ik combineer preg_match met string escapen. Overbeveiliging.
Cue_vrijdag 6 januari 2012 @ 09:53
Kort vraagje:
Ik zit met een formulier dat ik wil opslaan in een oracle database. Maar natuurlijk is dit een vrij invoerveld waar oa een naam meegegeven moet worden.
Dus je zit met ' in namen enzo, wekle problemen geven bij de query, dus die moeten eruit.

wat zou de mooiste oplossing hiervoor zijn? Vervangen door een ander teken en die dan weer bij oproep veranderen in een ' ?
Pakspulvrijdag 6 januari 2012 @ 10:31
1
2
3
4
5
6
<?php
$str 
"Is your name O'reilly?";

// Outputs: Is your name O\'reilly?
echo addslashes($str);
?>
Bron: http://php.net/manual/en/function.addslashes.php
#ANONIEMvrijdag 6 januari 2012 @ 10:34
Bij SQL queries http://php.net/manual/en/function.mysql-real-escape-string.php
GIvrijdag 6 januari 2012 @ 10:34
quote:
Dat dus!
Cue_vrijdag 6 januari 2012 @ 10:42
quote:
Die zag ik idd voorbij komen.
Hij komt bij mij dan gelijk met 2 of 3 slashes aanzetten :')

[ Bericht 15% gewijzigd door Cue_ op 06-01-2012 10:49:14 ]
mstxvrijdag 6 januari 2012 @ 10:51
quote:
quote:
3s.gif Op vrijdag 6 januari 2012 10:34 schreef GI het volgende:

[..]

Dat dus!
quote:
A MySQL connection is required before using mysql_real_escape_string() otherwise an error of level E_WARNING is generated, and FALSE is returned.
Cue_vrijdag 6 januari 2012 @ 10:55
Hmm hij blijkt hem zelf al te escapen. Toch vind mijn query hem niet leuk:

1trailer='o\'' 

1 quoted string not properly terminated 
Pakspulvrijdag 6 januari 2012 @ 11:08
http://orafaq.com/wiki/SQL_FAQ

How does one escape special characters when writing SQL queries?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SQL> SELECT 'Frank''s Oracle site' AS text FROM DUAL;
 TEXT
 --------------------
 Franks's Oracle site

 SQL> SELECT 'A ''quoted'' word.' AS text FROM DUAL;
 TEXT
 ----------------
 A 'quoted' word.

 SQL> SELECT 'A ''''double quoted'''' word.' AS text FROM DUAL;
 TEXT
 -------------------------
 A ''double quoted'' word.

1
2
3
4
<?php
// hopelijk is het zichtbaar dat een enkele quote wordt vervangen door twee enkele quotes.
$name str_replace("'""''""Frank's Oracle site");
?>
Cue_vrijdag 6 januari 2012 @ 11:20
Een str_replace (en wss ook die addslashes) werken niet omdat het bij verwerking in quotes komt te staan

1trailer='".$trailer."'
#ANONIEMvrijdag 6 januari 2012 @ 11:32
quote:
0s.gif Op vrijdag 6 januari 2012 10:51 schreef mstx het volgende:

[..]


[..]


[..]

Oracle heeft Mysql gekocht remember :)
Pakspulvrijdag 6 januari 2012 @ 11:35
quote:
0s.gif Op vrijdag 6 januari 2012 11:20 schreef Cue_ het volgende:
Een str_replace (en wss ook die addslashes) werken niet omdat het bij verwerking in quotes komt te staan
[ code verwijderd ]

En als je " (dubbele quote) naar " veranderd en ' (enkele quote) naar '

En die dan opslaat wat doet hij dan?
Geflipte-Koelkastvrijdag 6 januari 2012 @ 21:18
Het is me al gelukt. Op de 1 of andere manier het oude script aan de praat gekregen. Alleen nog 1 vraag. Als ik op verzenden klik, wat moet er dan verandert worden in het script, om hem door te sturen naar de 'bedank' pagina?

SPOILER
PHP 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
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
<?php
$your_email_address
="ahacties@gmail.com";

if(empty(
$_GET) && empty($_POST)) {
    die(
'Ongeldige actie');
}

// Emular register_globals on
if (!ini_get('register_globals')) {
    
$superglobales = array($_SERVER$_ENV$_FILES$_COOKIE$_POST$_GET);
    if (isset(
$_SESSION)) {
        
array_unshift($superglobales$_SESSION);
    }
    foreach (
$superglobales as $superglobal) {
        
extract($superglobalEXTR_SKIP);
    }
}

// to prevent header injection
if (eregi("\r",$_POST['your_email_address']) || eregi("\n",$_POST['your_email_address'])){
     exit;
}

// kick anyone whoever tried to inject a header in the form
foreach( $_POST as $value ){
    if( 
strpos($value,'Content-Type:') !== FALSE ){
        exit;
    }
}

$fields array_keys($_POST);

function 
headfunction($url) {
    
header ("Location: $url");
}

// protect the variable $reserved_vars
if(isset($reserved_vars)) {
    unset(
$reserved_vars);
}
$reserved_vars = array("css_file""background_color""background_image""text_color""link_color""visited_link_color""active_link_color""font_name""font_size""highlight_color""required_fields""after_url""check_email_address""subject""your_email_address""env_report""owner_name""autoresponse""response_subject""response_mail""dodosmail_header_file""dodosmail_footer_file");

function 
include_dodosmail_header($dodosmail_header_file) {
    global 
$reserved_vars;
    foreach(
$reserved_vars as $reserved_var) {
        global $
$reserved_var;
    }

    if(
is_file($dodosmail_header_file)) {
        include_once(
$dodosmail_header_file);
        return;
    } else {
        echo 
"<html>\n";
        echo 
"<head>\n";
        echo 
"<title>\n";
        echo 
"DodosMail\n";
        echo 
"</title>\n";
        if(
$css_file != "")
            echo 
"<link rel=\"stylesheet\" type=\"text/css\" href=\"$css_file\">\n";
        echo 
"</head>\n";
        echo 
"<body bgcolor=\"$background_color\" background=\"$background_image\" text=\"$text_color\" link=\"$link_color\" vlink=\"$visited_link_color\" alink=\"$active_link_color\">\n";
        echo 
"<font face=\"$font_name\" size=\"$font_size\">\n";
    }
}

function 
include_dodosmail_footer($dodosmail_footer_file) {
    global 
$reserved_vars;
    foreach(
$reserved_vars as $reserved_var) {
        global $
$reserved_var;
    }
    if(
is_file($dodosmail_footer_file)) {
        include_once(
$dodosmail_footer_file);
        return;
    } else {
        echo 
"</font>\n</body>\n</html>";
    }
}

function 
dodosmail_error_handle($msg) {
    global 
$highlight_color;
    if(isset(
$highlight_color)) {
        
$extra_begin "<font color=\"".$highlight_color."\">";
        
$extra_end "</font>";
    } else {
        
$extra_begin "<span class=\"DodosMailErrorHighLight\">";
        
$extra_end "</span>";
    }

    return 
$extra_begin.$msg.$extra_end;
}

// checking required fields
// in case they used comma and space, replace
if(strstr($required_fields", ")) {
    
$required_fields str_replace(", "","$required_fields);
} else {
    
$required_fields $required_fields;
}
$required_fields explode(","$required_fields);

for(
$i 0$i count($required_fields); $i++) {
    
$required_var_name $required_fields[$i];
    if(empty($
$required_var_name)) {
        
include_dodosmail_header($dodosmail_header_file);
        echo 
"<p class=\"DodosMailError\">Fout! - het verplichte veld ".dodosmail_error_handle($required_var_name)." is niet ingevuld.\n";
        echo 
"<br /><br /><a href=\"javascript:history.back(1)\">Terug</a>\n";
        echo 
"</p>\n";
        
include_dodosmail_footer($dodosmail_footer_file);
        exit;
    }
}
if(
$check_email_address == "yes" && !empty($email)) {
    if(!
check_email($email)) {
        
include_dodosmail_header($dodosmail_header_file);
        echo 
"<p class=\"DodosMailError\">Fout - het adres ".dodosmail_error_handle($email)." is niet geldig.\n";
        echo 
"<br /><br /><a href=\"javascript:history.back(1)\">Terug</a>\n";
        echo 
"</p>\n";
        
include_dodosmail_footer($dodosmail_footer_file);
        exit;
    }
}

for(
$i 0$i count($fields); $i++) {
    
$actual_var $fields[$i];
    if(
in_array($actual_var$reserved_vars)) {
        
$inside_mail $inside_mail;
    } else {
        if(
is_array($$actual_var)) {
            
$inside_mail.= "$actual_var: ";
            foreach($
$actual_var as $actual_val) {
                
$inside_mail.= "$actual_val ";
            }
            
$inside_mail.= "\n";
        } else {
            
$actual_val stripslashes($$actual_var);
            
$inside_mail.= "$actual_var: $actual_val\n";
        }
    }
}

// getting other information from the form
$cname gethostbyaddr($_SERVER[REMOTE_ADDR]);
$inside_mail.=
"
-----------------------------------------------------------------------
 SENDER INFO:
 IP: $_SERVER[REMOTE_ADDR]
 Computer Name: $cname
 Browser Type: $_SERVER[HTTP_USER_AGENT]
 Page Referer: $_SERVER[HTTP_REFERER]
-----------------------------------------------------------------------
"
;

$headers .= "MIME-Version: 1.0\r\n";
$headers .= "X-Priority: 3\r\n";
$headers .= "X-MSMail-Priority: Normal\r\n";
$headers .= "X-Mailer: DodosMail 2.0 http://regretless.com/scripts/\r\n";
$headers .= "Content-type: text/plain; charset=\"iso-8859-1\"\r\n";
//$headers .= "Date: ".date("R")."\r\n";
$headers .= "From: $name <$email>\r\n";

$success mail($your_email_address$subject$inside_mail$headers);
if(
$success) {
    if(
$autoresponse == "yes") {
        
$response_subject stripslashes($response_subject);
        
$response_mail stripslashes($response_mail);
        
mail($email$response_subject$response_mail"From: $owner_name <$your_email_address>");
    }
    if(
$after_url == "") {
        
// out put send info
        
include_dodosmail_header($dodosmail_header_file);

        echo 
"<p>\n";
        
        echo 
header('Location: http://members.quicknet.nl/albertheijn/vergelijkdebon/confirmation.htm');
        for(
$i 0$i count($fields); $i++) {
            
$actual_var $fields[$i];
            if(
in_array($actual_var$reserved_vars))
                echo 
"";
            else {
                if(
is_array($$actual_var)) {
                    echo 
"<li>$actual_var: ";
                    foreach($
$actual_var as $actual_val) {
                        echo 
"$actual_val ";
                    }
                    echo 
"</li>\n";
                } else {
                    
$actual_val stripslashes($$actual_var);
                    echo 
"<li>$actual_var: $actual_val</li>\n";
                }
            }
        }
        echo 
"</ul>\n<p></p>";
        
include_dodosmail_footer($dodosmail_footer_file);
        exit;
    } else {
    
headfunction($after_url);
    }
} else {
    
include_dodosmail_header($dodosmail_header_file);
    echo 
"<p class=\"DodosMailError\">Fout - Het formulier is tijdelijk niet bruikbaar, gebruik ".dodosmail_error_handle($your_email_address)." om contact op te nemen.\n";
    echo 
"<br /><br /><a href=\"javascript:history.back(1)\">Terug</a>\n";
    echo 
"</p>\n";
    
include_dodosmail_footer($dodosmail_footer_file);
    exit;
}

function 
check_email($email) {
    if( (
preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/'$email)) ||
        (
preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$email)) ) {
        return 
true;
    }
    return 
false;
}

?>

Staat deze verkeerd?
1
2
3
<?php
echo header('Location: http://members.quicknet.nl/albertheijn/vergelijkdebon/confirmation.htm')
?>
boem-dikkievrijdag 6 januari 2012 @ 21:23
quote:
0s.gif Op vrijdag 6 januari 2012 21:18 schreef Geflipte-Koelkast het volgende:
Het is me al gelukt. Op de 1 of andere manier het oude script aan de praat gekregen. Alleen nog 1 vraag. Als ik op verzenden klik, wat moet er dan verandert worden in het script, om hem door te sturen naar de 'bedank' pagina?

SPOILER
PHP CODE:
[ code verwijderd ]

Staat deze verkeerd?
[ code verwijderd ]

Een header toevoegen naar je bedank pagina nadat de mail succesvol is verzonden.
Vanillaxvrijdag 6 januari 2012 @ 22:10
Ik heb dus wat tijd besteed aan het inlezen in PHP formulieren en mail, nu heb ik dus deze tutorial gevolgd;
http://www.xentrik.net/php/email.php

Maar de code werkt niet. Ik krijg constant dat niet alle velden zijn ingevuld terwijl dat wel zo is.
En nu alleen de stukken code weggelaten waar hij kijkt of je email adres goed is en of alle velden zijn ingevuld, dan zegt hij dat het verstuurd is maar dan werkt het nog niet..

Ik ben echt op het punt van opgeven, is er nergens gewoon een kant en klare code die ik op die pagina kan gooien zodat het voor nu werkt en ik later in de lessen PHP uit kan gaan zoeken hoe ik zo'n code nu echt moet schrijven?
Catch22-vrijdag 6 januari 2012 @ 22:16
zo werkt het niet. Ik zou even wat basic tutorials php lezen en ook even wat debug-tutorials doornemen.

Maar die code he, daar staat regel voor regel wat er gebeurt...
Vanillaxvrijdag 6 januari 2012 @ 23:50
quote:
11s.gif Op vrijdag 6 januari 2012 22:16 schreef Catch22- het volgende:
zo werkt het niet. Ik zou even wat basic tutorials php lezen en ook even wat debug-tutorials doornemen.

Maar die code he, daar staat regel voor regel wat er gebeurt...
Ik heb wat basic tutorials doorgenomen,
En dus de tutorial gevolgd waarvan ik die link gaf maar het werkt dus niet.
En ik snap niet waarom.
Dus ik begin me af te vragen of het niet gewoon aan de host ligt ipv aan mijn php skills, want ik doe gewoon letterlijk wat er in die tutorial staat..
Lightzaterdag 7 januari 2012 @ 00:03
quote:
0s.gif Op vrijdag 6 januari 2012 21:18 schreef Geflipte-Koelkast het volgende:
Het is me al gelukt. Op de 1 of andere manier het oude script aan de praat gekregen. Alleen nog 1 vraag. Als ik op verzenden klik, wat moet er dan verandert worden in het script, om hem door te sturen naar de 'bedank' pagina?

SPOILER
PHP CODE:
[ code verwijderd ]

Staat deze verkeerd?
[ code verwijderd ]

1
2
3
4
5
6
7
8
9
10
11
12
<?php
// Emular register_globals on
if (!ini_get('register_globals')) {
    
$superglobales = array($_SERVER$_ENV$_FILES$_COOKIE$_POST$_GET);
    if (isset(
$_SESSION)) {
        
array_unshift($superglobales$_SESSION);
    }
    foreach (
$superglobales as $superglobal) {
        
extract($superglobalEXTR_SKIP);
    }
}
?>
Er is een reden dat register_globals niet meer gebruikt moet worden. Dan moet je niet zelf dat gedrag proberen na te bootsen.
dirkjozondag 8 januari 2012 @ 20:39
Jongens; ik heb jullie hulp weer eens nodig. :)

Voor een nieuwe website wil ik een systeem maken waarbij je kan zien op welke 'plaats' bepaalde data staat. Dit is gesorteerd bij 'likes' waarbij de hoogste waarde bovenaan staat.

Dat is allemaal geen probleem, maar ik wil dat op de pagina gericht aan die data ook komt te staan op welke plek die staan in de algemene-ranking.

Dus stel je even dit voor:
1
2
3
4
A = 2 likes
B = 3 likes
C = 4 likes
D = 1 like

Dan zal de volgorde dus alsvolgt worden:
1
2
3
4
1. C
2. B
3. A
4. D

Stel je voor je zit op de pagina van 'A', dan wil ik dus dat je te zien krijgt dat 'A' op plek 3 staat. Maar hoe doe ik dit?

Hopelijk is het een beetje duidelijk wat ik wil en kunnen jullie me helpen :)
cablegunmasterzondag 8 januari 2012 @ 20:57
Easy... een order by in je query's gebruiken de vraag blijft of dit mogelijk is.
Want volgens mij gebruik je hierbij de facebook API? applicatie? :P ?
Corrigeer me als ik het verkeerd heb.

anders een query maken;
Select * from TABLE order by aantal_likes desc
of hoe je het veld hebt genoemd :).

Zie voorbeeld:
http://www.w3schools.com/php/php_mysql_order_by.asp

quote:
0s.gif Op vrijdag 6 januari 2012 23:50 schreef Vanillax het volgende:

[..]

Ik heb wat basic tutorials doorgenomen,
En dus de tutorial gevolgd waarvan ik die link gaf maar het werkt dus niet.
En ik snap niet waarom.
Dus ik begin me af te vragen of het niet gewoon aan de host ligt ipv aan mijn php skills, want ik doe gewoon letterlijk wat er in die tutorial staat..
Wat voor melding geeft het? en heb je die melding door google heen gehaalt? :)

[ Bericht 20% gewijzigd door cablegunmaster op 08-01-2012 21:14:46 ]
dirkjozondag 8 januari 2012 @ 21:15
quote:
0s.gif Op zondag 8 januari 2012 20:57 schreef cablegunmaster het volgende:
Easy... een order by in je query's gebruiken de vraag blijft of dit mogelijk is.
Want volgens mij gebruik je hierbij de facebook API? applicatie? :P ?
Corrigeer me als ik het verkeerd heb.

anders een query maken;
Select * from TABLE order by aantal_likes desc
of hoe je het veld hebt genoemd :).

Zie voorbeeld:
http://www.w3schools.com/php/php_mysql_order_by.asp

[..]

Wat voor melding geeft het? en heb je die melding door google heen gehaald? :)
Nee likes staan in mijn eigen database, en wat jij wilt gaat niet lukken ;)
Want op die pagina wil ik niet de complete lijst, maar alleen de positie van het ene element (A in dit geval) uit de lijst. Snap je? :P
cablegunmasterzondag 8 januari 2012 @ 21:32
quote:
0s.gif Op zondag 8 januari 2012 21:15 schreef dirkjo het volgende:

[..]

Nee likes staan in mijn eigen database, en wat jij wilt gaat niet lukken ;)
Want op die pagina wil ik niet de complete lijst, maar alleen de positie van het ene element (A in dit geval) uit de lijst. Snap je? :P
Hoe haal je de gegevens van A uit de database zijnde van wat erbij hoort? Dus bijvoorbeeld de rest van de pagina? want dan is het een kwestie van een variabele query.
"select * from likes where id = ' ".esc($_GET['id'])." ' ";
Met bvb de link index.php?id=50 dan haalt hij de ID eruit van 50 en welke ABCD er bij hoort.
dirkjozondag 8 januari 2012 @ 21:42
quote:
0s.gif Op zondag 8 januari 2012 21:32 schreef cablegunmaster het volgende:

[..]

Hoe haal je de gegevens van A uit de database zijnde van wat erbij hoort? Dus bijvoorbeeld de rest van de pagina? want dan is het een kwestie van een variabele query.
"select * from likes where id = ' ".esc($_GET['id'])." ' ";
Met bvb de link index.php?id=50 dan haalt hij de ID eruit van 50 en welke ABCD er bij hoort.
Oke stel je dit voor:
Je hebt de waardes A, B, C en D zoals ik net al zei. Buiten nog veel meer informatie staat er onder andere in de database bij elke waarde (elke rij dus) het aantal likes dat die heeft gekregen (facebook onafhankelijk).

Als ik een lijst wil maken waarbij de waarde met de meeste likes bovenaan komt te staan kan ik inderdaad ORDER BY likes DESC gebruiken, maar dit wil ik niet.

Ik wil namelijk het volgende:

Elke waarde is ook een pagina, stel je voor A heeft ID 1; dan heb ik een waarde met ID 1. Dan kan ik alle waardes van die row pakken door WHERE ID = 1 te gebruiken, waaronder dus ook de likes.

Maar dat heeft allemaal niks te maken met wat ik wil. Ik wil namelijk op die pagina van 'A' dat je kan zien waar 'A' staat in de lijst (dus de lijst waar de meeste likes bovenaan staan).

Ik wil dat mysql dan aan mij teruggeeft op welke plek A zou staan als ik alle waardes sorteer van meeste naar minste likes.

Dus als voorbeeld:
1
2
3
4
A = 3 likes
B = 2 likes
C = 4 likes
D = 1 like

Als ik nu de hele lijst zou plaatsen zou 'A' op nummer twee worden geplaatst, hij heeft tenslotte de op een na meeste likes.

Nu wil ik op de pagina van 'A' die plaatst (positie 2) dus laten zien ZONDER de hele zooi te moeten plaatsen.

Ik hoop hiermee een beetje duidelijk te hebben beschreven wat ik wil? :P
cablegunmasterzondag 8 januari 2012 @ 22:20
quote:
0s.gif Op zondag 8 januari 2012 21:42 schreef dirkjo het volgende:

[..]

Oke stel je dit voor:
Je hebt de waardes A, B, C en D zoals ik net al zei. Buiten nog veel meer informatie staat er onder andere in de database bij elke waarde (elke rij dus) het aantal likes dat die heeft gekregen (facebook onafhankelijk).

Als ik een lijst wil maken waarbij de waarde met de meeste likes bovenaan komt te staan kan ik inderdaad ORDER BY likes DESC gebruiken, maar dit wil ik niet.

Ik wil namelijk het volgende:

Elke waarde is ook een pagina, stel je voor A heeft ID 1; dan heb ik een waarde met ID 1. Dan kan ik alle waardes van die row pakken door WHERE ID = 1 te gebruiken, waaronder dus ook de likes.

Maar dat heeft allemaal niks te maken met wat ik wil. Ik wil namelijk op die pagina van 'A' dat je kan zien waar 'A' staat in de lijst (dus de lijst waar de meeste likes bovenaan staan).

Ik wil dat mysql dan aan mij teruggeeft op welke plek A zou staan als ik alle waardes sorteer van meeste naar minste likes.

Dus als voorbeeld:
[ code verwijderd ]

Als ik nu de hele lijst zou plaatsen zou 'A' op nummer twee worden geplaatst, hij heeft tenslotte de op een na meeste likes.

Nu wil ik op de pagina van 'A' die plaatst (positie 2) dus laten zien ZONDER de hele zooi te moeten plaatsen.

Ik hoop hiermee een beetje duidelijk te hebben beschreven wat ik wil? :P
Dus je wil dat de site tegen je zegt Dit nieuwsartikel of letter A Staat op nummer 2 van de hele lijst. en de rest negeren? Dan zou ik een order by desc. doen en vervolgens het eruit halen met echo. een Getal++; in de for lus doen (of welke lus) en als het overeen komt welke positie het is dus als de id te voorschijn komt die nodig is dan laat je het pas Echo'en welke positie het is.
Voila? :P of snap ik het verkeerd :)?

Dan krijg je als resultaat : A staat op X positie en heeft 4 likes.
dirkjozondag 8 januari 2012 @ 22:30
quote:
0s.gif Op zondag 8 januari 2012 22:20 schreef cablegunmaster het volgende:

[..]

Dus je wil dat de site tegen je zegt Dit nieuwsartikel of letter A Staat op nummer 2 van de hele lijst. en de rest negeren? Dan zou ik een order by desc. doen en vervolgens het eruit halen met echo. een Getal++; in de for lus doen (of welke lus) en als het overeen komt welke positie het is dus als de id te voorschijn komt die nodig is dan laat je het pas Echo'en welke positie het is.
Voila? :P of snap ik het verkeerd :)?

Dan krijg je als resultaat : A staat op X positie en heeft 4 likes.
Je snapt het ;)
Dat is inderdaad waar ik aan dacht, maar vroeg me of daar geen makkelijkere oplossing voor was. Kennelijk niet; dus ga dit maar erin gooien, bedankt! :)
GlowMousezondag 8 januari 2012 @ 22:37
Select count(*) op de rijen met meer likes als het aantal rijen klein is, anders denormaliseren en de positie ook in de rij opslaan
dirkjozondag 8 januari 2012 @ 22:44
quote:
0s.gif Op zondag 8 januari 2012 22:37 schreef GlowMouse het volgende:
Select count(*) op de rijen met meer likes als het aantal rijen klein is, anders denormaliseren en de positie ook in de rij opslaan
Positie moet altijd up-to-date blijven omdat users hem kunnen bepalen (door middel van de likes).
Heb nu de volgende functie in elkaar gezet, verbetering welkom ofcourse.
1
2
3
4
5
6
7
8
9
10
11
12
<?php
    
function songRank($songID){
        
$rank 0;
        
$getrank mysql_query("SELECT songID FROM songs ORDER BY `likes` DESC");
        while(
$row mysql_fetch_array($getrank)){
            
$rank++;
            if(
$songID == $row['songID']){
                return 
$rank;
            }
        }
    }
?>
GlowMousezondag 8 januari 2012 @ 22:48
Dat is een domme query, net alsof je niet snapt wat COUNT(*) en WHERE doen.
dirkjozondag 8 januari 2012 @ 22:50
quote:
7s.gif Op zondag 8 januari 2012 22:48 schreef GlowMouse het volgende:
Dat is een domme query, net alsof je niet snapt wat COUNT(*) en WHERE doen.
Nog nooit gebruik gemaakt van COUNT(*), maar ik zal er eens naar kijken.
The_Terminatorzondag 8 januari 2012 @ 22:52
quote:
11s.gif Op zondag 8 januari 2012 22:50 schreef dirkjo het volgende:

[..]

Nog nooit gebruik gemaakt van COUNT(*), maar ik zal er eens naar kijken.
1SELECT COUNT(*) AS aantal FROM songs WHERE songID = '" . mysql_real_escape_string($songID) . "' ORDER BY `likes` DESC

Het aantal zit dan in: $row['aantal']

Edit: is songID numeriek of een string?
dirkjozondag 8 januari 2012 @ 22:52
--- laat --

[ Bericht 46% gewijzigd door dirkjo op 08-01-2012 22:59:38 ]
dirkjozondag 8 januari 2012 @ 22:56
quote:
0s.gif Op zondag 8 januari 2012 22:52 schreef The_Terminator het volgende:

[..]
[ code verwijderd ]

Het aantal zit dan in: $row['aantal']

Edit: is songID numeriek of een string?
songID is nummeriek, maar je query geeft geen positie terug. Ik krijg overal '1' terug 8)7
The_Terminatorzondag 8 januari 2012 @ 22:58
quote:
9s.gif Op zondag 8 januari 2012 22:56 schreef dirkjo het volgende:

[..]

songID is nummeriek, maar je query geeft geen positie terug. Ik krijg overal '1' terug 8)7
Oeps... Onderstaande fixt het:

1SELECT COUNT(*) AS aantal, songID FROM songs WHERE songID = " . mysql_real_escape_string($songID) . " ORDER BY `likes` DESC
dirkjozondag 8 januari 2012 @ 22:59
quote:
0s.gif Op zondag 8 januari 2012 22:58 schreef The_Terminator het volgende:

[..]

Oeps... Onderstaande fixt het:
[ code verwijderd ]

Nee hoor
GlowMousezondag 8 januari 2012 @ 23:01
scarjo_popcorn.gif
dirkjozondag 8 januari 2012 @ 23:02
quote:
7s.gif Op zondag 8 januari 2012 23:01 schreef GlowMouse het volgende:
[ afbeelding ]
Doe eens lief; kom eens met jouw oplossing.
GlowMousezondag 8 januari 2012 @ 23:02
Welke rijen moet je tellen om de rank te bepalen.
GlowMousezondag 8 januari 2012 @ 23:04
De oplossing van T_T is alleen daarom al niet goed omdat hij mysql_real_escape_string en intval door elkaar haalt.
dirkjozondag 8 januari 2012 @ 23:06
quote:
7s.gif Op zondag 8 januari 2012 23:02 schreef GlowMouse het volgende:
Welke rijen moet je tellen om de rank te bepalen.
Geen rijen, maar één kolom in een rij. (Ja ik weet; dat heb ik een paar keer verkeerd gezegd zie ik net ;( ). |:(

De kolom 'likes' vertelt me de positie, die kolom bevat een getal. Met COUNT ga je alle rijen tellen die `songID` '$songID' bevatten, ofniet? :P
The_Terminatorzondag 8 januari 2012 @ 23:07
quote:
0s.gif Op zondag 8 januari 2012 23:04 schreef GlowMouse het volgende:
De oplossing van T_T is alleen daarom al niet goed omdat hij mysql_real_escape_string en intval door elkaar haalt.
Daarom vroeg ik of songid een numerieke waarde zou zijn. Ik gebruikt meestal is_numeric om te bepalen of de ingevoerde waarde ook daadwerkelijk numeriek is en als dat zo is voer ik het aan de query zonder de escape_string functie te gebruiken. En ik heb een vermoeden dat ik in mijn query een group by ben vergeten :')
GlowMousezondag 8 januari 2012 @ 23:13
quote:
0s.gif Op zondag 8 januari 2012 23:06 schreef dirkjo het volgende:

[..]

De kolom 'likes' vertelt me de positie, die kolom bevat een getal. Met COUNT ga je alle rijen tellen die `songID` '$songID' bevatten, ofniet? :P
Of niet, want je weet toch al dat dat precies één rij is. Je wilt juist tellen hoeveel rijen een hogere score hebben. Je functie zou dus "songRank($likes)" moeten zijn.
quote:
0s.gif Op zondag 8 januari 2012 23:07 schreef The_Terminator het volgende:

[..]

Daarom vroeg ik of songid een numerieke waarde zou zijn. Ik gebruikt meestal is_numeric om te bepalen of de ingevoerde waarde ook daadwerkelijk numeriek is en als dat zo is voer ik het aan de query zonder de escape_string functie te gebruiken. En ik heb een vermoeden dat ik in mijn query een group by ben vergeten :')
Probeer het niet goed te praten :{w. Je stopt output van mysql_real_escape_string in een query zonder quotes om die output en dat is onveilig.
dirkjozondag 8 januari 2012 @ 23:23
quote:
0s.gif Op zondag 8 januari 2012 23:13 schreef GlowMouse het volgende:

[..]

Of niet, want je weet toch al dat dat precies één rij is. Je wilt juist tellen hoeveel rijen een hogere score hebben. Je functie zou dus "songRank($likes)" moeten zijn.

[..]

Probeer het niet goed te praten :{w. Je stopt output van mysql_real_escape_string in een query zonder quotes om die output en dat is onveilig.
Maar wat gebeurd er dan als meerdere nummers hetzelfde aantal likes hebben? Dan pakt die de eerste de beste rij die het gegeven aantal likes heeft.
The_Terminatorzondag 8 januari 2012 @ 23:24
quote:
0s.gif Op zondag 8 januari 2012 23:13 schreef GlowMouse het volgende:

Probeer het niet goed te praten :{w. Je stopt output van mysql_real_escape_string in een query zonder quotes om die output en dat is onveilig.
Ik probeer niets goed te praten :{w . Ik ben vergeten die escapefunctie te verwijderen, de quotes had ik wel weggehaald waardoor het lijkt dat ik de functie gebruik in een query zonder quotes.

Zoals ik al aangaf gebruik ik de functie is_numeric en return false mocht dat niet zo zijn. In de query gebruik ik dan geen quotes om de variable (het is immers numeriek) en laat het escapen achterwege aangezien de waarde al is geverifieerd.
GlowMousezondag 8 januari 2012 @ 23:25
quote:
0s.gif Op zondag 8 januari 2012 23:23 schreef dirkjo het volgende:

[..]

Maar wat gebeurd er dan als meerdere nummers hetzelfde aantal likes hebben? Dan pakt die de eerste de beste rij die het gegeven aantal likes heeft.
Heb je die vraag eens bij je eigen query gesteld?

Ik definieer de plek als 1+[het aantal songs met meer likes]. Het aantal songs met meer likes kun je met één query tellen.
dirkjozondag 8 januari 2012 @ 23:27
quote:
0s.gif Op zondag 8 januari 2012 23:25 schreef GlowMouse het volgende:

[..]

Heb je die vraag eens bij je eigen query gesteld?

Ik definieer de plek als 1+[het aantal songs met meer likes]. Het aantal songs met meer likes kun je met één query tellen.
Jazeker, maar als ik mijn manier gebruik garandeer ik wel dat de plek die de pagina over het nummer aangeeft gelijk is aan de plek die staat in de pagina waar de complete lijst van alle nummers staat.
GlowMousezondag 8 januari 2012 @ 23:29
quote:
0s.gif Op zondag 8 januari 2012 23:27 schreef dirkjo het volgende:

[..]

Jazeker, maar als ik mijn manier gebruik garandeer ik wel dat de plek die de pagina over het nummer aangeeft gelijk is aan de plek die staat in de pagina waar de complete lijst van alle nummers staat.
Dat is niet waar, het resultaat berust op toeval.
dirkjozondag 8 januari 2012 @ 23:30
En dat zou het niet doen in jouw geval, of valt zoiets niet te vermijden?
GlowMousezondag 8 januari 2012 @ 23:30
quote:
5s.gif Op zondag 8 januari 2012 23:30 schreef dirkjo het volgende:
En dat zou het niet doen in jouw geval, of valt zoiets niet te vermijden?
quote:
0s.gif Op zondag 8 januari 2012 23:25 schreef GlowMouse het volgende:

[..]

Ik definieer de plek als 1+[het aantal songs met meer likes]. Het aantal songs met meer likes kun je met één query tellen.
dirkjozondag 8 januari 2012 @ 23:35
quote:
0s.gif Op zondag 8 januari 2012 23:30 schreef GlowMouse het volgende:

[..]

[..]

Oke, dus (even snel) zou jouw query er ongeveer zo uitzien:
1
2
3
<?php
 mysql_query
("SELECT COUNT(*) AS rank FROM songs WHERE likes > "$likes" ");
?>

Correct my if I'm wrong
GlowMousezondag 8 januari 2012 @ 23:37
Precies zo. Alleen dan nog eentje bij het resultaat optellen.
dirkjozondag 8 januari 2012 @ 23:40
quote:
14s.gif Op zondag 8 januari 2012 23:37 schreef GlowMouse het volgende:
Precies zo. Alleen dan nog eentje bij het resultaat optellen.
Oke, bedankt! :)
je houdt het trouwens wel lang vol om iemand niet het antwoord te geven, maar zelf te laten maken :P
Diaboxzondag 8 januari 2012 @ 23:46
quote:
0s.gif Op zondag 8 januari 2012 23:40 schreef dirkjo het volgende:

[..]

Oke, bedankt! :)
je houdt het trouwens wel lang vol om iemand niet het antwoord te geven, maar zelf te laten maken :P
Veel doeltreffender. :)
dirkjozondag 8 januari 2012 @ 23:48
quote:
14s.gif Op zondag 8 januari 2012 23:37 schreef GlowMouse het volgende:
Precies zo. Alleen dan nog eentje bij het resultaat optellen.
Er is nu alleen wel één probleempje. Ik vertelde net dat die oude query mij dezelfde waarde geeft als wanneer ik de hele lijst zou echo'en. Deze doet dat niet :P

Je zei dat dat bij die oude query toevallig zo gebeurde, maar na een flink aantal refreshes blijft die lijst precies hetzelfde.

//edit

Deze manier geeft zelfs bij meerdere nummers dezelfde rank, terwijl dit toch echt iets is wat niet mag gebeuren :o
dirkjozondag 8 januari 2012 @ 23:49
quote:
0s.gif Op zondag 8 januari 2012 23:46 schreef Diabox het volgende:

[..]

Veel doeltreffender. :)
Compleet waar :)
GlowMousezondag 8 januari 2012 @ 23:50
quote:
0s.gif Op zondag 8 januari 2012 23:48 schreef dirkjo het volgende:

[..]

Er is nu alleen wel één probleempje. Ik vertelde net dat die oude query mij dezelfde waarde geeft als wanneer ik de hele lijst zou echo'en. Deze doet dat niet :P
Dan moet je die andere lijst aanpassen zodat hij zo wordt:
1. song12 met een socore van 34
2. song3 met een socore van 24
2. song6 met een socore van 24
4. song3 met een socore van 3
quote:
Je zei dat dat bij die oude query toevallig zo gebeurde, maar na een flink aantal refreshes blijft die lijst precies hetzelfde.
En toch heb je geen garantie dat het niet verandert.
dirkjozondag 8 januari 2012 @ 23:55
Check je ook even m'n edit. Heb ik iets fout gedaan dat dit gebeurd?
The_Terminatorzondag 8 januari 2012 @ 23:55
quote:
0s.gif Op zondag 8 januari 2012 23:48 schreef dirkjo het volgende:

[..]

Er is nu alleen wel één probleempje. Ik vertelde net dat die oude query mij dezelfde waarde geeft als wanneer ik de hele lijst zou echo'en. Deze doet dat niet :P

Je zei dat dat bij die oude query toevallig zo gebeurde, maar na een flink aantal refreshes blijft die lijst precies hetzelfde.

//edit

Deze manier geeft zelfs bij meerdere nummers dezelfde rank, terwijl dit toch echt iets is wat niet mag gebeuren :o
Je doet het nu door te selecteren op het aantal likes?

1
2
3
4
5
6
7
8
SET @rownum := 0;

SELECT * 
FROM (
SELECT @rownum := @rownum+1 AS song_rank, likes
FROM songs ORDER BY likes DESC
) AS song_score
WHERE songID = " . $songID

Bovenstaande zou je de rank terug moeten geven adhv het songid.

[ Bericht 6% gewijzigd door The_Terminator op 09-01-2012 00:06:46 ]
dirkjozondag 8 januari 2012 @ 23:57
quote:
0s.gif Op zondag 8 januari 2012 23:55 schreef The_Terminator het volgende:

[..]

Je doet het nu door te selecteren op het aantal likes?
[ code verwijderd ]

Bovenstaande zou je de rank terug moeten geven adhv het songid.
Ik gebruik nu de manier van GM, een paar posts terug.
GlowMousemaandag 9 januari 2012 @ 00:02
Wijzig
SELECT songID FROM songs ORDER BY `likes` DESC
in
SELECT songID FROM songs ORDER BY `likes` DESC,songID DESC

En
SELECT COUNT(*) AS rank FROM songs WHERE likes > ...
in
SELECT COUNT(*) AS rank FROM songs WHERE likes > ... OR (likes = .... ANDS songID > ....)
The_Terminatormaandag 9 januari 2012 @ 00:07
quote:
0s.gif Op zondag 8 januari 2012 23:57 schreef dirkjo het volgende:

[..]

Ik gebruik nu de manier van GM, een paar posts terug.
Ah, ok. Ik heb mijn code zojuist wat aangepast en getest. Het functioneerd goed en geeft de positie terug adhv een gegeven songID, zoals je dat in je eerste versie had.
dirkjomaandag 9 januari 2012 @ 00:08
quote:
0s.gif Op maandag 9 januari 2012 00:02 schreef GlowMouse het volgende:
Wijzig
SELECT songID FROM songs ORDER BY `likes` DESC
in
SELECT songID FROM songs ORDER BY `likes` DESC,songID DESC

En
SELECT COUNT(*) AS rank FROM songs WHERE likes > ...
in
SELECT COUNT(*) AS rank FROM songs WHERE likes > ... OR (likes = .... ANDS songID > ....)
Held :)
dirkjomaandag 9 januari 2012 @ 00:08
quote:
0s.gif Op maandag 9 januari 2012 00:07 schreef The_Terminator het volgende:

[..]

Ah, ok. Ik heb mijn code zojuist wat aangepast en getest. Het functioneerd goed en geeft de positie terug adhv een gegeven songID, zoals je dat in je eerste versie had.
Dit gebruik ik nu en werkt:
1
2
3
<?php
$rankQuery 
mysql_query("SELECT COUNT(*) AS rank FROM songs WHERE `likes` > "$likes" OR (`likes` = '"$likes ."' AND `songID` > "$songID .")");
?>

Still, thanks. :)
GlowMousemaandag 9 januari 2012 @ 00:09
Die van T_T werkt ook, maar die van mij is uiteraard sneller.
The_Terminatormaandag 9 januari 2012 @ 00:13
quote:
7s.gif Op maandag 9 januari 2012 00:09 schreef GlowMouse het volgende:
maar die van mij is uiteraard sneller.
True.
dirkjomaandag 9 januari 2012 @ 00:15
Nooit verwacht dat m'n zondag avond nog leerzaam zou zijn :7
dirkjomaandag 9 januari 2012 @ 21:10
Als we dan toch over COUNT hebben. Is het verstandiger om gebruik te maken van de COUNT functie om te kijken of een user bestaat, dan gebruik je maken van mysql_num_rows? Ik gebruik nu die laatste, maar dit lijkt me (nu ik een beetje door heb hoe COUNT werkt) vrij omslachtig.
GlowMousemaandag 9 januari 2012 @ 21:13
Dat is het inderdaad. Als jij een query zonder COUNT(*) doet dan gaan alle rijen van MySQL naar PHP zodat PHP ze kan tellen.
dirkjomaandag 9 januari 2012 @ 21:21
quote:
0s.gif Op maandag 9 januari 2012 21:13 schreef GlowMouse het volgende:
Dat is het inderdaad. Als jij een query zonder COUNT(*) doet dan gaan alle rijen van MySQL naar PHP zodat PHP ze kan tellen.
Oke, duidelijk! :)
Swetseneggerdinsdag 10 januari 2012 @ 08:53
Ik heb de volgende query

1
2
3
4
5
SELECT Naam, Challenge, Voortgang, (
Voortgang / ( Challenge /100 )
) AS Percentage
FROM hardlopen
ORDER BY Naam

Maar Percentage is dan tot 8 decimalen achter de komma. Kan ik dit eenvoudig beperken tot 2?
#ANONIEMdinsdag 10 januari 2012 @ 08:54
round gebruiken.

http://www.w3schools.com/sql/sql_func_round.asp
Tijndinsdag 10 januari 2012 @ 08:55
Beetje detail is niet verkeerd toch, Swets? B-)
Swetseneggerdinsdag 10 januari 2012 @ 08:56
quote:
Ik had de 2e parameter bij ROUND gemist in mijn zoektocht, bedankt!
Pakspuldinsdag 10 januari 2012 @ 09:15
Dit had je anders ook kunnen gebruiken: http://nl.php.net/number_format
GIdinsdag 10 januari 2012 @ 09:31
Of http://php.net/manual/en/function.round.php in php als je de db server niet je rekenwerk wil laten doen :)
Swetseneggerdinsdag 10 januari 2012 @ 09:39
Ja de op functie ken ik, maar in dit geval was het makkelijker in mysql.
Pakspuldinsdag 10 januari 2012 @ 10:41
quote:
0s.gif Op dinsdag 10 januari 2012 09:39 schreef Swetsenegger het volgende:
Ja de op functie ken ik, maar in dit geval was het makkelijker in mysql.
Ik zou dit soort taken niet bij de database server neerleggen. Queries moet je zo licht mogelijk schrijven, zodat je de database server zo min mogelijk lastig valt.
Swetseneggerdinsdag 10 januari 2012 @ 10:43
quote:
0s.gif Op dinsdag 10 januari 2012 10:41 schreef Pakspul het volgende:

[..]

Ik zou dit soort taken niet bij de database server neerleggen. Queries moet je zo licht mogelijk schrijven, zodat je de database server zo min mogelijk lastig valt.
Geloof me, m'n server krijgt het er echt niet warm van :)
Pakspuldinsdag 10 januari 2012 @ 10:49
quote:
1s.gif Op dinsdag 10 januari 2012 10:43 schreef Swetsenegger het volgende:

[..]

Geloof me, m'n server krijgt het er echt niet warm van :)
Dat begrijp ik, maar het gaat er om dat je begrijpt waarom je die dingen daar niet moet neerleggen :P Je kunt het je beter direct goed aanleren :)
Tijndinsdag 10 januari 2012 @ 10:50
quote:
0s.gif Op dinsdag 10 januari 2012 10:49 schreef Pakspul het volgende:

[..]

Dat begrijp ik, maar het gaat er om dat je begrijpt waarom je die dingen daar niet moet neerleggen :P Je kunt het je beter direct goed aanleren :)
Het is niet fout om je query zo te formuleren dat de data die eruit komt zo nuttig mogelijk is in je applicatie.
GIdinsdag 10 januari 2012 @ 10:51
quote:
0s.gif Op dinsdag 10 januari 2012 10:49 schreef Pakspul het volgende:

[..]

Dat begrijp ik, maar het gaat er om dat je begrijpt waarom je die dingen daar niet moet neerleggen :P Je kunt het je beter direct goed aanleren :)
Swets is al een paar stapjes verder dan aanleren ;)

En ik ben het met Tijn eens. Het is niet per definitie fout om de DB server te laten rekenen.
Pakspuldinsdag 10 januari 2012 @ 10:54
quote:
2s.gif Op dinsdag 10 januari 2012 10:50 schreef Tijn het volgende:

[..]

Het is niet fout om je query zo te formuleren dat de data die eruit komt zo nuttig mogelijk is in je applicatie.
Het is niet fout, maar kwa belasting wil je het gewoon niet. Bij hobby projecten maakt het uiteraard niets uit waar je het doet en als die het makkelijkste voor je is dan moet je het vooral doen. Maar als je grote projecten draait dan kunnen dit wel winst punten zijn.

Zelfde als in hobby projecten kun je best: SELECT * doen, maar het is beter om alleen de velden op te halen die nodig zijn.
#ANONIEMdinsdag 10 januari 2012 @ 10:55
quote:
3s.gif Op dinsdag 10 januari 2012 10:51 schreef GI het volgende:

[..]

Swets is al een paar stapjes verder dan aanleren ;)

En ik ben het met Tijn eens. Het is niet per definitie fout om de DB server te laten rekenen.
Dat dus.
#ANONIEMdinsdag 10 januari 2012 @ 10:56
quote:
0s.gif Op dinsdag 10 januari 2012 10:54 schreef Pakspul het volgende:

[..]

Het is niet fout, maar kwa belasting wil je het gewoon niet. Bij hobby projecten maakt het uiteraard niets uit waar je het doet en als die het makkelijkste voor je is dan moet je het vooral doen. Maar als je grote projecten draait dan kunnen dit wel winst punten zijn.

Zelfde als in hobby projecten kun je best: SELECT * doen, maar het is beter om alleen de velden op te halen die nodig zijn.
Definieer 'belasting'.
GlowMousedinsdag 10 januari 2012 @ 10:57
quote:
0s.gif Op dinsdag 10 januari 2012 10:41 schreef Pakspul het volgende:

[..]

Ik zou dit soort taken niet bij de database server neerleggen. Queries moet je zo licht mogelijk schrijven, zodat je de database server zo min mogelijk lastig valt.
Als je round door je db-clients wilt laten uitrekenen, ben je verkeerd bezig.
Tijndinsdag 10 januari 2012 @ 11:00
quote:
0s.gif Op dinsdag 10 januari 2012 10:54 schreef Pakspul het volgende:

[..]

Het is niet fout, maar kwa belasting wil je het gewoon niet.
Ik denk eigenlijk dat de database een stuk efficiënter z'n eigen data kan manipuleren dan de applicatie die deze data verder verwerkt.
#ANONIEMdinsdag 10 januari 2012 @ 11:02
quote:
2s.gif Op dinsdag 10 januari 2012 11:00 schreef Tijn het volgende:

[..]

Ik denk eigenlijk dat de database een stuk efficiënter z'n eigen data kan manipuleren dan de applicatie die deze data verder verwerkt.
quote:
0s.gif Op dinsdag 10 januari 2012 10:57 schreef GlowMouse het volgende:

[..]

Als je round door je db-clients wilt laten uitrekenen, ben je verkeerd bezig.
Indeed.
GIdinsdag 10 januari 2012 @ 11:03
quote:
2s.gif Op dinsdag 10 januari 2012 11:00 schreef Tijn het volgende:

[..]

Ik denk eigenlijk dat de database een stuk efficiënter z'n eigen data kan manipuleren dan de applicatie die deze data verder verwerkt.
Ja, dat is wel waar. Maar het hangt compleet van de situatie af of je dergelijke dingen laat berekenen door de DBengine of door de applicatie zelf. Als het puur en alleen om weergave gaat zou ik zeggen dat het door de applicatie gedaan moet worden. Als het om tussentabellen gaat of iets in die geest dan kan ik me nog voorstellen dat je het de DBengine laat doen.
GIdinsdag 10 januari 2012 @ 11:04
quote:
0s.gif Op dinsdag 10 januari 2012 11:02 schreef Scorpie het volgende:

[..]

[..]

Indeed.
Das knap, het eens zijn met twee quotes die elkaar tegenspreken.
Tijndinsdag 10 januari 2012 @ 11:04
quote:
3s.gif Op dinsdag 10 januari 2012 11:04 schreef GI het volgende:

[..]

Das knap, het eens zijn met twee quotes die elkaar tegenspreken.
Nee?
Pakspuldinsdag 10 januari 2012 @ 11:06
quote:
0s.gif Op dinsdag 10 januari 2012 10:56 schreef Scorpie het volgende:

[..]

Definieer 'belasting'.
Het is rekenkracht wat je kwijt bent, bij 10 request per minuut maakt het geen fuck uit, maar als je request omhoog gaan dan wil je niet dat je DB server met dit soort dingen bezig is.
quote:
0s.gif Op dinsdag 10 januari 2012 10:57 schreef GlowMouse het volgende:

[..]

Als je round door je db-clients wilt laten uitrekenen, ben je verkeerd bezig.
Dat probeer ik hier te zeggen.
Pakspuldinsdag 10 januari 2012 @ 11:07
quote:
5s.gif Op dinsdag 10 januari 2012 11:04 schreef Tijn het volgende:

[..]

Nee?
ja, want deze eerste zegt. Leg het neer bij de DB en de andere zegt doe het niet want dan ben je verkeerd bezig.
Tijndinsdag 10 januari 2012 @ 11:08
quote:
0s.gif Op dinsdag 10 januari 2012 11:07 schreef Pakspul het volgende:

[..]

ja, want deze eerste zegt. Leg het neer bij de DB en de andere zegt doe het niet want dan ben je verkeerd bezig.
Je begrijpt het verschil tussen server en client?
GlowMousedinsdag 10 januari 2012 @ 11:10
quote:
2s.gif Op dinsdag 10 januari 2012 11:00 schreef Tijn het volgende:

[..]

Ik denk eigenlijk dat de database een stuk efficiënter z'n eigen data kan manipuleren dan de applicatie die deze data verder verwerkt.
Dat is niet altijd een criterium omdat je vaak eenvoudig servers waar de applicatie op draaien kunt bijplaatsen.
quote:
0s.gif Op dinsdag 10 januari 2012 11:06 schreef Pakspul het volgende:

[..]

Het is rekenkracht wat je kwijt bent, bij 10 request per minuut maakt het geen fuck uit, maar als je request omhoog gaan dan wil je niet dat je DB server met dit soort dingen bezig is.
Geef me maar root-toegang op een server die 50.000 queries per seconde afhandelt, zal ik je 10 dingen aanwijzen die elk een miljoen keer meer opleveren.
quote:
Dat probeer ik hier te zeggen.
Niet waar, jij wilt het van je db-server naar je db-client verplaatsen.
GIdinsdag 10 januari 2012 @ 11:14
Ah, dan las ik het verkeerd. Ik denk trouwens wel dat er geen gouden regel is voor deze problematiek.
Tijndinsdag 10 januari 2012 @ 11:15
quote:
3s.gif Op dinsdag 10 januari 2012 11:14 schreef GI het volgende:
Ah, dan las ik het verkeerd. Ik denk trouwens wel dat er geen gouden regel is voor deze problematiek.
Dat denk ik ook. Het is ook duidelijk dat je moet proberen een trage query te voorkomen natuurlijk. Maar dat doe je niet door de round-functie van je database te vermijden.
Pakspuldinsdag 10 januari 2012 @ 11:26
quote:
10s.gif Op dinsdag 10 januari 2012 11:08 schreef Tijn het volgende:

[..]

Je begrijpt het verschil tussen server en client?
Ik weet niet wat jij bedoelt met DB-server en DB-client.

Maar ik heb even een test uitgevoerd. 100 x een query opgehaald waar 2x50 float in voorkomen. In de ene heb ik hem door PHP laten afronden en in de andere heb ik het door MySQL laten doen. En het verschil is dat PHP er 35% langer over doet wanneer deze zelf de getallen nog moet afronden.

Dan had Tijn het dus toch goed dat de DB-server zelf efficiënter zijn data kan manipuleren.

Nouja, daar zat ik er dus naast ik dacht altijd dat je zulke functie niet daar moest uitvoeren. Vraag ik mij nu alleen af of dit ook geldt voor berekeningen. :P Straks maar eens doen :+ eerst koffie!
#ANONIEMdinsdag 10 januari 2012 @ 11:28
Kom op, een DB-server en een DB-client zijn twee hele normale, gangbare begrippen.
Tijndinsdag 10 januari 2012 @ 11:28
quote:
0s.gif Op dinsdag 10 januari 2012 11:26 schreef Pakspul het volgende:

[..]

Ik weet niet wat jij bedoelt met DB-server en DB-client.
De machine waar de database zelf op staat is de databaseserver. De machine waar de applicatie op draait die met de database verbinding heeft is de databaseclient.
#ANONIEMdinsdag 10 januari 2012 @ 11:28
quote:
0s.gif Op dinsdag 10 januari 2012 11:26 schreef Pakspul het volgende:

[..]

Ik weet niet wat jij bedoelt met DB-server en DB-client.

Maar ik heb even een test uitgevoerd. 100 x een query opgehaald waar 2x50 float in voorkomen. In de ene heb ik hem door PHP laten afronden en in de andere heb ik het door MySQL laten doen. En het verschil is dat PHP er 35% langer over doet wanneer deze zelf de getallen nog moet afronden.

Dan had Tijn het dus toch goed dat de DB-server zelf efficiënter zijn data kan manipuleren.

Nouja, daar zat ik er dus naast ik dacht altijd dat je zulke functie niet daar moest uitvoeren. Vraag ik mij nu alleen af of dit ook geldt voor berekeningen. :P Straks maar eens doen :+ eerst koffie!
100x zegt niks. Doe hem eens 100.000 keer.
Pakspuldinsdag 10 januari 2012 @ 12:07
quote:
0s.gif Op dinsdag 10 januari 2012 11:28 schreef Scorpie het volgende:

[..]

100x zegt niks. Doe hem eens 100.000 keer.
Bij 100.000 keer doet hij er 11% langer over in PHP dan wanneer je MySQL zelf de round functie laat uitvoeren.