FOK!forum / Digital Corner / [PHP/(My)SQL] voor dummies #107
The_Terminatordinsdag 26 februari 2013 @ 15:47
php.jpg


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

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

Tutorials:
W3Schools PHP
W3Schools SQL

Succes heren met het volgende deeltje!
Rockfiredinsdag 26 februari 2013 @ 15:50
quote:
7s.gif Op dinsdag 26 februari 2013 15:47 schreef The_Terminator het volgende:

[..]

Ik weet het, ik gebruik zelf MySQLi. Ik heb gewoon een beetje genoeg van dat gezeik over dat stuk code wat ik heb gepost. Het doet wat het moet doen, als webbyplus besluit het te gebruiken dan moet hij het maar naar wens aanpassen, de blauwdruk is er, de rest kan hij zelf wel naar wens aanpassen mag ik hopen.

Maargoed, lekker zelf weten, ik post hier geen regel code meer.
Ik vind dat je helemaal gelijk hebt. Jij post in ieder geval iets waar webbyplus nog wat aan kan hebben als voorbeeld. De rest levert alleen maar commentaar zonder met iets echt nuttigs te komen...
KomtTijd...dinsdag 26 februari 2013 @ 15:56
quote:
14s.gif Op dinsdag 26 februari 2013 15:50 schreef Rockfire het volgende:

[..]

Ik vind dat je helemaal gelijk hebt. Jij post in ieder geval iets waar webbyplus nog wat aan kan hebben als voorbeeld. De rest levert alleen maar commentaar zonder met iets echt nuttigs te komen...
Nou me dunkt, voor zo'n wazige vraag vind ik dat'ie behoorlijk wat nuttige input gekregen heeft! :o
Chandlerdinsdag 26 februari 2013 @ 17:22
Wat moet ik hier van denken? zit de medewerker nou te lullen of what? zie chat...

quote:
Welkom bij onze live chat. Ik help u graag met het beantwoorden van korte en snelle vragen over onze diensten, ons klantenpaneel en de verschillende controle panelen zoals DirectAdmin en SolusVM.
Voor overige vragen vragen wij u contact op te nemen met support@webhoster.nl.

Klant Tue, 2/26/2013 05:09:24 pm
beste, kunt u zorgen dat er weer diskruimte komt op de server van ****.nl? krijg nu meldingen dat er geen schrijfruimte meer is

Medewerker Tue, 2/26/2013 05:10:16 pm
Er moet voldoende ruimte zijn

Klant Tue, 2/26/2013 05:10:44 pm
Daar denkt PHP anders over

[err] => WARNING
[errno] => 2
[errstr] => mkdir() [<a href='function.mkdir'>function.mkdir</a>] : No space left on device
[errfile] => /home****/public_html/functio ns.php
[errline] => 221
[errsql] =>

Medewerker Tue, 2/26/2013 05:12:08 pm
Moment

Test het nogmaals.

Klant Tue, 2/26/2013 05:15:12 pm
probleem opgelost!, en toch wat te weinig ruimte? :P

Medewerker Tue, 2/26/2013 05:15:33 pm
Nee, php dacht dat nog.

Fijne dag verder.
raptorixdinsdag 26 februari 2013 @ 18:54
quote:
0s.gif Op dinsdag 26 februari 2013 12:24 schreef webbyplus het volgende:
Hallo, zie bijgaande tabel mappen;
[ afbeelding ]

Nu wil ik in alfabetische volgorde van mapname een boomstructuur opbouwen waarbij wordt ingesprongen met 5 x spatie per niveau.
ID --> Unieke naam
Mapname --> Omschrijving
Parentmap --> Geeft aan welke ID de parent is van deze map
Haschildren --> Geeft aan of de betreffende ID children heeft
Level --> Geeft aan op welk niveau de map zich bevind

Dit met de wetenschap dat het aantal niveau's theoretisch gezien tot 20 zou kunnen uitlopen.

De uitvoer zou er obv deze tabel zo uitzien;
----- school
---------- AV1
--------------- kjhkj
---------- AV2
---------- AV3
---------- jkl
---------- mno
---------- pqr
----- werk
---------- def
--------------- test
---------- ghi
---------- stu
---------- vwx
---------- yz

Iemand zin in deze uitdaging?
In de meeste database doe je dit via order by prior, in Oracle zit het zeker, en ik denk als je daar op gaat googlen dat je wel wat dingen vind, iets zoals dit: http://explainextended.co(...)al-queries-in-mysql/

Laatst had ik vergelijkbaar probleem waarbij ik hiearchy van documenttypes diende te queryen, uiteindelijk deze toch wel vrij pittige query voor MS Sqlserver geschreven:%

[ Bericht 9% gewijzigd door raptorix op 26-02-2013 18:59:35 ]
papernotedinsdag 26 februari 2013 @ 18:55
quote:
5s.gif Op dinsdag 26 februari 2013 17:22 schreef Chandler het volgende:
Wat moet ik hier van denken? zit de medewerker nou te lullen of what? zie chat...

[..]

Dat soort informatie kan gecached worden: http://php.net/clearstatcache Of dat ook voor mkdir op gaat weet ik niet.
raptorixdinsdag 26 februari 2013 @ 19:01
Kennelijk kun je hier dus geen sql code plakken, waarschijnlijk security ding.

http://pastebin.com/zLdbUnRG
Chandlerdinsdag 26 februari 2013 @ 19:37
quote:
0s.gif Op dinsdag 26 februari 2013 18:55 schreef papernote het volgende:

[..]

Dat soort informatie kan gecached worden: http://php.net/clearstatcache Of dat ook voor mkdir op gaat weet ik niet.
Tja maar ze zouden dan toch kunnen aangeven dat inderdaad de DISK vol was... (kan gebeuren toch) maar nee natuurlijk was dat niet het geval volgens hun....
Chandlerdinsdag 26 februari 2013 @ 19:38
quote:
0s.gif Op dinsdag 26 februari 2013 19:01 schreef raptorix het volgende:
Kennelijk kun je hier dus geen sql code plakken, waarschijnlijk security ding.

http://pastebin.com/zLdbUnRG
1
2
3
4
5
6
7
8
9
10
11
12
13
WITH n(nodeId, alias,mastercontenttype,icon,thumbnail) AS 
   (SELECT nodeId, alias,mastercontenttype,icon,thumbnail
    FROM [cmsContentType]
    UNION ALL
    SELECT nplus1.nodeId, nplus1.alias , nplus1.mastercontenttype, nplus1.icon,nplus1.thumbnail
    FROM [cmsContentType] as nplus1, n
    WHERE n.nodeId = nplus1.masterContentType)

SELECT distinct cmsContentType_1.alias,n.nodeId,n.alias,n.icon,n.thumbnail FROM n
LEFT OUTER JOIN
dbo.cmsContentType AS cmsContentType_1
ON n.masterContentType = cmsContentType_1.nodeId
order by n.nodeId

Niet?
raptorixwoensdag 27 februari 2013 @ 08:31
quote:
6s.gif Op dinsdag 26 februari 2013 19:38 schreef Chandler het volgende:

[..]
[ code verwijderd ]

Niet?
Mogelijk probleem met onze corporate firewall :)
Chandlerwoensdag 27 februari 2013 @ 08:34
quote:
0s.gif Op woensdag 27 februari 2013 08:31 schreef raptorix het volgende:

[..]

Mogelijk probleem met onze corporate firewall :)
:?
raptorixwoensdag 27 februari 2013 @ 08:35
quote:
0s.gif Op woensdag 27 februari 2013 08:34 schreef Chandler het volgende:

[..]

:?
Onze firewall blocked soms suspicious requests zoals xss en sql, beheerder zit hier naast me dus zal eens vragen :)
Chandlerwoensdag 27 februari 2013 @ 10:05
Apart als je het dan wel op een andere site kan zetten? :D
StMwoensdag 27 februari 2013 @ 14:27
quote:
0s.gif Op dinsdag 26 februari 2013 18:55 schreef papernote het volgende:

[..]

Dat soort informatie kan gecached worden: http://php.net/clearstatcache Of dat ook voor mkdir op gaat weet ik niet.
Nope en als het goed is is die cache ook per request. Wat wel kan is dat ze een virtueel filesystem per klant gebruiken voor security redenen. Een soort chroot maar die nog veel verder gaat (CageFS bv)
Chandlerwoensdag 27 februari 2013 @ 16:20
quote:
0s.gif Op woensdag 27 februari 2013 14:27 schreef StM het volgende:

[..]

Nope en als het goed is is die cache ook per request. Wat wel kan is dat ze een virtueel filesystem per klant gebruiken voor security redenen. Een soort chroot maar die nog veel verder gaat (CageFS bv)
Dus zat de hoster lekker uit z'n nek te lullen :{
JKwoensdag 27 februari 2013 @ 19:46
Pfff een CSS style sheet in een php file (header) laden is niet makkelijk.
Ik gebruik een CSS menu, maar ik denk dat ik op zoek ga naar wat anders. :+
Ben op dit moment een HTML frame website aan het omzetten naar php (nouja, html/php combi), maar het CSS menu komt er niet netjes uit, de kleuren gaan goed, maar de <li> linkjes zet hij onder elkaar neer zonder stijl.

Ik ben overigens een php newbie, dus daar ligt het uiteraard aan.
echo en print ook al geprobeerd, maar dat ging ook niet echt (of ik doe het niet goed :+ )
KomtTijd...woensdag 27 februari 2013 @ 19:56
quote:
0s.gif Op woensdag 27 februari 2013 19:46 schreef JK het volgende:
Pfff een CSS style sheet in een php file (header) laden is niet makkelijk.

Huh, verklaar :?
Tijnwoensdag 27 februari 2013 @ 19:58
quote:
0s.gif Op woensdag 27 februari 2013 19:46 schreef JK het volgende:
Pfff een CSS style sheet in een php file (header) laden is niet makkelijk.
Ik gebruik een CSS menu, maar ik denk dat ik op zoek ga naar wat anders. :+
Ben op dit moment een HTML frame website aan het omzetten naar php (nouja, html/php combi), maar het CSS menu komt er niet netjes uit, de kleuren gaan goed, maar de <li> linkjes zet hij onder elkaar neer zonder stijl.

Ik ben overigens een php newbie, dus daar ligt het uiteraard aan.
echo en print ook al geprobeerd, maar dat ging ook niet echt (of ik doe het niet goed :+ )
Wat wil je dynamisch maken aan je stylesheet?
stefanhaanwoensdag 27 februari 2013 @ 19:59
quote:
0s.gif Op woensdag 27 februari 2013 19:46 schreef JK het volgende:
Pfff een CSS style sheet in een php file (header) laden is niet makkelijk.
Ik gebruik een CSS menu, maar ik denk dat ik op zoek ga naar wat anders. :+
Ben op dit moment een HTML frame website aan het omzetten naar php (nouja, html/php combi), maar het CSS menu komt er niet netjes uit, de kleuren gaan goed, maar de <li> linkjes zet hij onder elkaar neer zonder stijl.

Ik ben overigens een php newbie, dus daar ligt het uiteraard aan.
echo en print ook al geprobeerd, maar dat ging ook niet echt (of ik doe het niet goed :+ )
Is je vraag hoe je een PHP stylesheet kan gebruiken?

Zoja dan zo
De stylesheet:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
header
("Content-type: text/css");
$white '#fff';
$dkgray '#333';
$dkgreen '#008400';
?>
body {
 background:<?php=$white?>;
 color:<?php=$dkgray?>;
}
h1, h2, h3, h4 {
 color:<?php=$dkgreen?>;
}
blockquote {
 color:<?php=$dkgreen?>;
}

De include code in je php/html file
1
2
<link rel="stylesheet" type="text/css"
 media="screen" href="style.php">
JKwoensdag 27 februari 2013 @ 19:59
Voor een php beginner dan. ;)

In de CSS staan kleuren en stijlen, de kleur pakt hij op, maar bij <ul> <li> moet hij een net horizontaal menu maken met knoppen. Nu laat hij alles zien in old fashion HTML, dus met van die bulletpoints.

In de header.php wil ik een menu hebben, de rest van de content laad ik in de php die men opvraagt en dan nog een footer.php. Maar bij de header gaat het fout... en die header laad ik overigens in vlak na </head>, omdat je anders verplicht de titel in de header.php moet stoppen en dus elke keer dezelfde titel hebt voor elke pagina.


Die CSS is alleen nodig in de header, niet op de rest van de pagina.. dus dynamisch?!
Tijnwoensdag 27 februari 2013 @ 20:07
quote:
0s.gif Op woensdag 27 februari 2013 19:59 schreef JK het volgende:
Voor een php beginner dan. ;)


Die CSS is alleen nodig in de header, niet op de rest van de pagina.. dus dynamisch?!
Waarom niet gewoon een selector die alleen van toepassing is op je header? :?
KomtTijd...woensdag 27 februari 2013 @ 20:17
quote:
0s.gif Op woensdag 27 februari 2013 19:59 schreef JK het volgende:
Voor een php beginner dan. ;)

In de CSS staan kleuren en stijlen, de kleur pakt hij op, maar bij <ul> <li> moet hij een net horizontaal menu maken met knoppen. Nu laat hij alles zien in old fashion HTML, dus met van die bulletpoints.

In de header.php wil ik een menu hebben, de rest van de content laad ik in de php die men opvraagt en dan nog een footer.php. Maar bij de header gaat het fout... en die header laad ik overigens in vlak na </head>, omdat je anders verplicht de titel in de header.php moet stoppen en dus elke keer dezelfde titel hebt voor elke pagina.

Die CSS is alleen nodig in de header, niet op de rest van de pagina.. dus dynamisch?!
...Volgens mij ben je echt iets héél raars aan het bouwen... doe eens een voorbeeldje?

Dat (oa) je <title> dynamisch is maakt toch JUIST dat je je header in PHP wilt maken?
JKwoensdag 27 februari 2013 @ 20:18
Euh?! Ik denk dat ik me nog even wat verder moet verdiepen in php.
Zegt me helaas nog niets, behalve dat ik bij selector denk aan dat je kijkt met welke browser je op een site kijkt en aan de hand daar van dingen toont.

Maar ik denk dat ik sowieso in eerste instantie alle HTML bestanden PHP vriendelijk ga maken en dan op het laatste moment dit menu probleem wil oppakken. Nog een 110 bestanden te gaan.

Ik zal even een voorbeeldje maken. Overigens bedoel ik met de header gewoon de bovenkant van de pagina, dus niet wat tussen <head></head> staat, maar een statische bovenkant met daar in een menu. Deze 'header' wil ik via een include oproepen en daarna pas de content tonen van die pagina.

Voorbeeldje zoeken....
Tijnwoensdag 27 februari 2013 @ 20:21
quote:
0s.gif Op woensdag 27 februari 2013 20:18 schreef JK het volgende:
Euh?! Ik denk dat ik me nog even wat verder moet verdiepen in php.
Eerder in CSS. Je probeert iets met PHP waar het helemaal niet voor bedoeld is.

quote:
Maar ik denk dat ik sowieso in eerste instantie alle HTML bestanden PHP vriendelijk ga maken en dan op het laatste moment dit menu probleem wil oppakken. Nog een 110 bestanden te gaan.
Ik denk dat je iets verschrikkelijk verkeerd doet als je 110 bestanden moet doorploegen.
JKwoensdag 27 februari 2013 @ 20:31
Ik moet toch in die HTML bestanden wat overbodige HTML code verwijderen en includes toevoegen. Of heb je een beter idee?

Hier de voorbeelden van bijv. index.php en header.php;

index.php:
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
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>blah</title>
<style type="text/css">
<!--
.style4 {font-family: Arial, Helvetica, sans-serif; font-size: 12px; }
.style6 {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 14px;
    font-weight: bold;
}
a:link {
    color: #0000FF;
}
a:visited {
    color: #990066;
}
a:hover {
    color: #FF0000;
}
a:active {
    color: #00CC00;
}
.style7 {font-size: 10px}
-->
</style>
</head>
<?php include("header.php"); ?>
  
inhoud van de pagina komt hier

<?php include("footer.php"); ?>

header.php:
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
<link href="menu_assets/styles.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
.style1 {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 12px;
}
.style3 {font-family: Arial, Helvetica, sans-serif}
.style5 {font-family: Arial, Helvetica, sans-serif; font-size: 10px; }
-->
</style>
<?php include("googleanalyticscode.php"); ?>
<body>
<div align="center">
<img src="menu/banner4b.jpg" width="1020" height="110" />
  </center>
</div>
<center>
<div id='cssmenu'>
<ul>
   <li class='active '><a href='index.php'><span>Home</span></a></li>
   <li class='active '><a href='blah.php'><span>Menu item 2</span></a></li>
   <li class='active '><a href='blah2.php'><span>Menu item 3</span></a></li>
   <li class='active '><a href='blah3.php'><span>Menu item 4</span></a></li>
   <li class='active '><a href='blah4.php'><span>Menu item 5</span></a></li>
   <li class='active '><a href='blah5.php'><span>Menu item 6</span></a></li>
   <li class='active '><a href='blah6.php'><span>Menu item 7</span></a></li>
   <li class='active '><a href='blah7.php'><span>Menu item 8</span></a></li>
   <li class='active '><a href='contact.php'><span>Contact</span></a></li>
</ul>
</div></center>
<p>

Wil je de CSS code ook nog zien? Maar verdiepen in CSS is misschien ook wel een goeie. :+
In de header gooi ik nog wat styles open, vraag me af of dat wel goed gaat na </head>.


Hmmzz ik zie nu dat het bij 1 php bestand wél goed gaat. Dan zit daar dus de oplossing in.
Tijnwoensdag 27 februari 2013 @ 20:38
Ik zou even stoppen en goed nadenken, wat je doet nu echt een heleboel werk zonder dat dat nodig is.

Om te beginnen zou je je CSS gewoon in een losse stylesheet file moeten zetten. Die include je vanuit de head op elke pagina en met de juiste selectors zorg je dat alle elementen hun gewenste stijl krijgen. En werk alsjeblieft met zinnige namen voor ids en klassen, ipv .style1, .style2, .style3. Maar vaak kun je ook zonder namen een hoop bereiken, dus grijp daar sowieso niet te snel naar.

Verder wil je echt niet de content van je pagina in je index.php zetten, daar wil je alleen de outline van je document zetten. De content kun je beter includen in kleine files waar verder niks in zit dan dat. Je zou de juiste file automatisch kunnen includen dmv url rewriting, zodat je een beetje zinnige adressen maakt ipv page1.php, page2.php etc.

Maar nog veel beter is natuurlijk de content helemaal niet in 100+ files te zetten, maar via een CMS te beheren die de content in een database opslaat. Zeker als het om zoveel content gaat, is het echt een slecht idee om dat zonder systeem te doen.

[ Bericht 4% gewijzigd door Tijn op 27-02-2013 20:47:06 ]
JKwoensdag 27 februari 2013 @ 21:07
Dreamweaver maakt die style namen, in die tool zie je dan makkelijk wat de styles zijn.
Verder is er ook een losse stylesheet (menu_assets/styles.css), de styles in de header.php zijn ook voor de rest van de pagina, naast de stylesheet.
Ik zal even proberen uit te leggen waarom ik dit zo doe;

De website was een volledige HTML site in een frameset. Omdat ik niet wilde dat mensen binnenkwamen op een willekeurige pagina (omdat het menu dan niet zichtbaar was), zat er een ondetect javascript code in, welke de mensen naar de frontpage toe stuurden. Helaas had dit als resultaat dat de Google bot enkel de frontpage indexeert en ik maar op een paar steekwoorden te vinden ben ipv de artikelen die er op staan. Om dit op te lossen dump ik de frameset en gebruik ik php voor de includes, om het menu op te roepen in elk bestand.

Als ik het nu tijdelijk op kan lossen (het is me inmiddels gelukt om het goed te tonen), dan kan ik daarna tijd maken om een keer goed CSS, PHP en CMS uit te zoeken en mee te gaan experimenteren, want hier kan ik HEEL VEEL in leren nog.
Die 110 pagina's zijn statisch, dus in principe maak ik ze één keer en hoef ik er niet meer naar om te kijken, zeker niet met die includes. Maar ik ga zeker nog wel met een CMS experimenteren, ik heb nog ergens Wordpress draaien waar ik nog verder mee moet.

Bedankt voor de hulp zo ver, ik weet dat het beter kan, maar als het nu in elk geval zo even kan draaien, kan ik rustig aan tijd gaan maken om het één en ander te leren.
#ANONIEMwoensdag 27 februari 2013 @ 21:08
Hoe vaak we die onderste alinea hier niet horen :X
JKwoensdag 27 februari 2013 @ 21:10
quote:
0s.gif Op woensdag 27 februari 2013 21:08 schreef Scorpie het volgende:
Hoe vaak we die onderste alinea hier niet horen :X
En hoe vaak doen ze het niet dan? :)
Ik heb al een CMS website draaien (al moet ik er nog mee verder) en ik begin net met PHP, dus daar valt genoeg leuks mee te doen.
Tijnwoensdag 27 februari 2013 @ 21:10
Je gebruikt PHP nu alleen niet echt. Je include alleen bestanden tot 1 geheel, maar er is verder niks dynamisch aan.
JKwoensdag 27 februari 2013 @ 21:16
Dat klopt, maar ik wil me er wel in gaan verdiepen en er mee experimenteren. Er valt genoeg leuks in te doen. Zal eens wat PHP sites bekijken om de basis te leren.

Overigens was dit de oplossing van het probleem;
In de 'php files' (eigenlijk dus HTML bestanden waar wat tags zijn verwijderd en hernoemd zijn naar .php) heb ik <html> moeten vervangen door dit;

1
2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

En dan werkt mijn menu goed...
Tijnwoensdag 27 februari 2013 @ 21:18
Waarom zou je anno 2013 een nieuwe site nog bouwen met een XHTML 1.0 doctype? Waarom geen HTML5, dat is toch veel makkelijker?
#ANONIEMwoensdag 27 februari 2013 @ 21:18
quote:
0s.gif Op woensdag 27 februari 2013 21:10 schreef JK het volgende:

[..]

En hoe vaak doen ze het niet dan? :)
Ik heb al een CMS website draaien (al moet ik er nog mee verder) en ik begin net met PHP, dus daar valt genoeg leuks mee te doen.
99.8%.
JKwoensdag 27 februari 2013 @ 21:21
Ik kan er ook
1<!DOCTYPE html>

van maken. Dat werkt ook. Die XHTML 1.0 line was wat ik uit een ander bestand haalde wat wel werkte.

Ik hoop dat ik dan bij die 0.02% hoor. Genoeg tips in de OP om te volgen.
Tijnwoensdag 27 februari 2013 @ 21:23
Als je wil, wil ik best een soort template posten dat je aan zou kunnen houden. Ik ben alleen een beetje bang dat het aan dovemansoren gericht zou zijn. Om te beginnen zal je echt moeten stoppen met het gebruiken van Dreamweaver en gewoon zelf je files schrijven, anders wordt het nooit wat.
JKwoensdag 27 februari 2013 @ 21:30
Misschien is het idd wel tegen dovemansoren gericht. :s)
Waar maak jij dan je pagina's in?
Tijnwoensdag 27 februari 2013 @ 21:31
TextMate op de Mac. Ik ontwikkel nooit op andere platformen, maar ook voor Windows en Linux bestaan meer dan genoeg capabele texteditors.
Arceewoensdag 27 februari 2013 @ 21:31
quote:
0s.gif Op woensdag 27 februari 2013 21:30 schreef JK het volgende:
Misschien is het idd wel tegen dovemansoren gericht. :s)
Waar maak jij dan je pagina's in?
Gewoon in een texteditor, gok ik. :s)
JKwoensdag 27 februari 2013 @ 21:34
Pff.. ik gebruik een mix van Dreamweaver en wat niet lekker gaat, doe ik in notepad.
Ik ken ergere programma's, waar je helemaal geen vrijheid hebt.
Moet er niet aan denken alles in een texteditor te doen... maar dat komt misschien ook wel omdat ik niet programmeer. Wel eens wat Pascal, Delphi en Arexx gedaan (voor zover je Arexx programmeren wilt noemen), maar ik ben meer van de WYSIWYG met waar nodig notepad.
Tijnwoensdag 27 februari 2013 @ 21:38
quote:
0s.gif Op woensdag 27 februari 2013 21:34 schreef JK het volgende:

Moet er niet aan denken alles in een texteditor te doen...
Het is de enige manier om een fatsoenlijke website te maken. Echt waar.
JKwoensdag 27 februari 2013 @ 21:41
Dat geloof ik best, Dreamweaver en andere WYSIWYG-editors bouwen er vaak een hoop onzin om heen. Maar gebruik jij dan verder nog een CMS?
Tijnwoensdag 27 februari 2013 @ 21:41
Ja, dat is m'n werk :+ Maar in feite heeft een CMS hier weinig mee te maken. Een CMS is er voor de content, wat je nu aan het maken bent is het raamwerk waar die content in terecht moet komen. Dat moet je echt met de hand schrijven, anders heeft het een structuur die nergens op slaat en wordt het onderhouden en vindbaar maken van je site praktisch onmogelijk.
JKwoensdag 27 februari 2013 @ 21:51
Ik mag hopen dat met deze includes en zonder het ondetect script de site beter vindbaar is, ondanks dat het op z'n boerenfluitjes is in de ogen van een pro.

Maar in een CMS kan je toch ook meteen je content schrijven? Als je er direct HTML in kan zetten is dat wel fijn om wat meer de layout etc. te kunnen bepalen ipv hier en daar een widget te gebruiken. Ik moet echt eens wat avondjes in die Wordpress site gaan rommelen...
Tijnwoensdag 27 februari 2013 @ 21:54
quote:
0s.gif Op woensdag 27 februari 2013 21:51 schreef JK het volgende:
Ik mag hopen dat met deze includes en zonder het ondetect script de site beter vindbaar is, ondanks dat het op z'n boerenfluitjes is in de ogen van een pro.
Het voornaamste probleem is dat je site nog steeds niet erg semantisch van opzet is. Dat je geen frames meer gebruikt helpt wel wat, maar Google snapt er nog steeds niet echt veel van als alles in divs en uls zit met klassenamen als "style1" of "cssmenu".

Nu je een HTML5 doctype gebruikt zou je in elk geval <header>, <footer>, <nav>, <section> en <article> kunnen gaan gebruiken. Dat helpt waarschijnlijk al wel iets. Ik hoop dat je Dreamweaver zo ver krijgt om dat te doen. Als je het zelf typt, is het natuurlijk zo gepiept.

quote:
Maar in een CMS kan je toch ook meteen je content schrijven?
Ja. Maar waar je nu mee bezig bent is juist alles behalve de content.
boem-dikkiewoensdag 27 februari 2013 @ 21:55
Leeft dat nog, WYSIWYG?
Tijnwoensdag 27 februari 2013 @ 21:55
quote:
11s.gif Op woensdag 27 februari 2013 21:55 schreef boem-dikkie het volgende:
Leeft dat nog, WYSIWYG?
Nee.
boem-dikkiewoensdag 27 februari 2013 @ 21:56
Gelukkig.
JKwoensdag 27 februari 2013 @ 22:01
Zal morgen eens over die HTML5 <header> <article> etc. lezen.
WYSIWYG.. een CMS kan toch ook WYSIWYG zijn waar sommige mensen hun content in zetten?
Of de webloggers etc die wat platte tekst er in rammen zonder ook maar iets van HTML te weten?

Overigens staan alleen de menu opties in <li> en <ul>, de rest van de content staat in HTML op de pagina, daar kunnen dus <article> tags omheen om het voor Google bot duidelijker te maken?
Ik lees het morgen even door. :P

En een CMS is leuk, maar niet als je site er hetzelfde uit ziet als al die andere honderden sites. Kan je weer je eigen template gaan proberen te maken...
Juicyhilwoensdag 27 februari 2013 @ 22:02
<marquee />
Tijnwoensdag 27 februari 2013 @ 22:07
quote:
0s.gif Op woensdag 27 februari 2013 22:01 schreef JK het volgende:

En een CMS is leuk, maar niet als je site er hetzelfde uit ziet als al die andere honderden sites. Kan je weer je eigen template gaan proberen te maken...
Een CMS heeft niets te maken met hoe je site eruit ziet. Een CMS beheert de content. Verder niks.
JKwoensdag 27 februari 2013 @ 22:11
Er hangt toch ook een module aan om de content te kunnen presenteren in een bepaalde stijl... of valt dat niet onder een CMS?
Tijnwoensdag 27 februari 2013 @ 22:15
De meeste CMS'en hebben themes of templates of hoe ze het ook genoemd hebben om je site verschillende vormgeving te geven. Er zijn natuurlijk wel bepaalde populaire themes, waardoor je snel door zou kunnen hebben dat iets een Wordpress- of een Drupal-site is, maar in principe is de vormgeving van een website compleet onafhankelijk van het gebruikte CMS.
JKwoensdag 27 februari 2013 @ 22:26
Goed om te weten. :) Toch denk ik dat de meesten een standaard template zullen pakken en hun content er op kwakken en klaar. Hoe vaak hoor ik mensen wel niet zeggen 'he, dat is die en die template, of niet?'.

Enfin, ik ga m'n bed in en morgen eens wat meer lezen nog over die HTML5 tags en wat meer van die PHP sites doorlezen om wat te kunnen experimenteren met PHP. Lokaal nu ook XAMPP draaien om in elk geval PHP scripts te kunnen testen, zonder het te moeten uploaden naar de webserver.

Bedankt voor jullie geduld van deze eigenwijs. :)
webbyplusdonderdag 28 februari 2013 @ 14:18
quote:
0s.gif Op dinsdag 26 februari 2013 12:24 schreef webbyplus het volgende:
Hallo, zie bijgaande tabel mappen;
[ afbeelding ]

Nu wil ik in alfabetische volgorde van mapname een boomstructuur opbouwen waarbij wordt ingesprongen met 5 x spatie per niveau.
ID --> Unieke naam
Mapname --> Omschrijving
Parentmap --> Geeft aan welke ID de parent is van deze map
Haschildren --> Geeft aan of de betreffende ID children heeft
Level --> Geeft aan op welk niveau de map zich bevind

Dit met de wetenschap dat het aantal niveau's theoretisch gezien tot 20 zou kunnen uitlopen.

De uitvoer zou er obv deze tabel zo uitzien;
----- school
---------- AV1
--------------- kjhkj
---------- AV2
---------- AV3
---------- jkl
---------- mno
---------- pqr
----- werk
---------- def
--------------- test
---------- ghi
---------- stu
---------- vwx
---------- yz

Iemand zin in deze uitdaging?
Eerder kwam ik met bovenstaande vraag, uiteindelijk heb ik wat code gevonden die goed lijkt te werken;

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
  
include ("database/connect.php");
  
$result mysql_query("SELECT * FROM maps;"$db);
  include (
"database/disconnect.php");

  
$mijnarray = array();
  
$teller 0;
  while (list(
$id$mapname$parentmap) = mysql_fetch_row($result))
  {
    
$mijnarray[$teller]["id"] = $id;
    
$mijnarray[$teller]["map"] = $mapname;
    
$mijnarray[$teller]["parent"] = $parentmap;
    
$teller $teller 1;
  }

function 
generatePageTree($datas$parent 0){
    
$tree '<ul>';
    for(
$i=0$ni=count($datas); $i $ni$i++){
        if(
$datas[$i]['parent'] == $parent){
            
$tree .= '<li>';
            
$tree .= $datas[$i]['map'];
            
$tree .= generatePageTree($datas$datas[$i]['id'], $depth+1);
            
$tree .= '</li>';
        }
    }
    
$tree .= '</ul>';
    return 
$tree;
}

echo(
generatePageTree($mijnarray));

?>

Eerst zet ik de uitkomst van de query dus in een array en daarna genereer ik de tree.
Nu vraag ik me alleen nog af; is dit de meeste optimale manier om een result van een query in een array te zetten? En heeft iemand nog andere opmerkingen?

bvd
web

[ Bericht 2% gewijzigd door webbyplus op 28-02-2013 14:24:05 ]
rekenwonderdonderdag 28 februari 2013 @ 14:37
quote:
0s.gif Op donderdag 28 februari 2013 14:18 schreef webbyplus het volgende:
En heeft iemand nog andere opmerkingen?
Niet om je een boel werk te bezorgen, maar kijk eens naar het sql adjacency list model.
pascal08donderdag 28 februari 2013 @ 21:50
Kan iemand mij vertellen waarom de volgende query 3 seconden in beslag neemt? Als ik ORDER BY weghaal gaat het in een fractie van een seconde.

1
2
3
4
5
6
7
SELECT a.`first_name` , a.`last_name` , b.`age`
FROM (
`atable` a
)
LEFT JOIN  `btable` b ON a.`id` = b.`id` 
ORDER BY `rating` DESC 
LIMIT 10
Tijndonderdag 28 februari 2013 @ 21:57
Geen index op de kolom "rating"?
pascal08donderdag 28 februari 2013 @ 22:00
quote:
5s.gif Op donderdag 28 februari 2013 21:57 schreef Tijn het volgende:
Geen index op de kolom "rating"?
Toevallig kwam iemand waaraan ik het eerst vroeg ook met hetzelfde antwoord. Helaas wordt de query er niet significant sneller van. Ik kan me niet voorstellen dat deze query echt 3 seconden nodig heeft.

Zonder ORDER BY:

29Up7

Met ORDER BY:

29UnM

EDIT: Probleem opgelost. Rating moest dus wel geïndexeerd worden. 8)7
EDIT2: Toch niet... :'( De queries gingen voor heel even op verwachte snelheid, maar nu is het weer 3-4 seconden. :(

[ Bericht 12% gewijzigd door pascal08 op 28-02-2013 22:23:42 ]
urseldonderdag 28 februari 2013 @ 22:22
Zit mobiel, dus kan niet testen. Maar kan het omdat je bij rating niet de table meegeeft?
Tijndonderdag 28 februari 2013 @ 22:24
Wat is rating voor kolom?
pascal08donderdag 28 februari 2013 @ 22:26
quote:
5s.gif Op donderdag 28 februari 2013 22:24 schreef Tijn het volgende:
Wat is rating voor kolom?
Type: int(2), bedoel je dat?

Overigens is de query dynamisch en wil ik kunnen sorteren op alle kolommen, alfabetisch of numeriek.
pascal08donderdag 28 februari 2013 @ 22:30
quote:
0s.gif Op donderdag 28 februari 2013 22:22 schreef ursel het volgende:
Zit mobiel, dus kan niet testen. Maar kan het omdat je bij rating niet de table meegeeft?
Geprobeerd, maar geen effect helaas.

Ik denk dat er niets anders op zit dan de twee tabellen samen te voegen in de database zelf. Queries van 3 seconden zijn natuurlijk niet acceptabel.

[ Bericht 13% gewijzigd door pascal08 op 28-02-2013 23:20:38 ]
KomtTijd...vrijdag 1 maart 2013 @ 00:43
ff explain gebruiken, heeft mij ook geholpen een tijdje geleden toen ik met een baggertrage query zat
pascal08vrijdag 1 maart 2013 @ 11:53
quote:
14s.gif Op vrijdag 1 maart 2013 00:43 schreef KomtTijd... het volgende:
ff explain gebruiken, heeft mij ook geholpen een tijdje geleden toen ik met een baggertrage query zat
Epic, die command kende ik nog niet. :D

Ik heb het uiteindelijk opgelost door de resultaten van een kleinere query uit te lezen en daarmee de bijbehorende gegevens uit de andere tabel op te zoeken. De queries zijn in ieder geval niet meer de bottleneck. Bedankt voor dit tip, want EXPLAIN ga ik zeker vaker gebruiken. ^O^

[ Bericht 23% gewijzigd door pascal08 op 01-03-2013 13:09:13 ]
Chandlervrijdag 1 maart 2013 @ 15:42
Heb ik weer wat, krijg ik opeens op een site die ik lokaal host een foutmelding van google maps... key invalid... probeer ik die aan te passen (gebruik http://site/ als domein voor de site) blijft google zeggen dat het allemaal fout is :{ iemand een idee waar ik dit goed kan instellen? ook gebruik maken van 127.0.0.1 werkt helaas niet :{
rekenwondervrijdag 1 maart 2013 @ 17:54
quote:
0s.gif Op vrijdag 1 maart 2013 15:42 schreef Chandler het volgende:
Heb ik weer wat, krijg ik opeens op een site die ik lokaal host een foutmelding van google maps... key invalid... probeer ik die aan te passen (gebruik http://site/ als domein voor de site) blijft google zeggen dat het allemaal fout is :{ iemand een idee waar ik dit goed kan instellen? ook gebruik maken van 127.0.0.1 werkt helaas niet :{
Welk merk site is het?
Chandlervrijdag 1 maart 2013 @ 17:58
welk merk? eigen merk? :100% eigen code, alleen verwijzing naar google maps levert continue een alert op....
Rockfirevrijdag 1 maart 2013 @ 19:24
quote:
0s.gif Op vrijdag 1 maart 2013 15:42 schreef Chandler het volgende:
Heb ik weer wat, krijg ik opeens op een site die ik lokaal host een foutmelding van google maps... key invalid... probeer ik die aan te passen (gebruik http://site/ als domein voor de site) blijft google zeggen dat het allemaal fout is :{ iemand een idee waar ik dit goed kan instellen? ook gebruik maken van 127.0.0.1 werkt helaas niet :{
Als je Google Maps Api v3 gebruikt is een key niet verplicht: https://developers.google.com/maps/signup?hl=nl
Sitethiefdinsdag 5 maart 2013 @ 14:32
Kent iemand een wat lichter alternatief voor ORM oplossingen in php als bijv. Propel en Doctrine?

Ik kwam zelf bij phpactiverecord uit.
Cue_donderdag 7 maart 2013 @ 09:07
Iemand hier ervaring met UltraEdit (Studio)? Ben namelijk op zoek naar een instelling.

Bij If / Then / else statements en loops, verwacht ik zo'n +-je in de kantlijn. Zodat je hem kan collapsen of expanden. Maar nu ik nieuwe versie heb is dat weg. Iemand enig idee welke instelling dat precies is?
Rockfiredonderdag 7 maart 2013 @ 09:17
quote:
5s.gif Op donderdag 7 maart 2013 09:07 schreef Cue_ het volgende:
Iemand hier ervaring met UltraEdit (Studio)? Ben namelijk op zoek naar een instelling.

Bij If / Then / else statements en loops, verwacht ik zo'n +-je in de kantlijn. Zodat je hem kan collapsen of expanden. Maar nu ik nieuwe versie heb is dat weg. Iemand enig idee welke instelling dat precies is?
Advanced -> Configuration -> Editor Display -> Code Folding -> Enable show/hide lines and code folding

Dat is in Ultra Edit, geen idee of dat ook zo is in Studio
Cue_donderdag 7 maart 2013 @ 09:21
Studio heeft ongeveer dezelfde configuratie.. dus is wel een optie.
Vreemde is dat die gewoon aanstaat (uitzetten werkt ook niet) stom ding :X

Ow lijkt enkel niet te werken in .sql files. in php wel. Ik gebruik die editor juist voor .sql :')
Hiervoor had ik dan ook gewoon UE (geen studio).

Hmm zie het al. UEStudio kent geen pl/sql. UE zelf wel.

[ Bericht 20% gewijzigd door Cue_ op 07-03-2013 09:26:59 ]
Rockfiredonderdag 7 maart 2013 @ 09:26
quote:
0s.gif Op donderdag 7 maart 2013 09:21 schreef Cue_ het volgende:
Studio heeft ongeveer dezelfde configuratie.. dus is wel een optie.
Vreemde is dat die gewoon aanstaat (uitzetten werkt ook niet) stom ding :X

Ow lijkt enkel niet te werken in .sql files. in php wel. Ik gebruik die editor juist voor .sql :')
Hiervoor had ik dan ook gewoon UE (geen studio).
Herkent hij SQL dan wel als SQL? (View -> View as (Highlighting File Type))
Cue_donderdag 7 maart 2013 @ 09:27
Zag het net. Had m'n post net 2 sec geleden geedit ;)
Cue_donderdag 7 maart 2013 @ 09:27
Hij herkent het nu als MySql 5.1

Heb het erin gekregen O+

[ Bericht 67% gewijzigd door Cue_ op 07-03-2013 09:51:06 ]
boem-dikkiedonderdag 7 maart 2013 @ 16:37
Wat werkt CodeIgniter makkelijk trouwens. Dacht probeer het even uit en die slogan over een small footprint vind ik wel terecht.
Crutchvrijdag 8 maart 2013 @ 09:02
quote:
14s.gif Op donderdag 7 maart 2013 16:37 schreef boem-dikkie het volgende:
Wat werkt CodeIgniter makkelijk trouwens. Dacht probeer het even uit en die slogan over een small footprint vind ik wel terecht.
Het verbaast mij ook, ben er sinds kort mee bezig.
Toch vind ik het nog wel wat traag, maar dat is met al die MVC-modellen zo.
stefanhaanvrijdag 8 maart 2013 @ 10:26
quote:
0s.gif Op vrijdag 8 maart 2013 09:02 schreef Crutch het volgende:

[..]

Het verbaast mij ook, ben er sinds kort mee bezig.
Toch vind ik het nog wel wat traag, maar dat is met al die MVC-modellen zo.
serieus? :o

Wat voor iets heb je er dan mee gemaakt? Heb zelf eigenlijk weinig gemerkt van dat het ooit traag was.
Crutchvrijdag 8 maart 2013 @ 10:30
quote:
14s.gif Op vrijdag 8 maart 2013 10:26 schreef stefanhaan het volgende:

[..]

serieus? :o

Wat voor iets heb je er dan mee gemaakt? Heb zelf eigenlijk weinig gemerkt van dat het ooit traag was.
Gewoon een eenvoudige webshop, niet anders dan anders.
Maar ook wel andere dingen geprobeerd, merkbaar verschil hoor.
stefanhaanvrijdag 8 maart 2013 @ 10:31
quote:
0s.gif Op vrijdag 8 maart 2013 10:30 schreef Crutch het volgende:

[..]

Gewoon een eenvoudige webshop, niet anders dan anders.
Maar ook wel andere dingen geprobeerd, merkbaar verschil hoor.
Apart :P
nooit eigenlijk iets van geweten _O- Zo leer je nog eens wat
Chandlerzaterdag 9 maart 2013 @ 10:02
Eindelijk weer heerlijk aan't scripten, heel project van a-z overnieuw aan het doen.... maar nu loop ik toch tegen iets (hopelijk kleins) aan..

De volgende query haalt gegevens uit een tabel op basis van datums (datetime) en groepeert deze op basis van alleen de datum.

1
2
3
4
5
SELECT DATE(`catches`.`datetime`), 
                      COUNT(`catches`.`id`)
FROM `catches`
GROUP BY DATE(`catches`.`datetime`)
ORDER BY `datetime` DESC

Deze query geeft 165 resultaten, dat klopt! maar nu zou ik graag ook een versie van deze query willen hebben met alleen de count van de aantal...

1
2
SELECT COUNT( DATE(  `catches`.`datetime` ) ) 
FROM  `catches`

Maar helaas, deze geeft een heel andere waarde aan... (256) en als ik de group by er weer in zet krijg ik weer meerdere resultaten terwijl ik alleen de count wil uitlezen?! waar ga ik de fout in? iemand die mij even weer op weg kan helpen?

[ Bericht 0% gewijzigd door Chandler op 09-03-2013 11:49:36 ]
KomtTijd...zaterdag 9 maart 2013 @ 12:38
SELECT COUNT(DISTINCT(DATE()))

zoiets denk ik.
Chandlerzaterdag 9 maart 2013 @ 12:41
quote:
14s.gif Op zaterdag 9 maart 2013 12:38 schreef KomtTijd... het volgende:
SELECT COUNT(DISTINCT(DATE()))

zoiets denk ik.
God, je hebt gelijk en vriendelijk bedankt kan weer lekker verder spelen! :)
Chandlerzaterdag 9 maart 2013 @ 15:38
Hoe doen jullie dat trouwens als je binnen een site een x aantal verschillende maten hebben voor afbeeldingen? in de site waar ik nu mee bezig ben komt een foto bv in 3x verschillende maten voor. Op zich geen probleem hoor, kan ze allemaal resizen maar zit meer in over hoe het aan te roepen?

bv

volledige afbeelding - http://site.nl/mediabase/{afbeeldingid}
verkleinde afbeelding http://site.nl/mediabase/{afbeeldingid}/thumb
andere kleine - http://site.nl/mediabase/{afbeeldingid}/thumbsmall
nog een andere - http://site.nl/mediabase/{afbeeldingid}/icon

en dit zijn er dan nog maar 3.. in de site zitten 8 verschillende maten dynamische plaatjes verwerkt (komend uit een database)

Of zou ik beter de aanroep met het formaat kunnen doen?

http://site.nl/mediabase/{afbeeldingid}/122x65

:? iemand! *)
Devolutionzaterdag 9 maart 2013 @ 17:24
Ik zou dat met verschillende getallen doen. Een foto van het kleinste formaat naar het grootste dus als:

http://site.nl/mediabase/{afbeeldingid}/5/
http://site.nl/mediabase/{afbeeldingid}/10/
http://site.nl/mediabase/{afbeeldingid}/15/
http://site.nl/mediabase/{afbeeldingid}/20/
http://site.nl/mediabase/{afbeeldingid}/25/
http://site.nl/mediabase/{afbeeldingid}/30/
http://site.nl/mediabase/{afbeeldingid}/35/
http://site.nl/mediabase/{afbeeldingid}/40/

Ik heb hier voor een stap van 5 gekozen zodat je altijd nog extra getallen ertussen kunt stoppen als je in de toekomst meer formaten gaat ondersteunen die tussen de huidige maten liggen.
Tijnzaterdag 9 maart 2013 @ 17:37
Ik vind leesbare urls ("/media/id/large") beter dan cryptische getalletjes.

Maar zelf serveer ik statische content eigenlijk nooit via PHP en gebruik ik gewoon de url van de file.
Chandlerzondag 10 maart 2013 @ 09:19
@Tijn; daar zat ik eerst ook aan te denken, maar met het gegeven van het formaat dat ik wil gebruiken is het toch gemakkelijker aangezien het allemaal aparte maten zijn.. Heb ik gekozen voor /id/128x128 *vb*
pascal08zondag 10 maart 2013 @ 14:00
Hoe bewaar ik variabelen van een oude AJAX-call? Kan ik die het beste opslaan als sessie variabelen in PHP? Ik heb namelijk een eventhandler die waarden uitleest uit textboxes, maar sommige textboxes kunnen bij een AJAX-call niet worden uitgelezen, omdat ze niet meer worden geoutput in HTML.

Zijn sessie variabelen hier de enige optie?
TwenteFCdinsdag 12 maart 2013 @ 22:01
quote:
14s.gif Op donderdag 7 maart 2013 16:37 schreef boem-dikkie het volgende:
Wat werkt CodeIgniter makkelijk trouwens. Dacht probeer het even uit en die slogan over een small footprint vind ik wel terecht.
Moet je eens naar Laravel 3 en Laravel 4 kijken ;).
rekenwonderwoensdag 13 maart 2013 @ 16:16
quote:
0s.gif Op zondag 10 maart 2013 14:00 schreef pascal08 het volgende:
Zijn sessie variabelen hier de enige optie?
Je zou cookies of localstorage kunnen overwegen, maar persoonlijk zou ik het lekker in de sessie houden.
kievitsboomwoensdag 13 maart 2013 @ 20:29
Hallo, kan iemand mij vertellen wat ik fout doe?

1
2
3
4
5
6
<?php

include 'variabele.php';
echo "Dit is variabele1: " . $variabele1 . "."<br/>;
echo "Dit is variabele1 maar dan keer 2: " . $variabele2 . ".";
?>

1
2
3
4
<?php
         $variabele1 = 15;
         $variabele2 = $variabele1 * 2;
?>
Arceewoensdag 13 maart 2013 @ 20:30
quote:
0s.gif Op woensdag 13 maart 2013 20:29 schreef kievitsboom het volgende:
Hallo, kan iemand mij vertellen wat ik fout doe?
1"."<br/>;

moet zijn

1".<br/>";
kievitsboomwoensdag 13 maart 2013 @ 20:33
:o

Dank!
KomtTijd...woensdag 13 maart 2013 @ 20:33
Wat je fout doet is dat je error-reporting uit hebt staan :P
kievitsboomwoensdag 13 maart 2013 @ 20:34
quote:
14s.gif Op woensdag 13 maart 2013 20:33 schreef KomtTijd... het volgende:
Wat je fout doet is dat je error-reporting uit hebt staan :P
Daar zat ik dus ook net aan te denken. Hoe zet ik dat aan? Of moet dat bij de host?
KomtTijd...woensdag 13 maart 2013 @ 20:35
Bij een webhosting kun je dat veelal via een htaccess bestand regelen.
kievitsboomwoensdag 13 maart 2013 @ 21:15
Ja, of ze zeggen dat je zelf je .htaccess kan regelen maar uiteindelijk doet die het niet, krijg een error 500. Ik wacht nog heel even, wellicht duurt het synchroniseren wat lang, maar toch...
KomtTijd...woensdag 13 maart 2013 @ 21:25
Dan doe je iets verkeerd. Zoek de documentatie van je provider er even bij of vraag ze om hulp.
Devolutiondonderdag 14 maart 2013 @ 11:48
Oh enne, include is een functie dus die moet je zo aanroepen:

1
2
3
<?php
include('variabele.php');
?>

In jouw code ben je de haakjes vergeten.
Lightdonderdag 14 maart 2013 @ 12:30
quote:
12s.gif Op donderdag 14 maart 2013 11:48 schreef Devolution het volgende:
Oh enne, include is een functie dus die moet je zo aanroepen:
[ code verwijderd ]

In jouw code ben je de haakjes vergeten.
Nee, include is een language construct en mag dus zonder haakjes worden gebruikt.
KomtTijd...donderdag 14 maart 2013 @ 16:03
Kan iemand dit verklaren? Ik heb een server met PHP5.3.10

1
2
3
4
5
<?php
$starttime 
= new DateTime('2013-03-07T08:58:32.125');
$endtime = new DateTime('2013-03-07T08:58:41.437');
$duration $starttime->diff($endtime)->format("%Y-%m-%d %H:%i:%s.%u");
echo 
$duration// output: 00-0-0 00:0:9.%u
Ik wil microsecondes als output, niet %u.

Volgens de docs zou dat vanaf PHP5.2.2 moeten werken: http://www.php.net/manual/en/function.date.php

-edit-
inmiddels 3 verschillende servers (allemaal 5.3.*) geprobeerd, allemaal niet werken.

[ Bericht 2% gewijzigd door KomtTijd... op 14-03-2013 16:36:00 ]
Lightdonderdag 14 maart 2013 @ 16:40
quote:
14s.gif Op donderdag 14 maart 2013 16:03 schreef KomtTijd... het volgende:
Kan iemand dit verklaren? Ik heb een server met PHP5.3.10
[ code verwijderd ]

Ik wil microsecondes als output, niet %u.

Volgens de docs zou dat vanaf PHP5.2.2 moeten werken: http://www.php.net/manual/en/function.date.php

-edit-
inmiddels 3 verschillende servers (allemaal 5.3.*) geprobeerd, allemaal niet werken.
diff() geeft een DateInterval en die heeft een eigen format().
KomtTijd...donderdag 14 maart 2013 @ 17:10
Ah of course, thnx :)

dan zoek ik een andere oplossing.
Swetseneggerdonderdag 14 maart 2013 @ 19:47
Vreemd probleem...

1
2
3
4
5
6
7
8
9
10
11
12
<?php
// item toevoegen aan winkelwagentje
if (isset($_POST['order'])){
    if (isset (
$_SESSION['cart'][$_POST['order']])) {
        
$_SESSION['cart'][$_POST['order']]++;
    }else {
        
$_SESSION['cart'][$_POST['order']] = 1;
    }
    
setcookie("newCartContent","1",time() + 1400,'/');
    
header('location: '.$_SERVER['REQUEST_URI']);
}
?>

Waarom submit Chrome bij een refresh nogmaals mijn POST data?
Lightdonderdag 14 maart 2013 @ 20:09
quote:
0s.gif Op donderdag 14 maart 2013 19:47 schreef Swetsenegger het volgende:
Vreemd probleem...
[ code verwijderd ]

Waarom submit Chrome bij een refresh nogmaals mijn POST data?
Ik zou na die header() een exit() doen zodat je zeker weet dat er niet nog meer output gegenereerd wordt. En als dat het niet oplost, vraag ik me af of die header wel gezet wordt in Chrome.
Swetseneggerdonderdag 14 maart 2013 @ 20:13
quote:
1s.gif Op donderdag 14 maart 2013 20:09 schreef Light het volgende:

[..]

Ik zou na die header() een exit() doen zodat je zeker weet dat er niet nog meer output gegenereerd wordt. En als dat het niet oplost, vraag ik me af of die header wel gezet wordt in Chrome.
Ja, want ik heb het cookie na de submit. En die zou ik niet hebben als de pagina niet geredirect wordt.
exit(); helpt niet.

Elke andere browser doet het gewoon goed :{
Rockfiredonderdag 14 maart 2013 @ 20:17
quote:
0s.gif Op donderdag 14 maart 2013 19:47 schreef Swetsenegger het volgende:
Vreemd probleem...
[ code verwijderd ]

Waarom submit Chrome bij een refresh nogmaals mijn POST data?
Ik heb hier eerder iets over gelezen, ik kan het alleen zo snel niet terugvinden. Was geloof ik inderdaad een bug in chrome die je dacht ik kon oplossen door een unieke variabele mee te geven aan de url voor de redirect.

Beetje vaag wat ik zeg, maar ik zal zo nog even kijken of ik het ergens terug kan vinden :P
Swetseneggerdonderdag 14 maart 2013 @ 20:18
quote:
0s.gif Op donderdag 14 maart 2013 20:17 schreef Rockfire het volgende:

[..]

Ik heb hier eerder iets over gelezen, ik kan het alleen zo snel niet terugvinden. Was geloof ik inderdaad een bug in chrome die je dacht ik kon oplossen door een unieke variabele mee te geven aan de url voor de redirect.

Beetje vaag wat ik zeg, maar ik zal zo nog even kijken of ik het ergens terug kan vinden :P
Die vond ik ook, maar dat was versie 20. Ik heb chrome 25.
Rockfiredonderdag 14 maart 2013 @ 20:19
quote:
14s.gif Op donderdag 14 maart 2013 20:18 schreef Swetsenegger het volgende:

[..]

Die vond ik ook, maar dat was versie 20. Ik heb chrome 25.
Misschien is de bug nog niet gefixt? Heb je het geprobeerd met een unieke variabele?
Swetseneggerdonderdag 14 maart 2013 @ 20:22
quote:
0s.gif Op donderdag 14 maart 2013 20:19 schreef Rockfire het volgende:

[..]

Misschien is de bug nog niet gefixt? Heb je het geprobeerd met een unieke variabele?
Je moet geen unieke variabele mee gaan geven maar timings. Maar dat is een berg gezeik als workaround :{
Swetseneggerdonderdag 14 maart 2013 @ 20:23
Hmz... http://code.google.com/p/chromium/issues/detail?id=60045

Bug was dus weg en is weer terug in de laatste versie.
Berend.vrijdag 15 maart 2013 @ 08:23
Ik heb een database vol met forum gegevens. Ik wil nu graag 1 veld helemaal leeg maken (forum titles). Weet iemand hoe ik dit snel kan doen? De rest van de database moet intact blijven.
Chandlervrijdag 15 maart 2013 @ 08:28
UPDATE `tabel` SET `title`= '' zo iets?

Vraagje; weet iemand een goed voorbeeld hoe om te gaan met google maps en zoomen van lokaties? ik wil namelijk op wereld grootte markers laten zien maar als men bv inzoomt op NL dat ik dan op basis van NL 200 markers kan laden en als ik doorzoom naar Groningen in Groningen 200 markers kan laten zien?

las net mijn update code, hoe wakker kun je zijn.... pfff

[ Bericht 14% gewijzigd door Chandler op 15-03-2013 11:01:55 ]
Lightvrijdag 15 maart 2013 @ 09:10
quote:
0s.gif Op vrijdag 15 maart 2013 08:23 schreef Berend. het volgende:
Ik heb een database vol met forum gegevens. Ik wil nu graag 1 veld helemaal leeg maken (forum titles). Weet iemand hoe ik dit snel kan doen? De rest van de database moet intact blijven.
UPDATE table SET title='';

Zonder WHERE, dus worden alle rijen in de tabel aangepast.
rekenwondervrijdag 15 maart 2013 @ 09:20
quote:
0s.gif Op donderdag 14 maart 2013 19:47 schreef Swetsenegger het volgende:
Vreemd probleem...
[ code verwijderd ]

Waarom submit Chrome bij een refresh nogmaals mijn POST data?
Geen idee, maar ik weet dat er wat dispuut is over of dat er na een redirect wel of niet de POST-status behouden moet worden.

Werkt het wel correct als je een statuscode meegeeft?

1header('location: '.$_SERVER['REQUEST_URI'], true, 301);
Dan wel 302, 303. Ik weet niet of je dit in productie wil gebruiken, maar ik ben wel nieuwsgierig of het werkt.
Swetseneggervrijdag 15 maart 2013 @ 10:36
quote:
0s.gif Op vrijdag 15 maart 2013 09:20 schreef rekenwonder het volgende:

[..]

Geen idee, maar ik weet dat er wat dispuut is over of dat er na een redirect wel of niet de POST-status behouden moet worden.

Werkt het wel correct als je een statuscode meegeeft?
[ code verwijderd ]

Dan wel 302, 303. Ik weet niet of je dit in productie wil gebruiken, maar ik ben wel nieuwsgierig of het werkt.
Als ik in de headers kijk heeft hij een POST met 302 en een GET met 200. Die POST zou hij helemaal niet meer moeten hebben. Met dit stukje code heb ik een POST met 301 en een GET met 200 :)

Schermafbeelding%202013-03-15%20om%2010.35.06.png

Je ziet ook dat de GET van de website komt terwijl de POST 'other' vermeld :') Dus de PRG werkt prima, maar chrome doet vreemd.

Probleem bestaat zelfs sinds 2009: https://code.google.com/p/chromium/issues/detail?id=21245

[ Bericht 3% gewijzigd door Swetsenegger op 15-03-2013 11:42:50 ]
#ANONIEMvrijdag 15 maart 2013 @ 23:17
Oke..

Ik heb naar mijn gevoel het halve internet afgezocht maar dit niet kunnen vinden..

Ik wil een config file die de volgende syntax(of layout.. Hoe je het wil noemen) heeft parsen.. Ik vind genoeg config files parsers maar niet voor dit type config file

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/*
Heujh, een comment
*/

options {

    ding = "ding";

    nummertje = 1253;

    #  ander soort comment

    suboptions {

        iets = "iets anders"; // en nog een comment!

    };
};

meeropties {

    optie = "bla";

};

kent iemand hier een parser voor?
Chandlerzaterdag 16 maart 2013 @ 08:01
waarom kies je dan niet voor een andere opzet van je config file? als het voor PHP is kun je dit toch direct parsen?
mstxzaterdag 16 maart 2013 @ 08:23
Waarom zou je het wiel opnieuw willen uitvinden? Voor deze structuur zijn talloze bestaande oplossingen zoals JSON, XML, PHP array etc.
Chandlerzaterdag 16 maart 2013 @ 09:09
quote:
1s.gif Op zaterdag 16 maart 2013 08:23 schreef mstx het volgende:
Waarom zou je het wiel opnieuw willen uitvinden? Voor deze structuur zijn talloze bestaande oplossingen zoals JSON, XML, PHP array etc.
én php kan INI bestanden parsen! *)
#ANONIEMzaterdag 16 maart 2013 @ 10:26
Omdat het een bestaand config file is wat ik moet uitlezen.. Ik kan geen C, C++ of wat het dan ook is om dat programma te gaan aanpassen zodat dat met json, xml of ini bestanden werkt 8)7
KomtTijd...zaterdag 16 maart 2013 @ 11:23
Dus iemand heeft een programma gemaakt, en bedacht dat het een goed idee was om te beginnen met het uitvinden van een compleet nieuw dataformat? ;(

Misschien is het wel verstandiger om gewoon json te gebruiken en achteraf met een regex de = en ; te vervangen met : en ,
Chandlerzaterdag 16 maart 2013 @ 13:37
Praten we over duizenden config files? of maar 1tje? want 1tje kan je met de hand toch wel aanpassen?
#ANONIEMzondag 17 maart 2013 @ 22:38
quote:
5s.gif Op zaterdag 16 maart 2013 13:37 schreef Chandler het volgende:
Praten we over duizenden config files? of maar 1tje? want 1tje kan je met de hand toch wel aanpassen?
eentje,

maar ik wil juist dat je on the fly dat config file kan aanpassen ergens via een website (achter een login)
Chandlermaandag 18 maart 2013 @ 06:59
Dan zie ik het gehele probleem niet, er zijn zat andere oplossingen voor het lezen van config files...
stefanhaanmaandag 18 maart 2013 @ 08:10
Zelf een parser schrijven dan maar? Zo'n ingewikkelde format is het nou ook weer niet
Juicyhilmaandag 18 maart 2013 @ 09:33
Wat is er mis met INI dan? :o
Juicyhilmaandag 18 maart 2013 @ 09:33
quote:
0s.gif Op zondag 17 maart 2013 22:38 schreef d4v1d het volgende:

[..]

eentje,

maar ik wil juist dat je on the fly dat config file kan aanpassen ergens via een website (achter een login)
Dat kan ook met INI
mstxmaandag 18 maart 2013 @ 09:40
quote:
0s.gif Op maandag 18 maart 2013 09:33 schreef Juicyhil het volgende:
Wat is er mis met INI dan? :o
Dat is een ander formaat.
Chandlerwoensdag 20 maart 2013 @ 09:53
Mensen een vraagje.

Ik heb een pointer die ik wil gebruiken op google maps
pointer_blauw.png

Ik wil in de pointer een afbeelding zetten en dat probeer ik zo te doen;

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
<?php
if (isset($argument[2]) && file_exists(BASE_PATH "/mediabase/pointer_" $argument[2] . ".png"))
{
    
// load pointer source file
    
$pointerSource imagecreatefrompng(BASE_PATH "/mediabase/pointer_" $argument[2] . ".png");
//                        imagealphablending($pointerSource, true);
    
    // create new pointer source with same width/height
    
$pointer imagecreatetruecolor(imagesx($pointerSource), 
                                    
imagesy($pointerSource));
    
// save transparant
//                        imagealphablending($pointer, false);
//                        imagesavealpha($pointer, true); 
    
    // copy 'thumbnail' image into pointer
    
imagecopyresampled($pointer,
                       
$im,
                       
5,
                       
5,
                       
0,
                       
0,
                       
imagesx($box),
                       
imagesy($box),
                       
imagesx($box),
                       
imagesy($box));
                   
    
// copy pointer over image
    
imagecopyresampled($pointer,
                       
$pointerSource,
                       
0,
                       
0,
                       
0,
                       
0,
                       
imagesx($pointerSource),
                       
imagesy($pointerSource),
                       
imagesx($pointerSource),
                       
imagesy($pointerSource));
    
    
// create output and display it.
    
header("Content-type: image/png");
    
imagepng($pointer);
    exit();
}
?>

maar wat ik ook probeer, ik krijg het plaatje er niet goed achter terwijl ik de transparantie behoudt..
Haal ik de remarks weg dan krijg ik alleen de pointer te zien zonder plaatje.

Iemand een idee waar ik de fout in ga?
mstxwoensdag 20 maart 2013 @ 09:59
quote:
0s.gif Op woensdag 20 maart 2013 09:53 schreef Chandler het volgende:
Mensen een vraagje.

Ik heb een pointer die ik wil gebruiken op google maps
[ afbeelding ]

Ik wil in de pointer een afbeelding zetten en dat probeer ik zo te doen;
[ code verwijderd ]

maar wat ik ook probeer, ik krijg het plaatje er niet goed achter terwijl ik de transparantie behoudt..
Haal ik de remarks weg dan krijg ik alleen de pointer te zien zonder plaatje.

Iemand een idee waar ik de fout in ga?
http://php.net/manual/en/function.imagecreatefrompng.php

De eerste comment al geprobeerd?

quote:
$imgPng = imageCreateFromPng($strImagePath);
imageAlphaBlending($imgPng, true);
imageSaveAlpha($imgPng, true);
In je eigen voorbeeld heb je zo te zien alleen imagealphablending() geprobeerd.
Chandlerwoensdag 20 maart 2013 @ 10:04
Ja dat heb ik geprobeerd maar dan is de uitkomst zoals dit en dat ziet er niet uit;

pointer_blauw-uitkomst.png
boem-dikkiewoensdag 20 maart 2013 @ 10:59
Als het altijd een statisch plaatje is kun je ook gewoon een marker afbeelding toevoegen in de Google Maps API.

Nevermind, zie dat je arguments gebruikt, ik neem aan dat het dan geen statisch plaatje is. :')
Chandlerwoensdag 20 maart 2013 @ 12:01
quote:
14s.gif Op woensdag 20 maart 2013 10:59 schreef boem-dikkie het volgende:
Als het altijd een statisch plaatje is kun je ook gewoon een marker afbeelding toevoegen in de Google Maps API.

Nevermind, zie dat je arguments gebruikt, ik neem aan dat het dan geen statisch plaatje is. :')
Klopt al wordt hij natuurlijk wel na 1x gecached :@ maar goed... eerst het plaatje maar eens werkend krijgen, zal nog wat andere truukjes proberen! *)

[edit]
Het lukt een beetje ;)

Van:
pointer_blauw.png
Naar:
pointer_blauw-test1.png
is de uitkomst van
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
<?php
$image 
imagecreatetruecolor(3761);

// allocate transparant color
$transparant imagecolorallocate($image000);

// make the background transparent
imagecolortransparent($image$transparant);

$thumb imagecreatefrompng(BASE_PATH "/test/image.png");
$frame imagecreatefrompng(BASE_PATH "/test/pointer_blauw.png");

//imagealphablending($image, true);
//imagesavealpha($image, true);

imagecopyresampled($image,
          
$thumb,
          
5,
          
6,
          
0,
          
0,
          
imagesx($thumb),
          
imagesy($thumb),
          
imagesx($thumb),
          
imagesy($thumb));
          
imagecopyresampled($image,
          
$frame,
          
0,
          
0,
          
0,
          
0,
          
imagesx($frame),
          
imagesy($frame),
          
imagesx($frame),
          
imagesy($frame));
          


header("Content-type: image/png");
imagepng($image);
exit();
?>

Plaatje: image.png

Alleen wordt de punt zo rafelig... vervelend... iemand een idee hoe ik dat kan oplossen? :D

[ Bericht 14% gewijzigd door Chandler op 20-03-2013 12:47:03 ]
Chandlerdonderdag 21 maart 2013 @ 07:37
Oplossing is vrij simpel en dacht ik gisteren aan voordat ik ging slapen... en heb het zelfs onthouden! :7

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

$image 
imagecreatefrompng(BASE_PATH "/test/pointer_blauw.png");

imagesavealpha($imagetrue);

$thumb imagecreatefrompng(BASE_PATH "/test/image.png");
$frame imagecreatefrompng(BASE_PATH "/test/pointer_blauw.png");

imagecopyresampled($image,
          
$thumb,
          
5,
          
6,
          
0,
          
0,
          
imagesx($thumb),
          
imagesy($thumb),
          
imagesx($thumb),
          
imagesy($thumb));
          
imagecopyresampled($image,
          
$frame,
          
0,
          
0,
          
0,
          
0,
          
imagesx($frame),
          
imagesy($frame),
          
imagesx($frame),
          
imagesy($frame));
          
header("Content-type: image/png");
imagepng($image);
exit();

Door eerst de pointer te laden, daarna het plaatje te plaatsen en daarna weer de pointer er overheen te plakken behoud ik de transparantie en ziet de uitkomst er zo uit:
pointer_blauw-test-nice.png

Een stuk beter dus. Dus was de oplossing best wel simpel! *)

[ Bericht 1% gewijzigd door Chandler op 21-03-2013 08:52:53 ]
boem-dikkiedonderdag 21 maart 2013 @ 08:53
quote:
0s.gif Op donderdag 21 maart 2013 07:37 schreef Chandler het volgende:
Oplossing is vrij simpel en dacht ik gisteren aan voordat ik ging slapen... en heb het zelfs onthouden! :7
[ code verwijderd ]

Door eerst de pointer te laden, daarna het plaatje te plaatsen en daarna weer de pointer er overheen te plakken behoud ik de transparantie en ziet de uitkomst er zo uit:
[ afbeelding ]

Een stuk beter dus. Dus was de oplossing best wel simpel! *)
Oplossingen bedenken in bed, 's ochtends meteen proberen en het juist hebben bedacht. _O_

Dat heb ik ook super vaak. :')
Chandlerdonderdag 21 maart 2013 @ 10:03
quote:
10s.gif Op donderdag 21 maart 2013 08:53 schreef boem-dikkie het volgende:

[..]

Oplossingen bedenken in bed, 's ochtends meteen proberen en het juist hebben bedacht. _O_

Dat heb ik ook super vaak. :')
Ja erg leuk is dat, wil dat wel vaker hebben :P en dan is de 'oplossing' ook nog zo simpel....
boem-dikkiedonderdag 21 maart 2013 @ 10:09
quote:
0s.gif Op donderdag 21 maart 2013 10:03 schreef Chandler het volgende:

[..]

Ja erg leuk is dat, wil dat wel vaker hebben :P en dan is de 'oplossing' ook nog zo simpel....
Oplossingen zijn vaak simpel maar omdat je vast zit in je kader kom je er vaak niet op als je blijft staren naar het probleem. Even wat anders doen of wat aan je hoofd hebben door bijvoorbeeld in bed te gaan liggen kan dan opeens helpen bij het verzinnen van de oplossing.
Chandlerdonderdag 21 maart 2013 @ 10:13
Klopt, heb mij de hele middag zitten vast bijten in het feit dat ik de transparantie van de '3e layer' wilde doorvoeren in de hele afbeelding, iets wat op zich zou moeten lukken maar door een witte achtergrond het plaatje nogal pixelachtig werdt. Maar na 's avonds te hebben gewerkt had ik weer frisse energie om er eens over na te denken, en bedacht ik mij bovenstaand voorbeeld (in't hoofd natuurlijk). Mijn ochtend kan dus niet meer stuk! :P
KomtTijd...donderdag 21 maart 2013 @ 16:38
Weet iemand nog een goeie truc om een script/functie meerdere keren tegelijk aan te roepen?

ik dacht de volgende slinkse truc te gebruiken maar helaas gaan ze toch om de beurt.
1
2
3
4
5
6
<?php
for ($i 0$i 10$i++) 
{
    
shell_exec("/usr/bin/php -f /path/to/script.php {$i} & > /dev/null 2>&1");
}
?>
#ANONIEMdonderdag 21 maart 2013 @ 17:49
quote:
10s.gif Op donderdag 21 maart 2013 08:53 schreef boem-dikkie het volgende:

[..]

Oplossingen bedenken in bed, 's ochtends meteen proberen en het juist hebben bedacht. _O_

Dat heb ik ook super vaak. :')
Ik ben het dan meestal vergeten :'(
Chandlerdonderdag 21 maart 2013 @ 17:49
Te gelijk? lijkt me niet echt mogelijk... (denk ik) :@

quote:
0s.gif Op donderdag 21 maart 2013 17:49 schreef d4v1d het volgende:

[..]

Ik ben het dan meestal vergeten :'(
Yep, overkomt mij ook vaak maar dit keer bleef het steken *)
#ANONIEMdonderdag 21 maart 2013 @ 17:50
quote:
14s.gif Op donderdag 21 maart 2013 16:38 schreef KomtTijd... het volgende:
Weet iemand nog een goeie truc om een script/functie meerdere keren tegelijk aan te roepen?

ik dacht de volgende slinkse truc te gebruiken maar helaas gaan ze toch om de beurt.
[ code verwijderd ]

Multithreading in php
StMdonderdag 21 maart 2013 @ 19:21
Weet trouwens wel waar je aan begint ;) Threading in PHP is 1 grote smerige hack en door het copy on write systeem van de fork dat op de achtergrond zit ga je hele rare ellende krijgen met je resources zoals database connecties. Als je eenmaal doorhebt hoe het werkt, dan werkt het opzich wel prima.

Ik ben zo'n gek die het ooit zelf geïmplementeerd heeft, voordat die mooie class er was.
KomtTijd...donderdag 21 maart 2013 @ 19:25
quote:
0s.gif Op donderdag 21 maart 2013 17:49 schreef Chandler het volgende:
Te gelijk? lijkt me niet echt mogelijk... (denk ik) :@
Dat lees ik ook overal, vandaar dat het me een goed idee leek om gewoon meerdere processen te starten via shel_exec, maar blijkbaar wacht die toch op een response ofzo.
Morgen weer ff verder proberen. thnx voor de link hierboven ook.

beetje context: het script moet van meerdere servers een bestand van een paar MB downloaden. Sommige servers zijn nogal traag dus alles tegelijk downloaden zou aanzienlijk sneller gaan.
Juicyhildonderdag 21 maart 2013 @ 19:26
quote:
0s.gif Op donderdag 21 maart 2013 19:21 schreef StM het volgende:
Weet trouwens wel waar je aan begint ;) Threading in PHP is 1 grote smerige hack en door het copy on write systeem van de fork dat op de achtergrond zit ga je hele rare ellende krijgen met je resources zoals database connecties. Als je eenmaal doorhebt hoe het werkt, dan werkt het opzich wel prima.

Ik ben zo'n gek die het ooit zelf geïmplementeerd heeft, voordat die mooie class er was.
PHP is in principe 1 grote smerige hack. Maar ach, het werkt.
StMdonderdag 21 maart 2013 @ 19:28
Dat is nog niks vergeleken met multithreading :P (Iedere thread draait in een los, eigen process en daartussen zet je een communicatiekanaal op, bv via message queues)
KomtTijd...donderdag 21 maart 2013 @ 19:33
quote:
0s.gif Op donderdag 21 maart 2013 19:26 schreef Juicyhil het volgende:

[..]

PHP is in principe 1 grote smerige hack. Maar ach, het werkt.
Mijn PHP wel ja. :7
StMdonderdag 21 maart 2013 @ 19:35
Hmm deze extensie kende ik nog niet: http://www.php.net/manual/en/book.pthreads.php

Er is dus min of meer echte threading support, als het ook echt werkt :P
#ANONIEMdonderdag 21 maart 2013 @ 20:19
quote:
0s.gif Op donderdag 21 maart 2013 19:35 schreef StM het volgende:
Hmm deze extensie kende ik nog niet: http://www.php.net/manual/en/book.pthreads.php

Er is dus min of meer echte threading support, als het ook echt werkt :P
_O_

even gaan uitvogelen hoe dat precies werkt :D

[ Bericht 8% gewijzigd door #ANONIEM op 21-03-2013 20:19:58 ]
boem-dikkiedonderdag 21 maart 2013 @ 21:22
quote:
0s.gif Op donderdag 21 maart 2013 17:49 schreef d4v1d het volgende:

[..]

Ik ben het dan meestal vergeten :'(
Opschrijven.
papernotedonderdag 21 maart 2013 @ 22:17
quote:
14s.gif Op donderdag 21 maart 2013 16:38 schreef KomtTijd... het volgende:
Weet iemand nog een goeie truc om een script/functie meerdere keren tegelijk aan te roepen?

ik dacht de volgende slinkse truc te gebruiken maar helaas gaan ze toch om de beurt.
[ code verwijderd ]

Volgens mij moet je nog een & helemaal aan het einde van je commando zetten.
KomtTijd...donderdag 21 maart 2013 @ 22:40
quote:
2s.gif Op donderdag 21 maart 2013 22:17 schreef papernote het volgende:

[..]

Volgens mij moet je nog een & helemaal aan het einde van je commando zetten.
Even een testcase gemaakt, die stond inderdaad verkeerd! _O_
Mooi, dan is dit de makkelijkste oplossing ook. Heb helemaal geen moeilijke multithreading nodig, ik moet gewoon die bestandjes downloaden, er is geen output.
Tijnvrijdag 22 maart 2013 @ 00:14
Kan iemand me helpen met een reguliere expressie? Ik ben daar zo'n kneus in :')

Ik heb nu dit:

1
2
3
<?php
$string 
preg_replace("/\/\/(.+?)\/\//i""<em>\\1</em>"$string);
?>

Dat werkt om bijvoorbeeld "ja hallo //dit staat schuin// en dit niet" om te zetten in "ja hallo <em>dit staat schuin</em> en dit niet".

So far, so good.

Maar nu wil ik graag dat "://" (in bv "http://") niet wordt gematched. Hoe pas ik de regex aan zodat 'ie niet afgaat wanneer er een : voor // staat?
Juicyhilvrijdag 22 maart 2013 @ 00:20
quote:
9s.gif Op vrijdag 22 maart 2013 00:14 schreef Tijn het volgende:
Kan iemand me helpen met een reguliere expressie? Ik ben daar zo'n kneus in :')

Ik heb nu dit:
[ code verwijderd ]

Dat werkt om bijvoorbeeld "ja hallo //dit staat schuin// en dit niet" om te zetten in "ja hallo <em>dit staat schuin</em> en dit niet".

So far, so good.

Maar nu wil ik graag dat "://" (in bv "http://") niet wordt gematched. Hoe pas ik de regex aan zodat 'ie niet afgaat wanneer er een : voor // staat?
/(?!http\:)\/\/(.+?)\/\//i

Negative lookbehind gewoon toevoegen toch?
Tijnvrijdag 22 maart 2013 @ 00:21
Alsof ik ook maar enig idee heb wat "negative lookbehind" betekent :+
StMvrijdag 22 maart 2013 @ 00:21
[^:] is voor alles behalve een : :)

Maar dit ga je nooit fatsoenlijk oplossen zonder tokenizer...
Tijnvrijdag 22 maart 2013 @ 00:23
quote:
0s.gif Op vrijdag 22 maart 2013 00:20 schreef Juicyhil het volgende:

[..]

/(?!http\:)\/\/(.+?)\/\//i
Dit werkt niet. //test// wordt nu niet <em>test</em>.

quote:
0s.gif Op vrijdag 22 maart 2013 00:21 schreef StM het volgende:
[^:] is voor alles behalve een : :)

Maar dit ga je nooit fatsoenlijk oplossen zonder tokenizer...
Ik ga wel even Googlen op "tokenizer", ik ken die term niet.
StMvrijdag 22 maart 2013 @ 00:24
1$result = preg_replace('%(?!:)//(.+?)//%', '<em>\1</em>', $subject);

Die zou moeten werken :)
Tijnvrijdag 22 maart 2013 @ 00:28
quote:
0s.gif Op vrijdag 22 maart 2013 00:24 schreef StM het volgende:

[ code verwijderd ]

Die zou moeten werken :)
Dit maakt van van "http://dingen//" toch "http:<em>dingen</em>" ;(
StMvrijdag 22 maart 2013 @ 00:33
Deze dan:

1$result = preg_replace('%(?<!:)//(.+?)//%', '<em>\1</em>', $subject);

Was vergeten om de url te testen met een // er achter :P
Tijnvrijdag 22 maart 2013 @ 00:34
Awesome! Bedankt _O_
boem-dikkievrijdag 22 maart 2013 @ 08:53
Ik vind kloten met regex altijd wel leuk.

http://regexpal.com/

Met bovenstaande website kun je gewoon blijven proberen tot je gewenst resultaat hebt.
Chandlervrijdag 22 maart 2013 @ 09:12
Handig, voeg deze gelijk toe aan mijn bookmarks! :)

Vraagje; stel je hebt meerdere markers bij google maps op dezelfde positie maar wil deze toch graag allemaal klikbaar maken (en dat wil niet als ze precies boven elkaar zitten). Hoe zouden jullie dit oplossen?

[ Bericht 43% gewijzigd door Chandler op 22-03-2013 09:29:28 ]
mstxvrijdag 22 maart 2013 @ 09:54
quote:
14s.gif Op vrijdag 22 maart 2013 09:12 schreef Chandler het volgende:
Vraagje; stel je hebt meerdere markers bij google maps op dezelfde positie maar wil deze toch graag allemaal klikbaar maken (en dat wil niet als ze precies boven elkaar zitten). Hoe zouden jullie dit oplossen?
Wat voor dingen zitten er dan precies op het zelfde coördinaat? Bedoel je zoiets als dat een marker van een postkantoor op het zelfde coördinaat zit als de marker van een supermarkt omdat de supermarkt ook een postnl servicepunt is? Dan zou je het toch moeten gaan groeperen ofzo. Een aparte marker en als je er op klikt een infowindow met wat er in zit. Maar ligt natuurlijk aan de situatie.
mscholvrijdag 22 maart 2013 @ 09:56
quote:
14s.gif Op vrijdag 22 maart 2013 08:53 schreef boem-dikkie het volgende:
Ik vind kloten met regex altijd wel leuk.

http://regexpal.com/

Met bovenstaande website kun je gewoon blijven proberen tot je gewenst resultaat hebt.
ik gebruik altijd regexbuddy (not so legal edition, 30$ voor een paar regexen en alleen updates naar minor versies gaat mij echt te ver) maar dit is ook wel een mooie :Y
Chandlervrijdag 22 maart 2013 @ 10:04
quote:
0s.gif Op vrijdag 22 maart 2013 09:54 schreef mstx het volgende:

[..]

Wat voor dingen zitten er dan precies op het zelfde coördinaat? Bedoel je zoiets als dat een marker van een postkantoor op het zelfde coördinaat zit als de marker van een supermarkt omdat de supermarkt ook een postnl servicepunt is? Dan zou je het toch moeten gaan groeperen ofzo. Een aparte marker en als je er op klikt een infowindow met wat er in zit. Maar ligt natuurlijk aan de situatie.
Nee, het zijn markers waarbij ik link aan v.is va ngsten (sorry voor de puntjes en spaties :P) en op een bepaalde lokatie kunnen er dus meerdere va ngsten zijn. Deze staan dus allemaal op elkaar... Al zou ik ze liever een paar px naast elkaar willen zien oid?
mstxvrijdag 22 maart 2013 @ 10:05
quote:
0s.gif Op vrijdag 22 maart 2013 10:04 schreef Chandler het volgende:

[..]

Nee, het zijn markers waarbij ik link aan v.is va ngsten (sorry voor de puntjes en spaties :P) en op een bepaalde lokatie kunnen er dus meerdere va ngsten zijn. Deze staan dus allemaal op elkaar... Al zou ik ze liever een paar px naast elkaar willen zien oid?
Het mooiste zou dan denk ik zijn om ze te groeperen en het aantal items in de marker te weergeven.
Chandlervrijdag 22 maart 2013 @ 10:06
quote:
14s.gif Op vrijdag 22 maart 2013 10:05 schreef mstx het volgende:

[..]

Het mooiste zou dan denk ik zijn om ze te groeperen en het aantal items in de marker te weergeven.
Maar de markers bevatten nu een foto van de 'va ngst', groeperen zou mooi zijn maar niet echt mooi zeg maar :) en kan ik ook niet verwijzen naar een specifieke va ngst.
mstxvrijdag 22 maart 2013 @ 10:12
quote:
14s.gif Op vrijdag 22 maart 2013 10:06 schreef Chandler het volgende:

[..]

Maar de markers bevatten nu een foto van de 'va ngst', groeperen zou mooi zijn maar niet echt mooi zeg maar :) en kan ik ook niet verwijzen naar een specifieke va ngst.
Als de locatie niet op de meter nauwkeurig hoeft zou ik ze dan willekeurig iets opschuiven. Bijhouden in een array welke coordinaten al bestaan en zodra je een dubbele hebt (binnen x graden) een paar graden opschuiven in random richting. :s)
Chandlervrijdag 22 maart 2013 @ 10:12
quote:
0s.gif Op vrijdag 22 maart 2013 10:12 schreef mstx het volgende:

[..]

Als de locatie niet op de meter nauwkeurig hoeft zou ik ze dan willekeurig iets opschuiven. Bijhouden in een array welke coordinaten al bestaan en zodra je een dubbele hebt (binnen x graden) een paar graden opschuiven in random richting. :s)
Ik was ff aan't googlen en er zijn meerdere mensen die daar mee problemen hadden, maar er is een oplossing zoals deze: http://jawj.github.com/OverlappingMarkerSpiderfier/demo.html ziet er erg leuk uit! *) nu maar eens kijken hoe ik deze simpel kan verwerken in mijn script.
rekenwondervrijdag 22 maart 2013 @ 10:17
quote:
14s.gif Op vrijdag 22 maart 2013 08:53 schreef boem-dikkie het volgende:
Ik vind kloten met regex altijd wel leuk.

http://regexpal.com/

Met bovenstaande website kun je gewoon blijven proberen tot je gewenst resultaat hebt.
Ook een mooie: http://www.debuggex.com/

Maakt regexes visueel.
Cue_vrijdag 22 maart 2013 @ 10:19
verkerede topic :')
Rockfirevrijdag 22 maart 2013 @ 10:22
quote:
0s.gif Op vrijdag 22 maart 2013 10:12 schreef Chandler het volgende:

[..]

Ik was ff aan't googlen en er zijn meerdere mensen die daar mee problemen hadden, maar er is een oplossing zoals deze: http://jawj.github.com/OverlappingMarkerSpiderfier/demo.html ziet er erg leuk uit! *) nu maar eens kijken hoe ik deze simpel kan verwerken in mijn script.
Wat ik ooit eens heb gedaan voor mijn werk was alle volgende markers1 of 2 pixels naar rechts en naar boven verplaatsen. Visueel krijg je dan een stapeltje markers.
Chandlervrijdag 22 maart 2013 @ 10:55
quote:
0s.gif Op vrijdag 22 maart 2013 10:22 schreef Rockfire het volgende:

[..]

Wat ik ooit eens heb gedaan voor mijn werk was alle volgende markers1 of 2 pixels naar rechts en naar boven verplaatsen. Visueel krijg je dan een stapeltje markers.
Maar dan zijn ze alsnog amper klikbaar, heb je het voorbeeld gezien wat ik poste? dat is toch een geweldige oplossing?!
Rockfirevrijdag 22 maart 2013 @ 10:59
quote:
0s.gif Op vrijdag 22 maart 2013 10:55 schreef Chandler het volgende:

[..]

Maar dan zijn ze alsnog amper klikbaar, heb je het voorbeeld gezien wat ik poste? dat is toch een geweldige oplossing?!
Ze stonden zo ver uit elkaar dat ze goed klikbaar waren. Het voorbeeld is inderdaad wel een mooie oplossing, hoewel ik het irritant vind dat de groep weer naar elkaar toe gaat zodra je één marker aanklikt. Als je van een groep van 5 markers dan alle marker wilt bekijken moet je 10 keer klikken
Chandlervrijdag 22 maart 2013 @ 11:02
Zover was ik nog niet, maar mijn markers zijn voorzien van een voorbeeld plaatje.

bv
voorbeeld-maps.png

En dan is het wel handig als je op 1tje kunt klikken en de rest zichtbaar is ;)

Maar moet zeggen dat het best pittig is, maar goed heb de hele dag! *)

[ Bericht 19% gewijzigd door Chandler op 22-03-2013 11:12:15 ]
Rockfirevrijdag 22 maart 2013 @ 11:12
Wat je nog kunt overwegen is een combinatie van groeperen en dat voorbeeld wat je gaf. Dat je op een bepaald zoomniveau groepeert en dat je dan door te klikken op de marker kunt inzoomen naar het gebied. En dan vanaf daar dat voorbeeld gebruiken. Als ik namelijk naar het voorbeeld kijk en naar de screenshot, dan vraag ik me af of het wel zo net is om op dit niveau alle markers te laten zien?

Zoiets als deze site bedoel ik: Hierbij zie je eerst één marker voor een heel gebied en pas na doorklikken en inzoomen zie je alle markers binnen dat specifieke gebied: http://utrecht.gemgids.nl/bomenkaart/
Chandlervrijdag 22 maart 2013 @ 11:14
Mijn markers zijn op basis van provincie, dus als je van provincie veranderd krijg je de markers van de gegeven provincie te zien.

En om eerlijk te zijn gaat mijn kennis niet zo ver dat ik een voorbeeld zoals aangeven in jou post voor elkaar krijg... :{ al is het natuurlijk wel een prachtige oplossing maar niet voor het specifieke probleem waar ik nu mee stoei..

Maar als je goed leesbare documentatie weet voor het laden van markers op basis van het zichtbare gedeelte van google maps houd ik mij aanbevolen! B-)

[ Bericht 4% gewijzigd door Chandler op 22-03-2013 11:28:20 ]
boem-dikkievrijdag 22 maart 2013 @ 11:29
quote:
0s.gif Op vrijdag 22 maart 2013 10:55 schreef Chandler het volgende:

[..]

Maar dan zijn ze alsnog amper klikbaar, heb je het voorbeeld gezien wat ik poste? dat is toch een geweldige oplossing?!
Meestal kun je wel inzoomen waardoor het stapeltje markers wat verder uit elkaar staat. Die oplossing die je postte is best redelijk alleen dat hij de hele tijd weer terug in een groep staat is irritant, dan zoom ik liever één keer in.
Chandlervrijdag 22 maart 2013 @ 11:33
quote:
14s.gif Op vrijdag 22 maart 2013 11:29 schreef boem-dikkie het volgende:

[..]

Meestal kun je wel inzoomen waardoor het stapeltje markers wat verder uit elkaar staat. Die oplossing die je postte is best redelijk alleen dat hij de hele tijd weer terug in een groep staat is irritant, dan zoom ik liever één keer in.
Klopt, want je kunt zoomen tot je een ons weegt maar de markers blijven elkaar overlappen... :{ Ga eens kijken of er nog meer van dit soort oplossingen zijn..
Rockfirevrijdag 22 maart 2013 @ 11:35
quote:
0s.gif Op vrijdag 22 maart 2013 11:14 schreef Chandler het volgende:
Mijn markers zijn op basis van provincie, dus als je van provincie veranderd krijg je de markers van de gegeven provincie te zien.

En om eerlijk te zijn gaat mijn kennis niet zo ver dat ik een voorbeeld zoals aangeven in jou post voor elkaar krijg... :{ al is het natuurlijk wel een prachtige oplossing maar niet voor het specifieke probleem waar ik nu mee stoei..

Maar als je goed leesbare documentatie weet voor het laden van markers op basis van het zichtbare gedeelte van google maps houd ik mij aanbevolen! B-)
In het door mij gegeven voorbeeld worden de markers al in de database gegroepeerd. Je zou dan moeten gaan groeperen op basis van provincie / gemeente / wijk / buurt. Het CBS bied downloads waaruit je kunt halen welk gebied bij welke gemeente / wijk / buurt hoor: http://www.cbs.nl/nl-NL/m(...)013-2012-b68-pub.htm

Maar ik vrees dat dat dan toch wat te ingewikkeld voor je wordt :P
Chandlervrijdag 22 maart 2013 @ 11:50
Daar vrees ik dan ook voor, zat al te zoeken of ik op basis van zoom gegevens de markers zou kunnen inladen via json, maar snap nog niet helemaal (en is ook amper te vinden tot zover) hoe ik de zoom_changed functie kan gebruiken om de markers opnieuw te laden binnen de 'bounds' van de map..
Rockfirevrijdag 22 maart 2013 @ 12:18
quote:
0s.gif Op vrijdag 22 maart 2013 11:50 schreef Chandler het volgende:
Daar vrees ik dan ook voor, zat al te zoeken of ik op basis van zoom gegevens de markers zou kunnen inladen via json, maar snap nog niet helemaal (en is ook amper te vinden tot zover) hoe ik de zoom_changed functie kan gebruiken om de markers opnieuw te laden binnen de 'bounds' van de map..
Je moet een eventlistener gebruiken. In de broncode van de bomenkaart zie je daar wel een implementatie van:
1GEvent.addListener(gmap, "zoomend",   function(o,n) { myself._zoomEnd(o,n); })

Als dat event dan is getriggerd moet je de nieuwe markers opvragen voor het zichtbare gebied.
Chandlervrijdag 22 maart 2013 @ 12:38
Klopt, alleen moet ik alle bounds hebben ipv 2.

Ben net even wezen stoeien met het scriptje op
https://groups.google.com(...)s-api-v3/AskJ_bXZVVA

en heb het werkend gekregen *) deze werkt anders ook erg fijn, ga deze dus ombouwen zodat ik deze kan gebruiken, echter werkt de zoom daar niet in dus moet ik daar ook nog een speciale functie voor schrijven waarbij ik van alle bounds gebruik maak..

-edit- God wat simpel :P door een paar extra regels werkt zoom ook ;)
1
2
3
4
        google.maps.event.addListener(map, 'zoom_changed', function() 
        { 
            BoundBasedMarkers(map) 
        }); 

-edit-

Iemand die misschien een tutorial weet over hoe ik het beste AJAX kan gebruiken voor de content van infoWindow? en eventueel hoe ik de infoWindow qua vormgeving kan aanpassen? dus niet de uitleg op google zelf maar een tutorial dit dit goed uitlegt?

[ Bericht 22% gewijzigd door Chandler op 22-03-2013 13:17:45 ]
googlie1978vrijdag 22 maart 2013 @ 17:11
Hallo forum gebruikers,

ik weet niet of ik hier juist ben, maar heb een vraag over php mysql.

ik heb een formulier waaruit ik gegevens haal en die in een database plaats.
alles werkt prima, op 1 ding na. als er in een veld niets is ingevuld dan wordt dit als 0 opgeslagen in de database, de standaardwaarde van de cel in de database staat op NULL,

hoe kan ik ervoor zorgen dat er geen 0 wordt opgeslagen?

alsvast dank voor de hulp
Chandlervrijdag 22 maart 2013 @ 17:16
Hoi beginner ;) wat is je structuur en welk veld zorgt voor een 0? want een 0 wordt bijna altijd gebruikt voor een numeriek veld.
googlie1978vrijdag 22 maart 2013 @ 17:30
ik heb een formulier gemaakt, daar kan ik gegevens invullen, maar niet alle gegevens zijn verplicht.
deze gegevens haal ik door middel van post uit het formulier en plaats deze in de database

even een kort voorbeeldje van de code, zodat het duidelijker wordt.

1
2
<input type="number" name="aandacht">
<input type="number" name="teamwork">

de sql code is:

1
2
3
<?php
$sql 
"INSERT INTO status (aandacht, teamwork) VALUES ('".mysql_real_escape_string($_POST['aandacht'])."','".mysql_real_escape_string($_POST['teamwork'])."')";
?>

als ik gegevens in de velden invoer slaat ie deze ook netjes op, alleen als ik ze leeg laat zet ie er 0 neer
raptorixvrijdag 22 maart 2013 @ 17:43
quote:
0s.gif Op vrijdag 22 maart 2013 11:35 schreef Rockfire het volgende:

[..]

In het door mij gegeven voorbeeld worden de markers al in de database gegroepeerd. Je zou dan moeten gaan groeperen op basis van provincie / gemeente / wijk / buurt. Het CBS bied downloads waaruit je kunt halen welk gebied bij welke gemeente / wijk / buurt hoor: http://www.cbs.nl/nl-NL/m(...)013-2012-b68-pub.htm

Maar ik vrees dat dat dan toch wat te ingewikkeld voor je wordt :P
Ik heb ze eventueel als GEOJSON, ooit voor ander project gebruikt:

http://dl.dropbox.com/u/3055426/gemeente.json

En voor buurtinformatie: https://www.dropbox.com/s/runes0e56x1wr82/cbsgeojson.zip
#ANONIEMvrijdag 22 maart 2013 @ 17:46
quote:
0s.gif Op vrijdag 22 maart 2013 17:30 schreef googlie1978 het volgende:
ik heb een formulier gemaakt, daar kan ik gegevens invullen, maar niet alle gegevens zijn verplicht.
deze gegevens haal ik door middel van post uit het formulier en plaats deze in de database

even een kort voorbeeldje van de code, zodat het duidelijker wordt.
[ code verwijderd ]

de sql code is:
[ code verwijderd ]

als ik gegevens in de velden invoer slaat ie deze ook netjes op, alleen als ik ze leeg laat zet ie er 0 neer
Je hebt waarschijnlijk een default staan, om dat na te checken moet je even

1SHOW CREATE TABLE status
doen

Denk ik..

[ Bericht 8% gewijzigd door #ANONIEM op 22-03-2013 17:54:10 ]
raptorixvrijdag 22 maart 2013 @ 17:48
quote:
0s.gif Op vrijdag 22 maart 2013 17:46 schreef d4v1d het volgende:

[..]

Wat moet ie er dan neerzetten.. een lege string?
Een lege string is wat anders dan null he ;)
Als het een nummeriek veld is zet je er dus null in.
#ANONIEMvrijdag 22 maart 2013 @ 17:51
quote:
0s.gif Op vrijdag 22 maart 2013 17:48 schreef raptorix het volgende:

[..]

Een lege string is wat anders dan null he ;)
Als het een nummeriek veld is zet je er dus null in.
Zie mijn edit :@
Boze_Appelvrijdag 22 maart 2013 @ 18:01
quote:
0s.gif Op vrijdag 22 maart 2013 17:30 schreef googlie1978 het volgende:
ik heb een formulier gemaakt, daar kan ik gegevens invullen, maar niet alle gegevens zijn verplicht.
deze gegevens haal ik door middel van post uit het formulier en plaats deze in de database

even een kort voorbeeldje van de code, zodat het duidelijker wordt.
[ code verwijderd ]

de sql code is:
[ code verwijderd ]

als ik gegevens in de velden invoer slaat ie deze ook netjes op, alleen als ik ze leeg laat zet ie er 0 neer
Dat komt omdat je type = number gebruikt voor je input. Je hebt geen min en max ingevoerd, dus dan begint hij gewoon bij 0.

En/of een default in je database.
Rockfirevrijdag 22 maart 2013 @ 18:12
quote:
0s.gif Op vrijdag 22 maart 2013 17:43 schreef raptorix het volgende:

[..]

Ik heb ze eventueel als GEOJSON, ooit voor ander project gebruikt:

http://dl.dropbox.com/u/3055426/gemeente.json

En voor buurtinformatie: https://www.dropbox.com/s/runes0e56x1wr82/cbsgeojson.zip
Ik heb ze al in een database staan ;) En al gebruikt voor diverse google maps applicaties :) (die bomenkaart van Utrecht heb ik ooit ook aan meegeholpen)
Swetseneggervrijdag 22 maart 2013 @ 22:53
Ik heb weer een wazig probleem

Op een website heb ik MultiViews aangezet in .htaccess om Userfriendly URL's te maken. Sinds gisteren werkt het niet meer na een update van de hoster.

Die blijft nu roepen dat mijn script een fout bevat, maar naast het feit dat dat sowieso onmogelijk is ( :P ) werkt mijn script nog steeds prima als ik in de url .php aan de pagina toevoeg. Met andere woorden

http://<domein>/<pagina>/<iets> geeft een 404
http://<domein>/<pagina>.php/<iets> werkt foutloos.

Eerst dacht ik dat Multiviews simpelweg disabled was, maar vandaag vond ik wat leuks uit

http://www.hansbakkerlederwaren.nl/test (test.html) WERKT
http://www.hansbakkerlederwaren.nl/images/beheer (beheer.gif) WERKT
http://www.hansbakkerlederwaren.nl/test2 (test2.php) werkt NIET...

http://www.hansbakkerlederwaren.nl/test2.php werkt dan uiteraard weer wel.

Dus blijkbaar is .php uitgesloten van content negotiation. Weet iemand of filetypes welke door multiviews geserveerd worden in de apache config gespecificeerd dan wel uitgesloten kunnen worden? En zoja waar?
Chandlerzaterdag 23 maart 2013 @ 07:05
quote:
0s.gif Op vrijdag 22 maart 2013 18:12 schreef Rockfire het volgende:

[..]

Ik heb ze al in een database staan ;) En al gebruikt voor diverse google maps applicaties :) (die bomenkaart van Utrecht heb ik ooit ook aan meegeholpen)
Heb het ook maar gedownloaded, altijd handig *) vandaag is mijn huiswerk infowindow ajax ;)

@Swets: wat is de content van je htaccess file?
raptorixzaterdag 23 maart 2013 @ 08:02
quote:
0s.gif Op vrijdag 22 maart 2013 18:12 schreef Rockfire het volgende:

[..]

Ik heb ze al in een database staan ;) En al gebruikt voor diverse google maps applicaties :) (die bomenkaart van Utrecht heb ik ooit ook aan meegeholpen)
Oki, overigens kun je volgens mij wel testen of er meerdere markers over elkaar heen staan, tegenwoordig gaat het volgens mij vrij makkelijk, maar weet nog wel toen ik jaar of 10 funda bouwde dat dat een grote uitdaging was, maar weet niet of we eigenlijk toen al google maps gebruikten.
raptorixzaterdag 23 maart 2013 @ 08:04
quote:
0s.gif Op zaterdag 23 maart 2013 07:05 schreef Chandler het volgende:

[..]

Heb het ook maar gedownloaded, altijd handig *) vandaag is mijn huiswerk infowindow ajax ;)

@Swets: wat is de content van je htaccess file?
Ja, kijk vooral ook naar 3DJS.org daar staan paar leuke heatmap samples in combinatie met geojson, ik zal maandag even mijn sample op basis van deze jaart neergooien :)
Chandlerzaterdag 23 maart 2013 @ 08:09
quote:
0s.gif Op zaterdag 23 maart 2013 08:04 schreef raptorix het volgende:

[..]

Ja, kijk vooral ook naar 3DJS.org daar staan paar leuke heatmap samples in combinatie met geojson, ik zal maandag even mijn sample op basis van deze jaart neergooien :)
Leuk! *) kan er altijd van leren! :) zal 3djs ook eens een bezoekje geven.

Even iets anders, wil nu mijn infowindow anders maken, dus custom.

1
2
3
4
5
<div class="infobox-wrapper">
    <div id="infobox">
        <div id="infobox-content">loading information.</dov>
    </div>
</div>
Bovenstaand is mijn html code voor mijn custom infowindow! *) werkt op zich goed, echter wil ik de content laten vervangen door en ajax aanroep (iets wat half werkt).
1
2
3
4
5
6
7
8
9
10
11
google.maps.event.addListener(marker, 'click', function() 
        { 
            $.ajax({  
                url: '/test/ajax?name=' + name + '&id=' + id,
                success: function(data) {  
                    //infoWindow.setContent(data);
                    $('#infobox').innerHTML = data;
                    infoWindow.open(map, marker);  
                }  
            }); 
        }); 

Normaal zou ik via infoWindow.setContent(data) de content kunnen vervangen maar helaas vervang ik daarmee ook de styling van de divs en dat wil ik niet, vandaar dat ik dacht middels $('#infobox').innerHTML de content aan te passen maar dat werkt niet. Heeft iemand hier een oplossing voor? google bracht mij namelijk niet veel nuttigs :{
raptorixzaterdag 23 maart 2013 @ 08:13
Volgens mij kan je gewoon $('#infobox').text(data); gebruiken, anders even googlen op jquery replace text within div.
Chandlerzaterdag 23 maart 2013 @ 08:16
quote:
0s.gif Op zaterdag 23 maart 2013 08:13 schreef raptorix het volgende:
Volgens mij kan je gewoon $('#infobox').text(data); gebruiken, anders even googlen op jquery replace text within div.
1$('#infobox-content').text(data);
werkt totaal niet (geeft ook geen error trouwens)

1$('#infobox-content').innerHTML = data;
plaatst tekst maar vervangt styling :{

Op zich weet ik hoe ik tekst kan aanpassen $('#div').innerHTML maar dat werkt op een of andere manier niet samen met de styling en als ik de content niet aanpas zie ik een leuke box met 'loading....'
Swetseneggerzaterdag 23 maart 2013 @ 08:24
quote:
0s.gif Op zaterdag 23 maart 2013 07:05 schreef Chandler het volgende:

[..]

Heb het ook maar gedownloaded, altijd handig *) vandaag is mijn huiswerk infowindow ajax ;)

@Swets: wat is de content van je htaccess file?
Options +Multiviews

Kwam hier hetzelfde probleem (en de oplossing) tegen
http://serverfault.com/qu(...)e-negotiation-failed

Nu nog hopen dat de hoster even naar zijn apache config wil kijken en niet blijft volhouden dat het mijn script is.
raptorixzaterdag 23 maart 2013 @ 08:25
http://api.jquery.com/text/
Chandlerzaterdag 23 maart 2013 @ 08:28
quote:
0s.gif Op zaterdag 23 maart 2013 08:24 schreef Swetsenegger het volgende:

[..]

Options +Multiviews
That's all?

En hoe pars je de URL gegevens? ook handig *)

quote:
Ben ik bekend mee 8)7 en zoals ik reeds aangaf geeft dat verder geen voldoening... :+ en zorgen beide opties dat ik de styling van de infoWindow opeens foetsie is...

Ben nog druk google aan't stress testen met mijn vraag!
raptorixzaterdag 23 maart 2013 @ 08:32
Als je innerHTML vervangt, dan lijkt het me logisch dat je ook de styling veranderd, daarom moet je de text zien te veranderen en niet de html, wat daarvoor juiste commando is moet je even opzoeken ;)
Swetseneggerzaterdag 23 maart 2013 @ 08:37
quote:
0s.gif Op zaterdag 23 maart 2013 08:28 schreef Chandler het volgende:

[..]

That's all?

En hoe pars je de URL gegevens? ook handig *)

Gewoon in php
Chandlerzaterdag 23 maart 2013 @ 08:38
quote:
3s.gif Op zaterdag 23 maart 2013 08:37 schreef Swetsenegger het volgende:

[..]

Gewoon in php
Dat leek mij logisch, maar hoe? want dan neem ik aan dat daar een fout in zit :)
Swetseneggerzaterdag 23 maart 2013 @ 08:41
quote:
0s.gif Op zaterdag 23 maart 2013 08:38 schreef Chandler het volgende:

[..]

Dat leek mij logisch, maar hoe? want dan neem ik aan dat daar een fout in zit :)
Huh? heb je mijn post wel gelezen? Ik heb een testpagina gemaakt met alleen

1
2
3
<?php
echo "dit is een php test";
?>

http://www.hansbakkerlederwaren.nl/test2

dit geeft een 404

http://www.hansbakkerlederwaren.nl/test2.php

dit geeft de echo in het script gewoon weer.

Apache past multiviews op .html en .gif toe, maar dus NIET op .php. Wanneer hij dus in een directory gaat zoeken naar <bestand> vind hij WEL <bestand>.html of <bestand>.gif, maar als er <bestand>.php staat negeert hij die en geeft een 404

in mijn (echte) script doe ik niet veel spannender dan

1
2
3
<?php
$detailId
=end(explode'/'substr($_SERVER['PATH_INFO'], 1)));
?>
Chandlerzaterdag 23 maart 2013 @ 08:43
Misschien een regeltje toevoegen in je htacces dat hij ook .php pakt? misschien dat de oude INI van je server dat wel deed en de nieuwe niet?

Zelf rewrite ik alles via index.php en zoek dan naar het desbetreffende bestandje in mijn site (soort mvc)
Swetseneggerzaterdag 23 maart 2013 @ 08:47
quote:
0s.gif Op zaterdag 23 maart 2013 08:43 schreef Chandler het volgende:
Misschien een regeltje toevoegen in je htacces dat hij ook .php pakt? misschien dat de oude INI van je server dat wel deed en de nieuwe niet?

Zelf rewrite ik alles via index.php en zoek dan naar het desbetreffende bestandje in mijn site (soort mvc)
Ja, ik wist niet dat dat ook .htaccess kon!

AddType application/x-httpd-php .php toegevoegd in .htaccess en het werkt :P
Chandlerzaterdag 23 maart 2013 @ 09:02
quote:
0s.gif Op zaterdag 23 maart 2013 08:47 schreef Swetsenegger het volgende:

[..]

Ja, ik wist niet dat dat ook .htaccess kon!

AddType application/x-httpd-php .php toegevoegd in .htaccess en het werkt :P
_O_ gefeli en zo moeilijk was het niet dus :P
Swetseneggerzaterdag 23 maart 2013 @ 09:11
quote:
0s.gif Op zaterdag 23 maart 2013 09:02 schreef Chandler het volgende:

[..]

_O_ gefeli en zo moeilijk was het niet dus :P
Wel om uit te vinden wat er nu mis was. Zeker met een weinig toeschietelijke hoster die vanaf moment 1 heeft geroepen "zit in je script" Terwijl ik kon aantonen dat de server een 404 terug gooide en we dus helemaal niet in mijn script kwamen.
Chandlerzaterdag 23 maart 2013 @ 09:13
quote:
0s.gif Op zaterdag 23 maart 2013 09:11 schreef Swetsenegger het volgende:

[..]

Wel om uit te vinden wat er nu mis was. Zeker met een weinig toeschietelijke hoster die vanaf moment 1 heeft geroepen "zit in je script" Terwijl ik kon aantonen dat de server een 404 terug gooide en we dus helemaal niet in mijn script kwamen.
LOL het is sowieso raar dat die PHP scripts niet geladen werden, dat is tegenwoordig de norm toch?
Swetseneggerzaterdag 23 maart 2013 @ 09:14
quote:
0s.gif Op zaterdag 23 maart 2013 09:13 schreef Chandler het volgende:

[..]

LOL het is sowieso raar dat die PHP scripts niet geladen werden, dat is tegenwoordig de norm toch?
Ze werden wel geladen als je .php er achter zet.
Chandlerzaterdag 23 maart 2013 @ 09:15
Duidelijk :) al zou ik het toch via een centraal script aanroepen ;) maar goed, wie ben ik hé! :P
Chandlerzaterdag 23 maart 2013 @ 09:20
quote:
0s.gif Op zaterdag 23 maart 2013 08:16 schreef Chandler het volgende:

[..]
[ code verwijderd ]

werkt totaal niet (geeft ook geen error trouwens)
[ code verwijderd ]

plaatst tekst maar vervangt styling :{

Op zich weet ik hoe ik tekst kan aanpassen $('#div').innerHTML maar dat werkt op een of andere manier niet samen met de styling en als ik de content niet aanpas zie ik een leuke box met 'loading....'
Helaas werkt onderstaand voorbeeld ook niet :{

1infoWindow.setContent('<div class="infobox-wrapper"><div id="infobox">' + data + '</div></div>');

:)
Juicyhilzaterdag 23 maart 2013 @ 09:46
quote:
0s.gif Op zaterdag 23 maart 2013 09:15 schreef Chandler het volgende:
Duidelijk :) al zou ik het toch via een centraal script aanroepen ;) maar goed, wie ben ik hé! :P
Kan ook nog veiliger zijn.

Gewoon mod_rewrite aanzetten
Lightzaterdag 23 maart 2013 @ 10:12
quote:
0s.gif Op zaterdag 23 maart 2013 08:09 schreef Chandler het volgende:

[..]

Leuk! *) kan er altijd van leren! :) zal 3djs ook eens een bezoekje geven.

Even iets anders, wil nu mijn infowindow anders maken, dus custom.
[ code verwijderd ]

Bovenstaand is mijn html code voor mijn custom infowindow! *) werkt op zich goed, echter wil ik de content laten vervangen door en ajax aanroep (iets wat half werkt).
Die </dov> moet </div> zijn, neem ik aan.
quote:
[ code verwijderd ]

Normaal zou ik via infoWindow.setContent(data) de content kunnen vervangen maar helaas vervang ik daarmee ook de styling van de divs en dat wil ik niet, vandaar dat ik dacht middels $('#infobox').innerHTML de content aan te passen maar dat werkt niet. Heeft iemand hier een oplossing voor? google bracht mij namelijk niet veel nuttigs :{
Hoe ziet je css eruit? Ik denk dat re geen styling zit op #infobox maar alleen op de div daarin (#infobox-content). Die verdwijnt, dus gaat de styling ook weg.
Chandlerzaterdag 23 maart 2013 @ 12:06
quote:
0s.gif Op zaterdag 23 maart 2013 10:12 schreef Light het volgende:

[..]

Die </dov> moet </div> zijn, neem ik aan.

[..]

Hoe ziet je css eruit? Ik denk dat re geen styling zit op #infobox maar alleen op de div daarin (#infobox-content). Die verdwijnt, dus gaat de styling ook weg.
Ja die dov moet een div zijn lol maar die had ik reeds gevonden en aangepast.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
.infobox-wrapper {
        display:none;
    }
    #infobox {
        border:2px solid black;
        margin-top: 8px;
        background:#333;
        color:#FFF;
        font-family:Arial, Helvetica, sans-serif;
        font-size:12px;
        padding: .5em 1em;
        -webkit-border-radius: 2px;
        -moz-border-radius: 2px;
        border-radius: 2px;
        text-shadow:0 -1px #000000;
        -webkit-box-shadow: 0 0  8px #000;
        box-shadow: 0 0 8px #000;
    }

dit is mijn stylesheet.

dit is de aanroep van de infoWindow
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
   infoWindow = new InfoBox({
            content: $("#infobox"),
            disableAutoPan: false,
            maxWidth: 150,
            pixelOffset: new google.maps.Size(-140, 0),
            zIndex: null,
            boxStyle: {
                background: "url('http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobox/examples/tipbox.gif') no-repeat",
                opacity: 0.75,
                width: "280px"
            },
            closeBoxMargin: "12px 4px 2px 2px",
            closeBoxURL: "http://www.google.com/intl/en_us/mapfiles/close.gif",
            infoBoxClearance: new google.maps.Size(1, 1)
        });

Maar iedere keer als ik op een marker klik verdwijnt de styling en komt de tekst er voor in de plaats..

@Juicyhil: Hoezo kan mod_rewrite veiliger zijn? tenzij je doelt op het parsen van afbeeldingen, dan ben ik het met je eens... die behoor je niet te 'parsen' ;)
KomtTijd...zaterdag 23 maart 2013 @ 12:54
hoort dit niet gewoon in het html-topic?
Chandlerzaterdag 23 maart 2013 @ 15:43
Je hebt gelijk KomtTijd, maar je praat zo gemakkelijk door in dit topic ;) ik vraag wel een post move aan *)
Devolutionzaterdag 23 maart 2013 @ 18:42
En als je
1jQuery("#infobox")

gebruikt in plaats van
1$("#infobox")

werkt het dan ook niet?
boem-dikkiezaterdag 23 maart 2013 @ 19:56
Het is sowieso geen .text(data) maar .html(data) in jouw geval denk ik.
Chandlerdinsdag 26 maart 2013 @ 07:22
nvm
KomtTijd...dinsdag 26 maart 2013 @ 10:45
Weet iemand of er een manier bestaat om in de tabel zelf op te slaan of een record uitgelezen is met een bepaalde query?

bijv. SELECT * FROM table AND UPDATE table SET uitgelezen = 1

of moet ik daar 2 queries van maken?
#ANONIEMdinsdag 26 maart 2013 @ 10:46
quote:
14s.gif Op dinsdag 26 maart 2013 10:45 schreef KomtTijd... het volgende:
Weet iemand of er een manier bestaat om in de tabel zelf op te slaan of een record uitgelezen is met een bepaalde query?

bijv. SELECT * FROM table AND UPDATE table SET uitgelezen = 1

of moet ik daar 2 queries van maken?
Gewoon 2 queries van maken.
KomtTijd...dinsdag 26 maart 2013 @ 11:30
ja ik zit weer te moeilijk te denken voor een simpel probleem geloof ik.
Crutchdinsdag 26 maart 2013 @ 13:08
quote:
14s.gif Op dinsdag 26 maart 2013 11:30 schreef KomtTijd... het volgende:
ja ik zit weer te moeilijk te denken voor een simpel probleem geloof ik.
Houdt de geest jong. :7
urseldinsdag 26 maart 2013 @ 15:47
Mensen hier al met MariaDb gespeeld?
Dit naar aanleiding van onderstaande bericht. :P

http://webwereld.nl/nieuw(...)n-massaal-mysql.html
KomtTijd...dinsdag 26 maart 2013 @ 16:24
quote:
0s.gif Op dinsdag 26 maart 2013 15:47 schreef ursel het volgende:
Mensen hier al met MariaDb gespeeld?
Dit naar aanleiding van onderstaande bericht. :P

http://webwereld.nl/nieuw(...)n-massaal-mysql.html
Toevallig gisteren even naar gegoogled. Ben nog niet gelijk geneigd om het te gaan installeren maar zo te zien is het ook op de licentie na weinig anders...
urseldinsdag 26 maart 2013 @ 17:55
quote:
14s.gif Op dinsdag 26 maart 2013 16:24 schreef KomtTijd... het volgende:

[..]

Toevallig gisteren even naar gegoogled. Ben nog niet gelijk geneigd om het te gaan installeren maar zo te zien is het ook op de licentie na weinig anders...
Even snel geinstalleerd en database geimporteerd. Applicatie werkt verder gewoon goed naar behoren.
Zend Profiler geeft aan dat er qua performance ook praktisch geen verschil is. Maar goed. Dat is onder amper load en even snel kijken op +/- 100 queries uitvoer.
pascal08dinsdag 26 maart 2013 @ 18:08
Kan ik jullie weer lastig vallen met mijn complexe vragen? Ik zal mijn probleem even omschrijven met een zo simpel mogelijk voorbeeld.

Ik heb een database met, zeg, 3 dieren: kat, hond, vis. Elk dier heeft maximaal 8 verschillende eigenschappen. Die eigenschappen zijn gekoppeld aan een nummer dat ook weer gekoppeld is aan elk dier.

De ene database ziet er dus zo uit:

Dier_ID-----------Dier
1--------------------Kat
2--------------------Hond
3--------------------Vis

En de andere database zo:

Eigenschap_ID-------Eigenschap------------Dier_ID
1----------------------------Miauwt------------------1
2----------------------------Jaagt op muizen-----1
3----------------------------Geeft kopjes----------1
4----------------------------Heeft een staart------1
5----------------------------Blaft----------------------2
6----------------------------Heeft een staart------2
7---------------------------Zwemt--------------------3

Ik weet dus niet of deze database wel geschikt is om het probleem op de meest handige manier aan te pakken.

Wat ik nu wil is een checkboxlist, waarmee ik dieren kan filteren op eigenschappen. Stel ik vink alleen "zwemt" aan, dan wil ik alleen de vis als resultaat. Vink ik alles aan behalve "geeft kopjes", dan wil ik graag alle dieren, behalve de kat als resultaat.

Heeft iemand een idee op welke manier ik dit probleem het beste kan oplossen?
KomtTijd...dinsdag 26 maart 2013 @ 19:25
beter maak je een aparte tabel met alle mogelijke eigenschappen en een koppeltabel om deze aan dieren te koppelen.

SELECT DISTINCT dier_id FROM koppeltabel WHERE eigenschap_id IN (values van chekboxes)
Rockfiredinsdag 26 maart 2013 @ 19:32
quote:
14s.gif Op dinsdag 26 maart 2013 19:25 schreef KomtTijd... het volgende:
beter maak je een aparte tabel met alle mogelijke eigenschappen en een koppeltabel om deze aan dieren te koppelen.

SELECT DISTINCT dier_id FROM koppeltabel WHERE eigenschap_id IN (values van chekboxes)
Daarmee ben je er niet ;) Hij wil namelijk alleen de dieren waarvan alle eigenschappen geselecteerd zijn. Dus als één van de eigenschappen niet is geselecteerd (in zijn voorbeeld "geeft kopjes" mag hij niet in de lijst voorkomen, dat is bij jou nu wel het geval.
pascal08dinsdag 26 maart 2013 @ 19:37
quote:
0s.gif Op dinsdag 26 maart 2013 19:32 schreef Rockfire het volgende:

[..]

Daarmee ben je er niet ;) Hij wil namelijk alleen de dieren waarvan alle eigenschappen geselecteerd zijn. Dus als één van de eigenschappen niet is geselecteerd (in zijn voorbeeld "geeft kopjes" mag hij niet in de lijst voorkomen, dat is bij jou nu wel het geval.
Dat maakt het ook zo lastig denk ik. Een array in de database opslaan zou het makkelijkste zijn. :P
Rockfiredinsdag 26 maart 2013 @ 19:40
SELECT DISTINCT dier_id FROM koppeltabel WHERE dier_id NOT IN ( SELECT DISTINCT dier_id FROM koppeltabel WHERE eigenschap_id NOT IN ( values van checkboxes ) )
pascal08dinsdag 26 maart 2013 @ 19:50
quote:
0s.gif Op dinsdag 26 maart 2013 19:40 schreef Rockfire het volgende:
SELECT DISTINCT dier_id FROM koppeltabel WHERE dier_id NOT IN ( SELECT DISTINCT dier_id FROM koppeltabel WHERE eigenschap_id NOT IN ( values van checkboxes ) )
Moet ik nu dus een 3e tabel aanmaken, die de dierentabel koppelt met de kenmerkentabel?
Rockfiredinsdag 26 maart 2013 @ 19:52
quote:
0s.gif Op dinsdag 26 maart 2013 19:50 schreef pascal08 het volgende:

[..]

Moet ik nu dus een 3e tabel aanmaken, die de dierentabel koppelt met de kenmerkentabel?
Ik was doorgegaan op het voorbeeld van KomtTijd, het moet niet, maar in jouw voorbeeld kun je nu een eigenschap niet aan meerdere dieren koppelen. Als je het niet doet moet je in mijn query "koppeltabel" vervangen door "eigenschappentabel"
pascal08dinsdag 26 maart 2013 @ 22:14
quote:
0s.gif Op dinsdag 26 maart 2013 19:52 schreef Rockfire het volgende:

[..]

Ik was doorgegaan op het voorbeeld van KomtTijd, het moet niet, maar in jouw voorbeeld kun je nu een eigenschap niet aan meerdere dieren koppelen. Als je het niet doet moet je in mijn query "koppeltabel" vervangen door "eigenschappentabel"
Wat zou beter zijn voor de prestaties?

2 tabellen, waarbij elke regel een dier koppelt aan een eigenschap

óf

3 tabellen waarbij één tabel uit unieke kenmerken bestaat en één tabel die per regel een kenmerk aan een dier koppelt?

Natuurlijk uitgaande van de query die jij hier post.

Ik zie eigenlijk het nut niet van die koppeltabel, want in de eigenschappen tabel kan ik toch ook in meerdere regels aangeven dat een dier meerdere kenmerken heeft?
KomtTijd...dinsdag 26 maart 2013 @ 22:21
Eh. Ik denk dat prestaties op dit moment wel het laatste zijn waar je je druk om hoeft te maken.
pascal08dinsdag 26 maart 2013 @ 22:35
quote:
14s.gif Op dinsdag 26 maart 2013 22:21 schreef KomtTijd... het volgende:
Eh. Ik denk dat prestaties op dit moment wel het laatste zijn waar je je druk om hoeft te maken.
Oké, dan ga ik het eerst proberen zonder koppeltabel aangezien in die 2 tabellen al heb. Mocht dat niet lukken, dan kom ik wel weer terug.

Bedankt voor de input. ^O^
KomtTijd...dinsdag 26 maart 2013 @ 22:39
Ik snap niet helemaal hoe je dat voor je ziet. Je wilt meerdere eigenschappen kunnen koppelen aan meerdere dieren?
pascal08dinsdag 26 maart 2013 @ 22:50
quote:
5s.gif Op dinsdag 26 maart 2013 22:39 schreef KomtTijd... het volgende:
Ik snap niet helemaal hoe je dat voor je ziet. Je wilt meerdere eigenschappen kunnen koppelen aan meerdere dieren?
Ja.
KomtTijd...dinsdag 26 maart 2013 @ 22:57
Dan heb je die koppeltabel dus gewoon nodig.
Rockfiredinsdag 26 maart 2013 @ 22:58
quote:
0s.gif Op dinsdag 26 maart 2013 22:14 schreef pascal08 het volgende:
Ik zie eigenlijk het nut niet van die koppeltabel, want in de eigenschappen tabel kan ik toch ook in meerdere regels aangeven dat een dier meerdere kenmerken heeft?
je hebt nu twee keer de eigenschap "heeft een staart" in de tabel staan. Stel je hebt straks 100 dieren met een staart in de database staan en je wilt de beschrijving van de eigenschap aanpassen. Dan zul je dus 100 records in de database moeten aanpassen, terwijl met een koppeltabel je slechts één record zou hoeven aan te passen.

En dan heb ik het nog niet gehad over de mogelijkheid die ontstaat dat je per ongeluk dezelfde eigenschap bij een ander dier anders omschrijft...
pascal08dinsdag 26 maart 2013 @ 22:59
quote:
14s.gif Op dinsdag 26 maart 2013 22:57 schreef KomtTijd... het volgende:
Dan heb je die koppeltabel dus gewoon nodig.
quote:
1s.gif Op dinsdag 26 maart 2013 22:58 schreef Rockfire het volgende:

[..]

je hebt nu twee keer de eigenschap "heeft een staart" in de tabel staan. Stel je hebt straks 100 dieren met een staart in de database staan en je wilt de beschrijving van de eigenschap aanpassen. Dan zul je dus 100 records in de database moeten aanpassen, terwijl met een koppeltabel je slechts één record zou hoeven aan te passen.

En dan heb ik het nog niet gehad over de mogelijkheid die ontstaat dat je per ongeluk dezelfde eigenschap bij een ander dier anders omschrijft...
That makes sense. :D

[ Bericht 4% gewijzigd door pascal08 op 26-03-2013 23:13:00 ]
pascal08dinsdag 26 maart 2013 @ 23:03
quote:
14s.gif Op dinsdag 26 maart 2013 22:57 schreef KomtTijd... het volgende:
Dan heb je die koppeltabel dus gewoon nodig.
quote:
1s.gif Op dinsdag 26 maart 2013 22:58 schreef Rockfire het volgende:

[..]

je hebt nu twee keer de eigenschap "heeft een staart" in de tabel staan. Stel je hebt straks 100 dieren met een staart in de database staan en je wilt de beschrijving van de eigenschap aanpassen. Dan zul je dus 100 records in de database moeten aanpassen, terwijl met een koppeltabel je slechts één record zou hoeven aan te passen.

En dan heb ik het nog niet gehad over de mogelijkheid die ontstaat dat je per ongeluk dezelfde eigenschap bij een ander dier anders omschrijft...
Ik ga even de tabellen omgooien. :)

Ik moet dus hebben:

Dierentabel:

Dier_ID-----------Dier
1--------------------Kat
2--------------------Hond
3--------------------Vis

Eigenschappentabel:

Eigenschap------------Eigenschap_ID
Miauwt-------------------1
Jaagt op muizen-----2
Geeft kopjes-----------3
Heeft een staart------4
Blaft-----------------------5
Zwemt--------------------6

Koppeltabel:

Eigenschap_ID----------Dier_ID
1------------------------------1
2------------------------------1
3------------------------------1
4------------------------------1
4------------------------------2
5------------------------------2
6------------------------------3

Op deze manier blijven de omschrijvingen van de eigenschappen veel consequenter. Dat is toch wat jullie bedoelen? Ook denk ik dat een database het fijner zal vinden om te zoeken naar getalletjes in plaats van strings. :)

[ Bericht 4% gewijzigd door pascal08 op 26-03-2013 23:13:04 ]
Chandlerwoensdag 27 maart 2013 @ 07:11
Ik zou ook gaan voor 3 tabellen.

1. dier.
2. dingen die het dier kan doen
3. het koppel tabel die dier en actie koppelen.

Qua performance moet dat weinig uitmaken op dit moment maar ook met 1.000.000 records zou dit super snel moeten werken! *)
:)
Rockfirewoensdag 27 maart 2013 @ 09:53
quote:
0s.gif Op dinsdag 26 maart 2013 23:03 schreef pascal08 het volgende:

[..]

[..]

Ik ga even de tabellen omgooien. :)

Ik moet dus hebben:

Dierentabel:

Dier_ID-----------Dier
1--------------------Kat
2--------------------Hond
3--------------------Vis

Eigenschappentabel:

Eigenschap------------Eigenschap_ID
Miauwt-------------------1
Jaagt op muizen-----2
Geeft kopjes-----------3
Heeft een staart------4
Blaft-----------------------5
Zwemt--------------------6

Koppeltabel:

Eigenschap_ID----------Dier_ID
1------------------------------1
2------------------------------1
3------------------------------1
4------------------------------1
4------------------------------2
5------------------------------2
6------------------------------3

Op deze manier blijven de omschrijvingen van de eigenschappen veel consequenter. Dat is toch wat jullie bedoelen? Ook denk ik dat een database het fijner zal vinden om te zoeken naar getalletjes in plaats van strings. :)
Inderdaad :Y

Vergeet ook niet om indexen aan te maken ;)
TwenteFCvrijdag 29 maart 2013 @ 14:56
quote:
0s.gif Op dinsdag 26 maart 2013 19:37 schreef pascal08 het volgende:

[..]

Dat maakt het ook zo lastig denk ik. Een array in de database opslaan zou het makkelijkste zijn. :P
Kan wel een array in de db opslaan. :P
Darkomenmaandag 1 april 2013 @ 14:37
Iemand enig idee hoe ik deze pagina's van waypoint kan screenscrapen?
Ik krijg niet de juiste data terug:(
https://app.halowaypoint.(...)tch-b5bae280fab08275

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$url = 'https://app.halowaypoint.com/en-us/Halo4/Ninja%20pgl/wargames/match-b5bae280fab08275';
$agent= $_SERVER['HTTP_USER_AGENT'] ;

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_URL,$url);
$result=curl_exec($ch);
echo '<xmp>'.$result.'</xmp>';

?>
Klein test scriptje
rekenwondermaandag 1 april 2013 @ 15:34
Wat krijg je dan terug? En wat verwacht je terug te krijgen? Log je wel eerst in?
WyriHaximusmaandag 1 april 2013 @ 16:07
quote:
0s.gif Op maandag 1 april 2013 15:34 schreef rekenwonder het volgende:
Wat krijg je dan terug? En wat verwacht je terug te krijgen? Log je wel eerst in?
Idd word gelijk door geredirect naar een login. @Darkomen ff wat meer werk in stoppen door o.a. een cookie jar te gebruiken of zoiets als selenium of phantomjs te gebruiken.
rekenwondermaandag 1 april 2013 @ 18:40
Nog wel een tip als je beter het proces beter wil volgen:
1
2
curl_setopt($ch, CURLOPT_STDERR, fopen('php://output', 'w+'));
curl_setopt($ch, CURLOPT_VERBOSE, true);
Ook nuttig in dit geval:
1curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
En waar ^^ al op hintte: gebruik CURLOPT_COOKIEJAR.
Darkomenmaandag 1 april 2013 @ 19:28
quote:
0s.gif Op maandag 1 april 2013 15:34 schreef rekenwonder het volgende:
Wat krijg je dan terug? En wat verwacht je terug te krijgen? Log je wel eerst in?
Een stat pagina.
Was idd de login vergeten.

En bedankt, ga maar eens met de nieuwe suggesties aan de slag
Chandlermaandag 1 april 2013 @ 19:41
Iemand een idee hoe ik deze query beter kan schrijven?

1
2
3
4
5
6
7
SELECT `plaatjes`.*
FROM `plaatjes`
LEFT JOIN `views` ON `views`.`category` = `plaatjes`.`category`
WHERE YEAR(`views`.`date`) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH)
AND MONTH(`views`.`date`) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH)
GROUP BY `views`.`category`, `plaatjes`.`category`
ORDER BY `views`.`date` DESC

structuur en indexes
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
CREATE TABLE IF NOT EXISTS `plaatjes` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `category` varchar(32) CHARACTER SET latin1 NOT NULL,
  `filetype` tinyint(3) unsigned NOT NULL,
  `filename` varchar(40) CHARACTER SET latin1 NOT NULL,
  `filesize` int(10) unsigned NOT NULL,
  `height` int(10) unsigned NOT NULL,
  `width` int(10) unsigned NOT NULL,
  `animated` enum('j','n') CHARACTER SET latin1 NOT NULL DEFAULT 'n',
  `views` int(10) unsigned NOT NULL,
  `lastview` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `category` (`category`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin ROW_FORMAT=DYNAMIC AUTO_INCREMENT=28350 ;

-- --------------------------------------------------------

CREATE TABLE IF NOT EXISTS `views` (
  `category` varchar(32) NOT NULL,
  `date` date NOT NULL,
  `tstamp` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
  `views` int(10) unsigned NOT NULL,
  `thumbs` int(10) unsigned NOT NULL,
  `searches` int(10) unsigned NOT NULL,
  UNIQUE KEY `category` (`category`,`date`),
  KEY `date` (`date`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

maar deze gebruikt filesort, iets wat ik graag wil voorkomen aangezien dat nogal in de snelheid beperkt.

1
2
1,SIMPLE,views,index,category,category,37,NULL,35317,Using where; Using index; Using temporary; Using f...
1,SIMPLE,plaatjes,ref,category,category,34,nvt****_anipl.views.category,17

Iemand een idee?
Lightdinsdag 2 april 2013 @ 20:56
Wat probeer je precies te bereiken met je query?
Darkomenwoensdag 3 april 2013 @ 16:25
Het ligt wat ingewikkelder dan ik dacht.

Ik heb eerst een token nodig van M$ Live via "Connect Live OAuth 2.0"
Alleen kan ik daar voor php en connect live weinig over vinden.
Wel voor google.

Heeft iemand van jullie daar ervaring mee? php +connect live OAuth 2.0?

Daarmee moet ik weer een token van halowaypoint ophalen, daar is genoeg over gedocumenteerd op http://api.auntiedot.net
Als ik die beide heb dan kan ik de gewenste json data ophalen en verwerken.
Chandlerwoensdag 3 april 2013 @ 16:49
quote:
0s.gif Op dinsdag 2 april 2013 20:56 schreef Light het volgende:
Wat probeer je precies te bereiken met je query?
Ik sla dagelijks views op basis van de categorieën. In deze views sla ik de datum, timestamp, categorie naam, aantal thumb views, image views en zoek opdrachten op. Deze wil ik gebruiken in combinatie met het plaatjes tabel. Eerst wil ik bv de beste categorieen van de laatste dag/maand opvragen en daarbij wil ik het plaatjes tabel gebruiken om een plaatje (liefst, het best bekeken plaatje) uit te kunnen lezen.

Nu kreeg ik via een ander forum de volgende query voorgesteld, maar deze werkt ook niet snel, denk er nu aan om deze query te splitsen in 2 queries zodat ik deze sneller kan laten draaien (denk ik).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT plaatjes.*
FROM (
  SELECT MAX(plaatjes.id) AS id, plaatjes.category, a.date_viewed
  FROM (
    SELECT category, MAX(date) AS date_viewed
    FROM views
    WHERE date BETWEEN date_sub(CURDATE(), INTERVAL '1' month) and CURDATE()
    GROUP BY category
  ) a
  LEFT JOIN plaatjes ON a.category = plaatjes.category
  GROUP BY plaatjes.category, a.date_viewed
) b
LEFT JOIN plaatjes ON b.id = plaatjes.id
ORDER BY b.date_viewed DESC
LIMIT 5 

Alleen lijkt deze wat complex, snap er zelf de helft maar van :P en is wel een stuk sneller (van 10 seconden naar 1-2 seconden).

Iemand een idee?
Chandlerwoensdag 3 april 2013 @ 21:21
Ik heb een testje gedaan, en wat blijkt 2 queries zijn sneller ;)

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

function microtime_float()
{
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}

function getRecordsByDate(&$db, $search = '1 DAY')
{
    $sql = "SELECT SQL_NO_CACHE category, MAX(date) AS date_viewed
            FROM views
            WHERE date BETWEEN date_sub(CURDATE(), INTERVAL " . $search . ") and CURDATE()
            AND `category` != ''
            GROUP BY category
            LIMIT 5";
    $db->q($sql);
    if ($db->rows() > 0)
    {
        $l = array();
        foreach ($db->fetch() AS $k=>$v)
        {
            $l[$v['category']] = $v['date_viewed'];
        }
        
        if (count($l) > 0)
        {
            $sql = "SELECT `plaatjes`.*
                    FROM `plaatjes`
                    WHERE `category` IN ('" . implode("','", array_keys($l)) . "')
                    GROUP BY `plaatjes`.`category`
                    ORDER BY `plaatjes`.`views` DESC";
            $db->q($sql);
            
            return $db->fetch();
        }
    }
    return array();
}

function getRecordsByDateOld(&$db, $search = '1 DAY')
{
    $sql = 'SELECT SQL_NO_CACHE plaatjes.*
            FROM (
                  SELECT MAX(plaatjes.id) AS id, plaatjes.category, a.date_viewed
                  FROM (
                        SELECT category, MAX(date) AS date_viewed
                        FROM views
                        WHERE date BETWEEN date_sub(CURDATE(), INTERVAL '  . $search . ') and CURDATE()
                        AND `category` != \'\'
                        GROUP BY category
                       ) a
                  LEFT JOIN plaatjes ON a.category = plaatjes.category
                  GROUP BY plaatjes.category, a.date_viewed
                ) b
            LEFT JOIN plaatjes ON b.id = plaatjes.id
            ORDER BY b.date_viewed DESC
            LIMIT 5';
    
    $db->q($sql);
    if ($db->rows() > 0)
    {
        return $db->fetch();
    }
    else
    {
        return array();
    }
}

echo '1 day old function<br />';
$time_start = microtime_float();
for ($x = 0; $x < 100; $x++)
{
    getRecordsByDateOld($db, '1 DAY');
}
echo round(microtime_float() - $time_start, 2) . " secs<br />";

echo '1 day new function<br />';
$time_start = microtime_float();
for ($x = 0; $x < 100; $x++)
{
    getRecordsByDate($db, '1 DAY');
}
echo round(microtime_float() - $time_start, 2) . " secs<br />";

echo '1 month old function<br />';
$time_start = microtime_float();
for ($x = 0; $x < 100; $x++)
{
    getRecordsByDateOld($db, '1 MONTH');
}
echo round(microtime_float() - $time_start, 2) . " secs<br />";
echo '1 month new function<br />';
$time_start = microtime_float();
for ($x = 0; $x < 100; $x++)
{
    getRecordsByDate($db, '1 MONTH');
}
echo round(microtime_float() - $time_start, 2) . " secs<br />";

uitkomst:
1
2
3
4
5
6
7
8
1 day old function
4.63 secs
1 day new function
4.51 secs
1 month old function
33.67 secs
1 month new function
0.19 secs

met name de maand functie is extreem snel.. waarom? geen idee... nu eens ff online testen.

Online versie vertelt nog een mooier verhaal.

1
2
3
4
5
6
7
8
1 day old function
55.34 secs
1 day new function
0.19 secs
1 month old function
79.06 secs
1 month new function
0.19 secs

In mijn lokale versie zijn er nog geen statistieken van 'vandaag' / 'gisteren' online wel.. Toch raar want vele mensen zeggen dat 1 query altijd sneller is dan 2........

[ Bericht 0% gewijzigd door Chandler op 03-04-2013 21:32:06 ]
Pakspulwoensdag 3 april 2013 @ 21:26
Voer eens tien duizend je functie uit en kijk dan eens naar het gemiddelde.
Chandlerwoensdag 3 april 2013 @ 21:28
why 10.000? dan is mijn systeem nog wel ff bezig...
Rockfirewoensdag 3 april 2013 @ 21:33
quote:
0s.gif Op woensdag 3 april 2013 21:28 schreef Chandler het volgende:
why 10.000? dan is mijn systeem nog wel ff bezig...
Omdat je dan pas betrouwbare statistieken hebt ;) Eén keer een query uitvoeren zegt nog heel weinig over de gemiddelde tijd.
Pakspulwoensdag 3 april 2013 @ 21:35
quote:
0s.gif Op woensdag 3 april 2013 21:28 schreef Chandler het volgende:
why 10.000? dan is mijn systeem nog wel ff bezig...
Marginoferror95.PNG
http://en.wikipedia.org/wiki/Central_limit_theorem

Daarom :P
Chandlerwoensdag 3 april 2013 @ 21:48
Goed goed goed, eerst maar eens 1.000 keer! *) zal mijn laptop CPU leuk vinden! :P
quote:
0s.gif Op woensdag 3 april 2013 21:33 schreef Rockfire het volgende:
Omdat je dan pas betrouwbare statistieken hebt ;) Eén keer een query uitvoeren zegt nog heel weinig over de gemiddelde tijd.
100 keer vond ik anders toch aardig wat, zijn dus in totaal 400 queries geweest

[ Bericht 56% gewijzigd door Chandler op 03-04-2013 23:26:02 ]
Lightwoensdag 3 april 2013 @ 22:56
quote:
0s.gif Op woensdag 3 april 2013 21:21 schreef Chandler het volgende:
Ik heb een testje gedaan, en wat blijkt 2 queries zijn sneller ;)
[ code verwijderd ]

uitkomst:
[ code verwijderd ]

met name de maand functie is extreem snel.. waarom? geen idee... nu eens ff online testen.

Online versie vertelt nog een mooier verhaal.
[ code verwijderd ]

In mijn lokale versie zijn er nog geen statistieken van 'vandaag' / 'gisteren' online wel.. Toch raar want vele mensen zeggen dat 1 query altijd sneller is dan 2........
Ik vind 0.19 seconden niet bijzonder snel maar die andere functies wel erg traag. Volgens mij mis je her en der wat indexen.
Chandlerwoensdag 3 april 2013 @ 23:24
De indexen kun je inzien in posts hierboven, daar moet volgens mij weinig mis mee zijn.

0.19 voor 100x deze query uitvoeren? oftewel 0.0019? best snel toch?

-edit-
laptop crasht tot 2x toe bij 1.000 queries per test (dus in totaal 4.000 queries) processor kan het allemaal niet aan en wordt te heet..
StMwoensdag 3 april 2013 @ 23:37
Dat getRecordsByDateOld VEEL langzamer is, is niet gek want je sorteert daar op een virtuele column die het resultaat is van een aggregation in een subquery. Hij kan daar dus nooit een index op toepassen. Sowieso geven de query's ook geen identieke resultaten waardoor je nooit eerlijk kan vergelijken.
KomtTijd...donderdag 4 april 2013 @ 00:47
quote:
0s.gif Op woensdag 3 april 2013 21:21 schreef Chandler het volgende:
Ik heb een testje gedaan, en wat blijkt 2 queries zijn sneller ;)

Toch raar want vele mensen zeggen dat 1 query altijd sneller is dan 2........
Vele mensen zeggen dat je nooit vooraf moet optimaliseren om datsoort (veelal verkeerde) aannames te voorkomen.
Chandlerdonderdag 4 april 2013 @ 10:19
quote:
0s.gif Op woensdag 3 april 2013 23:37 schreef StM het volgende:
Dat getRecordsByDateOld VEEL langzamer is, is niet gek want je sorteert daar op een virtuele column die het resultaat is van een aggregation in een subquery. Hij kan daar dus nooit een index op toepassen. Sowieso geven de query's ook geen identieke resultaten waardoor je nooit eerlijk kan vergelijken.
Juist, maar dit was een oplossing voor de vorige query zie code (verbetering van 10 seconden naar 1,5)

1
2
3
4
5
6
7
SELECT `plaatjes`.*
FROM `plaatjes`
LEFT JOIN `views` ON `views`.`category` = `plaatjes`.`category`
WHERE YEAR(`views`.`date`) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH)
AND MONTH(`views`.`date`) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH)
GROUP BY `views`.`category`, `plaatjes`.`category`
ORDER BY `views`.`date` DESC

Het heeft gezorgd voor een versnelling maar ook niet veel zeg maar, bovenstaande query zou goed moeten werken aangezien de indexes goed staan maar werkt toch met een filesort :{ en de 2 losse queries zijn vele malen sneller dus! :)

quote:
1s.gif Op donderdag 4 april 2013 00:47 schreef KomtTijd... het volgende:
Vele mensen zeggen dat je nooit vooraf moet optimaliseren om datsoort (veelal verkeerde) aannames te voorkomen.
Correct, maar in sommige gevallen is het juist wel handig anders kun je heel veel werk dubbel / over gaan doen...
StMdonderdag 4 april 2013 @ 13:27
quote:
0s.gif Op donderdag 4 april 2013 10:19 schreef Chandler het volgende:

[..]

Juist, maar dit was een oplossing voor de vorige query zie code (verbetering van 10 seconden naar 1,5)
[ code verwijderd ]

Het heeft gezorgd voor een versnelling maar ook niet veel zeg maar, bovenstaande query zou goed moeten werken aangezien de indexes goed staan maar werkt toch met een filesort :{ en de 2 losse queries zijn vele malen sneller dus! :)

[..]

Correct, maar in sommige gevallen is het juist wel handig anders kun je heel veel werk dubbel / over gaan doen...
Waar is de filesort op? Zou je een volledige explain hier willen plaatsen? (Of heb ik die gemist...)
Chandlerdonderdag 4 april 2013 @ 18:27
1
2
1,SIMPLE,views,index,category,category,37,NULL,35317,Using where; Using index; Using temporary; Using f...
1,SIMPLE,plaatjes,ref,category,category,34,nvt****_anipl.views.category,17

Die had je idd gemist :)
StMdonderdag 4 april 2013 @ 21:21
Ik krijg met wat testdata die explain er niet uit... Maar het kan dat ik te weinig heb waardoor de queryplanner andere beslissingen maakt. En zet volledige teksten eens aan ;)

Wil je trouwens nog verder er op in gaan of is het nu snel genoeg?
Chandlerdonderdag 4 april 2013 @ 21:46
StM op zich is het nu snel genoeg, zeker nu ik het gewoon dagelijks cache ;) scheelt ook queries die toch de hele dag het zelfde zijn... Maar zou graag willen weten waarom een gecombineerde query zoveel slomer is terwijl dat eigenlijk niet zo zou moeten zijn.

Mocht je meer testdata willen hebben dan kan ik tzt wel een dump online zetten :@
KomtTijd...vrijdag 5 april 2013 @ 00:50
verkeerde topic

[ Bericht 89% gewijzigd door KomtTijd... op 05-04-2013 01:57:53 ]
gerrit098vrijdag 5 april 2013 @ 14:48
Ik ben momenteel een website aan het schrijven in HTML(5). nu wilde ik graag dingen uit .txt gaan "includen"

na wat zoek en pruts werk ben ik er al achter dat je als je je html bestand .php noemt gewoon blijft werken en dus

1<?phpPHP include "menu.txt" ; ?>

naar behoren werkt.

mijn vraag is blijft dit in de toekomst ook handig of zitten hier ook nadelen aan in de toekomst???
#ANONIEMvrijdag 5 april 2013 @ 15:24
quote:
0s.gif Op vrijdag 5 april 2013 14:48 schreef gerrit098 het volgende:
Ik ben momenteel een website aan het schrijven in HTML(5). nu wilde ik graag dingen uit .txt gaan "includen"

na wat zoek en pruts werk ben ik er al achter dat je als je je html bestand .php noemt gewoon blijft werken en dus
[ code verwijderd ]

naar behoren werkt.

mijn vraag is blijft dit in de toekomst ook handig of zitten hier ook nadelen aan in de toekomst???
Dit is juist een goede manier. Met includes kan je dan (zoals jij al doet gok ik) het menu op elke pagina includen en hem hetzelfde laten zijn..

1<?php include 'menu.txt'?>

je hoeft niet tweemaal php neer te zetten.

[ Bericht 1% gewijzigd door #ANONIEM op 05-04-2013 15:24:54 ]
KomtTijd...vrijdag 5 april 2013 @ 15:36
quote:
0s.gif Op vrijdag 5 april 2013 14:48 schreef gerrit098 het volgende:

mijn vraag is blijft dit in de toekomst ook handig of zitten hier ook nadelen aan in de toekomst???
Hoe bedoel je dat? Of dat in toekomstige versies van PHP zal blijven werken? Daar hoef je je geen zorgen om te maken.

Of dat je zo een praktisch bruikbare website zit te maken? Als je dat wilt kun je beter gewoon een CMS installeren.
gerrit098vrijdag 5 april 2013 @ 17:51
quote:
14s.gif Op vrijdag 5 april 2013 15:36 schreef KomtTijd... het volgende:

[..]

Hoe bedoel je dat? Of dat in toekomstige versies van PHP zal blijven werken? Daar hoef je je geen zorgen om te maken.

Of dat je zo een praktisch bruikbare website zit te maken? Als je dat wilt kun je beter gewoon een CMS installeren.
Ik doelde er meer op of alles wat je in .html gebruikt ook blijft werken zodra je bestand .php gaat noemen.

maar blijkbaar zal dat geen problemen geven.

Ik heb al "veel" gelezen over CMS maar ik kom dan altijd uit op wp joomla of drupal. en dan krijg ik het niet voor mekaar om een "mooie" site te maken.

wat ik het (denk ik) het liefste heb is een site waar txt bestanden geinclude zijn zodat iemand anders makkelijk de tekst kan aanpassen....

daar ben ik nu dat ook mee bezig en probeer nu een php script te vinden die dit online doen kan, mischien dat iemand hier daar tips over heeft????

Verder wil ik een activiteiten kalander maken waar activiteiten die al geweest zijn automatisch verdwijnen.
iemand daar tips voor???
#ANONIEMvrijdag 5 april 2013 @ 18:02
Begin met php leren zou ik zeggen

hier of hier, en hier

Ook is (my)sql leren handig, (Of hier)
KomtTijd...vrijdag 5 april 2013 @ 18:06
quote:
0s.gif Op vrijdag 5 april 2013 17:51 schreef gerrit098 het volgende:

[..]

Ik doelde er meer op of alles wat je in .html gebruikt ook blijft werken zodra je bestand .php gaat noemen.

maar blijkbaar zal dat geen problemen geven.

Ik heb al "veel" gelezen over CMS maar ik kom dan altijd uit op wp joomla of drupal. en dan krijg ik het niet voor mekaar om een "mooie" site te maken.

wat ik het (denk ik) het liefste heb is een site waar txt bestanden geinclude zijn zodat iemand anders makkelijk de tekst kan aanpassen....

daar ben ik nu dat ook mee bezig en probeer nu een php script te vinden die dit online doen kan, mischien dat iemand hier daar tips over heeft????

Verder wil ik een activiteiten kalander maken waar activiteiten die al geweest zijn automatisch verdwijnen.
iemand daar tips voor???
[offtopic] probeer CMS made simple.
Rockfirevrijdag 5 april 2013 @ 18:29
quote:
1s.gif Op vrijdag 5 april 2013 18:06 schreef KomtTijd... het volgende:

[..]

[offtopic] probeer CMS made simple.
[offtopic] of probeer wordpress
Devolutionzaterdag 6 april 2013 @ 12:31
quote:
0s.gif Op vrijdag 5 april 2013 17:51 schreef gerrit098 het volgende:
[..]
Ik doelde er meer op of alles wat je in .html gebruikt ook blijft werken zodra je bestand .php gaat noemen.

maar blijkbaar zal dat geen problemen geven.

Ik heb al "veel" gelezen over CMS maar ik kom dan altijd uit op wp joomla of drupal. en dan krijg ik het niet voor mekaar om een "mooie" site te maken.

wat ik het (denk ik) het liefste heb is een site waar txt bestanden geinclude zijn zodat iemand anders makkelijk de tekst kan aanpassen....

daar ben ik nu dat ook mee bezig en probeer nu een php script te vinden die dit online doen kan, mischien dat iemand hier daar tips over heeft????
Ik heb zelf ook zo'n CMS gebouwd voor een aantal klanten. Als je een CMS wilt maken waarbij klanten hun website aan kunnen passen zoals je in Word werkt (dus met knopjes voor dikgedrukte tekst, onderstreepte tekst, verschillende tekstkleuren enzo) dan moet je naast PHP ook Javascript leren. Met PHP maak je dan gebruik van echo en file_get_contents (niet include, ik leg zo uit waarom), een PHP script dat BB code omzet in HTML (dus dat [ b]tekst[/b ] <b>tekst</b> wordt), een loginscript met cookies en natuurlijk een PHP script dat de tekstbestanden aanpast (fopen, fwrite, fclose).

De reden dat je beter een combo van echo en file_get_contents dan include kan gebruiken is omdat je bij include geen BB code meer kan omzetten en bij file_get_contents kun je de inhoud van een tekstbestand nog wel aanpassen voordat het getoond wordt :)
Lightzaterdag 6 april 2013 @ 14:07
quote:
16s.gif Op woensdag 3 april 2013 23:24 schreef Chandler het volgende:
De indexen kun je inzien in posts hierboven, daar moet volgens mij weinig mis mee zijn.

0.19 voor 100x deze query uitvoeren? oftewel 0.0019? best snel toch?
Ik had die 100x gemist. 0.0019 is best goed. :)

Overigens vind ik je microtime_float() functie wat onnodig. Gebruik gewoon mircotime(true) als je de tijd als float wilt.
#ANONIEMzaterdag 6 april 2013 @ 15:18
1
2
3
4
<?php
setlocale
(LC_ALL'nl_NL');
var_dump(strtotime('zaterdag 6 april 2013'));
?>

Waarom geeft dat FALSE terug en niet een timestamp? Dacht dat dat zo ging.. }:|
Maringozaterdag 6 april 2013 @ 15:44
quote:
0s.gif Op zaterdag 6 april 2013 15:18 schreef d4v1d het volgende:

[ code verwijderd ]

Waarom geeft dat FALSE terug en niet een timestamp? Dacht dat dat zo ging.. }:|
Naar mijn weten is setlocale() voor output, niet voor input.
Chandlerzaterdag 6 april 2013 @ 17:05
quote:
0s.gif Op zaterdag 6 april 2013 14:07 schreef Light het volgende:

[..]

Ik had die 100x gemist. 0.0019 is best goed. :)

Overigens vind ik je microtime_float() functie wat onnodig. Gebruik gewoon mircotime(true) als je de tijd als float wilt.
Dat dacht ik dus ook :@ maar goed, ik gebruik altijd snippets uit mijn library... en dat is die microtime_float lol :P
Chandlerzondag 7 april 2013 @ 19:21
Iemand die bekend is met de techniek achter de facebook timeline en hoe dat in zijn werk gaat? eventueel tutorial? zou daar graag het fijne van willen weten.
Devolutionzondag 7 april 2013 @ 20:12
Welke techniek bedoel je specifiek? Dat alles chronologisch staat? Dat je alleen updates van je vrienden krijgt en niet van vreemden?
#ANONIEMzondag 7 april 2013 @ 20:13
quote:
7s.gif Op zondag 7 april 2013 19:21 schreef Chandler het volgende:
Iemand die bekend is met de techniek achter de facebook timeline en hoe dat in zijn werk gaat? eventueel tutorial? zou daar graag het fijne van willen weten.
Dat is het geheim van de smid he.
mstxzondag 7 april 2013 @ 21:27
Dat is het zelfde als vragen om het Google-algoritme uit te leggen. :P
Niet wat je zoekt, maar hier: https://www.facebook.com/MySQLatFacebook posten ze wel eens leuke dingen/linkjes over hoe ze mysql gebruiken. :)
KomtTijd...zondag 7 april 2013 @ 23:35
wel machtig interessante materie trouwens. Die lui doen wel iets meer dan één left-join per query gok ik.
Chandlermaandag 8 april 2013 @ 07:18
@Devolution: Ik doel meer op dat ze alles netjes sorteren (verschillende tabellen op laatst geplaatste item + reacties)
@Scorpie: true that, maar er zal ongetwijfeld over geschreven zijn... ergens...
@mstx: Ik zal die page eens bekijken en snap best dat ze de techniek niet vrijgeven maar ga er vanuit dat er genoeg mensen zijn die het na proberen te maken....
@KomtTijd: Precies mijn gedachte, dus als mensen er meer info over hebben heb ik interesse! *)
WyriHaximusmaandag 8 april 2013 @ 10:45
quote:
7s.gif Op zondag 7 april 2013 19:21 schreef Chandler het volgende:
Iemand die bekend is met de techniek achter de facebook timeline en hoe dat in zijn werk gaat? eventueel tutorial? zou daar graag het fijne van willen weten.
Gewoon zelf opzetten zo lastig is dat toch niet? :) Desnoods bouw je een mediator model waar je de timeline uit trekt en daarna alle related entries opvraagt? :)
Boze_Appelmaandag 8 april 2013 @ 10:52
Even een tutorial van één van de grootste website ter wereld. ^O^

Ze zetten trouwens praktisch al hun php om in hiphop-php.

Verder gebruiken ze een combo van push & pulls. De wall zelf gaat via pulls en de chatbalk via pushes bijvoorbeeld. De techniek is allemaal niet zo ingewikkeld, het is meer de enorme hoeveelheid data die het hele Facebook-gebeuren wat ingewikkeld maakt.
Chandlermaandag 8 april 2013 @ 11:20
quote:
6s.gif Op maandag 8 april 2013 10:45 schreef WyriHaximus het volgende:
Gewoon zelf opzetten zo lastig is dat toch niet? :) Desnoods bouw je een mediator model waar je de timeline uit trekt en daarna alle related entries opvraagt? :)
Ik wil eerst meer informatie voordat ik ga scripten ;) en er zal ongetwijfeld wel iets te vinden zijn wat uitlegt hoe facebook ongeveer zijn timeline opbouwt...
quote:
7s.gif Op maandag 8 april 2013 10:52 schreef Boze_Appel het volgende:
Even een tutorial van één van de grootste website ter wereld. ^O^

Ze zetten trouwens praktisch al hun php om in hiphop-php.

Verder gebruiken ze een combo van push & pulls. De wall zelf gaat via pulls en de chatbalk via pushes bijvoorbeeld. De techniek is allemaal niet zo ingewikkeld, het is meer de enorme hoeveelheid data die het hele Facebook-gebeuren wat ingewikkeld maakt.
Het gaat mij voornamelijk om het combineren van gegevens (foto's, video's, agenda punten, evenmenten etc etc etc) en die dan met 'reacties' laten weergeven.

Maar zal je link eens checken!
Tijnmaandag 8 april 2013 @ 12:01
quote:
0s.gif Op maandag 8 april 2013 11:20 schreef Chandler het volgende:

[..]

Het gaat mij voornamelijk om het combineren van gegevens (foto's, video's, agenda punten, evenmenten etc etc etc) en die dan met 'reacties' laten weergeven.
Je hoeft de architectuur van Facebook natuurlijk niet te gebruiken om dit voor elkaar te krijgen. Als je alles op 1 server wil draaien, kom je met een paar simpele tabellen voor content en reacties al een heel eind. Wat Facebook voor speciaal maakt is de schaal en het feit dat ze vele datacenters over de wereld hebben verspreid die gegevens met elkaar syncen. Maar voor een bescheiden aantal bezoekers heb je zo'n setup helemaal niet nodig natuurlijk.
Chandlermaandag 8 april 2013 @ 12:13
@Tijn; ik vraag toch ook niet over de architectuur van facebook, dat is toch een brug te ver voor mij maar wel het idee waar ze mee werken. Combineren van tabellen voor output waarbij je dan bij ieder item weer extra gegevens laad zoals reacties, vind ik leuks, etc :) maar dan ook weer sorteert op basis van laatst geupdate item DESC, laatst toegevoegd reactie DESC LOL
KomtTijd...dinsdag 9 april 2013 @ 14:42
Zit nog even te stoeien met dat gedoetje dat ik wil bijhouden welke records uitgelezen zijn. Ging opzich prima met 2 queries, maar nu moet er ineens ook nog een limit op. Bij SELECT gaat dat prima, bij UPDATE niet aangezien er ook een join in zit. Bovendien wil ik wel zeker weten dat de UPDATE exact dezelfde records pakt als de SELECT.

Daarom had ik de volgende oplossing bedacht. Werkt op zich best prima, behalve dat zowel de select als update nu ongeveer een minuut duren (tabel `data` bevat in totaal ca. 1M records).
Iemand een idee hoe ik dat sneller kan krijgen?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CREATE TEMPORARY TABLE tmp engine=memory 
SELECT record_id 
FROM data 
LEFT JOIN assets 
ON data.asset_id = assets.asset_id
WHERE uitgelezen = 0
AND assets.active = 1
ORDER BY record_id
LIMIT 1000;

SELECT *
FROM data 
WHERE record_id IN (SELECT record_id FROM tmp)
;

UPDATE data 
SET uitgelezen = 1
WHERE record_id IN (SELECT record_id FROM tmp)
;

DROP TEMPORARY TABLE IF EXISTS tmp;
KomtTijd...dinsdag 9 april 2013 @ 16:03
opgelost, alles gaat gewoon via de tmp table:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CREATE TEMPORARY TABLE tmp engine=memory 
SELECT <<alle benodigde records>>, 1 AS in_tmp
FROM data 
LEFT JOIN assets 
ON data.asset_id = assets.asset_id
WHERE uitgelezen = 0
AND assets.active = 1
ORDER BY record_id
LIMIT 1000;

SELECT *
FROM tmp
;

UPDATE data 
LEFT JOIN tmp ON data.record_id = tmp.record_id
SET uitgelezen = 1
WHERE in_tmp = 1
;

DROP TEMPORARY TABLE IF EXISTS tmp;
Deeltjesversnellerdonderdag 11 april 2013 @ 10:35
DIG / [PHP/(My)SQL] voor dummies #108