abonnement Unibet Coolblue
pi_127657455
quote:
Wow, je zou toch verwachten dat ook PHP zelf hier een keer wat aan zou doen.
pi_127658775
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 :-)
Tegenwoordig moet je Dr. Ir. zijn om een beetje correct Nederlands te kunnen neerpleuren.
Abusing semicolons since 1987.
  dinsdag 11 juni 2013 @ 13:18:52 #213
12221 Tijn
Powered by MS Paint
pi_127660375
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.
  dinsdag 11 juni 2013 @ 13:20:31 #214
91039 mstx
2x1/2 = 1/2 x 1/2
pi_127660443
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.
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
pi_127660768
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.
Tegenwoordig moet je Dr. Ir. zijn om een beetje correct Nederlands te kunnen neerpleuren.
Abusing semicolons since 1987.
pi_127661839
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).
pi_127661975
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...?
pi_127661992
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 :-)
Tegenwoordig moet je Dr. Ir. zijn om een beetje correct Nederlands te kunnen neerpleuren.
Abusing semicolons since 1987.
pi_127662167
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?
pi_127662289
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
Tegenwoordig moet je Dr. Ir. zijn om een beetje correct Nederlands te kunnen neerpleuren.
Abusing semicolons since 1987.
  dinsdag 11 juni 2013 @ 14:27:43 #221
91039 mstx
2x1/2 = 1/2 x 1/2
pi_127663134
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.
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
pi_127671776
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
pi_127680603
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?
Just say hi!
  Moderator / Redactie Sport / Devops dinsdag 11 juni 2013 @ 21:44:35 #224
176766 crew  zoem
zoemt
pi_127681526
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.
pi_127683139
@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 :@
Just say hi!
  dinsdag 11 juni 2013 @ 22:36:03 #226
187069 slacker_nl
Sicko pur sang
pi_127684607
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.
In theory there is no difference between theory and practice. In practice there is.
  Moderator / Redactie Sport / Devops dinsdag 11 juni 2013 @ 22:40:29 #227
176766 crew  zoem
zoemt
pi_127684898
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.
pi_127691759
Ik vond het ook nogal apart maar goed...

@zoem; dan moet ik inderdaad nog even stevig mijn best doen... :+
Just say hi!
pi_127802333
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).
pi_127802410
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 :)
pi_127802477
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 :)
pi_127803934
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?!)
Just say hi!
pi_127804146
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).
  vrijdag 14 juni 2013 @ 20:46:52 #234
187069 slacker_nl
Sicko pur sang
pi_127804227
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.
In theory there is no difference between theory and practice. In practice there is.
  vrijdag 14 juni 2013 @ 20:48:29 #235
187069 slacker_nl
Sicko pur sang
pi_127804313
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..
In theory there is no difference between theory and practice. In practice there is.
pi_127804768
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.
pi_127805667
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.)
  vrijdag 14 juni 2013 @ 21:20:01 #238
187069 slacker_nl
Sicko pur sang
pi_127805936
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
In theory there is no difference between theory and practice. In practice there is.
  vrijdag 14 juni 2013 @ 21:24:12 #239
187069 slacker_nl
Sicko pur sang
pi_127806172
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?
In theory there is no difference between theory and practice. In practice there is.
pi_127806365
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.
  vrijdag 14 juni 2013 @ 21:31:10 #241
187069 slacker_nl
Sicko pur sang
pi_127806518
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.
In theory there is no difference between theory and practice. In practice there is.
pi_127806531
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.
  vrijdag 14 juni 2013 @ 21:41:22 #243
187069 slacker_nl
Sicko pur sang
pi_127806915
Wat is de functie van de {} dan?
In theory there is no difference between theory and practice. In practice there is.
pi_127807243
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.
  vrijdag 14 juni 2013 @ 21:50:43 #245
187069 slacker_nl
Sicko pur sang
pi_127807295
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..
In theory there is no difference between theory and practice. In practice there is.
pi_127807858
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.
pi_127808293
--edit--
Just say hi!
pi_127808347
--edit--
Just say hi!
  vrijdag 14 juni 2013 @ 22:12:12 #249
187069 slacker_nl
Sicko pur sang
pi_127808393
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
In theory there is no difference between theory and practice. In practice there is.
pi_127819928
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.
Schuimpje... mijn liefste. Verlaat mij nimmer weer...
pi_127819979
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.
Schuimpje... mijn liefste. Verlaat mij nimmer weer...
  zaterdag 15 juni 2013 @ 10:52:29 #252
187069 slacker_nl
Sicko pur sang
pi_127820023
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.
In theory there is no difference between theory and practice. In practice there is.
  zaterdag 15 juni 2013 @ 10:56:06 #253
166255 Maringo
Bèhèhèhèh
pi_127820099
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.";
Die volg topic-knop hè...
Op 02-06-2014 16:38 schreef Moeraskat
Je bent te goed voor de mensheid.
pi_127820114
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>';
?>
Schuimpje... mijn liefste. Verlaat mij nimmer weer...
pi_127820953
Derde optie:
1
2
3
4
5
6
<?php
echo sprintf('<a href="%s">%s</a>',
    
$this->getLink(),
    
$this->getTitle()
);
?>
  zaterdag 15 juni 2013 @ 12:10:12 #256
187069 slacker_nl
Sicko pur sang
pi_127821521
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.
In theory there is no difference between theory and practice. In practice there is.
pi_127824338
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 ]
  zaterdag 15 juni 2013 @ 18:58:42 #258
25889 Sitethief
Fulltime Flapdrol
pi_127832445
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.
Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht &gt;:)
pi_127833135
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.
  Moderator / Redactie Sport / Devops zaterdag 15 juni 2013 @ 19:28:04 #260
176766 crew  zoem
zoemt
pi_127833243
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 ]
pi_127833781
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?
  Moderator / Redactie Sport / Devops zaterdag 15 juni 2013 @ 20:22:00 #262
176766 crew  zoem
zoemt
pi_127835177
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.
pi_127835370
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_
  zaterdag 15 juni 2013 @ 21:13:02 #264
166255 Maringo
Bèhèhèhèh
pi_127837646
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.
Die volg topic-knop hè...
Op 02-06-2014 16:38 schreef Moeraskat
Je bent te goed voor de mensheid.
  zondag 16 juni 2013 @ 19:11:45 #265
319705 pascal08
dr. prof.
pi_127870011
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 ]
  maandag 17 juni 2013 @ 17:22:31 #266
319705 pascal08
dr. prof.
pi_127909649
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).
  maandag 17 juni 2013 @ 17:56:07 #267
292596 Faux.
Fan van zichzelf
pi_127910947
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.
Hier schreef tong80 het volgende:
Faux is een FOK!held, zoals dat vroeger Gellarboy en Brechtje waren. Users die je koestert.
pi_127938860
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?
  dinsdag 18 juni 2013 @ 11:28:53 #269
25889 Sitethief
Fulltime Flapdrol
pi_127939339
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.
Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht &gt;:)
pi_127939750
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 ]
pi_127942877
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?
pi_127943123
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.
  dinsdag 18 juni 2013 @ 13:11:49 #273
109533 MichielPH
Let maar niet op mij.
pi_127943263
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.
'To alcohol, the cause of and the solution to all of life's problems' - Homer J. Simpson
pi_127943303
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.
  dinsdag 18 juni 2013 @ 13:45:52 #275
166255 Maringo
Bèhèhèhèh
pi_127944628
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.
Die volg topic-knop hè...
Op 02-06-2014 16:38 schreef Moeraskat
Je bent te goed voor de mensheid.
  dinsdag 18 juni 2013 @ 13:54:48 #276
25889 Sitethief
Fulltime Flapdrol
pi_127945066
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.
Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht &gt;:)
pi_127963213
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.
pi_127963346
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
  dinsdag 18 juni 2013 @ 21:39:28 #279
272287 henrivo
Tikt tegen jassies
pi_127963854
Nog ZF2 gebruikers hier eigenlijk?
  Moderator / Redactie Sport / Devops dinsdag 18 juni 2013 @ 21:40:27 #280
176766 crew  zoem
zoemt
pi_127963890
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 ]
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')