FOK!forum / Digital Corner / [PHP/(My)SQL] voor dummies #109
-Datdus-woensdag 22 mei 2013 @ 12:32
php.jpg


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

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

Tutorials:
W3Schools PHP
W3Schools SQL

Succes heren met het volgende deeltje!
DirtyDanielwoensdag 22 mei 2013 @ 12:50
http://www.codecademy.com/learn weet niet of dit hier in thuis hoort.

Maar daar kan je op vrij speelse manier verschillende talen leren waaronder dus ook php.

Gebruik hetzelf atm om html/css te leren om een basis voor mezelf te creeren,dat terzijde.
KomtTijd...woensdag 22 mei 2013 @ 14:35
1
2
3
4
5
6
7
mysql> SELECT COUNT(*) FROM scan_data;
+----------+
| COUNT(*) |
+----------+
|  2165042 |
+----------+
1 row in set (0.00 sec)
Tot nu toe gaat het goed :7
Chandlerwoensdag 22 mei 2013 @ 17:04
quote:
2s.gif Op woensdag 22 mei 2013 11:52 schreef Maringo het volgende:
Dus eigenlijk een multidimensionale array zoals dit:
[ code verwijderd ]

En dan nadat user 1 klaar is met de eerste website wordt ie achteraan gezet en wordt user2 de eerste volgende etc etc.

Dan worden de websites in deze volgorde verwerkt:
website1a
website2a
website3a
website1b
website3b
website1c

Dat bedoel je toch?
Dat bedoel ik inderdaad, vind het eerlijker.. eventueel wil ik ook gaan werken met het geven van prioriteit van projecten, dus bv project A 100% maar project B 50% en eventueel project C 25% en als het even kan project D 75% oid... en daar dan tussen switchen :+

@KomtTijd: Wat ben je aan't doen? :P
KomtTijd...woensdag 22 mei 2013 @ 17:22
procesgegevens van machines aan het loggen.
Had van te voren geen idee hoe snel de de data zou gaan groeien en watvoor performance impact dat zou hebben, maar tot nu toe met een goeie 2 miljoen records gaat het vrij aardig.

En da's ook ruim genoeg want van de meeste machines heb ik de gegevens van 2 jaar terug tot nu erin staan, terwijl 2 maanden al voldoende zou zijn. Dus mocht de database het toch moeilijk gaan krijgen ga ik gewoon periodiek opschonen.
MichielPHwoensdag 22 mei 2013 @ 18:16
Voor Android / sqlite heb ik een algoritme geschreven die dit produceert:

1SELECT column FROM table WHERE stringvar in ('string1, 'string2', 'string3',  ...);
Echter, het kan zijn dat dit een uitkomst is:
1SELECT column FROM table WHERE stringvar in ();

Heb het getest in 4.1, daar kreeg ik een Cursor met lengte 0 terug, zoals verwacht. Gaat dit altijd goed?

[ Bericht 0% gewijzigd door MichielPH op 22-05-2013 18:27:04 ]
papernotewoensdag 22 mei 2013 @ 20:03
quote:
0s.gif Op woensdag 22 mei 2013 18:16 schreef MichielPH het volgende:
Voor Android / sqlite heb ik een algoritme geschreven die dit produceert:
[ code verwijderd ]

Echter, het kan zijn dat dit een uitkomst is:
[ code verwijderd ]

Heb het getest in 4.1, daar kreeg ik een Cursor met lengte 0 terug, zoals verwacht. Gaat dit altijd goed?
Ik zou, indien IN() leeg is, überhaupt de query niet uitvoeren, maar dit afvangen in je code.
Lightdonderdag 23 mei 2013 @ 00:18
quote:
14s.gif Op woensdag 22 mei 2013 17:22 schreef KomtTijd... het volgende:
procesgegevens van machines aan het loggen.
Had van te voren geen idee hoe snel de de data zou gaan groeien en watvoor performance impact dat zou hebben, maar tot nu toe met een goeie 2 miljoen records gaat het vrij aardig.

En da's ook ruim genoeg want van de meeste machines heb ik de gegevens van 2 jaar terug tot nu erin staan, terwijl 2 maanden al voldoende zou zijn. Dus mocht de database het toch moeilijk gaan krijgen ga ik gewoon periodiek opschonen.
Zolang je maar goede indexen gebruikt, mag het geen al te groot probleem zijn. Dat doet meer dan periodiek opschonen.
KomtTijd...donderdag 23 mei 2013 @ 09:34
quote:
0s.gif Op donderdag 23 mei 2013 00:18 schreef Light het volgende:

[..]

Zolang je maar goede indexen gebruikt, mag het geen al te groot probleem zijn. Dat doet meer dan periodiek opschonen.
Zo blijkens. Voor mij is het een ervering die ik rijker ben.
Ik had geen idee van de capaciteiten van MySQL en dmv googlen krijg je daar ook niet echt een antwoord op, aangezien het natuurlijk gigantisch afhankelijk is van de situatie.
Crutchdonderdag 23 mei 2013 @ 11:02
Hey hallo,

Even een vraagje.

Stel je werkt als webdeveloper met PHP, maar je gebruikt geen echo's om HTML uit te poepen.
Ik denk zelfs dat er gebruik gemaakt wordt van xsl(t).
Zijn daar frameworks voor? Ik kom niks tegen.

Het gaat om een soort 'desktop like application' framework.
ViPeRIIdonderdag 23 mei 2013 @ 12:42
quote:
0s.gif Op donderdag 23 mei 2013 11:02 schreef Crutch het volgende:
Hey hallo,

Even een vraagje.

Stel je werkt als webdeveloper met PHP, maar je gebruikt geen echo's om HTML uit te poepen.
Ik denk zelfs dat er gebruik gemaakt wordt van xsl(t).
Zijn daar frameworks voor? Ik kom niks tegen.

Het gaat om een soort 'desktop like application' framework.
Er zal toch iets geechoed moeten worden om output te genereren, of er moeten alleen soap requests verwerkt worden.
xsl is eigenlijk xml, en moet ook worden geechoed.
Sommige developers gebruiken echter liever print.
Ook daar niks van te zien?

Edit: toevoegin: een schrijf actie naar php://output kan overigens ook nog.

[ Bericht 4% gewijzigd door ViPeRII op 23-05-2013 12:45:19 (Nog wat meer info) ]
Pakspuldonderdag 23 mei 2013 @ 12:49
quote:
0s.gif Op donderdag 23 mei 2013 11:02 schreef Crutch het volgende:
Hey hallo,

Even een vraagje.

Stel je werkt als webdeveloper met PHP, maar je gebruikt geen echo's om HTML uit te poepen.
Ik denk zelfs dat er gebruik gemaakt wordt van xsl(t).
Zijn daar frameworks voor? Ik kom niks tegen.

Het gaat om een soort 'desktop like application' framework.
Je moet toch een keertje iets uitpoepen? Of je gebruikt phtml includes waar je de waardes genereerd, maar doet wordt toch ook op een bepaalde manier geprint.
slacker_nldonderdag 23 mei 2013 @ 12:51
Hoezo, je php returned dan toch gewoon xml-datastructuren, waarom zou je dan dan echo of print moeten gebruiken?
Crutchdonderdag 23 mei 2013 @ 12:54
quote:
0s.gif Op donderdag 23 mei 2013 12:42 schreef ViPeRII het volgende:

[..]

Er zal toch iets geechoed moeten worden om output te genereren, of er moeten alleen soap requests verwerkt worden.
xsl is eigenlijk xml, en moet ook worden geechoed.
Sommige developers gebruiken echter liever print.
Ook daar niks van te zien?

Edit: toevoegin: een schrijf actie naar php://output kan overigens ook nog.
quote:
0s.gif Op donderdag 23 mei 2013 12:49 schreef Pakspul het volgende:

[..]

Je moet toch een keertje iets uitpoepen? Of je gebruikt phtml includes waar je de waardes genereerd, maar doet wordt toch ook op een bepaalde manier geprint.
Ja ik denk dus dat er xsl geöutput wordt met een xsl-template.
In de template staat dus wel html.
Waarschijnlijk is dat ook het hele interface building-verhaal.
zoemdonderdag 23 mei 2013 @ 12:54
En sowieso is business logic != presentatie. Dus ik zie niet in waarom je daar een speciaal framework nodig hebt. Voor xsl/xml transformaties bestaat er een xsl-module.
KomtTijd...donderdag 23 mei 2013 @ 12:57
Wat wil je doen dan? Een desktop-applicatie schrijven in PHP? Daarvoor lijkt PHP me een uitermate slechte keuze.

Als je dan toch bij PHP wilt houden, installeer dan een combinatie van webserver, internetbrowser en draai daarop je webapp.
ViPeRIIdonderdag 23 mei 2013 @ 13:07
quote:
0s.gif Op donderdag 23 mei 2013 12:51 schreef slacker_nl het volgende:
Hoezo, je php returned dan toch gewoon xml-datastructuren, waarom zou je dan dan echo of print moeten gebruiken?
Dan is het Dom injection.. tsja, goed dat ik zie ik ook als echo..
Pakspuldonderdag 23 mei 2013 @ 13:07
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
class Foo
    
{
        protected static 
$_Instance;
        
        protected function 
__construct()
        {
             
        }
        
        final public function 
__clone()
        {
            
trigger_error"Cannot clone instance of Singleton pattern ..."E_USER_ERROR );
        }
        final public function 
__wakeup()
        {
            
trigger_error('Cannot deserialize instance of Singleton pattern ...'E_USER_ERROR );
        }
        
        final public static function 
GetInstance()
        {
            if ( 
self::$_Instance === null )
            { 
                
self::$_Instance = new static();
            }
            
            return 
self::$_Instance;
        }
    }
    
    class 
Bar extends Foo
    
{
        
    }
?>

Mocht iemand nog een overerfbare singleton zoeken. Gebuik singleton al een tijdje, echt handing, maar overerven was nooit nodig, tot vandaag. Na tijdje kwam ik er achter dat ik: new static(); moest gebruiken. Ook een nieuwe voor mij. Bij deze :)
Crutchdonderdag 23 mei 2013 @ 13:17
quote:
14s.gif Op donderdag 23 mei 2013 12:57 schreef KomtTijd... het volgende:
Wat wil je doen dan? Een desktop-applicatie schrijven in PHP? Daarvoor lijkt PHP me een uitermate slechte keuze.

Als je dan toch bij PHP wilt houden, installeer dan een combinatie van webserver, internetbrowser en draai daarop je webapp.
quote:
0s.gif Op donderdag 23 mei 2013 13:07 schreef ViPeRII het volgende:

[..]

Dan is het Dom injection.. tsja, goed dat ik zie ik ook als echo..
Ik zal even wat informatie inwinnen en dan kom ik erop terug.
rekenwonderdonderdag 23 mei 2013 @ 13:31
quote:
0s.gif Op donderdag 23 mei 2013 13:07 schreef Pakspul het volgende:
Mocht iemand nog een overerfbare singleton zoeken.
Dan is het geen singleton meer :-)

En de singleton zoals je die hierboven presenteert heeft een locking-issue.

[ Bericht 8% gewijzigd door rekenwonder op 23-05-2013 14:03:44 ]
slacker_nldonderdag 23 mei 2013 @ 13:32
quote:
0s.gif Op donderdag 23 mei 2013 13:07 schreef ViPeRII het volgende:

[..]

Dan is het Dom injection.. tsja, goed dat ik zie ik ook als echo..
wacht even, een return $xml_object is voor jou een echo $xml_object->as_string?
ViPeRIIdonderdag 23 mei 2013 @ 13:40
quote:
0s.gif Op donderdag 23 mei 2013 13:32 schreef slacker_nl het volgende:

[..]

wacht even, een return $xml_object is voor jou een echo $xml_object->as_string?
Nee, dat was niet wat ik bedoelde :P
slacker_nldonderdag 23 mei 2013 @ 13:42
quote:
0s.gif Op donderdag 23 mei 2013 13:40 schreef ViPeRII het volgende:
Nee, dat was niet wat ik bedoelde :P
Wat dan?
Pakspuldonderdag 23 mei 2013 @ 14:02
quote:
0s.gif Op donderdag 23 mei 2013 13:31 schreef rekenwonder het volgende:

[..]

Dan is het geen singleton meer :-)
Is dat zo? Lomp, dan gebruik ik dus een hybrid versie? :P Naja, het werkt voor zijn doel dus dat is goed.
rekenwonderdonderdag 23 mei 2013 @ 14:05
Maar noem het dan geen singleton. Schrijf niet voor jezelf, maar voor je opvolger :-)
Pakspuldonderdag 23 mei 2013 @ 14:10
Ik wist niet dat singleton niet overerfbaar zijn. Zit daar een reden achter?
rekenwonderdonderdag 23 mei 2013 @ 14:14
Niet overerfbaar, niet overerfbaar... Het is by design.

Denk je nog even aan je locking-issue? :-)
zoemdonderdag 23 mei 2013 @ 14:18
quote:
0s.gif Op donderdag 23 mei 2013 14:14 schreef rekenwonder het volgende:
Niet overerfbaar, niet overerfbaar... Het is by design.

Denk je nog even aan je locking-issue? :-)
Dat is niet nodig bij een singleton class in php (single threaded).
rekenwonderdonderdag 23 mei 2013 @ 14:20
quote:
0s.gif Op donderdag 23 mei 2013 14:18 schreef zoem het volgende:

[..]

Dat is niet nodig bij een singleton class in php (single threaded).
Wat ons op de vraag brengt: wat is het nut van een singleton in php? :-)

Overigens zou ik liever niet uitsluiten dat iemand m'n code in een multi-threaded omgeving gaat gebruiken.
zoemdonderdag 23 mei 2013 @ 14:33
quote:
0s.gif Op donderdag 23 mei 2013 14:20 schreef rekenwonder het volgende:

[..]

Wat ons op de vraag brengt: wat is het nut van een singleton in php? :-)

Overigens zou ik liever niet uitsluiten dat iemand m'n code in een multi-threaded omgeving gaat gebruiken.
Het nut? Tja, dat is discutabel. Het kan in speciale gevallen handig zijn, maar over het algemeen is het singleton pattern in php niet noodzakelijk. Hoe dan ook: 'use the right tool for the right job'
Sitethiefvrijdag 24 mei 2013 @ 09:00
1
2
3
4
5
<?php
$pos 
strpos($haystack$needle);
 if (
is_numeric($pos)) echo 'foo';
 if (
$pos !== false) echo 'bar';
?>

Welke van de twee if statements is eigenlijk beter? Ik gebruik altijd de tweede, maar zag net de eerste langskomen, maar het lijkt me dat mijne een stuk sneller is. Het verschil zal miniem zijn, maar dit soort dingen worden hier binnen grote/lange loops aangeroepen.
Tijnvrijdag 24 mei 2013 @ 09:05
De variant zonder function call lijkt me sneller. Dat is ook hoe het in de documentatie van PHP staat trouwens.
Sitethiefvrijdag 24 mei 2013 @ 09:08
OMG

Kom net dit tegen in de code

1
2
3
4
5
6
7
<?php
    
public function createFooBar($foo,$bar){    
        
/** heel veel code    **/    
        
return true;
        exit;
    }
?>
mstxvrijdag 24 mei 2013 @ 09:18
quote:
2s.gif Op vrijdag 24 mei 2013 09:05 schreef Tijn het volgende:
De variant zonder function call lijkt me sneller. Dat is ook hoe het in de documentatie van PHP staat trouwens.
Dit... en anders zou ik nog eerder is_int() gebruiken dan is_numeric().
KomtTijd...vrijdag 24 mei 2013 @ 09:49
quote:
0s.gif Op vrijdag 24 mei 2013 09:08 schreef Sitethief het volgende:
OMG

Kom net dit tegen in de code
[ code verwijderd ]

Op zich niet heel raar toch? zo'n functie kan prima wat data verwerken of wegschrijven ofzo, false returnen bij een error en true als hij helemaal doorlopen is.
rekenwondervrijdag 24 mei 2013 @ 10:35
quote:
14s.gif Op vrijdag 24 mei 2013 09:49 schreef KomtTijd... het volgende:

[..]

Op zich niet heel raar toch? zo'n functie kan prima wat data verwerken of wegschrijven ofzo, false returnen bij een error en true als hij helemaal doorlopen is.
Dead code.
KomtTijd...vrijdag 24 mei 2013 @ 10:40
ohja de exit gaat niet worden uitgevoerd. Naja ach.
Tijnvrijdag 24 mei 2013 @ 11:04
Misschien is het overgebleven van een testje ofzo? Ik prak ook wel eens ergens een vardump + exit in om te kijken hoe iets ervoor staat.
Maringovrijdag 24 mei 2013 @ 11:09
Erger vind ik het als hele functies commented zijn. Er is niet voor niets iets als versiebeheer.
raptorixvrijdag 24 mei 2013 @ 11:24
quote:
2s.gif Op vrijdag 24 mei 2013 11:09 schreef Maringo het volgende:
Erger vind ik het als hele functies commented zijn. Er is niet voor niets iets als versiebeheer.
Dat vind ik toch wel een enorm nadeel aan talen als PHP hoor, ik gebruik resharper in Visual Studio en je ziet gelijk alle zaken die niet in gebruik zijn.
Sitethiefvrijdag 24 mei 2013 @ 11:24
quote:
2s.gif Op vrijdag 24 mei 2013 11:09 schreef Maringo het volgende:
Erger vind ik het als hele functies commented zijn. Er is niet voor niets iets als versiebeheer.
Ik kwam er net drie tegen :X. En wij gebruiken gewoon Git dus nodig is het niet echt. Veel erger zijn functies die dan in een keer naar xxxLalaFunctie en xxxTempDeleteDingus worden ombenoemd.

Erger nog is het volgende, vooral aangezien het de bedoeling is dat het geheel redelijk OOP in elkaar steekt.

1
2
3
4
5
6
7
8
9
10
<?php
$ActionResult 
$Items->createLala($foo,$bar,$lala,$lolo);
if(
$ActionResult == true){
    
$result = array('foo'=>1,'bar'=>2);
    echo 
json_encode($result);
}else{
    
$result = array('error' => "returnmessage");
    echo 
json_encode($result);
}
?>
Met in de class dit
1
2
3
4
5
6
7
8
9
10
11
<?php
public function createLala($foo,$bar,$lala,$lolo){
    
/** veel code **/
    
if($conditie){
        
$result = array('error' => "foutcode");
        echo 
json_encode($result);
        exit;
    }
    
/** veel code **/
}
?>
Waarbij die manier om uit de function te stappen zo'n 12 keer gebruikt wordt in de hele functie.
Maringovrijdag 24 mei 2013 @ 11:46
quote:
0s.gif Op vrijdag 24 mei 2013 11:24 schreef raptorix het volgende:

[..]

Dat vind ik toch wel een enorm nadeel aan talen als PHP hoor, ik gebruik resharper in Visual Studio en je ziet gelijk alle zaken die niet in gebruik zijn.
Bedoel je de comments of het versiebeheer als nadeel?
KomtTijd...vrijdag 24 mei 2013 @ 12:04
quote:
2s.gif Op vrijdag 24 mei 2013 11:46 schreef Maringo het volgende:

[..]

Bedoel je de comments of het versiebeheer als nadeel?
Volgens mij bedoelt'ie eerder zijn development-omgeving als nadeel.
Chandlervrijdag 24 mei 2013 @ 12:46
quote:
2s.gif Op vrijdag 24 mei 2013 11:09 schreef Maringo het volgende:
Erger vind ik het als hele functies commented zijn. Er is niet voor niets iets als versiebeheer.
Tuurlijk, voor grote sites maar voor kleine sites is dat totale overkill ;)

quote:
14s.gif Op vrijdag 24 mei 2013 12:04 schreef KomtTijd... het volgende:

[..]

Volgens mij bedoelt'ie eerder zijn development-omgeving als nadeel.
En gelijk heeft hij, want het nadeel is dat je niet ff kunt zien of een functie wel of niet in de scripting wordt gebruikt, zou trouwens wel een vette feature zijn! *)
raptorixvrijdag 24 mei 2013 @ 12:51
quote:
0s.gif Op vrijdag 24 mei 2013 12:46 schreef Chandler het volgende:

[..]

Tuurlijk, voor grote sites maar voor kleine sites is dat totale overkill ;)

[..]

En gelijk heeft hij, want het nadeel is dat je niet ff kunt zien of een functie wel of niet in de scripting wordt gebruikt, zou trouwens wel een vette feature zijn! *)
Ik heb ook lang in scripting talen gewerkt, o.a. vbscript/asp en Perl, maar zeker als je echt grote projecten hebt (als in Funda) dan word het toch al snel vervelend, zeker als je in een groter team werkt. Ik kan nu bijvoorbeeld gewoon rechtermuis klik op een functie drukken, en zien waar alle usages voorkomen.
Chandlervrijdag 24 mei 2013 @ 12:55
quote:
0s.gif Op vrijdag 24 mei 2013 12:51 schreef raptorix het volgende:

[..]

Ik heb ook lang in scripting talen gewerkt, o.a. vbscript/asp en Perl, maar zeker als je echt grote projecten hebt (als in Funda) dan word het toch al snel vervelend, zeker als je in een groter team werkt. Ik kan nu bijvoorbeeld gewoon rechtermuis klik op een functie drukken, en zien waar alle usages voorkomen.
Inderdaad, dat heb ik nog niet zien voorkomen bij editors voor PHP :{ of ik heb natuurlijk niet goed genoeg gekeken!. :+
raptorixvrijdag 24 mei 2013 @ 13:02
quote:
0s.gif Op vrijdag 24 mei 2013 12:55 schreef Chandler het volgende:

[..]

Inderdaad, dat heb ik nog niet zien voorkomen bij editors voor PHP :{ of ik heb natuurlijk niet goed genoeg gekeken!. :+
C# is strongtyped he ;) Dat maakt het er natuurlijk wel makkelijker op.
Tijnvrijdag 24 mei 2013 @ 13:05
quote:
0s.gif Op vrijdag 24 mei 2013 12:51 schreef raptorix het volgende:

[..]

zeker als je echt grote projecten hebt (als in Funda) dan word het toch al snel vervelend, zeker als je in een groter team werkt
Je zou je kunnen afvragen of PHP dan ook de beste keus is.
zoemvrijdag 24 mei 2013 @ 13:09
quote:
0s.gif Op vrijdag 24 mei 2013 12:51 schreef raptorix het volgende:

[..]

Ik heb ook lang in scripting talen gewerkt, o.a. vbscript/asp en Perl, maar zeker als je echt grote projecten hebt (als in Funda) dan word het toch al snel vervelend, zeker als je in een groter team werkt. Ik kan nu bijvoorbeeld gewoon rechtermuis klik op een functie drukken, en zien waar alle usages voorkomen.
Dat kan met php ook, tot op zekere hoogte. Bijvoorbeeld met Eclipse/Zend Studio kan dat.
Maar stel dat je de volgende code hebt:
1
2
3
4
<?php
$className 
'My_Class';
$obj = new $className();
?>
Hier ga je de usage van My_Class nooit vinden.
raptorixvrijdag 24 mei 2013 @ 13:45
quote:
2s.gif Op vrijdag 24 mei 2013 13:05 schreef Tijn het volgende:

[..]

Je zou je kunnen afvragen of PHP dan ook de beste keus is.
Tjah, ik moet zeggen, dat ik nooit meer zou kunnen werken met PHP achtige talen, als je eenmaal gewend bent aan LINQ dan word je gek als het er niet meer is ;)
Maringovrijdag 24 mei 2013 @ 15:17
quote:
2s.gif Op vrijdag 24 mei 2013 13:05 schreef Tijn het volgende:

[..]

Je zou je kunnen afvragen of PHP dan ook de beste keus is.
Lijkt mij niet. Tijdje terug bezig geweest met een project waarbij 's nachts een 7-tal bestanden moesten worden uitgelezen, aan elkaar gekoppeld en in een database worden gestopt. Bij mijn eerste volledige test in PHP heb ik hem na 17 uur maar uitgezet terwijl ie nog maar ongeveer 19% had gedaan. Vervolgens hetzelfde in Python geschreven en die is binnen 12 minuten klaar.

Ik moest met zoveel grote multidimensionale arrays werken dat PHP het gewoon niet meer trok.
Sitethiefvrijdag 24 mei 2013 @ 15:29
quote:
0s.gif Op vrijdag 24 mei 2013 12:51 schreef raptorix het volgende:

[..]

Ik heb ook lang in scripting talen gewerkt, o.a. vbscript/asp en Perl, maar zeker als je echt grote projecten hebt (als in Funda) dan word het toch al snel vervelend, zeker als je in een groter team werkt. Ik kan nu bijvoorbeeld gewoon rechtermuis klik op een functie drukken, en zien waar alle usages voorkomen.
Netbeans ondersteunt dit bij PHP gewoon, evenals een aantal refactor functies, zoals renamen van functies etc.
raptorixvrijdag 24 mei 2013 @ 15:47
quote:
0s.gif Op vrijdag 24 mei 2013 15:29 schreef Sitethief het volgende:

[..]

Netbeans ondersteunt dit bij PHP gewoon, evenals een aantal refactor functies, zoals renamen van functies etc.
Ah nice, ik vind zelf de refactoring naar Linq queries extreem handig.
Tijnvrijdag 24 mei 2013 @ 15:53
Deze functie zit al 5 jaar ongewijzigd in m'n Utilities-klasse en ik ben er nog steeds blij mee O+

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
/**
  * $string = 'Héllo Çårmëñ, hôw árè yõü?'
  * returns 'Hello_Carmen_how_are_you'
  */
public static function stripSpecialChars($string)
{
  
$string htmlentities($stringENT_NOQUOTES'UTF-8'); 
  
$string preg_replace('`&(.)(tilde|circ|grave|acute|uml|ring|cedil);`''$1'$string);
  
$string preg_replace('/[^\w\d\s]/'''$string);
  
$string str_replace(' ''_'$string);

  return 
$string;
}
?>
Lightzaterdag 25 mei 2013 @ 19:21
quote:
0s.gif Op vrijdag 24 mei 2013 11:24 schreef raptorix het volgende:

[..]

Dat vind ik toch wel een enorm nadeel aan talen als PHP hoor, ik gebruik resharper in Visual Studio en je ziet gelijk alle zaken die niet in gebruik zijn.
Dat heeft weinig te maken met de taal PHP. Je moet gewoon een fatsoenlijke IDE gebruiken.
Lightzaterdag 25 mei 2013 @ 19:28
quote:
0s.gif Op vrijdag 24 mei 2013 12:55 schreef Chandler het volgende:

[..]

Inderdaad, dat heb ik nog niet zien voorkomen bij editors voor PHP :{ of ik heb natuurlijk niet goed genoeg gekeken!. :+
Usage detection? Misschien moet je dan eens een andere editor dan Notepad gebruiken.
Chandlerzondag 26 mei 2013 @ 06:44
quote:
0s.gif Op zaterdag 25 mei 2013 19:28 schreef Light het volgende:
Usage detection? Misschien moet je dan eens een andere editor dan Notepad gebruiken.
Zoals? ;)
papernotezondag 26 mei 2013 @ 10:54
quote:
14s.gif Op zondag 26 mei 2013 06:44 schreef Chandler het volgende:

[..]

Zoals? ;)
Zend Studio.
Lightzondag 26 mei 2013 @ 11:12
quote:
14s.gif Op zondag 26 mei 2013 06:44 schreef Chandler het volgende:

[..]

Zoals? ;)
PhpStorm
urselzondag 26 mei 2013 @ 11:17
Netbeans :Y
Maringozondag 26 mei 2013 @ 11:40
quote:
0s.gif Op zondag 26 mei 2013 11:12 schreef Light het volgende:

[..]

PhpStorm
Deze inderdaad. Heerlijke programma's hebben die lui. Ik gebruik er een aantal van met veel plezier.
Chandlerzondag 26 mei 2013 @ 20:50
Weet iemand hoe je met curl kunt zien of een geladen URL een redirect is zonder deze te volgen met CURLOPT_FOLLOWLOCATION = false? want wil een redirect niet laden maar wel zien of er een redirect in de geladen url is gemaakt... die ik normaal gesproken kan volgen...
mstxzondag 26 mei 2013 @ 21:24
quote:
0s.gif Op zondag 26 mei 2013 20:50 schreef Chandler het volgende:
Weet iemand hoe je met curl kunt zien of een geladen URL een redirect is zonder deze te volgen met CURLOPT_FOLLOWLOCATION = false? want wil een redirect niet laden maar wel zien of er een redirect in de geladen url is gemaakt... die ik normaal gesproken kan volgen...
CURLOPT_HEADER gebruiken en kijken of er een "Location" header tussen zit.
Chandlerzondag 26 mei 2013 @ 21:39
quote:
0s.gif Op zondag 26 mei 2013 21:24 schreef mstx het volgende:

[..]

CURLOPT_HEADER gebruiken en kijken of er een "Location" header tussen zit.
Top, ik ga het ff proberen!

Andere vraag; wanneer ik met Domdocument een html pagina wil laden krijg ik de volgende foutmelding.
Warning: DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity, line: 1354

Nu snap ik best dat niet iedere pagina een nette opbouw heeft, maar wil eigenlijk geen foutmeldingen zien, gewoon parsen totdat hij niet meer kan parsen oid?! nu dacht ik laat ik kijken welke opties ik mee kan geven (maar 1) en die vond ik hier: http://www.php.net/manual/en/libxml.constants.php

Maar daarvan heb ik meerdere geprobeerd maar blijf errors opvangen... alleen een vieze @ werkt :{ iemand een idee hoe ik dat kan oplossen? Ps domdocument gebruik ik om links uit te kunnen lezen.
slacker_nlzondag 26 mei 2013 @ 21:41
quote:
0s.gif Op zondag 26 mei 2013 20:50 schreef Chandler het volgende:
Weet iemand hoe je met curl kunt zien of een geladen URL een redirect is zonder deze te volgen met CURLOPT_FOLLOWLOCATION = false? want wil een redirect niet laden maar wel zien of er een redirect in de geladen url is gemaakt... die ik normaal gesproken kan volgen...
Een redirect is altijd een 3xx returncode, 200 is found. Daarnaar kijken?
Chandlerzondag 26 mei 2013 @ 21:42
quote:
0s.gif Op zondag 26 mei 2013 21:41 schreef slacker_nl het volgende:

[..]

Een redirect is altijd een 3xx returncode, 200 is found. Daarnaar kijken?
Probleem is/was dat ik met curl_getinfo gewoon een 200 krijg, daarna pas een header location oid!? maar goed...
slacker_nlzondag 26 mei 2013 @ 21:53
quote:
0s.gif Op zondag 26 mei 2013 21:42 schreef Chandler het volgende:

[..]

Probleem is/was dat ik met curl_getinfo gewoon een 200 krijg, daarna pas een header location oid!? maar goed...
Apart, want ik krijg dit:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 0); 

curl_exec($ch);
print_r(curl_getinfo($ch, CURLINFO_HTTP_CODE)); # 302

curl_close($ch);

?>
Chandlerzondag 26 mei 2013 @ 21:55
Juist maar ik heb ook de CURLOPT_FOLLORHEADER op false staan ;) kan daar door komen?
slacker_nlzondag 26 mei 2013 @ 22:01
quote:
0s.gif Op zondag 26 mei 2013 21:55 schreef Chandler het volgende:
Juist maar ik heb ook de CURLOPT_FOLLORHEADER op false staan ;) kan daar door komen?
Zal ik het eens proberen? Uh, welke optie staat aan? Want ik kan deze optie ook niet met een fuzzy search vinden. Ow, en tuurlijk, als je follow location aanhebt staan, dan gaat ie uiteraard die volgen en kom je uit op een 200. Das logisch, tenzij je max-redirects ook aanpast en deze overschreden wordt.

Maar dan kan je met CURLINFO_REDIRECT_COUNT volgens mij zien hoeveel redirects je hebt gehad, > 0 is een redirect geweest.

En volgens mij kan je met CURLINFO_EFFECTIVE_URL dan zien wat de URL was welke je hebt aangesproken, als die niet gelijk is met je oorspronkelijke URL: redirect.

[ Bericht 7% gewijzigd door slacker_nl op 26-05-2013 22:06:55 ]
Chandlerzondag 26 mei 2013 @ 22:03
quote:
0s.gif Op zondag 26 mei 2013 22:01 schreef slacker_nl het volgende:

[..]

Zal ik het eens proberen? Uh, welke optie staat aan? Want ik kan deze optie ook niet met een fuzzy search vinden.
Correct, was: CURLOPT_FOLLOWLOCATION en die staat er wel tussen :+

krijg je als je met 10 dingen te gelijk aan het doen bent

quote:
Ow, en tuurlijk, als je follow location aanhebt staan, dan gaat ie uiteraard die volgen en kom je uit op een 200. Das logisch, tenzij je max-redirects ook aanpast en deze overschreden wordt.

Maar dan kan je met CURLINFO_REDIRECT_COUNT volgens mij zien hoeveel redirects je hebt gehad, > 0 is een redirect geweest.

En volgens mij kan je met CURLINFO_EFFECTIVE_URL dan zien wat de URL was welke je hebt aangesproken, als die niet gelijk is met je oorspronkelijke URL: redirect.
Case is dat ik wil uitvissen of er een redirect plaats vind, ja, dan geen data laden, nee dan wel data laden. want een redirect is voor mijn project niet nodig, alleen de directe data... tenzij een redirect naar het zelfde domein is.. maar het laatste is van mij voor ondergeschikt belang!.

[ Bericht 18% gewijzigd door Chandler op 26-05-2013 22:11:06 ]
slacker_nlzondag 26 mei 2013 @ 22:13
quote:
0s.gif Op zondag 26 mei 2013 22:03 schreef Chandler het volgende:

[..]

Correct, was: CURLOPT_FOLLOWLOCATION en die staat er wel tussen :+

krijg je als je met 10 dingen te gelijk aan het doen bent

[..]

Case is dat ik wil uitvissen of er een redirect plaats vind, ja, dan geen data laden, nee dan wel data laden. want een redirect is voor mijn project niet nodig, alleen de directe data... tenzij een redirect naar het zelfde domein is.. maar het laatste is van mij voor ondergeschikt belang!.
Dan moet je een no-follow doen, als 302 en location header naar iets wijst wat binnen je domein zit, daarop weer een request doen, zonder no-follow.
Chandlerzondag 26 mei 2013 @ 22:17
quote:
0s.gif Op zondag 26 mei 2013 22:13 schreef slacker_nl het volgende:

[..]

Dan moet je een no-follow doen, als 302 en location header naar iets wijst wat binnen je domein zit, daarop weer een request doen, zonder no-follow.
Mocht ik deze nodig zijn, dan kan ik deze natuurlijk uitlezen en herschrijven indien nodig (location: index.php naar http://www.domein.nl/index.php) en aan mijn queue toevoegen ;)

Had eerst een extra functie in mijn script met get_headers maar die vreet nogal wat resources en maakt het script stukken slomer....
slacker_nlzondag 26 mei 2013 @ 22:18
quote:
0s.gif Op zondag 26 mei 2013 22:17 schreef Chandler het volgende:

[..]

Mocht ik deze nodig zijn, dan kan ik deze natuurlijk uitlezen en herschrijven indien nodig (location: index.php naar http://www.domein.nl/index.php) en aan mijn queue toevoegen ;)
Je doet je ondertitel eer aan nu.
Chandlerzondag 26 mei 2013 @ 22:20
quote:
14s.gif Op zondag 26 mei 2013 22:18 schreef slacker_nl het volgende:
Je doet je ondertitel eer aan nu.
en bedankt! *) zelfkennis is de helft...

maar verbeteringen worden gewaardeerd ;)
wipes66zondag 26 mei 2013 @ 22:24
quote:
8s.gif Op zondag 26 mei 2013 21:39 schreef Chandler het volgende:

[..]

Top, ik ga het ff proberen!

Andere vraag; wanneer ik met Domdocument een html pagina wil laden krijg ik de volgende foutmelding.
Warning: DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity, line: 1354

Nu snap ik best dat niet iedere pagina een nette opbouw heeft, maar wil eigenlijk geen foutmeldingen zien, gewoon parsen totdat hij niet meer kan parsen oid?! nu dacht ik laat ik kijken welke opties ik mee kan geven (maar 1) en die vond ik hier: http://www.php.net/manual/en/libxml.constants.php

Maar daarvan heb ik meerdere geprobeerd maar blijf errors opvangen... alleen een vieze @ werkt :{ iemand een idee hoe ik dat kan oplossen? Ps domdocument gebruik ik om links uit te kunnen lezen.
probeer deze eens :P

http://nl3.php.net/manual(...)-internal-errors.php
slacker_nlzondag 26 mei 2013 @ 22:30
quote:
0s.gif Op zondag 26 mei 2013 22:17 schreef Chandler het volgende:

[..]

Mocht ik deze nodig zijn, dan kan ik deze natuurlijk uitlezen en herschrijven indien nodig (location: index.php naar http://www.domein.nl/index.php) en aan mijn queue toevoegen ;)

Had eerst een extra functie in mijn script met get_headers maar die vreet nogal wat resources en maakt het script stukken slomer....
Ik zou gewoon heel simpel een functie schrijven die de response parsed indien 200 http_code, bij een 30x http_code de redirect_url pakt, checked of het binnen het domein valt, indien ja, dan een recursive call doet (mss wel oppassen met redirect loops), en anders.. iets.
Chandlermaandag 27 mei 2013 @ 08:35
quote:
Werkte niet, maar heb alleen true geprobeerd, misschien had ik deze wel op false moeten zetten (lol, kan nu niet ff testen :()

quote:
0s.gif Op zondag 26 mei 2013 22:30 schreef slacker_nl het volgende:
Ik zou gewoon heel simpel een functie schrijven die de response parsed indien 200 http_code, bij een 30x http_code de redirect_url pakt, checked of het binnen het domein valt, indien ja, dan een recursive call doet (mss wel oppassen met redirect loops), en anders.. iets.
Daarom gebruik ik de queue om geen recursive call's te doen anders had ik die queue niet nodig gehad, dat was het eerste probleem die ik 4 weken geleden moest aanpakken :@

Op dit moment zie ik weinig nut in het volgen van deze redirects, misschien dat ik deze later toch nog door ga voeren in de code maar dat is voor dan..
Chandlerdinsdag 28 mei 2013 @ 09:27
Waarom geeft het laden van een document via dom met loadhtml fouten maar true als resultaat?

1
2
3
4
5
6
7
8
<?php
$doc 
= new DOMDocument();

var_dump($doc->loadhtml("<html dxxx<nbody>haha<html>test"));

var_dump($doc->loadhtml("<html><head></head><body><p>lol</p></body></html>"));
exit;
?>

Beiden geven true terwijl de eerste een foutmelding geeft en dus een false zou moeten geven...
Rockfiredinsdag 28 mei 2013 @ 09:33
quote:
0s.gif Op dinsdag 28 mei 2013 09:27 schreef Chandler het volgende:
Waarom geeft het laden van een document via dom met loadhtml fouten maar true als resultaat?
[ code verwijderd ]

Beiden geven true terwijl de eerste een foutmelding geeft en dus een false zou moeten geven...
Geeft het een foutmelding of een warning? Uit de documentatie:
quote:
While malformed HTML should load successfully, this function may generate E_WARNING errors when it encounters bad markup. libxml's error handling functions may be used to handle these errors.
Edit: ik lees nu pas je eerdere posts :@ . Warnings dus. Dan moet je dus libxml_use_internal_errors gebruiken als je de warnings wilt afhandelen.
Chandlerdinsdag 28 mei 2013 @ 16:06
quote:
0s.gif Op dinsdag 28 mei 2013 09:33 schreef Rockfire het volgende:
libxml_use_internal_errors
Ook daarmee krijg ik alleen maar 'true' terug... en er staat toch echt op php.net dat er een false gegeven zou moeten worden...

libxml_use_internal_errors(true);

:{

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php

var_dump(libxml_use_internal_errors(true));
$doc = new DOMDocument();

if (!$doc->loadhtml("<html dxxx<nbody>haha<html>test"))
{
    echo 'process error?';
}

if (!$doc->loadhtml("<html><head></head><body><p>lol</p></body></html>"))
{
    echo 'process error1?';
}
exit;
?>

zou dus een foutmelding moeten geven, maar niet dus :P
Rockfiredinsdag 28 mei 2013 @ 16:18
quote:
0s.gif Op dinsdag 28 mei 2013 16:06 schreef Chandler het volgende:

[..]

Ook daarmee krijg ik alleen maar 'true' terug... en er staat toch echt op php.net dat er een false gegeven zou moeten worden...
Nee dat staat er niet, er staat:
quote:
This function returns the previous value of use_errors
quote:
libxml_use_internal_errors(true);

:{
[ code verwijderd ]

zou dus een foutmelding moeten geven, maar niet dus :P
Heb je ook gekeken naar de functie libxml_get_errors? Het voorbeeld wat ze daarbij geven doet precies wat jij wil, namelijk controleren op verkeerde xml...
Chandlerdinsdag 28 mei 2013 @ 16:43
Ik doelde meer op domdocument

http://nl1.php.net/manual/en/domdocument.loadhtml.php

quote:
Returns TRUE on success or FALSE on failure. If called statically, returns a DOMDocument or FALSE on failure.
maar goed,ik heb het nu wel, al is het wel een in mijn ogen niet zo'n nette oplossing.

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
<?php
$errors 
= array();
libxml_use_internal_errors(true);
$doc = new DOMDocument();
$doc->loadhtml("<html dxxx<nbody>haha<html>test");
$errors libxml_get_errors();
libxml_clear_errors();

if (
count($errors) > 0) {
    echo 
'Moet een fout geven! FOUT!';
}

$doc->loadhtml("<html><head></head><body><p>lol</p></body></html>");
$errors libxml_get_errors();
libxml_clear_errors();

if (
count($errors) > 0) {
    echo 
'Als je dit ziet, is er iets echt goed mis....';
}

// nog sneller
if ($doc->loadHtml("<html dxxx<nbody>haha<html>test") && count(libxml_get_errors()) > 0) {
    echo 
'html is fout 1';
} else {
    echo 
'html is goed 1';
}
libxml_clear_errors();

if (
$doc->loadHtml("<html><head></head><body><p>lol</p></body></html>") && count(libxml_get_errors()) > 0) {
    echo 
'html is fout 2';
} else {
    echo 
'html is goed 2';
}

exit;
?>
papernotewoensdag 29 mei 2013 @ 22:20
quote:
0s.gif Op dinsdag 28 mei 2013 16:43 schreef Chandler het volgende:
Ik doelde meer op domdocument

http://nl1.php.net/manual/en/domdocument.loadhtml.php

[..]

maar goed,ik heb het nu wel, al is het wel een in mijn ogen niet zo'n nette oplossing.
[ code verwijderd ]

Als je iets verder leest staat er dit:

quote:
While malformed HTML should load successfully, this function may generate E_WARNING errors when it encounters bad markup. libxml's error handling functions may be used to handle these errors.
Je huidige oplossing lijkt mij dus goed en ook volgens de documentatie.
Chandlerwoensdag 29 mei 2013 @ 22:42
Top! dan heb ik toch een juiste workaround! *)
gerrit098donderdag 30 mei 2013 @ 17:57
ik gebruik regelmatig b.v.
1
2
3
<?php
include "foto.php" ;
?>

om meer structuur in de website te krijgen wil ik graag dingen meer in mapjes plaatsen
het word dan dus
1
2
3
<?php
include "fotos/foto.php" ;
?>
waar de foto`s dus weer in sub mapjes staan.
met include loop ik dan regelmatig tegen het probleem aan dat blijft denken vanuit de rootmap

van uit iframe(`s) had ik dat probleem nooit. weet iemand hier een makkelijke oplossing voor?

of moet ik alle (php/html) bestanden die in mappen staan programmeren vanuit de root?
KomtTijd...donderdag 30 mei 2013 @ 18:37
je include volgens een relatief pad, ten opzichte van het bestand waar de include gedaan wordt.

Bedenk je dat includes server-side gebeuren en dus moeten verwijzen naar bestanden op hel lokale filesystem van de server. Terwijl iframes moeten verwijzen naar een url van de webserver. Dit is een wezenlijk verschil!
zoemdonderdag 30 mei 2013 @ 18:59
Bij een standaard include_path wordt er bij include/require altijd eerst gezocht binnen de directory waarin je php-file met het include statement staat. Dus je moet altijd rekenen vanuit het scriptbestand waarin je de include uitvoert. Je kunt eventueel paden toevoegen aan include_path, maar dat hangt van je projectopzet af.

1
2
3
4
5
6
7
8
<?php
var_dump
(explode(':'get_include_path()));

// array (size=3)
//   0 => string '.' (length=1)  <-- verwijst naar directory van het huidige php-bestand
//   1 => string '/usr/share/php' (length=14)
//   2 => string '/usr/share/pear' (length=15)
?>

En inderdaad wat KomTijd zegt, de structuur van het bestandssysteem hoeft niet gelijk te zijn aan je url-structuur.

Zonder concrete case valt er verder weinig te zeggen over een mogelijke oplossing.

[ Bericht 15% gewijzigd door zoem op 30-05-2013 19:09:46 ]
Tijnvrijdag 31 mei 2013 @ 16:55
Kan iemand me helpen met wat MySQL GROUP BY troubles?

Ik heb een database met twee tabellen:

1
2
3
4
5
6
7
player

id | name
------------
 1 | henk
 2 | truus
 3 | sjaak

en

1
2
3
4
5
6
7
game

id | player_id | character_id | waves | score
-----------------------------------------------
 1 |         2 |            5 |    12 |  9000
 2 |         5 |            9 |     8 |  4000
 3 |         2 |            4 |    15 | 12000

Nu wil ik een highscore-lijst maken gesorteerd op score en gegroepeerd op speler waarbij de character_id en wave van die score/speler-combinatie wordt weergegeven.

Hoe krijg ik dat voor elkaar? Want met zoiets kom ik er niet:

1
2
3
4
SELECT max(score) as score, character_id, waves
FROM game
GROUP BY user_id
ORDER BY score

Het probleem hiervan is dat de character_id en waves niet bij het record horen van de score. Iemand een slim om dit wel goed te doen?
KomtTijd...vrijdag 31 mei 2013 @ 16:58
Je MAX(score) en GROUP BY zijn toch helemaal niet nodig?
Tijnvrijdag 31 mei 2013 @ 17:00
quote:
14s.gif Op vrijdag 31 mei 2013 16:58 schreef KomtTijd... het volgende:
Je MAX(score) en GROUP BY zijn toch helemaal niet nodig?
Jawel, want het is de bedoeling dat er geen dubbele users in staan, maar alleen de maximale score van een user.
KomtTijd...vrijdag 31 mei 2013 @ 17:01
Is dat niet met distinct op te lossen?
slacker_nlvrijdag 31 mei 2013 @ 18:04
Kan je niet joinen met jezelf:

http://dev.mysql.com/doc/(...)ns.html#function_max

Je kan dan zoiets doen:

1
2
3
4
5
6
7
8
9
10
SELECT
    MAX(g.scores) as hiscore,
    g.character_id,
    g.waves,
FROM
    games as g
JOIN
    games as g2 on hiscore = g2.scores
    where g2.player_id = g.player_id 
;
Chandlerzaterdag 1 juni 2013 @ 12:47
Heeft iemand een oplossing voor het volgende?

Ik laad via curl multi meerdere url's in 1x maar soms gaat er een URL de fout in bv door het volgende.

- geen content ontvangen
- http error code
- redirect

Nu zou ik graag per uitgelezen URL willen weten welke URL de fout in is gegaan, maar kan dat niet checken als er een redirect is geweest.... mijn vraag is, hoe kan ik zorgen dat ik de juiste gegevens bij de error kan zetten? zodat ik die project kan skippen en eventueel de error kan gebruiken.

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

$projects 
= array(=> array("url" => "http://www/testredirect.php?x=5"),
                  
=> array("url" => "http://www/testredirect.php?x=2"),
                  
=> array("url" => "http://www/testerror.php"),
                  
=> array("url" => "http://www/testerror.php?x=10"),
                  
=> array("url" => "http://www/testerror.php?x=5"),
                  
=> array("url" => "http://www/testerror.php?x=22"));
                  
$mh curl_multi_init();
$handles = array();

foreach (
$projects AS $key => $project)
{
    echo 
$project['url'] . '<br />';
    
$handles[$key] = curl_init($project['url']);

    
curl_setopt($handles[$key], CURLOPT_TIMEOUT20);
    
curl_setopt($handles[$key], CURLOPT_CONNECTTIMEOUT20);
    
curl_setopt($handles[$key], CURLOPT_HEADERtrue);

    
curl_setopt($handles[$key], CURLOPT_AUTOREFERERtrue);
    
curl_setopt($handles[$key], CURLOPT_FAILONERRORtrue);
    
curl_setopt($handles[$key], CURLOPT_RETURNTRANSFERtrue);
    
curl_setopt($handles[$key], CURLOPT_SSL_VERIFYHOSTfalse);
    
curl_setopt($handles[$key], CURLOPT_SSL_VERIFYPEERfalse);

    
curl_setopt($handles[$key], CURLOPT_FOLLOWLOCATIONtrue);  // true for test

    
curl_setopt($handles[$key], CURLINFO_EFFECTIVE_URLtrue);
    
curl_setopt($handles[$key], CURLINFO_HEADER_OUTtrue);
    
curl_setopt($handles[$key], CURLINFO_REDIRECT_COUNTtrue);
    
    
curl_multi_add_handle($mh$handles[$key]);
}

$running null;
do 
{
    
curl_multi_exec($mh$running);

while (
$running 0);

foreach (
$handles AS $key => $value)
{
    
$break      false;
    
$curl_error curl_error($value); // fetch error, if any

    
print_r($curl_error);
    echo 
'<br />';
    
print_r(curl_getinfo($value));
    echo 
'<br />';
    if (
strlen($curl_error) == 0)
    {            
        
print_r(curl_multi_getcontent($value));
        echo 
'<br />';
    }
    else
    {
        echo (
"error<br/>");
    }
}

Of kijk ik nu al dagen ergens overheen?

Ps testredirect.php is een script die meerdere redirects uitvoert.
Ps testerror.php zorgt voor een sleep van $_GET['x'] gegeven seconden!
slacker_nlzaterdag 1 juni 2013 @ 21:51
quote:
15s.gif Op zaterdag 1 juni 2013 12:47 schreef Chandler het volgende:
Heeft iemand een oplossing voor het volgende?
Dit heb je toch al een keertje eerder gedaan? Een paar posts geleden zelfs.

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
<?php
error_reporting
(E_ALL);

$projects = array('opn' => array("url" => "http://www.opperschaap.net"),
                  
'opn_not_found' => array("url" => "http://www.opperschaap.net/die"),
                  
'redir' => array("url" => "http://www.example.com"),
);
    
$mh curl_multi_init();
$handles = array();

$setopt_array = array( 
    
CURLOPT_TIMEOUT => 20
    
CURLOPT_CONNECTTIMEOUT => 20
    
CURLOPT_HEADER => true,

    
CURLOPT_AUTOREFERER => true,
    
CURLOPT_FAILONERROR => true,
    
CURLOPT_RETURNTRANSFER => true,
    
CURLOPT_SSL_VERIFYHOST => false,
    
CURLOPT_SSL_VERIFYPEER => false,

    
CURLOPT_FOLLOWLOCATION => true,  // true for test
);

foreach (
$projects AS $key => $project) {

    
printf("URL: %s\n"$project['url']);

    
$ch curl_init($project['url']);
    
curl_setopt_array($ch$setopt_array);

    
curl_multi_add_handle($mh$ch);
    
$handles[$key] = $ch;
}

$running null;
do 
{
    
curl_multi_exec($mh$running);

while (
$running 0); 

foreach (
$projects AS $key => $project) {
    print 
"$key\n";
    
$ch $handles[$key];
    
$curl_error curl_error($ch); // fetch error, if any

    
$curl_info = (curl_getinfo($ch));

    if (
$project['url'] != $curl_info['url']) {
        
printf("Redirected from %s to %s\n"$project['url'], $curl_info['url']);
    }   

    if (
$curl_info['http_code'] == 200) {
        
print_r(curl_multi_getcontent($ch));
    }   
    else {
        
printf("HTTP code not 200: %d\n"$curl_info['http_code']);
    }   
    print 
"\n";                                                                                                                                                                                                                                                                                               
}
?>
Chandlerzondag 2 juni 2013 @ 09:17
Je hebt gelijk slacker_nl, maar omdat ik er echt niet uitkwam toch maar een extra post er over (en gelukkig zie ik nu waar ik de fout in ging!)

Thanks!
pascal08zondag 2 juni 2013 @ 16:04
Ik zit met een dilemma. Mijn zoekfunctie werkt met ajax en json. Ik zou POST en GET kunnen gebruiken. POST heeft als nadeel dat ik een formtoken moet meesturen ivm csrf en heeft volgens mij ook als nadeel dat er niets gecached kan worden. Met GET daarentegen zit ik met het probleem dat Codeigniter geen tekens zoals een apostrof tolereert. Ik weet dat het mogelijk is om dit uit te zetten, maar bij deze instelling staat duidelijk vermeldt dat je niets moet veranderen tenzij je weet waar je mee bezig bent, en daar zit het probleem, dat weet ik dus niet. :P

Google en andere grote sites werken met GET zag ik via de Chrome Console. Echter kan ik daar wel gewoon zoeken op een apostrof. De apostrof wordt dan omgezet in %27. Kan iemand mij uitleggen welke methode geschikter is voor mijn situatie en hoe ik eventueel veilig tekens zoals een apostrof in de URL toelaat bij een GET request?
zoemzondag 2 juni 2013 @ 17:25
quote:
0s.gif Op zondag 2 juni 2013 16:04 schreef pascal08 het volgende:
Ik zit met een dilemma. Mijn zoekfunctie werkt met ajax en json. Ik zou POST en GET kunnen gebruiken. POST heeft als nadeel dat ik een formtoken moet meesturen ivm csrf en heeft volgens mij ook als nadeel dat er niets gecached kan worden.
De reden dat een csrf-token wordt geadviseerd bij POST is juist omdat POST wordt gebruikt voor het veranderen van data op de server. Daarmee beantwoord ik eigenlijk je vraag al :)

Wat betreft caching: daar zou ik niet te veel over nadenken. Premature optimalisatie en je kunt het op veel verschillende manieren/niveaus realiseren, zowel server als client-side.
quote:
Met GET daarentegen zit ik met het probleem dat Codeigniter geen tekens zoals een apostrof tolereert. Ik weet dat het mogelijk is om dit uit te zetten, maar bij deze instelling staat duidelijk vermeldt dat je niets moet veranderen tenzij je weet waar je mee bezig bent, en daar zit het probleem, dat weet ik dus niet. :P
Kwestie van op de juiste manier escapen.
URL Encode a string in jQuery for an AJAX request
Ook handig zijn php's urlencode en json_encode
quote:
Google en andere grote sites werken met GET zag ik via de Chrome Console. Echter kan ik daar wel gewoon zoeken op een apostrof. De apostrof wordt dan omgezet in %27. Kan iemand mij uitleggen welke methode geschikter is voor mijn situatie en hoe ik eventueel veilig tekens zoals een apostrof in de URL toelaat bij een GET request?
Gewoon GET gebruiken. De intentie achter GET is juist het ophalen van data van de server. POST, PUT en DELETE zijn ontwikkeld om data op de server te veranderen.
pascal08zondag 2 juni 2013 @ 17:54
quote:
0s.gif Op zondag 2 juni 2013 17:25 schreef zoem het volgende:

De reden dat een csrf-token wordt geadviseerd bij POST is juist omdat POST wordt gebruikt voor het veranderen van data op de server. Daarmee beantwoord ik eigenlijk je vraag al :)
Dit wist ik. :@

quote:
Kwestie van op de juiste manier escapen.
URL Encode a string in jQuery for an AJAX request
Ook handig zijn php's urlencode en json_encode
Hier had ik nog niet aan gedacht. :@ Ik ken die functie ook nog niet, dus ik moet even kijken of het resultaat daarvan wel door Codeigniter geaccepteerd wordt.

Ik ga eens kijken. Bedankt voor je reply. ;)

EDIT:
1.replace("'", "%27")
werkt. *O* Dat is tevens ook het enige speciale karakter waar ik op wilde zoeken, dus dit is top. Bedankt. _O_

[ Bericht 13% gewijzigd door pascal08 op 02-06-2013 18:19:37 ]
zoemzondag 2 juni 2013 @ 18:35
Mooi om te horen dat het gelukt is ^O^
Cue_dinsdag 4 juni 2013 @ 08:45
Ik zit met een Oracle vraagje.
Als ik de volgende query uitvoer
1update table set status = 90 where to_Char(act_starttime, 'YYYYIW') = '201318' 

Krijg ik de volgende foutmelding
1
2
3
4
FOUT in regel 1:
.ORA-03113: Einde-van-bestand op communicatiekanaal.
Proces-ID: 0
Sessie-ID: 1484 serienummer: 3872
act_starttime is in eerste instantie een Timestamp. Wanneer ik hier een date van maak, dan doet hij het wel gewoon.

Iemand enig idee hoe dit kan/veroorzaakt wordt?
slacker_nldinsdag 4 juni 2013 @ 08:58
quote:
5s.gif Op dinsdag 4 juni 2013 08:45 schreef Cue_ het volgende:
Ik zit met een Oracle vraagje.
Als ik de volgende query uitvoer
[ code verwijderd ]

Krijg ik de volgende foutmelding
[ code verwijderd ]

act_starttime is in eerste instantie een Timestamp. Wanneer ik hier een date van maak, dan doet hij het wel gewoon.

Iemand enig idee hoe dit kan/veroorzaakt wordt?
Als je hier een date van maakt, wat bedoel je precies?

http://psoug.org/reference/timestamp.html
Cue_dinsdag 4 juni 2013 @ 09:00
quote:
0s.gif Op dinsdag 4 juni 2013 08:58 schreef slacker_nl het volgende:
Als je hier een date van maakt, wat bedoel je precies?

http://psoug.org/reference/timestamp.html
Alter table modify act_starttime date

Dan lukt de update wel.
slacker_nldinsdag 4 juni 2013 @ 09:13
Het zou moeten werken, maar de foutmelding komt niet overeen met je probleem..

Wat gebeurd er als je dit met sqlplus uitvoert?
En doe dan geen update, maar een select.
Cue_dinsdag 4 juni 2013 @ 09:16
Dat was allemaal geen probleem, kan er op selecteren, grouperen, order by whatever i want, enkel de update doet ie niet.

Het is mij vorige week wel gelukt hem eerst te modifyen naar date, toen weer terug naar timestamp, en toen deed hij het wel ineens. Dat werkt nu niet meer.
Scorpiedinsdag 4 juni 2013 @ 09:16
quote:
5s.gif Op dinsdag 4 juni 2013 08:45 schreef Cue_ het volgende:
Ik zit met een Oracle vraagje.
Als ik de volgende query uitvoer
[ code verwijderd ]

Krijg ik de volgende foutmelding
[ code verwijderd ]

act_starttime is in eerste instantie een Timestamp. Wanneer ik hier een date van maak, dan doet hij het wel gewoon.

Iemand enig idee hoe dit kan/veroorzaakt wordt?
; vergeten?
Cue_dinsdag 4 juni 2013 @ 09:17
quote:
7s.gif Op dinsdag 4 juni 2013 09:16 schreef Scorpie het volgende:

; vergeten?
Als in dat de query niet wordt uitgevoerd?

@slacker. Via sqlplus trouwens gedaan.
slacker_nldinsdag 4 juni 2013 @ 09:24
Aha. Maar die foutmelding is echt een generiek iets, hij klaagt namelijk niet over de query. Aangezien je selects ed wel werken heb ik het vermoeden dat de fout niet in de query ligt maar aan andere factoren.. Vooral omdat je conversie naar date nu hetzelfde probleem oplevert..

Je doet alles in een transactie?

1
2
3
4
5
BEGIN;

update ...

ROLLBACK; -- eventueel commit

https://forums.oracle.com/forums/thread.jspa?threadID=2458582
Cue_dinsdag 4 juni 2013 @ 09:47
Het ligt aan m'n index :o

1 create index  idx_match_actstarttime on table (to_char(act_starttime, 'YYYYIW') );

Is die zo vreemd?
Scorpiedinsdag 4 juni 2013 @ 09:50
'Het ligt aan je index' ?
Cue_dinsdag 4 juni 2013 @ 09:51
quote:
7s.gif Op dinsdag 4 juni 2013 09:50 schreef Scorpie het volgende:
'Het ligt aan je index' ?
Zonder index doet ie het perfect.. met index krijg ik die foutmelding.
zoemdinsdag 4 juni 2013 @ 10:02
De errorcode is erg generiek, wat staat er in de alert log?
KomtTijd...dinsdag 4 juni 2013 @ 10:02
quote:
7s.gif Op dinsdag 4 juni 2013 09:51 schreef Cue_ het volgende:

[..]

Zonder index doet ie het perfect.. met index krijg ik die foutmelding.
Da's wel een voorbarige conclusie. Als je je been eraf hakt is de jeuk aan je teen ook over.
Cue_dinsdag 4 juni 2013 @ 10:06
quote:
14s.gif Op dinsdag 4 juni 2013 10:02 schreef KomtTijd... het volgende:
Da's wel een voorbarige conclusie. Als je je been eraf hakt is de jeuk aan je teen ook over.
_O-
Crutchdinsdag 4 juni 2013 @ 10:10
quote:
14s.gif Op dinsdag 4 juni 2013 10:02 schreef KomtTijd... het volgende:

[..]

Da's wel een voorbarige conclusie. Als je je been eraf hakt is de jeuk aan je teen ook over.
Er is altijd nog fantoomjeuk. :')
KomtTijd...dinsdag 4 juni 2013 @ 10:13
Ik ben geen oracle-man maar iets als een FROM_UNIXTIME() ertussen, helpt dat?
Cue_dinsdag 4 juni 2013 @ 10:59
quote:
0s.gif Op dinsdag 4 juni 2013 10:02 schreef zoem het volgende:
De errorcode is erg generiek, wat staat er in de alert log?
1
2
3
Tue Jun  4 10:59:04 2013
Errors in file /oracle/admin/hkpora03/udump/hkpora03_ora_186.trc:
ORA-07445: exception encountered: core dump [evaopn2()+228] [SIGSEGV] [Address not mapped to object] [0x000000000] [] []
zoemdinsdag 4 juni 2013 @ 11:13
quote:
7s.gif Op dinsdag 4 juni 2013 10:59 schreef Cue_ het volgende:

[..]
[ code verwijderd ]

quote:
So the likeliest causes:

- The server process you were connected to crashed.
- A network problem broke your connection.
- Someone manually killed the process on the server you were connected to.

When the server process you were connected to crashed, it threw an ORA-07445. That error, along with ORA-00600, are relatively famous Oracle errors. They're functionally unhandled exceptions, with an ORA-00600 being an unhandled exception in the Oracle code, whereas ORA-07445 is a fatal signal from the OS, generally because Oracle did something that the OS didn't approve of, so the OS killed the Oracle process.
07445 is vaak gerelateerd aan een bug in Oracle.
Gerelateerde issue op SO: Oracle ORA-03113 and ORA-07445 ACCESS_VIOLATION
quote:
There was an index on the two date columns, TRANS_FROM and TRANS_TO. We droppped this. It worked.

After a bit more investigation we found that with few rows in the join, the index was not used but as the number of rows in the join increased, the query plan would change and the offending index would be used. This explained why it was an intermittent problem.
Cue_dinsdag 4 juni 2013 @ 11:37
Ik blijf het allemaal vreemd vinden.

1. Timestamp zonder index -> goed
2. Timestamp met index -> fout
3. Date met index -> goed

De queryplan is voor 2 en 3 hetzelfde. Gebruikt index by rowid als tableaccess en dan een index rowscan mbv de aangemaakte index op starttime
Bij versie 1 doet hij een full table access.
wipes66dinsdag 4 juni 2013 @ 12:31
1
2
3
<?php
$a
['a'] = 1;
?>

dit produceert geen error. is dat normaal :?
zoemdinsdag 4 juni 2013 @ 12:34
Ja en nee.

PHP maakt automagisch een array aan en vult deze met de opgegeven key en value. Echter, als je error_reporting en display_errors aanzet, zou je een index undefined notice kunnen krijgen.
wipes66dinsdag 4 juni 2013 @ 12:37
quote:
0s.gif Op dinsdag 4 juni 2013 12:34 schreef zoem het volgende:
Ja en nee.

PHP maakt automagisch een array aan en vult deze met de opgegeven key en value. Echter, als je error_reporting en display_errors aanzet, zou je een index undefined notice kunnen krijgen.
ja dat dacht ik ook. maar ik krijg geen foutmelding hierzo, maar misschien zit er iets fout in mijn custom error handler :@

edit: ik krijg op geen enkele manier een foutmelding, ongeacht de instellingen :{
KomtTijd...dinsdag 4 juni 2013 @ 12:53
Er is dan ook niets fout aan.
slacker_nldinsdag 4 juni 2013 @ 12:59
quote:
0s.gif Op dinsdag 4 juni 2013 12:34 schreef zoem het volgende:
Ja en nee.

PHP maakt automagisch een array aan en vult deze met de opgegeven key en value. Echter, als je error_reporting en display_errors aanzet, zou je een index undefined notice kunnen krijgen.
Hier staat het beschreven: http://php.net/manual/en/language.types.type-juggling.php
Wat kut is dat zeg, eigenlijk, best wel.
wipes66dinsdag 4 juni 2013 @ 13:31
quote:
0s.gif Op dinsdag 4 juni 2013 12:59 schreef slacker_nl het volgende:

[..]

Hier staat het beschreven: http://php.net/manual/en/language.types.type-juggling.php
Wat kut is dat zeg, eigenlijk, best wel.
ik keek er ook van op :P
zoemdinsdag 4 juni 2013 @ 13:35
quote:
0s.gif Op dinsdag 4 juni 2013 12:59 schreef slacker_nl het volgende:

[..]

Hier staat het beschreven: http://php.net/manual/en/language.types.type-juggling.php
Wat kut is dat zeg, eigenlijk, best wel.
In dat geval, leuk leesvoer: PHP: a fractal of bad design ;)
Tijndinsdag 4 juni 2013 @ 14:05
quote:
0s.gif Op dinsdag 4 juni 2013 12:34 schreef zoem het volgende:
Ja en nee.

PHP maakt automagisch een array aan en vult deze met de opgegeven key en value. Echter, als je error_reporting en display_errors aanzet, zou je een index undefined notice kunnen krijgen.
Ik heb wel eens zo'n melding gekregen als ik een niet-bestaand array-element probeerde te lezen, maar tijdens het zetten krijg je volgens mij nooit een melding.
zoemdinsdag 4 juni 2013 @ 14:16
quote:
2s.gif Op dinsdag 4 juni 2013 14:05 schreef Tijn het volgende:

[..]

Ik heb wel eens zo'n melding gekregen als ik een niet-bestaand array-element probeerde te lezen, maar tijdens het zetten krijg je volgens mij nooit een melding.
Dat zou goed kunnen kloppen, wist het niet zo snel uit m'n hoofd. Ik ontwikkel in ieder geval altijd met notice aan (error_reporting(-1) ), dat levert doorgaans betere code op.
slacker_nldinsdag 4 juni 2013 @ 14:16
quote:
2s.gif Op dinsdag 4 juni 2013 13:35 schreef zoem het volgende:

[..]

In dat geval, leuk leesvoer: PHP: a fractal of bad design ;)
1
2
3
4
5
6
7
8
9
14:15 < slacker> !php
14:16 <@digiweed> slacker: "php" : (#1) diy framework: http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html, or (#2) I chose PHP 
                  because I thought it would be a better fit for the community I was targeting, which tended to have a lot of non-programmers in it. -- 
                  Patrick Michaud, or (#3) you don't code php. you merely edit it until it works., or (#4) haat, or (#5) 
                  http://wiki.phpbb.com/Best_Practices:PHP, (1 more message)
14:16 < slacker> !more
14:16 <@digiweed> slacker: or (#6) fail, or (#7) http://208.116.9.205/10/content/15790/15.jpg, or (#8) easy slut, or (#9) 
                  http://bugs.php.net/bug.php?id=54325, or (#10) http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/, or (#11) 
                  https://bugs.php.net/bug.php?id=18556
zoemdinsdag 4 juni 2013 @ 14:31
quote:
0s.gif Op dinsdag 4 juni 2013 14:16 schreef slacker_nl het volgende:

[..]
[ code verwijderd ]

Leeft dat irc-kanaal nog steeds ja? :P

Php is op zich helemaal niet verkeerd, alleen zijn er door de tijd heen rare beslissingen genomen (zie dus dat blogitem), waardoor er dingen zijn ontstaan die nooit het licht hebben mogen zien. De slechte reputatie is ook te danken de laagdrempeligheid waardoor veel bad practices de wereld in zijn geholpen door onbekwame programmeurs. Maar als je weet wat je doet kun je leuke dingen maken met php.
slacker_nldinsdag 4 juni 2013 @ 14:50
quote:
0s.gif Op dinsdag 4 juni 2013 14:31 schreef zoem het volgende:
Leeft dat irc-kanaal nog steeds ja? :P

Php is op zich helemaal niet verkeerd, alleen zijn er door de tijd heen rare beslissingen genomen (zie dus dat blogitem), waardoor er dingen zijn ontstaan die nooit het licht hebben mogen zien. De slechte reputatie is ook te danken de laagdrempeligheid waardoor veel bad practices de wereld in zijn geholpen door onbekwame programmeurs. Maar als je weet wat je doet kun je leuke dingen maken met php.
Ja, dat irc-kanaal leeft nog steeds.

PHP is kut, als je dat hebt toegegeven is het al veel makkelijker programeren ;) Elke taal heeft z'n quircks: (lees de tweede top comment even).
KomtTijd...dinsdag 4 juni 2013 @ 15:35
NodeJS:
1
2
3
4
5
6
7
8
> []+[]
''
> []+{}
'[object Object]'
> {}+[]
'[object Object]'
> {}+{}
'[object Object][object Object]'
SpiderMonkey & V8:
1
2
3
4
5
6
7
8
>>> []+[]
""
>>> []+{}
"[object Object]"
>>> {}+[]
0
>>> {}+{}
NaN
rekenwonderdinsdag 4 juni 2013 @ 15:57
quote:
14s.gif Op dinsdag 4 juni 2013 15:35 schreef KomtTijd... het volgende:
NodeJS:
[ code verwijderd ]

SpiderMonkey & V8:
[ code verwijderd ]

Wat je weer tot in het bizarre kan doorvoeren: www.jsfuck.com
#ANONIEMdinsdag 4 juni 2013 @ 20:59
Ik heb nu een weeknummer, week 23. En een dag, donderdag in dit geval.

Nu is dit dus 6 juni 2013, maar hoe kan ik dit met php uitvinden?
Tijndinsdag 4 juni 2013 @ 21:05
Wat heb je al geprobeerd?
#ANONIEMdinsdag 4 juni 2013 @ 21:09
quote:
5s.gif Op dinsdag 4 juni 2013 21:05 schreef Tijn het volgende:
Wat heb je al geprobeerd?
"Get day of week" gegoogled :') Weet het niet veel beter te beschrijven..

Maarja, dan krijg je de huidige dag van de week. Dat wil ik niet..
KomtTijd...dinsdag 4 juni 2013 @ 21:12
hint: Datetime CreateFromFormat
#ANONIEMdinsdag 4 juni 2013 @ 21:12
quote:
14s.gif Op dinsdag 4 juni 2013 21:12 schreef KomtTijd... het volgende:
hint: Datetime CreateFromFormat
Ah, even naar kijken. Bedankt!
Tijndinsdag 4 juni 2013 @ 21:14
Ik zou Googlen op "php get date by week number".
zoemdinsdag 4 juni 2013 @ 21:17
quote:
0s.gif Op dinsdag 4 juni 2013 20:59 schreef d4v1d het volgende:
Ik heb nu een weeknummer, week 23. En een dag, donderdag in dit geval.

Nu is dit dus 6 juni 2013, maar hoe kan ik dit met php uitvinden?
Veel korter dan dit kan haast niet lijkt me :P
1
2
3
4
<?php
echo strftime("%c"strtotime("next Thursday"strtotime("2013W23")));
// Thu Jun 6 00:00:00 2013
?>
#ANONIEMdinsdag 4 juni 2013 @ 21:19
quote:
2s.gif Op dinsdag 4 juni 2013 21:17 schreef zoem het volgende:

[..]

Veel korter dan dit kan haast niet lijkt me :P
[ code verwijderd ]

_O_
gerrit098woensdag 5 juni 2013 @ 10:44
http://jsfiddle.net/Kb29y/2/

op jsfiddle heb ik mijn eigen "template" gezet. deze heb ik gemaakt om het me zelf makkelijker te maken om nieuwe foto op mijn site te zetten.

uiteraard heeft niet iedere shoot 100+ foto`s en verwijder ik dus de overbodige regels.
nu ben ik benieuwd of daar ook een makkelijkere manier voor is. iets in de trend van:

als het bestand niet bestaat sla dan de regel over??? weet iemand hier iets voor?
mstxwoensdag 5 juni 2013 @ 10:47
quote:
0s.gif Op woensdag 5 juni 2013 10:44 schreef gerrit098 het volgende:
http://jsfiddle.net/Kb29y/2/

op jsfiddle heb ik mijn eigen "template" gezet. deze heb ik gemaakt om het me zelf makkelijker te maken om nieuwe foto op mijn site te zetten.

uiteraard heeft niet iedere shoot 100+ foto`s en verwijder ik dus de overbodige regels.
nu ben ik benieuwd of daar ook een makkelijkere manier voor is. iets in de trend van:

als het bestand niet bestaat sla dan de regel over??? weet iemand hier iets voor?
Ten eerste zou ik een for-loop gebruiken en daarbinnen kun je met file_exists() kijken of een bestand bestaat.
slacker_nlwoensdag 5 juni 2013 @ 11:11
quote:
2s.gif Op dinsdag 4 juni 2013 21:17 schreef zoem het volgende:

[..]

Veel korter dan dit kan haast niet lijkt me :P
[ code verwijderd ]

Wat leuk, ik had door ooit deze code voor:

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
<?php
/* Stolen from http://nl.php.net/manual/en/function.date.php#84533 */                                                                                                     
function _first_weekday_of_year($year) {
    
$wtag date('w'mktime(0,0,0,1,1,$year));
    if (
$wtag <= 4) {
        
/* Mon to Tuesday */
        
$day mktime(0,0,0,1,1-($wtag-1),$year);
    } else {
        
/* Friday to sunday */
        
$day mktime(0,0,0,1,1+(7-$wtag+1),$year);
    }   
    return 
$day;
}
        
function 
week2date() {
    
$args func_get_args();
    
$num count($args);

    if (
$num ==  || $num == 2) {

        if (
$num == ) { 
            
$year array_pop($args); 
        } else {
            
$tmp getdate();
            
$year $tmp['year'];
        }   

        
$week array_pop($args);
        
$day _first_weekday_of_year($year) + (($week -) * 24 60 60);
        
$arr = array($day);
        for (
$i 0$i 6$i++) {
            
$day += 24 60 60
            
$arr[] = $day;
        }   
        return 
$arr;
    }   
    
/* If we land here we have an error */
    
trigger_error(sprintf("%s requires at least 1 parameter, with a maximum of 2"__FUNCTION__), E_USER_WARNING);
    return 
null;
}

# Het grote voordeel is dat je met negatieve weken kan werken
print_r(week2date(23,2013));
print_r(week2date(-23,2013));     
?>
Tijnwoensdag 5 juni 2013 @ 11:16
quote:
0s.gif Op woensdag 5 juni 2013 10:47 schreef mstx het volgende:

[..]

Ten eerste zou ik een for-loop gebruiken en daarbinnen kun je met file_exists() kijken of een bestand bestaat.
Ik kan de jsfiddle niet goed zien (telefoon), maar is glob() niet handig in dit geval? Daar komt gewoon een array uit met geldige paden.
slacker_nlwoensdag 5 juni 2013 @ 11:19
quote:
0s.gif Op woensdag 5 juni 2013 10:44 schreef gerrit098 het volgende:
ard heeft niet iedere shoot 100+ foto`s en verwijder ik dus de overbodige regels.
nu ben ik benieuwd of daar ook een makkelijkere manier voor is. iets in de trend van:

Logica en view uit elkaar trekken. Je logica checked alles, je view laat gewoon eea zien. Smarty much?Of wat er ook is voor PHP.
KomtTijd...woensdag 5 juni 2013 @ 11:28
quote:
0s.gif Op woensdag 5 juni 2013 10:44 schreef gerrit098 het volgende:
http://jsfiddle.net/Kb29y/2/

op jsfiddle heb ik mijn eigen "template" gezet. deze heb ik gemaakt om het me zelf makkelijker te maken om nieuwe foto op mijn site te zetten.

uiteraard heeft niet iedere shoot 100+ foto`s en verwijder ik dus de overbodige regels.
nu ben ik benieuwd of daar ook een makkelijkere manier voor is. iets in de trend van:

als het bestand niet bestaat sla dan de regel over??? weet iemand hier iets voor?
Ik heb ooit dit in elkaar gebeund (en heb er nog altijd veel gemak van):
http://duft.nl/imagescript.tar.gz

Ik zou zeggen kijk er even naar en leer ervan.
MichielPHdonderdag 6 juni 2013 @ 16:25
Ik wil in php iets waar je in Java een HashMap voor zou gebruiken: een character mappen naar een getal.

1$characters = array("B" => 0, "$" => 1, "C" => 2);
Elke parameter is een integer, 1 groter dan de vorige. Ik heb zo'n 50 characters. Typ ik dit uit of kan het korter?
zoemdonderdag 6 juni 2013 @ 16:28
Hangt ervan af hoe de parameters gedefinieerd zijn. Ik zie geen logische volgorde in B, $, C. Je hebt bijvoorbeeld array_combine() en range().
KomtTijd...donderdag 6 juni 2013 @ 16:30
Als er niet een speciale functie voor is, zou ik gewoon array('B','$','C') doen en dan een array_flip().
MichielPHdonderdag 6 juni 2013 @ 16:33
array_flip it is! Beiden bedankt!
pascal08vrijdag 7 juni 2013 @ 18:57
Ik breek m'n nek over het volgende probleem:

Ik heb een database met Poolse, Turkse en andere speciale karakters. Zonder de collatie te veranderen van utf8_general_ci naar een andere collatie kan ik bijvoorbeeld strings met de Poolse "ł" niet vinden door simpelweg een "l" te typen met MySQL. Ik zou de collatie wel willen aanpassen, maar dan zit ik waarschijnlijk met het probleem dan andere karakters, die niet binnen de collatie vallen, weer niet gevonden kunnen worden.

Hoe zouden jullie zoiets oplossing?
zoemvrijdag 7 juni 2013 @ 19:03
Heb je de MySQL-verbinding wel geinitialiseerd met de UTF8-karakterset? (SET NAMES 'utf8' )? De utf8_general_ci collation zou gewoon goed moeten zijn.
pascal08vrijdag 7 juni 2013 @ 19:56
quote:
2s.gif Op vrijdag 7 juni 2013 19:03 schreef zoem het volgende:
Heb je de MySQL-verbinding wel geinitialiseerd met de UTF8-karakterset? (SET NAMES 'utf8' )? De utf8_general_ci collation zou gewoon goed moeten zijn.
Sorry, ik haal 2 dingen door elkaar.

Ik kan dus wel die Poolse "ł" vinden, door die gewoon in de query te gebruiken, maar ik wil 'm juist kunnen vinden als ik een gewone "l" gebruik.
zoemvrijdag 7 juni 2013 @ 20:20
Hmm dat is lastiger. Utf8_general_ci zou diakriet (en case) insensitive moeten zijn. Al eens LIKE geprobeerd? Een andere -simpel doch doeltreffende- oplossing zou zijn om een genormaliseerde kolom te introduceren. Hangt een beetje van de situatie af wat handig is in deze.

http://dev.mysql.com/doc/refman/5.0/en/charset-literal.html
Juicyhilvrijdag 7 juni 2013 @ 20:31
Zo'n teken wordt gewoon gematched op i. Anders utf8_ bin nemen
Tijnvrijdag 7 juni 2013 @ 20:33
Weer een mooie vandaag: de Flickr API geeft gewoon ongeldige JSON terug :') WTF, Flickr is nota bene eigendom van Yahoo!, het bedrijf waar jarenlang Douglas Crockford werkte, de uitvinder van JSON.

Echt bizar 8)7

Uiteindelijk werkte deze suggestie: http://www.themusingsofal(...)rs-invalid-json.html
zoemvrijdag 7 juni 2013 @ 20:34
Wat een flickrs zijn het zeg :+
pascal08vrijdag 7 juni 2013 @ 20:34
quote:
0s.gif Op vrijdag 7 juni 2013 20:31 schreef Juicyhil het volgende:
Zo'n teken wordt gewoon gematched op i. Anders utf8_ bin nemen
Weet je dat zeker? Als ik LIKE 'B%' doe vind ik wel de juiste records, als ik LIKE 'Bi% doe niet.
Juicyhilvrijdag 7 juni 2013 @ 20:36
quote:
0s.gif Op vrijdag 7 juni 2013 20:34 schreef pascal08 het volgende:

[..]

Weet je dat zeker? Als ik LIKE 'B%' doe vind ik wel de juiste records, als ik LIKE 'Bi% doe niet.
Anders moet je dat veld even converteren naar ascii om te kijken waar hij op zoekt
pascal08vrijdag 7 juni 2013 @ 20:41
Ik ben nog helemaal niet thuis in de encode/decoding.

utf8_bin geeft een geëncodeerde string. Geen flauw idee wat ik daarmee moet. :P
pascal08vrijdag 7 juni 2013 @ 20:43
quote:
0s.gif Op vrijdag 7 juni 2013 20:20 schreef zoem het volgende:
Hmm dat is lastiger. Utf8_general_ci zou diakriet (en case) insensitive moeten zijn. Al eens LIKE geprobeerd? Een andere -simpel doch doeltreffende- oplossing zou zijn om een genormaliseerde kolom te introduceren. Hangt een beetje van de situatie af wat handig is in deze.

http://dev.mysql.com/doc/refman/5.0/en/charset-literal.html
Ik zoek met LIKE, maar dat werkt niet. Een genormaliseerde kolom is een serieuze optie. Moet ik die encoderen?
Juicyhilvrijdag 7 juni 2013 @ 20:43
quote:
0s.gif Op vrijdag 7 juni 2013 20:41 schreef pascal08 het volgende:
Ik ben nog helemaal niet thuis in de encode/decoding.

utf8_bin geeft een geëncodeerde string. Geen flauw idee wat ik daarmee moet. :P
convert(veld as ascii) toch?
Chandlervrijdag 7 juni 2013 @ 21:53
quote:
2s.gif Op dinsdag 4 juni 2013 21:17 schreef zoem het volgende:

[..]

Veel korter dan dit kan haast niet lijkt me :P
[ code verwijderd ]

Het is dat we posts niet kunnen plussen of liken! anders had je er 1 te pakken :+
pascal08vrijdag 7 juni 2013 @ 22:21
quote:
1s.gif Op vrijdag 7 juni 2013 20:43 schreef Juicyhil het volgende:

[..]

convert(veld as ascii) toch?
Zowel met utf8_general_ci als met uft8_bin:

3aBgG.png

[ Bericht 7% gewijzigd door pascal08 op 07-06-2013 23:54:39 ]
n8nzaterdag 8 juni 2013 @ 18:36
Over de database structuur in het algemeen, wat zijn tips/concepten die handig zijn met het oog op scheiden van data en het later weer in elkaar parsen. Voor een artikel bijvoorbeeld, doe je dan een artikel incl. mark-up (html) in 1 table-cell? Of gebruik je een row per paragraaf/header/link/afbeelding etc. met elke een id van het artikel of bijvoorbeeld een array met alle paragrafen en een aparte table met alle headers?

En afbeeldingen sla je niet op maar daar verwijs je naar ivm. snelheid, maar hoe beheer je die data dan (volgorde, links naar bestanden, bestanden wijzigen etc.)?

En ik lees 'overal' dat mysql depreciated wordt/is. Is het handiger om mysqli of pdo aanleren (aangezien ik net kom kijken)
Juicyhilzaterdag 8 juni 2013 @ 18:39
quote:
7s.gif Op zaterdag 8 juni 2013 18:36 schreef n8n het volgende:
Over de database structuur in het algemeen, wat zijn tips/concepten die handig zijn met het oog op scheiden van data en het later weer in elkaar parsen. Voor een artikel bijvoorbeeld, doe je dan een artikel incl. mark-up (html) in 1 table-cell? Of gebruik je een row per paragraaf/header/link/afbeelding etc. met elke een id van het artikel of bijvoorbeeld een array met alle paragrafen en een aparte table met alle headers?

En afbeeldingen sla je niet op maar daar verwijs je naar ivm. snelheid, maar hoe beheer je die data dan (volgorde, links naar bestanden, bestanden wijzigen etc.)?

En ik lees 'overal' dat mysql depreciated wordt/is. Is het handiger om mysqli of pdo aanleren (aangezien ik net kom kijken)
http://en.wikipedia.org/wiki/Boyce%E2%80%93Codd_normal_form
Juicyhilzaterdag 8 juni 2013 @ 18:41
En ja, gewoon PDO gebruiken. Nog beter met prepared statements omdat sneller/veiliger.
n8nzaterdag 8 juni 2013 @ 18:45
quote:
dus kort samengevat elke type data in een eigen table met id's voor communicatie? ga nog even verder lezen maar dat is de snelle indruk die ik krijg bij het lezen van een bron onderaan de pagina

http://web.archive.org/we(...)malizationRules.html

quote:
0s.gif Op zaterdag 8 juni 2013 18:41 schreef Juicyhil het volgende:
En ja, gewoon PDO gebruiken. Nog beter met prepared statements omdat sneller/veiliger.
ik lees idd dat pdo veiliger is (over snelheid gemixte berichten) maar ook gelimiteerder. Nu zal ik daar nu niet tegenaan lopen maar wellicht ooit. bedankt alvast, nuttige info

edit: lees dat pdo gelimiteerd is tot object georienteerd werken maar dat lijkt me alleen maar nuttig (omdat het mij dwingt zo te werken)

[ Bericht 2% gewijzigd door n8n op 08-06-2013 18:50:56 ]
zoemzaterdag 8 juni 2013 @ 18:50
quote:
7s.gif Op zaterdag 8 juni 2013 18:36 schreef n8n het volgende:
Over de database structuur in het algemeen, wat zijn tips/concepten die handig zijn met het oog op scheiden van data en het later weer in elkaar parsen. Voor een artikel bijvoorbeeld, doe je dan een artikel incl. mark-up (html) in 1 table-cell? Of gebruik je een row per paragraaf/header/link/afbeelding etc. met elke een id van het artikel of bijvoorbeeld een array met alle paragrafen en een aparte table met alle headers?
Twee kolommen aanmaken, eentje met de originele inhoud en eentje voor de geparste versie. Ik zou het hele artikel in een enkel record gooien en niet gaan scheiden op paragraaf oid. Dan maak je het jezelf lastiger dan nodig.
quote:
En afbeeldingen sla je niet op maar daar verwijs je naar ivm. snelheid, maar hoe beheer je die data dan (volgorde, links naar bestanden, bestanden wijzigen etc.)?
Afbeeldingen gewoon uploaden naar de webserver en daar opslaan in een handige directorystructuur (iets met datum)? De opslag van afbeeldingen/filmpjes/media zou je los moeten zien van een artikel. Metadata kun je eventueel opslaan in een apart ingerichte tabel.
quote:
En ik lees 'overal' dat mysql depreciated wordt/is. Is het handiger om mysqli of pdo aanleren (aangezien ik net kom kijken)
Met JH, ik zou voor PDO gaan icm prepared statements. Er zijn verder geen noemenswaardige limitaties tov mysql vziw.
Juicyhilzaterdag 8 juni 2013 @ 18:50
quote:
7s.gif Op zaterdag 8 juni 2013 18:45 schreef n8n het volgende:

[..]

dus kort samengevat elke type data in een eigen table met id's voor communicatie? ga nog even verder lezen maar dat is de snelle indruk die ik krijg bij het lezen van een bron onderaan de pagina

http://web.archive.org/we(...)malizationRules.html
Absoluut niet. Voor veel zaken zijn in principe geen id's nodig. Maar doen veel dba's dat uit gemakszucht.
quote:
[..]

ik lees idd dat pdo veiliger is (over snelheid gemixte berichten) maar ook gelimiteerder. Nu zal ik daar nu niet tegenaan lopen maar wellicht ooit. bedankt alvast, nuttige info
PDO zelf weet ik niet hoe dat zit met performance. Maar prepared statements hoeven door mysql niet opnieuw gecompileerd te worden, waardoor je daar (minimale) snelheidswinst hebt. Zelf gebruik ik altijd gewoon een ORM module.
n8nzaterdag 8 juni 2013 @ 18:53
quote:
0s.gif Op zaterdag 8 juni 2013 18:50 schreef zoem het volgende:

[..]

Twee kolommen aanmaken, eentje met de originele inhoud en eentje voor de geparste versie.

Daar had ik nog niet aan gedacht. Als er dan ooit fundamentele mark-up wijzigingen zijn hoeft er maar 1 keer een nieuwe 'lees'-kolom aangemaakt te worden

quote:
0s.gif Op zaterdag 8 juni 2013 18:50 schreef Juicyhil het volgende:

[..]

Absoluut niet. Voor veel zaken zijn in principe geen id's nodig. Maar doen veel dba's dat uit gemakszucht.


Ik lees nog even verder :@

[ Bericht 17% gewijzigd door n8n op 08-06-2013 18:58:47 ]
slacker_nlzaterdag 8 juni 2013 @ 19:04
quote:
0s.gif Op zaterdag 8 juni 2013 18:50 schreef Juicyhil het volgende:
Absoluut niet. Voor veel zaken zijn in principe geen id's nodig. Maar doen veel dba's dat uit gemakszucht.

Daarom coden we toch? :)
Juicyhilzaterdag 8 juni 2013 @ 19:06
quote:
0s.gif Op zaterdag 8 juni 2013 19:04 schreef slacker_nl het volgende:

[..]

Daarom coden we toch? :)
Dat is ook te zien aan de code van sommige programmeurs :'(
Purplesparkszondag 9 juni 2013 @ 18:01
Wat is tegenwoordig een goede php editor? Besloten toch maar eens van kladblok af te stappen.
Maringozondag 9 juni 2013 @ 18:08
quote:
0s.gif Op zondag 9 juni 2013 18:01 schreef Purplesparks het volgende:
Wat is tegenwoordig een goede php editor? Besloten toch maar eens van kladblok af te stappen.
phpStorm
Purplesparkszondag 9 juni 2013 @ 18:10
quote:
1s.gif Op zondag 9 juni 2013 18:08 schreef Maringo het volgende:

[..]

phpStorm
Ah van JetBrains, altijd zeer te spreken geweest over hun java ide.
Bedankt
boem-dikkiezondag 9 juni 2013 @ 18:23
Sublime Text 2.
Rockfirezondag 9 juni 2013 @ 18:45
quote:
0s.gif Op zondag 9 juni 2013 18:01 schreef Purplesparks het volgende:
Wat is tegenwoordig een goede php editor? Besloten toch maar eens van kladblok af te stappen.
NetBeans
Purplesparkszondag 9 juni 2013 @ 18:52
quote:
14s.gif Op zondag 9 juni 2013 18:23 schreef boem-dikkie het volgende:
Sublime Text 2.
quote:
0s.gif Op zondag 9 juni 2013 18:45 schreef Rockfire het volgende:

[..]

NetBeans
Hebben 1 van deze 2 ook een manier om een database aan te maken/simuleren? of weet iemand een progje om mee te maken en dit met 1 van die ide's te combineren?
Mijn laptop vertikt het apache server te laten werken, anders zou ik hierbij gewoon phpmyadmin installeren.
Momenteel maak ik gebruik van gratis webhost via ftp. Maar dat is voor het testen mij wat te traag.

Weet niet hoe Netbeans tegenwoordig is maar vond het als java editor niet fijn om in te werken.
slacker_nlzondag 9 juni 2013 @ 20:13
quote:
0s.gif Op zondag 9 juni 2013 18:52 schreef Purplesparks het volgende:

Hebben 1 van deze 2 ook een manier om een database aan te maken/simuleren? of weet iemand een progje om mee te maken en dit met 1 van die ide's te combineren?
Mijn laptop vertikt het apache server te laten werken, anders zou ik hierbij gewoon phpmyadmin installeren.
Momenteel maak ik gebruik van gratis webhost via ftp. Maar dat is voor het testen mij wat te traag.

Weet niet hoe Netbeans tegenwoordig is maar vond het als java editor niet fijn om in te werken.
Dan mock je toch de DB-calls?
Tijnzondag 9 juni 2013 @ 21:39
quote:
0s.gif Op zondag 9 juni 2013 18:52 schreef Purplesparks het volgende:

[..]


[..]

Mijn laptop vertikt het apache server te laten werken, anders zou ik hierbij gewoon phpmyadmin installeren.
Raar verhaal. Waarom installeer je niet gewoon XAMPP oid?
urselzondag 9 juni 2013 @ 22:06
quote:
0s.gif Op zondag 9 juni 2013 18:52 schreef Purplesparks het volgende:

[..]

[..]

Hebben 1 van deze 2 ook een manier om een database aan te maken/simuleren? of weet iemand een progje om mee te maken en dit met 1 van die ide's te combineren?
Mijn laptop vertikt het apache server te laten werken, anders zou ik hierbij gewoon phpmyadmin installeren.
Momenteel maak ik gebruik van gratis webhost via ftp. Maar dat is voor het testen mij wat te traag.

Weet niet hoe Netbeans tegenwoordig is maar vond het als java editor niet fijn om in te werken.
Je hebt ook niet altijd apache nodig. IIS werkt ook. :7
Purplesparkszondag 9 juni 2013 @ 22:46
quote:
2s.gif Op zondag 9 juni 2013 21:39 schreef Tijn het volgende:

[..]

Raar verhaal. Waarom installeer je niet gewoon XAMPP oid?

Dat als laatste optie geprobeerd, maar de windows versie dan. Ook dat weigerde te werken.
quote:
0s.gif Op zondag 9 juni 2013 22:06 schreef ursel het volgende:

[..]

Je hebt ook niet altijd apache nodig. IIS werkt ook. :7
Never! :P Sterker nog ik had iis verwijderd in de hoop apache aan de praat te krijgen.
n8nzondag 9 juni 2013 @ 23:37
weet iemand hoe ik een pagina kan versturen per mail wanneer deze wordt geladen? de inhoud dus.

Oke het lukt al alleen staan nu de tags er in als text, kan dat dood?

[ Bericht 9% gewijzigd door n8n op 09-06-2013 23:45:53 ]
Maringozondag 9 juni 2013 @ 23:53
quote:
0s.gif Op zondag 9 juni 2013 22:46 schreef Purplesparks het volgende:

[..]

Dat als laatste optie geprobeerd, maar de windows versie dan. Ook dat weigerde te werken.

Wamp werkte niet? Ik zou toch daar maar naar kijken voordat je hele rare dingen gaat verzinnen voor iets makkelijks.
Maringozondag 9 juni 2013 @ 23:55
quote:
7s.gif Op zondag 9 juni 2013 23:37 schreef n8n het volgende:
weet iemand hoe ik een pagina kan versturen per mail wanneer deze wordt geladen? de inhoud dus.

Oke het lukt al alleen staan nu de tags er in als text, kan dat dood?
Je wilt dus de gegeneerde pagina versturen? Http request vanuit je script opslaan in een string en die versturen?
n8nzondag 9 juni 2013 @ 23:57
quote:
1s.gif Op zondag 9 juni 2013 23:55 schreef Maringo het volgende:

[..]

Je wilt dus de gegeneerde pagina versturen? Http request vanuit je script opslaan in een string en die versturen?
heb nu een variabele die ook gebruikt wordt om in de pagina te echo-en, daar staan dus wel tags in en die worden meegemaild. moet ik er dan gewoon extra basic html-tags omheen zetten zodat het door de mail als pagina gezien wordt?

het is nu:

Screen%20Shot%202013-06-09%20at%2011.57.51%20PM.png

dmv

1
2
3
<?php
if ($_POST['confirm'] == false mail("*****@hpeprint.com""**"$message)
?>
Tijnmaandag 10 juni 2013 @ 00:03
quote:
0s.gif Op zondag 9 juni 2013 22:46 schreef Purplesparks het volgende:

[..]

Dat als laatste optie geprobeerd, maar de windows versie dan. Ook dat weigerde te werken.
Dat zou ik dan maar eens gaan oplossen ipv een IDE te zoeken die een database kan nabootsen.
n8nmaandag 10 juni 2013 @ 00:19
1
2
3
4
5
6
7
8
9
10
<?php
$headers 
"MIME-Version: 1.0rn"
$headers "Content-type: text/html; charset=utf-8"
$mail '<html><head>
<style type="text/css">
footer { display:none; }
#authors { margin: 2em 0 0; color: gray; font-size: 60%; }
</style>
</head><body>'
.$message.'</body></html>';
?>

1
2
3
<?php
mail
("*****@gmail.com""******"$mail$headers);
?>

tis gelukt

[ Bericht 20% gewijzigd door n8n op 10-06-2013 00:27:07 ]
Maringomaandag 10 juni 2013 @ 09:09
quote:
14s.gif Op maandag 10 juni 2013 00:19 schreef n8n het volgende:

[ code verwijderd ]

[ code verwijderd ]

tis gelukt
Top ^O^
Pakspulmaandag 10 juni 2013 @ 11:40
quote:
14s.gif Op maandag 10 juni 2013 00:19 schreef n8n het volgende:

[ code verwijderd ]

[ code verwijderd ]

tis gelukt
In eerste code blok, regel twee doet niets aangezien regel 3 $headers weer helemaal opnieuw set.
Darkomenmaandag 10 juni 2013 @ 12:14
Niet direct PHP als in code.

Ik heb gesolicteerd op een Junior Php Developer functie, zij hebben intresse in mij en gaan mij een aanbod doen morgen, wat kan ik als salaris verwachten/eisen?
Rockfiremaandag 10 juni 2013 @ 12:18
quote:
0s.gif Op maandag 10 juni 2013 12:14 schreef Darkomen het volgende:
Niet direct PHP als in code.

Ik heb gesolicteerd op een Junior Php Developer functie, zij hebben intresse in mij en gaan mij een aanbod doen morgen, wat kan ik als salaris verwachten/eisen?
Dat is afhankelijk van een aantal zaken: leeftijd / ervaring / ...
Darkomenmaandag 10 juni 2013 @ 12:20
quote:
0s.gif Op maandag 10 juni 2013 12:18 schreef Rockfire het volgende:

[..]

Dat is afhankelijk van een aantal zaken: leeftijd / ervaring / ...
Dat is wel handig om te vermelden.

Ben 31, ongeveer 10-12 jaar ervaring met php als hobby.
Laatste 3 jaar mogen ontwikkelen voor onze afdeling, wiki, eigen rapportage webapplicatie, werk verdeler dat soort dingetjes.
Maar, niet gecertificeerd, dat vonden zij dan geen probleem.

[ Bericht 45% gewijzigd door Darkomen op 10-06-2013 13:00:46 ]
Tijnmaandag 10 juni 2013 @ 12:35
Ik denk dat de meeste PHP'ers geen certificering hebben.
slacker_nlmaandag 10 juni 2013 @ 12:37
quote:
14s.gif Op maandag 10 juni 2013 00:19 schreef n8n het volgende:

[ code verwijderd ]

[ code verwijderd ]

tis gelukt
https://code.google.com/p/php-mime-mail-parser/

Dat is toch veel mooier om te gebruiken.
Tijnmaandag 10 juni 2013 @ 12:42
Ik gebruik al jaren dit: https://github.com/Synchro/PHPMailer

Misschien niet het charmantste script ooit, maar het werkt en de interface is redelijk ok:

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
<?php
require 'class.phpmailer.php';

$mail = new PHPMailer;

$mail->IsSMTP();                                      // Set mailer to use SMTP
$mail->Host 'smtp1.example.com;smtp2.example.com';  // Specify main and backup server
$mail->SMTPAuth true;                               // Enable SMTP authentication
$mail->Username 'jswan';                            // SMTP username
$mail->Password 'secret';                           // SMTP password
$mail->SMTPSecure 'tls';                            // Enable encryption, 'ssl' also accepted

$mail->From 'from@example.com';
$mail->FromName 'Mailer';
$mail->AddAddress('josh@example.net''Josh Adams');  // Add a recipient
$mail->AddAddress('ellen@example.com');               // Name is optional
$mail->AddReplyTo('info@example.com''Information');
$mail->AddCC('cc@example.com');
$mail->AddBCC('bcc@example.com');

$mail->WordWrap 50;                                 // Set word wrap to 50 characters
$mail->AddAttachment('/var/tmp/file.tar.gz');         // Add attachments
$mail->AddAttachment('/tmp/image.jpg''new.jpg');    // Optional name
$mail->IsHTML(true);                                  // Set email format to HTML

$mail->Subject 'Here is the subject';
$mail->Body    'This is the HTML message body <b>in bold!</b>';
$mail->AltBody 'This is the body in plain text for non-HTML mail clients';

if(!
$mail->Send()) {
   echo 
'Message could not be sent.';
   echo 
'Mailer Error: ' $mail->ErrorInfo;
   exit;
}

echo 
'Message has been sent';
?>
Darkomenmaandag 10 juni 2013 @ 12:43
quote:
2s.gif Op maandag 10 juni 2013 12:42 schreef Tijn het volgende:
Ik gebruik al jaren dit: https://github.com/Synchro/PHPMailer

Misschien niet het charmantste script ooit, maar het werkt en de interface is redelijk ok:
[ code verwijderd ]

Die gebruik ik inderdaad ook al een hele tijd., erg simpel.
mrjobbymaandag 10 juni 2013 @ 21:00
hello people,

Ik probeer een scriptje te maken om records uit mijn database te verwijderen. Ik heb zelf het idee dat ik al aardig op weg ben maar op t laatst wilt ie het nou net even niet doen!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
    
include 'config.php';
    include 
'header.php';

$verwijderen = ($_GET['id']);

    
$query_del 'DELETE FROM Student WHERE studentnummer = $verwijderen';
$result_del mysql_query($query_del);
    
echo 
"U heeft zojuist een student met het student nummer $verwijderen verwijdert.";
    
    include 
'footer.php';
?>

als ik
1
2
3
<?php
$query_del 
'DELETE FROM Student WHERE studentnummer = $verwijderen';
?>

verander in

1
2
3
<?php
$query_del 
'DELETE FROM Student WHERE studentnummer = 11028416';
?>

wordt student met nummer 11028416 wel verwijderd.

Hij echo'ed heel netjes het studentnummer van degene die ik aan klikte maar verwijderd heulemaal niets! Ik hoop dat iemand mij een laatste zetje in de goede richting kan geven
Pakspulmaandag 10 juni 2013 @ 21:03
Voer het volgende maar eens uit en kijkt goed naar de quote verschillen.

1
2
3
4
5
6
<?php
$variable 
"DIT IS DE WAARDE!!!";

echo 
"SQL string blabla etc WHERE $variable";
echo 
'SQL string blabla etc WHERE $variable';
?>
In een enkele quote worden variabelen niet verwerkt.
mrjobbymaandag 10 juni 2013 @ 21:05
quote:
0s.gif Op maandag 10 juni 2013 21:03 schreef Pakspul het volgende:
Voer het volgende maar eens uit en kijkt goed naar de quote verschillen.
[ code verwijderd ]

In een enkele quote worden variabelen niet verwerkt.
Shoot me. Dit wist ik wel alleen na een te lange tijd zie je dat soort ongein over het hoofd. Erg bedankt ;)
Juicyhilmaandag 10 juni 2013 @ 21:06
quote:
2s.gif Op maandag 10 juni 2013 12:35 schreef Tijn het volgende:
Ik denk dat de meeste PHP'ers geen certificering hebben.
Ik heb een MCTS *)
Pakspulmaandag 10 juni 2013 @ 21:15
quote:
0s.gif Op maandag 10 juni 2013 21:05 schreef mrjobby het volgende:

[..]

Shoot me. Dit wist ik wel alleen na een te lange tijd zie je dat soort ongein over het hoofd. Erg bedankt ;)
Heb je wel een goede IDE, want dan moet je ook direct het aan kleuren zien. Daarnaast, ik vind variabelen in strings gebruiken erg lelijk. Dan kun je beter accolades er om heen zetten, of $var = "first" . $subvar . "second";
KomtTijd...maandag 10 juni 2013 @ 21:22
quote:
0s.gif Op maandag 10 juni 2013 21:15 schreef Pakspul het volgende:

[..]

Heb je wel een goede IDE, want dan moet je ook direct het aan kleuren zien. Daarnaast, ik vind variabelen in strings gebruiken erg lelijk. Dan kun je beter accolades er om heen zetten, of $var = "first" . $subvar . "second";
Variables in strings valt mee te leven, variables in queries daarentegen :X :X

@mrjobby: SRSLY, ga PDO gebruiken en parameterizeer je queries. Als je dit script serieus online gaat zetten kun je net zo goed gelijk je username en password erbij zetten.
n8ndinsdag 11 juni 2013 @ 00:09
quote:
0s.gif Op maandag 10 juni 2013 11:40 schreef Pakspul het volgende:

[..]

In eerste code blok, regel twee doet niets aangezien regel 3 $headers weer helemaal opnieuw set.
Ja dat dacht ik al maar op alle voorbeelden stond dat zo, vond het al vreemd
quote:
0s.gif Op maandag 10 juni 2013 12:37 schreef slacker_nl het volgende:

[..]

https://code.google.com/p/php-mime-mail-parser/

Dat is toch veel mooier om te gebruiken.
Het is maar voor 15 minuten installatie maar desondanks bedankt voor je-en andere-input. top
Juicyhildinsdag 11 juni 2013 @ 00:11
quote:
14s.gif Op maandag 10 juni 2013 21:22 schreef KomtTijd... het volgende:

[..]

Variables in strings valt mee te leven, variables in queries daarentegen :X :X
Ik zie het nog te vaak gebeuren binnen grote applicaties hoor :{
slacker_nldinsdag 11 juni 2013 @ 00:57
quote:
0s.gif Op maandag 10 juni 2013 21:15 schreef Pakspul het volgende:

[..]

Heb je wel een goede IDE, want dan moet je ook direct het aan kleuren zien. Daarnaast, ik vind variabelen in strings gebruiken erg lelijk. Dan kun je beter accolades er om heen zetten, of $var = "first" . $subvar . "second";
Daarom hebben ze (s)printf uitgevonden, als er iets lelijkers is dan "dit " . $is . " toch" . $echt_kut en foutgevoeliger dan: "Dit is $misschien toch wel beterder dan $stomme punten $overal moeten $zetten". En ik weet niet precies hoe het in PHP is, maar sprintf("%s is nog prettiger\n", $this->dit());
rekenwonderdinsdag 11 juni 2013 @ 10:24
quote:
0s.gif Op dinsdag 11 juni 2013 00:11 schreef Juicyhil het volgende:

[..]

Ik zie het nog te vaak gebeuren binnen grote applicaties hoor :{
https://github.com/search?q=extension%3Aphp+mysql_query+%24_GET :-)
Juicyhildinsdag 11 juni 2013 @ 10:25
quote:
:|W
Sitethiefdinsdag 11 juni 2013 @ 11:12
quote:
1s.gif Op maandag 10 juni 2013 21:06 schreef Juicyhil het volgende:
MCTS
Grapjas :P.
Pakspuldinsdag 11 juni 2013 @ 11:55
quote:
Wow, je zou toch verwachten dat ook PHP zelf hier een keer wat aan zou doen.
rekenwonderdinsdag 11 juni 2013 @ 12:32
quote:
0s.gif Op dinsdag 11 juni 2013 11:55 schreef Pakspul het volgende:

[..]

Wow, je zou toch verwachten dat ook PHP zelf hier een keer wat aan zou doen.
Doe maar een voorstel :-)
Tijndinsdag 11 juni 2013 @ 13:18
quote:
0s.gif Op dinsdag 11 juni 2013 11:55 schreef Pakspul het volgende:

[..]

Wow, je zou toch verwachten dat ook PHP zelf hier een keer wat aan zou doen.
mysql_query() is al depricated.
mstxdinsdag 11 juni 2013 @ 13:20
quote:
2s.gif Op dinsdag 11 juni 2013 13:18 schreef Tijn het volgende:

[..]

mysql_query() is al depricated.
mysqli_query() niet en die is net zo onveilig als je het op dezelfde manier gebruikt.
rekenwonderdinsdag 11 juni 2013 @ 13:29
quote:
0s.gif Op dinsdag 11 juni 2013 13:20 schreef mstx het volgende:
mysqli_query() niet en die is net zo onveilig als je het op dezelfde manier gebruikt.
PDO idem dito.
mrjobbydinsdag 11 juni 2013 @ 13:58
ach, het is maar voor een stom school opdrachtje.

echter heb ik wel weer iets gevonden waar ik niet uit kom >.<

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
    
include 'config.php';
    include 
'header.php';

$aanpassen = ($_GET['invoer']);

$studentnummer = ($_GET['studentnummer2']);
$achternaam = ($_GET['achternaam']);
$voornaam = ($_GET['voornaam']);
$geboortedatum = ($_GET['geboortedatum']);
$docentcode = ($_GET['docentcode']);

$query_upd "UPDATE Student SET achternaam = $achternaam WHERE studentnummer = $aanpassen";
$result_upd mysql_query($query_upd); 
    
echo 
"U heeft zojuist een student met het studentnummer $aanpassen aangepast."

echo
"<a href='opdr6.php'>Ga terug naar het overzicht</a></td>";
    
    include 
'footer.php';
?>

Als ik mijn variabele($achternaam) met een waarde van cijfers vul doet die het wel. als ik hem met tekens vul doet die het niet. de type van het desbetreffende veld is char(20).
mscholdinsdag 11 juni 2013 @ 14:01
quote:
0s.gif Op dinsdag 11 juni 2013 13:20 schreef mstx het volgende:

[..]

mysqli_query() niet en die is net zo onveilig als je het op dezelfde manier gebruikt.
alles is zo onveilig als de manier waar jij het op gebruikt...?
rekenwonderdinsdag 11 juni 2013 @ 14:01
quote:
0s.gif Op dinsdag 11 juni 2013 13:58 schreef mrjobby het volgende:
Als ik mijn variabele($achternaam) met een waarde van cijfers vul doet die het wel. als ik hem met tekens vul doet die het niet. de type van het desbetreffende veld is char(20).
Dat komt omdat je geen quotes gebruikt. Maar ook hier is PDO de oplossing :-)
mrjobbydinsdag 11 juni 2013 @ 14:06
quote:
0s.gif Op dinsdag 11 juni 2013 14:01 schreef rekenwonder het volgende:

[..]

Dat komt omdat je geen quotes gebruikt. Maar ook hier is PDO de oplossing :-)
Ik ben niet bekend met PDO, wat houd dat ongeveer in?
rekenwonderdinsdag 11 juni 2013 @ 14:08
PDO is de aanbevolen methode (zegt de gek) om queries in PHP af te vuren. Het gebruikt o.a. parameter binding (veilig) i.p.v. dat je strings opbouwt (onveilig).

http://php.net/manual/en/book.pdo.php
mstxdinsdag 11 juni 2013 @ 14:27
quote:
0s.gif Op dinsdag 11 juni 2013 14:01 schreef mschol het volgende:

[..]

alles is zo onveilig als de manier waar jij het op gebruikt...?
Dat is correct. Alles is zo (on)veilig als dat je het zelf maakt.
KomtTijd...dinsdag 11 juni 2013 @ 17:44
quote:
0s.gif Op dinsdag 11 juni 2013 14:08 schreef rekenwonder het volgende:
PDO is de aanbevolen methode (zegt de gek) om queries in PHP af te vuren. Het gebruikt o.a. parameter binding (veilig) i.p.v. dat je strings opbouwt (onveilig).

http://php.net/manual/en/book.pdo.php
of de spoedcursus:

1) maak verbinding met je DB: http://www.php.net/manual/en/pdo.connections.php
2) maak een statement van een query: http://www.php.net/manual/en/pdo.prepare.php
3) voer het statement uit: http://www.php.net/manual/en/pdostatement.execute.php
4) doe eventueel wat leuks met de results: http://www.php.net/manual/en/pdostatement.fetch.php
Chandlerdinsdag 11 juni 2013 @ 21:29
Mensen, wisten jullie dat als je InnoDB gebruikt voor je tabel/data je met een INSERT ... ON DUPLICATE KEY UPDATE het AUTO_INCREMENT veld ook automatisch veranderd? bij een update dan wel te verstaan ;) want bij een INSERT is het normaal.

Nu gebruik ik zelf een tabel om regels toe te voegen maar ook om regels te updaten (iets wat vele malen vaker voorkomt dan de inserts) dus veranderd continue het AUTO_INCREMENT veld. Ik heb nu al 3,5miljoen regels en weet dat er zo'n 25 miljoen INSERT ON DUPLICATE KEY queries gedaan zijn, dus is het hoogste AUTO_INCREMEN veld niet 3,5mil maar 25.032.321 :). Nu gebruik ik wel een BIGINT voor het veld maar toch... het zal sneller opraken dan dat ik echt 'unieke' records heb.

Maar er is een oplossing *)
http://dev.mysql.com/doc/(...)rement-handling.html

innodb_autoinc_lock_mode

Hebben jullie ervaring met deze optie? en eventuele performance? of zaken waar ik dan bij moet gaan opletten?
zoemdinsdag 11 juni 2013 @ 21:44
Dat is veranderd sinds versie 5.1, al een tijdje terug dus. Als je lock mode op 0 zou zetten dan heeft dat wel een negatieve impact op performance vanwege het wachten op auto increment locks.
Chandlerdinsdag 11 juni 2013 @ 22:12
@Zoem; maar dat geld niet voor MyISAM :) en andere database formaten (voor zover ik weet).

Maar in mijn geval is het maar 1 script die de tabellen aanvult/update, verder heeft de rest alleen maar lees toegang! zal het dan nog wat uitmaken? ben echt bang dat ik met een jaartje door mijn bigint heen ben :@
slacker_nldinsdag 11 juni 2013 @ 22:36
quote:
0s.gif Op dinsdag 11 juni 2013 21:29 schreef Chandler het volgende:
Mensen, wisten jullie dat als je InnoDB gebruikt voor je tabel/data je met een INSERT ... ON DUPLICATE KEY UPDATE het AUTO_INCREMENT veld ook automatisch veranderd? bij een update dan wel te verstaan ;) want bij een INSERT is het normaal.

Nu gebruik ik zelf een tabel om regels toe te voegen maar ook om regels te updaten (iets wat vele malen vaker voorkomt dan de inserts) dus veranderd continue het AUTO_INCREMENT veld. Ik heb nu al 3,5miljoen regels en weet dat er zo'n 25 miljoen INSERT ON DUPLICATE KEY queries gedaan zijn, dus is het hoogste AUTO_INCREMEN veld niet 3,5mil maar 25.032.321 :). Nu gebruik ik wel een BIGINT voor het veld maar toch... het zal sneller opraken dan dat ik echt 'unieke' records heb.

Maar er is een oplossing *)
http://dev.mysql.com/doc/(...)rement-handling.html

innodb_autoinc_lock_mode

Hebben jullie ervaring met deze optie? en eventuele performance? of zaken waar ik dan bij moet gaan opletten?
Wat stom! Het lijkt me juist dat je een UPDATE doet omdat.. bizar.
zoemdinsdag 11 juni 2013 @ 22:40
quote:
0s.gif Op dinsdag 11 juni 2013 22:12 schreef Chandler het volgende:
@Zoem; maar dat geld niet voor MyISAM :) en andere database formaten (voor zover ik weet).
Juh, ik reageerde ook even specifiek op Inno.
quote:
Maar in mijn geval is het maar 1 script die de tabellen aanvult/update, verder heeft de rest alleen maar lees toegang! zal het dan nog wat uitmaken? ben echt bang dat ik met een jaartje door mijn bigint heen ben :@
Dan ben ik benieuwd om wat voor soort data het gaat. Je zit niet zomaar aan max bigint (2^64-1).

signed van -9.223.372.036.854.775.808 tot 9.223.372.036.854.775.807
unsigned van 0 tot 18.446.744.073.709.551.615

Dat is wel een stuk meer dan jouw 25 miljoen.
Chandlerwoensdag 12 juni 2013 @ 01:34
Ik vond het ook nogal apart maar goed...

@zoem; dan moet ik inderdaad nog even stevig mijn best doen... :+
Lightvrijdag 14 juni 2013 @ 20:02
quote:
4s.gif Op woensdag 12 juni 2013 01:34 schreef Chandler het volgende:
Ik vond het ook nogal apart maar goed...

@zoem; dan moet ik inderdaad nog even stevig mijn best doen... :+
Ongeveer 290.000 jaar iedere seconde 1 miljoen inserts ... updates uitvoeren. En dan ga ik uit van een signed reeks (waar je alleen het positieve deel gebruikt).
Lightvrijdag 14 juni 2013 @ 20:04
quote:
0s.gif Op dinsdag 11 juni 2013 00:57 schreef slacker_nl het volgende:

[..]

Daarom hebben ze (s)printf uitgevonden, als er iets lelijkers is dan "dit " . $is . " toch" . $echt_kut en foutgevoeliger dan: "Dit is $misschien toch wel beterder dan $stomme punten $overal moeten $zetten". En ik weet niet precies hoe het in PHP is, maar sprintf("%s is nog prettiger\n", $this->dit());
sprintf() werkt gewoon in php :)
Lightvrijdag 14 juni 2013 @ 20:05
quote:
2s.gif Op maandag 10 juni 2013 12:35 schreef Tijn het volgende:
Ik denk dat de meeste PHP'ers geen certificering hebben.
Dat is correct :)
Chandlervrijdag 14 juni 2013 @ 20:40
quote:
0s.gif Op vrijdag 14 juni 2013 20:02 schreef Light het volgende:

[..]

Ongeveer 290.000 jaar iedere seconde 1 miljoen inserts ... updates uitvoeren. En dan ga ik uit van een signed reeks (waar je alleen het positieve deel gebruikt).
euh lol, dan kan ik inderdaad nog wel even doorgaan maar is het niet zo dat steeds het veranderen van id's (want een id kan wel 10.000 keer veranderen op deze manier) niet handig is voor het wegschrijven van de data? (steeds het verplaatsen van data?!)
Lightvrijdag 14 juni 2013 @ 20:45
quote:
0s.gif Op vrijdag 14 juni 2013 20:40 schreef Chandler het volgende:

[..]

euh lol, dan kan ik inderdaad nog wel even doorgaan maar is het niet zo dat steeds het veranderen van id's (want een id kan wel 10.000 keer veranderen op deze manier) niet handig is voor het wegschrijven van de data? (steeds het verplaatsen van data?!)
Het lijkt me niet dat het id verandert. Als het record nog niet in de database is, wordt het toegevoegd. Als het al wel aanwezig is, moet het uniek zijn op basis van een andere key dan het id (anders heb je niets aan die INSERT .. ON DUPLICATE KEY UPDATE functionaliteit, er moet wel een duplicate key zijn).
slacker_nlvrijdag 14 juni 2013 @ 20:46
quote:
0s.gif Op vrijdag 14 juni 2013 20:04 schreef Light het volgende:

[..]

sprintf() werkt gewoon in php :)
Dat weet ik, maar ik wilde heel wat anders zeggen maar blergh ofzo. Ik wilde zeggen: In Perl kan je methods niet gebruiken in string interpolitie, dus dan moet je printf("bla %s", $this->iets()) doen ipv "bla $this->iets()" Maar dat zal in PHP ook vast zo zijn.
slacker_nlvrijdag 14 juni 2013 @ 20:48
quote:
0s.gif Op vrijdag 14 juni 2013 20:45 schreef Light het volgende:

[..]

Het lijkt me niet dat het id verandert. Als het record nog niet in de database is, wordt het toegevoegd. Als het al wel aanwezig is, moet het uniek zijn op basis van een andere key dan het id (anders heb je niets aan die INSERT .. ON DUPLICATE KEY UPDATE functionaliteit, er moet wel een duplicate key zijn).
Waarom zou de data elders worden weggeschreven worden als de key veranderd? Dat zal onder water wel gewoon een pointer zijn naar, dat veranderen maakt weinig verschil..
Lightvrijdag 14 juni 2013 @ 20:57
quote:
0s.gif Op vrijdag 14 juni 2013 20:46 schreef slacker_nl het volgende:

[..]

Dat weet ik, maar ik wilde heel wat anders zeggen maar blergh ofzo. Ik wilde zeggen: In Perl kan je methods niet gebruiken in string interpolitie, dus dan moet je printf("bla %s", $this->iets()) doen ipv "bla $this->iets()" Maar dat zal in PHP ook vast zo zijn.
Ik betwijfel of "bla $this->iets()" in php werkt, maar volgens mij moet je dat ook helemaal niet willen gebruiken.
Lightvrijdag 14 juni 2013 @ 21:14
quote:
0s.gif Op vrijdag 14 juni 2013 20:48 schreef slacker_nl het volgende:

[..]

Waarom zou de data elders worden weggeschreven worden als de key veranderd? Dat zal onder water wel gewoon een pointer zijn naar, dat veranderen maakt weinig verschil..
Voorbeeldje:
1
2
3
4
5
6
7
CREATE TABLE foo (
  id INT NOT NULL AUTO_INCREMENT,
  bar INT NOT NULL,
  views INT NOT NULL DEFAULT 0,
  PRIMARY KEY (id),
  UNIQUE KEY bar (bar)
) ENGINE=InnoDB;

Als ik dan deze query uitvoer:

1INSERT INTO foo (bar, views) VALUES (1,1) ON DUPLICATE KEY UPDATE views = views + 1;

Dan wordt bij de eerste keer netjes een nieuw record aangemaakt met id 1. Als ik de query nog een keer uitvoer, wordt de auto-increment waarde van de tabel wel verhoogd maar het id van de rij verandert niet. Er wordt dan ook geen data verplaatst. Er wordt alleen het volgende nummer geclaimd van de auto-increment lijst en pas daarna wordt gekeken of het invoegen succesvol is. (Als een insert faalt en er staat geen on duplicate key update bij, wordt de auto-increment waarde alsnog wel met 1 verhoogd.)
slacker_nlvrijdag 14 juni 2013 @ 21:20
quote:
0s.gif Op vrijdag 14 juni 2013 20:57 schreef Light het volgende:

[..]

Ik betwijfel of "bla $this->iets()" in php werkt, maar volgens mij moet je dat ook helemaal niet willen gebruiken.
Dit is wat het doet:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
cat x.php ; php x.php
<?php

include_once("etc/env.php");

class Foo {
    function bar() {
        return "bar() called";
    }
}

$foo = new Foo();
print "bla $foo->bar()\n";
printf("bla %s\n", $foo->bar());
?>

PHP Notice:  Undefined property: Foo::$bar in /home/xxxx/sbox/php/x.php on line 14
Notice: Undefined property: Foo::$bar in /home/xxxx/sbox/php/x.php on line 14
bla ()
bla bar() called
slacker_nlvrijdag 14 juni 2013 @ 21:24
quote:
0s.gif Op vrijdag 14 juni 2013 21:14 schreef Light het volgende:

[..]

Voorbeeldje:
[ code verwijderd ]

Als ik dan deze query uitvoer:
[ code verwijderd ]

Dan wordt bij de eerste keer netjes een nieuw record aangemaakt met id 1. Als ik de query nog een keer uitvoer, wordt de auto-increment waarde van de tabel wel verhoogd maar het id van de rij verandert niet. Er wordt dan ook geen data verplaatst. Er wordt alleen het volgende nummer geclaimd van de auto-increment lijst en pas daarna wordt gekeken of het invoegen succesvol is. (Als een insert faalt en er staat geen on duplicate key update bij, wordt de auto-increment waarde alsnog wel met 1 verhoogd.)
Je zegt nu dat de id van het record niet veranderd, maar de sequence van de auto-increment wel wordt verhoogd?

Wat gebeurd er als je een rollback doet van die transactie?
Lightvrijdag 14 juni 2013 @ 21:28
quote:
0s.gif Op vrijdag 14 juni 2013 21:24 schreef slacker_nl het volgende:

[..]

Je zegt nu dat de id van het record niet veranderd, maar de sequence van de auto-increment wel wordt verhoogd?
Dat zei ik de eerste keer ook. Of althans, dat bedoelde ik.
quote:
Wat gebeurd er als je een rollback doet van die transactie?
Ook dan verandert de sequence van de auto-increment. Eigenlijk ook wel logisch, het terugzetten van de sequence is heel lastig doordat je niet weet wat andere transacties in de tussentijd gedaan hebben.
slacker_nlvrijdag 14 juni 2013 @ 21:31
quote:
0s.gif Op vrijdag 14 juni 2013 21:28 schreef Light het volgende:

[..]

Dat zei ik de eerste keer ook. Of althans, dat bedoelde ik.

[..]

Ook dan verandert de sequence van de auto-increment. Eigenlijk ook wel logisch, het terugzetten van de sequence is heel lastig doordat je niet weet wat andere transacties in de tussentijd gedaan hebben.
Ahhh. Ik dacht de hele tijd dat men bedoelde dat het ID van de rij aangepast werd. Maar als het een sequence is snap ik het wel ja.
Lightvrijdag 14 juni 2013 @ 21:31
quote:
0s.gif Op vrijdag 14 juni 2013 21:20 schreef slacker_nl het volgende:

[..]

Dit is wat het doet:
[ code verwijderd ]

Het werkt wel als je
1print "bla $foo->bar()\n";
verandert in
1print "bla {$foo->bar()}\n";

Maar ik heb liever leesbaardere code.
slacker_nlvrijdag 14 juni 2013 @ 21:41
Wat is de functie van de {} dan?
Lightvrijdag 14 juni 2013 @ 21:49
quote:
0s.gif Op vrijdag 14 juni 2013 21:41 schreef slacker_nl het volgende:
Wat is de functie van de {} dan?
Nauwkeuriger aangeven welk stukje van de string als variabele moet worden geinterpreteerd.

In "$foobar" zoekt php naar een variabele $foobar, maar als je "{$foo}bar" of "${foo}bar" schrijft, zoekt php naar de variabele $foo en wordt bar niet als onderdeel van de variabelenaam gezien.
slacker_nlvrijdag 14 juni 2013 @ 21:50
quote:
0s.gif Op vrijdag 14 juni 2013 21:49 schreef Light het volgende:

[..]

Nauwkeuriger aangeven welk stukje van de string als variabele moet worden geinterpreteerd.

In "$foobar" zoekt php naar een variabele $foobar, maar als je "{$foo}bar" of "${foo}bar" schrijft, zoekt php naar de variabele $foo en wordt bar niet als onderdeel van de variabelenaam gezien.
Aahh, ja, dat ken ik, maar dat het ook op functies werkt.. apart. Dan zou print "{$foo}->bar() ook moeten werken??? Niet dus. Want Foo kan niet naar een string geconvert worden..
Lightvrijdag 14 juni 2013 @ 22:01
quote:
0s.gif Op vrijdag 14 juni 2013 21:50 schreef slacker_nl het volgende:

[..]

Aahh, ja, dat ken ik, maar dat het ook op functies werkt.. apart. Dan zou print "{$foo}->bar() ook moeten werken??? Niet dus. Want Foo kan niet naar een string geconvert worden..
Hmm... "$foo->bar" werkt wel (als er een property bar bestaat) maar "$foo->bar()" werkt niet (als er een method bar bestaat). Dat klinkt wel onlogisch.
Chandlervrijdag 14 juni 2013 @ 22:09
--edit--
Chandlervrijdag 14 juni 2013 @ 22:11
--edit--
slacker_nlvrijdag 14 juni 2013 @ 22:12
quote:
0s.gif Op vrijdag 14 juni 2013 22:01 schreef Light het volgende:

[..]

Hmm... "$foo->bar" werkt wel (als er een property bar bestaat) maar "$foo->bar()" werkt niet (als er een method bar bestaat). Dat klinkt wel onlogisch.
Ik herhaal mijn woorden op irc: PHP is stom :P
papernotezaterdag 15 juni 2013 @ 10:45
quote:
0s.gif Op vrijdag 14 juni 2013 22:12 schreef slacker_nl het volgende:

[..]

Ik herhaal mijn woorden op irc: PHP is stom :P
Nee hoor, mensen die de automatische string-expansion gebruiken zijn stom.
papernotezaterdag 15 juni 2013 @ 10:49
quote:
0s.gif Op vrijdag 14 juni 2013 22:01 schreef Light het volgende:

[..]

Hmm... "$foo->bar" werkt wel (als er een property bar bestaat) maar "$foo->bar()" werkt niet (als er een method bar bestaat). Dat klinkt wel onlogisch.
http://nl1.php.net/manual(...)types.string.parsing

De "simple syntax" (dat is: zonder gebruik van {}) zoekt niet naar functieaanroepen.
slacker_nlzaterdag 15 juni 2013 @ 10:52
quote:
16s.gif Op zaterdag 15 juni 2013 10:45 schreef papernote het volgende:
Nee hoor, mensen die de automatische string-expansion gebruiken zijn stom.
Niks mis mee. Zolang het maar duidelijk is. En zonder . al die . stomme . punten . is.
Maringozaterdag 15 juni 2013 @ 10:56
quote:
0s.gif Op zaterdag 15 juni 2013 10:52 schreef slacker_nl het volgende:

[..]

Niks mis mee. Zolang het maar duidelijk is. En zonder . al die . stomme . punten . is.
Eens dat de punten stom zijn. In elke andere taal die ik beheers zijn het plustekens en bijna altijd als ik terugswitch naar php doe ik het de eerste keer fout...

Maar ik vind het logischer qua taal dat je de variabele buiten de string zet.
1$zoals = "deze regel "+$is+" opgebouwd.";
papernotezaterdag 15 juni 2013 @ 10:56
quote:
0s.gif Op zaterdag 15 juni 2013 10:52 schreef slacker_nl het volgende:

[..]

Niks mis mee. Zolang het maar duidelijk is. En zonder . al die . stomme . punten . is.
Zoals je hebt ontdekt zijn er soms wel wat dingen mis mee ;). En dan vind ik het duidelijker en consistenter om die syntax überhaupt nooit te gebruiken.

1
2
3
4
<?php
echo "tekst lala {$foo->bar()} blabla zozo";
echo 
'tekst lala '$foo->bar() .' blabla zozo';
?>

Ik prefereer de tweede optie. Helemaal als er HTML output bij komt kijken:

1
2
3
4
<?php
echo "<a href=\"{$this->getLink()}\">link</a>";
echo 
'<a href="'$this->getLink() .'">link</a>';
?>
Pakspulzaterdag 15 juni 2013 @ 11:39
Derde optie:
1
2
3
4
5
6
<?php
echo sprintf('<a href="%s">%s</a>',
    
$this->getLink(),
    
$this->getTitle()
);
?>
slacker_nlzaterdag 15 juni 2013 @ 12:10
quote:
2s.gif Op zaterdag 15 juni 2013 10:56 schreef Maringo het volgende:

[..]

Eens dat de punten stom zijn. In elke andere taal die ik beheers zijn het plustekens en bijna altijd als ik terugswitch naar php doe ik het de eerste keer fout...

Maar ik vind het logischer qua taal dat je de variabele buiten de string zet.
[ code verwijderd ]

Ik vind dat een mindere optie, in dat geval zou ik gewoon (s)printf gebruiken. Als ik code review van mijn collega's krijgen ze het terug als het zo is opgebouwd.
pascal08zaterdag 15 juni 2013 @ 14:04
Heeft iemand hier wel eens de i18n library gebruikt voor CodeIgniter?

Ik zit met het volgende lastige probleem:

Ik wil op basis van de url de taal van de pagina aanpassen, door middel van een afkorting van 2 letters:

www.domein.com/en/news/ => engels
www.domein.com/nl/nieuws/ => nederlands
....
You get the idea. :)

Nu is het zo dat een aantal functies in mijn controllers afhankelijk zijn van de plaats in de url (uri->segment(3) geeft 12 bij www.domein.com/en/news/12). Het probleem is dat als een gebruiker de url www.domein.com/news/12 invoert uri->segment(3) ineens niet meer klopt. Wat kan ik daaraan doen, ofwel hoe maak ik uri->segment() dynamisch?


Hier volgen een aantal dingen die ik al geprobeerd heb:

1
2
3
4
<?php
$route
['^(en|nl|de)/(news|nieuws)/(:num)'] = 'news/article';
$route['^(news|nieuws)/(:num)'] = 'news/article';
?>

Wat werkt:
www.domein.nl/news/12
www.domein.nl/nieuws/12

Wat werkt niet (uri->segment() geeft verkeerde stukje url terug):
www.domein.nl/en/news/12
www.domein.nl/nl/nieuws/12

[ Bericht 20% gewijzigd door pascal08 op 15-06-2013 14:22:01 ]
Sitethiefzaterdag 15 juni 2013 @ 18:58
Als uri->segment(3) het derde stukje in je uri teruggeeft, werkt uri->segment(4) in dit geval dan niet? Omdat je uri nu een stukje langer is.
pascal08zaterdag 15 juni 2013 @ 19:24
quote:
0s.gif Op zaterdag 15 juni 2013 18:58 schreef Sitethief het volgende:
Als uri->segment(3) het derde stukje in je uri teruggeeft, werkt uri->segment(4) in dit geval dan niet? Omdat je uri nu een stukje langer is.
Klopt. Dus eigenlijk moet ik een functie maken die het juiste stukje url opzoekt.
zoemzaterdag 15 juni 2013 @ 19:28
Ik ken CI niet zo heel goed, maar ik neem aan dat er een soort router in zit. Met een route pattern zoals in ZF kun je urisegmenten labelen, zodat je niet afhankelijk bent van de volgorde.

1
2
3
4
5
6
<?php
// oud
$route "/:controller/:action/:id";
// nieuw
$route "/:lang/:controller/:action/:id";
?>

Dit lijkt me de mooiste oplossing voor het probleem, maar ik weet niet in hoeverre CI dergelijke patterns toestaat en in hoeverre die gemapped worden richting je controllers.

De regex-patterns die in je post staan zijn onderhoudstechnisch niet zo ideaal. Bij elke nieuwe controller moet je het pattern aanpassen, waardoor het op de lange termijn een complexe regex kan worden.

[edit]
Hmm, CI ondersteunt deze constructie dus niet... dat valt me tegen -O- Er zijn wel snippets in omloop om dit te bewerkstelligen. Er staan oa wat voorbeelden op StackOverflow.

[ Bericht 5% gewijzigd door zoem op 15-06-2013 19:43:31 ]
pascal08zaterdag 15 juni 2013 @ 19:46
quote:
0s.gif Op zaterdag 15 juni 2013 19:28 schreef zoem het volgende:
Ik ken CI niet zo heel goed, maar ik neem aan dat er een soort router in zit. Met een route pattern zoals in ZF kun je urisegmenten labelen, zodat je niet afhankelijk bent van de volgorde.
[ code verwijderd ]

Dit lijkt me de mooiste oplossing voor het probleem, maar ik weet niet in hoeverre CI dergelijke patterns toestaat en in hoeverre die gemapped worden richting je controllers.

De regex-patterns die in je post staan zijn onderhoudstechnisch niet zo ideaal. Bij elke nieuwe controller moet je het pattern aanpassen, waardoor het op de lange termijn een complexe regex kan worden.
Dit is inderdaad een veel mooiere oplossing.

Even een breakdown:

Als ik de URL www.domein.com/news/article/12 invoer, dan gaat de routing voor de functie met uri->segment() bij het renderen van de pagina, neem ik aan. In deze URL geeft uri->segment(1) "news", maar als ik de URL www.domein.com/en/news/article/12 invoer wordt uri->segment(1) ineens "en" en daar raken de functies in de war van. :P

Ik snap wel welke richting jij op wilt, maar hoe ik daarvan de juiste routes maak weet ik niet. Om het even simpel te houden:

www.domein.com/news/article/12 => *engels*
www.domein.com/en/news/article/12 => *engels*
www.domein.com/nl/nieuws/atrikel/12 => *nederlands*

Welke route moet ik hiervoor aanbrengen in mijn controller?
zoemzaterdag 15 juni 2013 @ 20:22
Ik weet te weinig van de controlflow van CI af om er een concreet antwoord op te geven.

De routepatterns die je nu hebt zouden al iets dynamischer kunnen:
1
2
3
4
5
<?php
$langs 
= array('nl','en','de');

$pattern '~^(('implode('|'$langs) .')/)?(news|nieuws)/(\d+)~';
?>
Mooi is anders, maar scheelt het telkens herhalen van de talen bij alle routes.

Misschien heb je hier iets aan: https://github.com/EllisL(...)nationalization-i18n mbt tot het i18n probleem.
pascal08zaterdag 15 juni 2013 @ 20:26
quote:
0s.gif Op zaterdag 15 juni 2013 20:22 schreef zoem het volgende:
Ik weet te weinig van de controlflow van CI af om er een concreet antwoord op te geven.

De routepatterns die je nu hebt zouden al iets dynamischer kunnen:
[ code verwijderd ]

Mooi is anders, maar scheelt het telkens herhalen van de talen bij alle routes.

Misschien heb je hier iets aan: https://github.com/EllisL(...)nationalization-i18n mbt tot het i18n probleem.
Ik zal het zo eens proberen. Bedankt. ;) _O_
Maringozaterdag 15 juni 2013 @ 21:13
quote:
0s.gif Op zaterdag 15 juni 2013 19:24 schreef pascal08 het volgende:

[..]

Klopt. Dus eigenlijk moet ik een functie maken die het juiste stukje url opzoekt.
Hoe kan het eigenlijk dat je zowel /news/article als /en/news/article kan krijgen? Lijkt mij dat er ergens anders iets niet goed zit dan.

En anders misschien beter om /news/article door te verwijzen naar /en/news/article om zo de consistentie van je urls te behouden.
pascal08zondag 16 juni 2013 @ 19:11
quote:
2s.gif Op zaterdag 15 juni 2013 21:13 schreef Maringo het volgende:

[..]

Hoe kan het eigenlijk dat je zowel /news/article als /en/news/article kan krijgen? Lijkt mij dat er ergens anders iets niet goed zit dan.

En anders misschien beter om /news/article door te verwijzen naar /en/news/article om zo de consistentie van je urls te behouden.
Ik heb nog eens goed nagedacht over jullie tips.

Als ik alles laat routen naar een url met de taal voorop, dan blijft uri->segment afhankelijk van wat de gebruiker intypt. Ik zou dus iets moeten doen met redirect of het rewriten van url in .htaccess denk ik. Mijn ervaring met dit soort dingen is nog zeer gering, maar dit lijkt me toch een probleem dat veel developers tegenkomen. Hoe pakken jullie dit aan?

EDIT:

Ik kom er net achter dat uri->segment niet per se nodig is om informatie uit de url te gebruiken voor de functie. _O- Je kunt gewoon een functieparameters instellen die de informatie uit de url haalt. Nu wordt alles een heel stuk makkelijker. Ik ga weer ff verder knoeien. :P

[ Bericht 18% gewijzigd door pascal08 op 16-06-2013 19:30:23 ]
pascal08maandag 17 juni 2013 @ 17:22
Previously... :P

Gisteren ben ik zover gekomen dat ik de taal in de URL werkend heb gekregen. Alle links werden dynamisch opgebouwd met behulp van de ingestelde taal in de config-file van CodeIgniter. Echter liep ik al gelijk tegen het probleem aan dat URL's van ajax requests ook werden veranderd, waardoor URL's niet meer klopten en ik kwam er al snel achter dat dit waarschijnlijk niet de juiste oplossing was.

Ik probeer zoveel mogelijk te lezen over de mogelijkheden van CodeIgniter, maar ik loop toch een beetje vast, omdat ik in grote lijnen niet precies weet wat ik moet doen. :?

Hoe ik denk dat het zit:

Er zijn 4 mogelijkheden om een taalvoorkeur te kunnen bepalen, namelijk d.m.v:

1. een cookie
2. een sessievariabele
3. de browsertaal
4. een database

Optie 1, 2 en 4 vereisen dat de gebruiker op de site is, of al eens is geweest.
De browsertaal is de enige manier om een voorkeur te kunnen bepalen zonder dat de gebruiker de site al eens heeft gezocht.

Het volgende voor mij een beetje onduidelijk:

Een cookie blijft voor een ingesteld periode op de computer van de gebruiker. Een sessie verloopt (zo heb ik het althans ingesteld) op het moment dat de gebruiker zijn/haar browser sluit. En de database is vanzelfsprekend altijd toegankelijk voor CI. Deze 3 opties zijn dus volgens mij allemaal geschikt om voor CI te bepalen welke taal er ingesteld moet worden.

Ik heb heel wat gegoogeld naar i18n scripts, maar bijna alle scripts gebruiken $config['language'] om de taal in op te slaan en uit te lezen. Mij is het nu onduidelijk wat $config['language'] precies is en wat het doet. Waar wordt deze instelling opgeslagen? Op de computer van de gebruiker, in een geheime database? Ik weet het echt niet. :P 8)7

Wat ik wil bereiken:

Ik wil hetzelfde als YouTube. Is er geen informatie in de vorm van een stukje URL, een sessievariabele, een cookie of wat dan ook? Dan wordt de browsertaal gebruikt.

Bezoekt de gebruiker de site via een URL die een taalvoorkeur bevat? Sla de taal op als sessievariabele (of in een cookie).

Stelt de gebruiker een andere taal in, maar is hij/zij niet ingelogd? Sla de taal op in een cookie.

Is de gebruiker ingelogd en stelt hij/zij een andere taal in? Sla de taal op in de database.

Wat nu nog onduidelijk is:

Hoe gaan de Google-bots hiermee om? Ik kwam namelijk door het googlen naar "browsertaal" erachter dat die bots logischerwijs geen browser gebruiken en dus ook geen browsertaalvoorkeur hebben. Moet ik dus nog een extra scenario toevoegen waarbij er dus helemaal geen informatie is en er wordt teruggevallen op een standaard taal?

Conclusie:

Op deze manier heb ik volgens mij alle mogelijke scenario's gedekt en hoeven de URL's niet per se informatie over de taal te bevatten. Wat ik nu moet doen is de core van CodeIgniter uitbreiden met een class die dus elke keer de juiste vertalingen ophaalt op basis van de taal die de gebruiker heeft ingesteld of de browsertaal.

PS: Ik hoop dat ik deze post zo overzichtelijk mogelijk heb gehouden. Er zitten een hele hoop vragen in verwerkt waar ik waarschijnlijk onmogelijk allemaal antwoord op kan krijgen. De belangrijkste vraag is in ieder geval welke volgorde ik moet aanhouden in het bepalen van de taal (als dit aan de orde is).
Faux.maandag 17 juni 2013 @ 17:56
quote:
0s.gif Op maandag 17 juni 2013 17:22 schreef pascal08 het volgende:
Previously... :P

Gisteren ben ik zover gekomen dat ik de taal in de URL werkend heb gekregen. Alle links werden dynamisch opgebouwd met behulp van de ingestelde taal in de config-file van CodeIgniter. Echter liep ik al gelijk tegen het probleem aan dat URL's van ajax requests ook werden veranderd, waardoor URL's niet meer klopten en ik kwam er al snel achter dat dit waarschijnlijk niet de juiste oplossing was.

Ik probeer zoveel mogelijk te lezen over de mogelijkheden van CodeIgniter, maar ik loop toch een beetje vast, omdat ik in grote lijnen niet precies weet wat ik moet doen. :?

Hoe ik denk dat het zit:

Er zijn 4 mogelijkheden om een taalvoorkeur te kunnen bepalen, namelijk d.m.v:

1. een cookie
2. een sessievariabele
3. de browsertaal
4. een database

Optie 1, 2 en 4 vereisen dat de gebruiker op de site is, of al eens is geweest.
De browsertaal is de enige manier om een voorkeur te kunnen bepalen zonder dat de gebruiker de site al eens heeft gezocht.

Het volgende voor mij een beetje onduidelijk:

Een cookie blijft voor een ingesteld periode op de computer van de gebruiker. Een sessie verloopt (zo heb ik het althans ingesteld) op het moment dat de gebruiker zijn/haar browser sluit. En de database is vanzelfsprekend altijd toegankelijk voor CI. Deze 3 opties zijn dus volgens mij allemaal geschikt om voor CI te bepalen welke taal er ingesteld moet worden.

Ik heb heel wat gegoogeld naar i18n scripts, maar bijna alle scripts gebruiken $config['language'] om de taal in op te slaan en uit te lezen. Mij is het nu onduidelijk wat $config['language'] precies is en wat het doet. Waar wordt deze instelling opgeslagen? Op de computer van de gebruiker, in een geheime database? Ik weet het echt niet. :P 8)7

Wat ik wil bereiken:

Ik wil hetzelfde als YouTube. Is er geen informatie in de vorm van een stukje URL, een sessievariabele, een cookie of wat dan ook? Dan wordt de browsertaal gebruikt.

Bezoekt de gebruiker de site via een URL die een taalvoorkeur bevat? Sla de taal op als sessievariabele (of in een cookie).

Stelt de gebruiker een andere taal in, maar is hij/zij niet ingelogd? Sla de taal op in een cookie.

Is de gebruiker ingelogd en stelt hij/zij een andere taal in? Sla de taal op in de database.

Wat nu nog onduidelijk is:

Hoe gaan de Google-bots hiermee om? Ik kwam namelijk door het googlen naar "browsertaal" erachter dat die bots logischerwijs geen browser gebruiken en dus ook geen browsertaalvoorkeur hebben. Moet ik dus nog een extra scenario toevoegen waarbij er dus helemaal geen informatie is en er wordt teruggevallen op een standaard taal?

Conclusie:

Op deze manier heb ik volgens mij alle mogelijke scenario's gedekt en hoeven de URL's niet per se informatie over de taal te bevatten. Wat ik nu moet doen is de core van CodeIgniter uitbreiden met een class die dus elke keer de juiste vertalingen ophaalt op basis van de taal die de gebruiker heeft ingesteld of de browsertaal.

PS: Ik hoop dat ik deze post zo overzichtelijk mogelijk heb gehouden. Er zitten een hele hoop vragen in verwerkt waar ik waarschijnlijk onmogelijk allemaal antwoord op kan krijgen. De belangrijkste vraag is in ieder geval welke volgorde ik moet aanhouden in het bepalen van de taal (als dit aan de orde is).
Youtube bekijkt uit welk je land komt dmv IP-adres geloof ik. Via meta-tags kan je aangeven welke taal de GoogleBots moeten gebruiken.
Feoladinsdag 18 juni 2013 @ 11:19
Ik heb een functie die een mysql resultat teruggeeft in een array.

Deze array is als volgt opgebouwd (1 item op dit moment)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Array
(
    [id] => 95
    [titel] => nieuwsbericht 1!
    [inhoud] => eorighreg
    [url] => nieuwsbericht-1
    [type] => nieuws
    [volgorde] => 
    [images] => 0
    [parent_id] => 0
    [client_id] => 3
    [menu] => 0
    [subsite] => 2
)

Wanneer ik hem probeer te echoën mbt een foreach krijg ik de volgende output:

1
2
3
4
5
6
7
8
9
10
11
9
n
e
n
n

0
0
3
0
2

Ik loop eroverheen met een foreach:

1
2
3
foreach($res as $output){
    echo $output["titel"]."<br />";
}

Dit is alleen wanneer ik 1 item heb in de array (alsof hij alleen de eerste tekens laat zien), wanneer er meer items zijn werkt het probleemloos. Kijk ik ergens overheen?
Sitethiefdinsdag 18 juni 2013 @ 11:28
Echo $output. Bij elke loop heeft $output namelijk een ander element uit je array. Dit komt omdat het een platte array is, en niet multidimensionaal.
Pakspuldinsdag 18 juni 2013 @ 11:40
print_r $res en dat soort grappen, tot hoever ben je zelf al gekomen met debuggen?

Pleur error_reporting(E_ALL); ook eens aan, want $res moet een array zijn waarin arrays zitten met daarin de id => 95, etc.

print_r($output); zou nu de volgende dingen moeten weer geven: 95, nieuwsbericht 1!, eorighreg, nieuwsbericht-1, etc

[ Bericht 61% gewijzigd door Pakspul op 18-06-2013 11:46:07 ]
Feoladinsdag 18 juni 2013 @ 13:01
quote:
0s.gif Op dinsdag 18 juni 2013 11:40 schreef Pakspul het volgende:
print_r $res en dat soort grappen, tot hoever ben je zelf al gekomen met debuggen?

Pleur error_reporting(E_ALL); ook eens aan, want $res moet een array zijn waarin arrays zitten met daarin de id => 95, etc.

print_r($output); zou nu de volgende dingen moeten weer geven: 95, nieuwsbericht 1!, eorighreg, nieuwsbericht-1, etc
print_r $res geeft wel gewoon dit

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Array
(
    [id] => 95
    [titel] => nieuwsbericht 1!
    [inhoud] => eorighreg
    [url] => nieuwsbericht-1
    [type] => nieuws
    [volgorde] => 
    [images] => 0
    [parent_id] => 0
    [client_id] => 3
    [menu] => 0
    [subsite] => 2
)

Print_r $output zoals op de manier die jij beschrijft. De array bevat 1 item met de juiste dingen die ik wil, het gaan alleen mis in de loop. Die error_reporting(E_ALL) staat aan, de errorlog blijft leeg, dus zijn er geen fouten neem ik aan? Alleen een verkeerde manier van loopen denk ik?
Pakspuldinsdag 18 juni 2013 @ 13:08
quote:
99s.gif Op dinsdag 18 juni 2013 13:01 schreef boskameel het volgende:

[..]

print_r $res geeft wel gewoon dit
[ code verwijderd ]

Print_r $output zoals op de manier die jij beschrijft. De array bevat 1 item met de juiste dingen die ik wil, het gaan alleen mis in de loop. Die error_reporting(E_ALL) staat aan, de errorlog blijft leeg, dus zijn er geen fouten neem ik aan? Alleen een verkeerde manier van loopen denk ik?
In dit geval kun je direct echo $res['titel'] doen. Je hebt een foreach nodig als deze item nog in een array zit.

1
2
3
4
5
6
Array
(
  [0]  => Array(
    [id] => 95
  )
)
bijvoorbeeld.
MichielPHdinsdag 18 juni 2013 @ 13:11
Stijlvraagje, eigenlijk taalonafhankelijk. Stel, je hebt een array van 5 groot en je hebt een getal dX die van -1 t/m 5 loopt. -1 moet 4 worden, 5 wordt 0, zodat het een cirkelarray is.

Heeft de gemiddelde programmeur voorkeur tussen deze 2 oplossingen:
1int i = (dx + 2*5) % 5;
of
1
2
3
4
5
6
7
8
int i;
if (dX == -1) {
    i = 4;
} else if (dX == 5) {
    i == 0;
} else {
    i = dx;
}

Nogmaals, het gaat om de stijl.
KomtTijd...dinsdag 18 juni 2013 @ 13:13
Stukje php-weirdness.
1
2
3
4
5
6
<?php
$foo 
= (string) 'bar';
echo 
$foo[0]; //output: b
echo $foo[1]; //output: a
echo $foo['onbestaande-index']; //output: b
?>

Ik ben wel benieuwd watvoor MySQL-functie je gemaakt hebt dat'ie inconsistent is in de opbouw van de output.
Maringodinsdag 18 juni 2013 @ 13:45
quote:
99s.gif Op dinsdag 18 juni 2013 13:01 schreef boskameel het volgende:

[..]

print_r $res geeft wel gewoon dit
[ code verwijderd ]

Print_r $output zoals op de manier die jij beschrijft. De array bevat 1 item met de juiste dingen die ik wil, het gaan alleen mis in de loop. Die error_reporting(E_ALL) staat aan, de errorlog blijft leeg, dus zijn er geen fouten neem ik aan? Alleen een verkeerde manier van loopen denk ik?
Geef de gehele php code es vanaf het aanmaken van de query tot en met het uitvoeren van de result set.

Ik gok dat het te maken heeft dat je de array niet declareert. Waardoor die denkt dat het een string is en dus alleen de eerste letter teruggeeft.
Sitethiefdinsdag 18 juni 2013 @ 13:54
quote:
99s.gif Op dinsdag 18 juni 2013 13:01 schreef boskameel het volgende:
nt_r $res geeft wel gewoon dit
Als $res een 1-dimensionale array teruggeeft zal een foreach loopen over de elementen in die array, de index ['titel'] is er dan niet.
Lightdinsdag 18 juni 2013 @ 21:26
quote:
14s.gif Op dinsdag 18 juni 2013 13:13 schreef KomtTijd... het volgende:
Stukje php-weirdness.
[ code verwijderd ]

Ik ben wel benieuwd watvoor MySQL-functie je gemaakt hebt dat'ie inconsistent is in de opbouw van de output.
Die laatste levert waarschijnlijk ook een notice op. Maar die wordt standaard genegeerd.
Lightdinsdag 18 juni 2013 @ 21:28
quote:
14s.gif Op dinsdag 18 juni 2013 13:13 schreef KomtTijd... het volgende:
Stukje php-weirdness.
[ code verwijderd ]
Mijn vermoeden bleek niet te kloppen:
1Warning: Illegal string offset 'onbestaande-index' in php shell code on line 1
henrivodinsdag 18 juni 2013 @ 21:39
Nog ZF2 gebruikers hier eigenlijk?
zoemdinsdag 18 juni 2013 @ 21:40
quote:
14s.gif Op dinsdag 18 juni 2013 13:13 schreef KomtTijd... het volgende:
Stukje php-weirdness.
[ code verwijderd ]

Ik ben wel benieuwd watvoor MySQL-functie je gemaakt hebt dat'ie inconsistent is in de opbouw van de output.
Hoewel de uitkomst raar lijkt, is het gedocumenteerd gedrag:
quote:
String conversion to numbers

When a string is evaluated in a numeric context, the resulting value and type are determined as follows.

If the string does not contain any of the characters '.', 'e', or 'E' and the numeric value fits into integer type limits (as defined by PHP_INT_MAX), the string will be evaluated as an integer. In all other cases it will be evaluated as a float.

The value is given by the initial portion of the string. If the string starts with valid numeric data, this will be the value used. Otherwise, the value will be 0 (zero).
Positie 0 bevat dus het karakter 'b'.

Even teruggelezen: dit is dus ook precies waarom boskameel telkens de eerste letter te zien krijgt. Zoals anderen al aangaven wordt de foreach losgelaten op een platte (ééndimensionale) array en niet op een tweedimensionale array.

[ Bericht 3% gewijzigd door zoem op 18-06-2013 21:45:29 ]
zoemdinsdag 18 juni 2013 @ 21:41
quote:
0s.gif Op dinsdag 18 juni 2013 21:39 schreef henrivo het volgende:
Nog ZF2 gebruikers hier eigenlijk?
Alleen nog een beetje mee gespeeld, nog geen volwaardige applicatie omheen gebouwd.
henrivodinsdag 18 juni 2013 @ 21:45
quote:
0s.gif Op dinsdag 18 juni 2013 21:41 schreef zoem het volgende:

[..]

Alleen nog een beetje mee gespeeld, nog geen volwaardige applicatie omheen gebouwd.
Zulke reacties hoor ik vaker, lijkt alsof ZF2 een beetje de boot gemist heeft
Rockfiredinsdag 18 juni 2013 @ 21:53
quote:
0s.gif Op dinsdag 18 juni 2013 21:39 schreef henrivo het volgende:
Nog ZF2 gebruikers hier eigenlijk?
Ik heb er één applicatie mee gebouwd, maar voordat die af was was de klant failliet -O-
zoemdinsdag 18 juni 2013 @ 21:54
quote:
0s.gif Op dinsdag 18 juni 2013 21:45 schreef henrivo het volgende:

[..]

Zulke reacties hoor ik vaker, lijkt alsof ZF2 een beetje de boot gemist heeft
De ontwikkeling heeft gewoon te lang geduurd en daardoor hebben andere frameworks zoals Symfony 2 een voorsprong gekregen. ZF2 is op bepaalde punten radicaal anders dan ZF1, dus je migreert (projecten) niet zomaar even. Daarnaast is de performance van ZF2 nog niet optimaal; in het beste geval gelijk aan ZF1. Veel meer function calls. De steilere learning curve van ZF helpt natuurlijk ook niet echt.
henrivodinsdag 18 juni 2013 @ 22:09
quote:
0s.gif Op dinsdag 18 juni 2013 21:54 schreef zoem het volgende:

[..]

De ontwikkeling heeft gewoon te lang geduurd
Das inderdaad erg jammer. Ik heb ook het idee dat de reputatie van Zend Framework 2 een stuk lager is dan die van Zend Framework destijds. Mee eens?
zoemdinsdag 18 juni 2013 @ 22:20
quote:
0s.gif Op dinsdag 18 juni 2013 22:09 schreef henrivo het volgende:

[..]

Das inderdaad erg jammer. Ik heb ook het idee dat de reputatie van Zend Framework 2 een stuk lager is dan die van Zend Framework destijds. Mee eens?
Ja, zoiets zou je wellicht kunnen stellen. Niet in de zin dat het een slechte reputatie heeft, maar dat het zich nog moet bewijzen. En daar gaat tijd overheen.
xaban06dinsdag 18 juni 2013 @ 22:45
Laatst had iemand hier om een IDE/text editor gevraagd, zo een week geleden ongeveer, ik heb er toen 1 geinstalleerd, maar dit was op werk en kan mij niet herinneren welke dat was.

Best een basic website hebben ze.
Achtergrond is default zwart/donkergrijs.
Tabs ondersteuning.
Gratis versie beschikbaar, maar ook betaalde.

Werd gepost door een mod volgens mij.

Anyone?

/edit
Gevonden:

quote:
14s.gif Op zondag 9 juni 2013 18:23 schreef boem-dikkie het volgende:
Sublime Text 2.
Juicyhildinsdag 18 juni 2013 @ 22:47
Sublime Text is echt de meest geniale editor. Lekker licht, maar toch uit te breiden met allerlei coole dingen.
themoledinsdag 18 juni 2013 @ 22:49
quote:
0s.gif Op dinsdag 18 juni 2013 22:47 schreef Juicyhil het volgende:
Sublime Text is echt de meest geniale editor. Lekker licht, maar toch uit te breiden met allerlei coole dingen.
+ allemaal hendig chique features.
xaban06dinsdag 18 juni 2013 @ 22:51
quote:
0s.gif Op dinsdag 18 juni 2013 22:47 schreef Juicyhil het volgende:
Sublime Text is echt de meest geniale editor. Lekker licht, maar toch uit te breiden met allerlei coole dingen.
Weet je of er een FTP plugin beschikbaar is?

Ik vind het maar niks om lokaal te editten en vervolgens moet uploaden.
Juicyhildinsdag 18 juni 2013 @ 22:53
quote:
0s.gif Op dinsdag 18 juni 2013 22:51 schreef xaban06 het volgende:

[..]

Weet je of er een FTP plugin beschikbaar is?

Ik vind het maar niks om lokaal te editten en vervolgens moet uploaden.
Ja, ik kwam toen wel een betaalde plugin tegen. Maar helaas nog geen gratis plugin gezien. Ik werk, helaas, ook met enige regelmaat via FTP. Moet dan iedere keer via Cyberduck werken enzo. Heb je natuurlijk weer twintig Sublime-vensters openstaan. :r
xaban06dinsdag 18 juni 2013 @ 22:56
quote:
0s.gif Op dinsdag 18 juni 2013 22:53 schreef Juicyhil het volgende:

[..]

Ja, ik kwam toen wel een betaalde plugin tegen. Maar helaas nog geen gratis plugin gezien. Ik werk, helaas, ook met enige regelmaat via FTP. Moet dan iedere keer via Cyberduck werken enzo. Heb je natuurlijk weer twintig Sublime-vensters openstaan. :r
Mja, en anders de folder op de server mounten op mijn desktop mbv samba oid. Thanks.
zoemdinsdag 18 juni 2013 @ 22:58
Of je gebruikt gewoon een goede IDE.
Juicyhildinsdag 18 juni 2013 @ 23:00
quote:
10s.gif Op dinsdag 18 juni 2013 22:58 schreef zoem het volgende:
Of je gebruikt gewoon een goede IDE.
Ja leuk, een Netbeans gebruiken met 1893 functies waarvan je er 5 regelmatig gebruikt. Maar ondertussen wel je geheugen opvreet. Zelfs voor Java gebruik ik gewoon Sublime. Je hebt niets meer nog dan code highlighting en een treeview links.
Crutchdinsdag 18 juni 2013 @ 23:22
Wat is er mis met phpStorm?
Juicyhildinsdag 18 juni 2013 @ 23:38
quote:
0s.gif Op dinsdag 18 juni 2013 23:22 schreef Crutch het volgende:
Wat is er mis met phpStorm?
quote:
0s.gif Op dinsdag 18 juni 2013 23:00 schreef Juicyhil het volgende:

[..]

Ja leuk, een PhpStorm gebruiken met 1893 functies waarvan je er 5 regelmatig gebruikt. Maar ondertussen wel je geheugen opvreet. Zelfs voor Java gebruik ik gewoon Sublime. Je hebt niets meer nog dan code highlighting en een treeview links.
KomtTijd...dinsdag 18 juni 2013 @ 23:53
quote:
0s.gif Op dinsdag 18 juni 2013 21:40 schreef zoem het volgende:

[..]

Hoewel de uitkomst raar lijkt, is het gedocumenteerd gedrag:

[..]

Positie 0 bevat dus het karakter 'b'.

Even teruggelezen: dit is dus ook precies waarom boskameel telkens de eerste letter te zien krijgt. Zoals anderen al aangaven wordt de foreach losgelaten op een platte (ééndimensionale) array en niet op een tweedimensionale array.
Dat het gedocumenteerd is wil niet zeggen dat het logisch/praktisch is :P
Crutchdinsdag 18 juni 2013 @ 23:59
quote:
0s.gif Op dinsdag 18 juni 2013 23:38 schreef Juicyhil het volgende:

[..]

[..]

Geheugen genoeg, geen last van.
Het werkt prima.
zoemwoensdag 19 juni 2013 @ 00:14
quote:
0s.gif Op dinsdag 18 juni 2013 23:00 schreef Juicyhil het volgende:

[..]

Ja leuk, een Netbeans gebruiken met 1893 functies waarvan je er 5 regelmatig gebruikt. Maar ondertussen wel je geheugen opvreet. Zelfs voor Java gebruik ik gewoon Sublime. Je hebt niets meer nog dan code highlighting en een treeview links.
Het is maar net wat je erin zoekt. Een IDE is zo veel meer dan een text editor. Denk aan refactoren, deployment, references traceren, unit tests, libraries linken, debugging en nog veel meer. Een text editor heeft over het algemeen geen weet van de context, behalve wat highlighting en eventueel wat hints.

De gemiddelde pc heeft tegenwoordig 4+GB, dus dat is niet zo'n issue meer. Ik heb liever dat het gebruikt wordt dan dat het er voor niets in zit :)
Lightwoensdag 19 juni 2013 @ 00:22
quote:
0s.gif Op dinsdag 18 juni 2013 23:00 schreef Juicyhil het volgende:

[..]

Ja leuk, een Netbeans gebruiken met 1893 functies waarvan je er 5 regelmatig gebruikt. Maar ondertussen wel je geheugen opvreet. Zelfs voor Java gebruik ik gewoon Sublime. Je hebt niets meer nog dan code highlighting en een treeview links.
Code highlighting en een treeview zijn wel het absolute minimum. Dat wil niet zeggen dat je niet meer functionaliteit gebruikt. Ik vind een goede auto-complete op functienamen en class names ook erg handig en nuttig, om eens wat te noemen.
Juicyhilwoensdag 19 juni 2013 @ 00:26
quote:
0s.gif Op woensdag 19 juni 2013 00:22 schreef Light het volgende:

[..]

Code highlighting en een treeview zijn wel het absolute minimum. Dat wil niet zeggen dat je niet meer functionaliteit gebruikt. Ik vind een goede auto-complete op functienamen en class names ook erg handig en nuttig, om eens wat te noemen.
Auto-complete zoals IntelliSense in Visual Studio is inderdaad heel erg fijn. Maar zo goed als die ben ik hem voor PHP nergens tegengekomen. Zeker niet in combinatie met frameworks (zeker niet de wat onbekendere).