Wat is de code die je gebruikt waarbij je deze error krijgt?quote:Op dinsdag 3 juni 2014 15:01 schreef n8n het volgende:
PDO staat geïnstalleerd en actief als ik phpinfo en "print_r( get_loaded_extensions() );" mag geloven. Toch krijg ik een error die zegt: "could not find driver". wat is omhoog met deze?
Wat geeft dit terug?quote:Op dinsdag 3 juni 2014 15:01 schreef n8n het volgende:
PDO staat geïnstalleerd en actief als ik phpinfo en "print_r( get_loaded_extensions() );" mag geloven. Toch krijg ik een error die zegt: "could not find driver". wat is omhoog met deze?
1 2 3 | <?php print_r(PDO::getAvailableDrivers()); ?> |
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 | <?php if ($foo != 2) { echo $bar; } elseif ($foo == 3) { echo $bar; } else { echo $bar; } switch ($foo) { case 1: echo $bar; break; case 2: echo $bar; break; case 3: echo $bar; break; case 4: echo $bar; break; echo $bar; default: } ?> |
quote:Op dinsdag 3 juni 2014 15:04 schreef totalvamp het volgende:
[..]
Wat is de code die je gebruikt waarbij je deze error krijgt?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?php class database { public static function connect() { try { $pdo = new PDO(' mysql:host='. setup::database('host') .'; dbname='. setup::database('name'), setup::database('user'), setup::database('password') ); } catch(PDOException $error) { print 'Error: ' . $error->getMessage(); die(); } } } database::connect(); |
Array ( [0] => mysql [1] => sqlite [2] => dblib [3] => pgsql )quote:Op dinsdag 3 juni 2014 15:04 schreef Aether het volgende:
[..]
Wat geeft dit terug?
[ code verwijderd ]
Hij staat dus niet geïnstalleerd.quote:Op dinsdag 3 juni 2014 15:06 schreef n8n het volgende:
[..]
Array ( [0] => mysql [1] => sqlite [2] => dblib [3] => pgsql )
Dat zijn de beschikbare PDO drivers, staat er dus wel op.quote:
Wat als je even je gegevens letterlijk invult? Zonder variabelen aan te roepen.quote:
PDO is toch ook een interface en geen database-typequote:Op dinsdag 3 juni 2014 15:07 schreef totalvamp het volgende:
[..]
Dat zijn de beschikbare PDO drivers, staat er dus wel op.
Klopt .quote:Op dinsdag 3 juni 2014 15:09 schreef n8n het volgende:
[..]
PDO is toch ook een interface en geen database-type
zelfde error helaasquote:Op dinsdag 3 juni 2014 15:07 schreef totalvamp het volgende:
Wat als je even je gegevens letterlijk invult? Zonder variabelen aan te roepen.
Ja, maar je hebt wel verschillende drivers nodig zodat de interface je queries kan vertalen naar de sql voor dat type database.quote:Op dinsdag 3 juni 2014 15:09 schreef n8n het volgende:
[..]
PDO is toch ook een interface en geen database-type
met mijn vermeende drivers kan ik dus praten met dat lijstje (behalve dat het niet werkt)quote:Op dinsdag 3 juni 2014 15:11 schreef totalvamp het volgende:
[..]
Ja, maar je hebt wel verschillende drivers nodig zodat de interface je queries kan vertalen naar de sql voor dat type database.
Probeer eens Apache te herstarten (heel soms helpt het)quote:Op dinsdag 3 juni 2014 15:12 schreef n8n het volgende:
[..]
met mijn vermeende drivers kan ik dus praten met dat lijstje (behalve dat het niet werkt)
dat heb ik al een aantal keer gedaan, ook in php.ini een regel van stackoverflow uncommented maar geen soelaasquote:Op dinsdag 3 juni 2014 15:13 schreef totalvamp het volgende:
[..]
Probeer eens Apache te herstarten (heel soms helpt het)
Post heel je php.ini hier eens dan. (even in code tags of spoiler)quote:Op dinsdag 3 juni 2014 15:15 schreef n8n het volgende:
[..]
dat heb ik al een aantal keer gedaan, ook in php.ini een regel van stackoverflow uncommented maar geen soelaas
ga ik zo doen, even roken. Moet ook even kijken want heb nu alles via Brew geïnstalleerd en volgens mij installeert dat php op een andere locatie.quote:Op dinsdag 3 juni 2014 15:16 schreef totalvamp het volgende:
[..]
Post heel je php.ini hier eens dan. (even in code tags of spoiler)
Ahh je zit op OSX?quote:Op dinsdag 3 juni 2014 15:18 schreef n8n het volgende:
[..]
ga ik zo doen, even roken. Moet ook even kijken want heb nu alles via Brew geïnstalleerd en volgens mij installeert dat php op een andere locatie.
Schrijf de eerste parameter (DNS) eens als één regel. Misschien dat de white space problemen geeft.quote:Op dinsdag 3 juni 2014 15:18 schreef n8n het volgende:
[..]
ga ik zo doen, even roken. Moet ook even kijken want heb nu alles via Brew geïnstalleerd en volgens mij installeert dat php op een andere locatie.
Dit bedoel ik ook met de opmerking even alle vars weghalen Misschien was ik niet duidelijk genoeg xDquote:Op dinsdag 3 juni 2014 15:20 schreef Aether het volgende:
[..]
Schrijf de eerste parameter (DNS) eens als één regel. Misschien dat de white space problemen geeft.
dat was 'm. had er niet op gerekend dat het uit zou makenquote:Op dinsdag 3 juni 2014 15:20 schreef Aether het volgende:
[..]
Schrijf de eerste parameter (DNS) eens als één regel. Misschien dat de white space problemen geeft.
Ja eerst met MAMP en toen moest ik naar Homebrew want dat zou alles makkelijker makenquote:
Oops ja sorry Ben 'gewend' dat code over meerdere regels kan en hou niet van lange regels dus ik zet grote statements vaak in blokken.quote:Op dinsdag 3 juni 2014 15:22 schreef totalvamp het volgende:
[..]
Dit bedoel ik ook met de opmerking even alle vars weghalen Misschien was ik niet duidelijk genoeg xD
Ik snap je haha, ik probeer ook altijd alles duidelijk te maken op die manier. Je zal dit iig nooit meer fout doenquote:Op dinsdag 3 juni 2014 15:23 schreef n8n het volgende:
[..]
Oops ja sorry Ben 'gewend' dat code over meerdere regels kan en hou niet van lange regels dus ik zet grote statements vaak in blokken
Zet eerst het statement wel in een variabele en dan doe ik het alsnog met blokken.quote:Op dinsdag 3 juni 2014 15:24 schreef totalvamp het volgende:
[..]
Ik snap je haha, ik probeer ook altijd alles duidelijk te maken op die manier. Je zal dit iig nooit meer fout doen
Dat is ook nog een optie, alleen eigenlijk niet nodig voor deze lijn code.quote:Op dinsdag 3 juni 2014 15:26 schreef n8n het volgende:
[..]
Zet eerst het statement wel in een variabele en dan doe ik het alsnog met blokken.
quote:Op dinsdag 3 juni 2014 15:24 schreef slacker_nl het volgende:
http://blogs.atlassian.co(...)ck-ass-code-reviews/
Dan is sprintf een betere in sommige gevallen:quote:Op dinsdag 3 juni 2014 15:23 schreef n8n het volgende:
[..]
Oops ja sorry Ben 'gewend' dat code over meerdere regels kan en hou niet van lange regels dus ik zet grote statements vaak in blokken.
Bedankt allemaal ben blij dat het zo simpel was maar moet het maar net weten
1 2 3 4 5 6 7 8 9 | <?php $pdo = new PDO( sprintf('mysql:host=%s;dbname=%s', setup::database('host'), setup::database('name') ), setup::database('user'), setup::database('password') ); ?> |
Ik vind het vooral moelijk lelijk als de open- en sluit curlybrace niet op dezelfde indent staan. En ook als er na een sluitende curlybrace direct een nieuw statement komt zonder newline.quote:Op dinsdag 3 juni 2014 15:04 schreef Sitethief het volgende:
Ben ik echt de enige die dit doet?
[ code verwijderd ]
Ik vind het echt raar dat de curly brace die een if statement afsluit niet inspringt en de break die een case afsluit wel, ik vind dat zo onoverzichtelijk, bij mij zitten case en break op dezelfde diepte. Ik merk dat ik de enige ben die dit doet..
quote:Op dinsdag 3 juni 2014 15:30 schreef Aether het volgende:
[..]
Dan is sprintf een betere in sommige gevallen:
[ code verwijderd ]
Ik vind het alleen maar onduidelijker, daarnaast gebruik je een extra functie die eigenlijk niet nodig hoort te zijnquote:Op dinsdag 3 juni 2014 15:30 schreef Aether het volgende:
[..]
Dan is sprintf een betere in sommige gevallen:
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php class database { public static function connect() { try { $pdo = new PDO(' mysql:host='. setup::database('host') . ';dbname='. setup::database('name'), setup::database('user'), setup::database('password') ); } catch(PDOException $error) { print 'Error: ' . $error->getMessage(); die(); } } } |
Ja klopt, hahaha, maar heb een oplossing.quote:Op dinsdag 3 juni 2014 14:09 schreef Aether het volgende:
[..]
[ code verwijderd ]
Edit: je bedoelt dus iets anders.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?php function fetch_object($query, $id) { foreach($this->properties as $val => $key) { $holder[$key] = ''; $reference_properties[$key] =& $holder[$key]; } $mysqli = base::open_connection(); $stmt = $mysqli->prepare($query); $id = $id; $stmt->bind_param("i", $id); call_user_func_array(array($stmt, 'bind_result'), $reference_properties); $stmt->execute(); $stmt->fetch(); $stmt->close(); $mysqli->close(); foreach($reference_properties as $key => $val) $this->{$key} = $val; return $this; } ?> |
die werkt ook niet, heb van alles geprobeerd nu, probleem is dat er ; en , in zitten met andere functies dan php verwacht. Beetje vreemd allemaal maar het zal wel, vind de sprintf nu wel oké, wordt toch een basale website dus niet alles hoeft optimaalquote:Op dinsdag 3 juni 2014 15:35 schreef totalvamp het volgende:
[..]
Ik vind het alleen maar onduidelijker, daarnaast gebruik je een extra functie die eigenlijk niet nodig hoort te zijn
Als je het dan op meerdere lijnen wilt doen, doe het dan zo:
[ code verwijderd ]
Je kunt bij een variabele wel op een nieuwe lijn springen aangezien hij dit niet ziet als string.
Je gebruikt een functie die er niet hoort te zijn? Je bent bezig met een string maken, wat is er mis met sprintf ? (ik ben groot voorstander van sprintf en tegen $x . 'iets' . $anders . "want" . $dit . '\' is echt ' . $kut;quote:Op dinsdag 3 juni 2014 15:35 schreef totalvamp het volgende:
[..]
Ik vind het alleen maar onduidelijker, daarnaast gebruik je een extra functie die eigenlijk niet nodig hoort te zijn
Als je het dan op meerdere lijnen wilt doen, doe het dan zo:
[ code verwijderd ]
Je kunt bij een variabele wel op een nieuwe lijn springen aangezien hij dit niet ziet als string.
sprintf maakt het er namelijk niet duidelijker op, niet dat een concat wel duidelijk is.quote:Op dinsdag 3 juni 2014 17:25 schreef slacker_nl het volgende:
[..]
Je gebruikt een functie die er niet hoort te zijn? Je bent bezig met een string maken, wat is er mis met sprintf ? (ik ben groot voorstander van sprintf en tegen $x . 'iets' . $anders . "want" . $dit . '\' is echt ' . $kut;
Zo doe ik het over het algemeen ook, alleen bij de break; nog 1 extra tabjequote:Op dinsdag 3 juni 2014 15:04 schreef Sitethief het volgende:
Ben ik echt de enige die dit doet?
[ code verwijderd ]
Ik vind het echt raar dat de curly brace die een if statement afsluit niet inspringt en de break die een case afsluit wel, ik vind dat zo onoverzichtelijk, bij mij zitten case en break op dezelfde diepte. Ik merk dat ik de enige ben die dit doet..
HEREDOC is ook niet altijd wensenlijk en "" werkt ook niet altijd, want als je met class methods gebruikt wilt het wel/niet interpoleren. IiG, in perl doet dat het niet, ik vermoed dat PHP dat ook niet doet, met sprintf kan je duidelijk zien, wat je verwacht, floats, doubles, etc etc.quote:Op dinsdag 3 juni 2014 17:39 schreef totalvamp het volgende:
[..]
sprintf maakt het er namelijk niet duidelijker op, niet dat een concat wel duidelijk is.
Je kunt altijd nog de vars binnen de quotes plaatsen, al is dat niet overal even slim.
Ook kun je lange strings plaatsen in een HEREDOC om het echt overzichtelijk te houden.
Maar iedereen heeft zo zijn voorkeur natuurlijk.
Beste 2 manieren zijn trouwens HEREDOC en tussen dubble quotes ""
Dat gaat dus wel, sinds de latere PHP versies heb je daar ondersteuning in.quote:Op dinsdag 3 juni 2014 17:51 schreef slacker_nl het volgende:
[..]
HEREDOC is ook niet altijd wensenlijk en "" werkt ook niet altijd, want als je met class methods gebruikt wilt het wel/niet interpoleren. IiG, in perl doet dat het niet, ik vermoed dat PHP dat ook niet doet, met sprintf kan je duidelijk zien, wat je verwacht, floats, doubles, etc etc.
$x = <<OEF
DIt is een vet lange $persoon->id gaat volgens mij ook fout in een heredoc.
OEF
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?php /* More complex example, with variables. */ class foo { var $foo; var $bar; function foo() { $this->foo = 'Foo'; $this->bar = array('Bar1', 'Bar2', 'Bar3'); } } $foo = new foo(); $name = 'MyName'; echo <<<EOT My name is "$name". I am printing some $foo->foo. Now, I am printing some {$foo->bar[1]}. This should print a capital 'A': \x41 EOT; ?> |
Het is juist dat tabje wat ik zo raar vind .quote:Op dinsdag 3 juni 2014 17:44 schreef mstx het volgende:
[..]
Zo doe ik het over het algemeen ook, alleen bij de break; nog 1 extra tabje
het is toch een actie binnen de case, aan de andere kant lijkt het ook op een endif; dus beide moet wel kunnen. break zonder extra indent maakt het wel wat leesbaarder voor mij.quote:Op dinsdag 3 juni 2014 18:01 schreef Sitethief het volgende:
[..]
Het is juist dat tabje wat ik zo raar vind .
Dat snap ik echt niet. De break is onderdeel van de switch statement namelijk.quote:Op dinsdag 3 juni 2014 18:01 schreef Sitethief het volgende:
[..]
Het is juist dat tabje wat ik zo raar vind .
Hmm, wellicht is het handig om te beginnen met het leren van normaliseren van databases.quote:Op dinsdag 3 juni 2014 20:37 schreef djkoelkast het volgende:
Ik wil al een tijd een programma maken waarmee ik mijn videobanden kan indexeren.
Bandnummer, wat er op staat, bijzonderheden, opmerkingen en dus per programma een begintijd/eindtijd.
Ik ben er aan begonnen in het voor mij bekende Autoplay Media Studio. Dat werkt volgens Luascript en die database kan ik gebruiken via sqlite3, maar ik vind het maar heel erg ingewikkeld, vooral omdat er gewoon amper documentatie over is (omdat sqlite3 een 3rd party plugin is voor APMS). Ik kan alle data wel in de db krijgen, maar ik krijg het er niet meer uit
Enfin, het is niet meer dan een heleboel inputvelden, drop-downs, textfields en checkboxes eigenlijk en die moeten allemaal in een doorzoekbare database komen. Ik moet uiteindelijk op alles kunnen zoeken.
Dit kan natuurlijk ook gewoon in PHP/MySQL en volgens mij is dat A: makkelijker en B: is er veel meer documentatie over te vinden.
Ik heb wel wat html/php/mysql-kennis, maar ben wat dat betreft echt nog een beginner. Ik kan dingen aanpassen en meestal lukt dat ook wel, maar echt helemaal zelf hier dingen voor gaan schrijven is nieuw. Toch zou ik het willen proberen. Dan is het programma geen programma, maar een online database waarin ik:
Nieuwe records kan maken
Records kan bewerken
Zoeken in de records op alle mogelijke velden
Alle records weergeven in een lijst en die printbaar maken
Later:
Optie om geavanceerd te zoeken, bijvoorbeeld woord AAA maar alleen als bandtype B is.
Optie om andere databases (van andere mensen die hetzelfde gaan doen) te openen
Wellicht een optie om aan te klikken 'dit wil ik' en dat er dan een mailtje naar de recordhouder gaat.
Wachtwoord of liever beveiliging op accountniveau
Optie om een nieuwe database te beginnen
First things first:
Waar kan ik het beste beginnen, ik neem aan met het maken van een databaseconnectie en een database, maar dan. INSERT INTO ik ken het wel, maar ken de syntax niet. Zijn hier simpele voorbeelden van? Ook hoe ik meerdere velden in zo'n record maak.
Wat ik dus in 1 record zou willen hebben is:
Bandnummer
Systeem
Is de opname LP, Stereo, Slechte band, beschadigde band ofzo
Opmerkingenveld
En dan per tijdentry starttijd, eindtijd, omschrijving en een paar vinkjes zoals: compleet, komt onder een andere opname vandaan, gedigitaliseerd
Die tijdentries verschillen nogal, sommige banden heb je gewoon maar 1 ding op staan,
op een andere band kunnen wel 40 of 50 verschillende tijdentries staan. Dit moet dus ook voorzien zijn, dat je bijvoorbeeld 20 tijdentries op het scherm ziet en er met een knop meer bij kunt doen (of een volgende pagina begint, maar die eerste dingen van bandnummer tot opmerkingen blijven hetzelfde).
De primary key is dus eigenlijk het bandnummer.
Hellupie, hullepie
Die tab zorgt ervoor dat je alle case-statements op 1 lijn hebt en alle code die uitgevoerd wordt voor een case een niveau dieper. En je kunt ook meerdere case-statements hebben zonder break ertussen, dat is dan een reden voor een groter blok op de indent van de case:quote:Op dinsdag 3 juni 2014 18:01 schreef Sitethief het volgende:
[..]
Het is juist dat tabje wat ik zo raar vind .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php switch ($x) { case 1: case 3: case 5: echo '$x is oneven'; break; case 2: case 4: case 6: echo '$x is even'; break; default: echo 'Ik weet niet wat $x is'; break; } ?> |
Precies, zo vind ik het veel mooierquote:Op dinsdag 3 juni 2014 21:34 schreef Light het volgende:
[..]
Die tab zorgt ervoor dat je alle case-statements op 1 lijn hebt en alle code die uitgevoerd wordt voor een case een niveau dieper. En je kunt ook meerdere case-statements hebben zonder break ertussen, dat is dan een reden voor een groter blok op de indent van de case:
[ code verwijderd ]
Dank je.quote:Op dinsdag 3 juni 2014 20:55 schreef robin007bond het volgende:
[..]
Hmm, wellicht is het handig om te beginnen met het leren van normaliseren van databases.
http://www.phphulp.nl/php/tutorial/overig/normaliseren/150/
Dus je zult het vast in één record willen hebben in de applicatie zelf, maar dat zou ik niet in de database doen. Eerst zou ik nadenken over je data, dan wat je allemaal wil doen daarmee.
Wellicht is het een leukere oefening om zelf eens wat met PHP te stoeien alvorens je met een PHP-framework gaat werken. Frameworks maken het ontwikkelen eenvoudiger, maar het kan zijn dat je de basis dan een beetje mist.
Op http://codecademy.com/ hebben ze leuke PHP-tutorials. Volgens mij gaan ze daar ook in op OOP.
Veel succes!
Je kunt denk ik het beste beginnen bij waar jij wilt beginnen. Werk voor jezelf in iteraties. Welke functionaliteit wil jij als eerste af hebben, welke daarna, etc. Het überhaupt hebben van een database met banden en daarin kunnen kijken lijkt me dus de eerste iteratie. Daarna kun je daarop steeds verder bouwen.
Dat weet ik, maar de server waar dit op komt te draaien is mijn eigen productiewebserver, dus daar draait mysql toch al op. De eerste opzet was volledig offline.quote:Op dinsdag 3 juni 2014 21:26 schreef slacker_nl het volgende:
sqlite is wel makkelijk hoor, daar heb je geen mysql voor nodig..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?php class load { public static function core(){ // logic require 'setup.php'; $setup = new setup(); require 'medoo.php'; $database = new medoo(); require 'route.php'; //$route = new route(); // markup require 'markup/base.php'; } } load::core(); class get { public static function object($name) { return $$name; } } $test = get::object('setup'); var_dump($test); ?> |
Omdat $setup een lokale variabele is?quote:Op woensdag 4 juni 2014 14:21 schreef n8n het volgende:
Waarom werkt zoiets niet?
initialise.php (als enige required in index.php)
[ code verwijderd ]
de var_dump onderin resulteert in: Notice: Undefined variable: setup in initialise.php
wanneer ik $setup dump in base.php (template default) krijg ik wel een object terug: "object(setup)[1]".
base.phpquote:Op woensdag 4 juni 2014 14:26 schreef Aether het volgende:
[..]
Omdat $setup een lokale variabele is?
Kun je base.php hier plaatsen?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | <!doctype html> <html> <head> <title><?php present::meta('title'); ?></title> <link rel="stylesheet" type="text/css" href="presentation/style.css"> </head> <body> <?php load::markup('component', 'navigation'); ?> <section id="illustration" class="container gallery"> <header class="page"> <h1>Illustration</h1> </header> <ul> <?php $id = 0; for ($i = 1; $i <= 11; $i++) { if ($id < 11 ) { $id++; } else { $id = 1; } echo ' <li class="project"> <header>Titel omdat het kan ja dus dat jongen</header> <a href=""> <img src="content/illustration/afbeelding-' . $id . '.jpg"> </a> '; } ?> </ul> </section> <section id="project" class="container project"> <header class="page"> <h1>Titel van een project</h1> </header> <article> <p>Hagley is a town in Northern Tasmania, Australia, 22 kilometres (14 mi) southwest of Launceston on the Meander Valley Highway. The area was used by the Port Dalrymple Aboriginal Tasmanians until they were driven from their lands by European Settlement.</p> <footer> Made for NRC </footer> </article> <ul> <?php $id = 0; for ($i = 1; $i <= 11; $i++) { if ($id < 11 ) { $id++; } else { $id = 1; } echo ' <li class="media"> <img src="content/illustration/afbeelding-' . $id . '.jpg"> <footer>caption</footer> '; } ?> </ul> </section> <section id="contact" class="container contact"> <header class="page"> <h1>Get in touch</h1> </header> <article> <p> <img src="content/picture/image.jpg" width="480" height="480"> </p> <p>06 1234 5678</p> <p>hi@example.com</p> <p>LinkedIn</p> <p>Facebook</p> </article> <form> <p> <label for="name">Your name</label> <input id="name" type="text" placeholder="Jane Doe"> </p> <p> <label for="email">Email address</label> <input id="email" type="email" placeholder="you@example.com"> </p> <p> <label for="message">Message</label> <textarea id="message"></textarea> </p> <button type="submit">Send</button> </form> </section> </body> </html> |
1 2 3 | <?php require 'core/initialise.php'; ?> |
$setup wordt niet in deze code gedumpt -- gebeurt dat op een andere plek?quote:Op woensdag 4 juni 2014 14:32 schreef n8n het volgende:
[..]
base.php
[ code verwijderd ]
Staat nog niet zo veel in behalve een wat hardcoded data die ik nog moet automatiseren.
en index.php
[ code verwijderd ]
quote:Op woensdag 4 juni 2014 14:43 schreef Aether het volgende:
[..]
$setup wordt niet in deze code gedumpt -- gebeurt dat op een andere plek?
1 2 3 | <?php $test = get::object('setup'); var_dump($test); ?> |
Sorrie, maar ik snap het nut niet van wat je hier probeert te doen.quote:Op woensdag 4 juni 2014 14:21 schreef n8n het volgende:
Waarom werkt zoiets niet?
initialise.php (als enige required in index.php)
[ code verwijderd ]
de var_dump onderin resulteert in: Notice: Undefined variable: setup in initialise.php
wanneer ik $setup dump in base.php (template default) krijg ik wel een object terug: "object(setup)[1]".
Was het er zelf ook al niet mee eens, wilde een manier vinden om objecten te kunnen extracten, dacht dat het zo kon. Dat het in elkaar stort bij wijziging is niet zo erg want het is ff snel hacken, ben al blij als iets werkt en ga het later nog een keer aanpassen allemaal zodra ik er wat meer van snap.quote:Op woensdag 4 juni 2014 15:57 schreef totalvamp het volgende:
[..]
Sorrie, maar ik snap het nut niet van wat je hier probeert te doen.
Als je files als standaard wilt includen doe je dit meestal in je bootstrap.
Daarnaast blijven je variabelen alleen beschikbaar in core().
Het is ook niet handig om een class method dependencies te geven aan bestanden/classes, als er ergens iets veranderd stort je applicatie in.
Ja moet daar nog kaas van zien te maken.quote:Op woensdag 4 juni 2014 16:02 schreef Tijn het volgende:
n8n, heb je al eens naar autoloading gekeken? Dan hoef je niet steeds de files te includen voordat je een class aanroept.
Wat bedoel je hiermee? Wat wil je precies dat er gebeurt?quote:Op woensdag 4 juni 2014 16:39 schreef n8n het volgende:
[..]
Was het er zelf ook al niet mee eens, wilde een manier vinden om objecten te kunnen extracten
dat als ik get::global('name') doe hij een object returned die $name heet. Leek me een manier om objecten door te sluizen maar ik ben er weer vanaf gestapt.quote:Op woensdag 4 juni 2014 17:18 schreef Tijn het volgende:
[..]
Wat bedoel je hiermee? Wat wil je precies dat er gebeurt?
Als je Composer installeert is autoloading echt een eitje.quote:Op woensdag 4 juni 2014 16:39 schreef n8n het volgende:
[..]
Was het er zelf ook al niet mee eens, wilde een manier vinden om objecten te kunnen extracten, dacht dat het zo kon. Dat het in elkaar stort bij wijziging is niet zo erg want het is ff snel hacken, ben al blij als iets werkt en ga het later nog een keer aanpassen allemaal zodra ik er wat meer van snap.
[..]
Ja moet daar nog kaas van zien te maken.
Heb het nu opgelost door m'n base.php content in index.php te zetten, alle variables zijn nu beschikbaar. Volgens mij kwam het omdat ik een require (navigation) deed binnen een file (base.php) die net daarvoor de andere files pas gedaan had. Kan nu weer ff verder, ga nu routes aanmaken en daarna de templates schrijven die op basis van de route ingevuld worden en dan ben ik er bijna aan de frontend. Daarna een 'CMS' maken zodat m'n vriendin zelfstandig de content kan uploaden.quote:Op woensdag 4 juni 2014 17:35 schreef Tijn het volgende:
Wat voor dingen zitten er in je setup object? Alleen properties of ook methods?
Sowieso begrijp ik je idee van "doorsluizen" niet eigenlijk Is het niet een idee om een static object te maken en met autoloaders te zorgen dat andere objecten erbij kunnen?
Dat heb ikquote:Op woensdag 4 juni 2014 17:58 schreef robin007bond het volgende:
[..]
Als je Composer installeert is autoloading echt een eitje.
Waarom niet gewoon constanten? Die zijn automatisch overal beschikbaar zonder dat je ze (per ongeluk) kunt veranderen.quote:Op woensdag 4 juni 2014 18:21 schreef n8n het volgende:
[..]
Edit: werkt toch niet, dan maar aan de autoloader ff proberen, de setup heeft alleen array's met config (beetje zoals WP het heeft)
1 2 3 4 5 6 7 8 | <?php function __autoload($class_name) { include $class_name . '.php'; } $obj = new MyClass1(); $obj2 = new MyClass2(); ?> |
Ik heb nu dat de class $database niet beschikbaar is in navigation.php (die included is in index.php). Snap er gewoon niks van De setup kan ik beter wel constant neerzetten dan, scheelt weer haren van m'n kopquote:Op woensdag 4 juni 2014 18:31 schreef Tijn het volgende:
[..]
Waarom niet gewoon constanten? Die zijn automatisch overal beschikbaar zonder dat je ze (per ongeluk) kunt veranderen.
Nee, dat zet je in een file die je inlaadt voordat je deze functionaliteit wilt gebruiken. Daarna "kent" je hele app de autoloader en kan-ie automatisch files includen op het moment dat je een class aanroept.quote:Op woensdag 4 juni 2014 18:31 schreef n8n het volgende:
[ code verwijderd ]
Hier staat dan (van php.net) een functie die een autoload doet, met dit moet je dan op elke pagina "__autoload($class_a);" zetten?
require 'setup.php'; $setup = new setup();quote:Op woensdag 4 juni 2014 18:33 schreef Tijn het volgende:
[..]
Nee, dat zet je in een file die je inlaadt voordat je deze functionaliteit wilt gebruiken. Daarna "kent" je hele app de autoloader en kan-ie automatisch files includen op het moment dat je een class aanroept.
Nou, dan is het super makkelijk te configureren. Check even de Composer site.quote:
Dat is de oude manier. De nieuwe manier gaat met spl_autoload_register.quote:Op woensdag 4 juni 2014 18:31 schreef n8n het volgende:
[ code verwijderd ]
Hier staat dan (van php.net) een functie die een autoload doet, met dit moet je dan op elke pagina "__autoload($class_a);" zetten?
En dat doet ie aan de hand van je....? set_include_path?quote:Op woensdag 4 juni 2014 18:33 schreef Tijn het volgende:
[..]
Nee, dat zet je in een file die je inlaadt voordat je deze functionaliteit wilt gebruiken. Daarna "kent" je hele app de autoloader en kan-ie automatisch files includen op het moment dat je een class aanroept.
quote:Op woensdag 4 juni 2014 19:16 schreef robin007bond het volgende:
[..]
Nou, dan is het super makkelijk te configureren. Check even de Composer site.
[..]
Dat is de oude manier. De nieuwe manier gaat met spl_autoload_register.
Maar ik raad je aan om Composer een autoloader te laten genereren. Veel makkelijker.
1 2 3 4 5 6 | <?php function __autoload($classname) { $filename = "classes/". strtolower($classname) .".class.php"; require($filename); } ?> |
Oo waarom niet?quote:Op woensdag 4 juni 2014 19:37 schreef robin007bond het volgende:
[..]
Tsja, maar dan heb je je project niet aan de PSR-standaarden.
en om aan te roepen build je een object met $var = new classname(); ?quote:
Ja, bijvoorbeeldquote:Op woensdag 4 juni 2014 20:03 schreef n8n het volgende:
[..]
en om aan te roepen build je een object met $var = new classname(); ?
1 2 3 | <?php $user = new User(); ?> |
ga ik even uitzoeken dan. Dacht dat je op een package doelde.quote:Op woensdag 4 juni 2014 19:16 schreef robin007bond het volgende:
[..]
Nou, dan is het super makkelijk te configureren. Check even de Composer site.
[..]
Dat is de oude manier. De nieuwe manier gaat met spl_autoload_register.
Maar ik raad je aan om Composer een autoloader te laten genereren. Veel makkelijker.
en met deze functie moet de naam van het bestand de naam van de class zijn (dus in principe 1 class per file wat ik al heb).quote:Op woensdag 4 juni 2014 20:06 schreef esv7 het volgende:
[..]
Ja, bijvoorbeeld
[ code verwijderd ]
, zolang ik de class User in de map classes heb staan.
Bij mij is het zo dat de controller functies uit het model gebruikt, en alleen in het model is er communicatie met de database.quote:Op woensdag 4 juni 2014 20:07 schreef n8n het volgende:
[..]
ga ik even uitzoeken dan. Dacht dat je op een package doelde.
Heb nu-denk ik-wel laravel meer door en het hele mvc gebeuren meer door. Voel me een stukje verzekerden dat het wel gaat lukken als ik het oppak.
Met de controller spreek je met de database, met de route bepaal je de views per url en de views zijn templates. Klopt dat een beetje in een nutshell?
dus controller geeft instructie aan de model en krijgt een object of boolean terug waarmee een actie voltooit wordt.quote:Op woensdag 4 juni 2014 20:09 schreef esv7 het volgende:
[..]
Bij mij is het zo dat de controller functies uit het model gebruikt, en alleen in het model is er communicatie met de database.
Ik heb de autoloader in mijn boot.php, dus ik hoef in geen van mijn controllers classes te includen.
Ik heb geen ervaring met Laravel, maar in de klassieke MVC-opzet heb je een model dat zorgt voor een representatie van je data. Daar heb je meestal het database-gebeuren in (in het geval dat die data in een database staat natuurlijk), niet in de controller.quote:Op woensdag 4 juni 2014 20:07 schreef n8n het volgende:
[..]
Met de controller spreek je met de database, met de route bepaal je de views per url en de views zijn templates. Klopt dat een beetje in een nutshell?
Arrays worden in PHP ook veel gebruikt.quote:Op woensdag 4 juni 2014 20:12 schreef n8n het volgende:
[..]
dus controller geeft instructie aan de model en krijgt een object of boolean terug waarmee een actie voltooit wordt.
Bij mij maak ik aan de hand van een class(model) een object(controller), vervolgens roep ik met dat object een method aan uit de class waarvan deze gemaakt is.quote:Op woensdag 4 juni 2014 20:12 schreef n8n het volgende:
[..]
dus controller geeft instructie aan de model en krijgt een object of boolean terug waarmee een actie voltooit wordt.
dat probeer ik nu een beetje te doen, mis dus nog een controller want dat doe ik nu in de templates (wat tegen het hele idee in gaat).quote:Op woensdag 4 juni 2014 20:12 schreef Tijn het volgende:
[..]
Ik heb geen ervaring met Laravel, maar in de klassieke MVC-opzet heb je een model dat zorgt voor een representatie van je data. Daar heb je meestal het database-gebeuren in (in het geval dat die data in een database staat natuurlijk), niet in de controller.
Het idee van de meeste frameworks is dat een router ervoor zorgt dat op basis van de url de juiste controllerfunctie wordt aangeroepen. In de controllerfunctie wordt dan data verzameld met behulp van een of meerdere models en uiteindelijk wordt een view aangeroepen waarin de HTML zit die je op de pagina wilt tonen.
Sommige simpele dingen kunnen wel in een template. Maar zodra er iets met je data moet gebeuren dat verder gaat dan een simpel regeltje, zou ik het verplaatsen naar de controller. Je wilt je templates qua programmeerwerk zo simpel mogelijk houden.quote:Op woensdag 4 juni 2014 20:14 schreef n8n het volgende:
[..]
dat probeer ik nu een beetje te doen, mis dus nog een controller want dat doe ik nu in de templates (wat tegen het hele idee in gaat).
als leek vind ik het trouwens raar dat db queries er anders zijn dan array 'queries' terwijl beide een soort tabel met data zijn.quote:
Wat?quote:Op woensdag 4 juni 2014 20:16 schreef n8n het volgende:
[..]
als leek vind ik het trouwens raar dat db queries er anders zijn dan array 'queries' terwijl beide een soort tabel met data zijn.
Dat bestaat wel, LINQ en aanverwanten.quote:Op woensdag 4 juni 2014 20:16 schreef n8n het volgende:
[..]
als leek vind ik het trouwens raar dat db queries er anders zijn dan array 'queries' terwijl beide een soort tabel met data zijn.
opzich heb ik alleen het ophalen van data, hou het voor nu maar zo om het ff duidelijk te houden. Heb ook maar 4 views oid.quote:Op woensdag 4 juni 2014 20:15 schreef Tijn het volgende:
[..]
Sommige simpele dingen kunnen wel in een template. Maar zodra er iets met je data moet gebeuren dat verder gaat dan een simpel regeltje, zou ik het verplaatsen naar de controller. Je wilt je templates qua programmeerwerk zo simpel mogelijk houden.
dat je db acties heel anders schrijft dan dezelfde zoekactie binnen een array. Datahierarchie is toch vergelijkbaar.quote:
Daar zijn inderdaad wel abstractielagen voor (zoals LINQ), maar het is toch logisch dat queries op je database anders werken dan iets zoeken binnen een variabele binnen je eigen applicatie. MySQL spreekt natuurlijk geen PHP en PHP spreekt geen SQL.quote:Op woensdag 4 juni 2014 20:18 schreef n8n het volgende:
[..]
dat je db acties heel anders schrijft dan dezelfde zoekactie binnen een array. Datahierarchie is toch vergelijkbaar.
Weer op de computer en het werkt Heb nu alleen 2 keer het object maar dat lijkt me niet uit te maken (als de errors me niet om de oren slaan). Superchill dit.quote:
1 2 3 4 5 6 7 | <?php session_start(); $_SESSION = array(); session_destroy(); if(isset($_SESSION)) var_dump("oke"); ?> |
quote:Op woensdag 4 juni 2014 20:26 schreef esv7 het volgende:
[ code verwijderd ]
Waarom krijg ik hier de var_dump('oke') te zien?
1 2 3 4 5 6 7 | <?php session_start(); $_SESSION = array(); session_destroy(); if($_SESSION) var_dump("oke"); ?> |
1 2 | array (size=0) empty |
quote:Op woensdag 4 juni 2014 20:43 schreef n8n het volgende:
[..]
[ code verwijderd ]
Zo doet ie het niet meer, volgens mij is $_SESSION sowieso een array, wel leeg na te hebben destroyed. als je met jouw code "var_dump($_SESSION);" doet krijg je terug dat het een lege array is.
[ code verwijderd ]
Aaah oké, bedankt.quote:Op woensdag 4 juni 2014 20:53 schreef Tijn het volgende:
$_SESSION is een superglobal van PHP, die bestaat altijd, net zoals $_SERVER of $_REQUEST.
IP-adres lijkt me alleen raadzaam als je zeker weet dat de gebruiker op dezelfde plek blijft met hetzelfde IP-adres (wat volgens mij spaarzaam is).quote:Op woensdag 4 juni 2014 20:55 schreef esv7 het volgende:
[..]
[..]
Aaah oké, bedankt.
Een vraagje betreffend de veiligheid,
een sessie id moet encrypted zijn toch? Ik zat er verder aan te denken deze nog te linken aan het ip adres van de login, verder nog dingen?
Ja klopt.quote:Op woensdag 4 juni 2014 21:55 schreef zoem het volgende:
Encrypten? Je bedoelt waarschijnlijk hashen? Het zijn twee verschillende dingen.
Composer kan ook autoloaders maken voor bestanden die niet aan PSR-standaarden voldoen. Dat wordt uiteindelijk gewoon een array met als key de class name (inclusief eventuele namespace) en als value het pad waar de file staat die moet worden ingeladen.quote:Op woensdag 4 juni 2014 19:37 schreef robin007bond het volgende:
[..]
Tsja, maar dan heb je je project niet aan de PSR-standaarden.
Het geeft aan hoe uniek bepaalde gegevens zijn. Bij een hoge waarde is iedere waarde in die kolom unieke, bij een lage zijn ze allemaal gelijk. De database gebruikt dit om bij het filteren/zoeken een beter "query plan" te vormen. In de praktijk wil je een hoge kardinaliteit om zo sneller te kunnen zoeken.quote:Op donderdag 5 juni 2014 09:56 schreef cablegunmaster het volgende:
Wie kan me uitleggen in normale taal wat kardinaliteit inhoud, ik zit nu met een kardinaliteit van 16 op een unique table is dit hoog laag? aangezien ik de Wikipedia pagina hierover half snap iets met orde en verbindingheid van de tabel?
Je zou die string ook bij in de array kunnen stoppen, met array_unshift() of array_push()quote:Op donderdag 5 juni 2014 23:05 schreef esv7 het volgende:
Ik moet een functie alle elementen uit een Array en een String meegeven als argumenten, kan ik daar de functie call_user_func_array voor gebruiken op een manier?
Alle elementen uit een Array meegeven lukt wel, alleen daarnaast nog een String meegeven krijg ik niet voor elkaar.
Ty, heb hem werkend gekregen:).quote:Op donderdag 5 juni 2014 23:46 schreef Light het volgende:
[..]
Je zou die string ook bij in de array kunnen stoppen, met array_unshift() of array_push()
Dat is wel erg vreemd. Als je kijkt naar de directory waar de XAMP-installatie van PHP staat, welk versienummer zie je dan? Weet je zeker dat je XAMP-server draait en niet wat anders? Oude installatie deinstalleren en even opnieuw proberen?quote:Op zondag 8 juni 2014 18:05 schreef esv7 het volgende:
Zojuist heb ik een nieuwe XAMPP gedownload, versie 1.8.3-4 waarbij stond php versie 5.5. Echter krijg ik nu wanneer ik phpversion() echo 5.4.22 te zien? Hoe krijg ik php versie 5.5?
Net even gekeken, ik had de nieuwe xampp in een andere folder geïnstalleerd, maar toen ik bij de phpinfo.php ging kijken zag ik dat die de php vanuit de eerder geïnstalleerde xampp pakte. , dat terwijl die andere files wel uit de nieuwe xampp installatie pakt.quote:Op zondag 8 juni 2014 19:25 schreef robin007bond het volgende:
[..]
Dat is wel erg vreemd. Als je kijkt naar de directory waar de XAMP-installatie van PHP staat, welk versienummer zie je dan? Weet je zeker dat je XAMP-server draait en niet wat anders? Oude installatie deinstalleren en even opnieuw proberen?
Voortaan gewoon je oude installatie helemaal verwijderen dus. Scheelt weer eventueel gezeur.quote:Op zondag 8 juni 2014 19:32 schreef esv7 het volgende:
[..]
Net even gekeken, ik had de nieuwe xampp in een andere folder geïnstalleerd, maar toen ik bij de phpinfo.php ging kijken zag ik dat die de php vanuit de eerder geïnstalleerde xampp pakte. , dat terwijl die andere files wel uit de nieuwe xampp installatie pakt.
Yup,quote:Op zondag 8 juni 2014 19:33 schreef robin007bond het volgende:
[..]
Voortaan gewoon je oude installatie helemaal verwijderen dus. Scheelt weer eventueel gezeur.
Hoe moet ik dat zien?quote:Op zondag 8 juni 2014 21:00 schreef robin007bond het volgende:
Overigens vind ik de anonieme functies in PHP 5+ erg goed werken. Je kunt nu netjes een array met functies maken. Erg handig voor het refactoren van switch-statements bijvoorbeeld.
Normaal zou je wellicht zoiets hebben:quote:
1 2 3 4 5 6 7 8 9 10 11 12 | <?php switch($string) { case "Dit": // Voer hier dingen uit break; case "Dat": // Voer hier dingen uit break; case "Bmgaegrmaegaermg": // Voer hier dingen uit break; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?php class Test { private $voorbeeld; public function __construct() { $voorbeeld = array('Dit' => function(){ // Voer hier dingen uit }, 'Dat' => function() { // Voer hier dingen uit }); } public function voerOpdrachtUit($string) { /* * Hiermee wordt de methode in de array aangeroepen. * Eventueel kun je ook parameters meegeven */ call_user_func($this->voorbeeld[$string]); } } |
Ik zou dan toch gewoon gaan voor een class met verschillende functies en dan vanuit een case-statement een functie aanroepen. Dan is duidelijker wat er wordt aangeroepen als je de code leest (en dat doe je vaker dan schrijven).quote:Op woensdag 11 juni 2014 19:23 schreef robin007bond het volgende:
[..]
Normaal zou je wellicht zoiets hebben:
[ code verwijderd ]
In plaats daarvan kun je een object maken met een array erin.
[ code verwijderd ]
Voordeel is dat je de array met functies uit kan breiden met andere zaken. Wil je bijvoorbeeld een property bij 'Dit' hebben, dan geef je simpelweg een array in een array mee.
Maar mooier kun je dit soort dingen doen met polymorfisme en het type achterhalen. Een abstracte superklasse en allemaal subklasses die de juiste methodes dan uitvoeren.
Maar die desbetreffende switch kun je niet elders aanroepen. Zo'n array met methodes wel.quote:Op woensdag 11 juni 2014 22:39 schreef Light het volgende:
[..]
Ik zou dan toch gewoon gaan voor een class met verschillende functies en dan vanuit een case-statement een functie aanroepen. Dan is duidelijker wat er wordt aangeroepen als je de code leest (en dat doe je vaker dan schrijven).
Waarom zou je dat willen?quote:Op donderdag 12 juni 2014 18:33 schreef robin007bond het volgende:
[..]
Maar die desbetreffende switch kun je niet elders aanroepen. Zo'n array met methodes wel.
Nou.. Dezelfde condities zou je toch meerdere keren kunnen gebruiken? Hoef je niet op twee plaatsen dezelfde switch te gebruiken.quote:
En waarom zou dat niet met een class kunnen?quote:Op donderdag 12 juni 2014 18:50 schreef robin007bond het volgende:
[..]
Nou.. Dezelfde condities zou je toch meerdere keren kunnen gebruiken? Hoef je niet op twee plaatsen dezelfde switch te gebruiken.
Dan zet je die switch in een functie, en die kun je wel makkelijk vanaf meerdere plekken aanroepen.quote:Op donderdag 12 juni 2014 18:50 schreef robin007bond het volgende:
[..]
Nou.. Dezelfde condities zou je toch meerdere keren kunnen gebruiken? Hoef je niet op twee plaatsen dezelfde switch te gebruiken.
Je las mijn gedachtenquote:Op donderdag 12 juni 2014 22:20 schreef Light het volgende:
[..]
Dan zet je die switch in een functie, en die kun je wel makkelijk vanaf meerdere plekken aanroepen.
SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.Ben al twee dagen bezig om de timeline werkend te krijgen, maar het lukt me niet. .
Ik heb geprobeerd om de onderstaande voorbeelden te gebruiken, maar ook dan kom ik niet verder:
- http://stackoverflow.com/(...)connect-to-php-mysql
- https://groups.google.com(...)msCl_Bw/cIoRT8gY40AJ
Dus... Iemand?
[ Bericht 1% gewijzigd door #ANONIEM op 14-06-2014 00:08:55 ]
1 | ["ONZ","Onzin voor je leven!","1382704503079","1382704509179"] |
1 | [ 'Washington', new Date(1789, 3, 29), new Date(1797, 2, 3) ] |
Ik weet dat het aan de dates ligt. Ik heb de afgelopen dagen van alles geprobeerd, maar niets lukt. De derde en de vierde kolom (eigenlijk 2 en 3, want tellen begint bij 0) kunnen number, date of datetime zijn. Hoopte 'm met 'number' en Epoch werkend te krijgen... Heb ook verschillende vormen van 'new Date(...)' geprobeerd, maar ook daarmee lukte het niet.quote:Op zaterdag 14 juni 2014 02:05 schreef Anoniemos het volgende:
Het probleem zit hem in de teruggekeerde array, de data dient zo te zien (heb hem even hier thuis opgezet om te testen) dates te zijn. Bij jou zijn het unix timestamps (13......) en geen dates. Dus die dien je nog om te zetten naar dates.
Jouw response:
[ code verwijderd ]
De code volgens de timeline site:
[ code verwijderd ]
Hier moet je dus naar gaan kijken om het op te lossen, je dient het om te zetten naar dates en niet als timestamp er in te knallen!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | array(3) { [0]=> object(stdClass)#31 (5) { ["id"]=> string(3) "275" ["amount"]=> string(1) "20" ["user_id"]=> string(1) "2" } [1]=> object(stdClass)#32 (5) { ["id"]=> string(4) "1252" ["amount"]=> string(1) "10" ["user_id"]=> string(1) "5" } [2]=> object(stdClass)#33 (5) { ["id"]=> string(4) "1252" ["amount"]=> string(1) "30" ["user_id"]=> string(1) "1" } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | { "products" : [ { "product_data" : [ { "amount" : 20, "user_id" : 2 } ], "product_id" : 275 }, { "product_data" : [ { "amount" : 30, "user_id" : 1 }, { "amount" : 10, "user_id" : 5 } ], "product_id" : 1252 } ] } |
Wat wil je precies gaan doen met de resulterende array? Moet dit bijvoorbeeld in een database of nog verder verwerkt worden? Het is imo niet zo heel ingewikkeld om de array om te bouwen echter vraag ik me af wat de reden is dat de eerste niet voldoet.quote:Op zaterdag 14 juni 2014 19:50 schreef pascal08 het volgende:
Een lastige:
Stel ik heb de volgende data:
[ code verwijderd ]
Hoe krijg ik dit dan als een array waarin 'id' zijn samengevoegd en 'amount' en 'user_id' als subarray's.
Zo ongeveer:
[ code verwijderd ]
Uiteindelijk moeten het hapklare data worden voor DataTables, dus ik wil per rij definiëren hoe de velden bezet moeten worden.quote:Op zaterdag 14 juni 2014 20:12 schreef bondage het volgende:
[..]
Wat wil je precies gaan doen met de resulterende array? Moet dit bijvoorbeeld in een database of nog verder verwerkt worden? Het is imo niet zo heel ingewikkeld om de array om te bouwen echter vraag ik me af wat de reden is dat de eerste niet voldoet.
1 2 3 4 | *user_id* *user_id* *user_id* *Product_id* *amount* *amount* *amount* *Product_id* *amount* *amount* *amount* *Product_id* *amount* *amount* *amount* |
Ah, ja, dat is een goede reden om hem om te zetten inderdaad. Ik zal eens ff kijken of ik iets kan fixen. Of iemand anders moet me al voor zijnquote:Op zaterdag 14 juni 2014 20:25 schreef pascal08 het volgende:
[..]
Uiteindelijk moeten het hapklare data worden voor DataTables, dus ik wil per rij definiëren hoe de velden bezet moeten worden.
De tabel ziet er ongeveer zo uit:
[ code verwijderd ]
Bedankt.quote:Op zaterdag 14 juni 2014 20:27 schreef bondage het volgende:
[..]
Ah, ja, dat is een goede reden om hem om te zetten inderdaad. Ik zal eens ff kijken of ik iets kan fixen. Of iemand anders moet me al voor zijn
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | array(2) { ["id"]=> array(3) { [0]=> string(4) "1252" [1]=> string(4) "1252" [2]=> string(3) "275" } ["product_data"]=> array(2) { ["user_id"]=> array(3) { [0]=> string(1) "1" [1]=> string(1) "1" [2]=> string(1) "1" } ["amount"]=> array(3) { [0]=> string(1) "1" [1]=> string(1) "1" [2]=> string(1) "1" } }} |
Wat een rare tabel en wat is het voordeel van het anders opstellen van de array?quote:Op zaterdag 14 juni 2014 20:25 schreef pascal08 het volgende:
[..]
Uiteindelijk moeten het hapklare data worden voor DataTables, dus ik wil per rij definiëren hoe de velden bezet moeten worden.
De tabel ziet er ongeveer zo uit:
[ code verwijderd ]
De velden hebben natuurlijk niet allemaal dezelfde waarde hè.quote:Op zaterdag 14 juni 2014 20:30 schreef Maringo het volgende:
[..]
Wat een rare tabel en wat is het voordeel van het anders opstellen van de array?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | array(3) { [0]=> object(stdClass)#31 (5) { ["id"]=> string(3) "275" ["amount"]=> string(1) "20" ["user_id"]=> string(1) "2" } [1]=> object(stdClass)#32 (5) { ["id"]=> string(4) "1252" ["amount"]=> string(1) "10" ["user_id"]=> string(1) "5" } [2]=> object(stdClass)#33 (5) { ["id"]=> string(4) "1252" ["amount"]=> string(1) "30" ["user_id"]=> string(1) "1" } } |
1 2 3 4 | 1 5 2 1252 30 10 - 275 - - 20 |
DataTables wil het in het omgezette formaat hebben toch? Ik heb geen ervaring met DataTables, echter kan ik me voorstellen dat deze een array met een bepaalde opbouw verwacht.quote:Op zaterdag 14 juni 2014 20:33 schreef pascal08 het volgende:
[..]
De velden hebben natuurlijk niet allemaal dezelfde waarde hè.
Dit:
[ code verwijderd ]
Zo in dit moeten resulteren:
[ code verwijderd ]
Maar misschien ben ik wel hele verkeerd bezig hoor. Geen idee.
Is dit wat er uiteindelijk uit moet komen?quote:Op zaterdag 14 juni 2014 20:29 schreef pascal08 het volgende:
[..]
Bedankt.
Ik heb zelf al gekloot met array_merge_recursive() maar ik krijg het niet beter dan dit:
[ code verwijderd ]
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 | Array ( [products] => Array ( [0] => Array ( [product_data] => Array ( [0] => Array ( [amount] => 20 [user_id] => 2 ) ) [product_id] => 275 ) [1] => Array ( [product_data] => Array ( [0] => Array ( [amount] => 30 [user_id] => 1 ) [1] => Array ( [amount] => 10 [user_id] => 5 ) ) [product_id] => 1252 ) ) ) |
Ja.quote:Op zaterdag 14 juni 2014 21:14 schreef bondage het volgende:
[..]
Is dit wat er uiteindelijk uit moet komen?
[ code verwijderd ]
Ok, heb ik een idee wat de code moet doen. Nu nog hopen dat ik hier iets voor kan fixen wat ook nog een beetje resource vriendelijk is met mijn stondende kopquote:
quote:Op zaterdag 14 juni 2014 00:08 schreef zarGon het volgende:
Tijdje geleden dit topic aangemaakt: DIG / Crewgeschiedenis, van handmatig naar dynamisch (PHP/MySQL). Destijds weinig mee gedaan, en sinds eergisteren weer opgepakt.
http://sophiedogg.com/creating-a-google-pie-chart-using-sql-data/. Aan de hand daarvan de tabel en de pie chart dynamisch (PHP+MySQL) kunnen maken. Zie http://fok.zevkiselim.nl/crew2.0/.
Nu ben ik echter bezig met de timeline. En daar loop ik vast.
Kan iemand mij helpen om met het correct weergeven van de timeline?
Huidige source:
- index.php - http://fok.zevkiselim.nl/crew2.0/src/index.phps
- gettabledata.php - http://fok.zevkiselim.nl/crew2.0/src/gettabledata.phps
- getpiechartdata.php - http://fok.zevkiselim.nl/crew2.0/src/getpiechartdata.phps
- gettimelinedata.php - http://fok.zevkiselim.nl/crew2.0/src/gettimelinedata.phps
Met wat ik nu heb krijg ik dit te zien:Valt je project ergens te forken?SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.Ben al twee dagen bezig om de timeline werkend te krijgen, maar het lukt me niet. .
Ik heb geprobeerd om de onderstaande voorbeelden te gebruiken, maar ook dan kom ik niet verder:
- http://stackoverflow.com/(...)connect-to-php-mysql
- https://groups.google.com(...)msCl_Bw/cIoRT8gY40AJ
Dus... Iemand?No citizen has a right to be an amateur in the matter of physical training...what a disgrace it is for a man to grow old without ever seeing the beauty and strength of which his body is capable.
$test is je input-array.quote:
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 | <?php $dt_array = array(); $new_product_key = 0; foreach($test as $k => $product_data) { $existing_product_key = -1; if(isset($dt_array['products'])) { foreach($dt_array['products'] as $k => $existing_products) { if($product_data->id == $existing_products['product_id']) { $existing_product_key = $k; break; } } } if($existing_product_key >= 0) { $dt_array['products'][$existing_product_key]['product_data'][] = array('amount' => $product_data->amount, 'user_id' => $product_data->user_id); }else{ $dt_array['products'][$new_product_key]['product_data'][] = array('amount' => $product_data->amount, 'user_id' => $product_data->user_id); $dt_array['products'][$new_product_key]['product_id'] = $product_data->id; $new_product_key++; } } print_r($dt_array); ?> |
Post de code eens van de volledige crew2.0? Ik vermoed dat er daar wat foutjes ingeslopen zijn.quote:Op zaterdag 14 juni 2014 00:08 schreef zarGon het volgende:
Tijdje geleden dit topic aangemaakt: DIG / Crewgeschiedenis, van handmatig naar dynamisch (PHP/MySQL). Destijds weinig mee gedaan, en sinds eergisteren weer opgepakt.
http://sophiedogg.com/creating-a-google-pie-chart-using-sql-data/. Aan de hand daarvan de tabel en de pie chart dynamisch (PHP+MySQL) kunnen maken. Zie http://fok.zevkiselim.nl/crew2.0/.
quote:
https://github.com/zarGonnn/FOK-crewgeschiedenis.quote:Op zaterdag 14 juni 2014 21:49 schreef Robuustheid het volgende:
[..]
Post de code eens van de volledige crew2.0? Ik vermoed dat er daar wat foutjes ingeslopen zijn.
Zojuist even een beginnetje gemaakt aan de timeline, vandaag geen tijd meer voor misschien kijk ik er van de week nog even naar als ik tijd heb.quote:Op zondag 15 juni 2014 04:06 schreef zarGon het volgende:
[..]
[..]
https://github.com/zarGonnn/FOK-crewgeschiedenis.
Waar ik naartoe wil gaan: http://fok.zevkiselim.nl/crew/.
Dank je! .quote:Op zondag 15 juni 2014 16:18 schreef esv7 het volgende:
[..]
Zojuist even een beginnetje gemaakt aan de timeline, vandaag geen tijd meer voor misschien kijk ik er van de week nog even naar als ik tijd heb.
Je kan hem syncen op github.
Einddatum van een activiteit betekent dat er nog geen einddatum is en dat de activiteit nog bezig is.quote:Hij doet het niet wanneer een activiteit geen einddatum heeft in de database.
1 | IFNULL(Einddatum,CURDATE()) |
Ik zie nu overigens dat je met 0.0.2 bezig bent geweest en de wijzigingen zo hebt opgeslagen. Ik wilde bij elke nieuwe mijlpaal de versie verhogen. Ik plaats jouw wijzigen in 0.0.3, zou je daarmee verder willen gaan?quote:Op zondag 15 juni 2014 16:18 schreef esv7 het volgende:
[..]
Zojuist even een beginnetje gemaakt aan de timeline, vandaag geen tijd meer voor misschien kijk ik er van de week nog even naar als ik tijd heb.
Je kan hem syncen op github.
Hij doet het niet wanneer een activiteit geen einddatum heeft in de database.
quote:Op zondag 15 juni 2014 16:53 schreef zarGon het volgende:
[..]
Dank je! .
Hoe kan ik het beste syncen? Dit wordt dan zeg maar versie 0.0.3... Hoe kan ik dat het makkelijkst doen zonder alles handmatig te kopiëren en jouw commitsummary en -description te behouden?
Overigens, die console.log-code is denk ik toegevoegd door http://jsbeautifier.org/. Was me niet opgevallen.
[..]
Einddatum van een activiteit betekent dat er nog geen einddatum is en dat de activiteit nog bezig is.
Een IFNULL zou dat probleem moeten oplossen.
[ code verwijderd ]
Je kan het makkelijkst syncen als je github hebt geïnstalleerd? Verder zou je dan voor iedere update een nieuwe map krijgen? Verder houd github dacht ik zelf al een versiebeheer bij zodat je altijd terug kan gaan naar een vorige release.quote:Op zondag 15 juni 2014 16:58 schreef zarGon het volgende:
[..]
Ik zie nu overigens dat je met 0.0.2 bezig bent geweest en de wijzigingen zo hebt opgeslagen. Ik wilde bij elke nieuwe mijlpaal de versie verhogen. Ik plaats jouw wijzigen in 0.0.3, zou je daarmee verder willen gaan?
Mja, ik weet niet hoe het beste met nieuwe wijzigingen gewerkt kan worden en ik wil toch wel de versies terug kunnen zien, dus ik dacht 'ik maak wel een nieuwe map aan bij een nieuwe versie'. .
Er is inderdaad per bestand een versiebeheer. Je kunt de history inzien per commit en zo. Alleen heb je dan voor zover ik weet niet de versies bij elkaar (zoals mijn mapindeling).quote:Op zondag 15 juni 2014 17:12 schreef esv7 het volgende:
[..]
[..]
Je kan het makkelijkst syncen als je github hebt geïnstalleerd? Verder zou je dan voor iedere update een nieuwe map krijgen? Verder houd github dacht ik zelf al een versiebeheer bij zodat je altijd terug kan gaan naar een vorige release.
http://git-scm.com/book/en/Git-Basics-Taggingquote:Op zondag 15 juni 2014 17:22 schreef zarGon het volgende:
[..]
Er is inderdaad per bestand een versiebeheer. Je kunt de history inzien per commit en zo. Alleen heb je dan voor zover ik weet niet de versies bij elkaar (zoals mijn mapindeling).
Ik zal zometeen eens kijken hoe ik je wijzigingen test en meeneem. Zou jij het mapje 0.0.2 bij jou (met jouw updates) willen hernoemen naar 0.0.4 (jouw huidige is dan 0.0.3).
Bedankt in ieder geval dat je meekijkt. Stel ik echt op prijs!
Oké heb het in een nieuw mapje gedaan, en als er nu geen end time is loopt die door tot vandaag.quote:Op zondag 15 juni 2014 17:22 schreef zarGon het volgende:
[..]
Er is inderdaad per bestand een versiebeheer. Je kunt de history inzien per commit en zo. Alleen heb je dan voor zover ik weet niet de versies bij elkaar (zoals mijn mapindeling).
Ik zal zometeen eens kijken hoe ik je wijzigingen test en meeneem. Zou jij het mapje 0.0.2 bij jou (met jouw updates) willen hernoemen naar 0.0.4 (jouw huidige is dan 0.0.3).
Bedankt in ieder geval dat je meekijkt. Stel ik echt op prijs!
Bedankt, het werkt!quote:Op zaterdag 14 juni 2014 21:45 schreef bondage het volgende:
[..]
$test is je input-array.
Kan vast beter dan dit, maar het werkt wel
[ code verwijderd ]
doe je versies taggen man, je hebt echt geen directories nodig voor je versies. dat defeats je version control.quote:Op zondag 15 juni 2014 04:06 schreef zarGon het volgende:
[..]
[..]
https://github.com/zarGonnn/FOK-crewgeschiedenis.
Waar ik naartoe wil gaan: http://fok.zevkiselim.nl/crew/.
.quote:Op zondag 15 juni 2014 19:27 schreef slacker_nl het volgende:
[..]
doe je versies taggen man, je hebt echt geen directories nodig voor je versies. dat defeats je version control.
- Edit. -quote:Op zondag 15 juni 2014 19:27 schreef slacker_nl het volgende:
[..]
doe je versies taggen man, je hebt echt geen directories nodig voor je versies. dat defeats je version control.
Bedankt!quote:Op zondag 15 juni 2014 17:32 schreef TwenteFC het volgende:
[..]
http://git-scm.com/book/en/Git-Basics-Tagging
Weet je zeker dat de code van 0.2 werkt? Als ik de index.php lokaal open, krijg ik een syntax error. Ergens zou-ie niet goed afgesloten worden.quote:Op zondag 15 juni 2014 04:06 schreef zarGon het volgende:
[..]
[..]
https://github.com/zarGonnn/FOK-crewgeschiedenis.
Waar ik naartoe wil gaan: http://fok.zevkiselim.nl/crew/.
1 2 3 4 5 | <option value="foo">foobar</option> <option value="bar">bar</option> <option value="foobar">bar</option> <option value="barfoo">foo</option> <option value="empty">empty</option> |
1 2 3 4 5 | foo foobar bar bar foobar bar barfoo foo empty empty |
De code van Crewgeschiedenis is ook anders dan die in je link?quote:Op zondag 15 juni 2014 04:06 schreef zarGon het volgende:
[..]
[..]
https://github.com/zarGonnn/FOK-crewgeschiedenis.
Waar ik naartoe wil gaan: http://fok.zevkiselim.nl/crew/.
Jep, ik weet zeker dat de huidige versie (0.0.2) op GitHub werkt. Welke syntax error krijg je precies?quote:Op zondag 15 juni 2014 23:56 schreef Robuustheid het volgende:
[..]
Weet je zeker dat de code van 0.2 werkt? Als ik de index.php lokaal open, krijg ik een syntax error. Ergens zou-ie niet goed afgesloten worden.
/crew = handmatig gecodeerd (losse bestanden per user/forum).quote:Op maandag 16 juni 2014 09:15 schreef Robuustheid het volgende:
[..]
De code van Crewgeschiedenis is ook anders dan die in je link?
Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems. Jamie Zawinskiquote:Op maandag 16 juni 2014 07:33 schreef Devolution het volgende:
Je zou ook met regular expressions kunnen werken, of als je het heel makkelijk wilt houden zou je '<option value="', '">' en '</option>' uit $html kunnen halen door die drie strings te replacen door een lege string.
Met regex in notepad++ bv:quote:Op maandag 16 juni 2014 01:29 schreef xaban06 het volgende:
Ik heb het volgende. Content van $html is:
[ code verwijderd ]
Dus een hele lijst met options met random data.
Dit wil 'schoonmaken', wat moet resulteren in:
[ code verwijderd ]
Hoe kan ik dit het beste doen? Ik dacht zelf om te exploden op <option value=". Vervolgens dat weer exploden op ">. En dan weer exploden op </option>. Maar dat lijkt mij allemaal heel erg omslachtig?
Moet makkelijker/logischer kunnen?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php public function generateList() { $items= json_decode( $this->input->post('items') ); $date = $this->input->post('date'); $order_data = $this->db_model->getItems($items, $date); [..] echo json_encode(array("data" => $table_data)); return; } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php public function getItems($items, $date) { $this->db->from('table_one o'); $this->db->join('table_two t', 'o.id = t.id'); $this->db->where_in('t.value', $items); $this->db->where('o.date', $date); $query = $this->db->get(); if($query->num_rows() > 0) { return $query->result(); } } ?> |
1 2 3 4 5 6 7 8 9 10 11 | oTable = $('#example').dataTable({ "dom": 'lfrtip', "bServerSide": true, "ajax": { "url": "***", "data": function ( d ) { d.items = JSON.stringify(selectedItems()); //geeft altijd een array terug } } }); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php public function generateList() { $items= json_decode( $this->input->post('items') ); $date = $this->input->post('date'); if(!($clocks && $date)) { echo json_encode(array("data" => "")); return; } $order_data = $this->db_model->getItems($items, $date); [..] echo json_encode(array("data" => $table_data)); return; } ?> |
Ik ben het met je eens. Die functie in m'n model wordt echter alleen in deze controller functie aangeroepen. Is het dan de moeite waard om m'n model te "vervuilen" of een laag boven m'n model te maken?quote:Op maandag 16 juni 2014 20:23 schreef TwenteFC het volgende:
Ik zou het in de model doen, anders kan je in elke aanroep die je doet eerst alles gaan lopen checken.
En als je jouw model schoon wil houden dan zou je extra laag boven je model kunnen zetten.
Nu nog wel, maar ik zou het gewoon in je model doen.quote:Op maandag 16 juni 2014 21:29 schreef pascal08 het volgende:
[..]
Ik ben het met je eens. Die functie in m'n model wordt echter alleen in deze controller functie aangeroepen. Is het dan de moeite waard om m'n model functie te "vervuilen" of een laag boven m'n model te maken?
Okéquote:Op maandag 16 juni 2014 21:31 schreef TwenteFC het volgende:
[..]
Nu nog wel, maar ik zou het gewoon in je model doen.
En als je in de models ziet dat je vaak dezelfde logica aan het maken bent dan zou ik het er toch uit halen, en ergens anders plaatsen.
Het lijkt er op dat je CodeIgniter gebruikt?
Geef ze een ROW_NUMBER mee en pak de hoogste daarvan? .quote:Op woensdag 18 juni 2014 10:12 schreef wobbel het volgende:
Hoe doe ik een MySQL JOIN waarbij ik het laatste record uit de 2e tabel pak?
Doel is als volgt: ik heb 1 tabel met storingen, en een 2e tabel met storing_updates daarin. In het overzicht van de storingen wil ik de datum van de laatste regel uit storing_updates laten zien MITS daar een update aanwezig is. Hoe fix ik dat? Ik ben er al lang uit, en het lukt me werkelijk voor geen meter
Gebruik top 1 i.c.m. een order by desc. In de select je primary key en eventueel de datum.quote:Op woensdag 18 juni 2014 10:25 schreef wobbel het volgende:
Dat kan toch ook op basis van de datum (unix timestamp) met hoogste waarde? Deze zit in tabel storingen_updates, maar ik weet niet hoe ik de JOIN moet bouwen om die datum er ook uit te krijgen van de laatste update (mits aanwezig)
1 2 3 4 5 6 7 8 | SELECT * FROM (SELECT TOP 1 [PRIMARY KEY], [DATUM] FROM Tabel ORDER BY [DATUM] DESC) Latest LEFT JOIN Tabel T ON T.[PRIMARY KEY] = Latest.[PRIMARY KEY] |
ik heb nu 4 versies. Heb een Google I/O gekeken over rendersnelheid en fps en ben sindsdien afgestapt van het serveren van gigantische afbeeldingen. Wat ik nu doe is een grote file uploaden met flinke compressie, deze worden 1 keer door php geschaald en in mappen gezet. Standaard laadt ik compact (dus hardcoded met php).quote:Op woensdag 18 juni 2014 14:25 schreef KomtTijd... het volgende:
Dus je wilt eigenlijk gewoon /gallery/compact/01.jpg redirecten naar /gallery/01.jpg?q=compact ?
Lees je even in in mod_rewrite en RewriteRules dan.
Overigens moet je oppassen met 'responsive' afbeeldingen. Als je niet oppast doe je meer kwaad dan goed. Volgens mij is de laatste trend om gewoon één afbeelding met relatief hoge resolutie en hoge compressie te serveren, ongeacht de device.
SPOILER: voorbeeldOm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.Kan de Google I/O helaas niet meer vinden, komt er op neer dat 'retina' afbeeldingen (ook met compressie veel meer paint time vergen en dat is niet nodig met een ouderwets scherm. Ook kost schalen in de browser extra tijd dus dat wil ik helemaal voorkomen, beide gebeurd met mijn huidige oplossing.Heb een paar jaar terug een test gedaan met jouw oplossing, werkt opzicht prima maar het komt met wat haken en ogen: http://n8n.nl/lab/compression/
[ Bericht 8% gewijzigd door n8n op 19-06-2014 09:32:42 ]“Specialization is for insects”.—Robert Heinlein
1 2 3 4 5 6 7 8 9 | <?php <?php echo "lala"; ?> ?> |
1 2 3 4 5 6 7 8 9 | <?php include 'test.php'; $test = new voorbeeld; $test->lala(); ?> |
De include neemt toch ook die <?php> tags mee in de eerste bestand?quote:<?php
class voorbeeld {
public function lala()
{
echo "lala";
}
}
?>
quote:Op zondag 22 juni 2014 11:43 schreef Robuustheid het volgende:
Ik begrijp 1 ding niet.
[ code verwijderd ]
Dit werkt niet. Maar dit werkt wel weer:
[ code verwijderd ]
Terwijl er gewoon ook php-tags in test.php staan:
[..]
De include neemt toch ook die <?php> tags mee in de eerste bestand?
http://stackoverflow.com/a/4254735quote:If you include a file, PHP internally switches from parsing to literal mode (i.e. what it normally does on a closing tag. That's why this works:
Literal mode is buiten de <?php tags. Dit word gewoon letterlijk weergegeven. Parsing mdoe is tussen de <?php tags, deze code word geexecute:quote:Op zondag 22 juni 2014 12:03 schreef Robuustheid het volgende:
Bedankt voor je post. Wat is het verschil tussen parsing en literal mode?
1 2 3 4 | <p>Dit is literal mode</p> <?php // Dit is parsing mode ?> |
quote:Op zondag 22 juni 2014 18:46 schreef einschtein het volgende:
Ik weet niet of het mogelijk is met Excel, maar wie weet.
Mijn doel is om van A2 t/m A45 (of t/m er iets in A staat) en van C2 t/m C45 (of t/m er iets in C staat) een code creeren.
Een code die als volgt moet zijn:
[ code verwijderd ]
Waar A2/C2/A3/C3 de tekst uit de tabel zou moeten zijn. Is dit mogelijk?
De include van PHP is niet zoals de #include van bijvoorbeeld C++. Bij C++ wordt een geïncludeerd bestand letterlijk op die plek in het bestand gezet. PHP probeert het bestand ook nog te interpreteren. Dit staat bijvoorbeeld in de documentatie op http://php.net/include :quote:
Dus een include begint in literal/HTML mode en zodra een PHP start tag wordt gezien, schakelt hij over op parser/PHP mode.quote:When a file is included, parsing drops out of PHP mode and into HTML mode at the beginning of the target file, and resumes again at the end. For this reason, any code inside the target file which should be executed as PHP code must be enclosed within valid PHP start and end tags.
Present.quote:Op vrijdag 27 juni 2014 22:28 schreef Sitethief het volgende:
Nog iemand anders die naar DPC 2014 gaat/gegaan is?
Ha mooi! Dan zaten we dus allebei als een gek met glowsticks te zwaaien .quote:
De mijne was vroegtijdig gebroken omdat ik hem probeerde te grijpen toen ie van mn been afgleed. Hij deed het wel leuk, die keynote. Geen vage bullshit zoals je vaker ziet.quote:Op zaterdag 28 juni 2014 19:33 schreef Sitethief het volgende:
[..]
Ha mooi! Dan zaten we dus allebei als een gek met glowsticks te zwaaien .
Welke talks vond jij echt de moeite waard?
Voor mij is het ook alleen maar mogelijk omdat mijn werk betaald. Anders was ik er ook niet geweest.quote:Op zaterdag 28 juni 2014 20:25 schreef robin007bond het volgende:
Damn, ik vind die conferenties zo duur, anders was ik ook wel gegaan denk ik.
Ik zou daar graag naar toe gaan, maar toch wat duur voor een scholierquote:Op vrijdag 27 juni 2014 22:28 schreef Sitethief het volgende:
Nog iemand anders die naar DPC 2014 gaat/gegaan is?
Same here.quote:Op zaterdag 28 juni 2014 22:16 schreef Maringo het volgende:
[..]
Voor mij is het ook alleen maar mogelijk omdat mijn werk betaald. Anders was ik er ook niet geweest.
Ik had dit lijstje nog.quote:Op zaterdag 28 juni 2014 19:33 schreef Sitethief het volgende:
[..]
Ha mooi! Dan zaten we dus allebei als een gek met glowsticks te zwaaien .
Welke talks vond jij echt de moeite waard?
zoiets?quote:Op maandag 30 juni 2014 19:29 schreef esv7 het volgende:
Is er een manier om iets als een constante array te krijgen? Ik zou graag een lijst met externe libraries in een configuration file hebben, waar doorheen gelooped kan worden.
1 2 3 4 5 6 7 8 9 | <?php class Config { public static $data = array('a'); } echo Config::$data[0]; ?> |
Waarom gebruik je dan niet gewoon Composer?quote:Op maandag 30 juni 2014 19:29 schreef esv7 het volgende:
Is er een manier om iets als een constante array te krijgen? Ik zou graag een lijst met externe libraries in een configuration file hebben, waar doorheen gelooped kan worden.
Mjah het punt is dat je bij veel conferenties ook gewoon alles online kunt terugzien, ik vind congressen vooral interessant om een beetje te netwerken. Volgend jaar gaan we waarschijnlijk met ons team naar Denemarken.quote:Op zaterdag 28 juni 2014 20:25 schreef robin007bond het volgende:
Damn, ik vind die conferenties zo duur, anders was ik ook wel gegaan denk ik.
Waar?quote:Op vrijdag 4 juli 2014 14:00 schreef raptorix het volgende:
[..]
Mjah het punt is dat je bij veel conferenties ook gewoon alles online kunt terugzien.
Nou ik weet niet of het specifiek voor dit congress is, maar voor het product wat ik veel gebruik is het vrij normaal: http://stream.umbraco.org/quote:
Wel naar Laracon ( http://laracon.eu/2014/ ), de baas betaald.quote:Op vrijdag 27 juni 2014 22:28 schreef Sitethief het volgende:
Nog iemand anders die naar DPC 2014 gaat/gegaan is?
Zonder op de rest van het probleem in te gaan, als je een datum in een tabel opslaat kun je beter het type DATE gebruiken en daar een datum in 'Y-m-d' formaat inzetten. Dan heb je ook de mogelijkheid om te zoeken en te sorteren, om maar eens wat dingen te noemen. VARCHAR (wat je waarschijnlijk gebruikt als je 'd/m/Y' gebruikt) is voor datums niet te sorteren en niet handig te doorzoeken.quote:
Ik zou zelf denk ik beide databases in een aparte array opslaan en deze dan vergelijken met array_diff(). Vervolgens zou je dan de ID's hebben van de waardes die wel in A staan maar niet in B, en die zou je dan over kunnen zetten.quote:Op zondag 6 juli 2014 23:11 schreef Robuustheid het volgende:
Even een pittige vraag.
Ik heb hier 2 MySQL databases.
Database A bevat 3 tabellen, wordt door een externe partij iedere dag automatisch aangevuld.
Database B bevat 1 grote tabel, dit hebben we zelf in beheer, en wordt gebruikt voor onze applicatie.
Het is de bedoeling dat de data van Database A naar Database B overgezet wordt. Dus ik heb een cronjob in PHP geschreven, dat iedere nacht uitgevoerd wordt. Daarin worden de tabellen van database A overgezet naar 1 grote tabel in database B. Dat overzetten werkt goed.
Het is namelijk de bedoeling dat in de cronjob, we een eigen datum meegeven aan de overzetting van A naar database/tabel B. Dat is de datum van vandaag (php: date('d/m/Y')
Dus hoe zorg ik ervoor dat MySQL/PHP eerst kijkt of er al data in database B aanwezig is, en dus niet kopieert, en de rijen data van database A die nog in database B ontbreekt, wel kopieert? Hoe zou ik dat kunnen laten checken?
Googlen bood mij geen goede richting.
Google eens op A-record. Attributr die veel bij backups wordt gebruikt.quote:Op zondag 6 juli 2014 23:11 schreef Robuustheid het volgende:
Even een pittige vraag.
Ik heb hier 2 MySQL databases.
Database A bevat 3 tabellen, wordt door een externe partij iedere dag automatisch aangevuld.
Database B bevat 1 grote tabel, dit hebben we zelf in beheer, en wordt gebruikt voor onze applicatie.
Het is de bedoeling dat de data van Database A naar Database B overgezet wordt. Dus ik heb een cronjob in PHP geschreven, dat iedere nacht uitgevoerd wordt. Daarin worden de tabellen van database A overgezet naar 1 grote tabel in database B. Dat overzetten werkt goed.
Het is namelijk de bedoeling dat in de cronjob, we een eigen datum meegeven aan de overzetting van A naar database/tabel B. Dat is de datum van vandaag (php: date('d/m/Y')
Dus hoe zorg ik ervoor dat MySQL/PHP eerst kijkt of er al data in database B aanwezig is, en dus niet kopieert, en de rijen data van database A die nog in database B ontbreekt, wel kopieert? Hoe zou ik dat kunnen laten checken?
Googlen bood mij geen goede richting.
Goede tip! Zal ik in vervolg aanhouden.quote:Op zondag 6 juli 2014 23:38 schreef Light het volgende:
[..]
Zonder op de rest van het probleem in te gaan, als je een datum in een tabel opslaat kun je beter het type DATE gebruiken en daar een datum in 'Y-m-d' formaat inzetten. Dan heb je ook de mogelijkheid om te zoeken en te sorteren, om maar eens wat dingen te noemen. VARCHAR (wat je waarschijnlijk gebruikt als je 'd/m/Y' gebruikt) is voor datums niet te sorteren en niet handig te doorzoeken.
Dat is een goede tip. Probleempje is dat de database A 3,5 miljoen aan records telt. Wordt die opgevulde array dan niet heel groot en log voor in gehuegen?quote:Op maandag 7 juli 2014 07:35 schreef Devolution het volgende:
[..]
Ik zou zelf denk ik beide databases in een aparte array opslaan en deze dan vergelijken met array_diff(). Vervolgens zou je dan de ID's hebben van de waardes die wel in A staan maar niet in B, en die zou je dan over kunnen zetten.
Snap je niet goed? .quote:Op maandag 7 juli 2014 08:05 schreef Pakspul het volgende:
[..]
Google eens op A-record. Attributr die veel bij backups wordt gebruikt.
quote:Op zondag 6 juli 2014 23:38 schreef Light het volgende:
[..]
Zonder op de rest van het probleem in te gaan, als je een datum in een tabel opslaat kun je beter het type DATE gebruiken en daar een datum in 'Y-m-d' formaat inzetten. Dan heb je ook de mogelijkheid om te zoeken en te sorteren, om maar eens wat dingen te noemen. VARCHAR (wat je waarschijnlijk gebruikt als je 'd/m/Y' gebruikt) is voor datums niet te sorteren en niet handig te doorzoeken.
Is dit niet wat? http://stackoverflow.com/(...)ad-command-line-toolquote:Op zondag 6 juli 2014 23:11 schreef Robuustheid het volgende:
Even een pittige vraag.
Ik heb hier 2 MySQL databases.
Database A bevat 3 tabellen, wordt door een externe partij iedere dag automatisch aangevuld.
Database B bevat 1 grote tabel, dit hebben we zelf in beheer, en wordt gebruikt voor onze applicatie.
Het is de bedoeling dat de data van Database A naar Database B overgezet wordt. Dus ik heb een cronjob in PHP geschreven, dat iedere nacht uitgevoerd wordt. Daarin worden de tabellen van database A overgezet naar 1 grote tabel in database B. Dat overzetten werkt goed.
Het is namelijk de bedoeling dat in de cronjob, we een eigen datum meegeven aan de overzetting van A naar database/tabel B. Dat is de datum van vandaag (php: date('d/m/Y')
Dus hoe zorg ik ervoor dat MySQL/PHP eerst kijkt of er al data in database B aanwezig is, en dus niet kopieert, en de rijen data van database A die nog in database B ontbreekt, wel kopieert? Hoe zou ik dat kunnen laten checken?
Googlen bood mij geen goede richting.
1 2 3 4 5 | <?php $database = new database(); $data = $database->select('content', '*', ['category' => $category]); return $data; ?> |
1 2 3 | <?php $data = $database->select('content', '*', array('category' => $category)); ?> |
Dankjewel. nooit legacy php geleerd/gebruikt. Kuthost, kan nu alle arrays herschrijvenquote:
1 2 3 | <?php route::meta('category')[$collumn] ?> |
Dat moet in 5.3 over 2 regels:quote:Op dinsdag 8 juli 2014 20:03 schreef n8n het volgende:
[ code verwijderd ]
werkt ook al niet, weer de []-jes
1 2 3 4 | <?php $route = route::meta('category'); $route[$column]; ?> |
Andere host zoeken?quote:Op dinsdag 8 juli 2014 19:41 schreef n8n het volgende:
[..]
Dankjewel. nooit legacy php geleerd/gebruikt. Kuthost, kan nu alle arrays herschrijven
ja was al begonnen, 5.4 komt alweer uit mei 2012 zag ik net. bedanktquote:
1 2 3 4 5 6 7 8 9 10 | <?php if(file_exists("/header.php")) { include("/header.php"); } else { echo "<b>header.php was not found.</b>"; } ?> |
Wat voor fout krijg je bij de include?quote:Op dinsdag 8 juli 2014 21:10 schreef jagermaster het volgende:
Wat gaat er mis in php5.5 met de volgende code? Wat ik terug vind is dat include () niet meer mag, maar hoe ik dit wel op moet lossen wordt mij niet duidelijk
[ code verwijderd ]
dat het niet wordt ge-include, verder geen foutmelding.quote:
pad is goed. Website draaide jaren goed. De code is correct voor php 5.5?quote:Op dinsdag 8 juli 2014 21:15 schreef mstx het volgende:
Lijkt me dat het pad gewoon verkeerd is, je zet de header.php toch niet in de root van je filesystem?
Maar de echo wordt dus ook niet uitgevoerd.quote:Op dinsdag 8 juli 2014 21:15 schreef jagermaster het volgende:
[..]
dat het niet wordt ge-include, verder geen foutmelding.
waar lees je dat include niet meer mag? Kan het niet vinden in changelog.quote:Op dinsdag 8 juli 2014 21:16 schreef jagermaster het volgende:
[..]
pad is goed. Website draaide jaren goed. De code is correct voor php 5.5?
klopt includepath, klopt dank je.quote:Op dinsdag 8 juli 2014 21:21 schreef remi1986 het volgende:
[..]
waar lees je dat include niet meer mag? Kan het niet vinden in changelog.
Misschien includepath niet goed met overstap naar 5.5?
klopt, echo werd ook niet uitgevoerd. Het bestand is wel te lezen. Nadat ik de instelling van safe-mode heb veranderd werkte alles weer zonder enig probleem. (en in het bestand wat ge-include werd staat alleen wat html en een simpel stukje php wat zo basic is dat het niet veranderd kan zijn)quote:Op dinsdag 8 juli 2014 21:20 schreef Aether het volgende:
[..]
Maar de echo wordt dus ook niet uitgevoerd.
Is het bestand wel te lezen door PHP/webserver?
het moet allemaal <? worden?quote:Op dinsdag 8 juli 2014 21:21 schreef remi1986 het volgende:
[..]
waar lees je dat include niet meer mag? Kan het niet vinden in changelog.
Misschien includepath niet goed met overstap naar 5.5?
EDIT:
Kan ook met <? en <?php fout gaan.
nee, als je de (ik meen short_tag uit mijn hoofd) op on hebt staan.quote:Op dinsdag 8 juli 2014 21:26 schreef jagermaster het volgende:
[..]
het moet allemaal <? worden?
standaard staat het nog op <?php
de short_open_tag staat op 'on'. Maar ik neem aan dat <?php dan gewoon ook mag.quote:Op dinsdag 8 juli 2014 21:27 schreef remi1986 het volgende:
[..]
nee, als je de (ik meen short_tag uit mijn hoofd) op on hebt staan.
Ja dat is goed. Maar het werkt nu toch weer?quote:Op dinsdag 8 juli 2014 21:30 schreef jagermaster het volgende:
[..]
de short_open_tag staat op 'on'. Maar ik neem aan dat <?php dan gewoon ook mag.
alleen zonder code veranderen met iets wat in een nieuwe versie van php ook goed moet zijn is problemen voor de toekomst zien. Want nu werkt het, maar straks niet meer en dat zou vervelend zijn, want het probleem ligt dus ergens anders.quote:Op dinsdag 8 juli 2014 21:31 schreef remi1986 het volgende:
[..]
Ja dat is goed. Maar het werkt nu toch weer?
In iedere versie van php worden wel functies aangepast of verwijderd. Daarom test het altijd eerst voordat je het live zet.quote:Op dinsdag 8 juli 2014 21:33 schreef jagermaster het volgende:
[..]
alleen zonder code veranderen met iets wat in een nieuwe versie van php ook goed moet zijn is problemen voor de toekomst zien. Want nu werkt het, maar straks niet meer en dat zou vervelend zijn, want het probleem ligt dus ergens anders.
Je kunt er natuurlijk niet vanuit gaan dat alles wat in een oude versie van PHP werkt ook in een nieuwe zal werken. Als er niks verandert, hoeven ze ook geen nieuwe versies uit te brengen.quote:Op dinsdag 8 juli 2014 21:33 schreef jagermaster het volgende:
[..]
alleen zonder code veranderen met iets wat in een nieuwe versie van php ook goed moet zijn is problemen voor de toekomst zien. Want nu werkt het, maar straks niet meer en dat zou vervelend zijn, want het probleem ligt dus ergens anders.
<?php mag altijd, maakt niet uit of short open tags aan of uit staat. <? mag alleen als short open tags aan staat. (En vanaf 5.4 mag <?= altijd, ook als short open tags uit staat.)quote:Op dinsdag 8 juli 2014 21:30 schreef jagermaster het volgende:
[..]
de short_open_tag staat op 'on'. Maar ik neem aan dat <?php dan gewoon ook mag.
Bovendien is ioncube omkeerbaar.quote:Op woensdag 9 juli 2014 06:59 schreef xaban06 het volgende:
Ik wil een script draaien op een server waar meer mensen toegang tot hebben, ik wil niet dat zij de source code kunnen bekijken omdat hier hardcoded wachtwoorden in voorkomen.
Hoe kan ik dit 'encrypten'? Volgens mij met ionCube, maar dat kost al gauw 200 dollar.
Kan het goedkoper, liefst gratis?
Dat het omkeerbaar is maakt niet uit (tenminste, zal niet heel makkelijk zijn neem ik aan?). Zijn gewoon collega's die er bij kunnen, dat mag best, zolang ze de plain wachtwoord maar niet direct kunnen zien. Ze zullen geen moeite doen om het om te keren.quote:Op woensdag 9 juli 2014 08:05 schreef Boze_Appel het volgende:
[..]
Bovendien is ioncube omkeerbaar.
Of contractmatig dichtstampen of op een server hosten waar alleen jij bij kan. Het laatste is omslachtig en het eerste is het verstandigste. Het encrypten is vrij onzinnig als ze kwaad willen.
Waarom hardcode je dan de wachtwoorden überhaupt?quote:Op woensdag 9 juli 2014 06:59 schreef xaban06 het volgende:
Ik wil een script draaien op een server waar meer mensen toegang tot hebben, ik wil niet dat zij de source code kunnen bekijken omdat hier hardcoded wachtwoorden in voorkomen.
Hoe kan ik dit 'encrypten'? Volgens mij met ionCube, maar dat kost al gauw 200 dollar.
Kan het goedkoper, liefst gratis?
Wat maakt dat uit? Of hebben ze ook schrijfrechten en ben je bang dat ze de hashes zelf gaan vervangen? Dat ga je met obfuscaten ook niet kunnen voorkomen waarschijnlijk.quote:Op woensdag 9 juli 2014 06:59 schreef xaban06 het volgende:
Ik wil een script draaien op een server waar meer mensen toegang tot hebben, ik wil niet dat zij de source code kunnen bekijken omdat hier hardcoded wachtwoorden in voorkomen.
Hoe kan ik dit 'encrypten'? Volgens mij met ionCube, maar dat kost al gauw 200 dollar.
Kan het goedkoper, liefst gratis?
Hoe wil je dat script gebruiken, moet iedereen het kunnen gebruiken of mag alleen een specifieke user dat gebruiken?quote:Op woensdag 9 juli 2014 06:59 schreef xaban06 het volgende:
Ik wil een script draaien op een server waar meer mensen toegang tot hebben, ik wil niet dat zij de source code kunnen bekijken omdat hier hardcoded wachtwoorden in voorkomen.
Hoe kan ik dit 'encrypten'? Volgens mij met ionCube, maar dat kost al gauw 200 dollar.
Kan het goedkoper, liefst gratis?
Precies. Als mensen het script kunnen lezen en uitvoeren, kunnen ze ook de config lezen, want anders kan het script de config ook niet lezen.quote:Op woensdag 9 juli 2014 12:54 schreef Robuustheid het volgende:
Hoe moet dat script dan toegang krijgen tot de config?
Waar verwijst die resource naar? Ik vermoed dat je met fread wel iets kunt: http://php.net/manual/en/function.fread.phpquote:Op woensdag 9 juli 2014 16:13 schreef Tijn het volgende:
Ik heb een externe library geïnstalleerd die een "resource" maakt aan de hand van een file. Er zitten een paar functies in die library die werken met die resources en dat gaat allemaal prima, maar nou wil ik de resource graag opslaan in een file. Als ik "echo $resource" doe, krijg ik echter enkel "Resource id #4" te zien, daar heb ik natuurlijk niet zoveel aan.
Iemand enig idee hoe ik de inhoud van deze resource kan opslaan?
Hoe is dat handig? Dat is een blinddoek.quote:Op woensdag 9 juli 2014 15:43 schreef raptorix het volgende:
Beter investeer je tijd om iets aan dat wachtwoord in plain text te doen.
Speaking about configs, wat erg handig is is om een Wrapper class te maken die de config uitleest, op die manier heb je config settings strongtyped
Hoe bedoel je "waar verwijst die resource naar"?quote:Op woensdag 9 juli 2014 16:22 schreef bondage het volgende:
[..]
Waar verwijst die resource naar? Ik vermoed dat je met fread wel iets kunt: http://php.net/manual/en/function.fread.php
Omdat je dan bij eventuele changes in de naam van de config, of de manier waarop je je config wilt lezen je het maar op plek hoeft aan te passen.quote:Op woensdag 9 juli 2014 16:28 schreef Boze_Appel het volgende:
[..]
Hoe is dat handig? Dat is een blinddoek.
Config (met password) gewoon buiten de publieke leesbare path van de webserver zetten.
Moet gewoon kunnen: http://php.net/manual/en/function.fread.phpquote:Op woensdag 9 juli 2014 16:32 schreef Tijn het volgende:
[..]
Hoe bedoel je "waar verwijst die resource naar"?
Met fread() en fwrite() kun je files openen en schrijven, maar het lijkt erop dat je alleen met strings kunt werken. Ik wil de (binaire) data die in m'n resource zit naar een file schrijven, maar ik weet niet hoe ik bij deze data kan komen.
Hoe dan? Ik kan wel een file openen met fread() natuurlijk, maar hoe krijg ik de inhoud van de resource die met m'n library is gemaakt dan in de file?quote:Op woensdag 9 juli 2014 16:39 schreef raptorix het volgende:
[..]
Moet gewoon kunnen: http://php.net/manual/en/function.fread.php
Als je dat op een plek zet die niet direct leesbaar is ook.quote:Op woensdag 9 juli 2014 16:36 schreef raptorix het volgende:
[..]
Omdat je dan bij eventuele changes in de naam van de config, of de manier waarop je je config wilt lezen je het maar op plek hoeft aan te passen.
Of de resource bijvoorbeeld verwijst naar de inhoud van een bestand. Fread leest namelijk vanuit een resource. Wat gebeurt er precies in die library? Hoe wordt die resource precies aangemaakt?quote:Op woensdag 9 juli 2014 16:32 schreef Tijn het volgende:
[..]
Hoe bedoel je "waar verwijst die resource naar"?
Met fread() en fwrite() kun je files openen en schrijven, maar het lijkt erop dat je alleen met strings kunt werken. Ik wil de (binaire) data die in m'n resource zit naar een file schrijven, maar ik weet niet hoe ik bij deze data kan komen.
De library is pHash (http://www.phash.org). Ik gebruik ph_audiohash() om van een audiofile een hash te maken, zodat ik die kan gebruiken in ph_audio_dist(). Deze laatste functie vergelijkt twee hashes met elkaar om te kijken of twee geluidsfragmenten op elkaar lijken of niet.quote:Op woensdag 9 juli 2014 16:42 schreef bondage het volgende:
[..]
Of de resource bijvoorbeeld verwijst naar de inhoud van een bestand. Fread leest namelijk vanuit een resource. Wat gebeurt er precies in die library? Hoe wordt die resource precies aangemaakt?
En wat krijg je als je die resource meegeeft aan fread en dat echo't?quote:Op woensdag 9 juli 2014 16:45 schreef Tijn het volgende:
[..]
De library is pHash (http://www.phash.org). Ik gebruik ph_audiohash() om van een audiofile een hash te maken, zodat ik die kan gebruiken in ph_audio_dist(). Deze laatste functie vergelijkt twee hashes met elkaar om te kijken of twee geluidsfragmenten op elkaar lijken of niet.
ph_audiohash() geeft een resource terug van het type "ph_audio_hash". De inhoud daarvan wil ik naar een file schrijven. Maar ik weet niet hoe ik bij die (binaire) data kan komen, want als ik "echo $resource" doe, krijg ik alleen maar "Resource id #4" te zien.
Dan krijg ik een fout: "fread(): supplied resource is not a valid stream resource"quote:Op woensdag 9 juli 2014 17:08 schreef bondage het volgende:
[..]
En wat krijg je als je die resource meegeeft aan fread en dat echo't?
Klopt idd, was meer benieuwd wat je eruit terug zou krijgen. En die lib heeft geen ingebouwde functie om de resource te lezen? Er is trouwens ook nog een functie stream_get_contents, geen idee of dat enig effect heeft maar je kunt altijd proberen.quote:Op woensdag 9 juli 2014 17:17 schreef Tijn het volgende:
[..]
Dan krijg ik een fout: "fread(): supplied resource is not a valid stream resource"
Logisch, want hij verwacht een file system pointer resource zoals fopen() die maakt, en ik geef 'm een ph_audio_hash resource.
stream_get_contents() werkt ook niet, want m'n resource is geen streamquote:Op woensdag 9 juli 2014 17:25 schreef bondage het volgende:
[..]
Klopt idd, was meer benieuwd wat je eruit terug zou krijgen. En die lib heeft geen ingebouwde functie om de resource te lezen? Er is trouwens ook nog een functie stream_get_contents, geen idee of dat enig effect heeft maar je kunt altijd proberen.
Tuurlijk niet.quote:Op woensdag 9 juli 2014 13:59 schreef Tijn het volgende:
[..]
Precies. Als mensen het script kunnen lezen en uitvoeren, kunnen ze ook de config lezen, want anders kan het script de config ook niet lezen.
1 2 3 4 5 6 7 8 9 10 11 12 13 | -rw------- 1 www-data mijnuser 34 jul 9 18:39 config.txt -rwxrwxr-x 1 mijnuser mijnuser 37 jul 9 18:42 x.sh $ cat config.txt cat: config.txt: Permission denied $ cat x.sh #!/usr/bin/env zsh cat ./config.txt $ sudo -u www-data ./x.sh dit is niet leesbaar voor anderen |
Het punt is denk ik dat de persoon in kwestie geen eigen user account heeft en degene gebruikt die ook door z'n collega's gebruikt worden. Daarom is alles wat leesbaar is voor hem ook leesbaar voor de rest.quote:Op woensdag 9 juli 2014 18:44 schreef slacker_nl het volgende:
[..]
Tuurlijk niet.
[ code verwijderd ]
En anders moet je aan de slag met setuid: http://php.net/manual/en/function.posix-setuid.php en/of http://goodworkaround.com/node/39
En dat is dus stom en moet je niet willen. Punt.quote:Op woensdag 9 juli 2014 18:52 schreef Tijn het volgende:
[..]
Het punt is denk ik dat de persoon in kwestie geen eigen user account heeft en degene gebruikt die ook door z'n collega's gebruikt worden. Daarom is alles wat leesbaar is voor hem ook leesbaar voor de rest.
Tsja. Ik heb de situatie ook niet bedacht, he.quote:Op woensdag 9 juli 2014 18:53 schreef slacker_nl het volgende:
[..]
En dat is dus stom en moet je niet willen. Punt.
Jawel, want je speculeert eroverquote:Op woensdag 9 juli 2014 18:55 schreef Tijn het volgende:
[..]
Tsja. Ik heb de situatie ook niet bedacht, he.
Das waar. Maar goed, als die kerel z'n eigen user account heeft, is het inderdaad op te lossen. Anders niet, dan kun je het hooguit obfusceren.quote:
1 2 3 4 5 6 7 8 | public function test(){ global $test; $test = 'lalala'; } public function test2(){ echo $test; } |
1 2 3 4 5 6 7 8 | public function test(){ $test = 'lalala'; global $test; } public function test2(){ echo $test; } |
Bij het definieren op regel 2 vind ie geen global en maakt ie dus een var binnen de functie aan. Vervolgens defineer je een global var op regel 3 en die kijkt niet of je binnen de functie een var hebt met dezelfde naam.quote:Op vrijdag 11 juli 2014 10:00 schreef Robuustheid het volgende:
[ code verwijderd ]
Dit werkt.
Waarom werkt het niet, als je na initialisatie van var test pas verklaart dat dezelfde var een global variabele is? De logica ervan ontgaat mij. De variabele $test is toch
beschikbaar om als global gedefinieerd te worden
[ code verwijderd ]
Geen output.
Maak een local aan in het object zelf! Dus binnen een klasse. (omdat hij dat andere mogelijk niet kent). en vervolgens roep je het aan vanuit het object zelf.quote:Op vrijdag 11 juli 2014 10:21 schreef Maringo het volgende:
[..]
Bij het definieren op regel 2 vind ie geen global en maakt ie dus een var binnen de functie aan. Vervolgens defineer je een global var op regel 3 en die kijkt niet of je binnen de functie een var hebt met dezelfde naam.
Maar buiten dit, waarom een global var?
Je kan een print css maken, die de styling van de pagina aanpast.quote:Op vrijdag 11 juli 2014 16:50 schreef pascal08 het volgende:
Ik wil 2 dynamische tabellen printbaar maken. Dat betekent dat de inhoud zich dus moet aanpassen aan de breedte van de pagina (of dat de tabellen een vaste breedte hebben, wat erg lastig is omdat ze dynamisch zijn en dus van breedte kunnen verschillen). De tabellen hoeven niet per se op dezelfde pagina. Zolang de tabellen maar niet halverwege in een rij worden afgebroken of in de breedte worden verdeeld over 2 pagina's is het prima.
Ik dacht zelf aan het creëren van een PDF met php en die vervolgens printbaar maken met een plugin zoals Crocodoc ofzo. Heel omslachtig lijkt mij, maar ik kan zelf niet op een simpele, doeltreffende oplossing komen.
Iemand een idee?
De tabellen zien er ongeveer zo uit (maar vaak dus met aanzienlijk meer informatie):
[ afbeelding ]
Jep.quote:Op vrijdag 11 juli 2014 23:24 schreef d4v1d het volgende:
Steeds checken wat de tijd is en als het 2 minuten later is dan de vorige keer het uitvoeren?
proces forken en dan je child laten sleepen?quote:Op vrijdag 11 juli 2014 23:24 schreef d4v1d het volgende:
Ik heb een IRC bot met een while loop die het socket leest. Nu wil ik elke 2 minuten iets laten uitvoeren binnen die while loop. Sleep is geen optie omdat dan de verbinding wordt verbroken (er moet een soort van keep alive worden verzonden tussen de IRC bot en de IRC server). Wat is de beste manier om dit te doen? Steeds checken wat de tijd is en als het 2 minuten later is dan de vorige keer het uitvoeren?
ooit eens geprobeerd voor een ander iets. Nooit gelukt Ik ga liever voor de makkelijke manierquote:Op zaterdag 12 juli 2014 00:12 schreef slacker_nl het volgende:
[..]
proces forken en dan je child laten sleepen?
Precies het zetje in de goede richting. Thanksquote:Op vrijdag 11 juli 2014 18:19 schreef TwenteFC het volgende:
[..]
Je kan een print css maken, die de styling van de pagina aanpast.
Zit net dit te lezen..quote:Op zaterdag 12 juli 2014 00:16 schreef d4v1d het volgende:
[..]
ooit eens geprobeerd voor een ander iets. Nooit gelukt Ik ga liever voor de makkelijke manier
Wanneer dit praktisch nuttig is op een normale webpagina kan ik nog niet begrijpen maar voor een IRC botje is dit best grappig. Dat het met Java kon wist ik al maar met PHP? Dat is weer iets geheel nieuws! Leuke ontwikkeling.quote:Op zaterdag 12 juli 2014 00:20 schreef slacker_nl het volgende:
[..]
Zit net dit te lezen..
http://www.tuxradar.com/practicalphp/16/1/3
bestaat al sinds 4.1 maar niet echt mee te werken. Voorbeeldje, als je in 1 proces een database query uitvoert, heeft het andere proces deze wijziging niet.quote:Op maandag 14 juli 2014 16:08 schreef cablegunmaster het volgende:
[..]
Wanneer dit praktisch nuttig is op een normale webpagina kan ik nog niet begrijpen maar voor een IRC botje is dit best grappig. Dat het met Java kon wist ik al maar met PHP? Dat is weer iets geheel nieuws! Leuke ontwikkeling.
Dat is logisch , dat wil je eigenlijk ook niet. Je zal het erna opnieuw moeten opvragen voor je het hebt, anders krijg je inconsistentie van gegevens. Processen weten niet van elkaar wat ze gedaan hebben maar de rows zelf moeten vrij toegankelijk zijn.quote:Op maandag 14 juli 2014 16:24 schreef remi1986 het volgende:
[..]
bestaat al sinds 4.1 maar niet echt mee te werken. Voorbeeldje, als je in 1 proces een database query uitvoert, heeft het andere proces deze wijziging niet.
Dat is ook niet hoe je een multithreaded applicatie moet bouwen. Een thread heeft een duidelijke verantwoordelijkheid en dat informatie gescheiden is tussen threads is juist goed, zodat niet de ene thread data kan aanpassen waar de andere thread mee bezig is.quote:Op maandag 14 juli 2014 16:24 schreef remi1986 het volgende:
[..]
bestaat al sinds 4.1 maar niet echt mee te werken. Voorbeeldje, als je in 1 proces een database query uitvoert, heeft het andere proces deze wijziging niet.
Wat snap je niet?quote:Op dinsdag 15 juli 2014 06:27 schreef henrivo het volgende:
Kan iemand mij in teletubbietaal uitleggen waarom dat hele Doctrine gebeuren helemaal je van het schijnt te zijn? Snap d'r geen zak van
Het voornaamste voordeel vind ik dat je je datastructuur in je applicatie definieert, waardoor je op 1 centrale plek bepaalt hoe wat op welke manier wordt opgeslagen. Vervolgens kan Doctrine de benodigde tabellen/kolommen genereren en up-to-date houden, waarmee je voorkomt dat je database en applicatie niet op elkaar aansluiten.quote:Op dinsdag 15 juli 2014 06:27 schreef henrivo het volgende:
Kan iemand mij in teletubbietaal uitleggen waarom dat hele Doctrine gebeuren helemaal je van het schijnt te zijn? Snap d'r geen zak van
Nou, om een voorbeeld te noemen: ik kom steeds de term hydrator tegen. Dafuq is dát?quote:
quote:
is niet zo moeilijk in google invoeren Hydratorquote:Hydrators are simple objects that allow to convert an array of data to an object (this is called "hydrating") and to convert back an object to an array (this is called "extracting").
Mee eens, ik noemde ook maar even snel 1 van de vele onduidelijkheden.quote:Op dinsdag 15 juli 2014 10:50 schreef remi1986 het volgende:
[..]
[..]
is niet zo moeilijk in google invoeren Hydrator
Nou als ik het zo snel ff bekijk, zou het juist veel makkelijker moeten zijn.quote:Op dinsdag 15 juli 2014 10:58 schreef henrivo het volgende:
[..]
Mee eens, ik noemde ook maar even snel 1 van de vele onduidelijkheden.
Ligt het nu aan mij, of is de leercurve van doctrine gewoon ontzettend ingewikkeld voor een beginneling?
Nee maar ik heb zó veel enthousiaste ervaringen gelezen over doctrine, alsof het een revolutie is, en ik wil óók graag net zo enthousiast worden!quote:Op dinsdag 15 juli 2014 11:02 schreef KomtTijd... het volgende:
Je hoeft niet alle functies van buiten te kennen om het te gebruiken. Ik ben er zo ingerold.
Hoe en waarvoor gebruik je Doctrine dan? In combinatie met Symfony?quote:Op dinsdag 15 juli 2014 11:09 schreef henrivo het volgende:
[..]
Nee maar ik heb zó veel enthousiaste ervaringen gelezen over doctrine, alsof het een revolutie is, en ik wil óók graag net zo enthousiast worden!
Alleen kan ik het enthousiasme niet plaatsen nog en zakt de moed om er mee verder te gaan steeds verder in m'n schoenen
ZF2.quote:Op dinsdag 15 juli 2014 11:10 schreef KomtTijd... het volgende:
[..]
Hoe en waarvoor gebruik je Doctrine dan? In combinatie met Symfony?
Ik zal vanmiddag die cookbook er es bij pakken. Ook al gebruik ik Zend Framework 2. Misschien steek ik er wat van opquote:Op dinsdag 15 juli 2014 11:10 schreef KomtTijd... het volgende:
[..]
Hoe en waarvoor gebruik je Doctrine dan? In combinatie met Symfony?
Met het symfony cookbook erbij vond ik het allemaal behoorlijk duidelijk, had al aardig wat functies gebruikt voordat ik er uberhaupt achter kwam dat het "doctrine" was wat ik gebruikte.
Gadver, wat een lelijke manier om je querie op te bouwen. Dat is op een gegeven moment helemaal niet leesbaar meerquote:$em = $this->getDoctrine()->getManager()->createQueryBuilder();
$q = $em->select('c')
->from('ACMESouthBundle:CountriesInvolved','c')
->innerJOIN('c.Involvement','i')
->where('i.id = 1')
->groupBy('c.country')->getQuery();
Hoe zou jij je interface dan maken?quote:Op dinsdag 15 juli 2014 11:25 schreef remi1986 het volgende:
[..]
Gadver, wat een lelijke manier om je querie op te bouwen. Dat is op een gegeven moment helemaal niet leesbaar meer
Interface? Of de desbetreffende query?quote:Op dinsdag 15 juli 2014 11:58 schreef slacker_nl het volgende:
[..]
Hoe zou jij je interface dan maken?
Je hoeft niet perse de querybuilder te gebruiken, je kunt ook DQL (Doctrine Query Language) gebruiken, dat lijkt heel erg op SQLquote:Op dinsdag 15 juli 2014 11:25 schreef remi1986 het volgende:
[..]
Gadver, wat een lelijke manier om je querie op te bouwen. Dat is op een gegeven moment helemaal niet leesbaar meer
Voor het meeste werk hoef je uberhaupt geen queries te bouwen. Met find en findBy heb je 90% al afgevangen. Scheelt echt ontzettend veel gedoe.quote:Op dinsdag 15 juli 2014 12:59 schreef Rockfire het volgende:
[..]
Je hoeft niet perse de querybuilder te gebruiken, je kunt ook DQL (Doctrine Query Language) gebruiken, dat lijkt heel erg op SQL
Klopt, zelf gebruik ik Doctrine zelf al weer een tijdje. Eerst in combinatie met Zend Framework 2 en daarna in combinatie met Symfony 2. Ik vind het erg fijn werken!quote:Op dinsdag 15 juli 2014 13:17 schreef KomtTijd... het volgende:
[..]
Voor het meeste werk hoef je uberhaupt geen queries te bouwen. Met find en findBy heb je 90% al afgevangen. Scheelt echt ontzettend veel gedoe.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |