Ik heb nooit met Visual Studio gewerkt, maar de auto-complete van PhpStorm vind ik zeer goed.quote:Op woensdag 19 juni 2013 00:26 schreef Juicyhil het volgende:
[..]
Auto-complete zoals IntelliSense in Visual Studio is inderdaad heel erg fijn. Maar zo goed als die ben ik hem voor PHP nergens tegengekomen. Zeker niet in combinatie met frameworks (zeker niet de wat onbekendere).
quote:Op woensdag 19 juni 2013 23:24 schreef Chandler het volgende:
Ik heb een groot nadeel ontdekt van InnoDB, dat als je een veld toevoegd op een tabel met 5 miljoen records, dat deze er dan zeker 3 uur over doet (en nog steeds bezig is...)....
Poept CURL geen meuk uit als je timeout verlopen is..? Maar je MOET kijken naar de HTTP code, anders weet je neit hoe/wat/waar. Dus als deze 0 is weet je dat er iets fout is.quote:Op vrijdag 21 juni 2013 21:06 schreef Chandler het volgende:
Weer wat anders met curl,
Ik krijg vaak een CURLE_OK terug van curl_errno, maar soms als ik met curl_getinfo de http code uitlees is deze geen 200 maar 0; dus kan ik er op dit moment niets mee. Als ik kijk wat curl_error uitspuwt zie ik veelal van dit soort berichten (zonder tijd natuurlijk)
2013-06-21 20:58:23 - Could not resolve host: (nil); Host not found
2013-06-21 20:58:41 - Connection timed out after 2013 milliseconds
2013-06-21 20:59:04 - Resolving timed out after 2012 milliseconds
2013-06-21 20:59:33 - Operation timed out after 2013 milliseconds with 0 out of -1 bytes received
Op zich niets mis mee hoor, met deze gegevens kan ik ook wat, alleen vraag ik mij af of er ergens meer over dit soort foutmeldingen te vinden is, ik zou graag direct mijn script willen aanpassen op 'alle' mogelijkheden die kunnen voorkomen.
Iemand een idee?
Daardoor moet ik er inderdaad dus naar kijken, want een 200 is gewoon OK! zeker als de lengte van de content langer is dan 0.quote:Op vrijdag 21 juni 2013 22:07 schreef slacker_nl het volgende:
Poept CURL geen meuk uit als je timeout verlopen is..?
[/qoute]
Nee, helaas niet, anders dan de foutmelding in curl_error maar de status is OK!
[quote]Maar je MOET kijken naar de HTTP code, anders weet je neit hoe/wat/waar. Dus als deze 0 is weet je dat er iets fout is.
Ik ben hier bekend mee, is op zich niet nodig, de foutmeldingen die CURL geeft geven dit ook al aan, alleen vraag ik mij af of er niet een lijst beschikbaar is waarin ik kan zien welke mogelijke fouten er allemaal tevoorschijn kunnen komen?quote:Je kan eventueel ook eerst dit proberen op de hostname: http://php.net/manual/en/function.gethostbyname.php
http://www.php.net/manual/en/function.checkdnsrr.php (type A, AAAA, CNAME moeten bestaan, iig 1 vd 3).
Alle 2xx return codes geven succes aan (in een of andere vorm).quote:Op vrijdag 21 juni 2013 22:24 schreef Chandler het volgende:
[..]
Daardoor moet ik er inderdaad dus naar kijken, want een 200 is gewoon OK! zeker als de lengte van de content langer is dan 0.
Klopt alleen de 200 met content de rest is voor mij niet interessant als uitleesbaarquote:Op zondag 23 juni 2013 00:39 schreef Light het volgende:
Alle 2xx return codes geven succes aan (in een of andere vorm).
1 2 3 4 5 6 | <?php $thisdir = dirname(__FILE__); $rootdir = substr($thisdir,0,strrpos($thisdir,'/')); require_once("{$rootdir}/config.php"); ?> |
je hebt door dat er geen $ staat voor thisdir?quote:Op dinsdag 25 juni 2013 11:57 schreef KomtTijd... het volgende:
of anders dirname(__FILE__) ?
[ code verwijderd ]
1 2 3 4 5 | <?php if (!defined('SMARTY_DIR')) { define('SMARTY_DIR', dirname(__FILE__) . DS); } ?> |
Even een index toevoegen over een kleine 3M records kost ook langer dan een kwartiertje...quote:Op woensdag 19 juni 2013 23:24 schreef Chandler het volgende:
Ik heb een groot nadeel ontdekt van InnoDB, dat als je een veld toevoegd op een tabel met 5 miljoen records, dat deze er dan zeker 3 uur over doet (en nog steeds bezig is...)....
Tja, maar volgens mij is een index apart, maar een veld toevoegen of wijzigen duurt helaas VEEL LANGER! maar er is een oplossing, export, aanpassen import (zonder tables aan te maken)quote:Op dinsdag 25 juni 2013 17:28 schreef KomtTijd... het volgende:
[..]
Even een index toevoegen over een kleine 3M records kost ook langer dan een kwartiertje...
Heel simpel, maar zo effectief:quote:Op dinsdag 25 juni 2013 14:06 schreef KomtTijd... het volgende:
ik denk dat ik beter de situatie (wat beter) kan omschrijven:
1) ik heb een map met scripts erin op een linux (ubuntu 12.04) server waarin ik ontwikkel (zeg /var/www/
2) ik rename de map via een SFTP-verbinding zodat dit de live versie wordt (is het idee)
3) alle calls naar dirname(__FILE__) blijven de oude mapnaam teruggeven met als gevolg hele ritsen errors van includes die niet meer gevonden kunnen worden.
4) ik rename de map weer naar zijn oorspronkelijke naam, alles gaat weer goed
5) ik maak (wederom via SFTP) een kopie van de map en rename die naar de naam die ik wil hebben, vervolgens verwijder ik de oorspronkelijke map
6) alles gaat goed, de applicatie draait succesvol op zijn nieuwe locatie.
ik heb een clearstatcache() geprobeerd maar dat hielp niet, misschien heeft het wel met het filesystem te maken?
1 2 3 4 5 | idA | idB -----+---- 3 | 15 8 | 11 136 | 3 |
1 | SELECT IF(idA=3, idB, idA) FROM tabel WHERE idA=3 OR idB=3 |
1 2 3 4 5 6 7 | SELECT COUNT(*) FROM tabelA LEFT JOIN tabelB ON tabelA.id=tabelB.id_van_tabelA WHERE tabelA.kolomX=1 AND tabelB.kolomY=1 |
1 2 3 | id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE tabelB ref PRIMARY,kolomY kolomY 1 const 123980 Using where 1 SIMPLE tabelA ref id_van_tabelA id_van_tabelA 5 database.tabelB.id,const 7 Using index |
dit performance technisch gezien de beste oplossing t.o.v. count queries. Je moet wel in de applicatie goed testen dat de tel kolom goed bij blijft, anders geef je valse waardes weer.quote:Op woensdag 26 juni 2013 11:59 schreef zoem het volgende:
Ja, een aparte counter bijhouden ipv COUNT(*) uitvoeren
Hij komt wel redelijk vaak voor in m'n slow query log.quote:Op woensdag 26 juni 2013 13:16 schreef KomtTijd... het volgende:
Is die query zo'n performance hit dan? Volgens mij moet die vrij snel kunnen met de juiste indexes, toch?
1 2 3 | # Query_time: 4.404715 Lock_time: 0.000632 Rows_sent: 1 Rows_examined: 401908 SET timestamp=1372244412; SELECT COUNT(*) AS num_comments FROM `comments` LEFT JOIN `topics` ON `topics`.`id`=`comments`.`topic_id` WHERE `comments`.`type`=1 AND `topics`.`isactive`='Y'; |
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 $setopt_array = array(CURLOPT_TIMEOUT => $cronjobSettings['curl_timeout'], // in seconds CURLOPT_TIMEOUT_MS => $cronjobSettings['curl_timeout'] * 1000, // in ms CURLOPT_CONNECTTIMEOUT => $cronjobSettings['curl_timeout'], // in seconds CURLOPT_CONNECTTIMEOUT_MS => $cronjobSettings['curl_timeout'] * 1000, // in ms CURLOPT_NOBODY => false, // return body CURLOPT_VERBOSE => false, // Minimize logs CURLOPT_AUTOREFERER => true, // ? CURLOPT_FAILONERROR => true, // fail connection on error! CURLOPT_RETURNTRANSFER => true, // return (get) data CURLOPT_SSL_VERIFYHOST => false, // no certificate CURLOPT_SSL_VERIFYPEER => false, // no verify! CURLOPT_POST => false, // no posting CURLOPT_FOLLOWLOCATION => true, // follow redirects CURLOPT_MAXREDIRS => 3, // max number of redirects to follow CURLOPT_DNS_USE_GLOBAL_CACHE => false, CURLOPT_DNS_CACHE_TIMEOUT => 2, /* CURLOPT_LOW_SPEED_LIMIT => 10, // in bytes CURLOPT_LOW_SPEED_TIME => $cronjobSettings['curl_timeout'], // in seconds CURLOPT_NOSIGNAL => 1, // exit if no signal is found */ ); ?> |
Het is de duur waarmee items in de DNS cache van cURL worden bewaard. Jij kiepert nu elke twee seconden je DNS cache leeg, waardoor je URLs heel vaak moet resolven. Als je vaak dezelfde host benaderd, dan is het wel handig om je cache langer gevult te laten.quote:Op woensdag 26 juni 2013 21:16 schreef Chandler het volgende:
Ik draai alles op het zelfde systeem (mijn test omgeving laptop) en heb nergens een DNS adres ingesteld whatsoever...
De timeout staat zo kort omdat deze dan toch al wel gevonden moet zijn? lijkt mij? maar zal hem eens verhogen en kijken of dat een verschil maakt..
Je wilt die DNS CACHE behouden, je zou eventueel als je echt lowlevel wilt gaan doen eerst resolven en dan pas aan CURL geven.quote:Op woensdag 26 juni 2013 20:29 schreef Chandler het volgende:
Ik loop tegen iets in CURL aan, voor vele URLS krijg ik een goede status terug van CURL maar sommige een foutmelding, deze foutmelding is vaak Could not resolve host: (nil); Host not found terwijl als ik met de browser naar deze url ga, bestaat deze wel!? en laad erg snel.
Mijn scriptje draait 25 URLS tegelijk met een timeout van 10 seconden.. Dus nu vraag ik mij af?! waar ligt dit aan? mijn opts zijn als volgt;
[ code verwijderd ]
Heeft iemand een idee waar de fout zou kunnen zitten? of is er bekend mee en weet er een work around/oplossing voor?
Indexes erbij maken op type en isactive. Daar doe je de selecties op.quote:
Ik zou hier in Inner Join gebruiken ipv een Left Join. Je zoekt expliciet naar rijen waar TabelB.KolomY een waarde heeft, dus voegt het gebruik van een left join niets toe.quote:Op woensdag 26 juni 2013 11:30 schreef mstx het volgende:
Ik heb zelf ook een vraagje, deze (simpele) query is soms traag:
[ code verwijderd ]
De explain zegt dit:
[ code verwijderd ]
Kan dat sneller?
Die indexes zitten er al op.quote:Op donderdag 27 juni 2013 00:47 schreef Boze_Appel het volgende:
[..]
Indexes erbij maken op type en isactive. Daar doe je de selecties op.
Maar dan selecteert 'ie toch ook rijen uit tabel B die niet gekoppeld zijn aan een rij uit tabel A?quote:Op donderdag 27 juni 2013 07:16 schreef Light het volgende:
[..]
Ik zou hier in Inner Join gebruiken ipv een Left Join. Je zoekt expliciet naar rijen waar TabelB.KolomY een waarde heeft, dus voegt het gebruik van een left join niets toe.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | SELECT COUNT(*) FROM TabelA = 0.0002 sec SELECT COUNT(*) FROM TabelA LEFT JOIN TabelB................. = 0.25 sec SELECT COUNT(*) FROM TabelA INNER JOIN TabelB................. = 0.4 sec SELECT * FROM TabelA LEFT JOIN TabelB................. = 0.001 sec SELECT * FROM TabelA INNER JOIN TabelB................. = 0.001 sec SELECT * FROM TabelA = 0.0004 sec |
Nee.quote:Op donderdag 27 juni 2013 08:04 schreef mstx het volgende:
Maar dan selecteert 'ie toch ook rijen uit tabel B die niet gekoppeld zijn aan een rij uit tabel A?
Mijn code is altijd bugfreequote:Op donderdag 27 juni 2013 07:00 schreef Chandler het volgende:
Ik voer verder niets specifieks uit met curl, ik gebruik dezelfde opzet als die eerder door Slacker_nl is gegeven (DIG / [PHP/(My)SQL] voor dummies #109)
En het uitlezen van de DNS per URL zou een mogelijkheid zijn, al zou CURL deze url natuurlijk ook gewoon moeten kunnen vinden
juist hahaquote:
1 2 3 4 5 6 7 8 9 10 11 12 13 | SELECT kolommen FROM tabel WHERE id IN ( SELECT id FROM tabel WHERE voorwaarde=1 ) |
Als het nou op een ander veld was het helemaal niet zo gek geweest, voorbeeld is een werknemerstabel waarbij er een veld leidinggevende is welke correspondeerd met het werknemerId.quote:Op donderdag 27 juni 2013 13:39 schreef mstx het volgende:
Ik kwam net weer eens een prachtige query tegen van een oud-collega:
[ code verwijderd ]
(het is dezelfde tabel)
Als je er niet mee gaat rekenen, waarom sla je ze dan op?quote:Op zondag 30 juni 2013 15:29 schreef Pakspul het volgende:
Ik wil temperatuur in een Mysql database opslaan, maar zit even te twijfelen wat ik het beste kan gebruiken. Float, Double, Decimal of Real?
Mijn eerste keuze zou een float zijn, maar ik weet dat als je geld opslaat in een DB dat je Decimal moet gebruiken, aangezien temperatuur aardig op geld lijkt (ook twee cijfers achter de komma [in ieder geval hoe ik het aangeleverd krijg]). Zou ik zeggen Decimal is een veilig keuze, maar ik ga niet rekenen met deze cijfers, dus Float zou volgens mij ook wel kunnen.
Kan iemand de beste keuze kunnen uitleggen en wat standaarden hiervoor zijn?
Niet mee rekenen in de zin van ik ga geen percentages er over heen gooien om daarna totalen te gaan berekenen. Meer datamining, zodat ik later kan kijken of ik ze kan gebruiken om beslissingen op te maken.quote:Op zondag 30 juni 2013 15:42 schreef Boze_Appel het volgende:
[..]
Als je er niet mee gaat rekenen, waarom sla je ze dan op?
Arduino zit er achter, vet dure apparatuur dusquote:Anyway, gewoon een decimal (4,1) gebruiken. Tenzij je dik dure apparatuur hebt is temperatuur opslaan met twee decimalen vrij onzinnig.
Als je twee decimalen aangeleverd krijgt, waarom zou je er dan maar 1 opslaan?quote:Op zondag 30 juni 2013 15:42 schreef Boze_Appel het volgende:
[..]
Als je er niet mee gaat rekenen, waarom sla je ze dan op?
Anyway, gewoon een decimal (4,1) gebruiken. Tenzij je dik dure apparatuur hebt is temperatuur opslaan met twee decimalen vrij onzinnig.
Kan opzich natuurlijk wel, maar het is een beetje als een rondje hardlopen op de cm nauwkeurig opslaan. Het gaat om gemeten temperatuur door een apparaat van nog geen tientje. Ik denk dat je al blij moet zijn als dat ding hele graden nauwkeurig doet, laat staan honderdste graden.quote:Op zondag 30 juni 2013 23:33 schreef Light het volgende:
[..]
Als je twee decimalen aangeleverd krijgt, waarom zou je er dan maar 1 opslaan?
quote:Op zondag 30 juni 2013 23:38 schreef Boze_Appel het volgende:
[..]
Kan opzich natuurlijk wel, maar het is een beetje als een rondje hardlopen op de cm nauwkeurig opslaan. Het gaat om gemeten temperatuur door een apparaat van nog geen tientje. Ik denk dat je al blij moet zijn als dat ding hele graden nauwkeurig doet, laat staan honderdste graden.
Ik ben van mening dat je data op basis van relevantie en toepasbaarheid op moet slaan en niet data moet bewaren 'omdat het kan'.
Dat ligt er m.i. ook aan wat je meet. Kamertemperatuur in honderdste graden is niet echt zinnig maar bij een experiment kan die nauwkeurigheid wel nuttig zijn.quote:Op zondag 30 juni 2013 23:38 schreef Boze_Appel het volgende:
[..]
Kan opzich natuurlijk wel, maar het is een beetje als een rondje hardlopen op de cm nauwkeurig opslaan. Het gaat om gemeten temperatuur door een apparaat van nog geen tientje. Ik denk dat je al blij moet zijn als dat ding hele graden nauwkeurig doet, laat staan honderdste graden.
Ik ben van mening dat je data op basis van relevantie en toepasbaarheid op moet slaan en niet data moet bewaren 'omdat het kan'.
Eens, maar als er al aangegeven wordt er niet mee te willen rekenen kan je 'experiment' meteen wel uitsluiten.quote:Op maandag 1 juli 2013 00:09 schreef Light het volgende:
Dat ligt er m.i. ook aan wat je meet. Kamertemperatuur in honderdste graden is niet echt zinnig maar bij een experiment kan die nauwkeurigheid wel nuttig zijn.
Lees je hem tegelijkertijd van de harde schijf af? Dat gaat namelijk altijd langzaam. Eerst in het geheugen stoppen en daarna pas checken met regex.quote:Op woensdag 3 juli 2013 10:33 schreef Chandler het volgende:
God wat is het toch vervelend om regexjes op grote bestanden af te sturen
Heb een 2MB bestand en wilde deze eerst in 1x door preg_match_all halen, nou daar had PHP niet echt zin in en koste ruim een UUR!! lol, nu heb ik een benchmark gedaan om het bestand in stukken te verdelen en dat komt de snelheid ten goede..
stukken van 25000 (etc) + 500 extra (straks mis ik nog wat)
25500 bytes per keer - 709 seconden
10500 bytes per keer - 239 seconden
5500 bytes per keer - 130 seconden
3000 bytes per keer - 54 seconden
1500 bytes per keer - 22 seconden
raar, kan iemand mij uitleggen waarom dit zo langzaam gaat?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php $t = time(); $parseCls = new parse(); $size = 1000; echo '<pre>'; if (strlen($document) > $size) { $loop = ceil(strlen($document) / $size); $start = 0; for ($x = 0; $x < $loop; $x++) { echo date("Y-m-d H:i:s") . ' - ' . ($x * $size) . ' - ' . ($size + 500) . ' of ' . strlen($document) . '<br />'; $start = substr($document, $x * $size, $size + 500); $parseCls->parse($start); } } else { print_r($parseCls->parse($document)); } echo '</pre>'; ?> |
Some people, when confronted with a problem, thinkquote:Op woensdag 3 juli 2013 10:33 schreef Chandler het volgende:
God wat is het toch vervelend om regexjes op grote bestanden af te sturen
Heb een 2MB bestand en wilde deze eerst in 1x door preg_match_all halen, nou daar had PHP niet echt zin in en koste ruim een UUR!! lol, nu heb ik een benchmark gedaan om het bestand in stukken te verdelen en dat komt de snelheid ten goede..
stukken van 25000 (etc) + 500 extra (straks mis ik nog wat)
25500 bytes per keer - 709 seconden
10500 bytes per keer - 239 seconden
5500 bytes per keer - 130 seconden
3000 bytes per keer - 54 seconden
1500 bytes per keer - 22 seconden
raar, kan iemand mij uitleggen waarom dit zo langzaam gaat?
Gewoon telkens een x-aantal blokken lezen, dan parsen, dan weer verder lezen, dan parsen, etc etc. http://php.net/manual/en/function.fread.php Welk even flocken, anders gaan er andere processen naar willen schrijven en gaat het (mogelijk) fout.quote:Op woensdag 3 juli 2013 10:37 schreef Juicyhil het volgende:
[..]
Lees je hem tegelijkertijd van de harde schijf af? Dat gaat namelijk altijd langzaam. Eerst in het geheugen stoppen en daarna pas checken met regex.
Ja en nee. Dat hangt compleet van de gebruikte regex af. Een inefficiente regex kan (onnodig) lang duren, zeker als het om veel karakters gaat (oa ivm backtracking). Wat voor regex pattern gebruik je?quote:Op woensdag 3 juli 2013 10:33 schreef Chandler het volgende:
raar, kan iemand mij uitleggen waarom dit zo langzaam gaat?
Alles achter de @ kan je hiertegen aangooien:quote:Op woensdag 3 juli 2013 12:00 schreef Chandler het volgende:
"/[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}/i"
Om emails te parsen! ik krijg links met documenten aangeleverd die ik moet omzetten naar een database tabel...
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 | { # The following is stolen from: # http://cpansearch.perl.org/src/CREIN/Regexp-Common-dns-0.00_01/lib/Regexp/Common/dns.pm # So we don't need to install the dependency which is not in the Debian repository # sub _domain { my %flags = @_; my $sep = '\.'; my $letter = '[a-zA-Z]'; my $let_dig = '[a-zA-Z0-9]'; my $let_dig_hyp = '[-a-zA-Z0-9]'; my %labels = ( 1035 => "(?:$letter(?:$let_dig|$let_dig_hyp\{1,61}$let_dig)?)", 1123 => "(?:(?:$let_dig|$let_dig$let_dig_hyp*$let_dig)$sep)*(?:$let_dig|$let_dig$let_dig_hyp*$let_dig)", 2181 => '[^.]{1,63}', hybrid => '[a-zA-Z0-9_-]{1,63}' ); $flags{'-rfc'} ||= 1035; my $label = $labels{$flags{'-rfc'}} || die("Unknown DNS RFC: $flags{'-rfc'}"); if ($flags{'-rfc'} ne 2181 && exists $flags{'-wildcard'} && not defined $flags{'-wildcard'}) { $label = "(?:\\*|$label)"; } my $quant = '*'; if ($flags{'-minlabels'}) { $quant = '{' . ($flags{'-minlabels'} - 1) . ',}'; } return qr/^(?:$label$sep)$quant$label$sep?$/; } my $fqdn_regexp = _domain(-rfc => 1123, -minlabels => 2); use constant VALID_FQDN => sub { my $fqdn = shift; if ($fqdn && $fqdn =~ m/$fqdn_regexp/) { $fqdn =~ s/\.$//; return 0 if (length($fqdn) > 255); return 0 if (grep { length($_) > 63 } split(/\./, $fqdn)); return 1; } return 0; }; } |
quote:Op woensdag 3 juli 2013 13:54 schreef zoem het volgende:
En voor je het weet heb je zoiets: http://www.perlmonks.org/?node_id=393809
Ik zou het lekker simpel houden. Als het even kan zou ik filter_var() (php >= 5.2.0) erbij betrekken voor de validatie.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php public function compareValues($type,$compare1,$compare2){ $count1 =0; $count2 =0; switch ($type) { case 'Doctype': $var = '\$v->data->doctype'; break; default: break; } foreach($this->selectedData as $k=>$v){ $val = 'empty'; eval('$val = '.$var.';'); if($val && $val === $compare1)++$count1; if($val && $val === $compare2)++$count2; } return $count1.$count2; } ?> |
1 2 3 4 5 6 7 | SELECT `spider`.`id` AS spiderID, `spider`.`url` AS spiderURL, `spider`.`failed` AS spiderFailed FROM `spider` WHERE `spider`.`project_id` =7 AND `spider`.`processed` =0 LIMIT 1 |
1 2 3 4 5 6 7 8 9 10 11 | CREATE TABLE IF NOT EXISTS `spider` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `project_id` bigint(20) unsigned NOT NULL, `url` varchar(255) NOT NULL, `processed` tinyint(1) NOT NULL DEFAULT '0', `failed` tinyint(4) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `project_id_2` (`project_id`,`url`), KEY `failed` (`failed`), KEY `project_id` (`project_id`,`processed`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=103771614 ; |
Natuurlijk niet het antwoord wat je zoekt. Maar je kan het via een omweg ook gewoon orderen binnen php lijkt me.quote:Op donderdag 11 juli 2013 23:42 schreef Chandler het volgende:
Ik heb een query die raar doet wanneer ik gebruik wil maken van ORDER BY.
Zonder order by is deze query 0.0043 seconden, met ORDER BY `failed` kost deze query ruim 23 seconden!?
[ code verwijderd ]
Als ik een URL laad wil ik het liefst URLS laden die ik nog niet heb gehad (processed = 0) maar liefst ook de URLS die nog niet gelezen en mislukt zijn. Met huidige query lees ik deze 3x achter elkaar alvorens processed op 1 te zetten, alleen nu wilde ik met ORDER BY 'failed' ASC de URLS met een waarde die groter is dan 0 achter aan zetten en de URLS met waarde van 0 natuurlijk vooraan... oftewel eerst uitlezen.
Tabel
[ code verwijderd ]
Iemand een idee? oh ik heb maar 17m regeltjes....
Dat gaat je geheugen kostenquote:Op donderdag 11 juli 2013 23:49 schreef Purplesparks het volgende:
[..]
Natuurlijk niet het antwoord wat je zoekt. Maar je kan het via een omweg ook gewoon orderen binnen php lijkt me.
True dat, maar een potentiële mogelijkheid als chandler niet de oplossing weet te vinden van de lange order tijd.quote:
Neem anders eens failed op in je where-clause. Dan hoeft hij in wat minder rijen te sorteren.quote:Op donderdag 11 juli 2013 23:42 schreef Chandler het volgende:
Ik heb een query die raar doet wanneer ik gebruik wil maken van ORDER BY.
Zonder order by is deze query 0.0043 seconden, met ORDER BY `failed` kost deze query ruim 23 seconden!?
[ code verwijderd ]
Als ik een URL laad wil ik het liefst URLS laden die ik nog niet heb gehad (processed = 0) maar liefst ook de URLS die nog niet gelezen en mislukt zijn. Met huidige query lees ik deze 3x achter elkaar alvorens processed op 1 te zetten, alleen nu wilde ik met ORDER BY 'failed' ASC de URLS met een waarde die groter is dan 0 achter aan zetten en de URLS met waarde van 0 natuurlijk vooraan... oftewel eerst uitlezen.
Tabel
[ code verwijderd ]
Iemand een idee? oh ik heb maar 17m regeltjes....
Valt erg mee hoor als je het een beetje slim aanpakt, aangenomen dat er gewerkt wordt met een beperkte subset van de 17M rows (processed=0). Maar goed, de query optimaliseren heeft natuurlijk de voorkeur.quote:
Gaat het ook zo traag wanneer je order by gebruikt in andere tabellen of alleen in deze?quote:Op vrijdag 12 juli 2013 11:35 schreef Chandler het volgende:
Ja, en het rare is dat er geen filesort gebruikt wordt, dus het orderen gebeurd toch echt wel in het geheugen (als ik check met explain). Dacht zelf ook dat ik de indexes goed had en dat blijkt wel, maar het vervelende blijft dat ik per query met order by een kleine 1000x zolang bezig ben...
Maar hebben jullie tips? oh en de beperkte set van 17m rows zijn in dit geval zo'n 3,5m rows
Geen idee, rest van de tabellen zijn niet zo groot dus daar zal het allemaal wel meevallen... en daar zit het tijdsverlies in deze niet in....quote:Op vrijdag 12 juli 2013 11:38 schreef Purplesparks het volgende:
[..]
Gaat het ook zo traag wanneer je order by gebruikt in andere tabellen of alleen in deze?
Okee, wilde alleen uitsluiten dat het om de 1 of andere vage reden niet aan je sql prog zelf lag.quote:Op vrijdag 12 juli 2013 11:40 schreef Chandler het volgende:
[..]
Geen idee, rest van de tabellen zijn niet zo groot dus daar zal het allemaal wel meevallen... en daar zit het tijdsverlies in deze niet in....
Mijn stiefpa had een programma voor een bedrijf ontwikkeld, bij externe resultaten van bepaalde queries opvragen duurde het soms ook wel tot een minuut lang. Terwijl als hij het daar ter plekke testte een seconde of nog minder. Weet niet exact waar het aanlag maar hij heeft het opgelost. Hij maakte trouwens gebruik van delphi pascal in combinatie met een sql variant.quote:Op vrijdag 12 juli 2013 13:11 schreef Chandler het volgende:
Zowel lokaal als online test ik dit, aangezien mijn lokale test omgeving maar uit zo'n 5m regels bestaat... maar goed, het is een laptop en de online server heeft nogal wat meer power en daar is het zelfs sloom
Query test ik via phpmyadmin, domweg omdat het gemakkelijk is!
En wat doet een index op je WHERE clause én ORDER BY field(s)?quote:Op vrijdag 12 juli 2013 11:35 schreef Chandler het volgende:
Ja, en het rare is dat er geen filesort gebruikt wordt, dus het orderen gebeurd toch echt wel in het geheugen (als ik check met explain). Dacht zelf ook dat ik de indexes goed had en dat blijkt wel, maar het vervelende blijft dat ik per query met order by een kleine 1000x zolang bezig ben...
Maar hebben jullie tips? oh en de beperkte set van 17m rows zijn in dit geval zo'n 0,5m rows
@zoom:
Zonder order by
1 SIMPLE spider ref project_id_2,project_id project_id 9 const,const 536370
Met order by
1 SIMPLE spider index project_id_2,project_id failed 1 NULL 39 Using where
Dat zou in 1 go moeten kunnen.quote:Op donderdag 18 juli 2013 19:57 schreef Darkomen het volgende:
Ik probeer iedereen met een andere ip naar een maintenance pagina te sturen.
Alle subdomeinen, directories en files moeten geredirect worden, behalve de directory /maintenance/, de inhoud ervan, en de file maintenance.php
Een van de 2 niet redirecten lukt wel, maar beiden niet
Wat doe ik fout?
RewriteCond %{REMOTE_ADDR} !=123.456.789.0
RewriteCond %{REQUEST_URI} !=/maintenance.php
RewriteCond %{REQUEST_URI} !^/maintenance($|/)
RewriteRule .* http://www.domain.com/maintenance.php [L]
1 2 3 4 | RewriteEngine on LogLevel info rewrite:trace8 # Dit wil je na testen weer op sane values zetten, dus geen rewrite:info oid. of helemaal weg. RewriteCond %{REQUEST_URI} !=/maintenance(.php)?/? # matched /maintenance.php /maintenance optioneel met / aan het einde RewriteRule .* http://www.domain.com/maintenance.php [L] # volgens mij kanje ook [RL] gebruiken daar. |
Je hebt geloof ik zo'n message-event. Daarop luisteren of er een berichtje binnenkomt. Deze kun je in die daemon vervolgens sturen naar alle clientsquote:Op woensdag 24 juli 2013 15:42 schreef wobbel het volgende:
Iemand ervaring met PHP en Websockets?
Ik gebruik nu http://www.binarytides.com/websockets-php-tutorial/ dit en dat werkt prima voor testen, maar ik wil juist op random momenten data erheen sturen
Hoe kan ik naar alle users die verbinding hebben een berichtje sturen met "hoi leuk dat je een websocket verbinding hebt"? Nu is alles een reactie op een actie van de user/browser.
Maar daar vind ik ook niks in de documentatie hoe ik dat zou moeten doen.quote:Op woensdag 24 juli 2013 15:56 schreef Juicyhil het volgende:
Oh wacht even, dat is een andere. Ik gebruikte deze: http://code.google.com/p/phpwebsocket/
Die had ik ook al gegoogled eens kijken hoe ze dat gefixsnorred hebbenquote:Op woensdag 24 juli 2013 16:01 schreef Juicyhil het volgende:
http://www.flynsarmy.com/(...)hat-application-2-0/
1 2 3 4 5 6 7 8 9 10 11 12 13 | ------------------------------------------------------------------------------- Private IP :Port #Pseudo Port Peer IP :Port Interface ------------------------------------------------------------------------------- 10.0.0.17 56086 57174 31.13.72.33 443 WAN2 10.0.0.17 56089 57177 74.125.136.189 443 WAN2 10.0.0.17 56092 57180 54.230.8.197 80 WAN2 10.0.0.17 56093 57181 54.230.8.197 80 WAN2 10.0.0.17 56094 57182 54.230.8.197 80 WAN2 10.0.0.17 56095 57183 50.18.122.32 80 WAN2 10.0.0.17 54041 55129 94.245.121.253 3544 WAN2 10.0.0.5 5761 38849 89.184.172.50 5080 WAN1 10.0.0.17 55688 56776 108.160.163.42 80 WAN2 10.0.0.17 55722 56810 74.125.136.18 443 WAN2 |
1 2 3 4 5 6 7 8 9 | <?php $regels = explode("\n", $tekst); $data = array(); foreach ( $regels as $regel ) { $data[] = array_map("trim", explode(" ", $regel)); } ?> |
Exploden op een spatie wordt hem niet, aangezien alle whitespaces uit spaties bestaan (erg lastig, je krijgt dan een array met 100 dingen haha)quote:
1 2 3 | <?php $bier = preg_split('/\s+/', " 10.0.0.17 55722 56810 74.125.136.18 443 WAN2"); ?> |
Dan vervang je eerst in een loopje alle dubbele spaties door een enkele zodat je uiteindelijk maar 1 spatie overhoudt.quote:Op vrijdag 9 augustus 2013 09:46 schreef wobbel het volgende:
Exploden op een spatie wordt hem niet, aangezien alle whitespaces uit spaties bestaan (erg lastig, je krijgt dan een array met 100 dingen haha)
1 2 3 4 5 6 7 8 9 10 | <?php $regels = explode("\n", preg_replace("/[[:blank:]]+/"," ",$tekst)); $data = array(); foreach ( $regels as $regelnummer => $regel ) { if ( $regelnummer>2 ) $data[] = array_map("trim", explode(" ", trim($regel))); } ?> |
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 | Array ( [0] => Array ( [0] => 10.0.0.17 [1] => 56086 [2] => 57174 [3] => 31.13.72.33 [4] => 443 [5] => WAN2 ) [1] => Array ( [0] => 10.0.0.17 [1] => 56089 [2] => 57177 [3] => 74.125.136.189 [4] => 443 [5] => WAN2 ) [2] => Array ( [0] => 10.0.0.17 [1] => 56092 [2] => 57180 [3] => 54.230.8.197 [4] => 80 [5] => WAN2 ) [3] => Array ( [0] => 10.0.0.17 [1] => 56093 [2] => 57181 [3] => 54.230.8.197 [4] => 80 [5] => WAN2 ) [4] => Array ( [0] => 10.0.0.17 [1] => 56094 [2] => 57182 [3] => 54.230.8.197 [4] => 80 [5] => WAN2 ) [5] => Array ( [0] => 10.0.0.17 [1] => 56095 [2] => 57183 [3] => 50.18.122.32 [4] => 80 [5] => WAN2 ) [6] => Array ( [0] => 10.0.0.17 [1] => 54041 [2] => 55129 [3] => 94.245.121.253 [4] => 3544 [5] => WAN2 ) [7] => Array ( [0] => 10.0.0.5 [1] => 5761 [2] => 38849 [3] => 89.184.172.50 [4] => 5080 [5] => WAN1 ) [8] => Array ( [0] => 10.0.0.17 [1] => 55688 [2] => 56776 [3] => 108.160.163.42 [4] => 80 [5] => WAN2 ) [9] => Array ( [0] => 10.0.0.17 [1] => 55722 [2] => 56810 [3] => 74.125.136.18 [4] => 443 [5] => WAN2 ) ) |
Je zou daarna door de array kunnen gaan en alles wat geen spatie is gebruiken toch?quote:Op vrijdag 9 augustus 2013 09:46 schreef wobbel het volgende:
[..]
Exploden op een spatie wordt hem niet, aangezien alle whitespaces uit spaties bestaan (erg lastig, je krijgt dan een array met 100 dingen haha)
1 2 3 | <?php preg_replace('/(\s)+/', ' ', $string); ?> |
Ik heb het op deze manier gedaan:quote:Op vrijdag 9 augustus 2013 09:50 schreef mstx het volgende:
[ code verwijderd ]
Resultaat:
[ 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 | <?php $string = "------------------------------------------------------------------------------- Private IP :Port #Pseudo Port Peer IP :Port Interface ------------------------------------------------------------------------------- 10.0.0.17 56086 57174 31.13.72.33 443 WAN2 10.0.0.17 56089 57177 74.125.136.189 443 WAN2 10.0.0.17 56092 57180 54.230.8.197 80 WAN2 10.0.0.17 56093 57181 54.230.8.197 80 WAN2 10.0.0.17 56094 57182 54.230.8.197 80 WAN2 10.0.0.17 56095 57183 50.18.122.32 80 WAN2 10.0.0.17 54041 55129 94.245.121.253 3544 WAN2 10.0.0.5 5761 38849 89.184.172.50 5080 WAN1 10.0.0.17 55688 56776 108.160.163.42 80 WAN2 10.0.0.17 55722 56810 74.125.136.18 443 WAN2"; $count = 0; foreach ( preg_split("/((\r?\n)|(\r\n?))/", $string ) as $regel ) { if ( $count > 2 ) { $nat_array[] = array_filter ( preg_split('/\s+/', $regel ) ); } $count++; } echo "<pre>"; print_r ( $nat_array ); echo "</pre>"; ?> |
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 | Array ( [0] => Array ( [1] => 10.0.0.17 [2] => 56086 [3] => 57174 [4] => 31.13.72.33 [5] => 443 [6] => WAN2 ) [1] => Array ( [1] => 10.0.0.17 [2] => 56089 [3] => 57177 [4] => 74.125.136.189 [5] => 443 [6] => WAN2 ) [2] => Array ( [1] => 10.0.0.17 [2] => 56092 [3] => 57180 [4] => 54.230.8.197 [5] => 80 [6] => WAN2 ) [3] => Array ( [1] => 10.0.0.17 [2] => 56093 [3] => 57181 [4] => 54.230.8.197 [5] => 80 [6] => WAN2 ) [4] => Array ( [1] => 10.0.0.17 [2] => 56094 [3] => 57182 [4] => 54.230.8.197 [5] => 80 [6] => WAN2 ) [5] => Array ( [1] => 10.0.0.17 [2] => 56095 [3] => 57183 [4] => 50.18.122.32 [5] => 80 [6] => WAN2 ) [6] => Array ( [1] => 10.0.0.17 [2] => 54041 [3] => 55129 [4] => 94.245.121.253 [5] => 3544 [6] => WAN2 ) [7] => Array ( [1] => 10.0.0.5 [2] => 5761 [3] => 38849 [4] => 89.184.172.50 [5] => 5080 [6] => WAN1 ) [8] => Array ( [1] => 10.0.0.17 [2] => 55688 [3] => 56776 [4] => 108.160.163.42 [5] => 80 [6] => WAN2 ) [9] => Array ( [1] => 10.0.0.17 [2] => 55722 [3] => 56810 [4] => 74.125.136.18 [5] => 443 [6] => WAN2 ) ) |
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 | <?php $string = "------------------------------------------------------------------------------- Private IP :Port #Pseudo Port Peer IP :Port Interface ------------------------------------------------------------------------------- 10.0.0.17 56086 57174 31.13.72.33 443 WAN2 10.0.0.17 56089 57177 74.125.136.189 443 WAN2 10.0.0.17 56092 57180 54.230.8.197 80 WAN2 10.0.0.17 56093 57181 54.230.8.197 80 WAN2 10.0.0.17 56094 57182 54.230.8.197 80 WAN2 10.0.0.17 56095 56810 50.18.122.32 80 WAN2 10.0.0.17 54041 55129 94.245.121.253 3544 WAN2 10.0.0.5 5761 38849 89.184.172.50 5080 WAN1 10.0.0.17 55688 56776 108.160.163.42 80 WAN2 10.0.0.17 55722 56810 74.125.136.18 443 WAN2"; $count = 0; $nat_array = array ( ); $pseudo_array = array ( ); foreach ( preg_split("/((\r?\n)|(\r\n?))/", $string ) as $regel ) { if ( $count > 2 ) { $nat_array[$count] = array_filter ( preg_split('/\s+/', $regel, 6, PREG_SPLIT_NO_EMPTY ) ); $pseudo_array[] = $nat_array[$count][2]; } $count++; } $pseudo_count = array_count_values ( $pseudo_array ); foreach ( $nat_array as $key => $value ) { echo "Key: " . $key . "<br />"; echo "IP: " . $value[0] . "<br />"; echo "Pseudo poort: " . $value[2] . "<br />"; if ( $pseudo_count[$value[2]] > 1 ) { echo "Dubbel: Jep!<br /><br />"; } else { echo "Dubbel: nee<br /><br />"; } }?> |
Al eens naar Ratchet gekeken? http://socketo.me/ En idd ook 0MQ zoals ursel al zegt.quote:Op woensdag 24 juli 2013 15:42 schreef wobbel het volgende:
Iemand ervaring met PHP en Websockets?
Ik gebruik nu http://www.binarytides.com/websockets-php-tutorial/ dit en dat werkt prima voor testen, maar ik wil juist op random momenten data erheen sturen
Hoe kan ik naar alle users die verbinding hebben een berichtje sturen met "hoi leuk dat je een websocket verbinding hebt"? Nu is alles een reactie op een actie van de user/browser.
Mijn exceptions zijn altijd iets in de zin van 'Er is iets misgegaan'quote:
Nah, zoekt zo moeilijkquote:Op woensdag 14 augustus 2013 16:31 schreef Skunk-m het volgende:
Kun je artikelen en forum posts beter in bestanden zetten of in een mysql tabel wat betreft prestaties..?
Want op een site waar ik zit wou iemand een nieuwe versie maken zeg maar en die ging alle artikelen en forum posts in bestandjes en mappen zetten met beperkte info in mysql en ik vroeg me af of dat wel nut ofzo had..
Databases zijn daar júist voor bedoeld. Van enkele miljoenen records ligt een rdbms absoluut niet wakker. Databases op zichzelf zijn ook gewoon bestanden, waarbij de opslagwijze afhangt van de gekozen storage engine. Dus in feite probeert hij zijn eigen databasesysteem te ontwerpen. Leuk als hobbyprojectje ter leer ende vermaeck, maar totaal niet aan te raden. Je gaat geheid tegen problemen oplopen naarmate het complexer/drukker wordt tot op het punt dat het systeem niet meer houdbaar isquote:Op woensdag 14 augustus 2013 16:31 schreef Skunk-m het volgende:
Kun je artikelen en forum posts beter in bestanden zetten of in een mysql tabel wat betreft prestaties..?
Want op een site waar ik zit wou iemand een nieuwe versie maken zeg maar en die ging alle artikelen en forum posts in bestandjes en mappen zetten met beperkte info in mysql en ik vroeg me af of dat wel nut ofzo had..
Altijd leuk, wazige foutmeldingen of boos commentaar in code.quote:
Ok, als ik dat soort rare fratsen zie denk ik altijd die zullen wel iets weten waar ik niks vanaf weet en dat zal kwa prestatie waarschijnlijk schelen ofzo...quote:Op woensdag 14 augustus 2013 19:45 schreef zoem het volgende:
[..]
Databases zijn daar júist voor bedoeld. Van enkele miljoenen records ligt een rdbms absoluut niet wakker. Databases op zichzelf zijn ook gewoon bestanden, waarbij de opslagwijze afhangt van de gekozen storage engine. Dus in feite probeert hij zijn eigen databasesysteem te ontwerpen. Leuk als hobbyprojectje ter leer ende vermaeck, maar totaal niet aan te raden. Je gaat geheid tegen problemen oplopen naarmate het complexer/drukker wordt tot op het punt dat het systeem niet meer houdbaar is
Wat ik me wel voor kan stellen is dat items als afbeeldingen apart op de schijf worden geplaatst.
Ja, hoe wou het je anders doen? Dat volgt uit het normalisatieproces. Reacties horen opgeslagen te worden in een reactietabel, die dan bijvoorbeeld weer gelinkt kan zijn aan een topictabel.quote:Op donderdag 15 augustus 2013 01:03 schreef Skunk-m het volgende:
Maar het is wel beter voor prestaties om de tekst inhoud in een aparte tabel te zetten bij forum of niet..?
Ik bedoel dat wat ze daar de body noemen in een aparte tabel komt..quote:Op donderdag 15 augustus 2013 18:01 schreef zoem het volgende:
[..]
Ja, hoe wou het je anders doen? Dat volgt uit het normalisatieproces. Reacties horen opgeslagen te worden in een reactietabel, die dan bijvoorbeeld weer gelinkt kan zijn aan een topictabel.
Zie StackOverflow: How to design a database design for forums?
Ok Ming de deur uit, image2mpeg gebruikt, werk goed!quote:Op vrijdag 16 augustus 2013 14:28 schreef Darkomen het volgende:
Iemand ervaring met Php Ming
Ik maak hier namelijk een flash swf mee van een set foto's, en dat werkt allemaal prima, ziet er perfect uit in de browser.
Maar als je het upload naar youtube dan duurt het filmpje maar 1 seconde.
Het lijkt erop dat de framerate en en aantal frames niet juist doorkomen, terwijl ik die wel zet!
Als ik namelijk dmv ffmpeg probeer te converten naar bijvoorbeeld mp4 dan zie ik dat de swf geen frame en bit rate heeft.
Heb het script even niet hier, maandag kan ik die wel even posten.
1 2 3 4 5 6 7 8 | +----------+--------+------+-------+------+------+ | MasterId | Id1 | Id2 | Id3 | Id4 | ... | +----------+--------+------+-------+------+------+ | 1 | 1854 | 512 | 4561 | 813 | ... | | 2 | 6484 | 468 | 1681 | 6818 | ... | | 5 | 7871 | 1684 | 46841 | 6581 | ... | | ... | ... | ... | ... | ... | ... | +----------+--------+------+-------+------+------+ |
1 2 3 4 5 6 7 8 | +------+--+-------+------------+-----+-----+ | Id | | Name | Date | ... | ... | +------+--+-------+------------+-----+-----+ | 512 | | Jan | 09-08-1991 | ... | ... | | 6818 | | Piet | 02-07-1980 | ... | ... | | 6581 | | Klaas | 12-04-1975 | ... | .. | | ... | | ... | ... | ... | ... | +------+--+-------+------------+-----+-----+ |
id1, id2 en id3 zijn obfuscated namen of...? Kunnen die id's in al die kolommen terug te vinden zijn?quote:Op woensdag 4 september 2013 20:46 schreef pascal08 het volgende:
Ik heb 2 tables: 1 table met een overzicht van Id's en 1 table met info per Id. Wat is de meest efficiënte manier om alle info per Id per MasterId uit de tables te halen?
Table 1:
[ code verwijderd ]
Table 2:
[ code verwijderd ]
Ik wil dus alle info voor elke Id per MasterId. Voor MasterId 1 wil ik graag de naam, datum en de rest van de info hebben voor de Id's 1854, 512, 4561 en 813. Dit is een voorbeeld, in m'n echte tabel heb ik duizenden MasterId's en per Id +/- 50 kolommen met info. Ik weet hoe ik dmv PHP een foreach loop kan maken en zo een aparte query voor elke Id per MasterId te laten uitvoeren, maar dat lijkt me hoogst inefficiënt. Wat zouden jullie doen?
Uhmm... die Id's in table 1 zijn terug te vinden in de Id-kolom in table 2, ja... (als je dat bedoelt). Een Id in table 1 kan ook leeg zijn. In de echte tabel zijn er 18 (of minder) Id's per MasterId. Er zijn dus 18 kolommen voor de Id's waarvan sommige NULL kunnen bevatten.quote:Op woensdag 4 september 2013 20:53 schreef slacker_nl het volgende:
[..]
id1, id2 en id3 zijn obfuscated namen of...? Kunnen die id's in al die kolommen terug te vinden zijn?
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.
[ Bericht 8% gewijzigd door pascal08 op 04-09-2013 21:03:51 ]
quote:Op woensdag 4 september 2013 20:58 schreef pascal08 het volgende:
[..]
Uhmm... die Id's in table 1 zijn terug te vinden in de Id-kolom in table 2, ja... (als je dat bedoelt). Een Id in table 1 kan ook leeg zijn. In de echte tabel zijn er 18 (of minder) Id's per MasterId. Er zijn dus 18 kolommen voor de Id's waarvan sommige NULL kunnen bevatten.Welke aap heeft dat bedacht?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.
* mstx mompelt iets over een koppeltabelOp donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
Geef eens een voorbeeldje.quote:Op woensdag 4 september 2013 21:08 schreef mstx het volgende:
[..]
Welke aap heeft dat bedacht?
* mstx mompelt iets over een koppeltabel
Extra tabel met 2 kolommen: squad_id | player_idquote:
Ik snap 'm. Dat is dus efficiënter dan dit volgens jou? Ik kan me in ieder geval voorstellen dat de queries een stuk makkelijker worden.quote:Op woensdag 4 september 2013 21:11 schreef mstx het volgende:
[..]
Extra tabel met 2 kolommen: squad_id | player_id
Voor elke player die aan een squad gekoppeld is 1 rij.
Ja, want:quote:Op woensdag 4 september 2013 21:14 schreef pascal08 het volgende:
[..]
Ik snap 'm. Dat is dus efficiënter dan dit volgens jou?
Bedankt, dit is echt een nuttige post. Ik google zelf heel graag, maar soms is het lastig om de juiste info te vinden als je niet weet waarvoor je moet zoeken. Thanks dus.quote:Op woensdag 4 september 2013 21:18 schreef mstx het volgende:
[..]
Ja, want:
- Oneindig aantal players zonder de tabel aan te hoeven passen
- Geen onnodig lege kolommen
- Makkelijk kunnen aangeven dat een relatie uniek moet zijn
- Met 1 simpele query alle players van een squad kunnen ophalen
Leesvoer: http://nl.wikipedia.org/wiki/Databasenormalisatie http://www.tekstenuitleg.(...)en/veel-op-veel.html
Ik heb m'n database veranderd. Nu heb ik 1 database met teams en 1 database met spelers. Ik heb alleen geen flauw idee hoe ik nu alleen teams selecteer met spelers met een bepaalde eigenschap.quote:Op woensdag 4 september 2013 21:18 schreef mstx het volgende:
[..]
Ja, want:
- Oneindig aantal players zonder de tabel aan te hoeven passen
- Geen onnodig lege kolommen
- Makkelijk kunnen aangeven dat een relatie uniek moet zijn
- Met 1 simpele query alle players van een squad kunnen ophalen
Leesvoer: http://nl.wikipedia.org/wiki/Databasenormalisatie http://www.tekstenuitleg.(...)en/veel-op-veel.html
1 2 3 4 5 6 7 | +----------+---------------+ | Squad_ID | Name | +----------+---------------+ | 1 | Goed team | | 2 | Slecht tiem | | 3 | Matig teampje | +----------+---------------+ |
1 2 3 4 5 6 7 8 9 10 11 12 13 | +----------+-----------+---------------+--+ | Squad_ID | Player_ID | Player_rating | | +----------+-----------+---------------+--+ | 1 | 5 | 50 | | | 1 | 8 | 40 | | | 1 | 24 | 60 | | | 2 | 548 | 70 | | | 2 | 687 | 70 | | | 3 | 5 | 80 | | | 3 | 70 | 40 | | | 3 | 940 | 40 | | | 3 | 486 | 50 | | +----------+-----------+---------------+--+ |
1 2 3 | SELECT * FROM squads s JOIN players_in_squads p ON s.squad_id = p.squad_id |
quote:Op zaterdag 7 september 2013 11:02 schreef pascal08 het volgende:
[..]
Ik heb m'n database veranderd. Nu heb ik 1 database met teams en 1 database met spelers. Ik heb alleen geen flauw idee hoe ik nu alleen teams selecteer met spelers met een bepaalde eigenschap.
Voorbeeldje:
[ code verwijderd ]
[ code verwijderd ]
M'n query wordt dan:
[ code verwijderd ]
...toch?
Hoe moet ik nu teams selecteren met spelers die allemaal een rating boven de 60 hebben?
1 2 3 4 | SELECT * FROM squads s JOIN players_in_squads p ON s.squad_id = p.squad_id WHERE p.Player_rating > 60 |
quote:Op zaterdag 7 september 2013 11:45 schreef boem-dikkie het volgende:
Gewoon met een WHERE achter je query?
1 | WHERE p.player_rating > 60 |
quote:Op zaterdag 7 september 2013 11:48 schreef pascal08 het volgende:
[..]
[ code verwijderd ]
Dat levert alle teams met tenminste 1 speler met een rating boven de 60.
Nu wil ik alleen teams waarvan alle spelers een rating boven de 60 hebben. Ik ben zo slecht met SQL.
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.EDIT: Ik heb de oplossing gevonden!
http://sqlfiddle.com/#!2/481b7/17
[ Bericht 2% gewijzigd door pascal08 op 07-09-2013 13:26:21 ]
1 2 3 4 5 6 | SELECT s.* FROM squads s LEFT JOIN players_in_squads ps ON ps.squad_id = s.squad_id AND ps.player_rating < 60 WHERE ps.squad_id IS NULL |
Ik ben hier redelijk noob in, maar initial connection speed heeft te maken met het inladen van de eerste byte.quote:Op zaterdag 7 september 2013 14:33 schreef totalvamp het volgende:
Zou wel handig zijn om te weten wat voor connectie
Eerste byte van wat? :s In welke context kwam je de term tegen?quote:Op maandag 9 september 2013 10:41 schreef Apekoek het volgende:
[..]
Ik ben hier redelijk noob in, maar initial connection speed heeft te maken met het inladen van de eerste byte.
Wat is veelbezocht? Ik vind de aangeboden specs eigenlijk erg karig. Voor nog geen 10E per maand kun je elders meer dan het dubbele huren.quote:Op maandag 9 september 2013 10:41 schreef Apekoek het volgende:
Gaat een VPS veel beter zijn dan shared hosting? Ik wil namelijk een vlotte site draaien gericht op het buitenland. Ik heb nu namelijk een aanbieding op het oog, maar 0,5ghz en 356mb ram oid. Is dat genoeg voor een blog die eventueel vaak bezocht zal gaan worden?
Tussen de 200 en 400 bezoekers per dag.quote:Op maandag 9 september 2013 11:19 schreef zoem het volgende:
[..]
Wat is veelbezocht? Ik vind de aangeboden specs eigenlijk erg karig. Voor nog geen 10E per maand kun je elders meer dan het dubbele huren.
Dat klopt, het kan ietwat schelen in ranking. De weging ervan is echter lang niet zo zwaar als het hebben van goede content. Er zijn Nederlandse hostingpartijen die geolocalisatie aanbieden; wie weet is dat een optie (bijv OVH)quote:Op maandag 9 september 2013 12:15 schreef Apekoek het volgende:
[..]
Tussen de 200 en 400 bezoekers per dag.
Het is een website die voor een ander land is bedoelt. VPS server mogelijkheden zijn daar minder en dus duurder, vandaar. Echter is een Nederlandse VPS ook goed voor een site buiten NL gericht? Ik heb begrepen dat je dan alsnog in Google van het desbetreffende land minder goed rankt.
Het land ligt niet in Europa, toch goed om hier even naar te kijken.quote:Op maandag 9 september 2013 12:36 schreef zoem het volgende:
[..]
Dat klopt, het kan ietwat schelen in ranking. De weging ervan is echter lang niet zo zwaar als het hebben van goede content. Er zijn Nederlandse hostingpartijen die geolocalisatie aanbieden; wie weet is dat een optie (bijv OVH)
Hangt ook samen met de blog-software. Sommige blog-software neem geen genoegen met 356 MB.quote:Op maandag 9 september 2013 10:41 schreef Apekoek het volgende:
[..]
Ik ben hier redelijk noob in, maar initial connection speed heeft te maken met het inladen van de eerste byte.
Gaat een VPS veel beter zijn dan shared hosting? Ik wil namelijk een vlotte site draaien gericht op het buitenland. Ik heb nu namelijk een aanbieding op het oog, maar 0,5ghz en 356mb ram oid. Is dat genoeg voor een blog die eventueel vaak bezocht zal gaan worden?
Ik hoop er binnenkort mee aan de slag te mogen voor een klant.quote:Op dinsdag 10 september 2013 12:33 schreef KomtTijd... het volgende:
Ik begin Symfony2 een beetje onder de knie te krijgen. Werkt wel geniaal zeg!
Werkt erg fijn inderdaad.quote:Op dinsdag 10 september 2013 12:33 schreef KomtTijd... het volgende:
Ik begin Symfony2 een beetje onder de knie te krijgen. Werkt wel geniaal zeg!
Ik ben erg OO-minded en ben daarom blij verrast met Doctrine.quote:Op dinsdag 10 september 2013 18:11 schreef KomtTijd... het volgende:
Ja idd, dat maakt het er niet altijd duidelijker van. Het is voor mij ook voor het eerst dat ik echt OO werk dus het is wel even wennen en een hoop leren, maar ik merk nu al hoe makkelijk het is om sommige dingen te bouwen.
Ik ben er ook mee bezig icm Twig en Doctrine. Ideaal inderdaad.quote:Op dinsdag 10 september 2013 12:33 schreef KomtTijd... het volgende:
Ik begin Symfony2 een beetje onder de knie te krijgen. Werkt wel geniaal zeg!
Laravel. (Gebruikt ook Symfony2 componenten)quote:Op dinsdag 10 september 2013 12:33 schreef KomtTijd... het volgende:
Ik begin Symfony2 een beetje onder de knie te krijgen. Werkt wel geniaal zeg!
Waar moet ik dan aan denken bij wordpress?quote:Op dinsdag 10 september 2013 08:47 schreef rekenwonder het volgende:
[..]
Hangt ook samen met de blog-software. Sommige blog-software neem geen genoegen met 356 MB.
Dat is uiteraard van allerlei factoren afhankelijk zoals gebruikte plugins, aantal bezoekers etc.quote:Op woensdag 11 september 2013 06:54 schreef Apekoek het volgende:
[..]
Waar moet ik dan aan denken bij wordpress?
Lolwhut? Php memory limit staat normaliter op 64 MB, en als je dat daadwerkelijk haalt met php moet je toch eens flink achter je oren gaan krabben, want dat is best wel extreem.quote:Op woensdag 11 september 2013 08:29 schreef rekenwonder het volgende:
[..]
Dat is uiteraard van allerlei factoren afhankelijk zoals gebruikte plugins, aantal bezoekers etc.
356 MB lijkt me echter aan de krappe kant. Begin eens bij 1 GB.
Wordpress geeft geen (althans, hier: http://wordpress.org/about/requirements/) vereisten aan het geheugengebruik. De standaard-instelling van PHP lijkt voldoende. Een paar MB moet ook genoeg zijn voor iets als Wordpress.quote:
Zelfs een 64MB programma kan op een 32MB systeem draaien, alleen gaat je systeem dan wel swappen. Maar je moet kijken naar hoe vaak je site per seconde wordt aangeroepen. Performance loads uitvoeren om te kijken wat de resultaten zijn onder welke belasting. Ga je akkoord met 2 seconde laadtijd op piek tijden? Dat zijn vragen die waar je achter moet komen wat de echte laadtijden zijn en wat je acceptabel vindt.quote:Op woensdag 11 september 2013 09:24 schreef KomtTijd... het volgende:
[..]
Lolwhut? Php memory limit staat normaliter op 64 MB, en als je dat daadwerkelijk haalt met php moet je toch eens flink achter je oren gaan krabben, want dat is best wel extreem.
Ik denk dat je niet binnen het proces moet kijken, maar naar wat het per request kost aan geheugen. Dan kun je uitrekenen hoeveel requests je kan bedienen met het beschikbare geheugen. Stel dat je mod_php gebruikt dan ben je per apacheproces toch zeker zo'n 30MB kwijt. Dus bij ~12 concurrent requests zit het geheugen al vol. En dan reken ik de database nog niet mee.quote:Op woensdag 11 september 2013 09:24 schreef KomtTijd... het volgende:
[..]
Lolwhut? Php memory limit staat normaliter op 64 MB, en als je dat daadwerkelijk haalt met php moet je toch eens flink achter je oren gaan krabben, want dat is best wel extreem.
Volgens mij is dit niet de juiste. Wat ik wil is (sorry dat ik het niet goed heb uitgelegd) dat de eerste airline een variabel wordt en de 30e een variabel die ik daarna combineer om er een url van te maken. Dat doe ik ook voor de 31e en 60e and so on. Mijn mysql kennis is nog net niet van het niveau dat ik hier een mooi iets neer kan zetten. Maar ik denk ergens dus aan een subquery met limit 0,1 en 30,1 (?)quote:Op maandag 16 september 2013 09:51 schreef Tijn het volgende:
http://stackoverflow.com/(...)-n-th-row-from-mysql
ik geef nog even wat info waar ik naar toe wil. Ik probeer van alles maar ik krijg een error omdat ik ORDER BY gebruik icm UNION,quote:Op maandag 16 september 2013 11:27 schreef zoem het volgende:
Dat zou kunnen werken als je het combineert met een UNION.
Maar wil je het alleen met 0 en 30, of 0, 30, 60, 90, 120, etc.. want dan klopt de eerder stackflow link wel weer.quote:Op maandag 16 september 2013 12:44 schreef kawotski het volgende:
[..]
ik geef nog even wat info waar ik naar toe wil. Ik probeer van alles maar ik krijg een error omdat ik ORDER BY gebruik icm UNION,
$airline1 = SELECT airline FROM `airlines` ORDER BY airline LIMIT 0,1
$airline2 = SELECT airline FROM `airlines` ORDER BY airline LIMIT 30,1
Ik heb iets te breed ingezet. Ik wil uit mijn tabel de eerste airline, de 30e, de 31e, de 60e, de 61e en de 90e.quote:Op maandag 16 september 2013 12:51 schreef Pakspul het volgende:
[..]
Maar wil je het alleen met 0 en 30, of 0, 30, 60, 90, 120, etc.. want dan klopt de eerder stackflow link wel weer.
Dan is de stackflow link die gegeven is perfect.quote:Op maandag 16 september 2013 13:04 schreef kawotski het volgende:
[..]
Ik heb iets te breed ingezet. Ik wil uit mijn tabel de eerste airline, de 30e, de 31e, de 60e, de 61e en de 90e.
Dan krijg je (wil ik) bijv. als resultaat Air Canada - KLM, en daarna KLM Cityhopper - Qantas (dus alleen die namen en niet wat ertussen zit
ik ben nu hier naar aan t kijken: http://stackoverflow.com/(...)lt-of-a-select-query
1 2 3 4 5 6 7 8 9 10 11 12 | SELECT * FROM ( SELECT @row := @row +1 AS rownum, time_zone_id FROM ( SELECT @row :=0) r, time_zone ) ranked WHERE rownum % 30 = 1 OR rownum % 31 = 1 LIMIT 0, 6 |
Dat werkt , ik ga nog even verder klooienquote:Op maandag 16 september 2013 13:14 schreef Pakspul het volgende:
[..]
Dan is de stackflow link die gegeven is perfect.
Ik heb er lokaal even mee getest, aangezien ik geen tabel met record had heb ik de 'mysql' database in phpmyadmin even gebruikt en dan naar de tabel 'time_zone'
[ code verwijderd ]
Met deze query krijg ik er bijna uit wat je wil hebben. Speel hier eens mee, leer de operator modulo eens kennen en verander eens kleine dingen er aan.
Airlines per airlines in een variabel? Die begrijp ik niet helemaal.quote:Op maandag 16 september 2013 13:28 schreef kawotski het volgende:
[..]
Dat werkt , ik ga nog even verder klooien
[ afbeelding ]
Stap 2 is dat ik volgens voorbeeld de 1e combineer met de 30e, dus 1Time en Air Arabia Egypt samenvoeg in 1 url.quote:Op maandag 16 september 2013 13:30 schreef Pakspul het volgende:
[..]
Airlines per airlines in een variabel? Die begrijp ik niet helemaal.
quote:Op maandag 16 september 2013 13:33 schreef kawotski het volgende:
[..]
Stap 2 is dat ik volgens voorbeeld de 1e combineer met de 30e, dus 1Time en Air Arabia Egypt samenvoeg in 1 url.
1 2 3 4 5 6 7 | <?php for ( (int) $i = 0; $i < 3; $i++ ) { $part1 = $recordList[$i]; $part2 = $recordList[$i + 1]; } ?> |
1 2 3 4 5 6 7 | <?php for ( (int) $i = 0; $i < 3; $i++ ) { $part1 = $recordList[$i]; $part2 = $recordList[$i + 1]; } ?> |
Dat is ook wel weer waar, ik ga dat eens proberen. Thanks alvastquote:Op maandag 16 september 2013 13:38 schreef Pakspul het volgende:
[..]
[ code verwijderd ]
Het zal vast wel weer in een query kunnen, misschien dat die dan je subquery wordt waar je dan weer doorheen moet spitten, maar als het om maar 6 resultaten gaat kan kun je het ook in PHP oplossen.
[ code verwijderd ]
Mocht je dan later je query voor mekaar krijgen dan kun je het er altijd nog uitslopen, maar dan kun je nu verder
1 | SELECT * FROM airline WHERE numrow IN (1, 30, 31, 60, 61, 90); |
Geef Laravel 4 eens een kans, je gaat er van houden.quote:Op zaterdag 14 september 2013 21:11 schreef Tijn het volgende:
Nou, ik ben van de week voor het eerst op een project gezet dat met Symfony 2 is gedaan en dat is een partij sloom, niet normaal. Ik hoop niet dat dit representatief is voor het framework
1 2 3 | /asset -> lijst met assets /asset/get/1 -> details asset #1 /asset/edit/1 -> formulier om asset #1 aan te passen |
1 2 3 | /asset ->lijst met assets /asset/1/ -> details asset #1 /asset/1/edit -> asset #1 aanpassen |
1 2 3 | /asset/list ->lijst met assets /asset/1/get -> details asset #1 /asset/1/edit -> asset #1 aanpassen |
Ik gebruik veelal de eerste. controller, action, parameters zo bekijk ik het. Als je in een programmeer taal ook een functie aanroept dan doe je ook $obj->Function($varA, $varb); Dus eerst definieer je de class (controller) dan roep je de functie aan (action) en geef je aan welke parameters je meegeeft.quote:Op donderdag 19 september 2013 11:55 schreef KomtTijd... het volgende:
Even een stukje semantiek, wat staat beter?
[ code verwijderd ]
[ code verwijderd ]
[ code verwijderd ]
of een combinatie van?
1 2 3 | home > assets home > assets > asset1 home > assets > asset1 > bewerken |
quote:Op donderdag 19 september 2013 11:55 schreef KomtTijd... het volgende:
Even een stukje semantiek, wat staat beter?
[ code verwijderd ]
[ code verwijderd ]
[ code verwijderd ]
of een combinatie van?
1 2 3 | /assets ->lijst met assets /assets/1/ -> details asset #1 /assets/1/edit -> asset #1 aanpassen |
1 2 3 4 5 6 7 | users GET /users(.:format) users#index POST /users(.:format) users#create new_user GET /users/new(.:format) users#new edit_user GET /users/:id/edit(.:format) users#edit user GET /users/:id(.:format) users#show PUT /users/:id(.:format) users#update DELETE /users/:id(.:format) users#destroy |
De meeste conventies die ik tegenkom spreken altijd over enkelvoudige namen...quote:Op vrijdag 20 september 2013 22:42 schreef Light het volgende:
[..]
[ code verwijderd ]
Ik zou voor meervoud kiezen ipv enkelvoud. En /assets/1/edit heb je eigenlijk alleen nodig voor web. Om een edit te kunnen maken, moet er een edit-pagina zijn. En daar voorziet REST niet in.
Dan kom je op zoiets:
[ code verwijderd ]
new en edit zijn puur bedoeld om een formuliertje te presenteren. En dit lijstje komt uit een Ruby on Rails projectje.
Als je het helemaal netjes wilt doen, gebruik je meervoud voor het opvragen van de lijst (en toevoegen aan de lijst) en enkelvoud voor acties die op 1 item gaan. Maar dat heeft weer als nadeel dat je niet een stuk na een slash kunt weghalen en een geldige url overhoudt.quote:Op vrijdag 20 september 2013 22:46 schreef Juicyhil het volgende:
[..]
De meeste conventies die ik tegenkom spreken altijd over enkelvoudige namen...
Enige consistentie daarin is inderdaad wel gewenst. Een url als /search/results vind ik dan wel weer geoorloofd. Maar bijvoorbeeld /user/1/profile zou ik dan dus wel enkelvoud laten.quote:Op vrijdag 20 september 2013 22:57 schreef Light het volgende:
[..]
Als je het helemaal netjes wilt doen, gebruik je meervoud voor het opvragen van de lijst (en toevoegen aan de lijst) en enkelvoud voor acties die op 1 item gaan. Maar dat heeft weer als nadeel dat je niet een stuk na een slash kunt weghalen en een geldige url overhoudt.
Ik neig meer richting meervoud, maar smaken verschillen. En over consistentie zijn we het wel eens. Als je /user/1 gebruikt, dan ook /user. En als je /users wilt gebruiken, dan ook /users/1.quote:Op vrijdag 20 september 2013 23:01 schreef Juicyhil het volgende:
[..]
Enige consistentie daarin is inderdaad wel gewenst. Een url als /search/results vind ik dan wel weer geoorloofd. Maar bijvoorbeeld /user/1/profile zou ik dan dus wel enkelvoud laten.
Dat moet eeuwen geleden zijn danquote:Op donderdag 26 september 2013 00:08 schreef xaban06 het volgende:
Ik ben bezig met het bouwen van een nieuwssysteem, mijn vraag is welk type moet ik gebruiken om 'datum/tijd' op te slaan?
Vroeger gebruikte ik gewoon varchar en gebruikte formaat: 201309260007 (2013 - 09 - 26, 00:07). Dit was makkelijk om records uit 2013 te zoeken, records uit een bepaald maand te zoeken etc.
Echter heeft het ook zijn nadelen.
Wat raden jullie aan?
En bestaat daar ook een PHP functie voor om bijvoorbeeld 'nu-3 jaar' te doen? Dus "2010-09-26 00:11:00"quote:Op donderdag 26 september 2013 00:11 schreef totalvamp het volgende:
[..]
Dat moet eeuwen geleden zijn dan
Je hebt gewoon het type DATETIME die slaat de datum op als "Y-m-d H:i:s" "2013-09-26 00:11:00"
Ja, maar je kunt het beter in mysql zelf doen.quote:Op donderdag 26 september 2013 00:26 schreef xaban06 het volgende:
[..]
En bestaat daar ook een PHP functie voor om bijvoorbeeld 'nu-3 jaar' te doen? Dus "2010-09-26 00:11:00"
1 2 3 4 5 | <?php select * from orders where order_date >= DATE_SUB(NOW(),INTERVAL 3 YEAR); ?> |
Voor mij zelf, een hobby website.quote:Op donderdag 26 september 2013 00:35 schreef totalvamp het volgende:
[..]
Ja, maar je kunt het beter in mysql zelf doen.
[ code verwijderd ]
Waarvoor maak je een nieuwssystem trouwens?
Ik snap je dilemma.quote:Op donderdag 26 september 2013 00:39 schreef xaban06 het volgende:
[..]
Voor mij zelf, een hobby website.
Kan helaas geen kant en klare systeem gebruiken omdat bij ieder pakket wel iets mist.
Nee. Ik heb PHP geleerd met versie 4, toen was er nog niet echt OOP ondersteuning, de boeken die ik gebruikte gingen er dus ook niet echt diep op in. Helaas, nooit geleerd.quote:Op donderdag 26 september 2013 00:40 schreef totalvamp het volgende:
[..]
Ik snap je dilemma.
Maak je gebruik van classes?
Dan zou ik vanaf het begin af aan beginnen. Wat er toen in die boeken stond is nu gevaarlijk(was het toen ook al).quote:Op donderdag 26 september 2013 00:42 schreef xaban06 het volgende:
[..]
Nee. Ik heb PHP geleerd met versie 4, toen was er nog niet echt OOP ondersteuning, de boeken die ik gebruikte gingen er dus ook niet echt diep op in. Helaas, nooit geleerd.
Nee, al jaren niet meer gescriptquote:Op donderdag 26 september 2013 00:43 schreef totalvamp het volgende:
[..]
Dan zou ik vanaf het begin af aan beginnen. Wat er toen in die boeken stond is nu gevaarlijk(was het toen ook al).
Heb je toevallig een voorbeeld van je code?
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.
1 2 3 4 5 6 7 8 9 10 11 | News |- id int 6 unsigned auto_increment |- post_title varchar 80 |- post_introduction text - |- post_content text - |- post_icon varchar 15 |- post_date datetime - |- post_category varchar 10 |- post_url varchar 85 |- post_author int 5 unsigned |- post_status varchar 10 |
quote:Op donderdag 26 september 2013 00:48 schreef xaban06 het volgende:
Ok, heb iets kunnen vinden, maar is maar half, ik zie dat ik tig bestanden heb gebruikt waardoor ik niet meer weet wat wat isOei dat kan stukken netter.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.
Het is ook makkelijker met classes te werken die kun je automatisch inladen.ik zou alleen een category_id meegeven ipv de cat naam. Dan kun je een tabel maken met categorieën en die joinen op newsquote:Op donderdag 26 september 2013 00:55 schreef xaban06 het volgende:
Dit wordt de structuur ongeveer, is nog niet af.
[ code verwijderd ]
quote:Op donderdag 26 september 2013 00:48 schreef xaban06 het volgende:
Ok, heb iets kunnen vinden, maar is maar half, ik zie dat ik tig bestanden heb gebruikt waardoor ik niet meer weet wat wat isLet je wel op met sql-injectie?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.
En staat $first en $second voor wat ik denk dat het staat? Wat gebeurt er dan wanneer je de website in een ander pad draait? Gebruik hiervoor een router class, te vinden in allerlei frameworks.
voorbeeld van de code ?quote:Op donderdag 26 september 2013 00:57 schreef Kakdieusernameisalbezet het volgende:
Hallo, vergeef mij dat ik een php noob ben, ik wil het graag leren. Ik heb 2 vragen:
Ik ben wat aan het klooien met php en mysql. Nu maak ik dat in een mapje op de pc, en upload ik dit naar m'n server. Alles werkte prima, maar sinds vanmiddag, van het 1 op andere moment wordt de php code lokaal niet meer geparsd. Dus als ik de file dan open in chrome zie ik de code ipv het resultaat. Als ik deze file upload naar m'n server werkt alles naar behoren. Enig idee hoe dit zou kunnen komen zonder instellingen te hebben verander/software geïnstalleerd of gedeïnstalleerd etc.?
En vraag 2: Ik heb hiervoor altijd in actionscript geprogrammeerd. Ik ben toe aan iets nieuws en daarom begonnen met php/mysql. Welk boek raden jullie aan om goed te leren phpen? Ik heb wel 2 boeken maar daar wordt teveel over syntax geleutert, dat snap ik allemaal wel... Een soort van boek met tutorials heeft m'n voorkeur..
Bednakt voor het lezen en antwoorden!
Gaat niet om de code, als ik in een pagina <?php echo "hallo"; ?> doe laat ie het ook zo zien, ipv dat de output "hallo" is. Dit heeft sowieso niet met de code te maken, op alle browsers geeft ie ehtzelfde probleem. Geen idee waar het aan kan liggen.quote:Op donderdag 26 september 2013 00:59 schreef totalvamp het volgende:
[..]
voorbeeld van de code ?
Ik zou geen boeken raadplegen. Het beste is om de bekende frameworks na te lopen en kijken hoe dat in elkaar steekt. Lees je ook in op OOP er zijn zat voorbeelden met uitleg online.
klinkt alsof de php module niet wordt geladen. Wat voor webserver heb je? Xampp?quote:Op donderdag 26 september 2013 01:02 schreef Kakdieusernameisalbezet het volgende:
[..]
Gaat niet om de code, als ik in een pagina <?php echo "hallo"; ?> doe laat ie het ook zo zien, ipv dat de output "hallo" is. Dit heeft sowieso niet met de code te maken, op alle browsers geeft ie ehtzelfde probleem. Geen idee waar het aan kan liggen.
Mja zoiets dacht ik al, alleen grappige is dat ik nooit zoiets heb geïnstalleerd. Ik ben wat phptutorials gaan doen, phpfiles maken in dreamweaver, openen met chrome en dat werkte. Niks voor geïnstalleerdquote:Op donderdag 26 september 2013 01:03 schreef totalvamp het volgende:
[..]
klinkt alsof de php module niet wordt geladen. Wat voor webserver heb je? Xampp?
Dan zal dreamweaver een ingebouwde server hebben gehad. Installeer XAMPP en probeer opnieuwquote:Op donderdag 26 september 2013 01:05 schreef Kakdieusernameisalbezet het volgende:
[..]
Mja zoiets dacht ik al, alleen grappige is dat ik nooit zoiets heb geïnstalleerd. Ik ben wat phptutorials gaan doen, phpfiles maken in reamweaver, openen met chrome en dat werkte. Niks voor geïnstalleerd
Haha yes sir, thanks! Morgen direct proberen!quote:Op donderdag 26 september 2013 01:06 schreef totalvamp het volgende:
[..]
Dan zal dreamweaver een ingebouwde server hebben gehad. Installeer XAMPP en probeer opnieuw
Een nieuws artikel kan meer dan 1 categorien hebbenquote:Op donderdag 26 september 2013 00:57 schreef totalvamp het volgende:
[..]
Oei dat kan stukken netter.
Het is ook makkelijker met classes te werken die kun je automatisch inladen.
[..]
ik zou alleen een category_id meegeven ipv de cat naam. Dan kun je een tabel maken met categorieën en die joinen op news
koppel tabellen.quote:Op donderdag 26 september 2013 03:01 schreef xaban06 het volgende:
[..]
Een nieuws artikel kan meer dan 1 categorien hebben
Een voorbeeld record wordt dan 1|6|9, artikel zit dus in category 1, 6 en 9. Of kan dat ook slimmer/handiger/logischer?
Een aanrader voor beginners: http://www.usbwebserver.net/quote:Op donderdag 26 september 2013 01:08 schreef Kakdieusernameisalbezet het volgende:
[..]
Haha yes sir, thanks! Morgen direct proberen!
Niet alleen voor beginners hoor heeft precies wat een gemiddelde web (php) developer nodig heeft.. gebruik het nu al jaren! veel beter dan xamp, wamp en dergelijke alternatieven!quote:Op donderdag 26 september 2013 08:33 schreef Devolution het volgende:
[..]
Een aanrader voor beginners: http://www.usbwebserver.net/
Meervoud klopt niet, want als jij een pagina asset/1 hebt, dan is het logisch dat er meerdere zijn. Dus je hebt het al over meervoud. Zelfde als bij database tabellen. Een tabel "persons" noemen is vreemd, aangezien er meerdere records al in komen te staan over personen. Daarom gebruik ik altijd enkelvoud. Meervoud in urls kom ik ook eigenlijk nooit tegen, zelfs database tabellen in meervoud niet.quote:Op vrijdag 20 september 2013 22:42 schreef Light het volgende:
[..]
[ code verwijderd ]
Ik zou voor meervoud kiezen ipv enkelvoud. En /assets/1/edit heb je eigenlijk alleen nodig voor web. Om een edit te kunnen maken, moet er een edit-pagina zijn. En daar voorziet REST niet in.
Dan kom je op zoiets:
[ code verwijderd ]
new en edit zijn puur bedoeld om een formuliertje te presenteren. En dit lijstje komt uit een Ruby on Rails projectje.
Ik ben niet de intended audience, maarruh.. waarom is het beter dan? Want ik zie niet wat er moeilijk is aan een webserver optuigen die PHP serveert..quote:Op donderdag 26 september 2013 09:06 schreef Chandler het volgende:
Niet alleen voor beginners hoor heeft precies wat een gemiddelde web (php) developer nodig heeft.. gebruik het nu al jaren! veel beter dan xamp, wamp en dergelijke alternatieven!
Omdat het klik en play is! sterker nog, gewoon uitpakken, starten en het werkt! XAMPP en dergelijke packs bevatten veel meer dan een gemiddelde webdeveloper nodig heeft (imo). Daarnaast doet het precies wat een 'normale' webserver ook doet, het serveren van pagina's!quote:Op donderdag 26 september 2013 10:01 schreef slacker_nl het volgende:
Ik ben niet de intended audience, maarruh.. waarom is het beter dan? Want ik zie niet wat er moeilijk is aan een webserver optuigen die PHP serveert..
1 2 3 4 | $nu = date("c"); $einddatum = date("c", strtotime('-2 hours')); select * from blabla where date BETWEEN "'.$nu.'" and "'.$einddatum.'" |
1 | 2013-09-26T11:41:54+02:00 2013-09-26T09:41:54+02:00 |
...in goed Nederlands ook wel koppeltabel genoemd ja.quote:Op donderdag 26 september 2013 10:45 schreef xaban06 het volgende:
[..]
Hoe bedoel je?
Een aparte relationship tabel?
Nee, moet dat persé?quote:Op donderdag 26 september 2013 11:47 schreef KomtTijd... het volgende:
`date` is wel een datetime veld?
Ja, anders gaat het nooit werken... tenzij je de string on the fly naar een datetime omzet met een sql-functie. Maar dat is iets wat je liever niet doet.quote:
1 2 | $nu = date('Y-m-d H:i:s'); $einddatum = date("Y-m-d H:i:s", strtotime('-2 hours')); |
Ook geen error?quote:Op donderdag 26 september 2013 12:09 schreef boskameel het volgende:
Lege output, zie ik nog iets over het hoofd?
Misschien moet je $nu en $einddatum in je query even omdraaien $einddatum ligt namelijk voor $nu (dus zou ook eigenlijk $startdatum moeten heten)quote:Op donderdag 26 september 2013 12:09 schreef boskameel het volgende:
Oke, `date` is nu een datetime.
Datums in de db staan er als volgt in:
2013-09-26 11:59:33
2013-09-26 11:55:00
etc
Nu en einddatum heb ik op deze manier ingesteld:
[ code verwijderd ]
en geven dit als output:
2013-09-26 12:08:17
2013-09-26 10:08:17
Lege output, zie ik nog iets over het hoofd?
Je kan het ook gewoon in MYSQL zelf doen dit met DATE_SUB(NOW(), -2 HOUR)quote:Op donderdag 26 september 2013 12:09 schreef boskameel het volgende:
Oke, `date` is nu een datetime.
Datums in de db staan er als volgt in:
2013-09-26 11:59:33
2013-09-26 11:55:00
etc
Nu en einddatum heb ik op deze manier ingesteld:
[ code verwijderd ]
en geven dit als output:
2013-09-26 12:08:17
2013-09-26 10:08:17
Lege output, zie ik nog iets over het hoofd?
1 2 3 4 5 6 7 8 9 10 11 | <?php if ( key_exists( "not", $_GET ) ) { echo "test1"; if ( !is_null( $_GET[ "not" ] ) || !empty($_GET["not"]) ) { echo "test2"; } } ?> |
1 | search.php?match=d_ |
1 | search.php?match=d_¬= |
Wat probeer je te bereiken?quote:Op donderdag 26 september 2013 21:58 schreef d4v1d het volgende:
Ik ben nu al zeker een jaar met php bezig, en ik zou zeggen dat ik het redelijk goed beheers maar nu loop ik tegen iets simpels aan wat ik gewoon niet begrijp
search.php
[ code verwijderd ]
Met
[ code verwijderd ]
komt die nergens, tot zover snap ik het nog, echter met
[ code verwijderd ]
komt die tot test2.. Hij zou toch enkel tot test1 moeten komen dan?
Wat zie ik over het hoofd?
Edit: Geen idee hoe ¬ opeens in de uri staat, dat moet een ampersand zijn.., in het invoerveld hier staat die gewoon als ampersand..
Ik neem aan dat je array_key_exists() bedoelt en niet key_exists?quote:Op donderdag 26 september 2013 21:58 schreef d4v1d het volgende:
Ik ben nu al zeker een jaar met php bezig, en ik zou zeggen dat ik het redelijk goed beheers maar nu loop ik tegen iets simpels aan wat ik gewoon niet begrijp
search.php
[ code verwijderd ]
Met
[ code verwijderd ]
komt die nergens, tot zover snap ik het nog, echter met
[ code verwijderd ]
komt die tot test2.. Hij zou toch enkel tot test1 moeten komen dan?
Wat zie ik over het hoofd?
Edit: Geen idee hoe ¬ opeens in de uri staat, dat moet een ampersand zijn.., in het invoerveld hier staat die gewoon als ampersand..
key_exists is een alias, dus zou niet uit moeten maken.quote:Op donderdag 26 september 2013 22:16 schreef totalvamp het volgende:
[..]
Ik neem aan dat je array_key_exists() bedoelt en niet key_exists?
als je iets uit een invoerveld in de URL wilt zul je urlencode moeten gebruiken.
Al gevonden, Het moestquote:Op donderdag 26 september 2013 22:15 schreef Crutch het volgende:
[..]
Wat probeer je te bereiken?
Misschien de hele search snippet even posten?
1 2 3 | <?php if ( !(is_null( $_GET[ "not" ] ) || empty($_GET["not"])) ) ?> |
empty() controleert ook op null-waardes. Als een variabele null is, is deze ook empty. Die extra null-check is dus niet nodig.quote:Op donderdag 26 september 2013 22:18 schreef d4v1d het volgende:
Al gevonden, Het moest
[ code verwijderd ]
zijn. (Dus met de haakjes om beide)
Opgelost dus.
Wat is er maf aan?quote:Op donderdag 26 september 2013 22:21 schreef KomtTijd... het volgende:
...ik mag aannemen dat je zo'n maffe if niet in je productiecode zet?
Ah, thx.quote:Op donderdag 26 september 2013 22:21 schreef Light het volgende:
[..]
empty() controleert ook op null-waardes. Als een variabele null is, is deze ook empty. Die extra null-check is dus niet nodig.
Wat is er gek aan? (even los van het commentaar van Light).quote:Op donderdag 26 september 2013 22:21 schreef KomtTijd... het volgende:
...ik mag aannemen dat je zo'n maffe if niet in je productiecode zet?
normaal heb je in een framework functies die de requests afvangen en controleren op foutieve data.quote:Op donderdag 26 september 2013 22:23 schreef slacker_nl het volgende:
[..]
Wat is er gek aan? (even los van het commentaar van Light).
Nouja dat, plus het lijkt meer een soort van puzzelopdracht om de haakjes en dubbele negaties te ontcijferen.quote:Op donderdag 26 september 2013 22:23 schreef slacker_nl het volgende:
[..]
Wat is er gek aan? (even los van het commentaar van Light).
Ik gebruik geen framework.quote:Op donderdag 26 september 2013 22:24 schreef totalvamp het volgende:
[..]
normaal heb je in een framework functies die de requests afvangen en controleren op foutieve data.
Hoe bekijk jij dan of iets van je $_GET is zoals je het wil? (In dit geval niet leeg of niet opgegeven..)quote:Op donderdag 26 september 2013 22:25 schreef KomtTijd... het volgende:
[..]
Nouja dat, plus het lijkt meer een soort van puzzelopdracht om de haakjes en dubbele negaties te ontcijferen.
gewoon met empty().quote:Op donderdag 26 september 2013 22:26 schreef d4v1d het volgende:
[..]
Ik gebruik geen framework.
[..]
Hoe bekijk jij dan of iets van je $_GET is zoals je het wil? (In dit geval niet leeg of niet opgegeven..)
Ja dat heb ik nu, zie de opmerking van Light.quote:
1 2 3 4 5 6 7 8 9 10 11 | <?php if ( key_exists( "not", $_GET ) ) { $not = urldecode( $_GET[ "not" ] ); if ( !empty( $not ) ) { // doe iets.. } } ?> |
1 2 3 4 5 6 | <?php if (!empty($_GET['not'])) { //doe iets } ?> |
En dan een warning krijgen dat de key "not" niet bestaat (ookal staan die in de productieomgeving uiteindelijk uit natuurlijk..)quote:Op donderdag 26 september 2013 22:29 schreef KomtTijd... het volgende:
Wat dacht je van
[ code verwijderd ]
...om maar een bizarre dwarsstraat te noemen.
quote:Op donderdag 26 september 2013 22:26 schreef d4v1d het volgende:
[..]
Ik gebruik geen framework.
[..]
Hoe bekijk jij dan of iets van je $_GET is zoals je het wil? (In dit geval niet leeg of niet opgegeven..)
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php class Request { public static function get($key) { return (!empty($_GET[$key])?$_GET[$key]:false; } public static function post($key) { return (!empty($_POST[$key])?$_POST[$key]:false; } } $var = Request::get('not'); ?> |
Meen je die?quote:Op donderdag 26 september 2013 22:30 schreef KomtTijd... het volgende:
empty controleert ook op bestaan.
Voordeel van (static) classes en functies erg handig voor dingen die je meerdere keren gebruikt.quote:Op donderdag 26 september 2013 22:32 schreef d4v1d het volgende:
[..]
Ziet er netjes uit wel. Toch even overwegen misschien
1 2 3 4 5 6 7 8 9 10 11 | <?php class HTML { public static function printr($txt) { echo '<pre>'; print_r($txt); echo '</pre>'; } } HTML::printr($eenarray); ?> |
die jat ik even.quote:Op donderdag 26 september 2013 22:34 schreef totalvamp het volgende:
[..]
Voordeel van (static) classes en functies erg handig voor dingen die je meerdere keren gebruikt.
Mijn favo voor lokaal testen vand data
[ code verwijderd ]
Dan zou ik het wel iets uitgebreider maken, al was het maar omdat empty() ook true kan opleveren voor situaties waarbij er wel data (de string "0") aanwezig is. Er zijn meer situaties, maar die lijken me minder van belang voor $_GET en $_POST.quote:
Sssssssst ik laat hem langzaam die kant op gaan xDquote:Op donderdag 26 september 2013 22:36 schreef KomtTijd... het volgende:
Echt ga een framework gebruiken allemaal. Zoveel onnodige hoofdpijn hier...
Zijn er eigenlijk al kant en klare frameworks voor dit soort basis dingen? Ik kan er natuurlijk zelf een schrijven maar waarom het wiel opnieuw uitvinden (Natuurlijk wel zelf aanvullen)quote:Op donderdag 26 september 2013 22:36 schreef KomtTijd... het volgende:
Echt ga een framework gebruiken allemaal. Zoveel onnodige hoofdpijn hier...
you're kidding I hope?quote:Op donderdag 26 september 2013 22:37 schreef d4v1d het volgende:
[..]
Zijn er eigenlijk al kant en klare frameworks voor dit soort basis dingen?
Het ging om een voorbeeld getypt in dit scherm xD daarnaast wil je 0 wel opvangen, een id kan 0 zijn. Maar je hebt gelijk dat je er meer controles op wilt hebben dan dit.quote:Op donderdag 26 september 2013 22:36 schreef Light het volgende:
[..]
Dan zou ik het wel iets uitgebreider maken, al was het maar omdat empty() ook true kan opleveren voor situaties waarbij er wel data (de string "0") aanwezig is. Er zijn meer situaties, maar die lijken me minder van belang voor $_GET en $_POST.
Ik weet prima wat een framework isquote:Op donderdag 26 september 2013 22:39 schreef KomtTijd... het volgende:
[..]
....als je al een jaar met PHP bezig bent en nog nooit van een framework gehoord hebt? Ehja.
Uitzoeken hoe dingen werken kan heel goed zonder framework, is misschien nog wel beter dan met een framework. Voor dingen die op een live website komen, is een framework wel aan te raden. De grootste veiligheidsrisico's zijn dan meteen afgedicht (of je moet een update installeren als er een bug gefixt is).quote:Op donderdag 26 september 2013 22:36 schreef KomtTijd... het volgende:
Echt ga een framework gebruiken allemaal. Zoveel onnodige hoofdpijn hier...
quote:Op donderdag 26 september 2013 22:39 schreef Maringo het volgende:
[..]
Nou, Google. Plus dat overal tegenwoordig wel een framework voor is.
dit^quote:Op donderdag 26 september 2013 22:39 schreef KomtTijd... het volgende:
[..]
....als je al een jaar met PHP bezig bent en nog nooit van een framework gehoord hebt? Ehja.
Ik ben ook geen tegenstander van beginnen met from scratch programmeren, leer je toch beter de internals van een taal (zoal bijvoorbeeld wat de precieze eigenschappen zijn van een functie als empty(). )quote:Op donderdag 26 september 2013 22:39 schreef Light het volgende:
[..]
Uitzoeken hoe dingen werken kan heel goed zonder framework, is misschien nog wel beter dan met een framework. Voor dingen die op een live website komen, is een framework wel aan te raden. De grootste veiligheidsrisico's zijn dan meteen afgedicht (of je moet een update installeren als er een bug gefixt is).
1 2 3 4 5 6 | if (defined $hash{$key}) { print "$key bestaat en heeft als value $hash{$key}"; } else { print "$key bestaat niet of heeft undef als value"; } |
1 2 3 4 5 6 7 8 | <?php if (array_key_exists($key, $hash) && isset($kash[$key])) { print "$key bestaat en heeft als value $hash[$key]"; } else { print "of toch anders?" } ?> |
Dat. Om de logica te begrijpen, is het heel geschikt. Zolang je dat framework maar niet gebruikt voor productiecode. (En dat geldt voor iedereen.)quote:Op donderdag 26 september 2013 22:40 schreef totalvamp het volgende:
Al is het waarschijnlijk wel handig als je zelf met een framework bouwen begint. Niet omdat je een goed framework gaat maken, maar om de logica erachter te snappen
Ik gebruik mijn eigen voor een scriptquote:Op donderdag 26 september 2013 22:45 schreef Light het volgende:
[..]
Dat. Om de logica te begrijpen, is het heel geschikt. Zolang je dat framework maar niet gebruikt voor productiecode. (En dat geldt voor iedereen.)
quote:Op donderdag 26 september 2013 22:45 schreef slacker_nl het volgende:
Bestaat er niet iets als defined in php?
In perl doe je dit:
[ code verwijderd ]
Want is_empty werkt niet als dusdanig.
[ code verwijderd ]
1 2 3 4 5 6 7 8 | <?php $a = array(); $a[0] = null; var_dump(array_key_exists(0, $a)); # bool(true) php > var_dump(isset($a[0])); # bool(false) ?> |
het is logisch dat array_keys_exists een true geeft hier je controleert op de key niet de waardequote:
Wat ik zei dusquote:
array_key_exists() controleert niet op de waarde, dat klopt. isset() doet dat wel, die geeft false terug als de waarde null is (en true bij alle andere waarden). Ze zijn dus net niet helemaal uitwisselbaar.quote:Op donderdag 26 september 2013 22:53 schreef totalvamp het volgende:
[..]
het is logisch dat array_keys_exists een true geeft hier je controleert op de key niet de waarde
En als de key niet bestaat gaat het dan ook niet warnen?quote:Op donderdag 26 september 2013 22:59 schreef Light het volgende:
[..]
Jouw code kan worden vereenvoudigd door de aanroep van array_key_exists() weg te laten.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | cat x.php ; php x.php; echo "" <?php include_once("/home/xx/sbox/php/etc/env.php"); $array = array("hello" => "world", "how" => "are", "you" => null); $k = 'test'; print "value :" . $array[$k]; print "isset :" . isset($array[$k]); print "array_key :" . array_key_exists($k, $array); ?> PHP Notice: Undefined index: test in /home/xx/git/private/php/bin/x.php on line 9 Notice: Undefined index: test in /home/xx/git/private/php/bin/x.php on line 9 value :isset :array_key : |
Nope, niet als je isset() gebruikt.quote:Op donderdag 26 september 2013 23:01 schreef slacker_nl het volgende:
[..]
En als de key niet bestaat gaat het dan ook niet warnen?
Een template engine gebruiken?quote:Op vrijdag 27 september 2013 22:48 schreef xaban06 het volgende:
Hoe moet je PHP en HTML apart houden? Vooral met loops vind ik het lastig.
Stukje php, daaroder html, met php er door heen, onleesbaar.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |