abonnement Unibet Coolblue
pi_144547083


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!
pi_144738323
Wat is het nut ervan om iets static te definieren?

Als ik het doe:

1
2
3
4
5
6
7
class voorbeeld {
    public function lala(){
        echo "Hoi"
    }
}

 voorbeeld::lala();

Waar is die static bij function dan voor nodig :?

En op een andere manier:

1
2
3
4
5
6
7
class voorbeeld {
    static function lala(){
        echo "Hoi"
    }
}
   $voorbeeld = new voorbeeld;
   $voorbeeld->lala();
Wat voor zin heeft static dan nog?
pi_144739767
quote:
1s.gif Op zaterdag 20 september 2014 23:25 schreef Robuustheid het volgende:
Wat is het nut ervan om iets static te definieren?

Als ik het doe:
[ code verwijderd ]


Waar is die static bij function dan voor nodig :?

En op een andere manier:
[ code verwijderd ]

Wat voor zin heeft static dan nog?

Een static-methode is handig als de methode niet iets met de klasse zelf hoeft te doen.

Stel dat je bijvoorbeeld een Math-klasse hebt. Is het niet een beetje vreemd om een object Math te hebben om dan pas methodes te kunnen gebruiken voor abs etc.? Dan kun je beter al die Math-methodes static maken.

[ Bericht 2% gewijzigd door #ANONIEM op 21-09-2014 00:08:43 ]
pi_144739830
En als je er niet-static functie aanroept alsof 'ie wel static is, dan kun je gekke dingen krijgen. Bijv. dat autoload soms niet werkt en heel raar doet, zoals ik in het vorige topic leerde.
pi_144739951
Overigens is het discutabel of je classes met enkel static methodes wel in een klasse moet stoppen of gewoon in een namespace.

Maar ja, geen OOP. :P
pi_144740160
quote:
1s.gif Op zaterdag 20 september 2014 23:25 schreef Robuustheid het volgende:
Wat is het nut ervan om iets static te definieren?

Als ik het doe:
[ code verwijderd ]


Waar is die static bij function dan voor nodig :?

En op een andere manier:
[ code verwijderd ]

Wat voor zin heeft static dan nog?

Het eerste geeft een strict warning in PHP. In de meeste OO talen kan het niet eens.
Desalniettemin gebruik je het bijvoorbeeld voor utility classes, singleton patterns, enzovoort.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_144740199
quote:
1s.gif Op zondag 21 september 2014 00:15 schreef robin007bond het volgende:
Overigens is het discutabel of je classes met enkel static methodes wel in een klasse moet stoppen of gewoon in een namespace.

Maar ja, geen OOP. :P
Hoe bedoel je? Met andere manieren ben ik niet mee bekend.
pi_144741040
quote:
0s.gif Op zondag 21 september 2014 00:24 schreef Robuustheid het volgende:

[..]

Hoe bedoel je? Met andere manieren ben ik niet mee bekend.
Gewoon procedureel. :)
  zondag 21 september 2014 @ 10:07:46 #11
187069 slacker_nl
Sicko pur sang
pi_144746047
quote:
0s.gif Op zondag 21 september 2014 00:08 schreef robin007bond het volgende:

[..]

Een static-methode is handig als de methode niet iets met de klasse zelf hoeft te doen.

Stel dat je bijvoorbeeld een Math-klasse hebt. Is het niet een beetje vreemd om een object Math te hebben om dan pas methodes te kunnen gebruiken voor abs etc.? Dan kun je beter al die Math-methodes static maken.
Waarom zou je het dan uberhaupt OO maken?
In theory there is no difference between theory and practice. In practice there is.
pi_144746075
quote:
1s.gif Op zondag 21 september 2014 10:07 schreef slacker_nl het volgende:

[..]

Waarom zou je het dan uberhaupt OO maken?
Even mezelf quoten:
quote:
1s.gif Op zondag 21 september 2014 00:15 schreef robin007bond het volgende:
Overigens is het discutabel of je classes met enkel static methodes wel in een klasse moet stoppen of gewoon in een namespace.

Maar ja, geen OOP. :P
Wellicht dat consistentie een reden is.
pi_144746408
Bedankt voor jullie bijdragen. Het is dus geen valide code, maar wordt desondanks wel uitgevoerd.

Als ik error_reporting(E_ALL | E_STRICT); doe, verschijnt er nog steeds geen waarschuwing als ik bovenstaand code uitvoer?
pi_144746607
quote:
0s.gif Op zondag 21 september 2014 10:43 schreef Robuustheid het volgende:
Bedankt voor jullie bijdragen. Het is dus geen valide code, maar wordt desondanks wel uitgevoerd.

Als ik error_reporting(E_ALL | E_STRICT); doe, verschijnt er nog steeds geen waarschuwing als ik bovenstaand code uitvoer?
Probeer het hier maar: http://sandbox.onlinephpfunctions.com/

met deze code:

1
2
3
4
5
6
7
8
9
10
11
<?php
error_reporting
(E_ALL E_STRICT);

class 
voorbeeld {
    public function 
lala() {
        echo 
"Hoi";
    }
}

 
voorbeeld::lala();
?>

Krijg je bij elke versie met uitzondering van 4.4.9 een strict warning.
Als je de E_STRICT en public eruit sloopt en het op 4.4.9 uitvoert, dan krijg je geen melding.

De reden dat je absoluut geen non-static methods als static wilt gaan aanroepen, is dat een non-static method toegang heeft tot de state van een instance. Dan kun je dus problemen krijgen. Probeer dit maar eens uit te voeren:

1
2
3
4
5
6
7
8
9
10
11
<?php
class voorbeeld {
    private 
$a 3;

    public function 
lala($b) {
        echo 
$this->a*$b;
    }
}

 
voorbeeld::lala(3);
?>
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_144746958
Static heeft volgens mij ook compile en geheugen technisch voordelen, ik vermoed dat als je iets static definieert deze nooit 2 keer in geheugen zal komen.
🕰️₿🕰️₿🕰️₿🕰️₿🕰️₿🕰️ TikTok next Block
pi_144748447
quote:
0s.gif Op zondag 21 september 2014 11:19 schreef raptorix het volgende:
Static heeft volgens mij ook compile en geheugen technisch voordelen, ik vermoed dat als je iets static definieert deze nooit 2 keer in geheugen zal komen.
Dat is allemaal erg marginaal. Natuurlijk, als je elke keer instances moet gaan maken in je code om een of andere utility method aan te roepen, dan is dat niet heel efficiënt, maar dat zijn niet de zaken die doorgaans geheugenproblemen veroorzaken.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_144785971
Ik heb een soort van download server gemaakt. PHP script serveert de bestanden. Bestanden zijn tussen de 2GB en 5GB.

Echter stopt de download automatisch na een paar seconde.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$mm_type
="application/octet-stream";
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: " $mm_type);
header("Content-Length: " .(string)(filesize($path)) );
header('Content-Disposition: attachment; filename="'.basename($path).'"');
header("Content-Transfer-Encoding: binary\n");
readfile($path); // outputs the content of the file
exit();
?>
  maandag 22 september 2014 @ 13:24:43 #18
91039 mstx
2x1/2 = 1/2 x 1/2
pi_144786397
quote:
0s.gif Op maandag 22 september 2014 13:09 schreef xaban06 het volgende:
Ik heb een soort van download server gemaakt. PHP script serveert de bestanden. Bestanden zijn tussen de 2GB en 5GB.

Echter stopt de download automatisch na een paar seconde.
[ code verwijderd ]

Ok man ^O^
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
pi_144788962
quote:
0s.gif Op maandag 22 september 2014 13:09 schreef xaban06 het volgende:
Ik heb een soort van download server gemaakt. PHP script serveert de bestanden. Bestanden zijn tussen de 2GB en 5GB.

Echter stopt de download automatisch na een paar seconde.
[ code verwijderd ]

Je kunt readfile beter niet voor dit soort situaties gebruiken. De gehele file wordt namelijk ingeladen en daarna pas verzonden. Je zult waarschijnlijk al eerder een ‘out of memory’ krijgen.

Een betere oplossing is om het bestand in kleinere blokken te lezen en deze te verzenden: (niet getest)
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$file 
fopen"my-file.raw""rb" );

while ( !
feof($file) ) {
    
$chunk fread$file1024*16 );
    echo 
$chunk;
    
ob_flush();
    
flush();
}

fclose$file );
?>
When the student is ready, the teacher will appear.
When the student is truly ready, the teacher will disappear.
pi_144799392
quote:
7s.gif Op maandag 22 september 2014 14:52 schreef Aether het volgende:

[..]

Je kunt readfile beter niet voor dit soort situaties gebruiken. De gehele file wordt namelijk ingeladen en daarna pas verzonden. Je zult waarschijnlijk al eerder een ‘out of memory’ krijgen.

Een betere oplossing is om het bestand in kleinere blokken te lezen en deze te verzenden: (niet getest)
[ code verwijderd ]

http://php.net/manual/en/function.readfile.php
quote:
readfile() will not present any memory issues, even when sending large files, on its own. If you encounter an out of memory error ensure that output buffering is off with ob_get_level().
Dit is denk ik een betere optie:
http://stackoverflow.com/(...)rve-a-file-using-php
In theory there is no difference between theory and practice. In practice there is.
pi_144814841
quote:
0s.gif Op zondag 21 september 2014 12:37 schreef Monolith het volgende:

[..]

Dat is allemaal erg marginaal. Natuurlijk, als je elke keer instances moet gaan maken in je code om een of andere utility method aan te roepen, dan is dat niet heel efficiënt, maar dat zijn niet de zaken die doorgaans geheugenproblemen veroorzaken.
True, maar het is meestal ook best practice qua onderhoudbaarheid, met name voor collega developers die niet altijd even bekend zijn met een code base.
🕰️₿🕰️₿🕰️₿🕰️₿🕰️₿🕰️ TikTok next Block
pi_144814978
quote:
0s.gif Op dinsdag 23 september 2014 09:53 schreef raptorix het volgende:

[..]

True, maar het is meestal ook best practice qua onderhoudbaarheid, met name voor collega developers die niet altijd even bekend zijn met een code base.
Juist om wat ik al eerder aangaf. Als je static calls gaat doen naar non-static methods dan 'mag' dat in PHP. Bizarre implementatiebeslissing, maar daar staan de PHP devs wel bekend om. :P
Wat je dan inderdaad gaat krijgen is dat je wellicht in je project op bepaalde plekken static calls doet naar een method die niet als static is gedeclareerd. Vervolgens moet een andere developer de oorspronkelijke class aanpassen en doet dat door een instance variabele te gebruiken in die methode of een call naar een andere non-static method.

Dat lijkt wellicht allemaal niet zo erg bij kleinschalige projectjes waar mensen individueel aan werken, maar bij grotere projecten wordt dat een enorm probleem. Zeker omdat PHP voor dit soort dingen ook geen compile time errors / warnings heeft. Het wordt immers niet gecompiled. Dus dan moet je maar hopen dat dit soort zaken heel erg goed zijn afgevangen met unit tests.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  dinsdag 23 september 2014 @ 11:10:50 #24
12221 Tijn
Powered by MS Paint
pi_144816597
quote:
0s.gif Op dinsdag 23 september 2014 10:00 schreef Monolith het volgende:

[..]

Juist om wat ik al eerder aangaf. Als je static calls gaat doen naar non-static methods dan 'mag' dat in PHP.
Die warnings stuurt PHP niet voor niks, he.
pi_144817992
quote:
2s.gif Op dinsdag 23 september 2014 11:10 schreef Tijn het volgende:

[..]

Die warnings stuurt PHP niet voor niks, he.
Dat weet ik, maar het zou überhaupt niet toegestaan mogen zijn. Het zou moeten resulteren in een fatal error.
Nu werkt het nog ook, zolang je geen non-static handelingen uitvoert in de methode. Dat is vragen om toekomstige bugs.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  dinsdag 23 september 2014 @ 12:00:21 #26
12221 Tijn
Powered by MS Paint
pi_144818136
quote:
0s.gif Op dinsdag 23 september 2014 11:54 schreef Monolith het volgende:

[..]

Dat weet ik, maar het zou überhaupt niet toegestaan mogen zijn. Het zou moeten resulteren in een fatal error.
Mja, het probleem is dan (zoals zo vaak met PHP) dat een hoop oude applicaties instorten :+
pi_144818722
quote:
2s.gif Op dinsdag 23 september 2014 12:00 schreef Tijn het volgende:

[..]

Mja, het probleem is dan (zoals zo vaak met PHP) dat een hoop oude applicaties instorten :+
Pech. Dat is meer werk voor ons. :7
pi_144818726
quote:
2s.gif Op dinsdag 23 september 2014 12:00 schreef Tijn het volgende:

[..]

Mja, het probleem is dan (zoals zo vaak met PHP) dat een hoop oude applicaties instorten :+
Ja ik weet dat backwards compatibility de reden is, maar je moet ook ergens een keer een streep trekken. Het probleem is natuurlijk dat ze het OO aspect van de taal later hebben geïntroduceerd en pas redelijk volledig vanaf PHP 5. PHP 4 is weliswaar 'OO', maar miste nog basale zaken als access modifiers.
Daarbij is backwards compatibility wel leuk, maar bij enige doorontwikkeling loop je weer tegen de issues aan die ik eerder al beschreeft. Het enige nut van die backwards compatibility is dus eigenlijk het neerzetten van een applicatie die je nooit meer wilt aanraken.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_144820728
Het zou wat mij betreft helemaal niet gek zijn als ze eens flink gaan snijden/refactoren in de functienamen. Alles wat je weg wilt gooien gewoon per direct deprecaten en over 1 of 2 versies weggooien. Eventueel de laatste versie vóór de grote schoonmaak LTS maken voor de compatibility.
pi_144825612
quote:
14s.gif Op dinsdag 23 september 2014 13:28 schreef KomtTijd... het volgende:
Het zou wat mij betreft helemaal niet gek zijn als ze eens flink gaan snijden/refactoren in de functienamen. Alles wat je weg wilt gooien gewoon per direct deprecaten en over 1 of 2 versies weggooien. Eventueel de laatste versie vóór de grote schoonmaak LTS maken voor de compatibility.
Wat dat betreft was PHP Reboot wel een aardig initiatief. Jammer dat het nooit is doorgezet.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_144854773
Symfony2'ers:

Ik heb een entity ("Ticket") met een one-to-many relation naar de entity Comment. Kortom een ticket kan meerdere comments hebben. Als ik een ticket opvraag worden de comments hierbij weergegeven.

Een comment kan 'deleted' zijn, dan wil ik deze niet meer weergeven bij de ticket waar hij aan gekoppeld is. Ik wil 'm echter ook niet removen voor het geval hij weer teruggeplaatst wordt.

Hoe krijg ik dat voor elkaar? :{ Ik had mijn hoop gevestigd op het toevoegen van doctrine criteria aan de getComments() functie van de Ticket entity, maar dat helpt niet.
pi_144855450
quote:
14s.gif Op woensdag 24 september 2014 14:43 schreef KomtTijd... het volgende:
Symfony2'ers:

Ik heb een entity ("Ticket") met een one-to-many relation naar de entity Comment. Kortom een ticket kan meerdere comments hebben. Als ik een ticket opvraag worden de comments hierbij weergegeven.

Een comment kan 'deleted' zijn, dan wil ik deze niet meer weergeven bij de ticket waar hij aan gekoppeld is. Ik wil 'm echter ook niet removen voor het geval hij weer teruggeplaatst wordt.

Hoe krijg ik dat voor elkaar? :{ Ik had mijn hoop gevestigd op het toevoegen van doctrine criteria aan de getComments() functie van de Ticket entity, maar dat helpt niet.
Op zo'n manier? http://doctrine-orm.readt(...)iltering-collections
------___------ 53
----.(___).---- 42
---(o\_!_/o)---
pi_144855604
Had gehoopt zoiets te kunnen doen ja
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
#Ticket entity
    
public function getComments()
    {
        
$criteria Criteria::create()
            ->
where(Criteria::expr()->eq("deleted"false));
        return 
$this->comments->matching($criteria);
    }
    public function 
getAllComments()
    {
        return 
$this->comments;
    }
?>

maar als ik in de controller de ticket aanroep, wordt die getComments functie helemaal niet aangeroepen.
1
2
3
4
5
<?php
        $ticket 
$this->getDoctrine()
            ->
getRepository('TicketBundle:Ticket')
            ->
find($id);
?>
pi_144855702
quote:
14s.gif Op woensdag 24 september 2014 15:03 schreef KomtTijd... het volgende:
Had gehoopt zoiets te kunnen doen ja
[ code verwijderd ]

maar als ik in de controller de ticket aanroep, wordt die getComments functie helemaal niet aangeroepen.
[ code verwijderd ]

Ik ken Symphony en Doctrine niet genoeg om je daar antwoord op te kunnen geven, maar dit soort dingen kun je vaak het best even debuggen middels een fatsoenlijke IDE en in het geval van PHP iets van Xdebug ofzo.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_144857339
Krijg nou tieten, als je HTML aanroept ipv JSON werkt die criteria wel. Af en toe word ik moe van die FOSRestBundle.

[ Bericht 0% gewijzigd door KomtTijd... op 24-09-2014 16:03:37 ]
  woensdag 24 september 2014 @ 23:59:38 #36
118585 Crutch
Filantroop || Taalzwengel
pi_144879541
quote:
15s.gif Op woensdag 24 september 2014 15:48 schreef KomtTijd... het volgende:
Krijg nou tieten, als je HTML aanroept ipv JSON werkt die criteria wel. Af en toe word ik moe van die FOSRestBundle.
Vage shit.
Met html aanroepen, wat bedoel je daarmee? Vanuit Twig misschien? Want dan wordt de getComments() wel degelijk aangeroepen:
1
2
3
4
5
<?php
{% for comment in ticket.comments %}
// dingen
{% endfor %}
?>


Krijg je überhaupt comments in je JSON terug?
Je moeder is een hamster
pi_144879894
Ja de HTML gaat via een twig template. Maar dat boeit me niet, 't gaat om de JSON. En ja, krijg wel comments terug in de JSON maar gewoon allemaal dus.
  donderdag 25 september 2014 @ 00:15:35 #38
118585 Crutch
Filantroop || Taalzwengel
pi_144880080
quote:
14s.gif Op donderdag 25 september 2014 00:09 schreef KomtTijd... het volgende:
Ja de HTML gaat via een twig template. Maar dat boeit me niet, 't gaat om de JSON. En ja, krijg wel comments terug in de JSON maar gewoon allemaal dus.
Dan zou ik gewoon zelf een foreach in getComments doen. Is waarschijnlijk nog sneller dan die Criteria.
Je moeder is een hamster
pi_144880187
quote:
14s.gif Op donderdag 25 september 2014 00:09 schreef KomtTijd... het volgende:
Ja de HTML gaat via een twig template. Maar dat boeit me niet, 't gaat om de JSON. En ja, krijg wel comments terug in de JSON maar gewoon allemaal dus.
Zoals ik het zie gebruikt Twig een concept analoog aan JavaBeans. D.w.z. als je ticket.comments gebruikt wordt eigenlijk getComments aangeroepen. Is het bij de JSON dan niet zo dat er rechtstreeks een comments field wordt gepakt ipv dat de getComments methode wordt aangeroepen?
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  donderdag 25 september 2014 @ 00:21:58 #40
118585 Crutch
Filantroop || Taalzwengel
pi_144880255
quote:
1s.gif Op donderdag 25 september 2014 00:19 schreef Monolith het volgende:

[..]

Zoals ik het zie gebruikt Twig een concept analoog aan JavaBeans. D.w.z. als je ticket.comments gebruikt wordt eigenlijk getComments aangeroepen. Is het bij de JSON dan niet zo dat er rechtstreeks een comments field wordt gepakt ipv dat de getComments methode wordt aangeroepen?
Dan zou je kunnen proberen om $comments protected of private te maken, wellicht dat er dan wordt gekeken naar een getter.
Je moeder is een hamster
pi_144880350
Good thinking. $comments is al protected en had ik ook al private gemaakt bij wijze van test, haalde niets uit.

Maar ik denk wel dat ik het in deze hoek moet zoeken. De JSON wordt geproduceerd door de JSMSerializer bundle en die kun je weer beinvloeden door annotations bij, jawel, de variables zelf. Niet de getter/setter functies.

:O morgen maar eens naar kijken ofzo. Ik lijk wel gek, hier om half 1 's nachts nog over nadenken :')
pi_144880445
1
2
3
4
5
6
7
8
<?php
    
/**
     * @ORM\OneToMany(targetEntity="Comment", mappedBy="ticket", cascade={"persist"})
     * @serializer\Groups({"ticketDetails"})
     * @serializer\Accessor(getter="getComments") <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
     */
    
protected $comments;
?>
there, fixed it. Iets met ballmer peak ofzo. Thnx allemaal!
pi_144880468
Daarom, nogmaals, leer gebruik maken van een debugger. Ik weet dat het in de PHP wereld niet gebruikelijk is, maar het maakt je leven zoveel makkelijker. :P
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_144880572
It's not a bug, it's a feature, mate!

De profiler laat (liet) me keurig zien dat de uitgevoerde queries verschillend zijn, maar waaróm dan, dat mag je meestal zelf uitvinden.
  donderdag 25 september 2014 @ 00:36:41 #45
118585 Crutch
Filantroop || Taalzwengel
pi_144880665
quote:
14s.gif Op donderdag 25 september 2014 00:25 schreef KomtTijd... het volgende:
Good thinking. $comments is al protected en had ik ook al private gemaakt bij wijze van test, haalde niets uit.

Maar ik denk wel dat ik het in deze hoek moet zoeken. De JSON wordt geproduceerd door de JSMSerializer bundle en die kun je weer beinvloeden door annotations bij, jawel, de variables zelf. Niet de getter/setter functies.

:O morgen maar eens naar kijken ofzo. Ik lijk wel gek, hier om half 1 's nachts nog over nadenken :')
Haha, ik wilde nog zeggen, als ze JMS gebruiken, kijk dan even in de docs bij annotations. :')
Je moeder is een hamster
pi_144880729
quote:
14s.gif Op donderdag 25 september 2014 00:32 schreef KomtTijd... het volgende:
It's not a bug, it's a feature, mate!

De profiler laat (liet) me keurig zien dat de uitgevoerde queries verschillend zijn, maar waaróm dan, dat mag je meestal zelf uitvinden.
Dat bedoel ik ook met een debugger. Daarmee loop je stap voor stap door je code.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_144880895
quote:
1s.gif Op donderdag 25 september 2014 00:19 schreef Monolith het volgende:

[..]

Zoals ik het zie gebruikt Twig een concept analoog aan JavaBeans. D.w.z. als je ticket.comments gebruikt wordt eigenlijk getComments aangeroepen. Is het bij de JSON dan niet zo dat er rechtstreeks een comments field wordt gepakt ipv dat de getComments methode wordt aangeroepen?
Twig kijkt eerst of het een public property is, dan of het een public method is, daarna of er een public method get... is, vervolgens of er een public method is... bestaat en tenslotte of er een public method has... bestaat. De eerste die werkt, wordt gebruikt (en dan wordt de rest uiteraard niet meer gecontroleerd).
pi_144880932
quote:
0s.gif Op donderdag 25 september 2014 00:47 schreef Light het volgende:

[..]

Twig kijkt eerst of het een public property is, dan of het een public method is, daarna of er een public method get... is, vervolgens of er een public method is... bestaat en tenslotte of er een public method has... bestaat. De eerste die werkt, wordt gebruikt (en dan wordt de rest uiteraard niet meer gecontroleerd).
Dat verklaart in dezen dan waarom het daar wel werkte. Het field was namelijk protected. ;)

En dit is dus overigens weer een prima voorbeeld van het feit dat encapsulation een belangrijk OO concept is. :P
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_144883407
quote:
0s.gif Op donderdag 25 september 2014 00:29 schreef Monolith het volgende:
Daarom, nogmaals, leer gebruik maken van een debugger. Ik weet dat het in de PHP wereld niet gebruikelijk is, maar het maakt je leven zoveel makkelijker. :P
Xdebug werkt inderdaad prima. :)
pi_144883465
Sowieso vind ik Netbeans een prima IDE voor PHP. Goede autocompletion, je wordt gewaarschuwd als je code niet aan bepaalde conventies doet, je methoden of classes te groot zijn etc.
  donderdag 25 september 2014 @ 09:47:15 #51
305897 remi1986
This MF is infected by madness
pi_144884100
quote:
1s.gif Op donderdag 25 september 2014 09:17 schreef robin007bond het volgende:
Sowieso vind ik Netbeans een prima IDE voor PHP. Goede autocompletion, je wordt gewaarschuwd als je code niet aan bepaalde conventies doet, je methoden of classes te groot zijn etc.
Netbeans draait op JAVA, onnodig zwaar/groot. Ik gebruik al jaren PHPDesigner (iets van 23MB) en heeft alles wat je nodig hebt en is lekker licht.
pi_144884710
quote:
0s.gif Op donderdag 25 september 2014 09:47 schreef remi1986 het volgende:

[..]

Netbeans draait op JAVA, onnodig zwaar/groot. Ik gebruik al jaren PHPDesigner (iets van 23MB) en heeft alles wat je nodig hebt en is lekker licht.
Ik hoor wel goeie verhalen over PHPStorm. Van dezelfde makers (en ik geloof zelfs afgeleid van) IntelliJ, wat in mijn ogen veruit de beste Java IDE is.
Kost je (of bij voorkeur je baas :P ) wel ¤180 euro, maar dan heb je ook wat.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  donderdag 25 september 2014 @ 10:19:20 #53
355592 Djurres
Knowledge, Fuck it.
pi_144884785
Ik gebruik phpstorm, weliswaar een beetje illegaal maar werkt echt fantastisch :)
Tadumtiedum.
pi_144885236
quote:
0s.gif Op donderdag 25 september 2014 10:19 schreef Djurres het volgende:
Ik gebruik phpstorm, weliswaar een beetje illegaal maar werkt echt fantastisch :)
Die schijnt inderdaad ook erg goed te zijn.
pi_144885562
quote:
0s.gif Op donderdag 25 september 2014 09:47 schreef remi1986 het volgende:

[..]

Netbeans draait op JAVA, onnodig zwaar/groot. Ik gebruik al jaren PHPDesigner (iets van 23MB) en heeft alles wat je nodig hebt en is lekker licht.
Heeft PHPDesigner FTP mogelijkheden?
  donderdag 25 september 2014 @ 13:02:20 #56
305897 remi1986
This MF is infected by madness
pi_144889211
quote:
0s.gif Op donderdag 25 september 2014 10:50 schreef Pakspul het volgende:

[..]

Heeft PHPDesigner FTP mogelijkheden?
uiteraard... ook svn, github en al die zooi ...
pi_144889578
quote:
0s.gif Op donderdag 25 september 2014 10:16 schreef Monolith het volgende:

[..]

Ik hoor wel goeie verhalen over PHPStorm. Van dezelfde makers (en ik geloof zelfs afgeleid van) IntelliJ, wat in mijn ogen veruit de beste Java IDE is.
Kost je (of bij voorkeur je baas :P ) wel ¤180 euro, maar dan heb je ook wat.
Een personal license is "maar" 90 euro.

En idd bij voorkeur declareer je die bij je baas ^O^ Ik weet niet meer hoe ik ooit zonder PHPStorm heb gekund.
pi_144889637
quote:
0s.gif Op donderdag 25 september 2014 09:47 schreef remi1986 het volgende:

[..]

Netbeans draait op JAVA, onnodig zwaar/groot. Ik gebruik al jaren PHPDesigner (iets van 23MB) en heeft alles wat je nodig hebt en is lekker licht.
quote:
System Requirements

Windows
:?
  donderdag 25 september 2014 @ 13:17:15 #59
305897 remi1986
This MF is infected by madness
pi_144889661
quote:
5s.gif Op donderdag 25 september 2014 13:16 schreef KomtTijd... het volgende:

[..]

[..]

:?
wat is er?
pi_144889779
Ik snap niet wat je met een PHP-IDE moet die alleen op windows draait.

Maar ik snap ook dat dat misschien een beetje persoonlijk is ;)
  donderdag 25 september 2014 @ 13:31:33 #61
305897 remi1986
This MF is infected by madness
pi_144890177
quote:
14s.gif Op donderdag 25 september 2014 13:20 schreef KomtTijd... het volgende:
Ik snap niet wat je met een PHP-IDE moet die alleen op windows draait.

Maar ik snap ook dat dat misschien een beetje persoonlijk is ;)
naja heel simpel. Ik gebruik alleen Windows. Is wat ik al zei lekker licht en heeft alles wat ik nodig heb.

Als ik op een server wat moet aanpassen kan ik prima uit de voeten met VIM
pi_144890257
Hallo :W

* hier ook even gezellig bij komt
pi_144890389
quote:
0s.gif Op donderdag 25 september 2014 13:31 schreef remi1986 het volgende:

[..]

naja heel simpel. Ik gebruik alleen Windows. Is wat ik al zei lekker licht en heeft alles wat ik nodig heb.

Als ik op een server wat moet aanpassen kan ik prima uit de voeten met VIM
Voor simpel gebruik kun je inderdaad beter zo'n lichtgewicht ding gebruiken.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  donderdag 25 september 2014 @ 17:43:06 #64
355592 Djurres
Knowledge, Fuck it.
pi_144897996
PHPStorm werkt heerlijk met FTP, ik heb nl geen local servertje op men pc omdat ik gewoon online een test-environment heb. Alles wat ik typ gaat direct naar de server toe, en word op mn pc opgeslagen.

Auto-filling werkt ook erg goed, en bij het aanmaken van nieuwe classes e.d worden automatisch benodigde namespaces ingevuld, en als er iets ge-extend moet worden geeft ie dit ook gewoon aan.

Ben wel een noob met php, maar waar voor ik het gebruik is t ideaal :)
Tadumtiedum.
pi_144900352
quote:
14s.gif Op donderdag 25 september 2014 13:14 schreef KomtTijd... het volgende:

[..]

Een personal license is "maar" 90 euro.

En idd bij voorkeur declareer je die bij je baas ^O^ Ik weet niet meer hoe ik ooit zonder PHPStorm heb gekund.
Het verlengen van een personal license is maar iets van 44 euro.

Overigens mag je volgens de licentievoorwaarden zo'n personal license niet declareren.
pi_144900449
Oh, zie het nu ook ja. Naja mijn nederige excuses bij deze.
pi_144900539
quote:
0s.gif Op donderdag 25 september 2014 19:11 schreef Light het volgende:

[..]

Het verlengen van een personal license is maar iets van 44 euro.

Overigens mag je volgens de licentievoorwaarden zo'n personal license niet declareren.
Dat kan nooit rechtsgeldig zijn. Of anders gezegd: al helemaal niet te enforcen.
In theory there is no difference between theory and practice. In practice there is.
pi_144900621
quote:
0s.gif Op donderdag 25 september 2014 19:11 schreef Light het volgende:

[..]

Het verlengen van een personal license is maar iets van 44 euro.

Overigens mag je volgens de licentievoorwaarden zo'n personal license niet declareren.
Oh dat zal dan bij IntelliJ ook wel niet mogen, maar toch doet iedereen bij ons dat. Daar is het bovendien iets van 500 voor de bedrijfslicentie en 240 voor de persoonlijke licentie.
Ze gaan er toch nooit achter komen natuurlijk.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_144903827
quote:
1s.gif Op donderdag 25 september 2014 19:18 schreef Monolith het volgende:

[..]

Oh dat zal dan bij IntelliJ ook wel niet mogen, maar toch doet iedereen bij ons dat. Daar is het bovendien iets van 500 voor de bedrijfslicentie en 240 voor de persoonlijke licentie.
Ze gaan er toch nooit achter komen natuurlijk.
Pittig prijsverschil.
pi_144905682
Los van het prijsverschil was voor mij een personal license sowieso praktischer, die kan ik tenminste thuis gebruiken. En mijn werkgever gaat de licentie toch niet overdragen aan collega's ofzo.
pi_144905876
quote:
14s.gif Op donderdag 25 september 2014 21:30 schreef KomtTijd... het volgende:
Los van het prijsverschil was voor mij een personal license sowieso praktischer, die kan ik tenminste thuis gebruiken. En mijn werkgever gaat de licentie toch niet overdragen aan collega's ofzo.
Het is voor jou altijd gunstiger, want hij is van jou en niet van je werkgever. Als je dus weggaat, dan heb je mooi nog een licentie voor jezelf. :P
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_144912843
quote:
1s.gif Op donderdag 25 september 2014 21:35 schreef Monolith het volgende:

[..]

Het is voor jou altijd gunstiger, want hij is van jou en niet van je werkgever. Als je dus weggaat, dan heb je mooi nog een licentie voor jezelf. :P
:D
pi_144913204
quote:
1s.gif Op donderdag 25 september 2014 19:16 schreef slacker_nl het volgende:

[..]

Dat kan nooit rechtsgeldig zijn. Of anders gezegd: al helemaal niet te enforcen.
Enforcen is wel lastig, da's waar.
pi_144913882
quote:
1s.gif Op donderdag 25 september 2014 21:35 schreef Monolith het volgende:

[..]

Het is voor jou altijd gunstiger, want hij is van jou en niet van je werkgever. Als je dus weggaat, dan heb je mooi nog een licentie voor jezelf. :P
6.gif.
Maar voor de baas is het ook beter dat ik thuis af en toe wat kan doen.
  vrijdag 26 september 2014 @ 01:27:29 #75
118585 Crutch
Filantroop || Taalzwengel
pi_144914045
PHPStorm is tot nu toe de beste IDE.
En inderdaad, ik snap niet wat ik zonder PS heb gekund. :')
Je moeder is een hamster
pi_144914938
quote:
0s.gif Op vrijdag 26 september 2014 00:32 schreef Light het volgende:

[..]

Enforcen is wel lastig, da's waar.
Hoe dan ook vind ik het een lastige licentievoorwaarde. Je kan mensen niet verbieden iets niet door de baas te laten aanschaffen. En al helemaal niet via licentievoorwaarden.

Beetje als zeggen, je mag de software alleen voor goede doelen gebruiken. Madness.
In theory there is no difference between theory and practice. In practice there is.
pi_144917996
quote:
1s.gif Op vrijdag 26 september 2014 06:32 schreef slacker_nl het volgende:

[..]

Hoe dan ook vind ik het een lastige licentievoorwaarde. Je kan mensen niet verbieden iets niet door de baas te laten aanschaffen. En al helemaal niet via licentievoorwaarden.
Ze hebben natuurlijk wel wat meer dan alleen die voorwaarden. Een personal license koop je als privépersoon, dus kun je geen bedrijfsnaam opgeven en komt de licentie op naam van de persoon. Bij een commercial license moet je wel een bedrijfsnaam opgeven en komt de licentie op naam van het bedrijf. Dan is het aan het bedrijf om te bepalen wie met de licentie mag werken.
pi_144919146
quote:
0s.gif Op vrijdag 26 september 2014 01:27 schreef Crutch het volgende:
PHPStorm is tot nu toe de beste IDE.
En inderdaad, ik snap niet wat ik zonder PS heb gekund. :')
Dat is altijd het geval met een goede IDE natuurlijk. Je weet pas wat je mist, wanneer je er daadwerkelijk mee gewerkt hebt. ;)
Ik heb ook nog wel met pure text-editors (al dan niet met wat syntax highlighting) gewerkt. Alleen al basale ondersteuning voor zaken als error highlighting, code completion, code generation en refactoring zorgt er al voor dat je productiviteit een veelvoud is van je productiviteit zonder al die hulpmiddelen.

De IDE's van JetBrains hebben die functionaliteit bovendien echt heel goed uitgewerkt, met support voor enorm veel verschillende frameworks, al dan niet via plug-ins.
Daarbij hebben ze dan ook nog eens live templates. Als je daar een beetje handig mee wordt, dan levert dat ook weer eens een flinke snelheidswinst op.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_144926250
quote:
0s.gif Op vrijdag 26 september 2014 10:36 schreef Light het volgende:

[..]

Ze hebben natuurlijk wel wat meer dan alleen die voorwaarden. Een personal license koop je als privépersoon, dus kun je geen bedrijfsnaam opgeven en komt de licentie op naam van de persoon. Bij een commercial license moet je wel een bedrijfsnaam opgeven en komt de licentie op naam van het bedrijf. Dan is het aan het bedrijf om te bepalen wie met de licentie mag werken.
Maar als ik iets declareer heb ik het gekocht en leg ik de bon bij de baas neer en krijg dat dan later terug. Ik kan dan alsnog een persoonlijke licentie nemen...
In theory there is no difference between theory and practice. In practice there is.
  vrijdag 26 september 2014 @ 20:57:47 #80
118585 Crutch
Filantroop || Taalzwengel
pi_144936380
quote:
0s.gif Op vrijdag 26 september 2014 11:20 schreef Monolith het volgende:

[..]

Dat is altijd het geval met een goede IDE natuurlijk. Je weet pas wat je mist, wanneer je er daadwerkelijk mee gewerkt hebt. ;)
Ik heb ook nog wel met pure text-editors (al dan niet met wat syntax highlighting) gewerkt. Alleen al basale ondersteuning voor zaken als error highlighting, code completion, code generation en refactoring zorgt er al voor dat je productiviteit een veelvoud is van je productiviteit zonder al die hulpmiddelen.

De IDE's van JetBrains hebben die functionaliteit bovendien echt heel goed uitgewerkt, met support voor enorm veel verschillende frameworks, al dan niet via plug-ins.
Daarbij hebben ze dan ook nog eens live templates. Als je daar een beetje handig mee wordt, dan levert dat ook weer eens een flinke snelheidswinst op.
Emmet FTW _O_
Je moeder is een hamster
pi_144937361
quote:
0s.gif Op vrijdag 26 september 2014 20:57 schreef Crutch het volgende:

[..]

Emmet FTW _O_
Leuk bedacht en heeft zeker zijn toepassingen, maar het gros van de afkortingen biedt niet echt voordelen te opzichte van code completion in IDEs. De multiplications zijn nog wel aardig efficiënt, maar juist dat soort dingen zijn vaak dynamisch en niet statisch.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  vrijdag 26 september 2014 @ 21:52:47 #82
118585 Crutch
Filantroop || Taalzwengel
pi_144939310
quote:
1s.gif Op vrijdag 26 september 2014 21:18 schreef Monolith het volgende:

[..]

Leuk bedacht en heeft zeker zijn toepassingen, maar het gros van de afkortingen biedt niet echt voordelen te opzichte van code completion in IDEs. De multiplications zijn nog wel aardig efficiënt, maar juist dat soort dingen zijn vaak dynamisch en niet statisch.
Ik type nauwelijks nog volledige (s)css:

w100% {tab} -> width: 100%
bgc {tab} -> background-color:
fl {tab} -> float: left

HTML-tags:
type gewoon de tag-naam gevolgd door tab en je hebt bijvoorbeeld:
<div></div> met de cursor in het midden om direct je content in te rammen.

Of div.wrapper {tab} -> <div class="wrapper"></div>

Of een simpele pubsf in PHP en je krijgt public static function()

Het houdt niet op hoor, ik heb mijn ziel verkocht aan Emmet.
Je moeder is een hamster
  vrijdag 26 september 2014 @ 21:54:14 #83
118585 Crutch
Filantroop || Taalzwengel
pi_144939381
Oeh en die multicursor die ze van Sublime Text hebben gejat, awesome! :D

Je moeder is een hamster
pi_144939811
quote:
0s.gif Op vrijdag 26 september 2014 21:52 schreef Crutch het volgende:

[..]

Ik type nauwelijks nog volledige (s)css:

w100% {tab} -> width: 100%
bgc {tab} -> background-color:
fl {tab} -> float: left

HTML-tags:
type gewoon de tag-naam gevolgd door tab en je hebt bijvoorbeeld:
<div></div> met de cursor in het midden om direct je content in te rammen.

Of div.wrapper {tab} -> <div class="wrapper"></div>

Of een simpele pubsf in PHP en je krijgt public static function()

Het houdt niet op hoor, ik heb mijn ziel verkocht aan Emmet.
Met name die eerste paar zijn nou precies de voorbeelden die ik bedoel die een IDE al wel voor je afvangt middels intelligente code completion.

Dingen als .wrapper zijn dan inderdaad wel weer handig.

Die laatste is net zoiets als live templates, echter hebben die nog veel meer mogelijkheden om variabele elementen te gebruiken, die de IDE dan on the fly probeert in te vullen in de gegenereerde code.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  dinsdag 30 september 2014 @ 08:41:30 #85
91039 mstx
2x1/2 = 1/2 x 1/2
pi_145043680
Zo irritant he, als een collega gewoon alles klakkeloos doet wat een klant (die geen verstand van databases heeft) zegt. Nu moet ik dus werken in een project waar tabellen gejoind worden op objectnamen ipv de id's. En index is schijnbaar ook een onbekend woord. :'(
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
pi_145043939
quote:
0s.gif Op dinsdag 30 september 2014 08:41 schreef mstx het volgende:
Zo irritant he, als een collega gewoon alles klakkeloos doet wat een klant (die geen verstand van databases heeft) zegt. Nu moet ik dus werken in een project waar tabellen gejoind worden op objectnamen ipv de id's. En index is schijnbaar ook een onbekend woord. :'(
:'(
  dinsdag 30 september 2014 @ 10:17:00 #87
230788 n8n
Pragmatisch
pi_145045716
quote:
0s.gif Op dinsdag 30 september 2014 08:41 schreef mstx het volgende:
Zo irritant he, als een collega gewoon alles klakkeloos doet wat een klant (die geen verstand van databases heeft) zegt. Nu moet ik dus werken in een project waar tabellen gejoind worden op objectnamen ipv de id's. En index is schijnbaar ook een onbekend woord. :'(
sowieso mensen die overal ja op zeggen zonder ooit na te denken over de implicaties. Na 3 weken komt iedereen er achter dat het toch niet kan en daar sta je dan met je begroting. :')
Specialization is for insects”.—Robert Heinlein
pi_145045928
quote:
0s.gif Op dinsdag 30 september 2014 08:41 schreef mstx het volgende:
Zo irritant he, als een collega gewoon alles klakkeloos doet wat een klant (die geen verstand van databases heeft) zegt. Nu moet ik dus werken in een project waar tabellen gejoind worden op objectnamen ipv de id's. En index is schijnbaar ook een onbekend woord. :'(
Indices kun je gewoon toevoegen natuurlijk. ;)
Maar wat hebben de wensen van een klant in vredesnaam te maken met hoe jullie database tables joinen? Ik kan me voorstellen dat je door wensen van de klant in combinatie met tijdsdruk (en vaak een gebrek aan kennis) dat soort oplossingen gaat krijgen, maar het lijkt me toch niet dat de klant er specifiek om vraagt.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_145068074
Ik moet de laatste tijd een beetje vaak denken aan deze draad doordat ik de complete mailermeuk op m'n werk aan het aanpassen ben. Zo testen wij nu het versturen van mail:

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
sub external_mail_track_sending_bcc : Tests {
    my $params = {
        to      => 'foo@example.net',
        from    => 'bar@example.com',
        cc      => 'baz@example.org',
        bcc     => 'fubar@example.com',
        subject => "Hide 'n seek",
    };

    my $obj = _mail_track_ok;

    my $msg = $obj->prepare({ %$params, Body => 'This is some content', });
    my $message;
    my $opts;

    no warnings qw(redefine once);
    local *Email::Sender::Simple::send = sub {
        my $self = shift;
        my $entity = shift;
        $opts = shift;
        $message = $entity->stringify();
    };
    $msg->send;
    isa_ok(delete $opts->{transport}, "Email::Sender::Transport::SMTP");
    is_deeply($opts, { to => $params->{bcc} }, "BCC'ed");
    ok($message, 'Sending e-mail');
}

Jullie mogen de code zien aangezien het toch een open source project is
In theory there is no difference between theory and practice. In practice there is.
pi_145117526
Kan iemand me helpen, ik krijg steeds een error als ik mysql opstart..

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
2014-10-02 09:13:17 6048 [Note] Plugin 'FEDERATED' is disabled.
2014-10-02 09:13:17 6048 [Note] InnoDB: The InnoDB memory heap is disabled
2014-10-02 09:13:17 6048 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions
2014-10-02 09:13:17 6048 [Note] InnoDB: Compressed tables use zlib 1.2.3
2014-10-02 09:13:17 6048 [Note] InnoDB: Not using CPU crc32 instructions
2014-10-02 09:13:17 6048 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2014-10-02 09:13:17 6048 [Note] InnoDB: Completed initialization of buffer pool
2014-10-02 09:13:17 6048 [Note] InnoDB: Highest supported file format is Barracuda.
2014-10-02 09:13:18 6048 [Note] InnoDB: The log sequence numbers 0 and 0 in ibdata files do not match the log sequence number 49463 in the ib_logfiles!
2014-10-02 09:13:18 6048 [Note] InnoDB: Database was not shutdown normally!
2014-10-02 09:13:18 6048 [Note] InnoDB: Starting crash recovery.
2014-10-02 09:13:18 6048 [Note] InnoDB: Reading tablespace information from the .ibd files...
2014-10-02 09:13:18 6048 [Note] InnoDB: Restoring possible half-written data pages 
2014-10-02 09:13:18 6048 [Note] InnoDB: from the doublewrite buffer...
2014-10-02 09:13:18 6048 [Warning] InnoDB: Creating foreign key constraint system tables.
2014-10-02 09:13:18 6048 [ERROR] InnoDB: Creation of SYS_FOREIGN and SYS_FOREIGN_COLS has failed with error 57.  Tablespace is full. Dropping incompletely created tables.
2014-10-02 09:13:18 11d4  InnoDB: Error: table "SYS_FOREIGN" does not exist in the InnoDB internal
InnoDB: data dictionary though MySQL is trying to drop it.
InnoDB: Have you copied the .frm file of the table to the
InnoDB: MySQL database directory from another database?
InnoDB: You can look for further help from
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/innodb-troubleshooting.html
2014-10-02 09:13:18 11d4  InnoDB: Error: table "SYS_FOREIGN_COLS" does not exist in the InnoDB internal
InnoDB: data dictionary though MySQL is trying to drop it.
InnoDB: Have you copied the .frm file of the table to the
InnoDB: MySQL database directory from another database?
InnoDB: You can look for further help from
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/innodb-troubleshooting.html
2014-10-02 09:13:18 11d4  InnoDB: Assertion failure in thread 4564 in file dict0crea.cc line 1445
InnoDB: Failing assertion: sys_foreign_err == DB_SUCCESS
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
07:13:18 UTC - mysqld got exception 0x80000003 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help
diagnose the problem, but since we have already crashed, 
something is definitely wrong and this may fail.

key_buffer_size=8388608
read_buffer_size=131072
max_used_connections=0
max_threads=151
thread_count=0
connection_count=0
It is possible that mysqld could use up to 
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 67589 K  bytes of memory
Hope that's ok; if not, decrease some variables in the equation.

Thread pointer: 0x0
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
13657d0    mysqld_usbwv8.exe!my_thread_name()
159dd9d    mysqld_usbwv8.exe!my_mb_ctype_mb()
1395a4a    mysqld_usbwv8.exe!xor_string()
11197f0    mysqld_usbwv8.exe!?ha_initialize_handlerton@@YAHPAUst_plugin_int@@@Z()
1152e0e    mysqld_usbwv8.exe!?plugin_lock_by_name@@YAPAUst_plugin_int@@PAVTHD@@PBUst_mysql_lex_string@@H@Z()
1157454    mysqld_usbwv8.exe!?plugin_init@@YAHPAHPAPADH@Z()
111102d    mysqld_usbwv8.exe!?init_common_variables@@YAHXZ()
1111d23    mysqld_usbwv8.exe!?win_main@@YAHHPAPAD@Z()
1112287    mysqld_usbwv8.exe!?mysql_service@@YAHPAX@Z()
15988fa    mysqld_usbwv8.exe!my_mb_ctype_mb()
75fb338a    kernel32.dll!BaseThreadInitThunk()
77df9f72    ntdll.dll!RtlInitializeExceptionChain()
77df9f45    ntdll.dll!RtlInitializeExceptionChain()
The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash. 

Ik kan dus echt niet achterhalen wat het probleem is... :'( iemand die het mogelijk ziet? heb zo'n 300 databases en stuk voor stuk terug zetten is ook wel weer vervelend...
Just say hi!
pi_145118002
Hoe ver ben je zelf al? privileges en disk space al gechecked enzo?
pi_145118901
Maar natuurlijk heb ik dat gechecked, draaide namelijk normaal wel.
100GB ruimte vrij ;)
Run als admin ;)

Het moet ergens in de tabellen zitten, daar crasht hij op, maar welke is niet duidelijk, en uitzoeken is best vervelend. Is er geen tool die de database bestanden zonder mysql server kan controleren?
Just say hi!
pi_145119636
Niet toevallig een limiet op je innodb_data_file_path in je my.cnf?
pi_145136869
Nee, het rare is het werkte altijd, ik ben echt bang dat 1 corrupte database / tabel voor gezeur zorgt, ga opzoek naar het probleem!!! :D

lolerdelol heb de originele versie van usbwebserver gedownloaded en daarvan alles uit de data dir van mysql naar mijn data dir gekopieerd, daarna gestart en hoppa werkte gelijk! :) daarna al mijn databases terug gekopieerd en hoppa, werkte weer!

[ Bericht 43% gewijzigd door Chandler op 02-10-2014 20:09:56 ]
Just say hi!
pi_145138432
InnoDB tabellen zou je als het goed is niet moeten kunnen kopiëren door de bestanden in het filesystem te kopiëren. Althans, misschien kan het goed gaan maar het wordt uitdrukkelijk afgeraden en niet ondersteund.
  vrijdag 3 oktober 2014 @ 17:08:04 #96
62215 qu63
..de tijd drinkt..
pi_145159737
Dummie hier :W

Ben aan t experimenteren met de API van de RDW om alleen een bepaald type voertuig uit hun database te trekken. Dit lukt allemaal prima en opslaan in mijn eigen database ook. Alleen houdt de RDW niet bij wanneer er een record is aangepast. Iedere dag uploaden ze de complete tabel opnieuw. Hoe kan ik nu de ongeveer 10.000 records uit hun API plukken, checken of het kenteken (het enige unieke record) al bestaat en if so, checken of er wijzigingen zijn, en if so de wijzigingen doorvoeren in mijn tabel. Ik kan dan zelf mijn eigen 'updated on' veld wel aanpassen ;)

Iemand tips/trics? Kan dit bijvoorbeeld ook met ON DUPLICATE KEY UPDATE?

-edit- En dan zijn er natuurlijk ook kentekens die uit de databse van de RDW verdwijnen (export, sloop), dan zou ik moeten kijken welke van mijn kentekens niet meer bij de RDW bekend staan, maar met 10.000 records is dat ook best lastig, lijkt me.. Ik heb wel een veld in mijn db voor sloop (ja/nee) en export (ja/nee), dus alleen dat veld aanpassen is voldoende..
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_145159986
quote:
0s.gif Op vrijdag 3 oktober 2014 17:08 schreef qu63 het volgende:
[...]
Als het kenteken je ID is zou je hier een PRIMARY KEY van kunnen maken anders een UNIQUE KEY.
Je zou een datumveld kunnen toevoegen wanneer een record in jouw database is aangepast. Records die ouder zijn komen dan niet meer voor in die van de RDW. Dit is ook als archief te gebruiken.
When the student is ready, the teacher will appear.
When the student is truly ready, the teacher will disappear.
pi_145160111
quote:
0s.gif Op vrijdag 3 oktober 2014 17:08 schreef qu63 het volgende:
Dummie hier :W

Ben aan t experimenteren met de API van de RDW om alleen een bepaald type voertuig uit hun database te trekken. Dit lukt allemaal prima en opslaan in mijn eigen database ook. Alleen houdt de RDW niet bij wanneer er een record is aangepast. Iedere dag uploaden ze de complete tabel opnieuw. Hoe kan ik nu de ongeveer 10.000 records uit hun API plukken, checken of het kenteken (het enige unieke record) al bestaat en if so, checken of er wijzigingen zijn, en if so de wijzigingen doorvoeren in mijn tabel. Ik kan dan zelf mijn eigen 'updated on' veld wel aanpassen ;)

Iemand tips/trics? Kan dit bijvoorbeeld ook met ON DUPLICATE KEY UPDATE?

-edit- En dan zijn er natuurlijk ook kentekens die uit de databse van de RDW verdwijnen (export, sloop), dan zou ik moeten kijken welke van mijn kentekens niet meer bij de RDW bekend staan, maar met 10.000 records is dat ook best lastig, lijkt me.. Ik heb wel een veld in mijn db voor sloop (ja/nee) en export (ja/nee), dus alleen dat veld aanpassen is voldoende..
Je kunt inderdaad een insert doen met een on duplicate update erin.
Je kunt ook een subquery maken die kijkt of er verschillen zijn, maar lijkt me niet nodig.
Gewoon sowieso alles updaten.

en 10000 records is een peuleschilletje :)
quote:
1s.gif Op vrijdag 3 oktober 2014 17:20 schreef Aether het volgende:

[..]

Als het kenteken je ID is zou je hier een PRIMARY KEY van kunnen maken anders een UNIQUE KEY.
Je zou een datumveld kunnen toevoegen wanneer een record in jouw database is aangepast. Records die ouder zijn komen dan niet meer voor in die van de RDW. Dit is ook als archief te gebruiken.
dit moet sowieso wel :P
pi_145160387
Zoals ik het lees kun je net zo goed de database weer leeg kieperen en de nieuwe data erin zetten.
Of is er specifiek een reden in bestaande database records te behouden?
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_145160447
quote:
0s.gif Op vrijdag 3 oktober 2014 17:35 schreef Monolith het volgende:
Zoals ik het lees kun je net zo goed de database weer leeg kieperen en de nieuwe data erin zetten.
Of is er specifiek een reden in bestaande database records te behouden?
Hoevaak herlaad jij data per dag dan?

De database leeggooien is geen goed idee, gewoon updaten is het beste.
pi_145160626
quote:
0s.gif Op vrijdag 3 oktober 2014 17:37 schreef totalvamp het volgende:

[..]

Hoevaak herlaad jij data per dag dan?

De database leeggooien is geen goed idee, gewoon updaten is het beste.
Normaal gesproken niet natuurlijk, maar je moet altijd kijken naar de specifieke use case.
Het punt is dat hij elke dag data voor dezelfde set kentekens uit een API trekt. Daarbij moeten dan de verwijderingen, wijzigingen en toevoegingen in hun geheel worden doorgevoerd. Dan is verwijderen en de gehele set opnieuw toevoegen de meest efficiënte en makkelijke optie.
Als je die data wilt gaan koppelen ligt dat weer iets anders, maar de use case is niet echt duidelijk.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_145160705
quote:
1s.gif Op vrijdag 3 oktober 2014 17:43 schreef Monolith het volgende:

[..]

Normaal gesproken niet natuurlijk, maar je moet altijd kijken naar de specifieke use case.
Het punt is dat hij elke dag data voor dezelfde set kentekens uit een API trekt. Daarbij moeten dan de verwijderingen, wijzigingen en toevoegingen in hun geheel worden doorgevoerd. Dan is verwijderen en de gehele set opnieuw toevoegen de meest efficiënte en makkelijke optie.
Als je die data wilt gaan koppelen ligt dat weer iets anders, maar de use case is niet echt duidelijk.
Ja alleen als je voorderest geen koppelingen doet in je database kan het :) alhoewel kentekens altijd hetzelfde blijven natuurlijk.

of anders Nosql gebruiken en de letterlijke json er zo in gooien :P
pi_145160754
Bij voorkeur trek je alleen de mutaties uit die API. Want daar ligt je bottleneck in dit scenario natuurlijk.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  vrijdag 3 oktober 2014 @ 17:47:28 #104
62215 qu63
..de tijd drinkt..
pi_145160755
quote:
0s.gif Op vrijdag 3 oktober 2014 17:35 schreef Monolith het volgende:
Zoals ik het lees kun je net zo goed de database weer leeg kieperen en de nieuwe data erin zetten.
Of is er specifiek een reden in bestaande database records te behouden?
Ik heb er andere velden aan toegevoegd die niet in de RDW database staan ;)
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  vrijdag 3 oktober 2014 @ 17:48:36 #105
62215 qu63
..de tijd drinkt..
pi_145160788
quote:
0s.gif Op vrijdag 3 oktober 2014 17:47 schreef Monolith het volgende:
Bij voorkeur trek je alleen de mutaties uit die API. Want daar ligt je bottleneck in dit scenario natuurlijk.
Ja, dattum. Ik kan kijken naar de laatste tennaamstellingen, maar daarmee mis ik bijvoorbeeld of een voertuig nog een geldige APK heeft, als gestolen geregistreerd staat, etc.
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_145160826
quote:
0s.gif Op vrijdag 3 oktober 2014 17:47 schreef qu63 het volgende:

[..]

Ik heb er andere velden aan toegevoegd die niet in de RDW database staan ;)
Zelfs dat zou je nog in een aparte tabel kunnen zetten en koppelen op kenteken.
Dan kun je de RDW data als leidend houden.
Of wil je ook data bewaren / tonen over kentekens die al verwijderd zijn uit de RDW data?
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  vrijdag 3 oktober 2014 @ 17:53:16 #107
62215 qu63
..de tijd drinkt..
pi_145160912
Laat ik iets meer uitleggen over mijn database ;)
SQL dump:
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
CREATE TABLE IF NOT EXISTS `voertuigen` (
  `Updated` int(11) NOT NULL,
  `Aantalcilinders` int(16) NOT NULL,
  `Aantalstaanplaatsen` int(16) NOT NULL,
  `Aantalzitplaatsen` int(16) NOT NULL,
  `Cilinderinhoud` int(16) NOT NULL,
  `Datumaanvangtenaamstelling` int(11) NOT NULL,
  `Datumeersteafgiftenederland` int(11) NOT NULL,
  `Datumeerstetoelating` int(11) NOT NULL,
  `Handelsbenaming` varchar(255) NOT NULL,
  `Hoofdbrandstof` varchar(255) NOT NULL,
  `Kenteken` varchar(10) NOT NULL,
  `Merk` varchar(255) NOT NULL,
  `Milieuclassificatie` varchar(255) NOT NULL,
  `Vervaldatumapk` int(11) NOT NULL,
  `Wachtopkeuren` varchar(255) NOT NULL,
  `Voertuig_ID` int(11) NOT NULL AUTO_INCREMENT,
  `Bedrijf_ID` int(11) NOT NULL,
  `EigenarenP` varchar(255) NOT NULL,
  `EigenarenZ` varchar(255) NOT NULL,
  `Klasse` varchar(255) NOT NULL,
  `Categorie` varchar(255) NOT NULL,
  `CarrosserieOmschrijving` varchar(255) NOT NULL,
  `Type` varchar(255) NOT NULL,
  `Variant` varchar(255) NOT NULL,
  `Uitvoering` varchar(255) NOT NULL,
  `Typegoedkeuring` varchar(255) NOT NULL,
  `VervalDatTachograaf` varchar(255) NOT NULL,
  `TijdAanvangTenaamstelling` varchar(255) NOT NULL,
  `Gestolen` varchar(255) NOT NULL,
  `Geexporteerd` varchar(255) NOT NULL,
  `BijzonderheidTekst` varchar(255) NOT NULL,
  `Lengte` varchar(255) NOT NULL,
  `Breedte` varchar(255) NOT NULL,
  `AantalAssen` varchar(255) NOT NULL,
  `AantalWielen` varchar(255) NOT NULL,
  `Wielbasis` varchar(255) NOT NULL,
  `AfwijkendeMaxSnelheid` varchar(255) NOT NULL,
  `AfstandVoorzijdeVrtgTotHartkoppeling` varchar(255) NOT NULL,
  `WAVerzekerd` varchar(255) NOT NULL,
  PRIMARY KEY (`Voertuig_ID`),
  UNIQUE KEY `Kenteken` (`Kenteken`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9740 ;
Tot en met Wachtopkeuren trek uit de RDW API, de rest wordt via andere wegen aangevuld.
Dan heb ik ook nog een andere tabel die bestaat uit bedrijfsgegevens zodat ik straks per bedrijf kan zien welke voertuigen ze hebben.
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  vrijdag 3 oktober 2014 @ 17:54:59 #108
62215 qu63
..de tijd drinkt..
pi_145160955
quote:
1s.gif Op vrijdag 3 oktober 2014 17:43 schreef Monolith het volgende:

[..]

Normaal gesproken niet natuurlijk, maar je moet altijd kijken naar de specifieke use case.
Het punt is dat hij elke dag data voor dezelfde set kentekens uit een API trekt. Daarbij moeten dan de verwijderingen, wijzigingen en toevoegingen in hun geheel worden doorgevoerd. Dan is verwijderen en de gehele set opnieuw toevoegen de meest efficiënte en makkelijke optie.
Als je die data wilt gaan koppelen ligt dat weer iets anders, maar de use case is niet echt duidelijk.
Ik zoek niet op kenteken, ik zoek op voertuigtype, dus ik weet nooit vantevoren hoeveel records ik terug ga krijgen. Het kunnen er meer, minder of evenveel zijn als vandaag.
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  vrijdag 3 oktober 2014 @ 18:03:31 #109
62215 qu63
..de tijd drinkt..
pi_145161153
quote:
1s.gif Op vrijdag 3 oktober 2014 17:20 schreef Aether het volgende:

[..]

Als het kenteken je ID is zou je hier een PRIMARY KEY van kunnen maken anders een UNIQUE KEY.
Je zou een datumveld kunnen toevoegen wanneer een record in jouw database is aangepast. Records die ouder zijn komen dan niet meer voor in die van de RDW. Dit is ook als archief te gebruiken.
T nadeel is dus dat ik niet weet wanneer de records van de RDW geupdate zijn :{. Ik zou alle 10k records zelf moeten controleren op wijzigingen, en dan pas wel of niet aan mijn database toevoegen.
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_145161170
quote:
0s.gif Op vrijdag 3 oktober 2014 17:54 schreef qu63 het volgende:

[..]

Ik zoek niet op kenteken, ik zoek op voertuigtype, dus ik weet nooit vantevoren hoeveel records ik terug ga krijgen. Het kunnen er meer, minder of evenveel zijn als vandaag.
Maakt op zich niet zo heel veel uit. Het relevante aspect is dat je de hele dataset via de API opvraagt, niet enkel mutaties bijvoorbeeld.
Wat je dan vervolgens wil, als ik het goed begrijp, is het volgende:

• Voeg rijen toe aan de eigen database voor alle kentekens in de dataset die nog niet in de eigen database stonden
• Verwijder alle rijen uit de eigen database waarbij het kenteken niet voorkomt in de nieuwe dataset
• Update alle informatie voor al bestaande kentekens

Klopt dat?

Zo ja, dan is deze opzet ook een optie:

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
CREATE TABLE IF NOT EXISTS `voertuigen_RDW` (
  `Updated` int(11) NOT NULL,
  `Aantalcilinders` int(16) NOT NULL,
  `Aantalstaanplaatsen` int(16) NOT NULL,
  `Aantalzitplaatsen` int(16) NOT NULL,
  `Cilinderinhoud` int(16) NOT NULL,
  `Datumaanvangtenaamstelling` int(11) NOT NULL,
  `Datumeersteafgiftenederland` int(11) NOT NULL,
  `Datumeerstetoelating` int(11) NOT NULL,
  `Handelsbenaming` varchar(255) NOT NULL,
  `Hoofdbrandstof` varchar(255) NOT NULL,
  `Kenteken` varchar(10) NOT NULL,
  `Merk` varchar(255) NOT NULL,
  `Milieuclassificatie` varchar(255) NOT NULL,
  `Vervaldatumapk` int(11) NOT NULL,
  `Wachtopkeuren` varchar(255) NOT NULL, 
  PRIMARY KEY (`Kenteken`),
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9740 ;

CREATE TABLE IF NOT EXISTS `voertuigen_other` (
 `Voertuig_ID` int(11) NOT NULL AUTO_INCREMENT,
  `Bedrijf_ID` int(11) NOT NULL,
  `EigenarenP` varchar(255) NOT NULL,
  `EigenarenZ` varchar(255) NOT NULL,
  `Klasse` varchar(255) NOT NULL,
  `Categorie` varchar(255) NOT NULL,
  `CarrosserieOmschrijving` varchar(255) NOT NULL,
  `Type` varchar(255) NOT NULL,
  `Variant` varchar(255) NOT NULL,
  `Uitvoering` varchar(255) NOT NULL,
  `Typegoedkeuring` varchar(255) NOT NULL,
  `VervalDatTachograaf` varchar(255) NOT NULL,
  `TijdAanvangTenaamstelling` varchar(255) NOT NULL,
  `Gestolen` varchar(255) NOT NULL,
  `Geexporteerd` varchar(255) NOT NULL,
  `BijzonderheidTekst` varchar(255) NOT NULL,
  `Lengte` varchar(255) NOT NULL,
  `Breedte` varchar(255) NOT NULL,
  `AantalAssen` varchar(255) NOT NULL,
  `AantalWielen` varchar(255) NOT NULL,
  `Wielbasis` varchar(255) NOT NULL,
  `AfwijkendeMaxSnelheid` varchar(255) NOT NULL,
  `AfstandVoorzijdeVrtgTotHartkoppeling` varchar(255) NOT NULL,
  `WAVerzekerd` varchar(255) NOT NULL,
  `Kenteken` varchar(10)
  PRIMARY KEY (`Voertuig_ID`),
  UNIQUE KEY `Kenteken` (`Kenteken`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9740 ;

Daarbij kieper je dan bij elke nieuwe dataset uit de API de tabel voertuigen_RDW weer leeg en insert je de gehele dataset.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  vrijdag 3 oktober 2014 @ 18:06:51 #111
62215 qu63
..de tijd drinkt..
pi_145161248
quote:
0s.gif Op vrijdag 3 oktober 2014 18:04 schreef Monolith het volgende:

[..]

Maakt op zich niet zo heel veel uit. Het relevante aspect is dat je de hele dataset via de API opvraagt, niet enkel mutaties bijvoorbeeld.
Wat je dan vervolgens wil, als ik het goed begrijp, is het volgende:

• Voeg rijen toe aan de eigen database voor alle kentekens in de dataset die nog niet in de eigen database stonden
• Verwijder alle rijen uit de eigen database waarbij het kenteken niet voorkomt in de nieuwe dataset
• Update alle informatie voor al bestaande kentekens

Klopt dat?

Zo ja, dan is deze opzet ook een optie:
[ code verwijderd ]

Daarbij kieper je dan bij elke nieuwe dataset uit de API de tabel voertuigen_RDW weer leeg en insert je de gehele dataset.
Niet helemaal, ik wil ook de voertuigen die gexporteerd/gesloopt zijn behouden.

Maar dat maakt verder niet uit voor de tabellen geloof ik.
Hoe zou ik de SQL-query dan moeten maken?
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_145161315
quote:
0s.gif Op vrijdag 3 oktober 2014 18:06 schreef qu63 het volgende:

[..]

Niet helemaal, ik wil ook de voertuigen die gexporteerd/gesloopt zijn behouden.

Maar dat maakt verder niet uit voor de tabellen geloof ik.
Hoe zou ik de SQL-code dan moeten maken?
Als dat de use case is, dan zou ik gewoon voor de insert met on duplicate key update gaan.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  vrijdag 3 oktober 2014 @ 18:09:30 #113
187069 slacker_nl
Sicko pur sang
pi_145161318
Ik zou het volgende doen. reken de md5sum uit van elk dataset. Vergelijk die md5sum (digest) van je eigen DB tegen die van het RDW: Verschil, record updaten/inserten (incl de digest). Geen verschil, volgend record. En dan kan je via on update ook nog een last_modified oid hebben, dan ben je klaar. En date_created, voila. Dan kan je denk ik redelijk snel door je records heen gaan zonder overal afzonderlijk complete sets te vergelijken.
In theory there is no difference between theory and practice. In practice there is.
  vrijdag 3 oktober 2014 @ 18:14:15 #114
62215 qu63
..de tijd drinkt..
pi_145161439
quote:
1s.gif Op vrijdag 3 oktober 2014 18:09 schreef Monolith het volgende:

[..]

Als dat de use case is, dan zou ik gewoon voor de insert met on duplicate key update gaan.
INSERT INTO voertuigen (columns) VALUES (values) ON DUPLICATE KEY UPDATE c1=v1, c2=v2, etc

Zoiets?
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  vrijdag 3 oktober 2014 @ 18:15:19 #115
62215 qu63
..de tijd drinkt..
pi_145161470
quote:
0s.gif Op vrijdag 3 oktober 2014 18:09 schreef slacker_nl het volgende:
Ik zou het volgende doen. reken de md5sum uit van elk dataset. Vergelijk die md5sum (digest) van je eigen DB tegen die van het RDW: Verschil, record updaten/inserten (incl de digest). Geen verschil, volgend record. En dan kan je via on update ook nog een last_modified oid hebben, dan ben je klaar. En date_created, voila. Dan kan je denk ik redelijk snel door je records heen gaan zonder overal afzonderlijk complete sets te vergelijken.
Maar dan dus wel mijn tabel splitsen zoals hier Monolith zei? DIG / [PHP/(My)SQL] voor dummies #118
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_145161475
quote:
0s.gif Op vrijdag 3 oktober 2014 18:09 schreef slacker_nl het volgende:
Ik zou het volgende doen. reken de md5sum uit van elk dataset. Vergelijk die md5sum (digest) van je eigen DB tegen die van het RDW: Verschil, record updaten/inserten (incl de digest). Geen verschil, volgend record. En dan kan je via on update ook nog een last_modified oid hebben, dan ben je klaar. En date_created, voila. Dan kan je denk ik redelijk snel door je records heen gaan zonder overal afzonderlijk complete sets te vergelijken.
Waarom zou je dat zo vreselijk omslachtig doen?
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_145161499
quote:
0s.gif Op vrijdag 3 oktober 2014 18:15 schreef qu63 het volgende:

[..]

Maar dan dus wel mijn tabel splitsen zoals hier Monolith zei? DIG / [PHP/(My)SQL] voor dummies #118
Nee, dat was meer in de veronderstelling dat je ook wilde verwijderen. Negeer dat maar. ;)
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  vrijdag 3 oktober 2014 @ 18:19:20 #118
187069 slacker_nl
Sicko pur sang
pi_145161606
quote:
1s.gif Op vrijdag 3 oktober 2014 18:15 schreef Monolith het volgende:

[..]

Waarom zou je dat zo vreselijk omslachtig doen?
Hoezo omslachtig? Je kan anders namelijk niet zien wanneer de laatste wijziging heeft plaatsgevonden.
In theory there is no difference between theory and practice. In practice there is.
pi_145161693
quote:
0s.gif Op vrijdag 3 oktober 2014 18:19 schreef slacker_nl het volgende:

[..]

Hoezo omslachtig? Je kan anders namelijk niet zien wanneer de laatste wijziging heeft plaatsgevonden.
Je kunt in je insert en on update gewoon de curdate() meegeven.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  vrijdag 3 oktober 2014 @ 18:25:00 #120
187069 slacker_nl
Sicko pur sang
pi_145161752
quote:
1s.gif Op vrijdag 3 oktober 2014 18:22 schreef Monolith het volgende:

[..]

Je kunt in je insert en on update gewoon de curdate() meegeven.
Maar als je gewoon klakkeloos importeert zijn de gegevens zonder te checken of de data veranderd is staat curdate altijd op het import-moment.
In theory there is no difference between theory and practice. In practice there is.
  vrijdag 3 oktober 2014 @ 18:26:33 #121
62215 qu63
..de tijd drinkt..
pi_145161781
quote:
1s.gif Op vrijdag 3 oktober 2014 18:22 schreef Monolith het volgende:

[..]

Je kunt in je insert en on update gewoon de curdate() meegeven.
Die geeft de API van de RDW zelf al mee, maar dat is het moment van opvragen van de gegevens, niet van de laatste actualisatie
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_145161812
quote:
0s.gif Op vrijdag 3 oktober 2014 18:25 schreef slacker_nl het volgende:

[..]

Maar als je gewoon klakkeloos importeert zijn de gegevens zonder te checken of de data veranderd is staat curdate altijd op het import-moment.
Ah je bedoelt daadwerkelijke wijzigingen ipv een update met dezelfde data. Ik weet niet of dat vereist is.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  vrijdag 3 oktober 2014 @ 18:31:29 #123
187069 slacker_nl
Sicko pur sang
pi_145161897
quote:
1s.gif Op vrijdag 3 oktober 2014 18:27 schreef Monolith het volgende:

[..]

Ah je bedoelt daadwerkelijke wijzigingen ipv een update met dezelfde data. Ik weet niet of dat vereist is.
Dat is wel hoe ik de vraag interpreteerde.
quote:
Hoe kan ik nu de ongeveer 10.000 records uit hun API plukken, checken of het kenteken (het enige unieke record) al bestaat en if so, checken of er wijzigingen zijn, en if so de wijzigingen doorvoeren in mijn tabel. Ik kan dan zelf mijn eigen 'updated on' veld wel aanpassen


[ Bericht 24% gewijzigd door slacker_nl op 03-10-2014 18:36:44 ]
In theory there is no difference between theory and practice. In practice there is.
  vrijdag 3 oktober 2014 @ 18:35:14 #124
62215 qu63
..de tijd drinkt..
pi_145161994
We kunnen het ook anders doen :P

Met mijn script haal ik een deel van de gegevens van de RDW op via Azure: https://datamarket.azure.(...)rtg.open.data#schema

Deze gegevens wil ik verrijken met mijn eigen data en opslaan in mijn eigen database.

Omdat de voertuigen die ik check niet veel verhandeld worden is een wekelijkse check voldoende. Helaas kan ik dus alleen de complete set opvragen. Deze set wil ik dus vergelijken met mijn database en alleen de updates verwerken in mijn database.

Als de gegevens bij de RDW geupdate zijn, wil ik mijn verrijkingen ook checken en updaten.

Daarnaast periodieke updates van mijn verrijkingen. Dit moet alleen in kleine batches gedaan worden, dus ik wil steeds de oudste 5 (ofzo) records updaten (dus degene die t langs geleden gewijzigd zijn).

Hoe zouden jullie de tabellen opzetten?
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_145162472
quote:
0s.gif Op vrijdag 3 oktober 2014 18:25 schreef slacker_nl het volgende:

[..]

Maar als je gewoon klakkeloos importeert zijn de gegevens zonder te checken of de data veranderd is staat curdate altijd op het import-moment.
Een update wordt niet uitgevoerd als de data die in de tabel staat hetzelfde is.
Dan heb je daar dus geen last van.
  vrijdag 3 oktober 2014 @ 19:00:36 #126
187069 slacker_nl
Sicko pur sang
pi_145162746
quote:
0s.gif Op vrijdag 3 oktober 2014 18:51 schreef totalvamp het volgende:

[..]

Een update wordt niet uitgevoerd als de data die in de tabel staat hetzelfde is.
Dan heb je daar dus geen last van.
Bij MySQL wel, ik weet niet hoe andere databases hiermee omgaan.

Hij update de values niet, maar hij triggert mogelijk wel de iets als je die update doet.. Wij doen bijv dit: last_modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP, waardoor de last_modified aanpast na een update. Of de waardes daadwerkelijk zijn aangepast is niet van belang, de call werd gedaan en wordt zo zichtbaar. Dus..

[ Bericht 11% gewijzigd door slacker_nl op 03-10-2014 19:09:29 ]
In theory there is no difference between theory and practice. In practice there is.
pi_145163006
quote:
0s.gif Op vrijdag 3 oktober 2014 19:00 schreef slacker_nl het volgende:

[..]

Bij MySQL wel, ik weet niet hoe andere databases hiermee omgaan.
Bovendien geef je de curdate mee bij de update dus dan is ie altijd anders. :P
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_145163694
quote:
0s.gif Op vrijdag 3 oktober 2014 19:00 schreef slacker_nl het volgende:

[..]

Bij MySQL wel, ik weet niet hoe andere databases hiermee omgaan.

Hij update de values niet, maar hij triggert mogelijk wel de iets als je die update doet.. Wij doen bijv dit: last_modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP, waardoor de last_modified aanpast na een update. Of de waardes daadwerkelijk zijn aangepast is niet van belang, de call werd gedaan en wordt zo zichtbaar. Dus..
Nee bij MySQL niet, letterlijk net getest.
zelfde data invoegen met een INSERT + UPDATE
1
2
3
4
5
6
7
8
9
Veranderd de update tijd niet:
INSERT INTO test
(name, username) VALUES ('b', 'b')
ON DUPLICATE KEY UPDATE name = 'b', username='b'

Veranderd hem wel:
INSERT INTO test
(name, username) VALUES ('b', 'a')
ON DUPLICATE KEY UPDATE name = 'b', username='a'

Als je het zelf wilt testen kun je deze tabel invoegen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE TABLE IF NOT EXISTS `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `username` varchar(255) NOT NULL,
  `last_update` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

--
-- Gegevens worden uitgevoerd voor tabel `test`
--

INSERT INTO `test` (`id`, `name`, `username`, `last_update`) VALUES
(1, 'a', 'a', '0000-00-00 00:00:00'),
(2, 'b', 'a', '0000-00-00 00:00:00');

Om daarna eerst deze query uit te voeren:
1
2
3
4
5
6
7
8
9
10
11
Deze zal niks doen:

INSERT INTO test
(name, username) VALUES ('a', 'a')
ON DUPLICATE KEY UPDATE name = 'a', username='a'


Deze wel:
INSERT INTO test
(name, username) VALUES ('b', 'a')
ON DUPLICATE KEY UPDATE name = 'b', username='a'


[ Bericht 39% gewijzigd door #ANONIEM op 03-10-2014 19:27:03 ]
pi_145163836
quote:
0s.gif Op vrijdag 3 oktober 2014 19:00 schreef slacker_nl het volgende:

[..]

Bij MySQL wel, ik weet niet hoe andere databases hiermee omgaan.

Hij update de values niet, maar hij triggert mogelijk wel de iets als je die update doet.. Wij doen bijv dit: last_modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP, waardoor de last_modified aanpast na een update. Of de waardes daadwerkelijk zijn aangepast is niet van belang, de call werd gedaan en wordt zo zichtbaar. Dus..
Niet alleen DEFAULT, ook ON UPDATE CURRENT_TIMESTAMP.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  vrijdag 3 oktober 2014 @ 23:40:18 #130
62215 qu63
..de tijd drinkt..
pi_145174772
Aangezien ik het toch rij voor rij uit zou moeten voeren, kan ik net zo goed eerst een "SELECT * FROM voertuigen WHERE kenteken=$kenteken" doen en op basis daarvan INSERT of UPDATE doen.

Toch :?
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  zaterdag 4 oktober 2014 @ 01:26:34 #131
62215 qu63
..de tijd drinkt..
pi_145177855
Dit lijkt mij nu wel een redelijke oplossing:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$columns 
implode(", ",array_keys($code));
$escaped_values array_map(NULLarray_values($code));
$values  implode(", "$escaped_values);
$sql "SELECT kenteken FROM voertuigen WHERE kenteken='".$item["M:PROPERTIES"]["D:KENTEKEN"]."1'";
$result mysqli_query($con$sql);
if(
mysqli_num_rows($result)>0)
    {
    
$sql "UPDATE voertuigen SET Updated='".$item['UPDATED']."', Datumaanvangtenaamstelling='".strtotime($item["M:PROPERTIES"]["D:DATUMAANVANGTENAAMSTELLING"])."', VervaldatumAPK='".strtotime($item["M:PROPERTIES"]["D:VERVALDATUMAPK"])."', Wachtopkeuren='".$item["M:PROPERTIES"]["D:WACHTOPKEUREN"]."' WHERE kenteken='".$item["M:PROPERTIES"]["D:KENTEKEN"]."'";
    
$query mysqli_query($con,$sql);
    }
    else
    {
    
$sql "INSERT INTO `voertuigen` ($columns) VALUES ($values)";
    
$query mysqli_query($con,$sql);
    list(
$klasse$category$EigenarenP$EigenarenZ$CarrosserieOmschrijving$Type$Variant$Uitvoering$Typegoedkeuring$VervalDatTachograaf$TijdAanvangTenaamstelling$Gestolen$Geexporteerd$WAVerzekerd$BijzonderheidTekst$Lengte$Breedte$AantalAssen$AantalWielen$Wielbasis$AfwijkendeMaxSnelheid$AfstandVoorzijdeVrtgTotHartkoppeling) = get_ovi($item["M:PROPERTIES"]["D:KENTEKEN"]);
    
$sql "Update voertuigen SET klasse='".$klasse."', Categorie='".$category."', EigenarenP='".$EigenarenP."', EigenarenZ='".$EigenarenZ."', CarrosserieOmschrijving='".$CarrosserieOmschrijving."', Type='".$Type."', Variant='".$Variant."', Uitvoering='".$Uitvoering."', Typegoedkeuring='".$Typegoedkeuring."', VervalDatTachograaf='".strtotime($VervalDatTachograaf)."', TijdAanvangTenaamstelling='".$TijdAanvangTenaamstelling."', Gestolen='".$Gestolen."', Geexporteerd='".$Geexporteerd."', WAVerzekerd='".$WAVerzekerd."', BijzonderheidTekst='".$BijzonderheidTekst."', Lengte='".$Lengte."', Breedte='".$Breedte."', AantalAssen='".$AantalAssen."', AantalWielen='".$AantalWielen."', Wielbasis='".$Wielbasis."', AfwijkendeMaxSnelheid='".$AfwijkendeMaxSnelheid."', AfstandVoorzijdeVrtgTotHartkoppeling='".$AfstandVoorzijdeVrtgTotHartkoppeling."' WHERE Kenteken = '".$item["M:PROPERTIES"]["D:KENTEKEN"]."'";
    
$query mysqli_query($con,$sql);
?>
$con en $code worden eerder al gedefineerd :)
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_145181669
quote:
0s.gif Op zaterdag 4 oktober 2014 01:26 schreef qu63 het volgende:
Dit lijkt mij nu wel een redelijke oplossing:
[ code verwijderd ]

$con en $code worden eerder al gedefineerd :)
Tip: gebruik PDO. :)
  zaterdag 4 oktober 2014 @ 11:37:50 #133
91039 mstx
2x1/2 = 1/2 x 1/2
pi_145182030
quote:
1s.gif Op zaterdag 4 oktober 2014 11:17 schreef robin007bond het volgende:

[..]

Tip: gebruik PDO. :)
Waarom?
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
pi_145183158
quote:
0s.gif Op zaterdag 4 oktober 2014 11:37 schreef mstx het volgende:

[..]

Waarom?
Als je wilt switchen van database is het veel makkelijker.

Plus er zitten handige dingen in injecties te voorkomen. BindParam etc.
pi_145184582
quote:
0s.gif Op zaterdag 4 oktober 2014 01:26 schreef qu63 het volgende:
Dit lijkt mij nu wel een redelijke oplossing:
[ code verwijderd ]

$con en $code worden eerder al gedefineerd :)
Of je gebruikt gewoon de INSERT en dan ON DUPLICATE KEY UPDATE

waarom zou je daar omheen werken met een constructie die alleen maar meer queries oplevert...

[ Bericht 0% gewijzigd door #ANONIEM op 04-10-2014 13:30:23 ]
pi_145184780
Je kunt ook een Stored procedure schrijven en zo zijn er nog 101 opties. Kies gewoon iets dat werkt, aangezien het voor zover ik kan zien toch niet een of ander enorm project is waarbij de architectuur enorm belangrijk is. Hooguit moet je op een gegeven moment naar performance gaan kijken, maar zolang je nog hele datasets uit een API trekt ligt de bottleneck niet bij wat database interacties.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  zaterdag 4 oktober 2014 @ 14:02:50 #137
62215 qu63
..de tijd drinkt..
pi_145185485
quote:
1s.gif Op zaterdag 4 oktober 2014 11:17 schreef robin007bond het volgende:

[..]

Tip: gebruik PDO. :)
Wat is PDO?
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  zaterdag 4 oktober 2014 @ 14:03:15 #138
62215 qu63
..de tijd drinkt..
pi_145185498
quote:
0s.gif Op zaterdag 4 oktober 2014 13:36 schreef Monolith het volgende:
Je kunt ook een Stored procedure schrijven en zo zijn er nog 101 opties. Kies gewoon iets dat werkt, aangezien het voor zover ik kan zien toch niet een of ander enorm project is waarbij de architectuur enorm belangrijk is. Hooguit moet je op een gegeven moment naar performance gaan kijken, maar zolang je nog hele datasets uit een API trekt ligt de bottleneck niet bij wat database interacties.
Optimalisatie was de volgende stap ja :)
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_145185589
quote:
0s.gif Op zaterdag 4 oktober 2014 14:02 schreef qu63 het volgende:

[..]

Wat is PDO?
http://bit.ly/1uJOkmd
pi_145185627
Ik zit met een vaag probleem. Ik heb een production server waarop ik een website live wil gooien. Ik heb de bestanden in de root van de webserver geüpload.

De folder structure ziet er ongeveer zo uit:

/ root
- application
- system
- public
---- assets
---- index.php
---- .htaccess

Als ik nu naar het domein ga krijg ik de melding dat er geen content geüpload is. Ik snap dat er geen index.php in de root staat en dat dat wel nodig is, maar hoe hou ik dan de private en public content gescheiden? Ik gebruik CodeIgniter trouwens.
pi_145185673
quote:
0s.gif Op zaterdag 4 oktober 2014 14:08 schreef pascal08 het volgende:
Ik zit met een vaag probleem. Ik heb een production server waarop ik een website live wil gooien. Ik heb de bestanden in de root van de webserver geüpload.

De folder structure ziet er ongeveer zo uit:

/ root
- application
- system
- public
---- assets
---- index.php
---- .htaccess

Als ik nu naar het domein ga krijg ik de melding dat er geen content geüpload is. Ik snap dat er geen index.php in de root staat en dat dat wel nodig is, maar hoe hou ik dan de private en public content gescheiden? Ik gebruik CodeIgniter trouwens.
Volgens mij kun je dat allemaal in je .htaccess regelen. :)
pi_145185759
quote:
1s.gif Op zaterdag 4 oktober 2014 14:10 schreef robin007bond het volgende:

[..]

Volgens mij kun je dat allemaal in je .htaccess regelen. :)
Er moet dus ook een .htaccess in de root komen?

1
2
3
4
[..]
RewriteEngine On
RewriteBase /public/
[..]

Zoiets?

[ Bericht 20% gewijzigd door pascal08 op 04-10-2014 14:20:26 ]
  zaterdag 4 oktober 2014 @ 14:30:59 #143
62215 qu63
..de tijd drinkt..
pi_145186194
quote:
0s.gif Op zaterdag 4 oktober 2014 13:30 schreef totalvamp het volgende:

[..]

Of je gebruikt gewoon de INSERT en dan ON DUPLICATE KEY UPDATE

waarom zou je daar omheen werken met een constructie die alleen maar meer queries oplevert...
Dat bedacht ik me gisteravond ook, maar toen vond ik een reden om dat niet te doen.

Geen idee meer wat die reden was -O- :D
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_145186842
quote:
0s.gif Op zaterdag 4 oktober 2014 14:13 schreef pascal08 het volgende:

[..]

Er moet dus ook een .htaccess in de root komen?
[ code verwijderd ]

Zoiets?

De melding is nu weg. Ik heb enkel nog een lege witte pagina nu. Ik heb de bestanden gewoon 1:1 gekopieerd vanuit m'n local environment. Ik snap niet wat er nou fout gaat. :?

Help? :'(
pi_145187358
quote:
0s.gif Op zaterdag 4 oktober 2014 14:30 schreef qu63 het volgende:

[..]

Dat bedacht ik me gisteravond ook, maar toen vond ik een reden om dat niet te doen.

Geen idee meer wat die reden was -O- :D
Luiheid :P?
  zaterdag 4 oktober 2014 @ 15:38:18 #146
62215 qu63
..de tijd drinkt..
pi_145187905
quote:
1s.gif Op zaterdag 4 oktober 2014 15:18 schreef totalvamp het volgende:

[..]

Luiheid :P?
Nee, want ik dacht juist eerst aan INSERT ON DUPLICATE UPDATE :P

t zal de drank wel zijn geweest :')
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  zaterdag 4 oktober 2014 @ 16:52:26 #147
62215 qu63
..de tijd drinkt..
pi_145189407
quote:
1s.gif Op zaterdag 4 oktober 2014 15:18 schreef totalvamp het volgende:

[..]

Luiheid :P?
Ah, ik weet t al!

Mijn script poepte eerst alle velden uit, en maakte daarna een hele lange rij van alle waarden zodat ik het in één query kon doen. Dat zou dus niet meer lukken met een INSERT ON DUPLICATE UPDATE :)

Maar goed, soms is het nodig om je script eens te herzien :P
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  zaterdag 4 oktober 2014 @ 17:46:38 #148
91039 mstx
2x1/2 = 1/2 x 1/2
pi_145190876
quote:
1s.gif Op zaterdag 4 oktober 2014 12:29 schreef robin007bond het volgende:

[..]

Als je wilt switchen van database is het veel makkelijker.

Plus er zitten handige dingen in injecties te voorkomen. BindParam etc.
Met mysqli kun je ook gewoon parameters binden, en wie switcht er in de praktijk nou echt van database?
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
  zaterdag 4 oktober 2014 @ 19:51:11 #149
187069 slacker_nl
Sicko pur sang
pi_145194028
quote:
0s.gif Op zaterdag 4 oktober 2014 17:46 schreef mstx het volgende:

[..]

Met mysqli kun je ook gewoon parameters binden, en wie switcht er in de praktijk nou echt van database?
Bij mijn vorige werkgever gebruikte we sqlite voor de testsuite en postgres voor het echte werk. Of je hebt apps waarbij je een db nodig hebt en die moeten werken of je nu mysql, berkely, postgres of Oracle hebt... shit must work yo.
In theory there is no difference between theory and practice. In practice there is.
pi_145194349
quote:
0s.gif Op zaterdag 4 oktober 2014 17:46 schreef mstx het volgende:

[..]

Met mysqli kun je ook gewoon parameters binden, en wie switcht er in de praktijk nou echt van database?
Ik heb het al degelijk wel eens meegemaakt. Switchen van database (van MySQL naar Postgres) en helaas was er geen gebruik gemaakt van PDO -O-
------___------ 53
----.(___).---- 42
---(o\_!_/o)---
  zaterdag 4 oktober 2014 @ 20:08:02 #151
91039 mstx
2x1/2 = 1/2 x 1/2
pi_145194458
quote:
0s.gif Op zaterdag 4 oktober 2014 20:04 schreef Rockfire het volgende:

[..]

Ik heb het al degelijk wel eens meegemaakt. Switchen van database (van MySQL naar Postgres) en helaas was er geen gebruik gemaakt van PDO -O-
Ja ok, maar hoe zit dat dan met de queries zelf? Moet je dan niet alsnog bepaalde syntax zoals LIMIT...OFFSET aanpassen voor postgres? :?
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
pi_145194505
quote:
0s.gif Op zaterdag 4 oktober 2014 20:08 schreef mstx het volgende:

[..]

Ja ok, maar hoe zit dat dan met de queries zelf? Moet je dan niet alsnog bepaalde syntax zoals LIMIT...OFFSET aanpassen voor postgres? :?
Jawel, maar als dat alles is is het veel minder werk dan ook nog de code ombouwen naar PDO-gebruik
------___------ 53
----.(___).---- 42
---(o\_!_/o)---
  zaterdag 4 oktober 2014 @ 20:13:10 #153
91039 mstx
2x1/2 = 1/2 x 1/2
pi_145194617
quote:
0s.gif Op zaterdag 4 oktober 2014 20:09 schreef Rockfire het volgende:

[..]

Jawel, maar als dat alles is is het veel minder werk dan ook nog de code ombouwen naar PDO-gebruik
In principe heb je gelijk, maar het ligt er ook aan hoe de applicatie is opgebouwd. Ik maak nu zelf gebruik van mysqli maar ik zou het in een paar minuten kunnen ombouwen naar PDO of iets anders omdat ik het gewoon in een database-classje heb zitten dus ik hoef maar een paar functies aan te passen. :Y
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
  zaterdag 4 oktober 2014 @ 20:28:28 #154
187069 slacker_nl
Sicko pur sang
pi_145195072
quote:
0s.gif Op zaterdag 4 oktober 2014 20:08 schreef mstx het volgende:

[..]

Ja ok, maar hoe zit dat dan met de queries zelf? Moet je dan niet alsnog bepaalde syntax zoals LIMIT...OFFSET aanpassen voor postgres? :?
Dat regelt de ORM voor ons. Whieeee.
In theory there is no difference between theory and practice. In practice there is.
pi_145210094
quote:
14s.gif Op donderdag 2 oktober 2014 21:55 schreef KomtTijd... het volgende:
InnoDB tabellen zou je als het goed is niet moeten kunnen kopiëren door de bestanden in het filesystem te kopiëren. Althans, misschien kan het goed gaan maar het wordt uitdrukkelijk afgeraden en niet ondersteund.
Tot op heden geen probleem, maar die kunnen nog komen hoor :D
Just say hi!
pi_145278387
:P Gewoon even omdat ik graag van input van anderen hou,

Hoe zouden jullie de volgende situatie aanpakken;

Een groothandel met een ~10,000 klanten die regelmatig wat bestellen uit een assortiment van 60,000 producten die zijn onderverdeeld in ongeveer 150 categorieën.

Waarbij er per klant/inkoopgroep korting gegeven kan worden complete groepen, individuele producten, staffelkorting, uitzonderingen binnen groepen waarop geen korting gegeven mag worden, actie periodes waarvoor een andere prijs geldt, kortingen vanaf een bepaald bedrag en kortingen die zowel als een prijsafspraak of als een percentage kunnen worden gegeven en combinaties hiertussen.

Dit werkt op dit moment allemaal nog "on the fly" maar ik merk zelf dat de performance wanneer bijvoorbeeld gechecked moet worden op staffelkortingen die gegeven worden op een combinatie van een merk en een groep niet is wat het zou moeten zijn.

Is het een gek idee om kortingen voor een klant op het moment van het aanmaken van een regel,en bij het wijzigen / aanmaken van een product wordt gecontroleerd of er klanten zijn die in aanmerkingen komen voor korting. op te slaan in een database, zodat deze berekeningen niet constant in de winkelwagen, bij wijze van hoeven plaats te vinden?
pi_145285025
Ik zou eerst eens uitzoeken welke queries zo lang duren en waarom, en of je daar iets aan kunt optimaliseren.
pi_145285575
quote:
19s.gif Op maandag 6 oktober 2014 23:22 schreef TwenteFC het volgende:
:P Gewoon even omdat ik graag van input van anderen hou,

Hoe zouden jullie de volgende situatie aanpakken;

Een groothandel met een ~10,000 klanten die regelmatig wat bestellen uit een assortiment van 60,000 producten die zijn onderverdeeld in ongeveer 150 categorieën.

Waarbij er per klant/inkoopgroep korting gegeven kan worden complete groepen, individuele producten, staffelkorting, uitzonderingen binnen groepen waarop geen korting gegeven mag worden, actie periodes waarvoor een andere prijs geldt, kortingen vanaf een bepaald bedrag en kortingen die zowel als een prijsafspraak of als een percentage kunnen worden gegeven en combinaties hiertussen.

Dit werkt op dit moment allemaal nog "on the fly" maar ik merk zelf dat de performance wanneer bijvoorbeeld gechecked moet worden op staffelkortingen die gegeven worden op een combinatie van een merk en een groep niet is wat het zou moeten zijn.

Is het een gek idee om kortingen voor een klant op het moment van het aanmaken van een regel,en bij het wijzigen / aanmaken van een product wordt gecontroleerd of er klanten zijn die in aanmerkingen komen voor korting. op te slaan in een database, zodat deze berekeningen niet constant in de winkelwagen, bij wijze van hoeven plaats te vinden?
Zoals gezegd, kijk eerst waar de bottleneck precies ligt. Alles in MySql proppen is ook niet ideaal, zeker niet als je later besluit om nog eens van Database technologie te wisselen. Het zou bijvoorbeeld ook best kunnen zijn dat het handiger is om hier een back-end service voor in te richten. PHP is niet bepaald optimaal voor zware berekeningen en daarbij kun je met een dergelijke oplossing gebruik maken van caching. Bovendien is het non-blocking, oftewel, de gebruiker hoeft er niet op te wachten. Een andere oplossingsrichting is bijvoorbeeld het gebruik maken van web workers om in de browser asynchroon iets te laten uitvoeren.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_145285887
Sowieso, mocht je voor 1 of 2 berekeningen een pagina op moeten houden, kun je die beter als asynchrone request uitvoeren.
pi_145301387
quote:
19s.gif Op maandag 6 oktober 2014 23:22 schreef TwenteFC het volgende:
:P Gewoon even omdat ik graag van input van anderen hou,

Hoe zouden jullie de volgende situatie aanpakken;

Een groothandel met een ~10,000 klanten die regelmatig wat bestellen uit een assortiment van 60,000 producten die zijn onderverdeeld in ongeveer 150 categorieën.

Waarbij er per klant/inkoopgroep korting gegeven kan worden complete groepen, individuele producten, staffelkorting, uitzonderingen binnen groepen waarop geen korting gegeven mag worden, actie periodes waarvoor een andere prijs geldt, kortingen vanaf een bepaald bedrag en kortingen die zowel als een prijsafspraak of als een percentage kunnen worden gegeven en combinaties hiertussen.

Dit werkt op dit moment allemaal nog "on the fly" maar ik merk zelf dat de performance wanneer bijvoorbeeld gechecked moet worden op staffelkortingen die gegeven worden op een combinatie van een merk en een groep niet is wat het zou moeten zijn.

Is het een gek idee om kortingen voor een klant op het moment van het aanmaken van een regel,en bij het wijzigen / aanmaken van een product wordt gecontroleerd of er klanten zijn die in aanmerkingen komen voor korting. op te slaan in een database, zodat deze berekeningen niet constant in de winkelwagen, bij wijze van hoeven plaats te vinden?
Als eerste zou ik uitzoeken waarom die berekeningen zo lang duren en of er niet wat te optimaliseren valt.

Daarnaast zou ik zeker de resultaten van berekeningen in een cache opslaan (in de sessie van de klant, welke in een file, db, memcached, etc... staat). Dan alleen bij wijzigingen die invloed hebben op de berekening dingen updaten.
Schuimpje... mijn liefste. Verlaat mij nimmer weer...
  dinsdag 7 oktober 2014 @ 19:27:02 #161
355592 Djurres
Knowledge, Fuck it.
pi_145304514
quote:
0s.gif Op zaterdag 4 oktober 2014 20:04 schreef Rockfire het volgende:

[..]

Ik heb het al degelijk wel eens meegemaakt. Switchen van database (van MySQL naar Postgres) en helaas was er geen gebruik gemaakt van PDO -O-
Das wel balen, anders had het in principe alleen een nieuwe handler gekost.
Tadumtiedum.
pi_145326795
Ik ben aan het stoeien met een 'upload' module voor CMSMS. Ik wil de naamgeving van de bestanden aanpassen aan wat de user aangeeft. Dat kan met onderstaande code:

1<p>{$prompt_destname} <input type="text" name="{$actionid}input_destname" value="" size="40" maxlength="255"/></p>

Ik wil aan de naamgeving een timestamp toevoegen. Hoe kan ik dat het beste oplossen?
Feitelijk moet de input value gecombineerd worden met
1{current_date format="%y%m%d%T"}
pi_145327058
uit de documentatie van de uploads module:

quote:
(optional) prefix="0" - Een boolean die aangeeft of bestandsnamen een prefix moeten hebben
(optional) prefix_feu="0" - Een boolean parameter die aangeeft dat de prefix van de huidige auteur gebruikt moet worden of, als deze niet opgegeven is, de prefix van de huidige tijd (in dechex formaat)
Misschien is de engelse helppage wat duidelijker, mocht je er niet uit komen.

[ Bericht 8% gewijzigd door KomtTijd... op 08-10-2014 13:18:55 ]
  woensdag 8 oktober 2014 @ 13:34:39 #164
187069 slacker_nl
Sicko pur sang
pi_145327857
quote:
14s.gif Op woensdag 8 oktober 2014 13:12 schreef KomtTijd... het volgende:
uit de documentatie van de uploads module:

[..]

Misschien is de engelse helppage wat duidelijker, mocht je er niet uit komen.
Noem het dan gewoon has_prefix, prefix_author, dan is het in een keer duidelijk. Naamgeving van dingen.. blergh.
In theory there is no difference between theory and practice. In practice there is.
pi_145327942
Ik denk eerder dat de omschrijvingen gewoon brak vertaald zijn, geen zin om het weer te checken gezien dat met 10 seconden trial-and-error ook wel vast te stellen valt.
pi_145328437
Bedankt voor de feedback. Nu weet ik in ieder geval in welke hoek ik het moet zoeken.

Juist die helppagina vind ik nogal verwarrend. De code heb ik toegevoegd aan de template voor het formulier (bovenstaande code) dat werkte niet. Vervolgens als de code op de pagina en ik krijg het niet aan de praat.
  woensdag 8 oktober 2014 @ 14:00:36 #167
187069 slacker_nl
Sicko pur sang
pi_145328878
quote:
14s.gif Op woensdag 8 oktober 2014 13:36 schreef KomtTijd... het volgende:
Ik denk eerder dat de omschrijvingen gewoon brak vertaald zijn, geen zin om het weer te checken gezien dat met 10 seconden trial-and-error ook wel vast te stellen valt.
Het is ook niet naar jou toe hoor. Ik zie het in onze eigen code base ook. Ding krijgt een naam ala: user_id terwijl we het over een haar_kleur_id hebben. Argh! Dan heb ik liever dat ze het foo noemen.
In theory there is no difference between theory and practice. In practice there is.
pi_145329255
Het scheelt als je de value op "1" zet natuurlijk. :')

Ik denk dat ik er wel uit ga komen.

Thanks!
pi_145330969
quote:
0s.gif Op woensdag 8 oktober 2014 14:00 schreef slacker_nl het volgende:

[..]

Het is ook niet naar jou toe hoor. Ik zie het in onze eigen code base ook. Ding krijgt een naam ala: user_id terwijl we het over een haar_kleur_id hebben. Argh! Dan heb ik liever dat ze het foo noemen.
Van myVar1 t/m myVar392 en myTemporaryVar1 t/m myTemporaryVar921 word ik meestal ook niet echt vrolijk. Eén van de redenen dat ik blij ben dat ik nauwelijks meer met PHP developers te maken heb. :P
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  woensdag 8 oktober 2014 @ 15:24:36 #170
12221 Tijn
Powered by MS Paint
pi_145331748
quote:
0s.gif Op woensdag 8 oktober 2014 15:04 schreef Monolith het volgende:

[..]

Van myVar1 t/m myVar392 en myTemporaryVar1 t/m myTemporaryVar921 word ik meestal ook niet echt vrolijk. Eén van de redenen dat ik blij ben dat ik nauwelijks meer met PHP developers te maken heb. :P
Dit speelt natuurlijk niet alleen onder PHP-developers, he :P

There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
pi_145331895
quote:
2s.gif Op woensdag 8 oktober 2014 15:24 schreef Tijn het volgende:

[..]

Dit speelt natuurlijk niet alleen onder PHP-developers, he :P

There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Nee, maar de kracht van PHP is echter dat het simpel en laagdrempelig. Dat is ook gelijk het probleem. Bijna iedere debiel kan er mee werken en helaas doen ook veel te veel debielen dat. :P
Je kunt prima programmeren in PHP, hoewel de taal zelf al wel enorm slordig en chaotisch is, maar het gebeurt veel te weinig.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  woensdag 8 oktober 2014 @ 15:35:52 #172
12221 Tijn
Powered by MS Paint
pi_145332145
Ik heb wel het idee dat het mede dankzij de toolset van vandaag de dag (Composer, Symphony etc.) en de ontwikkelingen in de taal (deprecaten van mysql_ functies enzo) het de laatste tijd wat beter gesteld is.

Maar om eerlijk te zijn zie ik eigenlijk niet zoveel PHP-code van anderen om echt een idee te hebben van wat mensen over het algemeen doen :+

[ Bericht 0% gewijzigd door Tijn op 08-10-2014 16:19:40 ]
  woensdag 8 oktober 2014 @ 15:41:53 #173
62215 qu63
..de tijd drinkt..
pi_145332336
quote:
2s.gif Op woensdag 8 oktober 2014 15:35 schreef Tijn het volgende:
Ik heb wel het idee dat het mede dankzij de toolset van vandaag de dag (Composer, Symphony etc.) en de ontwikkelingen in de taal (deprecaten van mysql_ functies enzo) de laatste tijd wat beter gesteld is.

Maar om eerlijk te zijn zie ik eigenlijk niet zoveel PHP-code van anderen om echt een idee te hebben van wat mensen over het algemeen doen :+
Ik zal je mijn code verder besparen dan ;)

Het werkt nu zoals t moet (geloof ik), optimaliseren komt daarna :P
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_145333778
quote:
0s.gif Op woensdag 8 oktober 2014 15:04 schreef Monolith het volgende:

[..]

Van myVar1 t/m myVar392 en myTemporaryVar1 t/m myTemporaryVar921 word ik meestal ook niet echt vrolijk. Eén van de redenen dat ik blij ben dat ik nauwelijks meer met PHP developers te maken heb. :P
Of van die mensen die constant bestaande variabelen OPNIEUW in een andere zetten en dan er uiteindelijk niks mee doen :')

1
2
3
4
<?php

$name 
$_POST['name'];
echo 
$name//WAAAAAAAAAAAAAAAAAAAAAAAAAAAAROM!!!!!


[ Bericht 27% gewijzigd door #ANONIEM op 08-10-2014 16:23:49 ]
pi_145334093
quote:
2s.gif Op woensdag 8 oktober 2014 15:35 schreef Tijn het volgende:
Ik heb wel het idee dat het mede dankzij de toolset van vandaag de dag (Composer, Symphony etc.) en de ontwikkelingen in de taal (deprecaten van mysql_ functies enzo) de laatste tijd wat beter gesteld is.

Maar om eerlijk te zijn zie ik eigenlijk niet zoveel PHP-code van anderen om echt een idee te hebben van wat mensen over het algemeen doen :+
Voor de wat grotere projecten wel ja, maar het neemt niet weg dat PHP in de basis nog steeds heel beroerd ontworpen is. Zie bijvoorbeeld deze vermakelijke klaagzang.
Verder wordt er nog heel wat aangeklooid in de PHP wereld.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  woensdag 8 oktober 2014 @ 16:38:03 #176
12221 Tijn
Powered by MS Paint
pi_145334228
quote:
0s.gif Op woensdag 8 oktober 2014 16:33 schreef Monolith het volgende:

[..]

het neemt niet weg dat PHP in de basis nog steeds heel beroerd ontworpen is
Het is helemaal niet ontworpen. Het is samengesteld uit ingestuurde patches vanuit de community. Dat is de reden dat het zo inconsistent is, maar dat is ook de reden dat het bijvoorbeeld een van de eerste talen buiten Javascript was die JSON ondersteunde. PHP's makke is ook z'n kracht, namelijk dat het kan zijn wat de mensen willen dat het is.
pi_145334487
quote:
14s.gif Op woensdag 8 oktober 2014 16:38 schreef Tijn het volgende:

[..]

Het is helemaal niet ontworpen. Het is samengesteld uit ingestuurde patches vanuit de community. Dat is de reden dat het zo inconsistent is, maar dat is ook de reden dat het bijvoorbeeld een van de eerste talen buiten Javascript was die JSON ondersteunde.
Dat is geen excuus natuurlijk. Legio projecten werken met community contributions. Dat betekent echter niet dat elke wijziging blind geaccepteerd wordt of dat er geen hele heldere eisen kunnen worden gesteld waar de bijdragen aan moeten voldoen.

quote:
PHP's makke is ook z'n kracht, namelijk dat het kan zijn wat de mensen willen dat het is.
Zoals ik al zei. Iedere debiel kan het in principe gebruiken, dat is zowel een voordeel als een nadeel. Voor mij als developer toch voornamelijk een nadeel. :P
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  woensdag 8 oktober 2014 @ 17:04:47 #178
187069 slacker_nl
Sicko pur sang
pi_145335121
quote:
2s.gif Op woensdag 8 oktober 2014 15:24 schreef Tijn het volgende:

[..]

Dit speelt natuurlijk niet alleen onder PHP-developers, he :P

There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Klopt. Op mijn werk is het Perl en JS (angular) wat de klok slaat.
In theory there is no difference between theory and practice. In practice there is.
  woensdag 8 oktober 2014 @ 18:36:28 #179
12221 Tijn
Powered by MS Paint
pi_145337856
quote:
0s.gif Op woensdag 8 oktober 2014 16:46 schreef Monolith het volgende:

[..]

Dat is geen excuus natuurlijk. Legio projecten werken met community contributions. Dat betekent echter niet dat elke wijziging blind geaccepteerd wordt of dat er geen hele heldere eisen kunnen worden gesteld waar de bijdragen aan moeten voldoen.
Maar meestal hebben die projecten wel iemand aan het hoofd die de baas is en een visie heeft. Dat is er bij PHP niet. Niemand is de baas en er is geen plan over wat PHP moet zijn. Het is gewoon wat het is.

quote:
Zoals ik al zei. Iedere debiel kan het in principe gebruiken, dat is zowel een voordeel als een nadeel. Voor mij als developer toch voornamelijk een nadeel. :P
Misschien, hoewel je je met kwaliteit wel kunt onderscheiden van de meute. Ik denk dat het voor de wereld als geheel positief is dat er een populaire laagdrempelige programmeertaal bestaat die makkelijk is in te zetten voor het web.
pi_145338133
quote:
2s.gif Op woensdag 8 oktober 2014 18:36 schreef Tijn het volgende:

[..]

Maar meestal hebben die projecten wel iemand aan het hoofd die de baas is en een visie heeft. Dat is er bij PHP niet. Niemand is de baas en er is geen plan over wat PHP moet zijn. Het is gewoon wat het is.
Je hoeft geen echte centrale leider met een visie te hebben hoor. En er is wel degelijk een PHP team. Releases zijn natuurlijk centraal geregeld. Ik heb op PHP conferenties ook vaak genoeg smeekbedes van ze gehoord om ook wat bij te dragen. Op de vraag waarom de grotere partijen als facebook dat niet doen hadden ze dan niet echt een bevredigend antwoord. :P


quote:
Misschien, hoewel je je met kwaliteit wel kunt onderscheiden van de meute. Ik denk dat het voor de wereld als geheel positief is dat er een populaire laagdrempelige programmeertaal bestaat die makkelijk is in te zetten voor het web.
Oh het voldoet prima voor simpele webtoepassingen. Wil je meer performance dan moet je toch zoals facebook wel je eigen compilers gaan schrijven.
En als je niet zoals facebook groeit vanuit een hobby project dan begin je voor Enterprise level applicaties gewoon gelijk met bijvoorbeeld Java.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_145338585
quote:
1s.gif Op woensdag 8 oktober 2014 18:47 schreef Monolith het volgende:

[..]

Je hoeft geen echte centrale leider met een visie te hebben hoor. En er is wel degelijk een PHP team. Releases zijn natuurlijk centraal geregeld. Ik heb op PHP conferenties ook vaak genoeg smeekbedes van ze gehoord om ook wat bij te dragen. Op de vraag waarom de grotere partijen als facebook dat niet doen hadden ze dan niet echt een bevredigend antwoord. :P

[..]

Oh het voldoet prima voor simpele webtoepassingen. Wil je meer performance dan moet je toch zoals facebook wel je eigen compilers gaan schrijven.
En als je niet zoals facebook groeit vanuit een hobby project dan begin je voor Enterprise level applicaties gewoon gelijk met bijvoorbeeld Java.
Wat is eigenlijk jouw mening over Python + Django? :)
  woensdag 8 oktober 2014 @ 19:06:00 #182
12221 Tijn
Powered by MS Paint
pi_145338742
quote:
1s.gif Op woensdag 8 oktober 2014 18:47 schreef Monolith het volgende:

[..]

Ik heb op PHP conferenties ook vaak genoeg smeekbedes van ze gehoord om ook wat bij te dragen. Op de vraag waarom de grotere partijen als facebook dat niet doen hadden ze dan niet echt een bevredigend antwoord. :P
Dat is wel interessant, ja. Je zou zeggen dat grote partijen als Facebook, Wikimedia, Wordpress etc. er veel baat bij hebben om aan PHP mee te bouwen.
  woensdag 8 oktober 2014 @ 19:08:14 #183
56176 Catch22-
Ben je Blind?!
pi_145338822
Facebook heeft toch hiphop?
Heel veel groetjes, Catch22
En zoals mijn opa zei: "Al is het meisje nog zo mooi, haar poep stinkt ook". Rust Zacht opa..
Met GHB nooit meer nee
Storneren een optie?
  woensdag 8 oktober 2014 @ 19:20:20 #184
12221 Tijn
Powered by MS Paint
pi_145339352
quote:
0s.gif Op woensdag 8 oktober 2014 19:08 schreef Catch22- het volgende:
Facebook heeft toch hiphop?
Maar leveren ze daarmee een bijdrage aan de codebase van PHP?
  woensdag 8 oktober 2014 @ 19:48:04 #185
56176 Catch22-
Ben je Blind?!
pi_145340503
quote:
2s.gif Op woensdag 8 oktober 2014 19:20 schreef Tijn het volgende:

[..]

Maar leveren ze daarmee een bijdrage aan de codebase van PHP?
nee maar wel aan de toepassing. Het is íets
Heel veel groetjes, Catch22
En zoals mijn opa zei: "Al is het meisje nog zo mooi, haar poep stinkt ook". Rust Zacht opa..
Met GHB nooit meer nee
Storneren een optie?
pi_145340747
quote:
2s.gif Op woensdag 8 oktober 2014 19:06 schreef Tijn het volgende:

[..]

Dat is wel interessant, ja. Je zou zeggen dat grote partijen als Facebook, Wikimedia, Wordpress etc. er veel baat bij hebben om aan PHP mee te bouwen.
Misschien werkt het al prima en zat het probleem vooral bij performance wat Facebook dus met hiphop heeft opgelost.
pi_145344165
quote:
0s.gif Op woensdag 8 oktober 2014 14:00 schreef slacker_nl het volgende:

[..]

Het is ook niet naar jou toe hoor. Ik zie het in onze eigen code base ook. Ding krijgt een naam ala: user_id terwijl we het over een haar_kleur_id hebben. Argh! Dan heb ik liever dat ze het foo noemen.
Dit soort dingen kom ik inderdaad ook wel eens tegen, godsgruwelijk irritant. Wat ook erg vervelend is wanneer mensen vreselijk inconsistente namen verzinnen.

$aGebruikers = [];
$gebruikersArray = [];
$gebruikers = [];

En dat in één pagina, en het komt er dan op neer dat alles wel iets met gebruikers te maken heeft en dat er ook wel gebruikers inzitten maar dat ze maar van die kut namen kiezen omdat ze de variabele niet willen overschrijven, of weet ik wat voor een reden ze hebben.

Of mensen die een hekel lijken te hebben aan namen die langer zijn bijv. 8 karakters.
Geef die krengen gewoon een naam die in 1 oog opslag te begrijpen is, en dat je weet wat er inzit.
pi_145353569
quote:
0s.gif Op woensdag 8 oktober 2014 16:23 schreef totalvamp het volgende:

[..]

Of van die mensen die constant bestaande variabelen OPNIEUW in een andere zetten en dan er uiteindelijk niks mee doen :')
[ code verwijderd ]

Is daar geen fatsoenlijke tooling voor? Ik develop met name in c# en voor visual studio gebruiken we resharper, als ik daar een variable definieer die niet gebruikt word begint die gelijk te bokken, net zoals als een Variabele mogelijk niet aan confentions voldoet.
🕰️₿🕰️₿🕰️₿🕰️₿🕰️₿🕰️ TikTok next Block
pi_145353577
quote:
0s.gif Op woensdag 8 oktober 2014 15:27 schreef Monolith het volgende:

[..]

Nee, maar de kracht van PHP is echter dat het simpel en laagdrempelig. Dat is ook gelijk het probleem. Bijna iedere debiel kan er mee werken en helaas doen ook veel te veel debielen dat. :P
Je kunt prima programmeren in PHP, hoewel de taal zelf al wel enorm slordig en chaotisch is, maar het gebeurt veel te weinig.
In elke taal kun je prima programmeren, echter als je taal de basis al niet afdwingt dan is de kans op brokken groot, daarom snap ik niet waarom mensen altijd maar worden aangezet om te beginnen met PHP en of Javascript, terwijl dat wel de slechtste talen zijn om te leren developen.
🕰️₿🕰️₿🕰️₿🕰️₿🕰️₿🕰️ TikTok next Block
pi_145353578
quote:
1s.gif Op woensdag 8 oktober 2014 17:04 schreef slacker_nl het volgende:

[..]

Klopt. Op mijn werk is het Perl en JS (angular) wat de klok slaat.
Werk je toevallig voor booking.com :+ ?

Edit: Ik ben dement, had je dit al eerder gevraagt :)
🕰️₿🕰️₿🕰️₿🕰️₿🕰️₿🕰️ TikTok next Block
pi_145353756
quote:
0s.gif Op woensdag 8 oktober 2014 16:23 schreef totalvamp het volgende:

[..]

Of van die mensen die constant bestaande variabelen OPNIEUW in een andere zetten en dan er uiteindelijk niks mee doen :')
[ code verwijderd ]

van die mensen die onzinnige comments maken waar je niks aan hebt zijn ook irritant
10.gif
  donderdag 9 oktober 2014 @ 06:12:03 #192
187069 slacker_nl
Sicko pur sang
pi_145353921
quote:
0s.gif Op donderdag 9 oktober 2014 01:58 schreef raptorix het volgende:

[..]

Werk je toevallig voor booking.com :+ ?

Edit: Ik ben dement, had je dit al eerder gevraagt :)
Nee, maar wel in Amsterdam. Perlhoofdstad van Nederland 8-)

[ Bericht 7% gewijzigd door slacker_nl op 09-10-2014 07:21:35 (mobiel af) ]
In theory there is no difference between theory and practice. In practice there is.
pi_145354794
quote:
0s.gif Op donderdag 9 oktober 2014 01:57 schreef raptorix het volgende:

[..]

In elke taal kun je prima programmeren, echter als je taal de basis al niet afdwingt dan is de kans op brokken groot, daarom snap ik niet waarom mensen altijd maar worden aangezet om te beginnen met PHP en of Javascript, terwijl dat wel de slechtste talen zijn om te leren developen.
Juist vanwege de laagdrempeligheid en als je in de praktijk wilt leren dan is dat lekke makkelijk.
Ik zou echter überhaupt niet gelijk beginnen met programmeren, maar met een iets abstractere basis.
Een groter probleem is mijns inziens juist dat mensen beginnen met een beetje klooien, zonder nou echt de fundamenten te snappen.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  donderdag 9 oktober 2014 @ 09:00:17 #194
230788 n8n
Pragmatisch
pi_145354902
quote:
0s.gif Op donderdag 9 oktober 2014 01:57 schreef raptorix het volgende:

[..]

In elke taal kun je prima programmeren, echter als je taal de basis al niet afdwingt dan is de kans op brokken groot, daarom snap ik niet waarom mensen altijd maar worden aangezet om te beginnen met PHP en of Javascript, terwijl dat wel de slechtste talen zijn om te leren developen.
javascript is fucking baas. Prima instapper juist.
Specialization is for insects”.—Robert Heinlein
  donderdag 9 oktober 2014 @ 09:10:19 #195
12221 Tijn
Powered by MS Paint
pi_145355018
quote:
1s.gif Op donderdag 9 oktober 2014 09:00 schreef n8n het volgende:

[..]

javascript is fucking baas. Prima instapper juist.
Het probleem met Javascript is dat je echt heel goed moet weten hoe de taal werkt voordat je er goed mee aan de slag kunt. Er zijn heel veel dingen die stilzwijgend gebeuren en niet altijd even logisch zijn. Ik denk dat een beginner zich vooral moet concentreren op hoe programmeren überhaupt werkt en dan zijn de quirks van JS eigenlijk onnodige ballast.
pi_145355084
quote:
1s.gif Op donderdag 9 oktober 2014 09:00 schreef n8n het volgende:

[..]

javascript is fucking baas. Prima instapper juist.
1
2
console.log(0.4 + 0.3);
console.log(0.4 + 0.2);


Wat zie je in de console als je dit uitvoert?
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  donderdag 9 oktober 2014 @ 09:39:09 #197
12221 Tijn
Powered by MS Paint
pi_145355477
quote:
0s.gif Op donderdag 9 oktober 2014 09:15 schreef Monolith het volgende:
[..]
[ code verwijderd ]
Wat zie je in de console als je dit uitvoert?
Dat floats niet precies zijn ligt niet aan Javascript, dat komt door je CPU. Elke programmeertaal heeft hier last van.

Als ik in C uitvoer:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int main (int argv, char* argc[]) {
  
  if(0.4 + 0.3 == 0.7)
  {
    printf("0.4 + 0.3 = 0.7\r\n");
  }
  else
  {
    printf("wut?\r\n");
  }
  
  if(0.4 + 0.2 == 0.6)
  {
    printf("0.4 + 0.2 = 0.6\r\n");
  }
  else
  {
    printf("wut?\r\n");
  }

  return EXIT_SUCCESS;   
}

Dan is de output:

1
2
0.4 + 0.3 = 0.7
wut?
pi_145355837
Java is in mijn ogen de beste taal om te beginnen. Forceert een paradigma waardoor je beginners niet verward.
  donderdag 9 oktober 2014 @ 09:58:02 #199
187069 slacker_nl
Sicko pur sang
pi_145355947
Ik zou juist beginnen met shell scriptjes... O+
In theory there is no difference between theory and practice. In practice there is.
pi_145356027
quote:
0s.gif Op donderdag 9 oktober 2014 09:58 schreef slacker_nl het volgende:
Ik zou juist beginnen met shell scriptjes... O+
Lekker BASH coden!
Kom maar konijntje, doe maar wiebelen wiebelen...
  donderdag 9 oktober 2014 @ 10:03:37 #201
12221 Tijn
Powered by MS Paint
pi_145356084
De beste programmeercursus die ik ooit gevolgd heb begon met assembly en richtte zich daarna op C. Ik denk dat dat eigenlijk het beste pad is voor beginners.
pi_145356103
quote:
14s.gif Op donderdag 9 oktober 2014 10:03 schreef Tijn het volgende:
De beste programmeercursus die ik ooit gevolgd heb begon met assembly en richtte zich daarna op C. Ik denk dat dat eigenlijk het beste pad is voor beginners.
:o
Ben je niet bang dat ze in het procedurele blijven hangen?
  donderdag 9 oktober 2014 @ 10:05:14 #203
12221 Tijn
Powered by MS Paint
pi_145356130
quote:
1s.gif Op donderdag 9 oktober 2014 10:04 schreef robin007bond het volgende:
[..]
:o
Ben je niet bang dat ze in het procedurele blijven hangen?
Nee. Als je in de praktijk aan de slag wil, kun je toch niet om objecten heen.
pi_145356275
quote:
14s.gif Op donderdag 9 oktober 2014 10:05 schreef Tijn het volgende:

[..]

Nee. Als je in de praktijk aan de slag wil, kun je toch niet om objecten heen.
Nou ja, helaas wordt er nog altijd vandaag de dag enkel procedureel in PHP geprogrammeerd. Gelukkig lijkt dat steeds minder te worden, maar toch. :P
  donderdag 9 oktober 2014 @ 10:11:57 #205
12221 Tijn
Powered by MS Paint
pi_145356304
quote:
1s.gif Op donderdag 9 oktober 2014 10:10 schreef robin007bond het volgende:
[..]
Nou ja, helaas wordt er nog altijd vandaag de dag enkel procedureel in PHP geprogrammeerd. Gelukkig lijkt dat steeds minder te worden, maar toch. :P
Met al die frameworks tegenwoordig zal dat wel meevallen toch?

Hoe dan ook: liever iemand die goede procedurele code schrijft, dan iemand die maar wat aanrommelt met objecten.
pi_145356524
quote:
0s.gif Op donderdag 9 oktober 2014 09:58 schreef slacker_nl het volgende:
Ik zou juist beginnen met shell scriptjes... O+
:r als er iets aids is... Ik heb PHP op mijn router geïnstalleerd om niet te hoeven bashen.
pi_145365130
quote:
14s.gif Op woensdag 8 oktober 2014 13:12 schreef KomtTijd... het volgende:
uit de documentatie van de uploads module:
[..]
Misschien is de engelse helppage wat duidelijker, mocht je er niet uit komen.
Ik zit nu op het punt dat ik problemen heb met uploaden vanaf mobiel. Selecteren van bestanden gaat perfect tot ik het bestand ga uploaden. Bij iPhone zie ik een preview maar wordt het bestand niet geupload met uiteindelijk een timeout en bij HTC geeft ie een foutmelding wat betreft de extentie (die ontbreekt volgens mij).

In de helpfile wordt verder niet gerept over mobiel. Heb jij een idee hoe ik dit op kan lossen?
pi_145366048
quote:
14s.gif Op donderdag 9 oktober 2014 10:11 schreef Tijn het volgende:
[..]
Met al die frameworks tegenwoordig zal dat wel meevallen toch?
Hoe dan ook: liever iemand die goede procedurele code schrijft, dan iemand die maar wat aanrommelt met objecten.
Het probleem is dat je dan nog steeds vaak dit soort zaken krijgt:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
public class myController {

    @
RequestMapping("/product/@id")
    public function 
loadProductPage() {

        
//IK PLEUR GEWOON LEKKER AL M'N CODE HIERNEER, 
        //WANT VAN DESIGN PATTERNS OF OO PRINCIPLES HEB IK NOG NOOIT GEHOORD.
    
}

}
?>
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_145366122
Via iPhone kan ik in het admin gedeelte van CMSMS uberhaupt geen bestanden uploaden. Dat gaat dan sowieso niet werken ben ik bang.
HTC lukt wel (maar inderdaad zonder extentie), daar moet nog wel omheen zijn te komen.

Edit: Fucking iOS. Het zit kennelijk in mijn versie na testen op meerdere devices.

[ Bericht 17% gewijzigd door noobs op 09-10-2014 16:06:45 ]
pi_145367293
Ik wil met preg_match checken op letters, cijfers en -. Dat doe ik met:
1"/^[a-zA-Z\d-]+$/"

Het werkt, maar klopt het ook?
pi_145367978
quote:
0s.gif Op donderdag 9 oktober 2014 16:27 schreef xaban06 het volgende:
Ik wil met preg_match checken op letters, cijfers en -. Dat doe ik met:
[ code verwijderd ]
Het werkt, maar klopt het ook?
Doe gewoon lekker "/^\w+$/" ben je meteen klaar.
Kom maar konijntje, doe maar wiebelen wiebelen...
pi_145367997
quote:
0s.gif Op donderdag 9 oktober 2014 16:27 schreef xaban06 het volgende:
Ik wil met preg_match checken op letters, cijfers en -. Dat doe ik met:
[ code verwijderd ]
Het werkt, maar klopt het ook?
En wat moet het precies matchen?
Kom maar konijntje, doe maar wiebelen wiebelen...
pi_145368447
quote:
0s.gif Op donderdag 9 oktober 2014 16:50 schreef Hoplahopla het volgende:
[..]
En wat moet het precies matchen?
Het moet altijd letters en cijfers bevatten, niet hoofdlettergevoelig. Er mag een - voorkomen, maar hoeft niet altijd. Buiten dit mag er niks anders in voorkomen.
pi_145368473
quote:
0s.gif Op donderdag 9 oktober 2014 16:27 schreef xaban06 het volgende:
Ik wil met preg_match checken op letters, cijfers en -. Dat doe ik met:
[ code verwijderd ]
Het werkt, maar klopt het ook?
ik zou nog wel even een \ voor die laatste - zitten. In principe is het zo geldig, maar bijvoorbeeld iets als /^[abcde-jklmn]+$/ matcht niet op a-, /^[abcde\-jklmn]+$/ wel.

quote:
0s.gif Op donderdag 9 oktober 2014 16:50 schreef Hoplahopla het volgende:
[..]
Doe gewoon lekker "/^\w+$/" ben je meteen klaar.
Nee, want dan heb je - niet.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_145368511
Owja. Underscore. Verkeerd gezien.
Kom maar konijntje, doe maar wiebelen wiebelen...
  donderdag 9 oktober 2014 @ 17:34:02 #216
187069 slacker_nl
Sicko pur sang
pi_145369386
quote:
0s.gif Op donderdag 9 oktober 2014 16:27 schreef xaban06 het volgende:
Ik wil met preg_match checken op letters, cijfers en -. Dat doe ik met:
[ code verwijderd ]
Het werkt, maar klopt het ook?
Het klopt, maar ik zou het [\w-]+ doen, of [[:alnum:]-]+ en misschien zelfs: [\p{Alnum}-] (Unicode).
In theory there is no difference between theory and practice. In practice there is.
pi_145369599
quote:
0s.gif Op donderdag 9 oktober 2014 15:44 schreef Monolith het volgende:
[..]
Het probleem is dat je dan nog steeds vaak dit soort zaken krijgt:
[ code verwijderd ]
:D
  donderdag 9 oktober 2014 @ 17:44:04 #218
187069 slacker_nl
Sicko pur sang
pi_145369647
quote:
14s.gif Op donderdag 9 oktober 2014 10:20 schreef KomtTijd... het volgende:
[..]
:r als er iets aids is... Ik heb PHP op mijn router geïnstalleerd om niet te hoeven bashen.
Heiden. Shell scriptjes zijn zo geniaal tof vet simpel. Ik zou echt geen PHP willen gebruiken daarvoor. Maar goed, ik schrijf in Perl, dan zit er ook een kronkel in je hoofd.
In theory there is no difference between theory and practice. In practice there is.
pi_145375207
quote:
0s.gif Op donderdag 9 oktober 2014 17:34 schreef slacker_nl het volgende:
[..]
Het klopt, maar ik zou het [\w-]+ doen, of [[:alnum:]-]+ en misschien zelfs: [\p{Alnum}-] (Unicode).
Maar underscore zit toch ook in \w ?
pi_145375854
quote:
14s.gif Op donderdag 9 oktober 2014 10:11 schreef Tijn het volgende:
[..]
Met al die frameworks tegenwoordig zal dat wel meevallen toch?
Hoe dan ook: liever iemand die goede procedurele code schrijft, dan iemand die maar wat aanrommelt met objecten.
Frameworks zijn handig, echter als je een framework zomaar gebruikt zonder de onderliggende basis te kennen is het vragen om problemen, zie je veel met JQuery, mensen zien vaak niet in dat je onderliggend gewoon DOM transformaties aan het doen bent, vandaar dat performance vaak dramatisch word :)
🕰️₿🕰️₿🕰️₿🕰️₿🕰️₿🕰️ TikTok next Block
pi_145376049
quote:
0s.gif Op donderdag 9 oktober 2014 17:44 schreef slacker_nl het volgende:
[..]
Heiden. Shell scriptjes zijn zo geniaal tof vet simpel. Ik zou echt geen PHP willen gebruiken daarvoor. Maar goed, ik schrijf in Perl, dan zit er ook een kronkel in je hoofd.
Een bijverschijnsel is dat je het 100x meldt? :P
  donderdag 9 oktober 2014 @ 21:28:10 #222
187069 slacker_nl
Sicko pur sang
pi_145377104
quote:
0s.gif Op donderdag 9 oktober 2014 20:28 schreef xaban06 het volgende:

[..]

Maar underscore zit toch ook in \w ?
Ja. Maar daarom de POSIX alnum en/of unicode variant.

En ik schrijf Perl.
In theory there is no difference between theory and practice. In practice there is.
pi_145383228
quote:
0s.gif Op donderdag 9 oktober 2014 17:44 schreef slacker_nl het volgende:
[..]
Heiden. Shell scriptjes zijn zo geniaal tof vet simpel. Ik zou echt geen PHP willen gebruiken daarvoor. Maar goed, ik schrijf in Perl, dan zit er ook een kronkel in je hoofd.
Scheer je weg uit het PHP-topic.
pi_145383719
1number_format(100/$bar->foo, 1);

Hij lijkt de decimalen te negeren van $bar->foo.

Als $bar->foo bijvoorbeeld 3.4 is krijg ik als resultaat 33.3, hij rond de 3.4 dus af naar 3 voordat hij rekent.

Hoe komt dat en hoe op te lossen?

/edit
Nevermind, opgelost. Moest er een string van maken :)
pi_145384698
quote:
0s.gif Op vrijdag 10 oktober 2014 01:07 schreef xaban06 het volgende:
[ code verwijderd ]
Hij lijkt de decimalen te negeren van $bar->foo.
Als $bar->foo bijvoorbeeld 3.4 is krijg ik als resultaat 33.3, hij rond de 3.4 dus af naar 3 voordat hij rekent.
Hoe komt dat en hoe op te lossen?
/edit
Nevermind, opgelost. Moest er een string van maken :)
Code die hier staat geeft bij mij gewoon direct 29.4 hoor.
Wel wel mogelijk is dat bij jou de typecasting wat nukkig deed. (100 zag hij dan als int, waardoor hij besloot om de (string??) van 3.4, ook te casten naar een int. wat 3 geeft. Oplossing daarvoor was dan om aan te geven dat 100 een float is door er 100f van te maken.

Het grote nadeel van de dynamische typecasting van php. Is gewoon alles defineren als int, float, string etc toch handiger :P

[ Bericht 8% gewijzigd door #ANONIEM op 10-10-2014 02:24:56 ]
pi_145415554
quote:
1s.gif Op woensdag 8 oktober 2014 17:04 schreef slacker_nl het volgende:
[..]
Klopt. Op mijn werk is het Perl en JS (angular) wat de klok slaat.
Een van de weinige bedrijven waar nog het een en ander met Perl gedaan wordt, denk ik.
  zaterdag 11 oktober 2014 @ 06:43:08 #227
187069 slacker_nl
Sicko pur sang
pi_145421005
quote:
0s.gif Op vrijdag 10 oktober 2014 23:11 schreef Light het volgende:

[..]

Een van de weinige bedrijven waar nog het een en ander met Perl gedaan wordt, denk ik.
Valt mee. Krijg geregeld aanbiedingen van head hunters/recruiters.
In theory there is no difference between theory and practice. In practice there is.
pi_145421094
1
2
3
<?php
date_format
(new DateTime($test->datum), 'd F Y');
?>

Wordt weergegeven als: 27 January 2014
Dit wil ik vertalen naar het Nederlands, dus: 27 januari 2014

Volgens mij moet dit met setlocale(LC_TIME, "nl_NL"); + strftime();

Ik kom er echter niet uit om strftime(); te gebruiken zonder een extra regel hoeven te gebruiken. Of ontkom ik daar niet aan?

[ Bericht 0% gewijzigd door xaban06 op 11-10-2014 07:38:13 ]
  zaterdag 11 oktober 2014 @ 09:29:53 #229
187069 slacker_nl
Sicko pur sang
pi_145421702
quote:
0s.gif Op zaterdag 11 oktober 2014 07:32 schreef xaban06 het volgende:
[ code verwijderd ]
Wordt weergegeven als: 27 January 2014
Dit wil ik vertalen naar het Nederlands, dus: 27 januari 2014
Volgens mij moet dit met setlocale(LC_TIME, "nl_NL"); + strftime();
Ik kom er echter niet uit om strftime(); te gebruiken zonder een extra regel hoeven te gebruiken. Of ontkom ik daar niet aan?
1
2
3
4
5
6
7
8
9
10
date_default_timezone_set("Europe/Amsterdam");
# Ik zet alles om naar NL, jij alleen je tijd. Pick any.
setlocale(LC_ALL, array(
    'nl_NL.utf8',
    'nl_NL@euro',
    'nl_NL.iso885915@euro',
    'nl_NL.iso88591',
    'nl_NL',
    'POSIX',
));
Zoiets? Nee, je moet inderdaad de strftime gebruiken, die maakt gebruik van de locale setting.

1
2
setlocale(LC_TIME, "de_DE"); //only necessary if the locale isn't already set
$formatted_time = strftime("%a %e.%l.%Y", $mytime->getTimestamp())
http://stackoverflow.com/(...)ing-localegetdefault

[ Bericht 16% gewijzigd door slacker_nl op 11-10-2014 09:47:44 ]
In theory there is no difference between theory and practice. In practice there is.
pi_145421798
quote:
0s.gif Op zaterdag 11 oktober 2014 09:29 schreef slacker_nl het volgende:
[..]
[ code verwijderd ]
Zoiets?
Volgens mij ben ik onduidelijk geweest met mijn vraag :P

Dit wordt in het Engels weergegeven:
1
2
3
<?php
date_format
(new DateTime($test->datum), 'd F Y');
?>

Dat wil ik in het Nederlands, daarvoor moet ik functie strftime(); gebruiken, maar krijg het niet helemaal geimplementeerd. Of ik moet met extra regels en $vars werken.
  zaterdag 11 oktober 2014 @ 09:49:00 #231
187069 slacker_nl
Sicko pur sang
pi_145421924
In theory there is no difference between theory and practice. In practice there is.
pi_145421925
Opgelost :)
1<?php echo strftime("%e %B %Y"strtotime($test->datum)); ?>
  zaterdag 11 oktober 2014 @ 09:52:43 #233
187069 slacker_nl
Sicko pur sang
pi_145421961
quote:
0s.gif Op zaterdag 11 oktober 2014 09:49 schreef xaban06 het volgende:
Opgelost :)
[ code verwijderd ]
Dat zou ik die strtotime weglaten en gelijk $test->datum->getTimestamp doen.
In theory there is no difference between theory and practice. In practice there is.
pi_145453078
Mijn website wordt op het moment zo opgebouwd (index.php):

- include controller.php (deze checkt in de URI welke pagina geladen moet worden en slaat dit op als $show == "blog" of $show == "contact".)
- include "inc/header-html.php";
- if ($show == "blog") { include "inc/blog.php"; }
- if ($show == "contact") { include "inc/contact.php"; }
- include "inc/footer-html.php";

Het probleem hierbij is dat de <meta> en <title> altijd hetzelfde is, omdat ik in blog.php/contact.php pas weet welke data er getoond zal worden, terwijl de <meta>/<title> in "inc/header-html.php" zit.

Dit dacht ik op te lossen door mijn index.php aan te passen naar:
- include functions.php
- include controller.php (deze checkt in de URI welke pagina geladen moet worden en slaat dit op als $show == "blog" or $show == "contact")
- if ($show == "blog") { include "inc/blog.php"; }
- if ($show == "contact") { include "inc/contact.php"; }

Het verschil zit hem in dat de header-html.php wordt geladen in blog.php/contact.php.

functions.php:
1
2
3
4
5
6
7
8
9
10
11
<?php
function showPage($page) {
    
$inc    "inc/";

    include 
$inc .'header-html.php';
    
    include 
$inc ."$page";
    
    include 
$inc .'footer-html.php';
}
?>
En in blog.php/contact.php heb ik dan:
// hoop php script, waar ik dus ook gelijk <meta>/<title> definieer en onderaan heb ik dan:
showPage("blog-html.php");

De HTML wordt netjes opgebouwd, maar veel $vars/$objects worden genegeerd. Heeft dat te maken met de functie die ik gebruik? Kan je geen bestanden includen binnen een functie oid?
pi_145453804
Zie http://php.net/manual/en/function.include.php en http://php.net/manual/en/language.variables.scope.php

Als je include aanroept, dan heb je in het geïncludeerde bestand de beschikking over de variablen die binnen scope vallen op de regel van de include. Dus in jouw geval: alle variabelen die binnen de functie showPage beschikbaar zijn. Daar vallen variabelen uit blog.php/contact.php waarschijnlijk niet onder.

Overigens kun je jouw probleem wellicht beter oplossen middels output buffering. Voorbeeld:

1
2
3
4
5
6
7
8
9
<?php
ob_start
();
include 
'blog.php'// Zet ook de meta/title objecten
$content ob_get_clean();

include 
'header-html.php';
echo 
$content;
include 
'footer-html.php';
?>
Schuimpje... mijn liefste. Verlaat mij nimmer weer...
pi_145454285
quote:
2s.gif Op zondag 12 oktober 2014 13:54 schreef papernote het volgende:
Zie http://php.net/manual/en/function.include.php en http://php.net/manual/en/language.variables.scope.php
Als je include aanroept, dan heb je in het geïncludeerde bestand de beschikking over de variablen die binnen scope vallen op de regel van de include. Dus in jouw geval: alle variabelen die binnen de functie showPage beschikbaar zijn. Daar vallen variabelen uit blog.php/contact.php waarschijnlijk niet onder.
Overigens kun je jouw probleem wellicht beter oplossen middels output buffering. Voorbeeld:
[ code verwijderd ]
Als ik het goed begrijp alles wat tussen ob_start(); en ob_get_clean(); staat wordt niet verzonden, maar vastgehouden in een buffer? Tot dat je het zelf echo'd? Maar je kan de data die worden genereerd in je buffer wel gewoon gebruiken zonder te verzenden?

Ben een vrij rookie met php en nog nooit output buffering gebruikt.
pi_145454397
Correct. Alle php-code tussen ob_start en ob_get_clean wordt uitgevoerd, maar de output wordt gebufferd (in het voorbeeld sla ik het op in $content).

Als je dus in blog.php iets doet als: $meta = "lalala"; $title = "lololo"; , dan kun je dat verderop gebruiken.
Schuimpje... mijn liefste. Verlaat mij nimmer weer...
  zondag 12 oktober 2014 @ 14:24:35 #238
187069 slacker_nl
Sicko pur sang
pi_145454693
Maar om dit soort problemen te voorkomen hebben we toch templating engines?
In theory there is no difference between theory and practice. In practice there is.
pi_145454900
quote:
0s.gif Op zondag 12 oktober 2014 14:24 schreef slacker_nl het volgende:
Maar om dit soort problemen te voorkomen hebben we toch templating engines?
Geen ervaring mee. Ik doe het in mijn vrije tijd en helaas te weinig tijd om het allemaal te leren.
  zondag 12 oktober 2014 @ 14:32:42 #240
12221 Tijn
Powered by MS Paint
pi_145454975
quote:
1s.gif Op zondag 12 oktober 2014 14:30 schreef xaban06 het volgende:

[..]

Geen ervaring mee. Ik doe het in mijn vrije tijd en helaas te weinig tijd om het allemaal te leren.
Juist als je er weinig tijd in wil steken zou ik gebruik maken van bestaande systemen dan zelf iets in elkaar te gaan rommelen.
  maandag 13 oktober 2014 @ 15:42:59 #241
37634 wobbel
Da WoBBeL King
pi_145494353
Hoe krijg ik van onderstaande XML alle nummers in een array? Soms zijn het 10 nummers, soms is het er maar 1....

Met simplexml_load_string weet ik niet hoe ik hiervan een array moet bakken waar ik vervolgens iets mee kan :@ ik kan dan niet met een foreach loopen door de nummers bijvoorbeeld

Na het laden van simplexml_load_string kan ik er wel een array van printen met print_r ( $xml->messagebody->order->mobilenumbers ); maar dan kan ik er geen foreachje mee doen

[update]
Op de volgende manier is het gelukt. Is dit netjes of is dit om te janken?

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
foreach($xml->messagebody->order->mobilenumbers as $nummer)
{
    
    foreach ( 
$nummer->number as $value )
    {
        
        echo 
"Nummer: " $value "<br /><br />";    
        
    }
    
}    
?>

Voorbeeld met 1 nummer
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="UTF-8"?>
<mobile_orderdetail_ack xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <messageheader>
    <messagetype>mobile_orderdetail_ack</messagetype>
    <messageversion>01</messageversion>
    <timestamp>2014-10-13T15:28:04+02:00</timestamp>
    <reference>abchenkdetank</reference>
    <requestid>12345-REQUEST-ID</requestid>
  </messageheader>
  <messagebody>
    <order>
      <general>
        <customer>Klantnaam</customer>
        <orderdate>2014-06-24</orderdate>
        <msub>msub1337</msub>
      </general>
      <mobilenumbers>
        <number>0612345678</number>
      </mobilenumbers>
      </orders>
    </order>
  </messagebody>
</mobile_orderdetail_ack>

Voorbeeld met 3 nummers

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
<?xml version="1.0" encoding="UTF-8"?>
<mobile_orderdetail_ack xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <messageheader>
    <messagetype>mobile_orderdetail_ack</messagetype>
    <messageversion>01</messageversion>
    <timestamp>2014-10-13T15:28:04+02:00</timestamp>
    <reference>abchenkdetank</reference>
    <requestid>12345-REQUEST-ID</requestid>
  </messageheader>
  <messagebody>
    <order>
      <general>
        <customer>Klantnaam</customer>
        <orderdate>2014-06-24</orderdate>
        <msub>msub1337</msub>
      </general>
      <mobilenumbers>
        <number>0612345678</number>
        <number>0612341234</number>
        <number>0687654321</number>
      </mobilenumbers>
      </orders>
    </order>
  </messagebody>
</mobile_orderdetail_ack>


[ Bericht 4% gewijzigd door wobbel op 13-10-2014 15:58:11 ]
pi_145499094
quote:
0s.gif Op maandag 13 oktober 2014 15:42 schreef wobbel het volgende:
Hoe krijg ik van onderstaande XML alle nummers in een array? Soms zijn het 10 nummers, soms is het er maar 1....
Met simplexml_load_string weet ik niet hoe ik hiervan een array moet bakken waar ik vervolgens iets mee kan :@ ik kan dan niet met een foreach loopen door de nummers bijvoorbeeld
Na het laden van simplexml_load_string kan ik er wel een array van printen met print_r ( $xml->messagebody->order->mobilenumbers ); maar dan kan ik er geen foreachje mee doen
[update]
Op de volgende manier is het gelukt. Is dit netjes of is dit om te janken?
[ code verwijderd ]
Voorbeeld met 1 nummer
[ code verwijderd ]
Voorbeeld met 3 nummers
[ code verwijderd ]
Kan dat niet korter?

1
2
3
4
5
<?php
foreach($xml->messagebody->order->mobilenumbers->number as $value ) {
  echo 
"Nummer: " $value "<br /><br />";    
}
?>

edit: je voorbeeld XML is invalid (er staat een </orders> die daar niet hoort).
Schuimpje... mijn liefste. Verlaat mij nimmer weer...
  maandag 13 oktober 2014 @ 18:07:24 #243
187069 slacker_nl
Sicko pur sang
pi_145499591
quote:
5s.gif Op maandag 13 oktober 2014 17:53 schreef papernote het volgende:
[..]
Kan dat niet korter?
[ code verwijderd ]
edit: je voorbeeld XML is invalid (er staat een </orders> die daar niet hoort).
Dat ligt eraan, als mobilenumbers een scalar value teruggeeft is jouw voorbeeld goed, maar als ie in list-context iets teruggeeft gaat het fout, want dat zit je op een lijst ->number uit te voeren en volgens mij kent een php array geen 'number' method.

Mogelijk kan je array_map gebruiken, http://stackoverflow.com/(...)rray-using-array-map
In theory there is no difference between theory and practice. In practice there is.
pi_145500820
quote:
0s.gif Op maandag 13 oktober 2014 18:07 schreef slacker_nl het volgende:
[..]
Dat ligt eraan, als mobilenumbers een scalar value teruggeeft is jouw voorbeeld goed, maar als ie in list-context iets teruggeeft gaat het fout, want dat zit je op een lijst ->number uit te voeren en volgens mij kent een php array geen 'number' method.
Mogelijk kan je array_map gebruiken, http://stackoverflow.com/(...)rray-using-array-map
Dat "number" is een onderdeel van de XML, geen PHP aanroep. Zie de voorbeeld XML in de post van wobbel. Mijn code werkt op beide voorbeelden (na de aanpassing van de edit).

Of begrijp ik je niet goed?
Schuimpje... mijn liefste. Verlaat mij nimmer weer...
pi_145504275
1
2
REPLACE INTO tabel(naam,stad,leeftijd)
VALUES('Jan','Rotterdam','18')

1
2
REPLACE INTO tabel(naam,stad,leeftijd)
VALUES('Jan','Amsterdam','18')

1
2
REPLACE INTO tabel(naam,stad,leeftijd)
VALUES('Jan','Rotterdam','20')

Wat doet dit? Maakt het 3 nieuwe records aan? Of wordt er met de eerste query een record aangemaakt en de tweede+derde record passen het aan?

Of is het mogelijk om aan te geven op welke veld hij moet matchen en aan de hand daarvan kiest om een record te updaten of een record toe te voegen?
pi_145505728
Als er een duplicate key zou zijn doet hij een DELETE en daarna alsnog een INSERT.

Als je wilt update moet je ON DUPLICATE KEY UPDATE gebruiken.
pi_145522193
When the student is ready, the teacher will appear.
When the student is truly ready, the teacher will disappear.
  dinsdag 14 oktober 2014 @ 10:52:12 #248
187069 slacker_nl
Sicko pur sang
pi_145523904
quote:
2s.gif Op maandag 13 oktober 2014 18:42 schreef papernote het volgende:
[..]
Dat "number" is een onderdeel van de XML, geen PHP aanroep. Zie de voorbeeld XML in de post van wobbel. Mijn code werkt op beide voorbeelden (na de aanpassing van de edit).
Of begrijp ik je niet goed?
Waar ik over val is niet bestaand zie ik. Ik vond het nogal vreemd dat je $xml->mobilenumbers->number doet en dat ie dan over alle mobile numbers loopt. Daar had ik namelijk een lijst verwacht. Maar kennelijk is dat niet zo zie ik hier.
In theory there is no difference between theory and practice. In practice there is.
pi_145561504
Iemand hier bekend met Laravel Eloquent?
Ik heb 3 tabellen:
users
permissions
user_permissions

Nu wil ik met eagerloading een query maken hierop, waarbij permissions.name gebruikt wordt.

Normaal:
1
2
3
4
5
6
7
8
9
10
SELECT * 
FROM permissions
LEFT JOIN user_permissions
ON permissions.id = user_permissions.permission_id
LEFT JOIN users
ON user_permissions.user_id = users.id
WHERE
permissions.name = 'name.of.permission'
AND
users.id = 15
pi_145571268
weet iemand hoe ik een htaccess bestand uit een 'parent' directory kan laten negeren? bv:

public_html/www/index.php
public_html/www/.htaccess
public_html/www/blog/

en als dan public_html/www/blog/index.php wordt opgevraagd dat het bovenliggende .htaccess bestand geheel genegeerd wordt, is dat mogelijk?
..///
pi_145571906
quote:
0s.gif Op woensdag 15 oktober 2014 16:23 schreef wipes66 het volgende:
weet iemand hoe ik een htaccess bestand uit een 'parent' directory kan laten negeren? bv:
public_html/www/index.php
public_html/www/.htaccess
public_html/www/blog/
en als dan public_html/www/blog/index.php wordt opgevraagd dat het bovenliggende .htaccess bestand geheel genegeerd wordt, is dat mogelijk?
Een .htaccess in blog maken met:
1RewriteEngine Off
óf in de .htaccess toevoegen (uit m'n hoofd):
1RewriteConf %{REQUEST_URI} !^/blog/?
When the student is ready, the teacher will appear.
When the student is truly ready, the teacher will disappear.
pi_145572017
quote:
7s.gif Op woensdag 15 oktober 2014 16:39 schreef Aether het volgende:
[..]
Een .htaccess in blog maken met:
[ code verwijderd ]
óf in de .htaccess toevoegen (uit m'n hoofd):
[ code verwijderd ]
het gaat helaas niet alleen om rewrite rules, maar ook allerlei andere regels (white listing van bestanden etc). het hele htaccess moet dus genegeerd worden.
..///
pi_145579651
quote:
0s.gif Op woensdag 15 oktober 2014 16:42 schreef wipes66 het volgende:
[..]
het gaat helaas niet alleen om rewrite rules, maar ook allerlei andere regels (white listing van bestanden etc). het hele htaccess moet dus genegeerd worden.
Voor zover ik weet is dat niet mogelijk. Je zou in de bovenliggende htaccess moeten opgeven dat de regels daarin niet gelden voor een specifieke onderliggende map. Voorbeeld: http://stackoverflow.com/(...)ules-in-root-htacces
Schuimpje... mijn liefste. Verlaat mij nimmer weer...
  FOK!mycroftheld zondag 19 oktober 2014 @ 01:16:29 #254
128465 verified  bondage
pi_145689110
MySQL query vraagje. Stel ik heb de volgende tekst:

quote:
bla
<blockquote>bla bla bla</blockquote>

bla bla
Ik wil daaruit de tekst tussen <blockquote> en </blockquote> hebben zodat ik tekst tussen tags apart van de rest kan verkrijgen, hiervoor heb ik het volgende bedacht:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CASE WHEN LOCATE( '<blockquote>', `contents` ) != 0 THEN 
   MID(
      `contents`, 
      LOCATE( '<blockquote>', `contents` ) + 12,
      (LOCATE( '</blockquote>', `contents` ) - LOCATE( '<blockquote>', `contents` )) - 12
   ) 
ELSE 
   '' 
END AS post_quote, 
CASE WHEN LOCATE( '<blockquote>', `contents` ) != 0 THEN 
   CONCAT_WS(
      LEFT( `contents` , LOCATE( '<blockquote>', `contents`) - 1), ' ',
      RIGHT( `contents` , LENGTH(`contents`) - (LOCATE( '</blockquote>', `contents` ) + 12))
   )
ELSE 
   `contents` 
END AS post_contents 

Bovenstaande kan een kind van 4 nog bedenken en werkt prima zolang er slechts één quote in de tekst staat, zodra er meerdere in de tekst voorkomen gaat het mis.

Dit werkt bijvoorbeeld niet correct omdat er meerdere quotes in staan. De eerste quote gaat prima maar de rest wordt als post_contents gerekend.
quote:
<blockquote>quote 1</blockquote>

reactie 1

<blockquote>quote 2</blockquote>

reactie 2
Hier zou het volgende uit moeten komen:
In het veld post_contents: reactie 1 reactie 2
In het veld post_quote: quote 1 quote 2

Is dit überhaupt mogelijk met de string functies die MySQL beschikbaar heeft? Zo ja; hoe doe ik dit? Indien het niet mogelijk is jammer dan, maar kan altijd proberen. Ik kom er in ieder geval niet uit.

Testcase:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SELECT
CASE WHEN LOCATE( '<blockquote>', `contents` ) != 0 THEN 
   MID(
      `contents`, 
      LOCATE( '<blockquote>', `contents` ) + 12,
      (LOCATE( '</blockquote>', `contents` ) - LOCATE( '<blockquote>', `contents` )) - 12
   ) 
ELSE 
   '' 
END AS post_quote, 
CASE WHEN LOCATE( '<blockquote>', `contents` ) != 0 THEN 
   CONCAT_WS(
      LEFT( `contents` , LOCATE( '<blockquote>', `contents`) - 1), ' ',
      RIGHT( `contents` , LENGTH(`contents`) - (LOCATE( '</blockquote>', `contents` ) + 12))
   )
ELSE 
   `contents` 
END AS post_contents
FROM (
   SELECT 'bla bla bla <blockquote>quote 1</blockquote>reactie 1<blockquote>quote 2</blockquote> reactie 2' AS `contents`
) AS dummy
pi_145692106
Dat het kan betekent niet dat je het ook moet willen. Dit lijkt me typisch iets wat je in je businesslogic afhandelt ipv in een query.
  zondag 19 oktober 2014 @ 09:01:00 #256
187069 slacker_nl
Sicko pur sang
pi_145692186
Hij vind het leuk om zich in moeilijke situaties te knopen.

Maar agreed, dit moet je denk ik niet in je SQL stoppen, maar erbuiten.
In theory there is no difference between theory and practice. In practice there is.
  FOK!mycroftheld zondag 19 oktober 2014 @ 09:08:28 #257
128465 verified  bondage
pi_145692223
quote:
14s.gif Op zondag 19 oktober 2014 08:47 schreef KomtTijd... het volgende:
Dat het kan betekent niet dat je het ook moet willen. Dit lijkt me typisch iets wat je in je businesslogic afhandelt ipv in een query.
Deze query wordt door Sphinx gebruikt om data te indexeren, ik moet deze data in twee velden in de index hebben zodat ze los van elkaar doorzocht kunnen worden. Ik kan in dit geval niets anders doen dan het in de query afhandelen.

quote:
3s.gif Op zondag 19 oktober 2014 09:01 schreef slacker_nl het volgende:
Hij vind het leuk om zich in moeilijke situaties te knopen.

Maar agreed, dit moet je denk ik niet in je SQL stoppen, maar erbuiten.
Eens, maar gaat in dit geval niet ;(
pi_145714105
Normaal heb ik bij een database tabel een veld genaamd 'id' met auto increment. Dit keer heb ik een andere veld welke uniek is en nooit dubbel kan zijn. Is het dan nog steeds handig/nodig om een id veld te hebben?
  zondag 19 oktober 2014 @ 21:25:47 #259
230788 n8n
Pragmatisch
pi_145714512
Hoe zet je tekstuele content in een database met behoud van opmaak? Html in de database lijkt me niet handig, stel dat je een keer van markup veranderd. Bbtags kan maar dat zal ook een keer veranderen, plus je moet alles vertalen. Ik zou zeggen bbtags als archivering, platte teksts om te zoeken en een gedeelte inclusief html markup in een cache. 3 keer opslaan dus of mis ik wat?
Specialization is for insects”.—Robert Heinlein
pi_145715567
quote:
0s.gif Op zondag 19 oktober 2014 21:19 schreef xaban06 het volgende:
Normaal heb ik bij een database tabel een veld genaamd 'id' met auto increment. Dit keer heb ik een andere veld welke uniek is en nooit dubbel kan zijn. Is het dan nog steeds handig/nodig om een id veld te hebben?
Nodig niet, of het handig is hangt af van je toepassing.
pi_145715645
quote:
0s.gif Op zondag 19 oktober 2014 21:19 schreef xaban06 het volgende:
Normaal heb ik bij een database tabel een veld genaamd 'id' met auto increment. Dit keer heb ik een andere veld welke uniek is en nooit dubbel kan zijn. Is het dan nog steeds handig/nodig om een id veld te hebben?
Gebruikelijk is om zowel de ruwe input als de HTML op te slaan. Waarom je ook nog platte tekst op zou willen slaan zou ik niet weten. Je kunt toch ook zoeken op de html/txt velden?
  zondag 19 oktober 2014 @ 21:54:40 #262
230788 n8n
Pragmatisch
pi_145716172
quote:
1s.gif Op zondag 19 oktober 2014 21:44 schreef KomtTijd... het volgende:

[..]

Gebruikelijk is om zowel de ruwe input als de HTML op te slaan. Waarom je ook nog platte tekst op zou willen slaan zou ik niet weten. Je kunt toch ook zoeken op de html/txt velden?
ik dacht anders zoekt ie de tags ook gezellig mee. Ok cool dankje
Specialization is for insects”.—Robert Heinlein
pi_145716265
quote:
1s.gif Op zondag 19 oktober 2014 21:44 schreef KomtTijd... het volgende:

[..]

Gebruikelijk is om zowel de ruwe input als de HTML op te slaan. Waarom je ook nog platte tekst op zou willen slaan zou ik niet weten. Je kunt toch ook zoeken op de html/txt velden?
Whut?
pi_145716484
quote:
1s.gif Op zondag 19 oktober 2014 21:54 schreef n8n het volgende:

[..]

ik dacht anders zoekt ie de tags ook gezellig mee. Ok cool dankje
Daar heb je zeker een punt ja. Je zou kunnen overwegen ook de platte tekst op te slaan idd, maar als je echt een fatsoenlijke zoekfunctie wilt maken komt daar nog heel wat meer bij kijken. Ik heb er geen ervaring me maar weet dat er hele studies maar verricht zijn.
  † In Memoriam † maandag 20 oktober 2014 @ 00:00:16 #265
159335 Boze_Appel
Vrij Fruit
pi_145719948
quote:
1s.gif Op zondag 19 oktober 2014 21:42 schreef KomtTijd... het volgende:

[..]

Nodig niet, of het handig is hangt af van je toepassing.
Als je id hebt buiten je primary doe je wat fout.
Carpe Libertatem
  maandag 20 oktober 2014 @ 11:10:12 #266
230788 n8n
Pragmatisch
pi_145726981
quote:
1s.gif Op maandag 20 oktober 2014 00:00 schreef Boze_Appel het volgende:

[..]

Als je id hebt buiten je primary doe je wat fout.
een id is toch nooit weg?
Specialization is for insects”.—Robert Heinlein
  maandag 20 oktober 2014 @ 11:11:40 #267
12221 Tijn
Powered by MS Paint
pi_145727030
quote:
7s.gif Op maandag 20 oktober 2014 11:10 schreef n8n het volgende:

[..]

een id is toch nooit weg?
Hij bedoelt denk ik een extra id buiten je primary key.
  maandag 20 oktober 2014 @ 11:11:45 #268
230788 n8n
Pragmatisch
pi_145727034
quote:
1s.gif Op zondag 19 oktober 2014 22:00 schreef KomtTijd... het volgende:

[..]

Daar heb je zeker een punt ja. Je zou kunnen overwegen ook de platte tekst op te slaan idd, maar als je echt een fatsoenlijke zoekfunctie wilt maken komt daar nog heel wat meer bij kijken. Ik heb er geen ervaring me maar weet dat er hele studies maar verricht zijn.
ongetwijfeld, denk voor de html-variant dat in veel gevallen ook op hele pagina’s gecached kan worden. Geeft een mooi beeld van wat er nou allemaal onderhouden/aangepast moet worden met een update ;(
Specialization is for insects”.—Robert Heinlein
  maandag 20 oktober 2014 @ 11:13:35 #269
230788 n8n
Pragmatisch
pi_145727087
quote:
2s.gif Op maandag 20 oktober 2014 11:11 schreef Tijn het volgende:

[..]

Hij bedoelt denk ik een extra id buiten je primary key.
ik heb op een site een unieke hash die ik als slug gebruik maar daarnaast ook een id, momenteel omdat ik daar nog op sorteer (oud naar nieuw, wordt nog aangepast). Een id veld maakt verder toch geen reet uit, als in een id is 'gratis'?
Specialization is for insects”.—Robert Heinlein
pi_145727148
quote:
1s.gif Op zondag 19 oktober 2014 22:00 schreef KomtTijd... het volgende:

[..]

Daar heb je zeker een punt ja. Je zou kunnen overwegen ook de platte tekst op te slaan idd, maar als je echt een fatsoenlijke zoekfunctie wilt maken komt daar nog heel wat meer bij kijken. Ik heb er geen ervaring me maar weet dat er hele studies maar verricht zijn.
Het valt heel erg mee, maar ik zou voor een beetje fatsoenlijke zoekfunctie inderdaad gewoon fatsoenlijke search software gebruiken zoals bijvoorbeeld Apache Solr.Standaard relevantie scoring obv TF/IDF, allerhande mogelijkheden voor stopwords filtering, stemming, synoniemen, enzovoort.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  maandag 20 oktober 2014 @ 11:17:48 #271
12221 Tijn
Powered by MS Paint
pi_145727203
quote:
7s.gif Op maandag 20 oktober 2014 11:13 schreef n8n het volgende:

[..]

ik heb op een site een unieke hash die ik als slug gebruik maar daarnaast ook een id, momenteel omdat ik daar nog op sorteer (oud naar nieuw, wordt nog aangepast). Een id veld maakt verder toch geen reet uit, als in een id is 'gratis'?
Ik heb zelf vaak ook een public hash voor het exposen van records aan de buitenwereld, zodat ik niet de interne ids hoef te delen. Ik zou ook niet direct weten waarom dat erg is, maar ik kan me voorstellen dat het geen handig databaseontwerp is als je hetzelfde record via allerlei verschillende ids kan terugvinden.
  maandag 20 oktober 2014 @ 11:20:57 #272
230788 n8n
Pragmatisch
pi_145727292
quote:
2s.gif Op maandag 20 oktober 2014 11:17 schreef Tijn het volgende:

[..]

Ik heb zelf vaak ook een public hash voor het exposen van records aan de buitenwereld, zodat ik niet de interne ids hoef te delen. Ik zou ook niet direct weten waarom dat erg is, maar ik kan me voorstellen dat het geen handig databaseontwerp is als je hetzelfde record via allerlei verschillende ids kan terugvinden.
op die manier, ik heb alleen een hash van 4 karakters, eerste altijd alpha dus 1.213.056 combinaties wat voor dit project ruim voldoende is. Browsers tonen toch steeds vaker naar een versimpelde url, verder is er geen manier om content er uit te persen voor publiek
Specialization is for insects”.—Robert Heinlein
pi_145743827
Wat is MySQL trouwens snel zeg als je de juiste indexes toepast :P factor 10 kwa snelheidswinst :D
pi_145744893
quote:
0s.gif Op maandag 20 oktober 2014 18:53 schreef xaban06 het volgende:
Wat is MySQL trouwens snel zeg als je de juiste indexes toepast :P factor 10 kwa snelheidswinst :D
Bij grote hoeveelheden data scheelt het nog veel meer, zeker in de worst case scenario's.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_145754922
quote:
1s.gif Op maandag 20 oktober 2014 19:16 schreef Monolith het volgende:

[..]

Bij grote hoeveelheden data scheelt het nog veel meer, zeker in de worst case scenario's.
Tabel heeft nu 50.000 records, binnen enkele weken wordt dat een paar miljoen en zal vanaf dan dagelijks met ~800 records groeien.
pi_145755236
quote:
0s.gif Op maandag 20 oktober 2014 22:15 schreef xaban06 het volgende:

[..]

Tabel heeft nu 50.000 records, binnen enkele weken wordt dat een paar miljoen en zal vanaf dan dagelijks met ~800 records groeien.
Dan ga je dat verschil wel merken. Eigenlijk zou je alle (select)queries een keer met explain moeten bekijken om te zien waar je nog winst kunt behalen.
  † In Memoriam † maandag 20 oktober 2014 @ 22:26:10 #277
159335 Boze_Appel
Vrij Fruit
pi_145755553
quote:
0s.gif Op maandag 20 oktober 2014 18:53 schreef xaban06 het volgende:
Wat is MySQL trouwens snel zeg als je de juiste indexes toepast :P factor 10 kwa snelheidswinst :D
De juiste engine toepassen scheelt ook enorm. Veel mensen geilen op InnoDB vanwege contrainsts en dergelijke, maar gebruiken het niet of passen het toe op tabellen die amper inserts/updates krijgen maar enkel selects. Dan gewoon lekker naar MyIsam gaan en het scheelt een factor veel in snelheid.

Degelijke DBA bij grotere hoeveelheden is een kunstje apart.
Carpe Libertatem
pi_145755735
quote:
7s.gif Op maandag 20 oktober 2014 22:26 schreef Boze_Appel het volgende:

[..]

De juiste engine toepassen scheelt ook enorm. Veel mensen geilen op InnoDB vanwege contrainsts en dergelijke, maar gebruiken het niet of passen het toe op tabellen die amper inserts/updates krijgen maar enkel selects. Dan gewoon lekker naar MyIsam gaan en het scheelt een factor veel in snelheid.

Degelijke DBA bij grotere hoeveelheden is een kunstje apart.
Professionals zullen het fijne er van weten verwacht ik. Ik doe het gewoon als hobby, op werk heb ik er niks mee te maken.
Ik gebruik ook InnoDB :@

Verhouding is bij mij denk ik 2-3:1 (select:insert).
pi_145756063
quote:
7s.gif Op maandag 20 oktober 2014 22:26 schreef Boze_Appel het volgende:

[..]

De juiste engine toepassen scheelt ook enorm. Veel mensen geilen op InnoDB vanwege contrainsts en dergelijke, maar gebruiken het niet of passen het toe op tabellen die amper inserts/updates krijgen maar enkel selects. Dan gewoon lekker naar MyIsam gaan en het scheelt een factor veel in snelheid.

Degelijke DBA bij grotere hoeveelheden is een kunstje apart.
De vraag is niet zozeer wat de verhouding is tussen selects en inserts / updates. MyISAM kent bijvoorbeeld geen transacties. Die heb je soms gewoon nodig.
Daarnaast kun je in plaats van MySQL ook gewoon bijvoorbeeld Postgresql gebruiken.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  † In Memoriam † maandag 20 oktober 2014 @ 22:46:50 #280
159335 Boze_Appel
Vrij Fruit
pi_145756737
quote:
1s.gif Op maandag 20 oktober 2014 22:35 schreef Monolith het volgende:

[..]

De vraag is niet zozeer wat de verhouding is tussen selects en inserts / updates. MyISAM kent bijvoorbeeld geen transacties. Die heb je soms gewoon nodig.
Voor veel dingen dan ook weer niet. Het is uiteraard net de toepassing wat je nodig hebt.

quote:
Daarnaast kun je in plaats van MySQL ook gewoon bijvoorbeeld Postgresql gebruiken.
Zeker, of het alternatief voor MySQL, MariaDB.
Carpe Libertatem
pi_145757250
quote:
0s.gif Op maandag 20 oktober 2014 22:20 schreef Light het volgende:

[..]

Dan ga je dat verschil wel merken. Eigenlijk zou je alle (select)queries een keer met explain moeten bekijken om te zien waar je nog winst kunt behalen.
idd, zonder de juiste indexes wordt iedere database onwerkbaar traag met datsoort datasets.
Een flinke sloot geheugen in je server helpt ook.
  † In Memoriam † maandag 20 oktober 2014 @ 23:01:59 #282
159335 Boze_Appel
Vrij Fruit
pi_145757480
quote:
14s.gif Op maandag 20 oktober 2014 22:56 schreef KomtTijd... het volgende:

[..]

idd, zonder de juiste indexes wordt iedere database onwerkbaar traag met datsoort datasets.
Een flinke sloot geheugen in je server helpt ook.
En je buffers goed instellen. Van de standaard configs van MySQL of PostgreSQL wordt geen grotere hoeveelheid data vrolijk.

Zonder indexes heb je gewoon een kaartenbak.
Carpe Libertatem
pi_145757571
quote:
7s.gif Op maandag 20 oktober 2014 23:01 schreef Boze_Appel het volgende:

[..]

En je buffers goed instellen. Van de standaard configs van MySQL of PostgreSQL wordt geen grotere hoeveelheid data vrolijk.

Zonder indexes heb je gewoon een kaartenbak.
Een kaartenbak heeft nou meestal juist wel een vorm van indexering. :P
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_145757590
Straks heb ik dus een paar miljoen aan records, deze records haal ik extern op (via http). Deze externe records kunnen dagelijks wijzigen. Deze wijzigingen wil ik meenemen in mijn database.

Per HTTP request kan ik maar 1 record checken, ik kan dus niet meedere records tegelijk controleren.

Ik dacht aan:
De hele dataset poepen naar een array.

Vervolgens met een loop over de array gaan, iedere keer wordt de data in de array vergeleken met de externe data.

Dus ja, er moet een paar miljoen HTTP requests plaatsvinden. Hier ontkom ik niet aan, maar het probleem zit hem in: De externe server is vrij traag, meestal resultaat na 1 seconde, maar soms ook 3-4 seconde.

Met een gemiddelde van 2s response tijd kom ik aan 43.200 requests per dag. Bij een dataset van 10.000.000 records heb ik dus 232 dagen nodig om de volledige dataset te controleren.

Oplossing?

/edit
Nu ik dit schrijf, meerdere HTTP requests tegelijk uitvoeren misschien?
pi_145757602
quote:
14s.gif Op maandag 20 oktober 2014 22:56 schreef KomtTijd... het volgende:

[..]

idd, zonder de juiste indexes wordt iedere database onwerkbaar traag met datsoort datasets.
Een flinke sloot geheugen in je server helpt ook.
Tegen die tijd is het misschien sowieso een idee om een aparte database server te hebben.
  † In Memoriam † maandag 20 oktober 2014 @ 23:05:38 #286
159335 Boze_Appel
Vrij Fruit
pi_145757647
quote:
1s.gif Op maandag 20 oktober 2014 23:04 schreef Monolith het volgende:

[..]

Een kaartenbak heeft nou meestal juist wel een vorm van indexering. :P
Punt, maar je kan niet zoeken op de inhoud van de kaartenbak, alleen wat op het labeltje staat. Dat is an sich een index, maar alleen een primary dan. :P
Carpe Libertatem
pi_145758019
quote:
14s.gif Op maandag 20 oktober 2014 22:56 schreef KomtTijd... het volgende:

[..]

idd, zonder de juiste indexes wordt iedere database onwerkbaar traag met datsoort datasets.
Een flinke sloot geheugen in je server helpt ook.
Een sloot geheugen is alleen zinvol als je ook goede indexes hebt.
pi_145758311
Sowieso kun je bij grote hoeveelheden data beter eens kijken of er niet een geschikt NoSQL database is waar je gebruik van kunt maken.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  dinsdag 21 oktober 2014 @ 14:55:03 #289
59269 Drakire
May Lyssa aid you
pi_145776072
Vraagje:
Ik haal via een api bitcoinprijzen in USD op alsmede de exchange rate van USD naar EUR

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
    <?php
header
('Content-Type: text/html; charset=utf-8');
function 
extractData($url$clientName$curr)
{
$ch curl_init($url);
curl_setopt($chCURLOPT_REFERER'Mozilla/5.0 (compatible; ' $clientName' PHP client; '.php_uname('s').'; PHP/'.phpversion().')');
curl_setopt($chCURLOPT_USERAGENT"CakeScript/0.1");
curl_setopt($chCURLOPT_HEADER0);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_SSL_VERIFYHOSTfalse);
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
$json curl_exec($ch);
curl_close($ch);
$array json_decode($json,true);
return 
$array;

}

$url 'http://www.bitstamp.net/api/ticker/';
$clientName 'Bitstamp';
$bitstamp extractData($url,$clientName);
$url 'https://www.bitstamp.net/api/eur_usd/';
$clientName 'Blockchain';
$blockchain extractData($url,$clientName);
echo 
"<pre>";
print_r($bitstamp);

print_r($blockchain);
echo 
"</pre>";

?> 

Dit geeft het volgende resultaat:


Nu wil ik het getal dat al resultaat bij high komt (388.00) delen door het getal dat bij sell staat (1.2771)

Alleen weet ik niet hoe ik deze waardes los terugkrijg in php zodat ik bijvoorbeeld
1
2
3
<?php
$price
$high $sell;
?>
kan doen.
pi_145776232
quote:
0s.gif Op dinsdag 21 oktober 2014 14:55 schreef Drakire het volgende:
Vraagje:
Ik haal via een api bitcoinprijzen in USD op alsmede de exchange rate van USD naar EUR
[ code verwijderd ]

Dit geeft het volgende resultaat:
[ afbeelding ]

Nu wil ik het getal dat al resultaat bij high komt (388.00) delen door het getal dat bij sell staat (1.2771)

Alleen weet ik niet hoe ik deze waardes los terugkrijg in php zodat ik bijvoorbeeld
[ code verwijderd ]

kan doen.
$bitstamp en $blockchain zijn beide array. Met $bitstamp['high'] kun je een waarde uitlezen:
1$price = $bitstamp['high'] / $bitchain['sell']
When the student is ready, the teacher will appear.
When the student is truly ready, the teacher will disappear.
  dinsdag 21 oktober 2014 @ 15:06:55 #292
59269 Drakire
May Lyssa aid you
pi_145776540
quote:
Had al gezocht maar kwam er niet uit vanwege de 2 verschillende arrays, achteraf is het toch best simpel :P.
quote:
7s.gif Op dinsdag 21 oktober 2014 14:59 schreef Aether het volgende:

[..]

$bitstamp en $blockchain zijn beide array. Met $bitstamp['high'] kun je een waarde uitlezen:
[ code verwijderd ]

thx.
pi_145827955
heeft iemand verstand van timezones? ik probeer "today 00:00" om te zetten in een timestamp, maar wel afhankelijk van een tijdzone (via DateTime). in de unittest vergelijk ik new-york, amsterdam en die van sydney. maar die van amsterdam blijkt lager te zijn dan die van new-york?

dit is de uitkomt:

America/New_York
string(31) "Wed, 22 Oct 2014 13:34:42 -0400"
int(1413950400)

Europe/Amsterdam
string(31) "Wed, 22 Oct 2014 19:34:42 +0200"
int(1413928800)

Australia/Sydney
string(31) "Thu, 23 Oct 2014 04:34:42 +1100"
int(1413982800)

new-york zou toch het laagst moeten zijn omdat daar het "begin van de dag" het meeste achterloopt?
..///
pi_145828716
Wat doe je precies dan?

Als ik het zo bekijk zouden ze allemaal dezelfde timestamp moeten hebben. Maar de timestamps die jij toont komen in de verste verte niet overeen met de daarbij genoemde datum/tijd, ook de minuten en secondes niet.
pi_145828909
quote:
14s.gif Op woensdag 22 oktober 2014 20:06 schreef KomtTijd... het volgende:
Wat doe je precies dan?

Als ik het zo bekijk zouden ze allemaal dezelfde timestamp moeten hebben. Maar de timestamps die jij toont komen in de verste verte niet overeen met de daarbij genoemde datum/tijd, ook de minuten en secondes niet.
nee de timestamp moet verschillend zijn want ik gebruik "today 00:00" en geen "today" of "-24 hours". de laatste 2 zijn relatief (in verhouding met de huidige timestamp) en zijn voor alle tijdzones hetzelfde, maar het moment van de eerste seconden van de dag moet per tijdzone verschillend zijn. ik dacht dat het westen dan het laagste moest zijn en meer richting het oosten hoger. je kan het zelf testen met:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$timezone 
= new DateTimeZone('America/New_York');
$date =  new DateTime('today 00:00'$timezone);
var_dump($date->format('r'));
var_dump($date->getTimestamp());
echo 
"\n\n";
            
$timezone = new DateTimeZone('Europe/Amsterdam');
$date =  new DateTime('today 00:00'$timezone);
var_dump($date->format('r'));
var_dump($date->getTimestamp());
echo 
"\n\n";
            
$timezone = new DateTimeZone('Australia/Sydney');
$date =  new DateTime('today 00:00'$timezone);
var_dump($date->format('r'));
var_dump($date->getTimestamp());
echo 
"\n\n";            
?>
..///
pi_145829041
Laatste keer dat ik checkte kwam de zon in het oosten op en ging deze in het westen onder :P Dus in het oosten is het eerder middennacht dan in het westen.
pi_145829503
quote:
14s.gif Op woensdag 22 oktober 2014 20:15 schreef KomtTijd... het volgende:
Laatste keer dat ik checkte kwam de zon in het oosten op en ging deze in het westen onder :P Dus in het oosten is het eerder middennacht dan in het westen.
maar de volgorde van de timestamp komt niet overeen met de volgorde van oost naar west, dat is wat ik niet snap :P
..///
pi_145829754
Gezien de tijden in je resultaten wordt 00:00 niet meegenomen.

Afgezien daarvan, wordt de string niet omgezet naar GMT oid en vervolgens omgerekend met de timezone, waarbij vervolgens de timestamp enkel de datum en tijd, maar niet de timezone meerekent?
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_145830692
quote:
0s.gif Op woensdag 22 oktober 2014 20:33 schreef Monolith het volgende:
Gezien de tijden in je resultaten wordt 00:00 niet meegenomen.

Afgezien daarvan, wordt de string niet omgezet naar GMT oid en vervolgens omgerekend met de timezone, waarbij vervolgens de timestamp enkel de datum en tijd, maar niet de timezone meerekent?
Een timestamp kent geen tijdzone, maar als je van een tijd naar een timestamp gaat heb je die tijdzone wel nodig. De timestamp van 2014-10-22 18:00:00+0200 (Amsterdam) is anders dan die van 2014-10-22 18:00:00+0100 (Londen), hoewel het beide keren 18:00 vandaag is.
pi_145830941
quote:
0s.gif Op woensdag 22 oktober 2014 20:52 schreef Light het volgende:

[..]

Een timestamp kent geen tijdzone
Een timestamp is altijd UTC.
When the student is ready, the teacher will appear.
When the student is truly ready, the teacher will disappear.
pi_145831076
quote:
0s.gif Op woensdag 22 oktober 2014 19:45 schreef wipes66 het volgende:
heeft iemand verstand van timezones? ik probeer "today 00:00" om te zetten in een timestamp, maar wel afhankelijk van een tijdzone (via DateTime). in de unittest vergelijk ik new-york, amsterdam en die van sydney. maar die van amsterdam blijkt lager te zijn dan die van new-york?

dit is de uitkomt:

America/New_York
string(31) "Wed, 22 Oct 2014 13:34:42 -0400"
int(1413950400)

Europe/Amsterdam
string(31) "Wed, 22 Oct 2014 19:34:42 +0200"
int(1413928800)

Australia/Sydney
string(31) "Thu, 23 Oct 2014 04:34:42 +1100"
int(1413982800)

new-york zou toch het laagst moeten zijn omdat daar het "begin van de dag" het meeste achterloopt?
Nee. Om te beginnen kloppen die strings niet. En het probleem met "today" is dat je niet weet welke dat je krijgt. In Australië is 23 oktober al begonnen, dus krijg je die datum als je "today" gebruikt. In de andere gebieden is dat niet het geval en krijg je 22 oktober.

int(1413950400)
2014-10-22 00:00:00-0400

int(1413928800)
2014-10-22 00:00:00+0200

int(1413982800)
2014-10-23 00:00:00+1100

Eigenlijk zoek je voor Sydney deze tijd:
int(1413896400)
2014-10-22 00:00:00+1100
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')