FOK!forum / Digital Corner / [PHP/(My)SQL] voor dummies #105 Waar veiligheid > alles
Xanlandwoensdag 7 november 2012 @ 21:19
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

Succes heren met het volgende deeltje!
Xanlandwoensdag 7 november 2012 @ 21:19
Mijn laatste post als reactie op KomtTijd:
quote:
0s.gif Op woensdag 7 november 2012 21:18 schreef Xanland het volgende:
Het zijn inderdaad, uiteraard, vaste routes. Waar ik denk dat ik nu eigenlijk naar op zoek te zijn is te weten wat het coördinaat, bijvoorbeeld, 50 meter verderop de polyline is.
Dit aangezien ik de reistijd tussen 2 haltes weet en ook hoeveel meter ik de marker moet verplaatsen. Alleen kan ik zoiets niet in PHP vinden om dus het volgende coördinaat op de polyline in PHP te berekenen.
Farenjiwoensdag 7 november 2012 @ 22:25
Daar heb je de stelling van pythagoras bij nodig en cosinus/sinus functies. Heeft verder weinig met php specifiek van doen maar is gewoon meetkunde.

Je hebt een lijn tussen twee coordinaten, je kan dus de afstand tussen die twee coords berekenen, en ook de hoek van die lijn tov de noord/zuid (of oost/west as). Je wil weten wat het coordinaat is als je n meter op de lijn verder gaat, dus je moet de verschuiving in X en Y richting weten. Je hebt dan dus een rechthoekige driehoek waarvan je de hoek weet en de lengte van de schuine zijde. Aan de hand daarvan kun je mbv sinus en cosinus de lengte van de andere twee zijdes berekenen. En voila, je hebt je nieuwe coordinaat.
pascal08woensdag 7 november 2012 @ 23:49
Ik zit weer met het volgende lastige probleem. Via een tutorial op youtube had ik met raw php in notepad++ een universal member page gemaakt. Als ik dan localhost/project/gebruikersnaam deed, dan kreeg ik een pagina te zien die speciaal voor de gebruiker was, een members page dus.

Nu gebruik ik codeigniter, maar dan wordt alles een stuk lastiger. Codeigniter gebruikt standaard geen $_GET en ik wil liever ook niks aanpassen om dat wel werkend te krijgen. Het lijkt me namelijk stug dat CodeIgniter hier geen andere oplossing voor biedt. Ik heb al nagedacht over alternatieven, maar ik kan niet anders bedenken dan een unieke URL voor elke gebruiker, want uiteindelijk wil je een gebruikerspagina ook direct via een URL kunnen benaderen.

Kan iemand mij een zetje in de goede richting geven, ik heb namelijk geen flauw idee hoe ik dit ga googlen. :P
Lightwoensdag 7 november 2012 @ 23:56
quote:
0s.gif Op woensdag 7 november 2012 23:49 schreef pascal08 het volgende:
Ik zit weer met het volgende lastige probleem. Via een tutorial op youtube had ik met raw php in notepad++ een universal member page gemaakt. Als ik dan localhost/project/gebruikersnaam deed, dan kreeg ik een pagina te zien die speciaal voor de gebruiker was, een members page dus.

Nu gebruik ik codeigniter, maar dan wordt alles een stuk lastiger. Codeigniter gebruikt standaard geen $_GET en ik wil liever ook niks aanpassen om dat wel werkend te krijgen. Het lijkt me namelijk stug dat CodeIgniter hier geen andere oplossing voor biedt. Ik heb al nagedacht over alternatieven, maar ik kan niet anders bedenken dan een unieke URL voor elke gebruiker, want uiteindelijk wil je een gebruikerspagina ook direct via een URL kunnen benaderen.

Kan iemand mij een zetje in de goede richting geven, ik heb namelijk geen flauw idee hoe ik dit ga googlen. :P
Je gaat in ieder geval een controller moeten maken.
pascal08donderdag 8 november 2012 @ 00:01
quote:
0s.gif Op woensdag 7 november 2012 23:56 schreef Light het volgende:

[..]

Je gaat in ieder geval een controller moeten maken.
Dat ik daar niet zelf op gekomen ben. _O-

Nee, grapje, ik denk dat ik zoiets moet doen:

localhost/project/gebruikerspagina/gebruikersnaam, en dan iets met $this->uri... in de controller.
Juicyhildonderdag 8 november 2012 @ 00:04
Heb je wel al een RewriteRule daarvoor aangemaakt binnen je htaccess?

Anders is het iets van index.php/project/gebruikersnaam
pascal08donderdag 8 november 2012 @ 00:07
quote:
0s.gif Op donderdag 8 november 2012 00:04 schreef Juicyhil het volgende:
Heb je wel al een RewriteRule daarvoor aangemaakt binnen je htaccess?

Anders is het iets van index.php/project/gebruikersnaam
Ja, heb ik. :)

Ik heb het nu zo: localhost/project/home/userpage/username, dus dan is home m'n controller, userpage m'n view en username m'n model. Ik heb de view userpage.php al aangemaakt, dus ik krijg die pagina wel te zien. Nu even uitvogelen wat ik moet doen met username.
Juicyhildonderdag 8 november 2012 @ 00:10
Zie hier: http://codeigniter.com/user_guide/general/urls.html
Je kunt ook argumenten meegeven in je url. Als print_r(func_get_args()) neerzet in de userpage action van je homecontroller, zou je hem moeten kunnen zien.
pascal08donderdag 8 november 2012 @ 00:15
quote:
0s.gif Op donderdag 8 november 2012 00:10 schreef Juicyhil het volgende:
Zie hier: http://codeigniter.com/user_guide/general/urls.html
Je kunt ook argumenten meegeven in je url. Als print_r(func_get_args()) neerzet in de userpage action van je homecontroller, zou je hem moeten kunnen zien.
Kan het ook zo?:

Eerst naar localhost/project/ gaan, daar de link aanklikken die naar localhost/project/home/userpage/username verwijst. Dan in de view "userpage":
1
2
3
<?php
$this
->uri->segment(3);
?>

Ik krijg dan namelijk wel de gebruikersnaam die ik nodig heb om de pagina uniek te maken.
Juicyhildonderdag 8 november 2012 @ 00:17
quote:
0s.gif Op donderdag 8 november 2012 00:15 schreef pascal08 het volgende:

[..]

Kan het ook zo?:

Eerst naar localhost/project/ gaan, daar de link aanklikken die naar localhost/project/home/userpage/username verwijst. Dan in de view "userpage":
[ code verwijderd ]

Ik krijg dan namelijk wel de gebruikersnaam die ik nodig heb om de pagina uniek te maken.
Als je hem zo krijgt, zou het ook kunnen. Maar lijkt me als parameter in je functie wat netter. Je kunt hem immers ook gewoon een default value meegeven.
pascal08donderdag 8 november 2012 @ 00:20
quote:
0s.gif Op donderdag 8 november 2012 00:17 schreef Juicyhil het volgende:

[..]

Als je hem zo krijgt, zou het ook kunnen. Maar lijkt me als parameter in je functie wat netter. Je kunt hem immers ook gewoon een default value meegeven.
Ik moet die uri->segments in m'n controller plaatsen, dat bedoel je toch?

Het werkt. *O* :o Nu is $username gewoon al direct een variabele in m'n view, fantastisch! ;) ^O^
Juicyhildonderdag 8 november 2012 @ 00:23
quote:
0s.gif Op donderdag 8 november 2012 00:20 schreef pascal08 het volgende:

[..]

Ik moet die uri->segments in m'n controller plaatsen, dat bedoel je toch?

Het werkt. *O* :o Nu is $username gewoon al direct een variabele in m'n view, fantastisch! ;) ^O^
In je action ja :Y
pascal08zaterdag 10 november 2012 @ 00:00
Is het eigenlijk verstandig om meerdere controllers aan te maken in CodeIgniter? Moet ik die dan elkaar laten extenden of allemaal de CI_controller? Ik snap niet wat het nut hiervan is, buiten dat m'n code er overzichtelijker van wordt. Ik zie namelijk bij heel veel tutorials meerdere controllers.
Juicyhilzaterdag 10 november 2012 @ 00:05
quote:
0s.gif Op zaterdag 10 november 2012 00:00 schreef pascal08 het volgende:
Is het eigenlijk verstandig om meerdere controllers aan te maken in CodeIgniter? Moet ik die dan elkaar laten extenden of allemaal de CI_controller? Ik snap niet wat het nut hiervan is, buiten dat m'n code er overzichtelijker van wordt. Ik zie namelijk bij heel veel tutorials meerdere controllers.
Ik zou dit eens lezen als ik jou was: http://nl.wikipedia.org/wiki/Model-view-controller-model

Een controller is onderdeel van MVC, een design pattern waarmee je je code kan inrichten. Een controller is bedoeld om je data uit modellen en andere bewerkingen te doen en hiervan het resultaat naar je view te sturen om dit vervolgens naar de browser te sturen.

Dus ja, over het algemeen gebruik je meerdere controllers. Die laat je inderdaad allemaal erven van CI_Controller :Y
Juicyhilzaterdag 10 november 2012 @ 00:07
Ligt er natuurlijk wel helemaal aan wat je precies gaat maken. Als je straks voor iedere dingetje een controller hebt, wordt ook weer zo onoverzichtelijk :P
pascal08zaterdag 10 november 2012 @ 00:19
quote:
0s.gif Op zaterdag 10 november 2012 00:07 schreef Juicyhil het volgende:
Ligt er natuurlijk wel helemaal aan wat je precies gaat maken. Als je straks voor iedere dingetje een controller hebt, wordt ook weer zo onoverzichtelijk :P
Ik heb echt al enorm veel gelezen, want ik wil in een paar weken met 0 kennis een mooie website bouwen. Schoonheidsfoutjes of een amateuristische code kan mij op zich niet zoveel schelen zolang alles maar veilig is.

In het begin had ik alleen de controller: "main", maar die begint nu wel uit te puilen. Ik denk dat ik een paar hoofdcontrollers maak, die een categorie aan functies bevatten om het zo overzichtelijk mogelijk te maken. Ook m'n CSS zal ik straks helemaal opnieuw moeten schrijven, want dat ding is echt een chaos geworden. :P
pascal08zondag 11 november 2012 @ 00:23
Ik breek echt m'n nek over het volgende:

Ik krijg elke keer deze *@!#$*!#@$ foutmelding, terwijl de controller MAIN gewoon bestaat en er gewoon netjes naar een .php bestand wordt verwezen in de index() functie. Ik had het werkend, maar nu lijkt alles naar de klote. Ik heb al m'n config files gecheckt, maar ik kwam niets tegen dat dit probleem veroorzaakt. :(

b1a16fcd3d682ebc7a8665acf4485dc8

Zo doet 'ie het trouwens wel, maar linken naar andere pagina's geeft de foutmelding van hierboven. :(

7a505b8832bb3687c5c4baa35e27742d
Pakspulzondag 11 november 2012 @ 00:30
Zit dit probleem in in de apache server? Anders moet je stap voor stap gaan debuggen om te kijken of er toch ergens iets verkeerd wordt geladen.
GlowMousezondag 11 november 2012 @ 00:31
loggen en debuggen hoort erbij
Pakspulzondag 11 november 2012 @ 00:34
quote:
14s.gif Op zondag 11 november 2012 00:31 schreef GlowMouse het volgende:
loggen en debuggen hoort erbij
Soms kan het tijdstip debuggen wel tegen werken, als je gewoon dom door kunt programmeren dan maakt het tijdstip opzich niet uit, maar als er ook maar 1 slash of iets anders mist dan kun je daar eeuwen op dood staren :P
pascal08zondag 11 november 2012 @ 00:34
quote:
0s.gif Op zondag 11 november 2012 00:30 schreef Pakspul het volgende:
Zit dit probleem in in de apache server? Anders moet je stap voor stap gaan debuggen om te kijken of er toch ergens iets verkeerd wordt geladen.
Ik kan het me niet voorstellen, want een map met een ander project op hetzelfde niveau doet het wel. Als ik de mapnaam verander krijg ik dezelfde foutmeldingen. Ik denk dus dat ik iets vreselijk over het hoofd zie. :')
Pakspulzondag 11 november 2012 @ 00:35
quote:
0s.gif Op zondag 11 november 2012 00:34 schreef pascal08 het volgende:

[..]

Ik kan het me niet voorstellen, want een map met een ander project op hetzelfde niveau doet het wel. Als ik de mapnaam verander krijg ik dezelfde foutmeldingen. Ik denk dus dat ik iets vreselijk over het hoofd zie. :')
Als je dan een echo "jeej"; in je alle eerste PHP script neer zet dan moet deze boven de foutmelding komen te staan. Gebeurd dit niet dan komt hij al geen eens in je PHP script en zit Apache te kutten.
pascal08zondag 11 november 2012 @ 00:37
quote:
0s.gif Op zondag 11 november 2012 00:35 schreef Pakspul het volgende:

[..]

Als je dan een echo "jeej"; in je alle eerste PHP script neer zet dan moet deze boven de foutmelding komen te staan. Gebeurd dit niet dan komt hij al geen eens in je PHP script en zit Apache te kutten.
acadfb90b41856a25bcd2920fd15019a

Het eerste woord staat in de index() functie, het tweede woord wordt aangeroepen via een functie. Het werkt dus wel, maar niet als ik index.php weghaal, terwijl ik in de config file index.php weg heb gehaald.
Pakspulzondag 11 november 2012 @ 00:38
quote:
0s.gif Op zondag 11 november 2012 00:37 schreef pascal08 het volgende:

[..]

[ afbeelding ]
Je URL is nu wel ineens anders. index.php staat er nu ineens tussen.
pascal08zondag 11 november 2012 @ 00:39
quote:
0s.gif Op zondag 11 november 2012 00:38 schreef Pakspul het volgende:

[..]

Je URL is nu wel ineens anders. index.php staat er nu ineens tussen.
Klopt. Ik gebruik CodeIgniter trouwens, ben ik vergeten te vermelden.
Pakspulzondag 11 november 2012 @ 00:40
quote:
0s.gif Op zondag 11 november 2012 00:39 schreef pascal08 het volgende:

[..]

Klopt. Ik gebruik CodeIgniter trouwens, ben ik vergeten te vermelden.
ok, ben ik niet bekend mee, maar als de URL goed is dan kun je verder gaan om de if statement uit te zoeken waarom die de keuze maakt om toch een foutmelding af te drukken. Variabelen weergeven helpt hierbij om te kijken wat er in zit.
pascal08zondag 11 november 2012 @ 00:43
Toen ik dit las keek ik zo: :'). Ik ben helemaal vergeten om mod_rewrite in de .htaccess file te zetten. |:( |:( |:(

909ddd465de5de5de8a1b8a1878ee9f1
Pakspulzondag 11 november 2012 @ 00:49
Goedemorgen :P
pascal08zondag 11 november 2012 @ 00:51
quote:
0s.gif Op zondag 11 november 2012 00:49 schreef Pakspul het volgende:
Goedemorgen :P
Arggggh, zo vervelend is dat hè. Ik ben gewoon niet geschikt voor dit soort dingen, veel te slordig en ik maak er heel vaak een puinhoop van. :')

Het gekke is wel, dat als ik mijn probleem hier post, ik vaak zelf het antwoord vind. 8)7
Chandlerzondag 11 november 2012 @ 10:35
Ik heb eindelijk eens tijd kunnen maken om te kunnen spelen met PDO. Om PDO gemakkelijk te kunnen toevoegen aan huidige projecten heb ik een wrapper / class geschreven die ik normaal ook gebruik om queries uit te voeren. Echter zit ik met een probleem als het gaat om LIMIT.

Een stukje 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
<?php
function q($query$data = array())
{
    
/* run query with data */
    
$this->query = array('query' => $query
                         
'data'  => $data);
    try
    {
        
$this->prep $this->dbConnection->prepare($query);
        
        foreach (
$data AS $key => $val)
        {
            if (
is_int($val))
            {
                
$this->prep->bindParam($key, (int)$valPDO::PARAM_INT); // regel 43
            
}
            else
            {
                
$this->prep->bindParam($key$val);
            }
        }
                    
        
$this->prep->execute();
        
        
$this->prep->setFetchMode(PDO::FETCH_ASSOC);
        
        return 
$this->prep// can return false
    
}
    catch (
Exception $e
    {
        
$this->pdoException($e->getMessage());
        exit;
    }
}
?>

Zo voer ik deze code uit:
1
2
3
4
5
6
7
8
9
10
<?php
    $tst
->q("SELECT * 
             FROM `fish` 
             WHERE `user_id` > :id 
             LIMIT :startCnt, 
                   :numberCnt"
,
            array(
":id"        => 0
                  
":startCnt"  => 1
                  
":numberCnt" => 5));
?>

echter als ik de query zonder LIMIT uitvoer krijg ik geen foutmelding maar data, maar als ik limit toevoeg wel, nu las ik overal op het net dat ik dan moet zorgen dat de gegevens gebonden worden als INT, dus heb ik een stukje code toegevoegd om INT's als INT toe te voegen maar op een of andere manier blijf ik foutmeldingen krijgen.

foutmelding:
1Fatal error: Cannot pass parameter 2 by reference in D:\EasyPHP-12.1\www\pdoclass.php on line 43

$data bevat volgens de foutmelding dit:
1
2
3
4
array (size=3)
  ':id' => int 0
  ':startCnt' => int 1
  ':numberCnt' => int 5

help!? :D

-edit-

1
2
$val = (int)$val;
$this->prep->bindParam($key, $val, PDO::PARAM_INT);

nadat ik (int)$val als extra variabel heb aangemaakt en deze doorgeef aan bindparam krijg ik de volgende foutmelding:

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
array (size=4)
  'error' => string 'PDO-SQL-ERROR' (length=13)
  'PDO_error' => string 'SQLSTATE[42000]: Syntax error or access violation: 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 ''5', 
                   '5'' at line 4' (length=231)
  'SQL' => 
    array (size=2)
      'query' => string 'SELECT * 
             FROM `fish` 
             WHERE `user_id` > :id 
             LIMIT :startCnt, 
                   :numberCnt' (length=136)
      'data' => 
        array (size=3)
          ':id' => int 0
          ':startCnt' => int 1
          ':numberCnt' => int 5
  'debug_backtrace' => 
    array (size=2)
      0 => 
        array (size=7)
          'file' => string 'D:\***\pdoclass.php' (length=32)
          'line' => int 60
          'function' => string 'pdoException' (length=12)
          'class' => string 'pdoWrapper' (length=10)
          'object' => 
            object(pdoWrapper)[1]
              ...
          'type' => string '->' (length=2)
          'args' => 
            array (size=1)
              ...
      1 => 
        array (size=7)
          'file' => string 'D:\***\pdoclass.php' (length=32)
          'line' => int 145
          'function' => string 'q' (length=1)
          'class' => string 'pdoWrapper' (length=10)
          'object' => 
            object(pdoWrapper)[1]
              ...
          'type' => string '->' (length=2)
          'args' => 
            array (size=2)
              ...
Farenjizondag 11 november 2012 @ 10:48
quote:
0s.gif Op zondag 11 november 2012 00:51 schreef pascal08 het volgende:

[..]

Arggggh, zo vervelend is dat hè. Ik ben gewoon niet geschikt voor dit soort dingen, veel te slordig en ik maak er heel vaak een puinhoop van. :')

Het gekke is wel, dat als ik mijn probleem hier post, ik vaak zelf het antwoord vind. 8)7
Dat heet het "teddybeer-effect". Doordat je je probleem aan iemand moet uitleggen wordt het voor jezelf ook duidelijker en doordat je extra houvast hebt aan dit topic / je collega / je teddybeer zie je de oplossing opeens zelf.
Scorpiezondag 11 november 2012 @ 10:54
quote:
7s.gif Op zondag 11 november 2012 10:48 schreef Farenji het volgende:

[..]

Dat heet het "teddybeer-effect". Doordat je je probleem aan iemand moet uitleggen wordt het voor jezelf ook duidelijker en doordat je extra houvast hebt aan dit topic / je collega / je teddybeer zie je de oplossing opeens zelf.
Rubber ducking.
Chandlerzondag 11 november 2012 @ 18:00
Problem solved! :)

Geen bindParam maar bindValue aangezien bindParam er vanuit gaat dat de value kan veranderen en bindValue verbind de gegeven 'value' aan de parameter! :D

jeej

Wat vinden jullie trouwens van mijn pdoWrapper?

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
<?php
class pdoWrapper
{
    private 
$dbConnection;
    private 
$lastQuery 0;
    private 
$prep;

    public 
$queries = array();

    private function 
mtime_float()
    {
        list(
$usec$sec) = explode(" "microtime());
        return ((float)
$usec + (float)$sec);
    }    

    function 
__construct($hostname$username$password$database)
    {
        
/* open the connection to the database server and database */
        
$this->queries['connection'] = array('hostname'  => $hostname
                                             
'username'  => $username,
                                             
'database'  => $database,
                                             
'startTime' => $this->mtime_float());
        try
        {
            
$con "mysql:dbname=" $database ";host=" $hostname;
            
$this->dbConnection = new PDO($con
                                          
$username
                                          
$password);
        } 
        catch(
Exception $e
        {
            
$this->pdoException($e->getMessage());
            exit;
        }
        
        
$this->dbConnection->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);

        
$this->queries['connection']['endTime']     = $this->mtime_float();
        
$this->queries['connection']['totalTime']   = round($this->queries['connection']['endTime'] - $this->queries['connection']['startTime'], 
                                                          
6);
        
$this->queries['connection']['connectTime'] = $this->queries['connection']['totalTime'];
        
        
$this->queries['connection']['queries']          = 0;
        
$this->queries['connection']['longestQueryTime'] = 0;
        
$this->queries['connection']['longestQuery']     = 0;
        
    }

    function 
q($query$data = array())
    {
        
/* run query with data */
        
$this->lastQuery++;
        
        
// start logging
        
$this->queries[$this->lastQuery] = array('query'     => $query
                                                 
'data'      => $data,
                                                 
'rows'      => -1,
                                                 
'startTime' => $this->mtime_float());
        try
        {
            
$this->prep $this->dbConnection->prepare($query);
            
            
// loop elements and bind to there requested value
            
foreach ($data AS $bindValue => $replaceValue)
            {
                
// int, add PDO::PARAM_INT for processing as REAL int -d
                
if (is_int($replaceValue))
                {
                    
$val intval($replaceValue);
                    
$this->prep->bindValue($bindValue$replaceValuePDO::PARAM_INT);
                }
                else
                {
                    
$this->prep->bindValue($bindValue$replaceValuePDO::PARAM_STR);
                }
            }
                        
            
$this->prep->execute();
            
        }
        catch (
Exception $e
        {
            
$this->pdoException($e->getMessage());
        }

        
$this->queries[$this->lastQuery]['rows'] = $this->prep->rowCount();
            
        
$this->prep->setFetchMode(PDO::FETCH_ASSOC);
        
        
// end the logging
        
$this->queries[$this->lastQuery]['endTime']   = $this->mtime_float();
        
$this->queries[$this->lastQuery]['totalTime'] = round($this->queries[$this->lastQuery]['endTime'] - $this->queries[$this->lastQuery]['startTime'],
                                                              
6);

        
// update the database total connection time.
        
$this->queries['connection']['endTime']   = $this->mtime_float();
        
$this->queries['connection']['totalTime'] = round($this->queries['connection']['endTime'] - $this->queries['connection']['startTime'], 
                                                        
6);
        
$this->queries['connection']['queries']++;

        if (
$this->queries[$this->lastQuery]['totalTime'] > $this->queries['connection']['longestQueryTime'])
        {
            
$this->queries['connection']['longestQueryTime'] = $this->queries[$this->lastQuery]['totalTime'];
            
$this->queries['connection']['longestQuery']     = $this->queries[$this->lastQuery];
        }
        
        return 
$this->prep// can return false
    
}

    function 
fetch()
    {
        
/* fetch all data */
        
return $this->prep->fetchAll();
    }

    function 
rows()
    {
        
/* retrieve number of found rows */
        
return $this->queries[$this->lastQuery]['rows'];
    }

    function 
result()
    {
        
/* result for used more then 0 yes or no */
        
        
return ( $this->queries[$this->lastQuery]['rows'] > 0) ? false true;
    }

    function 
insert_id()
    {
        
/* return last insert id */
        
$this->queries[$this->lastQuery]['insert_id'] = $this->dbConnection->lastInsertId();
        
        return 
$this->queries[$this->lastQuery]['insert_id'];
    }

    function 
affected()
    {
        
/* return number affected rows alternative */
        
        
return  $this->queries[$this->lastQuery]['rows'];
    }
    
    function 
pdoException($message
    {
        
$this->queries['connection']['errorQueries'][$this->lastQuery] = $message;
        
$this->queries[$this->lastQuery]['error'] = array('error'           => 'PDO-SQL-ERROR',
                                                          
'PDO_error'       => $message,
                                                          
'debug_backtrace' => debug_backtrace());
        
    }    
}
?>


[ Bericht 98% gewijzigd door Chandler op 12-11-2012 10:43:57 ]
pascal08maandag 12 november 2012 @ 12:05
Waar laat ik mijn PHP-code in JSFiddle?
KomtTijd...maandag 12 november 2012 @ 12:06
quote:
0s.gif Op maandag 12 november 2012 12:05 schreef pascal08 het volgende:
Waar laat ik mijn PHP-code in JSFiddle?
Eh.
Heet het PHPFiddle?
pascal08maandag 12 november 2012 @ 12:10
quote:
15s.gif Op maandag 12 november 2012 12:06 schreef KomtTijd... het volgende:

[..]

Eh.
Heet het PHPFiddle?
Nee... toch? :P

Maarja, ik heb dus het volgende probleem. Ik heb met Bootstrap een typeahead veld gemaakt en ik heb de JS code onder aan m'n HTML pagina geschreven. Als ik dit doe werkt het wel:

90609ecb5a4f97cf91ce40ac6f936562

..., maar zodra ik een query laat uitvoeren vanuit een ander PHP-bestand, dan gaat er iets niet goed. Het PHP-bestand stand-alone draaien werkt wel.

925099548c5c07dc9c8ca109c2eeb14e

SPOILER
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
if(isset($_POST['query'])) {

    
$connect mysql_connect('localhost','root','') or die(mysql_error());
    
mysql_select_db('db'$connect) or die(mysql_error());

    
$query mysql_real_escape_string($_POST['query']);
    
//mysql_query("SET NAMES 'utf8'");
    
$mysql_query mysql_query("SELECT * FROM `users` WHERE last_name LIKE '%$query%' ORDER BY `status` DESC LIMIT 15");
    while(
$row mysql_fetch_assoc($mysql_query)) {
        
$array[] = $row['last_name'];
    }
    
    echo 
json_encode($array);
}
?>
KomtTijd...maandag 12 november 2012 @ 12:14
...een javascript probleem dus. Wat moet dat in het PHP-topic?
pascal08maandag 12 november 2012 @ 12:16
quote:
2s.gif Op maandag 12 november 2012 12:14 schreef KomtTijd... het volgende:
...een javascript probleem dus. Wat moet dat in het PHP-topic?
Ik post toch ook een JS-code én een PHP-bestand.
KomtTijd...maandag 12 november 2012 @ 12:17
...je zegt net dat het php-script gewoon werkt? :?
pascal08maandag 12 november 2012 @ 12:18
quote:
14s.gif Op maandag 12 november 2012 12:17 schreef KomtTijd... het volgende:
...je zegt net dat het php-script gewoon werkt? :?
Stand-alone ja, maar misschien moet het PHP-script wel aangepast worden om het op deze manier te laten werken, weet ik veel. :?
GlowMousemaandag 12 november 2012 @ 12:21
Ik denk dat de fout niet in het php-script zit. Misschien kom je verder met de developer-console in je browser.
pascal08maandag 12 november 2012 @ 12:22
quote:
0s.gif Op maandag 12 november 2012 12:21 schreef GlowMouse het volgende:
Ik denk dat de fout niet in het php-script zit. Misschien kom je verder met de developer-console in je browser.
Ik heb 'm al in het JS-topic gepost. ;) Waar moet ik precies naar kijken in de developer-console van Chrome?
Crutchmaandag 12 november 2012 @ 13:40
Heb je ook gekeken wat er terugkomt in die datavariabele?
In de PHP-log gekeken?
Misschien is ?query= wel leeg?
cablegunmasterdinsdag 13 november 2012 @ 00:10
quote:
0s.gif Op maandag 12 november 2012 12:10 schreef pascal08 het volgende:

[..]

Nee... toch? :P

Maarja, ik heb dus het volgende probleem. Ik heb met Bootstrap een typeahead veld gemaakt en ik heb de JS code onder aan m'n HTML pagina geschreven. Als ik dit doe werkt het wel:

[ afbeelding ]

..., maar zodra ik een query laat uitvoeren vanuit een ander PHP-bestand, dan gaat er iets niet goed. Het PHP-bestand stand-alone draaien werkt wel.

[ afbeelding ]

SPOILER
[ code verwijderd ]

Kwestie van search.php testen. .ajax wil niet zeggen dat hij een $_POST verstuurd controleer eerst of hij dit uberhaupt doet. Door een variable terug te krijgen van PHP script. dus dat je een visuele output ergens maakt. Je PHP file is leuk gemaakt, maar voor test willen we eerst zien of hij dat stukje code bereikt.

Controleer met behulp van Firebug (firefox addon)in de console of er een output richting de server gaat en of je daar iets van terug krijgt maak daarvoor bvb:
1
2
3
4
5
6
<?php 
if(isset($_POST['Een_bestaande_variabele']))
{
  echo 
"het werkt!";
}
?>
van en ga dan vervolgens kijken of je dat terug krijgt in de console.
Mocht dit niet het geval zijn dan weet je dat je Javascript niet werkt. Desnoods stop je eronder iets wat een kleurtje oranje maakt op de site met behulp van JQuery om te testen of het script werkt of niet.

Mocht het Javascript werken dan kan hij mogelijk "search.php" niet vinden. en zul je dit anders moeten benaderen.
pascal08dinsdag 13 november 2012 @ 00:19
quote:
0s.gif Op maandag 12 november 2012 13:40 schreef Crutch het volgende:
Heb je ook gekeken wat er terugkomt in die datavariabele?
In de PHP-log gekeken?
Misschien is ?query= wel leeg?
quote:
0s.gif Op dinsdag 13 november 2012 00:10 schreef cablegunmaster het volgende:

[..]

Kwestie van search.php testen. .ajax wil niet zeggen dat hij een $_POST verstuurd controleer eerst of hij dit uberhaupt doet. Door een variable terug te krijgen van PHP script. dus dat je een visuele output ergens maakt. Je PHP file is leuk gemaakt, maar voor test willen we eerst zien of hij dat stukje code bereikt.

Controleer met behulp van Firebug (firefox addon)in de console of er een output richting de server gaat en of je daar iets van terug krijgt maak daarvoor bvb:
[ code verwijderd ]

van en ga dan vervolgens kijken of je dat terug krijgt in de console.
Mocht dit niet het geval zijn dan weet je dat je Javascript niet werkt. Desnoods stop je eronder iets wat een kleurtje oranje maakt op de site met behulp van JQuery om te testen of het script werkt of niet.

Mocht het Javascript werken dan kan hij mogelijk "search.php" niet vinden. en zul je dit anders moeten benaderen.
Bedankt voor het meedenken, maar het probleem was al vrij snel opgelost in het JS topic. Ik ben in ieder geval vandaag heel veel wijzer geworden over debuggen, dus dat voorkomt een hoop onnodige posts in de toekomst.
Chandlerdinsdag 13 november 2012 @ 10:36
Jammer dat niemand een reactie wil geven op mijn pdoWrapper maar goed, boeiend, maar nu een andere inzichts vraag.

Stel ik heb een string met de volgende gegevens.
/x/y/z/a/b

nu wil ik van deze string het laatste lettertje uitlezen, dus dacht ik, ach simpel dat doen we gewoon zo

1
2
3
4
5
<?php
$string 
"/x/y/z/a/b";
$e explode("/"$string);
echo 
end($e);
?>

dat werkt, maar natuurlijk!. Dus dacht ik, het moet toch ook simpeler kunnen? dus dacht ik dat dit ook wel moest werken

1
2
3
4
<?php
$string 
"/x/y/z/a/b";
echo 
end(explode("/"$string));
?>

maar dat mag niet? Strict standards: Only variables should be passed by reference in

dus mijn vraag, zit ik nu vast aan mijn 2 regels? of kan het nog korter?
Tijndinsdag 13 november 2012 @ 10:48
Dat laatste voorbeeld werkt bij mij gewoon, hoor.
Crutchdinsdag 13 november 2012 @ 10:51
quote:
5s.gif Op dinsdag 13 november 2012 10:48 schreef Tijn het volgende:
Dat laatste voorbeeld werkt bij mij gewoon, hoor.
Hier ook.
Chandlerdinsdag 13 november 2012 @ 10:52
quote:
5s.gif Op dinsdag 13 november 2012 10:48 schreef Tijn het volgende:
Dat laatste voorbeeld werkt bij mij gewoon, hoor.
Hier niet :(

1
2
3
4
<?php
$string 
'/a/b/c/d/e/f';
echo 
end(explode("/"$string));
?>

Krijg deze foutmelding.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Strict standards: Only variables should be passed by reference in D:\EasyPHP-12.1\home\codesource.php on line 3
Call Stack
#    Time    Memory    Function    Location
1    0.0008    138544    {main}( )    ..\codetester.php:0
2    0.0076    176864    include( 'D:\EasyPHP-12.1\home\codesource.php' )    ..\codetester.php:43
Dump $_SERVER
$_SERVER['REMOTE_ADDR'] =
string '127.0.0.1' (length=9)
$_SERVER['REQUEST_METHOD'] =
string 'POST' (length=4)
$_SERVER['REQUEST_URI'] =
string '/home/codetester.php' (length=20)
Variables in local scope (#2)
$string =
string '/a/b/c/d/e/f' (length=12)

server info
APACHE 2.4.2 MYSQL 5.5.27 PHP 5.4.6
mstxdinsdag 13 november 2012 @ 10:56
Krijg je die melding ook als je array_pop() ipv end() gebruikt? (waarschijnlijk wel)
Volgens mij zul je echt die extra variabele moeten gebruiken.
quote:
The array. This array is passed by reference because it is modified by the function. This means you must pass it a real variable and not a function returning an array because only actual variables may be passed by reference.
Chandlerdinsdag 13 november 2012 @ 11:01
Maar als het wel werkt bij jullie, waar werken jullie dan mee? en logisch gezien zou het gewoon moeten werken! :)

Ah, wat een onlogica zeg... :P maar waarom werkt het dan wel bij de rest? :D
Tijndinsdag 13 november 2012 @ 11:02
PHP 5.3 hier.
mstxdinsdag 13 november 2012 @ 11:03
Waarschijnlijk heeft niemand E_STRICT error reporting aan staan.
Scorpiedinsdag 13 november 2012 @ 11:03
quote:
4s.gif Op dinsdag 13 november 2012 11:01 schreef Chandler het volgende:
Maar als het wel werkt bij jullie, waar werken jullie dan mee? en logisch gezien zou het gewoon moeten werken! :)

Ah, wat een onlogica zeg... :P maar waarom werkt het dan wel bij de rest? :D
Denk dat dat te maken heeft met je warning level.
Scorpiedinsdag 13 november 2012 @ 11:03
quote:
0s.gif Op dinsdag 13 november 2012 11:03 schreef mstx het volgende:
Waarschijnlijk heeft niemand E_STRICT error reporting aan staan.
Dat dus.
Chandlerdinsdag 13 november 2012 @ 11:04
quote:
7s.gif Op dinsdag 13 november 2012 11:03 schreef Scorpie het volgende:

[..]

Dat dus.
Ik wel dus, wil namelijk 0,0 fouten zien :P maar bedankt voor jullie reacties, zal het gewoon op 2 regels houden......
Tijndinsdag 13 november 2012 @ 13:55
quote:
0s.gif Op dinsdag 13 november 2012 11:03 schreef mstx het volgende:
Waarschijnlijk heeft niemand E_STRICT error reporting aan staan.
Ik zie dat sinds PHP 5.4 E_STRICT onderdeel is geworden van E_ALL. Dan zullen in de toekomst wel meer mensen dit soort fouten gaan tegenkomen.
Pakspuldinsdag 13 november 2012 @ 14:19
quote:
3s.gif Op dinsdag 13 november 2012 13:55 schreef Tijn het volgende:

[..]

Ik zie dat sinds PHP 5.4 E_STRICT onderdeel is geworden van E_ALL. Dan zullen in de toekomst wel meer mensen dit soort fouten gaan tegenkomen.
Klopt, kwam ze ook ineens tegen, maar oplossing is best eenvoudig. Toch programmeer ik altijd met E_ALL, zodat PHP je streng controleert. Wat soms nog strenger mag, bv typecasting
wipes66dinsdag 13 november 2012 @ 14:22
je kan ook strrpos en substr gebruiken :P
Chandlerdinsdag 13 november 2012 @ 14:46
quote:
0s.gif Op dinsdag 13 november 2012 14:22 schreef wipes66 het volgende:
je kan ook strrpos en substr gebruiken :P
Haha, ja zeker een optie! :P
Devolutiondinsdag 13 november 2012 @ 15:44
Inderdaad, waarom geen substr? Nu moet je allemaal moeilijk gaan lopen doen met het maken van een array etc. terwijl substr precies voor zulke doeleinden gemaakt is :)
Chandlerdinsdag 13 november 2012 @ 16:49
Je hebt gelijk en ik dacht, laat ik het eens testen middels een benchmarkje. en toen kwam het! :P

Had een directory lijst gemaakt van een partitie van mij en heb deze gebruikt voor de benchmark.

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
<?php
$fd 
fopen("list.txt""r");
$buffer explode("\n"str_replace("\\""/"fread($fdfilesize("list.txt"))));
fclose($fd);

echo 
count($buffer) . " regels<hr>";

$time_start microtime(true);
foreach (
$buffer AS $key)
{
    
$ex explode("/"$key);
    
$e end($ex);    
//    echo $key  . "-->" . $e;
}
echo 
"test1: " number_format(microtime(true) - $time_start3) . "<hr>";

$time_start microtime(true);
foreach (
$buffer AS $key)
{
    
$ex strrpos($key"/");
    
$e substr($key$ex+1);
//    echo $key  . "-->" . $e;
}
echo 
"test2: " number_format(microtime(true) - $time_start3) . "<hr>";
    
?>

resultaat:
24175 regels
test1: 0.132
test2: 0.084

Die oplossing is zelfs sneller! :@ :D
Chandlerdinsdag 13 november 2012 @ 16:51
Andere vraag voor een controle van rekening nummer.

Rekening nummers in nederland kunnen aan de hand van de elfproef worden gecontroleerd, dat is handig om te checken of een rekening nummer goed is, echter heb je ook rekening nummers van de ING!!! en dus zijn dus niet echt te controleren.

Wat raden jullie mij aan?
1. Extra veld om aan te geven of het om een POSTBANK/ING OF normale rekening nummer gaat
2. Geen controle gebruiken voor rekening nummer
3. Alleen elfproef.

:?
GlowMousedinsdag 13 november 2012 @ 16:52
Detecteren aan de hand van de lengte of het een ING-reknr is (tot 7 cijfers).
Chandlerdinsdag 13 november 2012 @ 16:54
quote:
0s.gif Op dinsdag 13 november 2012 16:52 schreef GlowMouse het volgende:
Detecteren aan de hand van de lengte of het een ING-reknr is (tot 7 cijfers).
Is een idee, maar stel de klant bedoelt een ABN rekening.... maar is net wat te snel... je kent het wel...
mstxdinsdag 13 november 2012 @ 16:56
Of gewoon IBAN gebruiken, die kun je wel valideren volgens mij.
Chandlerdinsdag 13 november 2012 @ 16:57
Zat ik ook al aan te denken maar serieus hoeveel mensen kennen hun iban nummer? :D ik zelf niet eens.. (foei) plus het feit dat dat het alleen maar moeilijker maakt voor mensen om in te voeren. Zo min mogelijk werk is vaak beter ;)
GlowMousedinsdag 13 november 2012 @ 17:01
Vanaf 1 februari 2014 gebruikt iedereen in Nederland, zowel bedrijven als consumenten, het International Bank Account Number (IBAN) als rekeningnummer.
GlowMousedinsdag 13 november 2012 @ 17:01
quote:
0s.gif Op dinsdag 13 november 2012 16:54 schreef Chandler het volgende:

[..]

Is een idee, maar stel de klant bedoelt een ABN rekening.... maar is net wat te snel... je kent het wel...
Dan zet je er toch met JavaScript bij: "dit is een postbanknummer" of "dit is een bankrekeningnummer".
StMdinsdag 13 november 2012 @ 17:02
Of bij 7 cijfers een alert van controleer uw nummer nogmaals en weet u zeker dat uw bank de ING is?
boem-dikkiedinsdag 13 november 2012 @ 17:09
Weet iemand hier waarom ik met json_encode, een :null terugkrijg als ik een karakter, zeg een ë ophaal uit een database?

In de database staat hij in een rij met eigenschap 'text' of 'varchar' en staat er gewoon netjes ë.

Dacht dat het ergens aan de encoding zou liggen maar kan eigenlijk niet vinden waar dan.
Scorpiedinsdag 13 november 2012 @ 17:09
quote:
0s.gif Op dinsdag 13 november 2012 16:52 schreef GlowMouse het volgende:
Detecteren aan de hand van de lengte of het een ING-reknr is (tot 7 cijfers).
boem-dikkiedinsdag 13 november 2012 @ 17:11
quote:
0s.gif Op dinsdag 13 november 2012 17:02 schreef StM het volgende:
Of bij 7 cijfers een alert van controleer uw nummer nogmaals en weet u zeker dat uw bank de ING is?
Wordt er bij de Postbank/ING niet P00 (of iets dergelijks) voor gezet zodat het als nog een resultaat van 11 characters oplevert?
Scorpiedinsdag 13 november 2012 @ 17:12
quote:
7s.gif Op dinsdag 13 november 2012 17:09 schreef boem-dikkie het volgende:
Weet iemand hier waarom ik met json_encode, een :null terugkrijg als ik een karakter, zeg een ë ophaal uit een database?

In de database staat hij in een rij met eigenschap 'text' of 'varchar' en staat er gewoon netjes ë.

Dacht dat het ergens aan de encoding zou liggen maar kan eigenlijk niet vinden waar dan.
https://bugs.php.net/bug.php?id=49588 ?
StMdinsdag 13 november 2012 @ 17:12
Tegenwoordig zie ik die P00 constructie vrijwel nooit meer, iig gebruikt ING het niet in hun eigen interface. De vraag is dus of iedereen weet wat daar de bedoeling van is.

En dan nog blijft dat je het nummer niet kan controleren.
mstxdinsdag 13 november 2012 @ 17:17
quote:
7s.gif Op dinsdag 13 november 2012 17:09 schreef boem-dikkie het volgende:
Weet iemand hier waarom ik met json_encode, een :null terugkrijg als ik een karakter, zeg een ë ophaal uit een database?

In de database staat hij in een rij met eigenschap 'text' of 'varchar' en staat er gewoon netjes ë.

Dacht dat het ergens aan de encoding zou liggen maar kan eigenlijk niet vinden waar dan.
quote:
This function only works with UTF-8 encoded data.
boem-dikkiedinsdag 13 november 2012 @ 17:23
Ja, dacht dat dat het al was. Maar goed, fixed. Thanks Scorpie!
Lightdinsdag 13 november 2012 @ 23:58
quote:
0s.gif Op dinsdag 13 november 2012 10:52 schreef Chandler het volgende:

[..]

Hier niet :(
[ code verwijderd ]

Krijg deze foutmelding.
[ code verwijderd ]

server info
APACHE 2.4.2 MYSQL 5.5.27 PHP 5.4.6
Ik krijg dezelfde melding. Ook PHP 5.4.6.
Lightwoensdag 14 november 2012 @ 00:07
E_STRICT is pas sinds PHP 5.4.0 onderdeel van E_ALL. En als de error_reporting op E_ALL gezet wordt bij een oudere versie van php, krijg je dus geen E_STRICT waarschuwingen. De melding die gegeven wordt is wel zo'n waarschuwing, en het is een logische waarschuwing. end() sleutelt aan de interne array-pointer, en verandert dus de array. Dat heeft mogelijk invloed op functies die erna komen. Als je geen variabele maar een functie-resultaat aan end() meegeeft, en datzelfde ook doet bij een vervolgfunctie, is het resultaat niet wat je verwacht.
boem-dikkiewoensdag 14 november 2012 @ 20:51
Even snel in dit topic een vraag, hoef ik er geen nieuw topic voor te openen.

Weet iemand hier of een XML bestand per element dezelfde attributen moet hebben?

Dus bijvoorbeeld:

<person>
<age>22</age>
<sex>male</sex>
</person>

En dat het volgende element bijvoorbeeld:

<person>
<age>22</age>
<sex>male</sex>
<hair>blond</hair>
</person>

Of moet dit voor echt elk element hetzelfde zijn?
Juicyhilwoensdag 14 november 2012 @ 20:53
quote:
7s.gif Op woensdag 14 november 2012 20:51 schreef boem-dikkie het volgende:
Even snel in dit topic een vraag, hoef ik er geen nieuw topic voor te openen.

Weet iemand hier of een XML bestand per element dezelfde attributen moet hebben?

Dus bijvoorbeeld:

<person>
<age>22</age>
<sex>male</sex>
</person>

En dat het volgende element bijvoorbeeld:

<person>
<age>22</age>
<sex>male</sex>
<hair>blond</hair>
</person>

Of moet dit voor echt elk element hetzelfde zijn?
Ik weet niet zeker of dat valid is. Maar je kan hem ook gewoon null laten

<age />
<sex />

Alhoewel soms expliciet een attribuut nodig is bij een element om te zeggen dat het null is.
boem-dikkiewoensdag 14 november 2012 @ 20:55
quote:
0s.gif Op woensdag 14 november 2012 20:53 schreef Juicyhil het volgende:

[..]

Ik weet niet zeker of dat valid is. Maar je kan hem ook gewoon null laten

<age />
<sex />

Alhoewel soms expliciet een attribuut nodig is bij een node om te zeggen dat het null is.
Meer de vraag of het überhaupt kan dat het verschilt per element. Dat maakt het makkelijker voor mij om een loopje te maken om gegevens uit te lezen uit een XML met circa 10k regels.
Arceewoensdag 14 november 2012 @ 20:55
quote:
7s.gif Op woensdag 14 november 2012 20:51 schreef boem-dikkie het volgende:
Of moet dit voor echt elk element hetzelfde zijn?
Nee, dat hoeft niet. Zou ook niet erg efficiënt zijn. :)

Hangt er nog wel vanaf hoe het XML-bestand wordt ingelezen. Mogelijk wordt er dan op de aanwezigheid van die tags gecheckt, hoewel me dat niet waarschijnlijk lijkt.
Juicyhilwoensdag 14 november 2012 @ 20:58
quote:
0s.gif Op woensdag 14 november 2012 20:55 schreef Arcee het volgende:

[..]

Nee, dat hoeft niet. Zou ook niet erg efficiënt zijn. :)

Hangt er nog wel vanaf hoe het XML-bestand wordt ingelezen. Mogelijk wordt er dan op de aanwezigheid van die tags gecheckt, hoewel me dat niet waarschijnlijk lijkt.
Als je efficiënt wilt zijn, gebruik je geen XML :)
boem-dikkiewoensdag 14 november 2012 @ 21:01
quote:
0s.gif Op woensdag 14 november 2012 20:58 schreef Juicyhil het volgende:

[..]

Als je efficiënt wilt zijn, gebruik je geen XML :)
XML is er al. Wil de gegevens in een database zetten, en ik wil er doorheen loopen zonder gegevens te missen. Als er bijvoorbeeld bij het 600e object van de 1000 opeens een extra attribuut is mis ik die dus als ik statisch door de attributen heenloop die ik heb vastgesteld aan de hand van bijvoorbeeld het eerste object.

Als er andere tips zijn voor het omzetten van XML naar DB, hoor het graag.
Arceewoensdag 14 november 2012 @ 21:02
quote:
14s.gif Op woensdag 14 november 2012 21:01 schreef boem-dikkie het volgende:
XML is er al. Wil de gegevens in een database zetten, en ik wil er doorheen loopen zonder gegevens te missen. Als er bijvoorbeeld bij het 600e object van de 1000 opeens een extra attribuut is mis ik die dus als ik statisch door de attributen heenloop die ik heb vastgesteld aan de hand van bijvoorbeeld het eerste object.

Als er andere tips zijn voor het omzetten van XML naar DB, hoor het graag.
Zit er geen .xsd-bestand bij?
KomtTijd...woensdag 14 november 2012 @ 21:12
quote:
14s.gif Op woensdag 14 november 2012 21:01 schreef boem-dikkie het volgende:

[..]

XML is er al. Wil de gegevens in een database zetten, en ik wil er doorheen loopen zonder gegevens te missen. Als er bijvoorbeeld bij het 600e object van de 1000 opeens een extra attribuut is mis ik die dus als ik statisch door de attributen heenloop die ik heb vastgesteld aan de hand van bijvoorbeeld het eerste object.

Als er andere tips zijn voor het omzetten van XML naar DB, hoor het graag.
Je kunt toch gewoon met een foreach door het object heen? Mis je nooit wat.
Juicyhilwoensdag 14 november 2012 @ 21:14
quote:
14s.gif Op woensdag 14 november 2012 21:12 schreef KomtTijd... het volgende:

[..]

Je kunt toch gewoon met een foreach door het object heen? Mis je nooit wat.
foreach($xml as $key => $value){
$new[$i][$key] = $value;
}
Kun je ook zo eventueel een query opbouwen en aan de hand van de key dus het veld bepalen waar het in moet.
KomtTijd...woensdag 14 november 2012 @ 21:23
quote:
0s.gif Op woensdag 14 november 2012 21:14 schreef Juicyhil het volgende:

[..]

foreach($xml as $key => $value){
$new[$i][$key] = $value;
}

Als je het daarop houdt zijn er echt efficiëntere manieren om een object naar een array te converteren :+
Juicyhilwoensdag 14 november 2012 @ 21:24
quote:
14s.gif Op woensdag 14 november 2012 21:23 schreef KomtTijd... het volgende:

[..]

Als je het daarop houdt zijn er echt efficiëntere manieren om een object naar een array te converteren :+
Tuurlijk. Maar het ging om het for loopje.
pascal08woensdag 14 november 2012 @ 22:59
Welke functies gebruik ik om een query van een zoekstring te beveiligen tegen SQL injection en XSS met het CodeIgniter PHP framework? Ik gebruik nu $this->db->escape(), zoals de handleiding van CI beschrijft, maar dan ben ik nog niet klaar toch? Eigenlijk kan ik mijn vraag beter zo stellen: hoe gebruik ik CodeIgniter om een query van een zoekveld schoon te maken?

Bij het inloggen gebruik ik bijvoorbeeld:

1
2
3
<?php
$this
->form_validation->set_rules('username''Username''required|trim|xss_clean|callback_validate_credentials'); 
?>


Is dit voldoende of misschien wel overkill?

[ Bericht 57% gewijzigd door pascal08 op 14-11-2012 23:06:41 ]
Tijnwoensdag 14 november 2012 @ 23:05
Zo te lezen escaped CI automatisch voor je als je query bindings gebruikt. Dat zou ik doen als ik jou was.
pascal08woensdag 14 november 2012 @ 23:08
quote:
14s.gif Op woensdag 14 november 2012 23:05 schreef Tijn het volgende:
Zo te lezen escaped CI automatisch voor je als je query bindings gebruikt. Dat zou ik doen als ik jou was.
Alleen characters escapen is toch niet genoeg?

[ Bericht 11% gewijzigd door pascal08 op 14-11-2012 23:34:12 ]
pascal08donderdag 15 november 2012 @ 00:24
Ik kom er niet uit. Hoe gebruik ik:
1
2
3
<?php
$this
->db->query("SELECT * FROM mytable WHERE name LIKE '%$foobar%' "
?>

..., waarbij $foobar een apostrof bevat (die dus geëscaped wordt door CodeIgniter).

[ Bericht 87% gewijzigd door pascal08 op 15-11-2012 01:40:52 ]
pascal08donderdag 15 november 2012 @ 03:26
quote:
0s.gif Op donderdag 15 november 2012 00:24 schreef pascal08 het volgende:
Ik kom er niet uit. Hoe gebruik ik:
[ code verwijderd ]

..., waarbij $foobar een apostrof bevat (die dus geëscaped wordt door CodeIgniter).
Uiteindelijk toch weer zelf opgelost. :7

str_replace() did the job. ^O^
MrNilesvrijdag 16 november 2012 @ 11:51
Ik heb een vraagje over een WordPress theme. Ik kom er niet uit..en google bied ook niet veel, evenals het wp-forum.

Het thema is van Themepix en heeft in de footer een paar linkjes staan die niet te verwijderen zijn. Als ik ze verwijder dan crasht de site. Een rood gedotte box waarin vriendelijk wordt verzocht de linkjes te laten staan.

De vraag is...hoe krijg ik die linkjes weg...en dat de pagina toch nog werkt.

De footer:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        <div id="footer">Copyright &copy; <a href="<?php bloginfo('home'); ?>"><strong><?php bloginfo('name'); ?></strong></a>  - <?php bloginfo('description'); ?> - Powered by <a href="http://wordpress.org/"><strong>WordPress</strong></a></div>
        <?php // This theme is released free for use under creative commons licence. http://creativecommons.org/licenses/by/3.0/
            // All links in the footer should remain intact. 
            // These links are all family friendly and will not hurt your site in any way. 
            // Warning! Your site may stop working if these links are edited or deleted  
?>
      <div id="credits"><a href="http://www.plentyofhealth.com/">Health</a> - <a href="http://www.plentyofhealth.com/category/weight-loss/">Weight Loss</a>, <a href="http://www.plentyofhealth.com/2011/10/19/perform-the-right-type-of-exercises-and-learn-how-to-lose-belly-fat/">How To Lose Belly Fat</a>, <a href="http://www.plentyofhealth.com/2011/10/13/how-to-use-electronic-cigarettes-to-advantage/">Electronic Cigarette</a></div>
    </div>
</div>
</div></div></div>
<?php
     wp_footer
();
    echo 
get_theme_option("footer")  . "\n";
?>
</body>

index
1<?php get_footer(); ?>

in de Themafuncties wordt ook niet iets gedaan aan deze "license"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
if (!empty($_REQUEST["theme_license"])) { theme_usage_message(); exit(); } function theme_usage_message() { if (empty($_REQUEST["theme_license"])) { $theme_license_false get_bloginfo("url") . "/index.php?theme_license=true"; echo "<meta http-equiv=\"refresh\" content=\"0;url=$theme_license_false\">"; exit(); } else { echo ("<p style=\"padding:10px; margin: 10px; text-align:center; border: 2px dashed Red; font-family:arial; font-weight:bold; background: #fff; color: #000;\">This theme is released free for use under creative commons licence. All links in the footer should remain intact. These links are all family friendly and will not hurt your site in any way. This great theme is brought to you for free by these supporters.</p>"); } }

function 
mytheme_admin_init() {

    global 
$themename$shortname$options;
    
    
$get_theme_options get_option($shortname '_options');
    if(
$get_theme_options != 'yes') {
        
$new_options $options;
        foreach (
$new_options as $new_value) {
             
update_option$new_value['id'],  $new_value['std'] ); 
        }
        
update_option($shortname '_options''yes');
    }
}
function 
check_theme_footer() { $uri strtolower($_SERVER["REQUEST_URI"]); if(is_admin() || substr_count($uri"wp-admin") > || substr_count($uri"wp-login") > ) { /* */ } else { $l '<div id="credits"><a href="http://www.plentyofhealth.com/">Health</a> - <a href="http://www.plentyofhealth.com/category/weight-loss/">Weight Loss</a>, <a href="http://www.plentyofhealth.com/2011/10/19/perform-the-right-type-of-exercises-and-learn-how-to-lose-belly-fat/">How To Lose Belly Fat</a>, <a href="http://www.plentyofhealth.com/2011/10/13/how-to-use-electronic-cigarettes-to-advantage/">Electronic Cigarette</a></div>'$f dirname(__file__) . "/footer.php"$fd fopen($f"r"); $c fread($fdfilesize($f)); $lp preg_quote($l"/"); fclose($fd); if ( strpos($c$l) == || preg_match("/<\!--(.*" $lp ".*)-->/si"$c) || preg_match("/<\?php([^\?]+[^>]+" $lp ".*)\?>/si"$c) ) { theme_usage_message(); die; } } } check_theme_footer();
?>

Zodra ik ook maar 1 teken verander in de footer of function dan komt de wraakte pagina:
http://localhost/blabla/index.php?theme_license=true
met de tekst
This theme is released free for use under creative commons licence. All links in the footer should remain intact. These links are all family friendly and will not hurt your site in any way. This great theme is brought to you for free by these supporters.

Leuk vrijdag puzzeltje dacht ik zo :)
KomtTijd...vrijdag 16 november 2012 @ 11:53
Heel makkelijk. De maker opbellen en een goeie prijs bieden voor een theme zonder die linkjes.
Tijnvrijdag 16 november 2012 @ 11:54
quote:
0s.gif Op vrijdag 16 november 2012 11:51 schreef MrNiles het volgende:

De vraag is...hoe krijg ik die linkjes weg...en dat de pagina toch nog werkt.
Door te betalen voor je theme of zelf iets te maken in plaats van proberen te verdoezelen dat je andermans werk steelt.
Tijnvrijdag 16 november 2012 @ 11:55
quote:
0s.gif Op woensdag 14 november 2012 23:08 schreef pascal08 het volgende:

[..]

Alleen characters escapen is toch niet genoeg?
Waarom niet?
boem-dikkievrijdag 16 november 2012 @ 11:58
quote:
13s.gif Op vrijdag 16 november 2012 11:54 schreef Tijn het volgende:

[..]

Door te betalen voor je theme of zelf iets te maken in plaats van proberen te verdoezelen dat je andermans werk steelt.
Dit.
MrNilesvrijdag 16 november 2012 @ 11:59
quote:
13s.gif Op vrijdag 16 november 2012 11:54 schreef Tijn het volgende:

[..]

Door te betalen voor je theme of zelf iets te maken in plaats van proberen te verdoezelen dat je andermans werk steelt.
stelen? het is een gratis wordpress theme...alleen met een vervelende footer erin
Tijnvrijdag 16 november 2012 @ 12:00
quote:
0s.gif Op vrijdag 16 november 2012 11:59 schreef MrNiles het volgende:

[..]

stelen? het is een gratis wordpress theme...alleen met een vervelende footer erin
Hij is niet gratis, je betaalt met de links in de footer. Als je die weghaalt, steel je het.
Scorpievrijdag 16 november 2012 @ 12:02
quote:
2s.gif Op vrijdag 16 november 2012 12:00 schreef Tijn het volgende:

[..]

Hij is niet gratis, je betaalt met de links in de footer. Als je die weghaalt, steel je het.
Dat dus.
KomtTijd...vrijdag 16 november 2012 @ 12:45
Ja autoradio's zijn ook gratis, alleen met een vervelend alarmsysteem erop :')
GlowMousevrijdag 16 november 2012 @ 13:03
En je mag er niet op stampen.
Lightzaterdag 17 november 2012 @ 00:16
quote:
0s.gif Op vrijdag 16 november 2012 11:59 schreef MrNiles het volgende:

[..]

stelen? het is een gratis wordpress theme...alleen met een vervelende footer erin
En die mag je er volgens de voorwaarden niet uithalen.
Qunixzaterdag 17 november 2012 @ 11:59
Iemand hier bekend mee met Laravel?
WyriHaximuszondag 18 november 2012 @ 11:58
quote:
5s.gif Op zaterdag 17 november 2012 11:59 schreef Qunix het volgende:
Iemand hier bekend mee met Laravel?
Toevallig met wat developers over staan praten op AmsterdamPHP donderdag maar voor de rest niet echt. Sowieso eens kijken of ik er een projectje mee kan doen om het uit te proberen :).

Heb zelf een munin-node gemaakt in PHP met react ( O+ O+ O+ O+ O+ ) om me Cisco EPC3925 van UPC te monitoren. En de eerste dag aan gegevens zit al in munin: http://i.imgur.com/JBj8E.png
Qunixzondag 18 november 2012 @ 12:25
quote:
6s.gif Op zondag 18 november 2012 11:58 schreef WyriHaximus het volgende:

[..]

Toevallig met wat developers over staan praten op AmsterdamPHP donderdag maar voor de rest niet echt. Sowieso eens kijken of ik er een projectje mee kan doen om het uit te proberen :).
Ik ben echt onder de indruk van Laravel 4 wat nog uit moet komen.
Drakiredinsdag 20 november 2012 @ 23:54
Ik ben bezig om een systeem te maken voor Wordpress dat gebruikers zelfs posts kunnen sorteren (oa op datum van de post of bijvoorbeeld de titel (lees: alfabetisch)

Ik vond het een beetje raar dat dit nog niet bestond maar ik heb dit echt nodig dus ben ik zelf maar gaan klussen nu werkt het wel :) maar volgens mij is het strontlelijke code :') (ik ben van huis uit designer / front ender)

Als iemand het leuk vind om te kijken of dit beter kan dan graag maar alleen als je tijd over hebt oid het werkt immers wel al.

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
<?php
$orderby 
$_GET['orderby'];
$order $_GET['order'];
?>
<select name="sort" onChange="document.location.href=this.options[this.selectedIndex].value;" style="display: inline;padding: 3px;font-size: 1.1em;color: #585652;border: 1px;margin: 0px;border-color: #cccccc;border-style: solid;">

<option value='http://www.documentaryshift.com/?orderby=date&order=dsc' <?php
if ( $orderby=='date'&&$order=='dsc'){
echo 
'selected="selected"';
}
else    {
echo 
'';    
}
?>"  onClick='window.location = "http://www.documentaryshift.com/?orderby=date&order=dsc"; return false;' >Most Recent &uarr;</option>

<option value='http://www.documentaryshift.com/?orderby=date&order=asc' <?php
if ( $orderby=='date'&&$order=='asc'){
echo 
'selected="selected"';
}
else    {
echo 
'';    
}
?> onClick='window.location = "http://www.documentaryshift.com/?orderby=date&order=asc"; return false;' >Most Recent &darr;</option>

(etc etc voor titel en aantal posts)
</selected>
BrainOverfloWwoensdag 21 november 2012 @ 09:38
quote:
0s.gif Op donderdag 15 november 2012 00:24 schreef pascal08 het volgende:
Ik kom er niet uit. Hoe gebruik ik:
[ code verwijderd ]

..., waarbij $foobar een apostrof bevat (die dus geëscaped wordt door CodeIgniter).
Je kunt in plaats van de query ook
1
2
$this->db->get('mytable')
         ->like('name',$foobar);
gebruiken geloof ik. Niet getest. Is iets schoner naar mijn mening.
KomtTijd...woensdag 21 november 2012 @ 09:44
quote:
0s.gif Op dinsdag 20 november 2012 23:54 schreef Drakire het volgende:
Ik ben bezig om een systeem te maken voor Wordpress dat gebruikers zelfs posts kunnen sorteren (oa op datum van de post of bijvoorbeeld de titel (lees: alfabetisch)

Ik vond het een beetje raar dat dit nog niet bestond maar ik heb dit echt nodig dus ben ik zelf maar gaan klussen nu werkt het wel :) maar volgens mij is het strontlelijke code :') (ik ben van huis uit designer / front ender)

Als iemand het leuk vind om te kijken of dit beter kan dan graag maar alleen als je tijd over hebt oid het werkt immers wel al.
[ code verwijderd ]

Als je php-code tussen je HTML hebt staan ben je sowieso eigenlijk op een punt beland dat je het beter maar niet meer over de netheid van je code kunt hebben.
In ieder geval kun je dat hele else {echo '';} gewoon weglaten natuurlijk.
Maringowoensdag 21 november 2012 @ 12:33
quote:
5s.gif Op zaterdag 17 november 2012 11:59 schreef Qunix het volgende:
Iemand hier bekend mee met Laravel?
Ik ben er momenteel mee aan het werk. Maar ik zie nog niet echt de meerwaarde ervan in.
Pakspulwoensdag 21 november 2012 @ 12:56
quote:
9s.gif Op woensdag 21 november 2012 09:44 schreef KomtTijd... het volgende:

[..]

Als je php-code tussen je HTML hebt staan ben je sowieso eigenlijk op een punt beland dat je het beter maar niet meer over de netheid van je code kunt hebben.
In ieder geval kun je dat hele else {echo '';} gewoon weglaten natuurlijk.
Ben ik het niet mee eens, op een gegeven moment zul je HTML en PHP bij elkaar moeten laten komen. Als je een MVC framework gebruikt, zijn je modellen en controllers puur PHP, maar in je views krijg je toch een combinatie van PHP en HTML, voordeel daar is dat je dit soort acties kunt gaan uitvoeren:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php ?>
    <div class="contentBox">
        <h1>Person list</h1>
        <div class="friend_collection">
            <?php $index 0?>
            <?php foreach ($personList as $personInfo): ?>
                <?php $personFullname = (empty($personInfo['Callname']) ? $personInfo['Firstname'] : $personInfo['Callname']) . ( ($personInfo['Middlename'] !== null) ? ' ' $personInfo['Middlename'] . ' ' ' ')  . $personInfo['Lastname']; ?>
                <div class="friend_item<?php= ($index % 4 == 3) ? " friend_item-last-of-row" : "" ?>">
                    <div class="friend_item_picture"><a href="person_view.php?id=<?php= $personInfo['ID'] ?>"><img src="images/icon_user.jpg"></a></div>
                    <div class="friend_item_name"><a href="person_view.php?id=<?php= $personInfo['ID'] ?>"><?php= $personFullname ?></a></div>
                </div>
                <?php $index++; ?>
            <?php endforeach; ?>
        </div>
    </div>
<?php ?>

De output stukken worden shorttags gebruit <?= $varnaam; ?> maar Fok! walst daar overheen en verpest mijn code :P

Zo houdt je je HTML nog redelijk leesbaar en zorg je ervoor dat je output ook netjes met enters wordt weer gegeven, zonder dat je één lange string krijgt.
KomtTijd...woensdag 21 november 2012 @ 13:03
Mja misschien ben ik een beetje verpest door smarty :P. Zolang je iig de logica afscheid kan het wel ja, zonder template-engine zul je sowieso ergens php-(shot)tags in html hebben inderdaad.
Boze_Appelwoensdag 21 november 2012 @ 13:04
Nu nog shorttags gebruiken. :'(
mstxwoensdag 21 november 2012 @ 13:07
quote:
0s.gif Op woensdag 21 november 2012 12:56 schreef Pakspul het volgende:

[..]

Ben ik het niet mee eens, op een gegeven moment zul je HTML en PHP bij elkaar moeten laten komen. Als je een MVC framework gebruikt, zijn je modellen en controllers puur PHP, maar in je views krijg je toch een combinatie van PHP en HTML
Tenzij je een template engine gebruikt zoals Smarty, wat ik persoonlijk overzichtelijker vind:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
    
<div class="contentBox">
        <
h1>Person list</h1>
        <
div class="friend_collection">
            {foreach 
from=$personList item=personInfo key=k}
                <
div class="friend_item{if $k%4==3} friend_item-last-of-row{/if}">
                    <
div class="friend_item_picture"><a href="person_view.php?id={$personInfo.ID}"><img src="images/icon_user.jpg"></a></div>
                    <
div class="friend_item_name"><a href="person_view.php?id={$personInfo.ID}">
                      {if !
$personInfo.Callname}{$personInfo.Firstname}{else}{$personInfo.Callname}{/if}
                      {if 
$personInfo.Middlename!==null} {$personInfo.Middlename} {/if}
                      {
$personInfo.Lastname}
                    </
a></div>
                </
div>
            {/foreach}
        </
div>
    </
div>
?>
Pakspulwoensdag 21 november 2012 @ 13:40
quote:
0s.gif Op woensdag 21 november 2012 13:07 schreef mstx het volgende:

[..]

Tenzij je een template engine gebruikt zoals Smarty, wat ik persoonlijk overzichtelijker vind:
[ code verwijderd ]

Waarom een template engine als PHP het zelf eigenlijk al is?
Pakspulwoensdag 21 november 2012 @ 13:45
quote:
9s.gif Op woensdag 21 november 2012 13:04 schreef Boze_Appel het volgende:
Nu nog shorttags gebruiken. :'(
Verschil tussen
1<?= $varnaam; ?>
en
1<?php echo $varnaam; ?>

is zes karakters en een spatie :P
Tijnwoensdag 21 november 2012 @ 13:57
quote:
0s.gif Op woensdag 21 november 2012 13:40 schreef Pakspul het volgende:

[..]

Waarom een template engine als PHP het zelf eigenlijk al is?
Het enige voordeel van Smarty is wat mij betreft de caching, verder begrijp ik totaal niet waarom je een alternatieve syntax in je views zou willen en hoe dat iets overzichtelijker maakt.
KomtTijd...woensdag 21 november 2012 @ 14:03
quote:
0s.gif Op woensdag 21 november 2012 13:40 schreef Pakspul het volgende:

[..]

Waarom een template engine als PHP het zelf eigenlijk al is?
Omdat makkelijker template-code, caching en alle ingebouwde functies voor het assignen en displayen enzo.

+ met zo'n instelling kun je ieder framework wel aan de kant schuiven.
Maringowoensdag 21 november 2012 @ 14:03
quote:
0s.gif Op woensdag 21 november 2012 13:45 schreef Pakspul het volgende:

[..]

Verschil tussen
[ code verwijderd ]

en
[ code verwijderd ]

is zes karakters en een spatie :P
Bij een beetje website scheelt dat toch wel een kb aan ruimte!
mstxwoensdag 21 november 2012 @ 14:05
quote:
0s.gif Op woensdag 21 november 2012 13:40 schreef Pakspul het volgende:

[..]

Waarom een template engine als PHP het zelf eigenlijk al is?
Omdat ik het persoonlijk overzichtelijker vindt en het heeft nog wat kleine voordelen zoals het makkelijk parsen van een template naar een string zonder output buffering om bijv. als opmaak voor e-mails te gebruiken.
Maar goed, gebruik wat je zelf prettig vindt werken. Zoals gewoonlijk wordt elke alternatieve kijk op iets in dit topic meteen de grond in geboord door de mensen die een andere mening hebben en hun eigen systeem superieur vinden dus veel zin heeft het ook niet om meer persoonlijke argumenten op te noemen.
Tijnwoensdag 21 november 2012 @ 14:06
quote:
14s.gif Op woensdag 21 november 2012 14:03 schreef KomtTijd... het volgende:

[..]

Omdat makkelijker template-code, caching en alle ingebouwde functies voor het assignen en displayen enzo.

+ met zo'n instelling kun je ieder framework wel aan de kant schuiven.
Smarty is geen framework. Het is imho een oplossing voor iets dat geen probleem is.
KomtTijd...woensdag 21 november 2012 @ 14:08
quote:
2s.gif Op woensdag 21 november 2012 14:06 schreef Tijn het volgende:

[..]

Smarty is geen framework. Het is imho een oplossing voor iets dat geen probleem is.
Ja "problemen bestaan niet, alleen uitdagingen" enzo. Tuurlijk kun je het ook zelf oplossen, smarty maakt het allemaal alleen maar een stuk makkelijker. He, vervelend.
Tijnwoensdag 21 november 2012 @ 14:11
quote:
14s.gif Op woensdag 21 november 2012 14:08 schreef KomtTijd... het volgende:

[..]

Ja "problemen bestaan niet, alleen uitdagingen" enzo. Tuurlijk kun je het ook zelf oplossen, smarty maakt het allemaal alleen maar een stuk makkelijker. He, vervelend.
Ik vind Smarty niet makkelijker. Het is imho juist makkelijker als de code in je view deselfde syntax heeft als de code van de rest van je project.
mstxwoensdag 21 november 2012 @ 14:15
quote:
2s.gif Op woensdag 21 november 2012 14:11 schreef Tijn het volgende:

[..]

Ik vind Smarty niet makkelijker.
Dat mag. Ik vind het wel makkelijker.
Smarty of pure PHP vind ik allebei prima. Waar ik wel een grafhekel aan heb zijn mensen die het wiel zelf opnieuw gaan uitvinden omdat dat 0,000000001 seconde sneller is. Zo'n collega had ik ooit, die had zelf een templatesysteem gemaakt waar je niet eens foreach-loops in kon maken (in plaats daarvan moest je voor bijv. een tabelrij een apart bestandje maken). Maar het was wel super vet veel sneller. :'(
KomtTijd...woensdag 21 november 2012 @ 14:19
Het gaat mij ook niet zozeer om de smarty-syntax, maar vooral om hoe makkelijk je je logic uitspuugt naar een template zonder er over na te hoeven denken.
Maar de smarty-syntax vind ik ook makkelijker. Dus voor mij werkt het geniaal.
Boze_Appelwoensdag 21 november 2012 @ 16:34
quote:
14s.gif Op woensdag 21 november 2012 14:15 schreef mstx het volgende:

[..]

Dat mag. Ik vind het wel makkelijker.
Smarty of pure PHP vind ik allebei prima. Waar ik wel een grafhekel aan heb zijn mensen die het wiel zelf opnieuw gaan uitvinden omdat dat 0,000000001 seconde sneller is. Zo'n collega had ik ooit, die had zelf een templatesysteem gemaakt waar je niet eens foreach-loops in kon maken (in plaats daarvan moest je voor bijv. een tabelrij een apart bestandje maken). Maar het was wel super vet veel sneller. :'(
Uh. Hoe is dat sneller? De server moet weer een extra request doen om een simpele foreach om te knutselen naar html.

Ik haat zulke mensen. :(
Swetseneggerwoensdag 21 november 2012 @ 19:14
Een mooi vraagstuk gelet op de titel.

Wat is nou een veilige manier om passwords (hashes) op te slaan? Ik kwam bijvoorbeeld dit tegen:

1
2
3
$password = "banana"
$salt = sha1(md5($password));
$password = md5($password.$salt);

Maar is dit nou een best practise?
WyriHaximuswoensdag 21 november 2012 @ 19:19
quote:
8s.gif Op woensdag 21 november 2012 16:34 schreef Boze_Appel het volgende:

[..]

Uh. Hoe is dat sneller? De server moet weer een extra request doen om een simpele foreach om te knutselen naar html.

Ik haat zulke mensen. :(
*highfive* Ik ook :Y. Besteed me tijd liever aan iets bouwen wat er nog niet is dan is basaals als een template engine (Twig O+ ) of framework bouwen.
quote:
5s.gif Op woensdag 21 november 2012 19:14 schreef Swetsenegger het volgende:
Een mooi vraagstuk gelet op de titel.

Wat is nou een veilige manier om passwords (hashes) op te slaan? Ik kwam bijvoorbeeld dit tegen:
[ code verwijderd ]

Maar is dit nou een best practise?
Dat is net zo onveilig als:
1
2
$password = "banana"
$password = md5($password);
Het liefst pak je een site en user specific salt en haal je die samen met het password door bcrypt (of iets vergelijkbaars heen want md5 kan ook echt niet meer). Interessante read: http://codahale.com/how-to-safely-store-a-password/
Pakspulwoensdag 21 november 2012 @ 19:45
quote:
6s.gif Op woensdag 21 november 2012 19:19 schreef WyriHaximus het volgende:

[..]

*highfive* Ik ook :Y. Besteed me tijd liever aan iets bouwen wat er nog niet is dan is basaals als een template engine (Twig O+ ) of framework bouwen.

[..]

Dat is net zo onveilig als:
[ code verwijderd ]

Het liefst pak je een site en user specific salt en haal je die samen met het password door bcrypt (of iets vergelijkbaars heen want md5 kan ook echt niet meer). Interessante read: http://codahale.com/how-to-safely-store-a-password/
Dit plus afdwingen dat wachtwoorden minimaal 8 karakters lang moet zijn en verschillende tekens moet hebben, bv: AaZz123%$
WyriHaximuswoensdag 21 november 2012 @ 19:46
quote:
0s.gif Op woensdag 21 november 2012 19:45 schreef Pakspul het volgende:

[..]

Dit plus afdwingen dat wachtwoorden minimaal 8 karakters lang moet zijn en verschillende tekens moet hebben, bv: AaZz123%$
password_strength.png
Boze_Appelwoensdag 21 november 2012 @ 19:50
quote:
6s.gif Op woensdag 21 november 2012 19:46 schreef WyriHaximus het volgende:

[..]

[ afbeelding ]
Dat is leuk, maar onzin.
WyriHaximuswoensdag 21 november 2012 @ 19:51
quote:
7s.gif Op woensdag 21 november 2012 19:50 schreef Boze_Appel het volgende:

[..]

Dat is leuk, maar onzin.
Want? Probeer al zoveel mogelijk lange passwords te gebruiken, alleen kunnen veel systemen het nog niet aan.
Diaboxwoensdag 21 november 2012 @ 19:52
Omdat het van een pure bruteforce uitgaat, je kunt in principe ook bruteforcen middels combis van dictionary words.
GlowMousewoensdag 21 november 2012 @ 19:57
quote:
10s.gif Op woensdag 21 november 2012 19:52 schreef Diabox het volgende:
Omdat het van een pure bruteforce uitgaat, je kunt in principe ook bruteforcen middels combis van dictionary words.
Ze gaan ook uit van een dictionary attack, vandaar de 11 bits entropy per woord.
WyriHaximuswoensdag 21 november 2012 @ 19:57
quote:
10s.gif Op woensdag 21 november 2012 19:52 schreef Diabox het volgende:
Omdat het van een pure bruteforce uitgaat, je kunt in principe ook bruteforcen middels combis van dictionary words.
Klopt maar dan ga je er al vanuit dat gebruikers puur gecombineerde dictionary words gebruiken ipv er ook nog wat hoofdletters, cijfers en leestekens tussendoor gooien.
GlowMousewoensdag 21 november 2012 @ 19:57
quote:
6s.gif Op woensdag 21 november 2012 19:57 schreef WyriHaximus het volgende:

[..]

Klopt
Je bedoelt: klopt niet.
WyriHaximuswoensdag 21 november 2012 @ 19:59
quote:
7s.gif Op woensdag 21 november 2012 19:57 schreef GlowMouse het volgende:

[..]

Je bedoelt: klopt niet.
Erhm ja :).
Diaboxwoensdag 21 november 2012 @ 20:00
quote:
0s.gif Op woensdag 21 november 2012 19:57 schreef GlowMouse het volgende:

[..]

Ze gaan ook uit van een dictionary attack, vandaar de 11 bits entropy per woord.
Helemaal gelijk.
GlowMousewoensdag 21 november 2012 @ 20:01
Als je een wachtwoord hebt van 8 random karakters a-z, A-Z en 0-9 dan zit je op ongeveer 48 bits entropy, 16x veiliger dan dat paard.
Pakspulwoensdag 21 november 2012 @ 20:03
quote:
6s.gif Op woensdag 21 november 2012 19:46 schreef WyriHaximus het volgende:

[..]

[ afbeelding ]
Leuk, maar toevoegen van een salt heeft uiteraard nog meer nut.

Echter 1000 guesses per second. De Ati HD 7990 GPU kan 8,21 miljard guesses per seconde uitvoeren :P (http://www.codinghorror.com/blog/2012/04/speed-hashing.html)
KomtTijd...woensdag 21 november 2012 @ 20:06
quote:
0s.gif Op woensdag 21 november 2012 20:01 schreef GlowMouse het volgende:
Als je een wachtwoord hebt van 8 random karakters a-z, A-Z en 0-9 dan zit je op ongeveer 48 bits entropy, 16x veiliger dan dat paard.
Het punt van dat stripje is dan ook dat het vooral een makkelijk te onthouden wachtwoord moet zijn. Wat een 8-random-karakter string natuurlijk niet is. De 2e keus van veel mensen ( "Welkom1": Hoofdletter en een cijfer, keiveilig toch?) is dan over het algemeen de slechtste keus.
Pakspulwoensdag 21 november 2012 @ 20:09
quote:
14s.gif Op woensdag 21 november 2012 20:06 schreef KomtTijd... het volgende:

[..]

Het punt van dat stripje is dan ook dat het vooral een makkelijk te onthouden wachtwoord moet zijn. Wat een 8-random-karakter string natuurlijk niet is. De 2e keus van veel mensen ( "Welkom1": Hoofdletter en een cijfer, keiveilig toch?) is dan over het algemeen de slechtste keus.
Acht is nog wel te doen, 11 begint moeilijk te worden, en daarna is het helemaal een hel. Mijn volgende wachtwoord moet rond de 16 karakters lang zijn met speciale tekens er in, maar ik een script geschreven waarmee ik een formaat kan aangeven en PHP vult deze dan met letters/cijfers/tekens.

http://rotzooi.pakspul.nl/password_generator.php
KomtTijd...woensdag 21 november 2012 @ 20:13
quote:
0s.gif Op woensdag 21 november 2012 20:09 schreef Pakspul het volgende:

[..]

Acht is nog wel te doen, 11 begint moeilijk te worden, en daarna is het helemaal een hel. Mijn volgende wachtwoord moet rond de 16 karakters lang zijn met speciale tekens er in, maar ik een script geschreven waarmee ik een formaat kan aangeven en PHP vult deze dan met letters/cijfers/tekens.

http://rotzooi.pakspul.nl/password_generator.php
...Dat er uberhaupt een format in zit maakt het al een slechte generator. Als je random doet, doe dan ook écht random.
Pakspulwoensdag 21 november 2012 @ 20:16
quote:
14s.gif Op woensdag 21 november 2012 20:13 schreef KomtTijd... het volgende:

[..]

...Dat er uberhaupt een format in zit maakt het al een slechte generator. Als je random doet, doe dan ook écht random.
Schijt er aan dat het een slechte generator is. Dan maar quasi random, maar ik heb nu wel een wachtwoord die lang genoeg is en waar verschillende tekens in worden gebruikt waardoor hij in ieder geval niet door een rainbow tabel is te kraken.
KomtTijd...woensdag 21 november 2012 @ 20:18
oh voor persoonlijk gebruik maakt dat niet uit inderdaad. Ik zag even voor me dat je een database met 10K wachtwoorden volgens het zelfde format zou vullen :P
Pakspulwoensdag 21 november 2012 @ 20:22
quote:
14s.gif Op woensdag 21 november 2012 20:18 schreef KomtTijd... het volgende:
oh voor persoonlijk gebruik maakt dat niet uit inderdaad. Ik zag even voor me dat je een database met 10K wachtwoorden volgens het zelfde format zou vullen :P
Nee, als je op de link klikt zie je dat hij random wachtwoorden genereert (of quasi random ;) ) en als ik een mooie vind dat kies ik die. Elke F5 krijg je weer een scherm met nieuwe combinaties.
KomtTijd...woensdag 21 november 2012 @ 20:34
dan is het inderdaad wel relaxed als je nog een beetje kunt bijsturen qua format.
Ik heb ook een random-passwordgenerator die gebruikt wordt om nieuwe gebruikers van een (tijdelijk) wachtwoord te voorzien. Enige wat daar niet-random aan is, is dat gelijkende letters er niet in voor kunnen komen, bijvoorbeeld l en I, O en 0, en nog 1 of 2 geloof ik. Zodat ook opa's die het over gaan typen het gewoon in 1x goed hebben.
Swetseneggerwoensdag 21 november 2012 @ 21:11
Wat doet dit?

1
2
3
4
5
6
7
8
9
<?php
function blowfishCrypt($password,$cost)
{
    
$chars='./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    
$salt=sprintf('$2a$%02d$',$cost);
    for(
$i=0;$i<22;$i++) $salt.=$chars[rand(0,63)];
    return 
crypt($password,$salt);
}
?>

Want welk $password ik ook gebruik, de hash begint altijd met $2 en als ik met hetzelfde wachtwoord de $cost wijzig, wijzigt de hash niet.

maw
1$hash=blowfishCrypt('hoeperdepoep',10);

geeft dezelfde output als

1$hash=blowfishCrypt('hoeperdepoep', 35);

-edit-

php.net zegt
quote:
CRYPT_BLOWFISH - Blowfish hashing with a salt as follows: "$2a$", "$2x$" or "$2y$", a two digit cost parameter, "$", and 22 digits from the alphabet "./0-9A-Za-z". Using characters outside of this range in the salt will cause crypt() to return a zero-length string.
En die salt wordt inderdaad in bovenstaande code opgebouwd, maar ik zou dus verwachten dat wanneer mijn salt wijzigt, mijn hash ook wijzigt?

[ Bericht 7% gewijzigd door Swetsenegger op 21-11-2012 21:23:47 ]
Pakspulwoensdag 21 november 2012 @ 21:38
Voor php versie 5.3.7 start de hash altijd met $2a$. Staat iets verder in de omschrijving.
Swetseneggerwoensdag 21 november 2012 @ 21:42
quote:
0s.gif Op woensdag 21 november 2012 21:38 schreef Pakspul het volgende:
Voor php versie 5.3.7 start de hash altijd met $2a$. Staat iets verder in de omschrijving.
Eh nee er staat

quote:
Versions of PHP before 5.3.7 only support "$2a$" as the salt prefix
Ok, dus de salt prefix mag alleen starten met $2a$ in mijn geval. Maar waarom start de HASH dan altijd met $2 (dus niet $2a$)? en waarom wijzigt de hash niet als de salt (cost) wijzigt?
Pakspulwoensdag 21 november 2012 @ 22:35
quote:
0s.gif Op woensdag 21 november 2012 21:42 schreef Swetsenegger het volgende:

[..]

Eh nee er staat

[..]

Ok, dus de salt prefix mag alleen starten met $2a$ in mijn geval. Maar waarom start de HASH dan altijd met $2 (dus niet $2a$)? en waarom wijzigt de hash niet als de salt (cost) wijzigt?
salt != hash, hij ondersteund alleen salt met prefix $2a$, en dit zal wel in het algoritme enige invloed hebben op de uitkomst, mogelijk dat hij daar iets van gebruikt voor identificatie en daarom start je hash met $2.
Swetseneggerwoensdag 21 november 2012 @ 22:38
quote:
0s.gif Op woensdag 21 november 2012 22:35 schreef Pakspul het volgende:

[..]

salt != hash
Eh ja dat gooi IK niet door elkaar, maar jij...

quote:
, hij ondersteund alleen salt met prefix $2a$
Ja dat zeg ik

quote:
, en dit zal wel in het algoritme enige invloed hebben op de uitkomst, mogelijk dat hij daar iets van gebruikt voor identificatie en daarom start je hash met $2.
Ja, zover was ik ook, maar ik wil dus weten WAT die salt nu precies doet, want ik zie dus GEEN invloed op de uitkomst als er iets significants in de salt wordt gewijzigd.
Pakspulwoensdag 21 november 2012 @ 22:50
quote:
0s.gif Op woensdag 21 november 2012 22:38 schreef Swetsenegger het volgende:

[..]

Ja, zover was ik ook, maar ik wil dus weten WAT die salt nu precies doet, want ik zie dus GEEN invloed op de uitkomst als er iets significants in de salt wordt gewijzigd.
Ik denk dat het het aantal rondes zijn wat hij uitvoert, want bij 15 doet hij er velen malen langer over t.o.v. 10, maar dan moet je even uitzoeken wat de definities van de prefix allemaal zijn. Want crypt gebruikt diverse prefixes om bepaalde algoritmes uit te voeren, dan moet je de prefix van blowfish uitzoeken.
Swetseneggerwoensdag 21 november 2012 @ 23:19
quote:
0s.gif Op woensdag 21 november 2012 22:50 schreef Pakspul het volgende:

[..]

Ik denk dat het het aantal rondes zijn wat hij uitvoert, want bij 15 doet hij er velen malen langer over t.o.v. 10, maar dan moet je even uitzoeken wat de definities van de prefix allemaal zijn. Want crypt gebruikt diverse prefixes om bepaalde algoritmes uit te voeren, dan moet je de prefix van blowfish uitzoeken.
Ik heb hier heel veel gevonden.

http://stackoverflow.com/(...)-two-different-salts
henrivovrijdag 23 november 2012 @ 23:39
Werkt er hier ook iemand met Zend Framework 2?
pascal08zaterdag 24 november 2012 @ 02:55
quote:
5s.gif Op woensdag 21 november 2012 21:11 schreef Swetsenegger het volgende:
Wat doet dit?
[ code verwijderd ]

Want welk $password ik ook gebruik, de hash begint altijd met $2 en als ik met hetzelfde wachtwoord de $cost wijzig, wijzigt de hash niet.

maw
[ code verwijderd ]

geeft dezelfde output als
[ code verwijderd ]

-edit-

php.net zegt

[..]

En die salt wordt inderdaad in bovenstaande code opgebouwd, maar ik zou dus verwachten dat wanneer mijn salt wijzigt, mijn hash ook wijzigt?
Wat doet de functie crypt()? Als ik het wachtwoord en salt concatenate en dan versleutel, veranderd de output namelijk wel als ik $cost veranderd van 10 naar 35.

Maar goed, zelfs een simpele versleuteling met een goede salt kan een wachtwoord genereren dat nooit te brute-forcen is, toch?
pascal08zaterdag 24 november 2012 @ 16:35
Ik heb een lastige vraag en ik weet niet in welk topic ik 'm moet posten. :P

Stel ik laat een stuk HTML code echoën via PHP. Kan ik dan in dat stuk HTML via JavaScript dingen inserten met bijvoorbeeld: $('selector').html(data); ?
Lightzaterdag 24 november 2012 @ 16:50
quote:
0s.gif Op zaterdag 24 november 2012 16:35 schreef pascal08 het volgende:
Ik heb een lastige vraag en ik weet niet in welk topic ik 'm moet posten. :P

Stel ik laat een stuk HTML code echoën via PHP. Kan ik dan in dat stuk HTML via JavaScript dingen inserten met bijvoorbeeld: $('selector').html(data); ?
Je kunt gewoon javascript opnemen in de html die je vanuit php genereert.
pascal08zaterdag 24 november 2012 @ 16:52
quote:
0s.gif Op zaterdag 24 november 2012 16:50 schreef Light het volgende:

[..]

Je kunt gewoon javascript opnemen in de html die je vanuit php genereert.
Wordt dat niet ontzettend lelijk dan? Het zijn nogal grote scripts.

Waar zou jij voor kiezen? Grote stukken HTML code zonder PHP en JavaScript in een aparte file of kleine stukken HTML code via een PHP loop met JavaScript erin?
Lightzaterdag 24 november 2012 @ 16:53
quote:
0s.gif Op zaterdag 24 november 2012 02:55 schreef pascal08 het volgende:

[..]

Wat doet de functie crypt()? Als ik het wachtwoord en salt concatenate en dan versleutel, veranderd de output namelijk wel als ik $cost veranderd van 10 naar 35.

Maar goed, zelfs een simpele versleuteling met een goede salt kan een wachtwoord genereren dat nooit te brute-forcen is, toch?
Bij een simpele versleuteling is het makkelijker om de onversleutelde tekst weer te krijgen. Daar de salt uithalen is niet makkelijk maar wel mogelijk.
Lightzaterdag 24 november 2012 @ 16:59
quote:
0s.gif Op zaterdag 24 november 2012 16:52 schreef pascal08 het volgende:

[..]

Wordt dat niet ontzettend lelijk dan? Het zijn nogal grote scripts.
Dan zet je de scripts in een aparte js-file en ga je die inladen. Dan heb je alleen nog een oplossing nodig om het script wat parameters mee te geven.
1
2
<script type="text/javascript" src="/my/script/location/here"></script>
<script type="text/javascript">myscript.init('foo', 'bar', 'baz');</script>
quote:
Waar zou jij voor kiezen? Grote stukken HTML code, of kleine stukken HTML code via een PHP loop met JavaScript erin?
Ik ben eerder geneigd om grotere stukken html te gebruiken dan om javascript te gebruiken om de html te genereren.
henrivozaterdag 24 november 2012 @ 21:49
Niemand hier bekend met Zend Framework 2? :o
urselzaterdag 24 november 2012 @ 23:25
quote:
0s.gif Op zaterdag 24 november 2012 21:49 schreef henrivo het volgende:
Niemand hier bekend met Zend Framework 2? :o
Nog niet. Laatste project in ZF1 nog bezig. Daarna omschakelen,
Juicyhilzaterdag 24 november 2012 @ 23:26
Laatste project dat ik een paar maanden terug nog op ZF deed, was op 1.7 uit 2008 _O-
henrivozondag 25 november 2012 @ 00:06
Ik wil heel graag met ZF2 leren werken, maar heb geen ervaring met 1.x. De leercurve is ook best steil dus vroeg me af hoe het beste onder de knie te krijgen, aangezien de tutorial op de website al best lastig is..
Juicyhilzondag 25 november 2012 @ 00:07
quote:
0s.gif Op zondag 25 november 2012 00:06 schreef henrivo het volgende:
Ik wil heel graag met ZF2 leren werken, maar heb geen ervaring met 1.x. De leercurve is ook best steil dus vroeg me af hoe het beste onder de knie te krijgen, aangezien de tutorial op de website al best lastig is..
Dan zou ik eerder voor Codeigniter gaan ofzo. Dat is best simpel om in te stappen.
Snap van Zend nog steeds niet ongelofelijk veel :P
Juicyhilzondag 25 november 2012 @ 00:08
quote:
0s.gif Op zondag 25 november 2012 00:07 schreef Juicyhil het volgende:

[..]

Dan zou ik eerder voor Codeigniter gaan ofzo. Dat is best simpel om in te stappen.
Snap van Zend nog steeds niet ongelofelijk veel :P
Maar dat komt denk ik meer omdat ik er ook niet veel van wil weten.
henrivozondag 25 november 2012 @ 00:08
quote:
0s.gif Op zondag 25 november 2012 00:07 schreef Juicyhil het volgende:

[..]

Dan zou ik eerder voor Codeigniter gaan ofzo. Dat is best simpel om in te stappen.
Snap van Zend nog steeds niet ongelofelijk veel :P
Ja maar Zend is zo lekker uitgebreid, zoveel mogelijkheden en zulks :9~
Juicyhilzondag 25 november 2012 @ 00:09
quote:
0s.gif Op zondag 25 november 2012 00:08 schreef henrivo het volgende:

[..]

Ja maar Zend is zo lekker uitgebreid, zoveel mogelijkheden en zulks :9~
En hoeveel daarvan denk je te gaan gebruiken?
henrivozondag 25 november 2012 @ 00:10
quote:
0s.gif Op zondag 25 november 2012 00:09 schreef Juicyhil het volgende:

[..]

En hoeveel daarvan denk je te gaan gebruiken?
Niet relevant, het kán gewoon :6
Juicyhilzondag 25 november 2012 @ 00:11
quote:
0s.gif Op zondag 25 november 2012 00:10 schreef henrivo het volgende:

[..]

Niet relevant, het kán gewoon :6
Nah, toen ik Zend gebruikte, werd er een fractie van alle mogelijkheden gebruikt.

Ik zou dan eerder eerst voor een simpeler framework gaan, voordat je begint met Zend....
henrivozondag 25 november 2012 @ 00:14
quote:
0s.gif Op zondag 25 november 2012 00:11 schreef Juicyhil het volgende:

[..]

Nah, toen ik Zend gebruikte, werd er een fractie van alle mogelijkheden gebruikt.

Ik zou dan eerder eerst voor een simpeler framework gaan, voordat je begint met Zend....
Ja misschien is dat ook wel de beste manier. Alleen wat omslachtig...
Juicyhilzondag 25 november 2012 @ 00:15
quote:
0s.gif Op zondag 25 november 2012 00:14 schreef henrivo het volgende:

[..]

Ja misschien is dat ook wel de beste manier. Alleen wat omslachtig...
Het lijkt me omslachtiger om eerst iets te bouwen waarbij je geen flauw idee hebt waarom en hoe je iets doet om er later achter te komen dat je het alsnog opnieuw moet bouwen ;)
henrivozondag 25 november 2012 @ 00:17
quote:
0s.gif Op zondag 25 november 2012 00:15 schreef Juicyhil het volgende:

[..]

Het lijkt me omslachtiger om eerst iets te bouwen waarbij je geen flauw idee hebt waarom en hoe je iets doet om er later achter te komen dat je het alsnog opnieuw moet bouwen ;)
Is ook zo. Bedoelde het ook niet lullig ofzo, hoor :) Maar jij raadt dus eerst CodeIgniter aan, specifiek die? Of zou CakePHP ook voldoen?
Juicyhilzondag 25 november 2012 @ 00:19
quote:
0s.gif Op zondag 25 november 2012 00:17 schreef henrivo het volgende:

[..]

Is ook zo. Bedoelde het ook niet lullig ofzo, hoor :) Maar jij raadt dus eerst CodeIgniter aan, specifiek die? Of zou CakePHP ook voldoen?
CakePHP heb ik verder geen ervaring mee, dus daar kan ik niks over vertellen.

Zelf werk ik nu in Yii de laatste paar maanden en dat is ook een erg fijn en laagdrempelig framework.
Ik denk dat je gewoon hier en daar eens wat moet proberen. Ik weet in elk geval van CodeIgniter dat ze out-of-the-box al een werkende applicatie hebben. Dus niet net zoals bij Zend dat je de boel zelf nog moet opzetten (alhoewel je dat met een shell-scriptje vrij snel doet)
henrivozondag 25 november 2012 @ 00:29
quote:
0s.gif Op zondag 25 november 2012 00:19 schreef Juicyhil het volgende:

[..]

CakePHP heb ik verder geen ervaring mee, dus daar kan ik niks over vertellen.

Zelf werk ik nu in Yii de laatste paar maanden en dat is ook een erg fijn en laagdrempelig framework.
Ik denk dat je gewoon hier en daar eens wat moet proberen. Ik weet in elk geval van CodeIgniter dat ze out-of-the-box al een werkende applicatie hebben. Dus niet net zoals bij Zend dat je de boel zelf nog moet opzetten (alhoewel je dat met een shell-scriptje vrij snel doet)
Ja, zal morgen es met CI aan de slag gaan. Ik geloof trouwens dat ZF2 geen ZFTool meer bevat
Deeltjesversnellerzondag 25 november 2012 @ 14:26
Ik wil gegevens in een database zetten die ik met een php script heb gegenereerd. 2000 rows met ieder 35 velden. Ik plak de query dus in het sql veld in phpmyadmin maar na een tijdje wordt de pagina wit en stopt ie, zonder verder iets te doen. Is daar iets aan te doen behalve de query opdelen in kleinere queries? query cache limit is 1,048,576...
Maringozondag 25 november 2012 @ 14:33
quote:
0s.gif Op zondag 25 november 2012 14:26 schreef Deeltjesversneller het volgende:
Ik wil gegevens in een database zetten die ik met een php script heb gegenereerd. 2000 rows met ieder 35 velden. Ik plak de query dus in het sql veld in phpmyadmin maar na een tijdje wordt de pagina wit en stopt ie, zonder verder iets te doen. Is daar iets aan te doen behalve de query opdelen in kleinere queries? query cache limit is 1,048,576...
Je kan het inderdaad proberen met kleinere chunks. 500 of 200 ofzo.

Maar waarom niet direct vanuit je php script in de database zetten? Dat kan je dan zelfs per row doen.
mstxzondag 25 november 2012 @ 14:36
quote:
0s.gif Op zondag 25 november 2012 14:26 schreef Deeltjesversneller het volgende:
Ik wil gegevens in een database zetten die ik met een php script heb gegenereerd. 2000 rows met ieder 35 velden. Ik plak de query dus in het sql veld in phpmyadmin maar na een tijdje wordt de pagina wit en stopt ie, zonder verder iets te doen. Is daar iets aan te doen behalve de query opdelen in kleinere queries? query cache limit is 1,048,576...
En wat gebeurt er als je het als .sql bestandje opslaat en importeert in phpmyadmin?
Je kan het ook nog via de commandline importeren met "mysql -u gebruikersnaam -p databasenaam < database.sql", zo importeer ik altijd grote databases, dan heb je ook geen last van maximum uploadgrootte enzo.
GlowMousezondag 25 november 2012 @ 14:39
http://webcheatsheet.com/sql/mysql_backup_restore.php

In phpmyadmin kun je ook import-files uploaden.
Deeltjesversnellerzondag 25 november 2012 @ 15:13
Kreeg het niet als sql bestand opgeslagen, programma bleef maar bezig. Maar meteen met php in de database zetten is gelukt!
boem-dikkiewoensdag 28 november 2012 @ 01:30
Ik ben me echt scheel aan het staren op een ongelooflijke beginnersfout maar ik kom er even niet uit.

Ik heb een formulier met broodjes. Op onderstaande manier opgebouwd.

1
2
3
4
5
<input type="hidden" name="broodje[info][description]" value="Broodje Ham">Broodje Ham</input>
<input type="text" name="broodje[info][quantity]" class="number" id="2">

<input type="hidden" name="broodje[info][description]" value="Broodje Kaas">Broodje Kaas</input>
<input type="text" name="broodje[info][quantity]" class="number" id="2">

In mijn PHP wil ik loopen door hoeveel er van elk broodje zijn ingevuld.

1
2
3
4
5
6
7
8
9
<?php
$broodjes 
$_POST['broodje']; 

foreach (
$broodjes['info'] as $k => $v) {
if (
$v 0) {
   echo 
"<tr><td>" $broodjes['info']['description'] . " - " $broodjes['info']['quantity'] . " keer </tr></td>";
}
}
?>

Nu maakt het niet uit wat ik in vul, ik krijg constant alleen maar dit te zien:

Broodje ham - keer.

Als ik in mijn hele form maar één optie laat staan, dus bijvoorbeeld alleen een input met broodje kaas gaat het goed.
BrainOverfloWwoensdag 28 november 2012 @ 02:39
quote:
13s.gif Op woensdag 28 november 2012 01:30 schreef boem-dikkie het volgende:
Ik ben me echt scheel aan het staren op een ongelooflijke beginnersfout maar ik kom er even niet uit.

Ik heb een formulier met broodjes. Op onderstaande manier opgebouwd.
[ code verwijderd ]

In mijn PHP wil ik loopen door hoeveel er van elk broodje zijn ingevuld.
[ code verwijderd ]

Nu maakt het niet uit wat ik in vul, ik krijg constant alleen maar dit te zien:

Broodje ham - keer.

Als ik in mijn hele form maar één optie laat staan, dus bijvoorbeeld alleen een input met broodje kaas gaat het goed.
Het eerste wat me op valt is dat je id niet uniek is, staat bij beide textvelden op "2".
Je name="broodje[info][description]" en name="broodje[info][quantity]" heten bij beide broodjes het zelfde. Dan zal het 2e broodje het eerste broodje overschrijven.

[ Bericht 7% gewijzigd door BrainOverfloW op 28-11-2012 02:49:09 ]
The_Terminatorwoensdag 28 november 2012 @ 08:13
quote:
13s.gif Op woensdag 28 november 2012 01:30 schreef boem-dikkie het volgende:
Ik ben me echt scheel aan het staren op een ongelooflijke beginnersfout maar ik kom er even niet uit.

Ik heb een formulier met broodjes. Op onderstaande manier opgebouwd.
[ code verwijderd ]

In mijn PHP wil ik loopen door hoeveel er van elk broodje zijn ingevuld.
[ code verwijderd ]

Nu maakt het niet uit wat ik in vul, ik krijg constant alleen maar dit te zien:

Broodje ham - keer.

Als ik in mijn hele form maar één optie laat staan, dus bijvoorbeeld alleen een input met broodje kaas gaat het goed.
Wat BrianOverfloW zegt. Daarnaast zul je nog meer dingen aan moeten passen aangezien zowel de HTML als de PHP op deze manier nooit gaan doen wat je wil.

De HTML moet er ongeveer zo uitzien:
1
2
3
4
5
<input type="text" name="description[]" value="Broodje Ham" />
<input type="text" name="quantity[]" class="number" id="2" />
<input type="text" name="description[]" value="Broodje Kaas" />
<input type="text" name="quantity[]" class="number" id="3" />
<input type="submit" />

Dit geeft de volgende output als je print_r($_REQUEST) doet:
1Array ( [description] => Array ( [0] => Broodje Ham [1] => Broodje Kaas ) [quantity] => Array ( [0] => 5 [1] => 2 ) ) 

Nu je weet hoe de resulterende array op is gebouwd kun je de php gaan ontwerpen:

Je doet het volgende:
- je checkt of er daadwerkelijk data binnenkomt
- je bouwt de table op met de data die in de teruggegeven array staat, bij elke description hoort een quantity die dezelfde key volgorde heeft als de description array
- je zorgt ervoor dat de invoer wordt omgezet naar entities alvorens het in de tabel te verwerken

1
2
3
4
5
6
7
8
9
10
11
<?php
if(isset($_REQUEST['description']) && is_array($_REQUEST['description']) && isset($_REQUEST['quantity']) && is_array($_REQUEST['quantity'])) {
    echo 
'<table>';
    
    foreach(
$_REQUEST['description'] as $k => $field_value) {
         echo 
"<tr><td>" htmlentities($field_value) . " - " htmlentities($_REQUEST['quantity'][$k]) . " keer </tr></td>";
    }
    
    echo 
'</table>';
}
?>
boem-dikkiewoensdag 28 november 2012 @ 09:54
Thanks jongens. Snap het nu.

Die dubbele 'id' kwam overigens vanwege copypasta hier op FOK!. Die waren snippets uit mijn code dus ik heb even snel die onderste rij hier opnieuw geplakt.
Pino112woensdag 28 november 2012 @ 17:38
Ik heb een vraag over een (MS SQL) database.

Het gaat om twee gewone tabellen (Les en Klas) en een koppeltabel (Module) die die andere twee koppelt.
Maar één waarde in de koppeltabel is niet de primary key in de tabel 'Les', maar eigenlijk een foreign key.

Voor de beeldvorming:

[Les]
-lesId (PK)
-voe

[Klas]
-klascode (PK)

[Module] < de koppeltabel
-voe
-klascode

Ik heb 'voe' en 'klascode' in Module al PK gemaakt, en 'klascode' heb ik al gewoon FK kunnen maken naar de Klas-tabel toe, maar de 'voe' wil dus niet omdat die geen PK is.
Hopelijk is het een beetje duidelijk zo.

Wat kan ik doen om de 'voe' uit Les te koppelen aan Module?
GlowMousewoensdag 28 november 2012 @ 17:53
les.voe moet uniek zijn, is hij dat? En waarom koppel je niet gewoon op lesId?
Pino112woensdag 28 november 2012 @ 20:50
quote:
0s.gif Op woensdag 28 november 2012 17:53 schreef GlowMouse het volgende:
les.voe moet uniek zijn, is hij dat?
Nee, (nog) niet).
quote:
En waarom koppel je niet gewoon op lesId?
'Voe' is een soort code voor een bepaalde module bij ons op school (bijv PHP, SLB, C#, enz).
Eén bepaalde voe wordt maximaal één keer per klas gegeven. Daarom heb ik module.voe en module.klascode samen een PK gemaakt zodat deze altijd uniek moet zijn. Je hebt logischerwijs maar één keer de module C# of UML enz.
Een module wordt dus wel aan meerdere klassen gegeven.

In 'Les' wordt naast de 'voe' ook 'docent', 'klas' en 'aanvang' bijgehouden waarbij les.docent dus ook wordt gekoppeld met een FK aan de tabel 'Docent'.
Les.voe kan dus niet uniek zijn, omdat er dus meerdere lessen zijn met dezelfde voe.

Ik kan de gehele ERD wel even uploaden want er zijn nog meer tabellen, dan heb je helemaal een goed overzicht..
GlowMousewoensdag 28 november 2012 @ 21:07
Een foreign key moet naar iets unieks verwijzen in MSSQL (in MySQL hoeft dat niet, waarmee het afwijkt van de SQL standaard). Je zult dus een aparte tabel moeten maken met Voe's.
poepeneesjevrijdag 30 november 2012 @ 15:18
Binnen het MVC-model, kunnen daar de models direct onderling met elkaar communiceren of moet dat perse via de controller gaan?
Tijnvrijdag 30 november 2012 @ 15:56
Zolang de Model-objecten gewoon netjes via public methods met elkaar praten, zou ik niet weten wat daar mis mee is.
Maringovrijdag 30 november 2012 @ 19:59
quote:
0s.gif Op vrijdag 30 november 2012 15:18 schreef poepeneesje het volgende:
Binnen het MVC-model, kunnen daar de models direct onderling met elkaar communiceren of moet dat perse via de controller gaan?
De algehele meningen verschillen, maar ik zeg van graag zelfs.
Maringovrijdag 30 november 2012 @ 20:02
quote:
14s.gif Op woensdag 28 november 2012 20:50 schreef Pino112 het volgende:

[..]

Nee, (nog) niet).

[..]

'Voe' is een soort code voor een bepaalde module bij ons op school (bijv PHP, SLB, C#, enz).
Eén bepaalde voe wordt maximaal één keer per klas gegeven. Daarom heb ik module.voe en module.klascode samen een PK gemaakt zodat deze altijd uniek moet zijn. Je hebt logischerwijs maar één keer de module C# of UML enz.
Een module wordt dus wel aan meerdere klassen gegeven.

In 'Les' wordt naast de 'voe' ook 'docent', 'klas' en 'aanvang' bijgehouden waarbij les.docent dus ook wordt gekoppeld met een FK aan de tabel 'Docent'.
Les.voe kan dus niet uniek zijn, omdat er dus meerdere lessen zijn met dezelfde voe.

Ik kan de gehele ERD wel even uploaden want er zijn nog meer tabellen, dan heb je helemaal een goed overzicht..
Dat word dan een extra tabel:

extra_tabel (xtraID, LesID, voe )
LesID FK naar les. lesid

Zo genereren dat voe samen met lesID meekomt naar deze tabel en dan xtraID gebruiken als unieke ID in Module
Deeltjesversnellervrijdag 30 november 2012 @ 21:47
1
2
3
4
5
6
7
8
9
10
$data = new Spreadsheet_Excel_Reader('nevo_kort.xls', false);

function getCols($sheet) {
    $cols = array();
    for($col = 0; $col < $data->colcount($sheet); $col++) {
        $cols[] = $data->val(1,$col,$sheet);
    }
    
    return $cols;
}

Waarom krijg ik:

Notice: Undefined variable: data in ... on line 12
Fatal error: Call to a member function colcount() on a non-object in ... on line 12

Line 12 is de for loop. Hij moet toch gewoon bij dat object kunnen, die gewoon defined is?

Zal wel weer iets simpels zijn, maar ben nog niet erg gevorderd en heb de laatste dagen zoveel zitten prutsen dat ik niet meer logisch kan nadenken.
Maringovrijdag 30 november 2012 @ 21:49
edits.
Deeltjesversnellervrijdag 30 november 2012 @ 21:55
Als ik regel 3, 9 en 10 in dat codeblokje weghaal, dus alles buiten de functie zet, en print_r($cols) doe werkt het wel... Waarom niet vanuit de functie?
Arceevrijdag 30 november 2012 @ 21:58
quote:
0s.gif Op vrijdag 30 november 2012 21:55 schreef Deeltjesversneller het volgende:
Als ik regel 3, 9 en 10 in dat codeblokje weghaal, dus alles buiten de functie zet, en print_r($cols) doe werkt het wel... Waarom niet vanuit de functie?
$data is niet bekend in die functie?

Meegeven met de aanroep en declaratie van getCols: getCols($sheet, $data).
Deeltjesversnellervrijdag 30 november 2012 @ 22:25
Zal wel komen omdat ik het allemaal vanuit de index.php doe en niet in een class heb? Dat ie $data daardoor niet bij kan. Ik gooi het even over een andere boeg, bedankt.
mstxvrijdag 30 november 2012 @ 22:39
quote:
0s.gif Op vrijdag 30 november 2012 22:25 schreef Deeltjesversneller het volgende:
Zal wel komen omdat ik het allemaal vanuit de index.php doe en niet in een class heb? Dat ie $data daardoor niet bij kan. Ik gooi het even over een andere boeg, bedankt.
http://en.wikipedia.org/wiki/Scope_%28computer_science%29
pascal08zaterdag 1 december 2012 @ 01:46
Ik snap er niks van. Ik gebruik CodeIgniter om te volgende query uit te voeren, maar het lukt me niet om een output te krijgen.

Het gaat om deze query:

SELECT * FROM table WHERE column1 = 1 OR column1 = 2 OR column1 = 3.

Ik heb een array gevuld met de waarden die de kolommen zouden moeten hebben. Dus $array = array('1', '2', '3').

CodeIgniter zegt dat je $this->db->or_where(); kunt gebruiken hiervoor. Ik heb dus gedaan:
$this->db->or_where('column1', $array);

Ik heb al een hele hoop geprobeerd en ook met profiler gekeken wat CodeIgniter doet, maar er wordt dus geen query uitgevoerd.

Probleem opgelost: Ik moest een foreach loop gebruiken en daar de CI query in plaatsen. ^O^

[ Bericht 13% gewijzigd door pascal08 op 01-12-2012 01:55:22 ]
The_Terminatorzaterdag 1 december 2012 @ 07:54
quote:
0s.gif Op vrijdag 30 november 2012 22:25 schreef Deeltjesversneller het volgende:
Zal wel komen omdat ik het allemaal vanuit de index.php doe en niet in een class heb? Dat ie $data daardoor niet bij kan. Ik gooi het even over een andere boeg, bedankt.
Dat maakt niets uit. Als je dit doet werkt het namelijk wel:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$data 
= new Spreadsheet_Excel_Reader('nevo_kort.xls'false);

function 
getCols($sheet) {
    global 
$data;

    
$cols = array();
    for(
$col 0$col $data->colcount($sheet); $col++) {
        
$cols[] = $data->val(1,$col,$sheet);
    }
    
    return 
$cols;
}
?>

Ik vind bovenstaande echter een slordige manier van werken. Een iets betere manier zou zijn als je die Excel class singleton maakt, dan weet het object wat zijn eigen instance is en kun je deze ophalen via een static function.

Nog een andere manier is het doorgeven van het object aan de functie:

function getCols($sheet, $data_obj) {

Je moet de functie dan vanuit de globale scope aanroepen met:

$cols = getCols($sheet_id, $data);

Je kunt eventueel ook een wrapper-class voor de Excel class ontwerpen, in dat geval initialiseer je het object in de constructor van de wrapper class en kun je het aanspreken dmv: $this->data->val()
Deeltjesversnellerzaterdag 1 december 2012 @ 15:18
^O^
pascal08zondag 2 december 2012 @ 22:10
Kan iemand mij een tip geven hoe ik een klik-systeem als deze: http://tweakers.net/pricewatch/# met blijvende geselecteerde tegels kan maken? Dat je dus je tegel bij meerdere categorieën kan aanklikken, zonder dat ze gedeselecteerd worden bij het switchen tussen categorieën.

Nu laat ik bij elke keer het selecteren van een categorie de tegels genereren met PHP, maar nadat ik een andere categorie bezocht heb, weet PHP niet meer welke tegels er waren geselecteerd.

[ Bericht 4% gewijzigd door pascal08 op 02-12-2012 22:15:20 ]
The_Terminatorzondag 2 december 2012 @ 22:17
quote:
0s.gif Op zondag 2 december 2012 22:10 schreef pascal08 het volgende:
Kan iemand mij een tip geven hoe ik een klik-systeem als deze: http://tweakers.net/pricewatch/# met blijvende geselecteerde tegels kan maken? Dat je dus je tegel bij meerdere categorieën kan aanklikken, zonder dat ze gedeselecteerd worden bij het switchen tussen categorieën.

Nu laat ik bij elke keer het selecteren van een categorie de tegels genereren met PHP, maar nadat ik een andere categorie bezocht heb, weet PHP niet meer welke tegels er waren geselecteerd.
Je zou in de sessie bij kunnen houden welke items er zijn geselecteerd, zie hiervoor de documentatie over de $_SESSION variable: http://php.net/manual/en/reserved.variables.session.php
pascal08zondag 2 december 2012 @ 22:20
quote:
0s.gif Op zondag 2 december 2012 22:17 schreef The_Terminator het volgende:

[..]

Je zou in de sessie bij kunnen houden welke items er zijn geselecteerd, zie hiervoor de documentatie over de $_SESSION variable: http://php.net/manual/en/reserved.variables.session.php
Ah top! Ik probeerde het eerst met global variables, maar dat werkte op een of andere manier niet. Ik ga dit eens proberen.
boem-dikkiezondag 2 december 2012 @ 22:31
Ik snap niet wat je precies wil.
pascal08zondag 2 december 2012 @ 22:49
quote:
14s.gif Op zondag 2 december 2012 22:31 schreef boem-dikkie het volgende:
Ik snap niet wat je precies wil.
Ik wil dit: http://tweakers.net/pricewatch/ en dan bij het klikken op een van de tegels wordt er een randvoorwaarde ingesteld voor een database query. Dat heb ik al werkend. Nu wil ik nog kunnen switchen tussen categorieën waarbij de geselecteerde tegels weer tevoorschijn komen, dat is me dus nog niet gelukt. Met session variables moet dat lukken hoop ik. Hoe zou jij het aanpakken?
pascal08maandag 3 december 2012 @ 00:40
quote:
0s.gif Op zondag 2 december 2012 22:49 schreef pascal08 het volgende:

[..]

Ik wil dit: http://tweakers.net/pricewatch/ en dan bij het klikken op een van de tegels wordt er een randvoorwaarde ingesteld voor een database query. Dat heb ik al werkend. Nu wil ik nog kunnen switchen tussen categorieën waarbij de geselecteerde tegels weer tevoorschijn komen, dat is me dus nog niet gelukt. Met session variables moet dat lukken hoop ik. Hoe zou jij het aanpakken?
Met sessie variabelen lukt het niet. Lijkt me ook niet een goede oplossing achteraf. Ik wil liever alles in HTML zetten en bij het klikken op de categorie de betreffende tegels zichtbaar maken.
Pakspulmaandag 3 december 2012 @ 07:38
quote:
0s.gif Op zondag 2 december 2012 22:49 schreef pascal08 het volgende:
. Nu wil ik nog kunnen switchen tus
Dit kun je toch allemaal oplossen met javascript (bv: jQuery), zo kun je per klik op de achtergrond de info inladen die je wil en tevens in een variabel bij houden wat er getoond moet worden (dit loopt toch synchroon aan wat je moet laden).

btw, als je de query al in gelukt moeten de tegels toch een eitje zijn :? je hebt alle informatie namelijk die je nodig hebt.
pascal08maandag 3 december 2012 @ 11:14
quote:
0s.gif Op maandag 3 december 2012 07:38 schreef Pakspul het volgende:

[..]

Dit kun je toch allemaal oplossen met javascript (bv: jQuery), zo kun je per klik op de achtergrond de info inladen die je wil en tevens in een variabel bij houden wat er getoond moet worden (dit loopt toch synchroon aan wat je moet laden).

btw, als je de query al in gelukt moeten de tegels toch een eitje zijn :? je hebt alle informatie namelijk die je nodig hebt.
Inderdaad ja. Ik zat gisteren echt op een dood punt, nadat ik na 3 uur nog niets werkend had gekregen. Ik zet net m'n computer aan, google naar "show hide tab content jquery" en gelijk de eerste hit was al raak. In 20 minuutjes heb ik net geschreven waar ik gisteren urenlang naar op zoek was. Ik moet maar eens de basis van jQuery gaan bestuderen binnenkort, want het is toch wel een uitkomst hoor. ;)
Pakspulmaandag 3 december 2012 @ 13:12
Jquery is sowieso leuk on meeting te spelen, want je hoeft dan niet meer voor iedere actie een page reload uit te voeren. Daarnaast heb je ook nog eens leuke effectjes en dat maakt ieders dag blij :P
Sitethiefmaandag 3 december 2012 @ 13:24
quote:
Creating default object from empty value
Ik snap eigenlijk niet dat het zo'n groot probleem is dat ik soms
1
2
3
<?php
$nieuwobject
->lala 'lala';
?>
doe. waarom zou je dat met een array in principe wel kunnen doen, en met een object niet?
1
2
3
4
5
<?php
$nieuwobject 
=  new stdClass();
$nieuwobject->lala = new stdClass();
$nieuwobject->lala 'lala';
?>
Dit lijkt me zoveel overbodige code? Voor iets wat wel werkt, want hij maakt de objecten gewoon aan, maar blijkbaar toch een strict standard error oplevert.
The_Terminatormaandag 3 december 2012 @ 16:16
quote:
0s.gif Op maandag 3 december 2012 13:24 schreef Sitethief het volgende:

[..]

Ik snap eigenlijk niet dat het zo'n groot probleem is dat ik soms
[ code verwijderd ]

doe. waarom zou je dat met een array in principe wel kunnen doen, en met een object niet?
[ code verwijderd ]

Dit lijkt me zoveel overbodige code? Voor iets wat wel werkt, want hij maakt de objecten gewoon aan, maar blijkbaar toch een strict standard error oplevert.
$nieuwobject->lala->lala = 'test' zou moeten werken.
Sitethiefmaandag 3 december 2012 @ 16:23
quote:
0s.gif Op maandag 3 december 2012 16:16 schreef The_Terminator het volgende:

[..]

$nieuwobject->lala->lala = 'test' zou moeten werken.
Werkt ook, maar ik krijg wel Creating default object from empty value in m'n logfile te zien.
qwoxdinsdag 4 december 2012 @ 19:24
ik probeerde met
1file_get_contents()
te halen van een website. Echter wordt de informatie op die pagina ingeladen met behulp van javascript. Dus krijg een 'lege' pagina terug.

Nu vraag ik me af of het mogelijk is om de informatie op te halen na dat de informatie erin is geladen.

p.s. Het gaat om een spelletje waar rapportages openbaar gemaakt kunnen worden, dus is niet alsof ik informatie probeer te 'stelen'. Wil enkel de informatie op een andere manier weergeven.
Tijndinsdag 4 december 2012 @ 19:31
Misschien kun je w3m of een andere textmode browser vanaf de console aanroepen, de pagina laten openen en de output naar een file schrijven?
GlowMousedinsdag 4 december 2012 @ 19:33
kijken waar de javascript zijn informatie vandaan haalt
GlowMousedinsdag 4 december 2012 @ 19:33
quote:
0s.gif Op maandag 3 december 2012 13:24 schreef Sitethief het volgende:

[..]

Ik snap eigenlijk niet dat het zo'n groot probleem is dat ik soms
[ code verwijderd ]

doe. waarom zou je dat met een array in principe wel kunnen doen, en met een object niet?
[ code verwijderd ]

Dit lijkt me zoveel overbodige code? Voor iets wat wel werkt, want hij maakt de objecten gewoon aan, maar blijkbaar toch een strict standard error oplevert.
Regel 3 is niet nodig, en als hij bij een array geen warning geeft dan is dat inderdaad inconsistent.
qwoxdinsdag 4 december 2012 @ 20:02
quote:
14s.gif Op dinsdag 4 december 2012 19:33 schreef GlowMouse het volgende:
kijken waar de javascript zijn informatie vandaan haalt
toen ik dit las dacht ik "zo logisch, waarom kwam ik daar niet op"

Inmiddels denk ik de data gevonden te hebben, zal nog even duren voor ik alles juist weet te plaatsen.
Bedankt iig, kan nu weer verder puzzelen.
Sitethiefwoensdag 5 december 2012 @ 11:29
quote:
0s.gif Op dinsdag 4 december 2012 19:33 schreef GlowMouse het volgende:

[..]

Regel 3 is niet nodig, en als hij bij een array geen warning geeft dan is dat inderdaad inconsistent.
1
2
3
4
5
<?php
        $test1
->lala 'lala';
        
$test2['lala']['lala'] = 'lala';
        
print_r(error_get_last());
?>

Creating default object from empty value, over de array zegt hij niks. Je zou toch denken dat als hij impliciet doorheeft dat je een array wil creeëren dat dat ook zo met objecten zou werken.
BrainOverfloWwoensdag 5 december 2012 @ 16:12
Ik heb in codeigniter de volgende code staan.

1
2
3
4
5
6
7
8
9
10
11
<?php
class template_controller extends CI_Controller{
    function __construct(){
        parent::__construct();
    }

    function index($view = "home"){
        $data["current_view"] = $view . "_view";
        $this->load->view('template_view', $data);
    }
}

Als ik dan
1http://localhost/ci_nomo/index.php/template_controller/index/info
invul komt hij mooi uit in de info_view. Maar die url is natuurlijk te lang. Ik wil dat
1http://localhost/ci_nomo/info
daar ook uit komt. Iemand een idee?

Ik heb al geprobeerd via de .htaccess maar daar had ik nog geen succes mee.
1
2
3
4
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ci_nomo/index.php/template_controller/index/$1 [L]

EDIT: Ben er ondertussen zelf uitgekomen via de routes.

[ Bericht 1% gewijzigd door BrainOverfloW op 06-12-2012 10:25:46 ]
pascal08vrijdag 7 december 2012 @ 01:24
Weet iemand of het mogelijk is een deel van de query tussen brackets te krijgen met CodeIgniter? De meeste oplossingen die ik vind via Google zijn toch volledige queries, wat ik juist wil vermijden. Dit is een deel van de query:

1SELECT * FROM table WHERE (column1 = 1 OR column1 = 2 OR column1 = 3) AND column1 != 4 AND column1 != 5 AND column1 != 6...

De query is nog veel uitgebreider en haalt informatie uit een array, dus ik wil het liefst gewoon een loop gebruiken.

De onderstaande code maakt wel bijna de goede query, alleen de brackets ontbreken, waardoor ik dus niet het gewenste resultaat krijg.
1
2
3
4
foreach($array as $value) {
    $data = array(column !=' => $value);
    $this->db->where($data);
}

Heeft iemand een slimme oplossing hiervoor?

EDIT: Na wat zoekenwerk met betere keywords kwam ik erachter dat CI dit niet ondersteund. Een paar oplossingen gebruikten een eigen toevoeging met open en close bracket functies. Ik heb nu gewoon zelf een loop gemaakt die de gewenste querystring maakt. Vervolgens plaats ik deze string na de loop in ->where().

Ik heb het gewenste resultaat dus wel weten te bereiken, maar wel op een lelijke manier met een "custom stringbuilder". Als jullie een betere oplossing hebben, dan hoor ik het graag. ^O^

[ Bericht 17% gewijzigd door pascal08 op 07-12-2012 02:12:48 ]
wobbelzaterdag 8 december 2012 @ 22:03
Ik heb thuis een server draaien, en apache draait als www-data. Nu kan ik met exec(); veel uitvoeren, maar niet 'reboot now' of 'poweroff now'

Allerlei oplossingen gegoogled, maar niks helpt. Iemand 'n idee? :+
Tijnzaterdag 8 december 2012 @ 22:28
Waarom zou je je server willen rebooten of afsluiten via een web interface? Ik zou gewoon even op de commandline inloggen als je zoiets wil doen.
GlowMousezaterdag 8 december 2012 @ 23:16
https://wiki.archlinux.org/index.php/Allow_Users_to_Shutdown
quote:
5s.gif Op zaterdag 8 december 2012 22:28 schreef Tijn het volgende:
Waarom zou je je server willen rebooten of afsluiten via een web interface
lachen toch :D
wobbelzondag 9 december 2012 @ 10:01
quote:
5s.gif Op zaterdag 8 december 2012 22:28 schreef Tijn het volgende:
Waarom zou je je server willen rebooten of afsluiten via een web interface? Ik zou gewoon even op de commandline inloggen als je zoiets wil doen.
Het is een server thuis die ik via VPN aanzet (Wake on Lan) om vervolgens via Apache bepaalde dingen te benaderen. Het zou ideaal zijn als ik hem dan ook weer uit kan zetten ;)

quote:
Ik kan geen /sbin/poweroff now doen :') Ik werk met Ubuntu 12.10, heb dezelfde techniek al een keer geprobeerd toe te passen met 'poweroff now' maar dat functioneert niet :(
KomtTijd...zondag 9 december 2012 @ 10:05
sudo halt.

En www-data in je sudoers file toestemming geven om halt uit te voeren zonder wachtwoord.
Tijnzondag 9 december 2012 @ 10:07
quote:
0s.gif Op zondag 9 december 2012 10:01 schreef wobbel het volgende:

[..]

Het is een server thuis die ik via VPN aanzet (Wake on Lan) om vervolgens via Apache bepaalde dingen te benaderen. Het zou ideaal zijn als ik hem dan ook weer uit kan zetten ;)
Is het een idee om een cronjob te maken die een script uitvoert waarin wordt gekeken wanneer er voor het laatst iets is benaderd en als dat langer dan x geleden is de machine uitzet?
wobbelzondag 9 december 2012 @ 10:09
quote:
14s.gif Op zondag 9 december 2012 10:05 schreef KomtTijd... het volgende:
sudo halt.

En www-data in je sudoers file toestemming geven om halt uit te voeren zonder wachtwoord.
Owja, je moet dan wel eerst 'sudo' doen. Problem solved :+

quote:
5s.gif Op zondag 9 december 2012 10:07 schreef Tijn het volgende:

[..]

Is het een idee om een cronjob te maken die een script uitvoert waarin wordt gekeken wanneer er voor het laatst iets is benaderd en als dat langer dan x geleden is de machine uitzet?
Dat kan ook, maar ik heb hier ook nog een vrouwlijk wezen rondlopen die het machientje af en toe wil gebriuken, en dan laat ik hem aanstaan :)
Tijnzondag 9 december 2012 @ 10:10
Ik snap nog steeds niet wat er mis is met even met ssh inloggen en 'm zo uitzetten.
Arceezondag 9 december 2012 @ 10:12
quote:
5s.gif Op zondag 9 december 2012 10:07 schreef Tijn het volgende:
Is het een idee om een cronjob te maken die een script uitvoert waarin wordt gekeken wanneer er voor het laatst iets is benaderd en als dat langer dan x geleden is de machine uitzet?
Echte bazen lossen alles op met een cronjob. 8-)
wobbelzondag 9 december 2012 @ 10:32
quote:
6s.gif Op zondag 9 december 2012 10:10 schreef Tijn het volgende:
Ik snap nog steeds niet wat er mis is met even met ssh inloggen en 'm zo uitzetten.
M'n vriendin gebruikt een paar web apps die erop draaien, dus ze kan zo op een knopje drukken in die webapp die exec("sudo poweroff no") doet in PHP. Hoeft ze niet eerst te SSH'en ;)
wobbelmaandag 10 december 2012 @ 11:24
Oke, ik heb er nog eentje maar hij is waarschijnlijk te makkelijk :')

Ik heb een datum in unix timestamp en ik moet daar 4 maanden bij optellen, hoe doe ik dat ook alweer :P
mstxmaandag 10 december 2012 @ 11:26
quote:
0s.gif Op maandag 10 december 2012 11:24 schreef wobbel het volgende:
Oke, ik heb er nog eentje maar hij is waarschijnlijk te makkelijk :')

Ik heb een datum in unix timestamp en ik moet daar 4 maanden bij optellen, hoe doe ik dat ook alweer :P
$new_timestamp = strtotime('+4 months', $timestamp);
wobbelmaandag 10 december 2012 @ 12:25
Thnx :) works like a charm

[ Bericht 8% gewijzigd door wobbel op 10-12-2012 12:34:25 ]
Boze_Appelmaandag 10 december 2012 @ 18:56
quote:
0s.gif Op zondag 9 december 2012 10:12 schreef Arcee het volgende:

[..]

Echte bazen lossen alles op met een cronjob. 8-)
Zelfs mijn torrents gaan naar mijn server via een cronjob. :')
Droathoahdinsdag 11 december 2012 @ 10:55
Iemand ervaring met het maken van een plattegrond van een gebied met een pop-up functie bij het klikken op een onderdeel. In die pop-up staat dan informatie over dat stukje gebied. Het zou mij erg helpen.
Tijndinsdag 11 december 2012 @ 11:14
Dat lijkt me meer een probleem voor frontenders dan iets wat met PHP en MySQL te maken heeft, toch?
Rockfiredinsdag 11 december 2012 @ 11:16
quote:
0s.gif Op dinsdag 11 december 2012 10:55 schreef Droathoah het volgende:
Iemand ervaring met het maken van een plattegrond van een gebied met een pop-up functie bij het klikken op een onderdeel. In die pop-up staat dan informatie over dat stukje gebied. Het zou mij erg helpen.
Dat kan met een clickable map, of je doet het uitgebreider met Google Maps (zoiets bijvoorbeeld)

En dit inderdaad:
quote:
2s.gif Op dinsdag 11 december 2012 11:14 schreef Tijn het volgende:
Dat lijkt me meer een probleem voor frontenders dan iets wat met PHP en MySQL te maken heeft, toch?
VorteXxXdinsdag 11 december 2012 @ 12:31
quote:
0s.gif Op dinsdag 11 december 2012 10:55 schreef Droathoah het volgende:
Iemand ervaring met het maken van een plattegrond van een gebied met een pop-up functie bij het klikken op een onderdeel. In die pop-up staat dan informatie over dat stukje gebied. Het zou mij erg helpen.
Hier nog maar eens

http://www.w3schools.com/tags/tag_map.asp
Droathoahdinsdag 11 december 2012 @ 12:48
quote:
Ook gevonden, maar dat is geen pop-up ;)
themoledinsdag 11 december 2012 @ 12:55
quote:
0s.gif Op dinsdag 11 december 2012 12:48 schreef Droathoah het volgende:

[..]

Ook gevonden, maar dat is geen pop-up ;)
Maar dat kan daar wel omheen gebouwd worden met javascript.
Berend.zondag 16 december 2012 @ 13:56
Ik moet voor school een mini php script schrijven, maar snap het niet helemaal. De opdracht is: ''Schrijf een script waar je 25 keer een random getal van 1 tot 50 ziet.

Nu ben ik erachter gekomen dat dat met de ''rand'' functie moet maar als ik hem repeat met str_repeat dan blijft die hetzelfde getal zeggen. Iemand een idee hoe ik het dus 25 keer laat zien zonder dat die hetzelfde getal blijft roepen?

Thanks!
Deeltjesversnellerzondag 16 december 2012 @ 14:04
een for-loop gebruiken ipv str_repeat.
Devolutionzondag 16 december 2012 @ 14:16
quote:
0s.gif Op zondag 16 december 2012 13:56 schreef Berend. het volgende:
Nu ben ik erachter gekomen dat dat met de ''rand'' functie moet maar als ik hem repeat met str_repeat dan blijft die hetzelfde getal zeggen. Iemand een idee hoe ik het dus 25 keer laat zien zonder dat die hetzelfde getal blijft roepen?
Dat komt waarschijnlijk omdat je het script maar 1x een random getal laat kiezen. In de str_repeat zet je vervolgens het gegenereerde getal ipv dat je de functie rand() erin zet.

Oh nog een tip: gebruik mt_rand() ipv rand(). De eerste is namelijk willekeuriger dan de tweede.
Berend.zondag 16 december 2012 @ 14:27
quote:
0s.gif Op zondag 16 december 2012 14:04 schreef Deeltjesversneller het volgende:
een for-loop gebruiken ipv str_repeat.
Dank maar hoe zorg ik ervoor dat die maar 25 getallen laat zien?
Tijnzondag 16 december 2012 @ 14:30
quote:
0s.gif Op zondag 16 december 2012 14:27 schreef Berend. het volgende:

[..]

Dank maar hoe zorg ik ervoor dat die maar 25 getallen laat zien?
Lees even hoe een for-loop werkt en je weet het.
Berend.zondag 16 december 2012 @ 14:34
quote:
14s.gif Op zondag 16 december 2012 14:30 schreef Tijn het volgende:

[..]

Lees even hoe een for-loop werkt en je weet het.
Ik weet wel een beetje hoe de for en while enzo werken maar dit snap ik echt niet.
Deeltjesversnellerzondag 16 december 2012 @ 14:36
quote:
0s.gif Op zondag 16 december 2012 14:27 schreef Berend. het volgende:

[..]

Dank maar hoe zorg ik ervoor dat die maar 25 getallen laat zien?
dat is het principe van een for-loop:

for ($i = 1; $i <= 25; $i++)
mstxzondag 16 december 2012 @ 14:50
quote:
0s.gif Op zondag 16 december 2012 13:56 schreef Berend. het volgende:
Ik moet voor school een mini php script schrijven, maar snap het niet helemaal. De opdracht is: ''Schrijf een script waar je 25 keer een random getal van 1 tot 50 ziet.
1
2
3
<?php
echo "34 49 21 22 4 8 39 47 46 41 21 23 50 1 3 30 42 11 19 21 33 34 50 39 36";
?>
Berend.zondag 16 december 2012 @ 14:52
quote:
0s.gif Op zondag 16 december 2012 14:36 schreef Deeltjesversneller het volgende:

[..]

dat is het principe van een for-loop:

for ($i = 1; $i <= 25; $i++)
Bedankt, het is nu bijna gelukt!

1By3o

Ik moet alleen nog een spatie krijgen na elk getal. Ik weet alleen niet hoe ik dat hier bij toevoeg. Dit is de eerste keer dat ik PHP leer. :P

[ Bericht 2% gewijzigd door Berend. op 16-12-2012 15:01:07 ]
henrivozondag 16 december 2012 @ 15:03
Pffff, dat Zend Framework 2 is ook niet de makkelijkste om door te krijgen zeg ;(
mstxzondag 16 december 2012 @ 15:04
quote:
0s.gif Op zondag 16 december 2012 14:52 schreef Berend. het volgende:

[..]

Bedankt, het is nu bijna gelukt!

[ afbeelding ]

Ik moet alleen nog een spatie krijgen na elk getal. Ik weet alleen niet hoe ik dat hier bij toevoeg. Dit is de eerste keer dat ik PHP leer. :P
echo mt_rand(1,50).' ';
Berend.zondag 16 december 2012 @ 15:05
quote:
0s.gif Op zondag 16 december 2012 15:04 schreef mstx het volgende:

[..]

echo mt_rand(1,50).' ';
Ah, die punt wist ik niet. Erg bedankt!
Tijnzondag 16 december 2012 @ 15:36
Je had ook nog een keer "echo ' ';" kunnen doen.
Berend.zondag 16 december 2012 @ 16:46
quote:
2s.gif Op zondag 16 december 2012 15:36 schreef Tijn het volgende:
Je had ook nog een keer "echo ' ';" kunnen doen.
Dan weet ik dat voor de volgende keer, dankje. Ik heb een volgend probleem bij opgave 12:

1BzWx

Hij geeft alleen maar 11 neer, ik heb geen idee waarom?
Juicyhilzondag 16 december 2012 @ 16:49
Omdat je $i iedere keer in het loopje overschijft
Zet die echo in de while en het moet goed gaan.
Berend.zondag 16 december 2012 @ 16:57
quote:
0s.gif Op zondag 16 december 2012 16:49 schreef Juicyhil het volgende:
Omdat je $i iedere keer in het loopje overschijft
Zet die echo in de while en het moet goed gaan.
Nu doet die het nog steeds niet volledig.

1BAa0
Arceezondag 16 december 2012 @ 16:59
quote:
0s.gif Op zondag 16 december 2012 16:57 schreef Berend. het volgende:

[..]

Nu doet die het nog steeds niet volledig.

[ afbeelding ]
$i=1 moet vóór het begin van de while staan, anders zet je 'm steeds weer op 1.

1
2
3
4
<?php
$i
=1;
while (
$i<=10) {
?>

Ook <= ipv >= dus.
Juicyhilzondag 16 december 2012 @ 16:59
En je weet zeker dat $i groter of gelijk is aan 10?
Berend.zondag 16 december 2012 @ 17:03
quote:
0s.gif Op zondag 16 december 2012 16:59 schreef Arcee het volgende:

[..]

$i=1 moet vóór het begin van de while staan, anders zet je 'm steeds weer op 1.
[ code verwijderd ]

Ook <= ipv >= dus.
Dankjewel, nu werkt die! :)
Berend.zondag 16 december 2012 @ 17:03
quote:
0s.gif Op zondag 16 december 2012 16:59 schreef Juicyhil het volgende:
En je weet zeker dat $i groter of gelijk is aan 10?
Was eventjes als test.
Devolutionzondag 16 december 2012 @ 17:15
PHP werkt op een logische wijze. Als je script andere dingen laat zien dan je verwacht, kun je het beste goed nadenken wat je script nou eigenlijk precies doet. Je kunt bijvoorbeeld stap voor stap kijken wat de waarde van elke variabele is. Op deze manier kun je ook zien waar je de fout in bent gegaan in je script:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
for ($i 1$i 10$i++){
    
$tafel 5;
    echo 
$i 'x' $tafel '= ' . . $i*$tafel '<br>';
}

while (
$i <= 10){
    
$i 1;
    
$i $i 1;
    
$tafel 5;
}

echo 
$i 'x' $tafel '=' $i*$tafel '<br>';
?>

De eerste ronde wordt er dit gedaan:
• $i krijgt de waarde 1
• $tafel krijgt de waarde 5
• echo 1 x 5 = 5

Tweede ronde:
• $i krijgt de waarde 2
• $tafel krijgt de waarde 5
• echo 2 x 5 = 10

Etc.

Negende ronde:
• $i krijgt de waarde 9
• $tafel krijgt de waarde 5
• echo 9 x 5 = 45

De volgende ronde zou $i gelijk zijn aan 10 waardoor de for-loop eindigt. $i heeft nu dus de waarde 9

Vervolgens komt de while-loop:
• $i krijgt de waarde 1
• $i krijgt de waarde 1+1 = 2
• $tafel krijgt de waarde 5

Tweede ronde:
• $i krijgt de waarde 1
• $i krijgt de waarde 1+1 = 2
• $tafel krijgt de waarde 5

Aangezien de waarde van $i elke ronde wordt teruggezet naar de waarde 1 blijf je eeuwig in de while-loop hangen. Stel je zou die loop uiteindelijk op de een of andere manier breken, dan gaat ie verder met het script (waarbij $i de laatste toegewezen waarde krijgt, wat 2 is):

• Echo 2x5=10

En that's it. In totaal krijg je dus dit te zien:
[quote]
1x5=5
2x5=10
3x5=15
4x5=20
5x5=25
6x5=30
7x5=35
8x5=40
9x5=45 (..Nu stop je de while-loop geforceerd)
2x5=10
boem-dikkiezondag 16 december 2012 @ 20:26
quote:
15s.gif Op zondag 16 december 2012 15:03 schreef henrivo het volgende:
Pffff, dat Zend Framework 2 is ook niet de makkelijkste om door te krijgen zeg ;(
Vond Zend wel meevallen, 2 nog niet geprobeerd.
henrivozondag 16 december 2012 @ 20:29
quote:
11s.gif Op zondag 16 december 2012 20:26 schreef boem-dikkie het volgende:

[..]

Vond Zend wel meevallen, 2 nog niet geprobeerd.
Ik heb nooit met ZF1 gewerkt, maar van wat ik gezien heb lijkt het een peuleschil vergeleken met de opvolger. 't Jammere is dat er nog zo weinig goede documentatie/handleidingen beschikbaar zijn, dat zou een stuk schelen denk ik
Pakspulzondag 16 december 2012 @ 20:30
quote:
12s.gif Op zondag 16 december 2012 17:15 schreef Devolution het volgende:
dik lang verhaal
Wat is het nut van $tafel = 5; in een loop te definiëren? Je zet hem toch maar 1 keer, dus kun je dat beter boven in de code doen.
YazooWzondag 16 december 2012 @ 20:43
Heeft iemand iets van leesvoer/tips omtrent het verwerken van grote hoeveelheden data (miljoenen records) in een mysql database + php applicatie? Wil binnenkort een projectje gaan starten maar heb nog totaal geen ervaring met grote hoeveelheden data. Alle records bevatten dezelfde kolommen maar ik heb zo'n vermoede dat als ik ze allemaal in 1 tabel zet dit niet helemaal goed zal zijn voor de performance.
Berend.zondag 16 december 2012 @ 21:13
Mijn laatste vraag voor vandaag:
1BFQC

Waarom geeft die hier een error? (Hier = laatste 4 regels)


quote:
0s.gif Op zondag 16 december 2012 20:30 schreef Pakspul het volgende:

[..]

Wat is het nut van $tafel = 5; in een loop te definiëren? Je zet hem toch maar 1 keer, dus kun je dat beter boven in de code doen.
Zal het vanaf nu doen, zie hierboven.
Tijnzondag 16 december 2012 @ 21:16
quote:
0s.gif Op zondag 16 december 2012 21:13 schreef Berend. het volgende:
Mijn laatste vraag voor vandaag:
[ afbeelding ]

Waarom geeft die hier een error? (Hier = laatste 4 regels)
Omdat je je PHP-tag niet afsluit?
Berend.zondag 16 december 2012 @ 21:17
quote:
2s.gif Op zondag 16 december 2012 21:16 schreef Tijn het volgende:

[..]

Omdat je je PHP-tag niet afsluit?
Hey, die was ineens weg. Dankjewel voor de hulp! :)
Sitethiefmaandag 17 december 2012 @ 11:26
quote:
0s.gif Op zondag 16 december 2012 21:17 schreef Berend. het volgende:

[..]

Hey, die was ineens weg. Dankjewel voor de hulp! :)
Hey berend, jij hier :D.
Intrepiditymaandag 17 december 2012 @ 11:36
quote:
0s.gif Op zondag 16 december 2012 20:43 schreef YazooW het volgende:
Heeft iemand iets van leesvoer/tips omtrent het verwerken van grote hoeveelheden data (miljoenen records) in een mysql database + php applicatie? Wil binnenkort een projectje gaan starten maar heb nog totaal geen ervaring met grote hoeveelheden data. Alle records bevatten dezelfde kolommen maar ik heb zo'n vermoede dat als ik ze allemaal in 1 tabel zet dit niet helemaal goed zal zijn voor de performance.
Voor het MySQL gedeelte van het verhaal: zoek eens op sharding :) Daarmee maak je intern een aantal subtabellen aan (niet zichtbaar in the end) die allemaal een deel van de data bevatten. Soort partities binnen je tabel.
Juicyhilmaandag 17 december 2012 @ 11:36
quote:
0s.gif Op zondag 16 december 2012 20:43 schreef YazooW het volgende:
Heeft iemand iets van leesvoer/tips omtrent het verwerken van grote hoeveelheden data (miljoenen records) in een mysql database + php applicatie? Wil binnenkort een projectje gaan starten maar heb nog totaal geen ervaring met grote hoeveelheden data. Alle records bevatten dezelfde kolommen maar ik heb zo'n vermoede dat als ik ze allemaal in 1 tabel zet dit niet helemaal goed zal zijn voor de performance.
Dat maakt niets uit. Als je miljoenen records in een tabel hebt, zal het niet veel uitmaken.

Maar misschien eerst eens kijken of je het moet normaliseren. Of misschien moet je zaken indexeren. Valt genoeg over te lezen hoor.
Sitethiefmaandag 17 december 2012 @ 11:42
quote:
0s.gif Op zondag 16 december 2012 20:43 schreef YazooW het volgende:
Heeft iemand iets van leesvoer/tips omtrent het verwerken van grote hoeveelheden data (miljoenen records) in een mysql database + php applicatie? Wil binnenkort een projectje gaan starten maar heb nog totaal geen ervaring met grote hoeveelheden data. Alle records bevatten dezelfde kolommen maar ik heb zo'n vermoede dat als ik ze allemaal in 1 tabel zet dit niet helemaal goed zal zijn voor de performance.
Afhankelijk van wat voor data het is en wat je er mee wilt kun je eventueel een NoSQL oplossing overwegen.
GlowMousemaandag 17 december 2012 @ 11:46
ik lees hier een hoop verkeerde adviezen
Scorpiemaandag 17 december 2012 @ 11:51
quote:
14s.gif Op maandag 17 december 2012 11:46 schreef GlowMouse het volgende:
ik lees hier een hoop verkeerde adviezen
Er is dan ook weinig te zeggen zonder wat meer details.
GlowMousemaandag 17 december 2012 @ 11:52
klopt
YazooWmaandag 17 december 2012 @ 13:20
Bedankt voor de adviezen so far, ik was al bekend met normalisatie, sharding en NoSQL zijn helemaal nieuw voor mij.

Ik zal wat ik uiteindelijk wil wat specifieker beschrijven:
Tot zo ver heb ik wat kleine projectjes gedaan met php/mysql om zodoende het hele php/mysql gebeuren onder de knie te krijgen. Nu wil ik met een groter complexer project beginnen. Ik wil een systeem bouwen waarin ik alle aardbevingen opneem, dus ook die van 50 jaar geleden, deze data is publiekelijk toegankelijk en ziet er als volgt uit:

1
2
3
4
5
6
7
8
9
10
Src,Eqid,Version,Datetime,Lat,Lon,Magnitude,Depth,NST,Region
nc,71906386,1,"Monday, December 17, 2012 11:51:14 UTC",36.6482,-121.1030,1.8,10.70,23,"Central California"
ak,10620604,1,"Monday, December 17, 2012 11:40:46 UTC",60.2876,-152.1041,1.2,44.20, 5,"Southern Alaska"
nc,71906381,1,"Monday, December 17, 2012 11:33:12 UTC",38.8102,-122.8112,1.9,2.00,33,"Northern California"
ci,15265033,0,"Monday, December 17, 2012 11:28:36 UTC",33.0250,-116.4303,1.5,5.00,59,"Southern California"
ci,15265017,0,"Monday, December 17, 2012 11:24:42 UTC",32.6115,-116.3007,1.7,9.00,17,"Southern California"
ak,10620590,1,"Monday, December 17, 2012 11:04:16 UTC",61.2369,-149.8068,2.7,14.50,41,"Southern Alaska"
nc,71906366,0,"Monday, December 17, 2012 10:50:50 UTC",38.7558,-122.7167,1.4,1.60,14,"Northern California"
ak,10620582,1,"Monday, December 17, 2012 10:50:09 UTC",62.4166,-151.0149,2.9,19.90,37,"Central Alaska"
nc,71906361,0,"Monday, December 17, 2012 10:35:34 UTC",38.8305,-122.8055,0.8,1.30,13,"Northern California"

Vervolgens wil ik op deze data queries gaan uitvoeren, bijvoorbeeld: toon alle aardbevingen binnen gps coördinaat x en gps coördinaat y tussen 1960 en 1970. Mijn vraag is nu dus hoe ik dit het beste kan aanpakken, met welke technieken/methoden behaal ik de beste performance?
Rockfiremaandag 17 december 2012 @ 13:23
Als je met coördinaten wilt gaan werken kun je beter gebruik maken van postgres in combinatie met postGIS. Daar zitten hele handige functies in zodat je makkelijk binnen bepaalde coördinaten kunt zoeken.
YazooWmaandag 17 december 2012 @ 13:29
PostgreSQL was ik al tegen gekomen, zou kwa performance ook sneller moeten zijn dan MySQL bij databases met heel veel records, althans dat heb ik er over gelezen. PostGIS is nieuw voor mij maar wat ik er nu zo even snel over heb gelezen ziet dat er wel zeker interessant uit voor mij, thanks!
rekenwondermaandag 17 december 2012 @ 15:00
Op zich ondersteunt MySQL ook spatial geo shizzle.

http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html
Berend.donderdag 20 december 2012 @ 21:39
quote:
0s.gif Op maandag 17 december 2012 11:26 schreef Sitethief het volgende:

[..]

Hey berend, jij hier :D.
Ja, moest wat vragen! :P
Denniswebdinsdag 25 december 2012 @ 15:52
Okay, ik snap eventjes iets niet.

Ik sla mijn data op als: 25-12-2012.

Ik wil graag een lijstje met alle data in de database, beginnende bij vandaag, dan gisteren, dan eergisteren. Dus:

25-12-2012
24-12-2012
23-12-2012

Dat doe ik nu met:

1 select DISTINCT date from play order by date DESC

Alleen vergeet ik even dat MySQL niet zelfstandig na kan denken en ik niet specifiek genoeg ben.
Dus krijg ik:

31-10-2012
30-10-2012
29-10-2012
28-10-2012
27-10-2012
26-10-2012
25-12-2012

Wat moet de query zijn om niet op het voorste getal te sorteren, maar op de datum?
mstxdinsdag 25 december 2012 @ 16:03
De datum in een DATE-veld opslaan...
Denniswebdinsdag 25 december 2012 @ 16:08
quote:
1s.gif Op dinsdag 25 december 2012 16:03 schreef mstx het volgende:
De datum in een DATE-veld opslaan...
Inderdaad. Ik heb ooit als newbie alles op VARCHAR gezet. Dat was inderdaad niet heel slim. Heb alles opnieuw ingericht en ook maar meteen een AUTO_increment id toegevoegd.

Nu werkt ie dus prima met: "select DISTINCT date from play order by id DESC"

Thanks!
boem-dikkiedinsdag 25 december 2012 @ 22:30
Wat heeft een auto increment op een veld met ID te maken met je datum? :')
Qunixwoensdag 26 december 2012 @ 02:26
quote:
2s.gif Op woensdag 21 november 2012 12:33 schreef Maringo het volgende:

[..]

Ik ben er momenteel mee aan het werk. Maar ik zie nog niet echt de meerwaarde ervan in.
Met Laravel 4?

Ik zie best veel meerwaarde dan bijvoorbeeld CakePHP of CodeIgnitor.
rekenwonderwoensdag 26 december 2012 @ 12:59
quote:
14s.gif Op woensdag 26 december 2012 02:26 schreef Qunix het volgende:

[..]

Met Laravel 4?

Ik zie best veel meerwaarde dan bijvoorbeeld CakePHP of CodeIgnitor.
Like?
Maringowoensdag 26 december 2012 @ 13:56
quote:
14s.gif Op woensdag 26 december 2012 02:26 schreef Qunix het volgende:

[..]

Met Laravel 4?

Ik zie best veel meerwaarde dan bijvoorbeeld CakePHP of CodeIgnitor.
Ik ben er ondertussen ook al wat langer mee bezig en best veel meerwaarde niet. Het heeft wat pros en cons tegenover Cake, maar het is niet zo dat Laravel 4 echt onwijs veel beter is dan Cake.
Qunixwoensdag 26 december 2012 @ 15:21
quote:
0s.gif Op woensdag 26 december 2012 12:59 schreef rekenwonder het volgende:

[..]

Like?
quote:
2s.gif Op woensdag 26 december 2012 13:56 schreef Maringo het volgende:

[..]

Ik ben er ondertussen ook al wat langer mee bezig en best veel meerwaarde niet. Het heeft wat pros en cons tegenover Cake, maar het is niet zo dat Laravel 4 echt onwijs veel beter is dan Cake.
Ik heb gespeeld met CodeIgnitor en Cake 1.x en 2.0 en zag er leuk uit. Nu ben ik aan het spelen ben met Laravel 4 en ik vind dat er wel wat dingen beter zijn. Met name de code van de core. Ze zijn nu bezig met de documentatie en vergeet niet dat Laravel 4 nog alpha is.

Paar plus punten hoe ik het ervaar:

Het testen gaat makkelijker. Laravel 4 zelf bevat ook enorm veel test scripts.
Ze gebruiken composer, wat dus makkelijk je laravel versie te updaten is.
Omdat ze composer gebruiken, gebruikt Laravel ook extensies van andere frameworks zoals Symphony. Voordeel daarvan is dat het wiel niet nog een keer is uitgevonden, en ze spullen gebruiken wat echt goed getest is.
Routes in Laravel 3 was OK, maar in Laravel 4 is het beter. Ze hebben support voor REST resources.
De database handler (Eloquent) is fijn (inclusief de migrations).
ORM.
Module structuur zit goed in elkaar (bundles).
Blade template engine (inc caching) is erg fijn.

Ik heb met Laravel 3 wat gespeeld en ben nu met Laravel 4 aan de gang, dus het zou kunnen zijn dat jullie Laravel 1 of Laravel 2 hebben gezien.
Juicyhildonderdag 27 december 2012 @ 21:13
ja ik ga nu ook ff spelen met laravel, wel nieuwsgierig geworden :@
Qunixdonderdag 27 december 2012 @ 23:50
quote:
0s.gif Op donderdag 27 december 2012 21:13 schreef Juicyhil het volgende:
ja ik ga nu ook ff spelen met laravel, wel nieuwsgierig geworden :@
Dit moet je hebben: https://github.com/illuminate/app en dan met composer de boel installeren.

Boze_Appelvrijdag 28 december 2012 @ 00:20
quote:
0s.gif Op dinsdag 25 december 2012 16:08 schreef Dennisweb het volgende:

[..]

Inderdaad. Ik heb ooit als newbie alles op VARCHAR gezet. Dat was inderdaad niet heel slim. Heb alles opnieuw ingericht en ook maar meteen een AUTO_increment id toegevoegd.

Nu werkt ie dus prima met: "select DISTINCT date from play order by id DESC"

Thanks!
Waarom distinct selecteer je de datum, maar sorteer je op id? Gewoon op 'date' sorteren. Bovendien het liefst niet 'date' gebruiken als naam. Officieel is het toegestaan vanuit legacy-redenen, maar als het even kan gewoon niet doen. Als je het toch opnieuw aan het doen ben kan je het beter goed doen.
Denniswebvrijdag 28 december 2012 @ 00:34
quote:
7s.gif Op vrijdag 28 december 2012 00:20 schreef Boze_Appel het volgende:

[..]

Waarom distinct selecteer je de datum, maar sorteer je op id? Gewoon op 'date' sorteren. Bovendien het liefst niet 'date' gebruiken als naam. Officieel is het toegestaan vanuit legacy-redenen, maar als het even kan gewoon niet doen. Als je het toch opnieuw aan het doen ben kan je het beter goed doen.
Geen idee, maar het werkt nu en ik durf er niet meer aan te zitten. :D

http://aardbei.xsnl.net/hour.php?date=28-12-2012
VuilnisMetaalzaterdag 29 december 2012 @ 17:33
Zou iemand mij kunnen helpen met het schrijven/implementeren van een stuk code in PHPBB3, waarmee YouTube-links automatisch worden ge-embed?

Ik heb dit topic gevonden, maar de genoemde code die aangepast moet worden bestaat niet.

Ik ben er al behoorlijk lang mee bezig, maar de oplossing kan ik maar niet vinden! ;(
Farenjizaterdag 29 december 2012 @ 18:39
Dat topic is uit 2006, phpBB zal in die tijd wel wat veranderd zijn...
mstxmaandag 31 december 2012 @ 11:44
Dat moment wanneer je iemand anders z'n (crap) code eindelijk hebt ontcijferd. _O_