FOK!forum / Digital Corner / [PHP/(My)SQL] voor dummies #106
mstxmaandag 31 december 2012 @ 11:44
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!
henrivodinsdag 1 januari 2013 @ 11:02
Devvy newyear!
Pakspuldinsdag 1 januari 2013 @ 15:13
1
2
3
<?php
echo "Happy new year!";
?>
lhkwoensdag 2 januari 2013 @ 14:34
Hey allemaal,

ik ben momenteel bezig met een wordpress theme en - omdat ik er weinig verstand van heb - loop ik al direct vast. Heb hier al over gezocht via allerhande fora (oa wordpress zelf) maar niemand heeft tot nu toe het verlossende woord:

Ik heb volgens mij een vrij eenvoudig theme met diverse pagina's, zoals contact, over mij enzovoort. Onder die pagina's wil ik nu subpagina's hangen. De navigatie wil ik in de sidebar hebben. Daarom wil ik in de sidebar van een pagina als contact een lijst toevoegen met de parent en de children van een specifieke pagina, als volgt:

Contact (parent)
Route (child)
Formulier (child)

In het kort komt het hier op neer:

1. Op de sidebar van een pagina die children heeft moet een linklijst komen met de parent en de children.
2. Op de sidebar van een childpagina moet diezelfde lijst komen.
3. Op de sidebar van een pagina zonder children, moet geen lijst komen.

Ik heb nu deze code:

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
<?php
//if the post has a parent
if($post->post_parent){
  //collect ancestor pages
  $relations = get_post_ancestors($post->ID);
  //get child pages
  $result = $wpdb->get_results( "SELECT ID FROM wp_posts WHERE post_parent = $post->ID AND post_type='page'" );
  if ($result){
    foreach($result as $pageID){
      array_push($relations, $pageID->ID);
    }
  }
  //add current post to pages
  array_push($relations, $post->ID);
  //get comma delimited list of children and parents and self
  $relations_string = implode(",",$relations);
  //use include to list only the collected pages.
  $sidelinks = wp_list_pages("title_li=&echo=0&include=".$relations_string);
}else{
  // display only main level and children
  $sidelinks = wp_list_pages("title_li=&echo=0&depth=1&child_of=".$post->ID);
}

if ($sidelinks) { ?>
  <h2><?php the_title(); ?></h2>
  <ul>
    <?php //links in <li> tags
    echo $sidelinks; ?>
  </ul>
<?php } ?>

Dit werkt wel op de childpagina's, daar krijg je een mooie lijst met parent en children, maar op de parentpagina geeft hij alleen de children. Hoe kan ik dit aanpassen? Ik ben een echte php beginner, dus ik hoop dat iemand mij hiermee kan helpen!
#ANONIEMvrijdag 4 januari 2013 @ 00:03
16708_443957929002786_1979930881_n.jpg

Spot de 10 fouten. En dit is dan HBO niveau.

[ Bericht 5% gewijzigd door #ANONIEM op 04-01-2013 00:05:41 ]
Juicyhilvrijdag 4 januari 2013 @ 00:09
quote:
10s.gif Op vrijdag 4 januari 2013 00:03 schreef Scorpie het volgende:
[ afbeelding ]

Spot de 10 fouten. En dit is dan HBO niveau.
else bestaat helemaal niet in PHP! Wat dom zeg.
Diaboxvrijdag 4 januari 2013 @ 00:10
dollar tekens ook niet :S
#ANONIEMvrijdag 4 januari 2013 @ 00:11
quote:
1s.gif Op vrijdag 4 januari 2013 00:09 schreef Juicyhil het volgende:

[..]

else bestaat helemaal niet in PHP! Wat dom zeg.
Mooiste is dat je dan met verbeteringen aankomt en je gewoon opmerkinge naar je hoofd krijgt als 'ik heb een hekel aan mensen die zich willen bewijzen' :D
Is niet zo moeilijk om dat te doen met zulke crappy code he.
Diaboxvrijdag 4 januari 2013 @ 00:11
quote:
10s.gif Op vrijdag 4 januari 2013 00:11 schreef Scorpie het volgende:

[..]

Mooiste is dat je dan met verbeteringen aankomt en je gewoon opmerkinge naar je hoofd krijgt als 'ik heb een hekel aan mensen die zich willen bewijzen' :D
Is niet zo moeilijk om dat te doen met zulke crappy code he.
Wow, bedoel je dat dit afkomstig is van 'n docent?
#ANONIEMvrijdag 4 januari 2013 @ 00:12
quote:
0s.gif Op vrijdag 4 januari 2013 00:11 schreef Diabox het volgende:

[..]

Wow, bedoel je dat dit afkomstig is van 'n docent?
Nee joh, een student die zichzelf application developer/webdesigner noemt.
Diaboxvrijdag 4 januari 2013 @ 00:13
roflol.gif
Fusioxanvrijdag 4 januari 2013 @ 00:17
Ik heb er ook wel eens moeite mee hoor, dat ik C++ en PHP bijvoorbeeld door elkaar haal.

Ben je een webpagina aan het schrijven, begin je met int counter = 0; etc.

Toch even een vraagje over dat stukje code; vinden jullie dubbele quotes een fout of gewoon een no-go? Ik gebruik bij strings altijd enkele, omdat bij HTML altijd dubbele quotes moeten worden gebruikt.
#ANONIEMvrijdag 4 januari 2013 @ 00:17
quote:
0s.gif Op vrijdag 4 januari 2013 00:13 schreef Diabox het volgende:
[ afbeelding ]
En ik quote:

quote:
"btw... heb een hekel aan mensen die zichzelf hoe-dan-ook proberen te bewijzen. Just keep it for yourself."
Ja sorry, ik ben allergisch voor kut code. Dan krijg ik spasmes en moet ik het proberen te herstellen. My bad.

[ Bericht 5% gewijzigd door #ANONIEM op 04-01-2013 00:17:35 ]
Boze_Appelvrijdag 4 januari 2013 @ 00:18
"Keep it for yourself."
Diaboxvrijdag 4 januari 2013 @ 00:19
quote:
10s.gif Op vrijdag 4 januari 2013 00:17 schreef Scorpie het volgende:

[..]

En ik quote:

[..]

Ja sorry, ik ben allergisch voor kut code. Dan krijg ik spasmes en moet ik het proberen te herstellen. My bad.
Is niet je beste vriend neem ik aan.
#ANONIEMvrijdag 4 januari 2013 @ 00:19
Dit was overigens ook een reactie:

quote:
is volgens mij gewoon een nette manier hoor? Waarom een ferarri bouwen als ik met een fiat punto mn boodschappe kan doen?? Lol koop een taart en vier het ben trotts op je dat je de fouten kon ontdekken
#ANONIEMvrijdag 4 januari 2013 @ 00:19
quote:
14s.gif Op vrijdag 4 januari 2013 00:19 schreef Diabox het volgende:

[..]

Is niet je beste vriend neem ik aan.
Nee niet echt. Ik noemde zijn code ook dramatisch, misschien dat dat er iets mee te maken heeft.
Fusioxanvrijdag 4 januari 2013 @ 00:24
quote:
10s.gif Op vrijdag 4 januari 2013 00:19 schreef Scorpie het volgende:

[..]

Nee niet echt. Ik noemde zijn code ook dramatisch, misschien dat dat er iets mee te maken heeft.
Heb ik ook een hekel aan, slordige code. Variabelen als $p en $u, verkeerde inspringingen, verkeerd commentaar blergh.

Ik wil, dat ik aan de naam van de variabelen kan zien wat het kan/hoort te bevatten. Helaas zijn er wat medestudenten het oneens met mij...
#ANONIEMvrijdag 4 januari 2013 @ 00:27
quote:
0s.gif Op vrijdag 4 januari 2013 00:24 schreef Fusioxan het volgende:

[..]

Heb ik ook een hekel aan, slordige code. Variabelen als $p en $u, verkeerde inspringingen, verkeerd commentaar blergh.

Ik wil, dat ik aan de naam van de variabelen kan zien wat het kan/hoort te bevatten. Helaas zijn er wat medestudenten het oneens met mij...
Human Readable Code _O_
StMvrijdag 4 januari 2013 @ 04:38
Bepaalde mensen moet gewoon verboden worden om te programmeren :)
Juicyhilvrijdag 4 januari 2013 @ 08:35
quote:
0s.gif Op vrijdag 4 januari 2013 00:24 schreef Fusioxan het volgende:

[..]

. Variabelen als $p en $u
Bespaart je wel geheugen en schijfruimte ;)
Maringovrijdag 4 januari 2013 @ 09:34
quote:
0s.gif Op vrijdag 4 januari 2013 00:24 schreef Fusioxan het volgende:

[..]

Heb ik ook een hekel aan, slordige code. Variabelen als $p en $u, verkeerde inspringingen, verkeerd commentaar blergh.

Ik wil, dat ik aan de naam van de variabelen kan zien wat het kan/hoort te bevatten. Helaas zijn er wat medestudenten het oneens met mij...
zolang het geen globale variabele zijn, maar alleen een variabele binnen een functie, zie ik het probleem niet. Een gemiddeld mens kan best onthouden wat er in de variabele zit.

Het is gewoon kansloos om elke variabele uit te schrijven waar het voor staat. Dat maakt je code alleen maar onoverzichtelijk en rommelig.
Het hele idee Human Readable Code (of elke andere benaming ervoor) is ook ver over de top gegaan. Dat er standaarden zijn in de benamingen van functies ( fetchVariabels() of fetchVars() ipv fVar(), func38() of thx() ) dat kan ik helemaal begrijpen, maar dat het als 'fout' gezien wordt als je de else of elseif op een nieuwe regel begint ipv op dezelfde regel als de } van de vorige is gewoon onzin.
Pakspulvrijdag 4 januari 2013 @ 10:29
quote:
1s.gif Op vrijdag 4 januari 2013 08:35 schreef Juicyhil het volgende:

[..]

Bespaart je wel geheugen en schijfruimte ;)
Ja en nee, in sommige talen heeft de lengte van je variabel naam geen invloed op geheugen gebruik. Schijfruimte gebruik uiteraard wel, maar voor ontwikkeling is het wel handig dat je je eigen code kunt begrijpen. Daarnaast kun je er later obfuscator software overheen gooien die alle variabel- en functienamen. Bv $post_date_gmt = $wpt1 en wpt_mashup_create_answers_post = fwpt1. Je code die je uiteindelijk gaat gebruiken zal minder in schrijfruimte innemen en security through obscrutity is een bijkomend voordeel.
StMvrijdag 4 januari 2013 @ 13:57
quote:
2s.gif Op vrijdag 4 januari 2013 09:34 schreef Maringo het volgende:

[..]

zolang het geen globale variabele zijn, maar alleen een variabele binnen een functie, zie ik het probleem niet. Een gemiddeld mens kan best onthouden wat er in de variabele zit.

Het is gewoon kansloos om elke variabele uit te schrijven waar het voor staat. Dat maakt je code alleen maar onoverzichtelijk en rommelig.
Het hele idee Human Readable Code (of elke andere benaming ervoor) is ook ver over de top gegaan. Dat er standaarden zijn in de benamingen van functies ( fetchVariabels() of fetchVars() ipv fVar(), func38() of thx() ) dat kan ik helemaal begrijpen, maar dat het als 'fout' gezien wordt als je de else of elseif op een nieuwe regel begint ipv op dezelfde regel als de } van de vorige is gewoon onzin.
De code stijl (else wel of niet op een nieuwe regel) is wel iets heel anders als je variabele benaming. Wat mij betreft knal je er 10 enters tussen, zolang het maar consistent gebeurd volgens de afgesproken stijl.

Dat je nu nog weet wat var $x betekend is leuk, maar weet je collega of jijzelf het over een jaar of 2 jaar ook nog steeds? Je hebt duidelijk nooit gewerkt aan projecten van meer dan 100k LOC over duizenden bestanden. Je kan en wil dan echt niet meer na gaan moeten denken over wat iets doet en wat er in zou kunnen zitten. Dan wil je gewoon zien $oActiveUserCollection ipv $uc.

Globale variabelen (op je superglobals na) zijn trouwens per definitie evil.
Pakspulvrijdag 4 januari 2013 @ 14:28
quote:
0s.gif Op vrijdag 4 januari 2013 13:57 schreef StM het volgende:

[..]

De code stijl (else wel of niet op een nieuwe regel) is wel iets heel anders als je variabele benaming. Wat mij betreft knal je er 10 enters tussen, zolang het maar consistent gebeurd volgens de afgesproken stijl.

Dat je nu nog weet wat var $x betekend is leuk, maar weet je collega of jijzelf het over een jaar of 2 jaar ook nog steeds? Je hebt duidelijk nooit gewerkt aan projecten van meer dan 100k LOC over duizenden bestanden. Je kan en wil dan echt niet meer na gaan moeten denken over wat iets doet en wat er in zou kunnen zitten. Dan wil je gewoon zien $oActiveUserCollection ipv $uc.

Globale variabelen (op je superglobals na) zijn trouwens per definitie evil.
Als je 100k LOC aan code hebt die niet object georiënteerd is, dan moet je het al per definitie weggooien. Daarnaast ben ik het wel met het punt eens dat je soms $temp variabelen kunt gebruiken die kwa naam weinig zeggen wat ze precies hebben, maar in hun context perfect duidelijk zijn.
Fusioxanvrijdag 4 januari 2013 @ 14:32
Ja oké, daar ben ik het mee eens. In een simpele methode kan je wel een variabele als $x hebben. Maar als het over meerdere methodes gebruikt wordt wil ik gewoon zien wat het hoort te bevatten. Bijvoorbeels als je $uc hebt wat null bevat, terwijl het een object hoort te bevatten. Dat zie je echt niet aan de variabele. $userCollection is in dit geval vele male beter, dat moet je met me eens zijn.

Het scheelt zoveel met het debuggen van een 'vreemd' script dat je weet wat de variabele hoort te bevatten. Dit geldt niet enkel voor PHP, maar voor alle programmeertalen.
#ANONIEMvrijdag 4 januari 2013 @ 14:34
quote:
2s.gif Op vrijdag 4 januari 2013 09:34 schreef Maringo het volgende:

[..]

zolang het geen globale variabele zijn, maar alleen een variabele binnen een functie, zie ik het probleem niet. Een gemiddeld mens kan best onthouden wat er in de variabele zit.

Het is gewoon kansloos om elke variabele uit te schrijven waar het voor staat. Dat maakt je code alleen maar onoverzichtelijk en rommelig.
Het hele idee Human Readable Code (of elke andere benaming ervoor) is ook ver over de top gegaan. Dat er standaarden zijn in de benamingen van functies ( fetchVariabels() of fetchVars() ipv fVar(), func38() of thx() ) dat kan ik helemaal begrijpen, maar dat het als 'fout' gezien wordt als je de else of elseif op een nieuwe regel begint ipv op dezelfde regel als de } van de vorige is gewoon onzin.
Human Readible Code is zoveel meer dan een if/else statement definitie. Leuk dat jij onthoudt dat $p staat voor Person en $u voor Unit, degene die over 3 jaar jouw code gaat updaten weet dat niet.
Fusioxanvrijdag 4 januari 2013 @ 14:39
Wat ik me ook zo aan erger, engels en nederlands programmeren... Ik herinner me het net, want p staat in ons huidige programma voor positie (ja, oké, het is JAVA, maar dat moet van school).

Dan beginnen ze weer over een klasse Rijden met als methodes: forward(), leftTurn(), rightTurn(), parkeren(), uitparkeren(). Om het netjes te zeggen, om van te kotsen...
StMvrijdag 4 januari 2013 @ 14:44
quote:
0s.gif Op vrijdag 4 januari 2013 14:28 schreef Pakspul het volgende:

[..]

Als je 100k LOC aan code hebt die niet object georiënteerd is, dan moet je het al per definitie weggooien. Daarnaast ben ik het wel met het punt eens dat je soms $temp variabelen kunt gebruiken die kwa naam weinig zeggen wat ze precies hebben, maar in hun context perfect duidelijk zijn.
Consistentie is imo vrijwel net zo belangrijk als duidelijk zijn in wat je doet. Dus ook je temp vars duidelijk defineren. Maar goed, ook ik heb zo mijn uitzonderingen (meestal $i, $k en $v). Echter zijn die uiteraard wel zeer beperkt in hun scope.

quote:
0s.gif Op vrijdag 4 januari 2013 14:39 schreef Fusioxan het volgende:
Wat ik me ook zo aan erger, engels en nederlands programmeren... Ik herinner me het net, want p staat in ons huidige programma voor positie (ja, oké, het is JAVA, maar dat moet van school).

Dan beginnen ze weer over een klasse Rijden met als methodes: forward(), leftTurn(), rightTurn(), parkeren(), uitparkeren(). Om het netjes te zeggen, om van te kotsen...
Ook hier is consistent zijn weer belangrijk. Er kunnen wel degelijk redenen zijn om Nederlands jargon in je naamgeving te gebruiken. Vaak omdat domeinspecifiek taalgebruik heel lastig te vertalen kan zijn en dat eigenlijk niemand daarna nog weet wat het nu exact moet zijn. Maar NOOIT mixen (en voor iets als rijden is het taalgebruik zo algemeen dat dat imo nooit te verantwoorden valt om te vertalen ;))
Maringovrijdag 4 januari 2013 @ 14:48
quote:
7s.gif Op vrijdag 4 januari 2013 14:34 schreef Scorpie het volgende:

[..]

Human Readible Code is zoveel meer dan een if/else statement definitie. Leuk dat jij onthoudt dat $p staat voor Person en $u voor Unit, degene die over 3 jaar jouw code gaat updaten weet dat niet.
Ik heb het niet perse over 1 letterige variabele, ik bedoel meer dat het onnodig is om binnen een functie (dus niet je de vars die je over meerdere functies en/of classes gebruikt) variabelenaam te gebruiken als $ActiveUserCollection terwijl je het ook kan afkorten tot $ActUsrColl.

En dat die Human Readable Code verder gaat dan if/else statements, dat begrijp ik ook wel, ik hoef toch niet overal een voorbeeld van te geven. Het is alleen dat er zat mensen zijn die die code zo erg hanteren dat het alsnog niet meer leesbaar is omdat het overdrijven of dat ze meteen in de aanval gaat als iets lames niet klopt.

En ja, ik heb aan grote projecten gewerkt, vele malen groter dan 100k LOC. En het is zo vervelend als je steeds onnodig volledige woorden aan het tikken bent.

quote:
0s.gif Op vrijdag 4 januari 2013 14:44 schreef StM het volgende:

[..]

Consistentie is imo vrijwel net zo belangrijk als duidelijk zijn in wat je doet. Dus ook je temp vars duidelijk defineren. Maar goed, ook ik heb zo mijn uitzonderingen (meestal $i, $k en $v). Echter zijn die uiteraard wel zeer beperkt in hun scope.
Dat laatste doelde ik dus op.
StMvrijdag 4 januari 2013 @ 14:56
Afkorten naar $ActUsrColl is toch ook prima? Als jullie dat maar afgesproken hebben. Ik ben zelf meer van het volledig uitschrijven maar ik zou ook zonder problemen switchen naar een project waar ze een kortere namen gebruiken die nog steeds beschrijven wat er in zit.

Je reageerde alleen op een post met 1 letterige vars en die zijn een echte nogo imo net als de vele andere niets zeggende namen die je kan bedenken ;)
Pakspulvrijdag 4 januari 2013 @ 14:59
quote:
0s.gif Op vrijdag 4 januari 2013 14:56 schreef StM het volgende:
Afkorten naar $ActUsrColl is toch ook prima? Als jullie dat maar afgesproken hebben. Ik ben zelf meer van het volledig uitschrijven maar ik zou ook zonder problemen switchen naar een project waar ze een kortere namen gebruiken die nog steeds beschrijven wat er in zit.

Je reageerde alleen op een post met 1 letterige vars en die zijn een echte nogo imo net als de vele andere niets zeggende namen die je kan bedenken ;)
Terug komend op je consitentie punt van paar posts hier boven. Als je met je team/of jezelf afspreekt dat List altijd een lijst met bepaalde objecten is dan kun jet met gemak $userList, gebruiken. Bij afkortingen zou ik oppassen, als ze duidelijk zijn dan kun je er voor gaan, anders eerste definitie comment plaatsen.
StMvrijdag 4 januari 2013 @ 15:10
Klopt :)
Maringovrijdag 4 januari 2013 @ 15:21
quote:
0s.gif Op vrijdag 4 januari 2013 14:56 schreef StM het volgende:
Afkorten naar $ActUsrColl is toch ook prima? Als jullie dat maar afgesproken hebben. Ik ben zelf meer van het volledig uitschrijven maar ik zou ook zonder problemen switchen naar een project waar ze een kortere namen gebruiken die nog steeds beschrijven wat er in zit.

Je reageerde alleen op een post met 1 letterige vars en die zijn een echte nogo imo net als de vele andere niets zeggende namen die je kan bedenken ;)
Dat ben ik met je eens. :Y

Het volledig uitschrijven kan ook overdreven worden. Ik weet nog dat ik aan een project verder moest werken waarin de variabele vaak ontzettend lange namen hadden. Waarvan ik oa deze twee nooit zal vergeten:
$OrganizationalScheduleIdentificationCode
$OrganizationalScheduleIdentificationName

het ID en de naam van het rooster. Twee variabele die vaak terug kwamen in het programma...
StMvrijdag 4 januari 2013 @ 15:28
Lang leve een goede IDE met fatsoenlijke completion :P

De langste die ik zo snel zie in mn recente projecten is de $shopOrderBillingLocationCountryId...
Qunixvrijdag 4 januari 2013 @ 17:11
quote:
10s.gif Op vrijdag 4 januari 2013 00:03 schreef Scorpie het volgende:
[ afbeelding ]

Spot de 10 fouten. En dit is dan HBO niveau.
Eens zien...

$date wat een string is zou ik de variablename anders noemen.
$d zou ik uiteraard anders noemen.
De date functie is met een hoofdletter, moet volgens mij met een kleine "d".
In de date functie mist een string. De letters moeten in een string staan.
De letters in de date functie kloppen niet. Y is 4x een getal.
De if statement is een vergelijking tussen een string en een date. Dit als programmeur zou ik niet doen.
De if statement kan een === gebruiken.
De "d" in de if statement mist een dollar teken.
Aan gezien er niets onder de "}" in php, zou ik de "?>" weglaten.


Dankzij kennis van Java en andere programmeertalen, zie je gewoon dat PHP echt lelijk is. Java is ook niet mooi.
mstxvrijdag 4 januari 2013 @ 17:18
quote:
7s.gif Op vrijdag 4 januari 2013 17:11 schreef Qunix het volgende:
De if statement is een vergelijking tussen een string en een date. Dit als programmeur zou ik niet doen.
De if statement kan een === gebruiken.
date() geeft gewoon een string terug en === heeft daar geen toegevoegde waarde.
StMvrijdag 4 januari 2013 @ 17:18
Je mist de belangrijkste: Het hele concept is flawed aangezien je een datum string vergelijkt op gelijkheid waardoor je na de betreffende datum gewoon weer krijgt dat je kan leren. Wel waarschijnlijk in dat geval voor je hertentamen....
Qunixvrijdag 4 januari 2013 @ 17:20
quote:
6s.gif Op vrijdag 4 januari 2013 17:18 schreef mstx het volgende:

[..]

date() geeft gewoon een string terug en === heeft daar geen toegevoegde waarde.
Ik zou een class maken. Ware het niet dat PHP dat al doet: http://php.net/manual/en/book.datetime.php
mstxvrijdag 4 januari 2013 @ 17:24
quote:
14s.gif Op vrijdag 4 januari 2013 17:20 schreef Qunix het volgende:

[..]

Ik zou een class maken. Ware het niet dat PHP dat al doet: http://php.net/manual/en/book.datetime.php
Overbodige code :{w
Ik zou het gewoon in één regel doen :7

1<?=date('dmY')=='070113'?"We are Screwed dude!":"Nog tijd om te leren voor proeftentamen :)" ?>
Qunixvrijdag 4 januari 2013 @ 17:25
quote:
9s.gif Op vrijdag 4 januari 2013 17:24 schreef mstx het volgende:

[..]

Overbodige code :{w
Ik zou het gewoon in één regel doen :7
[ code verwijderd ]

:D
StMvrijdag 4 januari 2013 @ 17:28
quote:
14s.gif Op vrijdag 4 januari 2013 17:20 schreef Qunix het volgende:

[..]

Ik zou een class maken. Ware het niet dat PHP dat al doet: http://php.net/manual/en/book.datetime.php
Die alleen vrijwel niemand gebruikt omdat nog steeds basis dingen als 2 datums met elkaar vergelijken niet kan...

En dan heb ik het helemaal nog niet over zaken als een beetje fatsoenlijke tijdzone berekeningen. Je wil niet weten wat voor ongelooflijk vreselijke code ik daar niet voor heb moeten schrijven... (Application wide de tijdzone default veranderen, datum setten en dan restoren. yay! Er is wel een setTimezone functie maar die werkte dacht ik slechts 1 kant op.)

*edit:*

Vergelijken lijkt nu wel mogelijk te zijn, het is alleen niet gedocumenteerd dat het kan. Ook zo leuk.

Naja ik gebruik Zend_Date maar tegenwoordig.
KomtTijd...vrijdag 4 januari 2013 @ 17:52
http://php.net/manual/en/class.datetime.php
quote:
Changelog

Version Description
5.2.2 DateTime object comparison with the comparison operators changed to work as expected. Previously, all DateTime objects were considered equal (using ==).
staat er gewoon bij hoor :P

PHP5.2.2, reden we toen nog op dinosaurussen of al op paarden? :P
StMvrijdag 4 januari 2013 @ 18:06
Omg idd. En ik heb het zowaar ook in de changelog gevonden:

quote:
Fixed bug #40961 (Incorrect results of DateTime equality check). (Mike)
Thats all wat er over staat...

Echt weer typisch PHP met zijn vele uitzonderingen want volgens mij is DateTime de enigste die het kan?
Juicyhilvrijdag 4 januari 2013 @ 18:27
quote:
0s.gif Op vrijdag 4 januari 2013 18:06 schreef StM het volgende:
Omg idd. En ik heb het zowaar ook in de changelog gevonden:

[..]

Thats all wat er over staat...

Echt weer typisch PHP met zijn vele uitzonderingen want volgens mij is DateTime de enigste die het kan?
Omzetten naar timestamp.

Timestamp1-timestamp2=verschil
StMvrijdag 4 januari 2013 @ 18:30
Ja, uiteraard. Maar dat heeft ook zo zijn nadelen.
#ANONIEMvrijdag 4 januari 2013 @ 18:33
Datetime lijkt me het beste persoonlijk :)
Juicyhilvrijdag 4 januari 2013 @ 18:35
quote:
0s.gif Op vrijdag 4 januari 2013 18:33 schreef Scorpie het volgende:
Datetime lijkt me het beste persoonlijk :)
op de achtergrond is het.allemaal timestamp...
KomtTijd...vrijdag 4 januari 2013 @ 18:39
quote:
1s.gif Op vrijdag 4 januari 2013 18:27 schreef Juicyhil het volgende:

[..]

Omzetten naar timestamp.

Timestamp1-timestamp2=verschil
je gaat me niet met droge ogen vertellen dat je dat handiger vind dan datetime->diff()
#ANONIEMvrijdag 4 januari 2013 @ 18:42
quote:
14s.gif Op vrijdag 4 januari 2013 18:39 schreef KomtTijd... het volgende:

[..]

je gaat me niet met droge ogen vertellen dat je dat handiger vind dan datetime->diff()
Idd, die gebruik ik vaak.
Juicyhilvrijdag 4 januari 2013 @ 19:16
quote:
14s.gif Op vrijdag 4 januari 2013 18:39 schreef KomtTijd... het volgende:

[..]

je gaat me niet met droge ogen vertellen dat je dat handiger vind dan datetime->diff()
Waar zeg ik dat mijn manier handiger is? Ik gebruik zelf ook gewoon date_diff() als het kan hoor... Maar in bash scriptjes oid zou je het zo kunnen oplossen.

En daarbij is date_diff vanaf 5.3. Daarvoor kon het niet eens.
pascal08zondag 6 januari 2013 @ 05:15
Hey, ik ben op zoek naar een oplossing voor het volgende probleem:

Ik heb een enorme bak aan informatie. Deze informatie moet verwerkt worden via PHP. Zover ik weet zijn er 2 mogelijkheden: de data verwerken in arrays of de data verwerken in een SQL database. De data bestaat uit 2 kruistabellen, die samen een resultaat leveren. Eigenlijk kun je dit zien als een resultaat van 4 mogelijkheden. Ik zou dus alle mogelijkheden en uitkomsten in een database kunnen zetten, maar dat zou mij enorm veel tijd kosten (meer dan 50.000 entries heb je niet zo 1-2-3 handmatig ingevoerd volgens mij :P).

Ik heb al gegoogled naar kruistabellen via SQL, maar daarbij kwam ik niet verder dan de conclusie dat er gewoon 2 tabellen samengevoegd worden om een resultaat uit een andere tabel te halen. Ook niet echt de meest handige oplossing.

Weten jullie misschien een manier om informatie van een ( in feite) 4-zijdige
kruistabel in een database of PHP-bestand te krijgen?

PS: de informatie moet je dus zien als een pincode, bestaande uit 4 cijfers die samen een resultaat opleveren. Ik hoop dat ik het duidelijk heb uitgelegd. :P
#ANONIEMzondag 6 januari 2013 @ 05:43
Waar krijg je de info vandaan en in welk formaat?
pascal08zondag 6 januari 2013 @ 13:27
quote:
0s.gif Op zondag 6 januari 2013 05:43 schreef totalvamp het volgende:
Waar krijg je de info vandaan en in welk formaat?
Het is gewoon lokale info, momenteel staat het in Excel, maar het is niet noodzakelijk dat het ook vanuit daar geďmporteerd wordt. De informatie bestaat uit korte strings en kleine getallen. Ik ga eens kijken of ik elke mogelijkheid via een script naar een SQL database kan schrijven.
Juicyhilzondag 6 januari 2013 @ 13:34
Omzetten naar CSV en in PHP uitlezen.
pascal08zondag 6 januari 2013 @ 13:35
quote:
0s.gif Op zondag 6 januari 2013 13:34 schreef Juicyhil het volgende:
Omzetten naar CSV en in PHP uitlezen.
En dan gewoon alle combinaties als enkele rij naar SQL schrijven? Dat was ook het eerste dat in me opkwam als oplossing. :)
Juicyhilzondag 6 januari 2013 @ 13:38
quote:
0s.gif Op zondag 6 januari 2013 13:35 schreef pascal08 het volgende:

[..]

En dan gewoon alle combinaties als enkele rij naar SQL schrijven? Dat was ook het eerste dat in me opkwam als oplossing. :)
Check hier voor een library die CSV's kan parsen: http://stackoverflow.com/questions/5341219/csv-library-for-php

En dan krijg je gewoon netjes alle rijen die je kan doorlopen en wegschrijven naar SQL.
#ANONIEMzondag 6 januari 2013 @ 13:40
quote:
0s.gif Op zondag 6 januari 2013 13:35 schreef pascal08 het volgende:

[..]

En dan gewoon alle combinaties als enkele rij naar SQL schrijven? Dat was ook het eerste dat in me opkwam als oplossing. :)
is de data per column verschillend?
pascal08zondag 6 januari 2013 @ 13:41
quote:
1s.gif Op zondag 6 januari 2013 13:40 schreef totalvamp het volgende:

[..]

is de data per column verschillend?
Hoe bedoel je?

Het is ongeveer als volgt:

'JA' + 'NEE' + 3 + 8 = 4
'BAL' + 'HOK' + 1 + 2 = 5
'NET' + 'VIS' + 8 + 5 = 4
...
etc.

De ene kruistabel geeft een resultaat met combinaties van strings en de andere met combinaties van getallen. Beide resultaten zijn getallen en die worden bij elkaar opgeteld.
pascal08zondag 6 januari 2013 @ 13:45
quote:
0s.gif Op zondag 6 januari 2013 13:38 schreef Juicyhil het volgende:

[..]

Check hier voor een library die CSV's kan parsen: http://stackoverflow.com/questions/5341219/csv-library-for-php

En dan krijg je gewoon netjes alle rijen die je kan doorlopen en wegschrijven naar SQL.
De database gaat wel minstens 11 keer per minuut per gebruiker aangeroepen worden. Is dit niet te intensief voor een SQL database?
#ANONIEMzondag 6 januari 2013 @ 13:54
quote:
0s.gif Op zondag 6 januari 2013 13:41 schreef pascal08 het volgende:

[..]

Hoe bedoel je?

Het is ongeveer als volgt:

'JA' + 'NEE' + 3 + 8 = 4
'BAL' + 'HOK' + 1 + 2 = 5
'NET' + 'VIS' + 8 + 5 = 4
...
etc.

De ene kruistabel geeft een resultaat met combinaties van strings en de andere met combinaties van getallen. Beide resultaten zijn getallen en die worden bij elkaar opgeteld.
Gewoon 2 tabellen dus. Je kunt het letterlijk doen zoals het nu is.

Per tabel 3 columns en je bent klaar.

sql kan wel behoorlijk wat queries aan. Hoeveel gebruikers zijn er?

[ Bericht 4% gewijzigd door #ANONIEM op 06-01-2013 13:55:42 ]
Juicyhilzondag 6 januari 2013 @ 13:59
quote:
0s.gif Op zondag 6 januari 2013 13:45 schreef pascal08 het volgende:

[..]

De database gaat wel minstens 11 keer per minuut per gebruiker aangeroepen worden. Is dit niet te intensief voor een SQL database?
Je hoeft het toch maar 1 keer in te lezen vanuit Excel lijkt me?
En anders een cron job maken om het 's nachts te doen.
pascal08zondag 6 januari 2013 @ 14:01
quote:
0s.gif Op zondag 6 januari 2013 13:59 schreef Juicyhil het volgende:

[..]

Je hoeft het toch maar 1 keer in te lezen vanuit Excel lijkt me?
En anders een cron job maken om het 's nachts te doen.
Een nieuwe berekening zegt mij dat het 829719 combinaties zijn. Is dit wel te doen?
Juicyhilzondag 6 januari 2013 @ 14:03
quote:
0s.gif Op zondag 6 januari 2013 14:01 schreef pascal08 het volgende:

[..]

Een nieuwe berekening zegt mij dat het 829719 combinaties zijn. Is dit wel te doen?
Waarom niet?
En anders het in batches doen.
Arceezondag 6 januari 2013 @ 14:11
quote:
0s.gif Op zondag 6 januari 2013 13:45 schreef pascal08 het volgende:
De database gaat wel minstens 11 keer per minuut per gebruiker aangeroepen worden. Is dit niet te intensief voor een SQL database?
FOK! draait ook op MySQL. ;)

Anyway, CSV-bestand maken (en uploaden naar je site) en doelbestand alvast aanmaken in MySQL.

Data inlezen met LOAD DATA:

1LOAD DATA LOCAL INFILE 'bestandsnaam' INTO TABLE tabelnaam fields terminated by ','

Load data gaat razendsnel, ook met 829.719 records.

SPOILER
Of gaat het om SQL Server?
GlowMousezondag 6 januari 2013 @ 14:25
quote:
0s.gif Op zondag 6 januari 2013 14:11 schreef Arcee het volgende:

[..]

FOK! draait ook op MySQL. ;)
Het ligt er compleet aan wat voor queries je draait. Voor pascal08 zie ik twee PK-lookups en daar kan MySQL er best veel per seconde van aan.
pascal08zondag 6 januari 2013 @ 14:34
quote:
0s.gif Op zondag 6 januari 2013 14:11 schreef Arcee het volgende:

[..]

FOK! draait ook op MySQL. ;)

Anyway, CSV-bestand maken (en uploaden naar je site) en doelbestand alvast aanmaken in MySQL.

Data inlezen met LOAD DATA:
[ code verwijderd ]

Load data gaat razendsnel, ook met 829.719 records.

SPOILER
Of gaat het om SQL Server?
Ik ga het eens proberen. Bedankt voor de hulp allemaal!
YazooWmaandag 7 januari 2013 @ 19:27
Ik hoop dat dit het juiste topic is voor mijn vraag. Ik loop een beetje vast met het SEO gebeuren bij een php/mysql site. Ik zal even een denkbeeldige situatie schetsen om mijn vraag wat verduidelijken.

Stel ik heb een database met daarin alle steden van Nederland, dingen die er in staan opgeslagen zijn bijvoorbeeld: Aantal inwoners, naam burgemeester, provincie.

Elke stad zou ik zijn eigen pagina kunnen geven. Kom je op de pagina van Amsterdam dan zie je een simpel stukje tekst waarin staat hoeveel inwoners Amsterdam heeft, wie de burgemeester is en bij welke provincie het hoort.

Zo'n pagina zou ik kunnen aanroepen met bijvoorbeeld: www.domein.nl/stad.php?stad=amsterdam, mijn vraag nu is hoe Google hier mee omgaat.

Stel ik zet bijvoorbeeld een kolom aan de rechtkant van de pagina, de titel van de kolom is "Andere grote steden", met daaronder bijvoorbeeld Rotterdam, die weer linkt naar stad.php?stad=Rotterdam, Utrecht stad.php?stad=Utrecht etc etc.

Ik neem aan dat bovenstaande links gewoon gecrawled worden door Google, maar wat doet Google met de pagina's/steden waar niet naar gelinkt wordt op mijn paginas maar die wel bestaan? Stel ik neem de stad Maastricht, nergens op mijn pagina's heb ik een link opgenomen naar de pagina van Maastricht, maar ik heb er wel een searchbox staan die steden kan opzoeken, vul ik in de searchbox Maastricht in dan wordt ik gelinkt naar stad.php?stad=Maastricht. De pagina van Maastricht bestaat, maar staat nergens gelinkt op mijn site, kan Google deze pagina nu wel of niet vinden?

Ik hoop dat ik het een beetje duidelijk heb uitgelegd zo :P
GlowMousemaandag 7 januari 2013 @ 19:29
Het ligt eraan of andere sites naar je gaan linken, maar anders vindt Google je alleen-via-de-zoekmachine-bereikbare pagina's niet. Wellicht dat via de Google Toolbar ook nieuwe urls worden ontdekt, maar dat vermoed ik niet om privacyredenen.
mstxmaandag 7 januari 2013 @ 19:31
Ik denk ook van niet. En doe iedereen een lol en maak een rewrite aan die je pagina's www.domein.nl/stad/amsterdam en www.domein.nl/stad/den-haag etc. noemt.
rekenwondermaandag 7 januari 2013 @ 19:51
quote:
0s.gif Op maandag 7 januari 2013 19:27 schreef YazooW het volgende:
...
http://en.wikipedia.org/wiki/Deep_Web#Crawling_the_deep_Web

Ergo: http://www.sitemaps.org/
Swetseneggermaandag 7 januari 2013 @ 21:34
Ik heb een probleem waar ik even niet uit kom.

Ik heb een applicatie waar men 1 tot 3 foto's kan uploaden. Minimaal 1 foto is verplicht.
1
2
3
foto 1 (.jpg)  <input type="file" name="foto[]" />
foto 2 (.jpg)  <input type="file" name="foto[]" />
foto 3 (.jpg)  <input type="file" name="foto[]" />

Nu wil ik serverside controleren of er wel minimaal 1 foto is geupload

1
2
3
4
5
6
7
<?php
if(count($_FILES['foto']['tmp_name'])>0){
//doe iets
}else{
//geef foutmelding
}
?>

Het lullige... ook zonder geuploade file geeft de count 3 terug. Ik krijg immers een array met 3 key's zonder value. Enig idee hoe ik makkelijk kan checken of er minimaal 1 foto is geupload?
Juicyhilmaandag 7 januari 2013 @ 21:37
tmp_name geeft een string, je moet op $_FILES['foto'] de count doen
Swetseneggermaandag 7 januari 2013 @ 21:43
quote:
0s.gif Op maandag 7 januari 2013 21:37 schreef Juicyhil het volgende:
tmp_name geeft een string, je moet op $_FILES['foto'] de count doen
Dat geef altijd 5 :?

Logisch, $_FILES['foto'] geeft een multi dimensionale array van de elementen name, error, tmp_name, type en size. 5 elementen dus.
Juicyhilmaandag 7 januari 2013 @ 21:44
quote:
11s.gif Op maandag 7 januari 2013 21:43 schreef Swetsenegger het volgende:

[..]

Dat geef altijd 5 :?
Doe eens var_dump($_FILES) en post dat es
mstxmaandag 7 januari 2013 @ 21:45
http://php.net/manual/en/features.file-upload.multiple.php

quote:
Each of these will be a numerically indexed array of the appropriate values for the submitted files.

For instance, assume that the filenames /home/test/review.html and /home/test/xwp.out are submitted. In this case, $_FILES['userfile']['name'][0] would contain the value review.html, and $_FILES['userfile']['name'][1] would contain the value xwp.out. Similarly, $_FILES['userfile']['size'][0] would contain review.html's file size, and so forth.

$_FILES['userfile']['name'][0], $_FILES['userfile']['tmp_name'][0], $_FILES['userfile']['size'][0], and $_FILES['userfile']['type'][0] are also set.
Swetseneggermaandag 7 januari 2013 @ 21:48
quote:
Ja DAT begrijp ik. ALS ik een upload heb moet ik die dmv een loop uit de array gaan vissen. Maar EERST moet ik weten of er uberhaupt een foto is geupload en dat mijn array niet gewoon uit 3 keys zonder value bestaat.
#ANONIEMmaandag 7 januari 2013 @ 21:51
quote:
0s.gif Op maandag 7 januari 2013 21:48 schreef Swetsenegger het volgende:

[..]

Ja DAT begrijp ik. ALS ik een upload heb moet ik die dmv een loop uit de array gaan vissen. Maar EERST moet ik weten of er uberhaupt een foto is geupload en dat mijn array niet gewoon uit 3 keys zonder value bestaat.
Dan loop je toch met een foreach eroverheen en kijk je of de value niet leeg is ? Zet je een vlaggetje waarin je bijhoudt of er een file aanwezig is en zo ja, ga door met processen.
Swetseneggermaandag 7 januari 2013 @ 21:52
quote:
0s.gif Op maandag 7 januari 2013 21:44 schreef Juicyhil het volgende:

[..]

Doe eens var_dump($_FILES) en post dat es
print_r geeft

1
2
3
4
5
6
Array ( [name] => Array ( [0] => [1] => [2] => )
        [type] => Array ( [0] => [1] => [2] => )
        [tmp_name] => Array ( [0] => [1] => [2] => ) 
        [error] => Array ( [0] => 4 [1] => 4 [2] => 4 )
        [size] => Array ( [0] => 0 [1] => 0 [2] => 0 ) 
)
Juicyhilmaandag 7 januari 2013 @ 21:52
quote:
0s.gif Op maandag 7 januari 2013 21:52 schreef Swetsenegger het volgende:

[..]

print_r geeft
[ code verwijderd ]

Blijkbaar gaat het uploaden mis:

UPLOAD_ERR_NO_FILE
Value: 4; No file was uploaded.
Swetseneggermaandag 7 januari 2013 @ 21:53
quote:
1s.gif Op maandag 7 januari 2013 21:51 schreef Scorpie het volgende:

[..]

Dan loop je toch met een foreach eroverheen en kijk je of de value niet leeg is ? Zet je een vlaggetje waarin je bijhoudt of er een file aanwezig is en zo ja, ga door met processen.
Ja dat had ik ook al bedacht, maar dat is best weer een hoop meuk voor zoiets relatief simpels.
mstxmaandag 7 januari 2013 @ 21:53
quote:
0s.gif Op maandag 7 januari 2013 21:48 schreef Swetsenegger het volgende:

[..]

Ja DAT begrijp ik. ALS ik een upload heb moet ik die dmv een loop uit de array gaan vissen. Maar EERST moet ik weten of er uberhaupt een foto is geupload en dat mijn array niet gewoon uit 3 keys zonder value bestaat.
1
2
3
4
5
6
7
8
9
10
11
<?php
$foto_aanwezig
=false;
if ( !empty(
$_FILES['foto']) ) {
  foreach ( 
$_FILES['foto']['size'] as $k=>$v ) {
    if ( 
$v>) {
      
$foto_aanwezig=true;
      break;
    }
  }
}
?>


[ Bericht 0% gewijzigd door mstx op 07-01-2013 21:57:17 (break) ]
GlowMousemaandag 7 januari 2013 @ 21:53
break;
Swetseneggermaandag 7 januari 2013 @ 21:54
quote:
0s.gif Op maandag 7 januari 2013 21:52 schreef Juicyhil het volgende:

[..]

Blijkbaar gaat het uploaden mis:

UPLOAD_ERR_NO_FILE
Value: 4; No file was uploaded.
Eh ja, dat was de originele vraag. Ik heb minimaal 1 foto nodig. Als de gebruiker GEEN foto upload wil ik een foutmelding geven. Maar count geeft dus altijd een value terug, want ik krijg 3 key's zonder value.
mstxmaandag 7 januari 2013 @ 21:54
quote:
6s.gif Op maandag 7 januari 2013 21:53 schreef GlowMouse het volgende:
break;
Dat is het meest nette inderdaad
Swetseneggermaandag 7 januari 2013 @ 21:56
quote:
0s.gif Op maandag 7 januari 2013 21:53 schreef mstx het volgende:

[..]
[ code verwijderd ]

Elegant :)
mstxdinsdag 8 januari 2013 @ 11:58
Ben ik in een project van een collega bezig, blijkt dat hij nergens in de database indexes heeft gedefinieerd. Query zonder indexes: 26.4 sec., met indexes: 0.09 sec. (zonder cache), maakt toch best wel verschil. :')
GlowMousedinsdag 8 januari 2013 @ 12:01
Het blijft een trage query.
mstxdinsdag 8 januari 2013 @ 12:04
quote:
0s.gif Op dinsdag 8 januari 2013 12:01 schreef GlowMouse het volgende:
Het blijft een trage query.
't is dan ook niet bepaald een kleine.

6V8z5.jpg

En optimaliseren ga ik al helemaal niet aan beginnen, ben het liefst zo snel mogelijk van dit project af. :X
StMdinsdag 8 januari 2013 @ 16:44
Waarom snap ik dat volledig :{
StMwoensdag 9 januari 2013 @ 16:12
Naar aanleiding van de RoR exploit ben ik me er wat meer in gaan verdiepen en er blijkt een vergelijkbaar probleem in PHP te zitten! Wel is het noodzakelijk dat de programmeur een domme fout maakt in tegenstelling tot RoR maar ik denk dat de meesten zich deze nog niet realiseren.

http://www.suspekt.org/do(...)nPHPExploitation.pdf

Ik was er (theoretisch) vatbaar voor iig ;)

Te weinig validatie op de url encoder die ik gebruik om bv aan de inlogpagina de redirect etc mee te geven
Tostiapparaatje2woensdag 9 januari 2013 @ 21:33
Is het mogelijk een getal via regex bij een ander getal op te tellen?

Hoe kan ik bijvoorbeeld dit: "Kat.156" omzetten in "Kat.489"?

Ik dacht zelf aan: " Kat.( [1-9]* ) => Kat.\1 " , maar hoe tel ik 333 bij 156 op?

Ik wil het trouwens het liefst gewoon via de replace-functie van Notepad++ doen. :)
Juicyhilwoensdag 9 januari 2013 @ 21:35
quote:
0s.gif Op woensdag 9 januari 2013 21:33 schreef Tostiapparaatje2 het volgende:
Is het mogelijk een getal via regex bij een ander getal op te tellen?

Hoe kan ik bijvoorbeeld dit: "Kat.156" omzetten in "Kat.489"?

Ik dacht zelf aan: " Kat.( [1-9]* ) => Kat.\1 " , maar hoe tel ik 333 bij 156 op?
Voor zover ik weet niet. Maar ik kan me eerlijk gezegd geen scenario bedenken waarbij je dat niet in PHP zelf kan oplossen.
Regex is daar ook niet voor bedoeld.
Pakspulwoensdag 9 januari 2013 @ 21:36
quote:
0s.gif Op woensdag 9 januari 2013 21:33 schreef Tostiapparaatje2 het volgende:
Is het mogelijk een getal via regex bij een ander getal op te tellen?

Hoe kan ik bijvoorbeeld dit: "Kat.156" omzetten in "Kat.489"?

Ik dacht zelf aan: " Kat.( [1-9]* ) => Kat.\1 " , maar hoe tel ik 333 bij 156 op?

Ik wil het trouwens het liefst gewoon via de replace-functie van Notepad++ doen. :)
Eerst alle getallen in een string preg_match_all doen, pattern zal iets zijn van "/([0-9]+)/" en dan de output array in array_sum gooien.
Tostiapparaatje2woensdag 9 januari 2013 @ 21:36
quote:
0s.gif Op woensdag 9 januari 2013 21:35 schreef Juicyhil het volgende:

[..]

Voor zover ik weet niet. Maar ik kan me eerlijk gezegd geen scenario bedenken waarbij je dat niet in PHP zelf kan oplossen.
Hoe doe ik dat dan? :o Het gaat om een PHP-script waarin een heleboel getallen een constante toevoeging missen.
GlowMousewoensdag 9 januari 2013 @ 21:36
het kan gewoon met http://nl3.php.net/manual/en/function.preg-replace-callback.php
Tostiapparaatje2woensdag 9 januari 2013 @ 21:37
Oké, duidelijk. Stel dit was een CSS-file, wat dan?
Pakspulwoensdag 9 januari 2013 @ 21:38
quote:
Hoe gaat callback om met vooruitkijken in string en bijhouden van tijdelijke variabelen? Global gebruiken?

Tosti, werkt mijn antwoord niet?
GlowMousewoensdag 9 januari 2013 @ 21:38
quote:
0s.gif Op woensdag 9 januari 2013 21:37 schreef Tostiapparaatje2 het volgende:
Oké, duidelijk. Stel dit was een CSS-file, wat dan?
dan kan het ook met http://nl3.php.net/manual/en/function.preg-replace-callback.php
GlowMousewoensdag 9 januari 2013 @ 21:40
quote:
0s.gif Op woensdag 9 januari 2013 21:38 schreef Pakspul het volgende:

[..]

Hoe gaat callback om met vooruitkijken in string en bijhouden van tijdelijke variabelen? Global gebruiken?
Hij werkt op de gematchte elementen, dus je hoeft bij 'Kat.156' niet alleen een '1' te verwachten, je krijgt '156' bij de juiste regexp.
Tostiapparaatje2woensdag 9 januari 2013 @ 21:40
quote:
0s.gif Op woensdag 9 januari 2013 21:38 schreef Pakspul het volgende:

[..]

Hoe gaat callback om met vooruitkijken in string en bijhouden van tijdelijke variabelen? Global gebruiken?

Tosti, werkt mijn antwoord niet?
quote:
Sorry, hoor, ben echt een n00bie. Is het gewoon een kwestie van deze code runnen en dan wordt de code permanent veranderd? Hoe run ik dit dan is een CSS-file? Gewoon <?php?> tags erom heen? :') :@
Pakspulwoensdag 9 januari 2013 @ 21:43
quote:
0s.gif Op woensdag 9 januari 2013 21:40 schreef GlowMouse het volgende:

[..]

Hij werkt op de gematchte elementen, dus je hoeft bij 'Kat.156' niet alleen een '1' te verwachten, je krijgt '156' bij de juiste regexp.
Dus per getal een callback waar je dan eigenlijk het volgende doet
1
2
3
4
5
6
7
8
9
<?php
$totaal 
0;
function 
optellen($value)
{
    global 
$totaal;

    
$totaal += $value;
}
?>

heerlijk Nederlands en Engels door elkaar heen :')
Pakspulwoensdag 9 januari 2013 @ 21:44
quote:
0s.gif Op woensdag 9 januari 2013 21:40 schreef Tostiapparaatje2 het volgende:

[..]

[..]

Sorry, hoor, ben echt een n00bie. Is het gewoon een kwestie van deze code runnen en dan wordt de code permanent veranderd? Hoe run ik dit dan is een CSS-file? Gewoon <?php?> tags erom heen? :') :@
Nee je moet het bestand inlezen, dan kun je gaat optellen of wat je ook eigenlijk wilt en dan kun je het resultaat wel weer uitpoepen.
GlowMousewoensdag 9 januari 2013 @ 21:44
waar heb je $totaal dan voor nodig?
Tostiapparaatje2woensdag 9 januari 2013 @ 21:45
quote:
0s.gif Op woensdag 9 januari 2013 21:44 schreef Pakspul het volgende:

[..]

Nee je moet het bestand inlezen, dan kun je gaat optellen of wat je ook eigenlijk wilt en dan kun je het resultaat wel weer uitpoepen.
Oké. Hmmm, dan is het misschien handiger om het handmatig te doen. Het zijn ongeveer 200 getallen, dus dat is te overzien. :P
Swetseneggerwoensdag 9 januari 2013 @ 21:46
Ik begrijp blijkbaar het hele vraagstuk niet... wat is er mis met CTRL-R of CTRL-H (afhankelijk van je ontwikkelomgeving)
Pakspulwoensdag 9 januari 2013 @ 21:46
quote:
0s.gif Op woensdag 9 januari 2013 21:44 schreef GlowMouse het volgende:
waar heb je $totaal dan voor nodig?
Hoe wil je anders het totaal bijhouden, zoals Tosti al aangeeft wil hij meerdere bij elkaar optellen. Of krijg je dan direct een array met alle waardes terug?
Pakspulwoensdag 9 januari 2013 @ 21:47
quote:
0s.gif Op woensdag 9 januari 2013 21:45 schreef Tostiapparaatje2 het volgende:

[..]

Oké. Hmmm, dan is het misschien handiger om het handmatig te doen. Het zijn ongeveer 200 getallen, dus dat is te overzien. :P
Als je niet kunt programmeren is dat handiger ja.
GlowMousewoensdag 9 januari 2013 @ 21:49
333 is CONST, of hij is wel heel raar met zijn vraag.
Pakspulwoensdag 9 januari 2013 @ 21:51
quote:
0s.gif Op woensdag 9 januari 2013 21:49 schreef GlowMouse het volgende:
333 is CONST, of hij is wel heel raar met zijn vraag.
ah, kleine lees fout van mijn kant :+ ja dan kan je oplossing met gemak.

Voor Tosti, aangezien het om layout gaat zal je een paar waardes hebben die vaker voorkomen en deze kun je gewoon vervangen door het nieuwe getal.
Tostiapparaatje2woensdag 9 januari 2013 @ 21:54
quote:
0s.gif Op woensdag 9 januari 2013 21:47 schreef Pakspul het volgende:

[..]

Als je niet kunt programmeren is dat handiger ja.
Nah, ik ben geen pro inderdaad. Soms is het voor mij dus sneller om dingen handmatig te doen, zoals dit. Bedankt voor jullie hulp though.
Arceewoensdag 9 januari 2013 @ 22:22
quote:
0s.gif Op woensdag 9 januari 2013 21:45 schreef Tostiapparaatje2 het volgende:
Oké. Hmmm, dan is het misschien handiger om het handmatig te doen. Het zijn ongeveer 200 getallen, dus dat is te overzien. :P
Hoe zien die andere 200 er ongeveer uit? :)
Tostiapparaatje2woensdag 9 januari 2013 @ 22:45
quote:
0s.gif Op woensdag 9 januari 2013 22:22 schreef Arcee het volgende:

[..]

Hoe zien die andere 200 er ongeveer uit? :)
Het is zijn allemaal CSS-attributen top:###px; en left:###px;. Die in het PHP-script stonden waren er niet zoveel, dus die heb ik nu al handmatig gedaan.
KomtTijd...woensdag 9 januari 2013 @ 22:57
Niet om het één of ander, maar had je dat niet beter op kunnen lossen met een wrapper-div met een margin van 333px?
Lightwoensdag 9 januari 2013 @ 23:01
quote:
14s.gif Op woensdag 9 januari 2013 22:57 schreef KomtTijd... het volgende:
Niet om het één of ander, maar had je dat niet beter op kunnen lossen met een wrapper-div met een margin van 333px?
Dat zou vast te simpel zijn ;)
Pakspulwoensdag 9 januari 2013 @ 23:02
quote:
14s.gif Op woensdag 9 januari 2013 22:57 schreef KomtTijd... het volgende:
Niet om het één of ander, maar had je dat niet beter op kunnen lossen met een wrapper-div met een margin van 333px?
Lelijke oplossingen FTW? :P
Tostiapparaatje2woensdag 9 januari 2013 @ 23:03
quote:
14s.gif Op woensdag 9 januari 2013 22:57 schreef KomtTijd... het volgende:
Niet om het één of ander, maar had je dat niet beter op kunnen lossen met een wrapper-div met een margin van 333px?
Zou wel kunnen ja, maar ik ben dan wel weer zo dat ik liever 200 waardes ga vervangen, die dat ik weer een extra div'je erbij heb. :)
Tostiapparaatje2woensdag 9 januari 2013 @ 23:03
quote:
0s.gif Op woensdag 9 januari 2013 23:02 schreef Pakspul het volgende:

[..]

Lelijke oplossingen FTW? :P
Maar wel snel. :P
KomtTijd...woensdag 9 januari 2013 @ 23:05
quote:
0s.gif Op woensdag 9 januari 2013 23:02 schreef Pakspul het volgende:

[..]

Lelijke oplossingen FTW? :P
Als je een website hebt met 200 gepositioneerde elementen waarvan de positie ook nog eens aangepast moet worden op een nieuwe situatie (groter scherm?), hoef je je daar niet bepaald druk meer om te maken lijkt me :+
Drommelsch85vrijdag 11 januari 2013 @ 00:28
Domme PHP vraag.. Ik heb nu de volgende code, ik wil 6 plaatjes weergeven uit een directory van 12. De 6 moeten random worden getoond, geen nummer (1.jpg ~ 12.jpg) mag herhaald worden.

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

$total 
"12"
$file_type ".jpg"

// aan het werk

$start "1"

$random mt_rand($start$total); 

$image_name $random $file_type

$images ="'backgrounds/$image_name', 'backgrounds/$image_name', 'backgrounds/$image_name', 'backgrounds/$image_name', 'backgrounds/$image_name', 'backgrounds/$image_name'"

echo 
$images;

?>

Mijn output is nu dat alle 6 de plaatjes hetzelfde zijn, hoe los ik dit op? Ik wil ze in een array zetten maar weet niet hoe. Ze zijn trouwens inderdaad wel random na iedere refresh, maar ik krijg dus 6x hetzelfde random nummer.
Diaboxvrijdag 11 januari 2013 @ 00:35
1
2
3
4
5
6
7
<?php
$numbers 
shuffle(range(1,12));

foreach(
$numbers as $number) {
    
// Je images echo'en.
}
?>
Drommelsch85vrijdag 11 januari 2013 @ 00:48
Deze spuugt er 12 uit, terwijl hij van de 12 er maar 6 moet uitkiezen, liefst met 6 aparte strings.
Diaboxvrijdag 11 januari 2013 @ 00:49
quote:
0s.gif Op vrijdag 11 januari 2013 00:48 schreef Drommelsch85 het volgende:
Deze spuugt er 12 uit, terwijl hij van de 12 er maar 6 moet uitkiezen, liefst met 6 aparte strings.
Voeg een if-statement toe, i.v.m. dat ik geen idee heb wat voor indices shuffle uitpoept m.b.t. 'n for loop, test het uit zou ik zeggen. (als ie gewoon als keys 0 t/m 11 hanteert gebruik je 'n for loop)
Drommelsch85vrijdag 11 januari 2013 @ 00:55
Die 6 mogen gewoon random, maar ik bedoel dus ongeveer:

Totaal = 12
Kiezen = 6 (random)
output: echo random($bla), random($bla), random($bla), random($bla), random($bla), random($bla)

Die laatste regel omdat het anders niet werkt met afsluitende komma die ik met de rest wel mee-echo.
Diaboxvrijdag 11 januari 2013 @ 01:04
Je snapt dat range(1,12) een array geeft met de getallen 1 t/m 12, en dat shuffle deze willekeurig door elkaar haalt, en dat je hier vervolgens precies mee kan doen wat jij wil...?
Drommelsch85vrijdag 11 januari 2013 @ 01:17
Jazeker, maar niet hoe ik verder moet. Dit is een mooi voorbeeld zoals ik het wil, alleen wordt hier [Array =1,] enz weergegeven. Ik wil alleen de output van de nummers hebben.

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$numbers 
range(112);
shuffle($numbers);

function 
kiezen($min$max$quantity) {
    
$numbers range($min$max);
    
shuffle($numbers);
    return 
array_slice($numbers0$quantity);

}

print_rkiezen(1,12,6) );
?>
GlowMousevrijdag 11 januari 2013 @ 01:37
kiezen(0, 1e6; 1);
KomtTijd...vrijdag 11 januari 2013 @ 01:37
Als je nou eens niet 6x 'backgrounds/$imagename' neerzet, maar gewoon één keer, en dan een loopje maakt?
En je rand() natuurlijk ook binnen die loop houden.
Drommelsch85vrijdag 11 januari 2013 @ 02:41
quote:
12s.gif Op vrijdag 11 januari 2013 01:37 schreef GlowMouse het volgende:
kiezen(0, 1e6; 1);
Komt dit uit Array ( [0] => 764612 )

quote:
14s.gif Op vrijdag 11 januari 2013 01:37 schreef KomtTijd... het volgende:
Als je nou eens niet 6x 'backgrounds/$imagename' neerzet, maar gewoon één keer, en dan een loopje maakt?
En je rand() natuurlijk ook binnen die loop houden.
Dan zit ik met het feit dat 'bla', 'bla', (..) 'bla', in beeld komt, terwijl die laatste komma weg moet.
Maringovrijdag 11 januari 2013 @ 07:20
quote:
0s.gif Op vrijdag 11 januari 2013 02:41 schreef Drommelsch85 het volgende:

[..]

Komt dit uit Array ( [0] => 764612 )

[..]

Dan zit ik met het feit dat 'bla', 'bla', (..) 'bla', in beeld komt, terwijl die laatste komma weg moet.
Simpele oplossing:
1
2
3
4
5
6
7
8
9
10
$i = 0;
while($i < 10){
    if($i == 0){
        echo 'blah';
    }
    else{
        echo ', blah';
    }
    $i++;
}
boem-dikkievrijdag 11 januari 2013 @ 08:45
Is het mogelijk om met een sql query twee records met een bepaalde waarde altijd als eerste én laatste te laten zien?

Ik heb dus bijvoorbeeld 1, 2, 3, 4, 5, 6.

En ik wil met mijn query dat 6 altijd boven aanstaat, 3 altijd onderaan en wat daar tussen valt aan records op alfabetische volgorde wordt gesorteerd. Kan wel 't één en ander vinden over records bovenaan maar de combinatie wordt voor mij wat vaag.
mstxvrijdag 11 januari 2013 @ 08:52
quote:
14s.gif Op vrijdag 11 januari 2013 08:45 schreef boem-dikkie het volgende:
Is het mogelijk om met een sql query twee records met een bepaalde waarde altijd als eerste én laatste te laten zien?

Ik heb dus bijvoorbeeld 1, 2, 3, 4, 5, 6.

En ik wil met mijn query dat 6 altijd boven aanstaat, 3 altijd onderaan en wat daar tussen valt aan records op alfabetische volgorde wordt gesorteerd. Kan wel 't één en ander vinden over records bovenaan maar de combinatie wordt voor mij wat vaag.
1
2
3
4
5
6
7
8
SELECT *, 
CASE 
    WHEN kolomnaam=6 THEN 1
    WHEN kolomnaam=3 THEN 3
    ELSE 2
END AS eerstelaatste
FROM tabelnaam
ORDER BY eerstelaatste ASC, kolomnaam ASC
Juicyhilvrijdag 11 januari 2013 @ 08:54
quote:
7s.gif Op vrijdag 11 januari 2013 08:52 schreef mstx het volgende:

[..]
[ code verwijderd ]

:X

1
2
SELECT * FROM tabel
ORDER BY FIELD(kolom, 6, 3), nogeenkolom
mstxvrijdag 11 januari 2013 @ 08:57
quote:
0s.gif Op vrijdag 11 januari 2013 08:54 schreef Juicyhil het volgende:
SELECT * FROM tabel
ORDER BY FIELD(kolom, 6, 3), nogeenkolom
Bij jouw query komen zowel rij 6 als 3 onderaan te staan?
Juicyhilvrijdag 11 januari 2013 @ 08:58
quote:
5s.gif Op vrijdag 11 januari 2013 08:57 schreef mstx het volgende:

[..]

Bij jouw query komen zowel kolom 6 als 3 onderaan te staan?
dan wordt field(kolom, 6,3,1,2,4,5)

same shit
Juicyhilvrijdag 11 januari 2013 @ 09:01
maar het gaat erom dat het makkelijker kan dan met een case when
mstxvrijdag 11 januari 2013 @ 09:02
quote:
0s.gif Op vrijdag 11 januari 2013 09:01 schreef Juicyhil het volgende:
maar het gaat erom dat het makkelijker kan dan met een case when
Jouw oplossing werkt alleen als je een vast aantal rijen en id's hebt. "1,2,3,4,5,6" was slechts een voorbeeld dus misschien heeft boem-dikkie wel 100.000 rijen, dan wordt het wat lastig om zelf al die id's in te vullen.
Juicyhilvrijdag 11 januari 2013 @ 09:04
quote:
0s.gif Op vrijdag 11 januari 2013 09:02 schreef mstx het volgende:

[..]

Jouw oplossing werkt alleen als je een vast aantal rijen en id's hebt. "1,2,3,4,5,6" was slechts een voorbeeld dus misschien heeft boem-dikkie wel 100.000 rijen, dan wordt het wat lastig om zelf al die id's in te vullen.
En hoe ga je dat doen met jouw oplossing dan? :?
mstxvrijdag 11 januari 2013 @ 09:06
quote:
0s.gif Op vrijdag 11 januari 2013 09:04 schreef Juicyhil het volgende:

[..]

En hoe ga je dat doen met jouw oplossing dan? :?
Gewoon zoals het er staat, mijn query hoeft daar niet voor aangepast te worden. 6 komt altijd bovenaan en 3 altijd onderaan en de rest wordt gesorteerd, ongeacht hoeveel rijen er in de tabel staan.
Juicyhilvrijdag 11 januari 2013 @ 09:08
quote:
0s.gif Op vrijdag 11 januari 2013 09:06 schreef mstx het volgende:

[..]

Gewoon zoals het er staat, mijn query hoeft daar niet voor aangepast te worden. 6 komt altijd bovenaan en 3 altijd onderaan en de rest wordt gesorteerd, ongeacht hoeveel rijen er in de tabel staan.
Met field() kun je hetzelfde doen hoor. Ik gebruik het vaak genoeg, ook voor 1.000.000 rijen ja
mstxvrijdag 11 januari 2013 @ 09:22
quote:
0s.gif Op vrijdag 11 januari 2013 09:08 schreef Juicyhil het volgende:

[..]

Met field() kun je hetzelfde doen hoor. Ik gebruik het vaak genoeg, ook voor 1.000.000 rijen ja
Voorbeeld?
boem-dikkievrijdag 11 januari 2013 @ 09:24
1, 2, 3, 4, 5, 6 was inderdaad een voorbeeld. Maar ik kom er zo wel uit denk ik! Thanks voor het meedenken.
GlowMousevrijdag 11 januari 2013 @ 10:47
quote:
7s.gif Op vrijdag 11 januari 2013 08:52 schreef mstx het volgende:

[..]
[ code verwijderd ]

traag, gebruik UNION
quote:
0s.gif Op vrijdag 11 januari 2013 02:41 schreef Drommelsch85 het volgende:

[..]

Komt dit uit Array ( [0] => 764612 )

ook traag
boem-dikkievrijdag 11 januari 2013 @ 13:55
quote:
0s.gif Op vrijdag 11 januari 2013 10:47 schreef GlowMouse het volgende:

[..]

traag, gebruik UNION

[..]

ook traag
Ook traag op een tabel met max. 40 rijen?
GlowMousevrijdag 11 januari 2013 @ 14:02
quote:
7s.gif Op vrijdag 11 januari 2013 13:55 schreef boem-dikkie het volgende:

[..]

Ook traag op een tabel met max. 40 rijen?
ja
Olmentmaandag 14 januari 2013 @ 10:43
Beste mede fokkers,

Kan ik hier ook terecht met een vraag over Joomla, of is er een ander topic over?
urselmaandag 14 januari 2013 @ 10:56
Volgens mij is er geen Joomla topic. Wel WordPress. Zou het denk ik maar eerst hier proberen ja.
Olmentmaandag 14 januari 2013 @ 11:00
Dan brand ik maar los. Voor meer informatie gewoon vragen.

Werk aan mijn site met joomla 2.5.8. Nu wil ik een page maken waarop mensen dmv invulvelden gegevens kunnen invullen. (een reparatieformulier invullen)
Alleen krijg ik de plain text van mijn html of joomla script in de site, en niet een mooi invulveldje.

<FORM METHOD="post" ACTION="bestemming">
<I>Vul hier je naam in:</I>
<INPUT TYPE="text" NAME="naam" SIZE="20" MAXLENGTH="30">
</FORM>

Gebruik is als html zijnde
en

<field name="test1" label ="Test Field" type="editor" width="300" filter="safehtml" />

Als joomla code, maar ik bijf de text zien en geen veldje.
Iemand enig idee?
Chandlermaandag 14 januari 2013 @ 11:02
textarea heb je voor een groot tekst veld nodig! hoop dat je dat bedoeld.
Olmentmaandag 14 januari 2013 @ 11:03
quote:
0s.gif Op maandag 14 januari 2013 11:02 schreef Chandler het volgende:
textarea heb je voor een groot tekst veld nodig! hoop dat je dat bedoeld.
Ja mijn idee is een pagina waarop mensen hun:
Naam, adres, reparatie type en een klachtomschrijving kunnen typen
urselmaandag 14 januari 2013 @ 11:12
Joomla heeft toch wel een plugin om formulieren te maken?
Wat moet er met de gegevens gebeuren als ze ingevuld zijn? Opgeslagen? Gemailed?
Olmentmaandag 14 januari 2013 @ 11:19
quote:
0s.gif Op maandag 14 januari 2013 11:12 schreef ursel het volgende:
Joomla heeft toch wel een plugin om formulieren te maken?
Wat moet er met de gegevens gebeuren als ze ingevuld zijn? Opgeslagen? Gemailed?
Ik kan qua plugin alleen een inlog form en een registratieform vinden. Ze moeten in een mysql database komen en de gegevens moeten worden gemailed.
Olmentmaandag 14 januari 2013 @ 11:34
quote:
0s.gif Op maandag 14 januari 2013 11:19 schreef Olment het volgende:

[..]

Ik kan qua plugin alleen een inlog form en een registratieform vinden. Ze moeten in een mysql database komen en de gegevens moeten worden gemailed.
Nou, ik heb gevodnen hoe ik plugins kan installeren :+
Chronoform gevonden als formulier maker,, alleen voor betalen xD

Nog ff speuren voor een gratis.
Darkomenmaandag 14 januari 2013 @ 11:44
Probeer deze Howto eens?
Ps, tip, dit soort simpele vragen kan je heel goed in google invullen.
Devolutionmaandag 14 januari 2013 @ 11:49
Ik vermoed dat het met de 'safehtml' filter in je code te maken heeft. Waarschijnlijk wordt daardoor alleen opmaakHTML toegestaan zoals <b> en <i>. Overige HTML tags worden dan gewoon als plaintext in de browser getoond.
Olmentmaandag 14 januari 2013 @ 15:38
Thanks allen. Heb een formulier op mijn site gekregen :D

Edit: heb een plugin van Chronoforms erin gezet en deze laat mij de formulieren maken

[ Bericht 24% gewijzigd door Olment op 14-01-2013 15:44:36 ]
Chandlerzondag 20 januari 2013 @ 09:44
Heeft iemand een idee hoe je de transparantie van een geanimeerde gif kunt behouden en deze kunt gebruiken voor het maken van een thumbnail? heb al verschillende manieren geprobeerd maar op een of andere manier krijg ik geen juiste waarde van de transparantie kleur bij geanimeerde plaatjes (wel bij niet geanimeerd!!!).

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$transparant_index 
ImageColorTransparent($thumb_im);
if (
$transparant_index != -1)
{
    list(
$red
         
$green
         
$blue) = ImageColorsForIndex($thumb_im
                                                     
$transparant_index);
}

$background imagecolorallocate($thumb_im$red$green$blue);   
?>

dit gebruik ik alleen bij gifs en png's

oplossing onderstaand...
via: http://ellislab.com/forums/viewthread/62955/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
if ($image['filetype'] == OR $image['filetype'] == 3// png & gif
{
    
$transparent_index imagecolortransparent($im);
    if (
$transparent_index >= 0
    {
        
imagepalettecopy($im$thumb_im);
        
imagefill($thumb_im00$transparent_index);
        
imagecolortransparent($thumb_im$transparent_index);
        
imagetruecolortopalette($thumb_imtrue256);                            
    }
    elseif (
$image['filetype'] == 3)
    {
        
imagealphablending($thumb_imfalse);
        
$transparent_index imagecolorallocatealpha($im000127);
        
imagefill($thumb_im00$transparent_index);
        
imagesavealpha($thumb_imtrue);                            
    }
}
?>


[ Bericht 51% gewijzigd door Chandler op 20-01-2013 10:03:21 ]
Chandlermaandag 21 januari 2013 @ 09:54
Even een idee, hoe hier mee om te gaan?

Ik heb een berg met afbeeldingen (zo'n 100.000) daarvan is ongeveer 1/5 geanimeerd en de rest niet. Deze wil ik zichtbaar maken op een website echter zit ik met een probleem.

De afbeeldingen op de site mogen maximaal 116x116px zijn, waarbij grote afbeeldingen automatisch geresized worden naar 116x116px eventueel met behulp van een crop functie waardoor niet de hele afbeelding zichtbaar is maar toch een leuke thumbnail tevoorschijn komt. Echter heb ik ook animaties die langer of breeder zijn dan 116px maar niet even breed/lang. Nu worden deze geresized op de hoogste waarde waardoor afbeeldingen af en toe er niet uit zien.

5u976s0ruc18stimodr4_thumb.png

Hoe zouden jullie dit aanpakken? oh en ook afbeeldingen die kleiner zijn dan 116x116 (zowel lengte als hoogte) worden niet mooi....

Graag jullie idee hier over!
KomtTijd...maandag 21 januari 2013 @ 10:08
centreren, lege ruimte vullen met een standaard background kleur.
#ANONIEMmaandag 21 januari 2013 @ 10:08
Ik snap het probleem niet helemaal. Je resized dan toch gewoon relatief, en je houdt rekening met een max van 116x116 ?

quote:
14s.gif Op maandag 21 januari 2013 10:08 schreef KomtTijd... het volgende:
centreren, lege ruimte vullen met een standaard background kleur.
En dat dus.

[ Bericht 67% gewijzigd door #ANONIEM op 21-01-2013 10:08:59 ]
Tijnmaandag 21 januari 2013 @ 10:13
Of je doet helemaal niks serverside en gooit ze gewoon allemaal als achtergrondplaatje in een div met "background-size: cover" :7
Chandlermaandag 21 januari 2013 @ 10:46
Maar dit alles geeft geen antwoord op de plaatjes die te lang of te breed zijn, en nee ga ze niet als background gebruiken :+
KomtTijd...maandag 21 januari 2013 @ 11:07
1) verklein (indien nodig) de afbeelding tot één van de maten 116px of kleiner is
2) crop (indien nodig) de andere maat tot 116 px

check ook dit scriptje even: http://shiftingpixel.com/2008/03/03/smart-image-resizer/
Chandlermaandag 21 januari 2013 @ 11:23
Tnx KomtTijd :@ ga weer notepad++ openen... :D
Chandlermaandag 21 januari 2013 @ 15:35
Andere vraag; stel ik doe een zoek actie op een tabel met LIKE '%en%' dan zou ik het liefst eerst de resultaten willen zien die beginnen met 'en' en daarna pas resultaten waar 'en' in voorkomt. Nu mijn vraag? hoe krijg ik dit voor elkaar? :D 2 queries? :?
Tijnmaandag 21 januari 2013 @ 15:55
1
2
3
SELECT * FROM  `test` 
WHERE  `value` LIKE  "%en%"
ORDER BY (`value` LIKE  "en%") DESC
Chandlermaandag 21 januari 2013 @ 16:08
op zich goed, alleen verplaatst deze het naar het eind van de array?

kalkoen|kalkoen kalkoenen|kalkoenen koeien|koeien koekjes|koekjes koelkasten|koelkasten koerier|koerier koetsier|koetsier

is als uitkomst van
1
2
3
4
5
6
SELECT `plaatjes`.`category` 
FROM `plaatjes` 
WHERE `plaatjes`.`category` LIKE ? 
GROUP BY `plaatjes`.`category` 
ORDER BY (`plaatjes`.`category` LIKE  ?) ASC 
LIMIT 30

natuurlijk eerst met desc geprobeerd!
Tijnmaandag 21 januari 2013 @ 16:13
Ik begrijp niet wat je bedoelt.

Hoe komt er sowieso opeens een array bij, we hebben het toch over MySQL? Ik begrijp je output niet. Zijn dat de rijen ofzo?

Wat staat er in je tabel en wat wil je eruit hebben?
Chandlermaandag 21 januari 2013 @ 16:15
quote:
5s.gif Op maandag 21 januari 2013 16:13 schreef Tijn het volgende:
Ik begrijp niet wat je bedoelt.

Hoe komt er sowieso opeens een array bij, we hebben het toch over MySQL? Ik begrijp je output niet. Zijn dat de rijen ofzo?

Wat staat er in je tabel en wat wil je eruit hebben?
Ik wil het gebruiken voor een auto complete in een formulier. Ik roep middels ajax een scriptje aan en die gebruikt bovenstaande query om in een database/tabel te zoeken naar categorieën die voldoen aan de gegeven input.. in dit geval koe waarbij ik graag eerst alle woorden wil zien die beginnen met KOE en daarna eventueel woorden waarin het stukje tekst 'koe' voorkomt.

Snap je?
Tijnmaandag 21 januari 2013 @ 16:26
Dat is precies wat mijn voorbeeld doet. Als je "en" vervangt door "koe", krijg je eerst de resultaten die beginnen met "koe" en daarna andere resultaten waar "koe" in voorkomt.

Stel je hebt deze tabel die "test" heet:

1
2
3
4
5
6
7
8
9
10
11
12
id  | value
-------------------------
1   | kalkoen
2   | koe
3   | koekje
4   | koelkast
5   | koerier
6   | koetsier
7   | waterkoeling
8   | luchtkoeling
9   | zomaar iets anders
10  | dingen

Als je daar deze query op draait:

1
2
3
SELECT * FROM  `test` 
WHERE  `value` LIKE  "%koe%"
ORDER BY (`value` LIKE  "koe%") DESC

... dan komt daar dit uit:

1
2
3
4
5
6
7
8
9
10
id | value
-------------------
2  | koe
3  | koekje
4  | koelkast
5  | koerier
6  | koetsier
1  | kalkoen
7  | waterkoeling
8  | luchtkoeling

Je sorteert hier op de boolean uitkomst van de conditie (`value` LIKE "koe%"). Daar komt 1 uit als dat waar is en 0 als dat niet waar is. Als je de waardes bovenaan wilt hebben waarvoor de conditie geldt, dan moet je DESC als volgorde gebruiken. Als je de resultaten die voldoen aan de conditie juist onderaan wilt hebben, sorteer je op ASC.
Chandlermaandag 21 januari 2013 @ 16:31
Je hebt helemaal gelijk Tijn.... op een of andere manier was mijn script blijkbaar aan't cachen?! shift F5 zorgde er voor dat ik met een 'desc' in het order by verhaal de juist waarden vooraan kreeg.

Bedankt Tijn! *)
Tijnmaandag 21 januari 2013 @ 16:32
Als je het wil gebruiken als hulp bij het zoeken en je hebt een tabel vol met dubbele waarden, dan wil je waarschijnlijk sorteren op hoe vaak de resultaten voorkomen. In dat geval zou ik er zoiets van maken:

1
2
3
4
SELECT `value`, COUNT(`id`) as `count` FROM  `test` 
WHERE  `value` LIKE  "%koe%"
GROUP BY `value`
ORDER BY (`value` LIKE  "koe%") DESC, `count` DESC

Dan krijg je eerst de waarden die beginnen met koe, en daarbinnen de resultaten die het vaakst voorkomen. Daarna krijg je de andere resultaten, ook op volgorde van hoe vaak deze voorkomen.
Chandlermaandag 21 januari 2013 @ 16:33
Tnx Tijn maar dat was niet de bedoeling :) maar wel handig dat je dit ff post kan ik misschien gebruiken in een volgend gedeelte van de site :P
Sitethiefdinsdag 22 januari 2013 @ 13:48
Waarom werkt dit niet? (PHP Version 5.3.13)

1
2
3
4
5
6
7
<?php
if($extraObject){
    foreach (
$extraObject as $key => $value ) {
        
$obj->{$fieldName}->{$key} = $value;
    }
}
?>

$extraObject en $obj zijn objecten (StdClass) en de andere drie variabelen zijn strings. Waarom geeft dit een Parse Error (Attempt to assign property of non-object)? Je kunt toch gewoon dynamische de namen uit variabelen trekken door {} erom heen te zetten? (zonder zelfs ook geloof ik). het werkt ook niet als ik eerst probeer
1
2
3
<?php
$obj
->{$fieldName} = new stdClass();
?>
te doen.
Sitethiefdinsdag 22 januari 2013 @ 14:06
Oh wacht, obj moet ik wel als object ophalen dan en niet als array :X _O- 8)7 :X
boem-dikkiedinsdag 22 januari 2013 @ 14:13
Enig idee wat ik er aan kan doen als mijn mail() niet werkt op een server? Script werkt op mijn eigen server prima maar op een andere server wordt niks verstuurd.
#ANONIEMdinsdag 22 januari 2013 @ 14:18
Je config nalopen, logfiles checken, debuggen.
Intrepiditydinsdag 22 januari 2013 @ 14:20
quote:
14s.gif Op dinsdag 22 januari 2013 14:13 schreef boem-dikkie het volgende:
Enig idee wat ik er aan kan doen als mijn mail() niet werkt op een server? Script werkt op mijn eigen server prima maar op een andere server wordt niks verstuurd.
Wellicht niet juist ingesteld binnen php.ini. Wat de mail()-functie precies doet om zijn mail te versturen (via een smtp server, via een binary, etc), moet juist ingesteld staan.
YazooWdinsdag 22 januari 2013 @ 16:36
Ik loop een beetje vast met een sql query.

Ik heb een simpele testtabel met daarin de kolommen "naam", "nummer" en "total".
Nu wil ik naam en nummer samenvoegen en in de kolom "total" opslaan. Als "naam" = piet en "nummer" = 12 dan is "total" = piet12.

Met deze query lukt het ook:
1INSERT INTO test (total) SELECT CONCAT(naam,nummer) AS 'total' FROM test

Het probleem is alleen dat hij met deze query een nieuwe rij aanmaakt en dan alleen "total" vult. Dit is mijn resultaat:

Rij 1: naam: piet / nummer: 12 / total: (leeg)
Rij 2: naam: (leeg) / nummer (leeg) / totaal: piet12

Wat ik als resultaat wil hebben is gewoon 1 rij die er zo uit ziet:
Rij 1: naam: piet / nummer: 12 / total: piet12

Hoe fix ik dit?
GlowMousedinsdag 22 januari 2013 @ 16:38
Gebruik geen INSERT maar UPDATE.
YazooWdinsdag 22 januari 2013 @ 16:42
quote:
0s.gif Op dinsdag 22 januari 2013 16:38 schreef GlowMouse het volgende:
Gebruik geen INSERT maar UPDATE.
Hoe komt mijn query er dan uit te zien?

INSERT INTO simpelweg wijzigen door UPDATE geeft een error.
#ANONIEMdinsdag 22 januari 2013 @ 16:44
UPDATE tablename SET columnName1 = value .... WHERE id = <id>
YazooWdinsdag 22 januari 2013 @ 16:48
quote:
7s.gif Op dinsdag 22 januari 2013 16:44 schreef Scorpie het volgende:
UPDATE tablename SET columnName1 = value .... WHERE id = <id>
Ik heb wel eens eerder gewerkt met UPDATE, alleen nog nooit in combinatie met een SELECT CONCAT.

SET columnName1 = value.

Maar hoe zet ik er dan dat value gelijk is aan kolom "naam" EN kolom "nummer".
#ANONIEMdinsdag 22 januari 2013 @ 16:49
UPDATE recepten SET titel = 'titel' WHERE id = 1 AND nummer = 2

Of

UPDATE recepten SET titel = 'titel' WHERE titel = 'Aapje' OR titel = 'Boefje' OR nummer = 2

[ Bericht 48% gewijzigd door #ANONIEM op 22-01-2013 16:49:43 ]
Tijndinsdag 22 januari 2013 @ 16:51
Waarom zou je de waardes van twee kolommen samenvoegen in een derde kolom?
YazooWdinsdag 22 januari 2013 @ 20:00
Inmiddels is het gelukt met de volgende query:
1UPDATE test SET total=concat(naam,nummer)

quote:
5s.gif Op dinsdag 22 januari 2013 16:51 schreef Tijn het volgende:
Waarom zou je de waardes van twee kolommen samenvoegen in een derde kolom?
Heb 2 csv files gedumpt in 2 tabellen. De ene csv heeft als unieke waarde naam00, de andere csv heeft dat niet maar heeft wel 2 losse kolommen naam en 00. Dus om ook die tweede csv uniek te maken heb ik nu naam en nummer samengevoegd zodat de unieke waarde gelijk is aan de unieke waarde van de eerste csv.
KomtTijd...dinsdag 22 januari 2013 @ 22:30
Je weet dat je ook indexes kunt maken over meerdere kolommen heh?
Aap1000donderdag 24 januari 2013 @ 10:23
Hallo,

stel ik moet een MySQL query uitvoeren waarin ik zoek naar werknemers die tussen 10 en 20 jaar in dienst is. Hoe ziet deze query er dan uit?
In mijn fictieve systeem kan niemand ontslagen worden en werkt dus tot de dag van vandaag.
Ik heb een veld in mijn database met datum wanneer een werknemer in dienst is gekomen.

Wie kan mij een duwtje de goeie richting op geven, of natuurlijk een hapklare query presenteren.

Bij voorbaat dank!

[ Bericht 2% gewijzigd door Aap1000 op 24-01-2013 10:31:49 (Typo) ]
Tijndonderdag 24 januari 2013 @ 10:25
msql? Bedoel je MS SQL of MySQL?

En wat voor veld is je datum? Een datetime, een timestamp, iets anders?
Aap1000donderdag 24 januari 2013 @ 10:27
quote:
5s.gif Op donderdag 24 januari 2013 10:25 schreef Tijn het volgende:
msql? Bedoel je MS SQL of MySQL?

En wat voor veld is je datum? Een datetime, een timestamp, iets anders?
Oh pardon, een typfout zie ik. Het is inderdaad MySQL.
Het datumveld is gewoon date
mstxdonderdag 24 januari 2013 @ 10:40
SELECT * FROM werknemers WHERE datumveld BETWEEN DATE_SUB(CURDATE(), INTERVAL 20 YEAR) AND DATE_SUB(CURDATE(), INTERVAL 10 YEAR)

Zoiets?
Aap1000donderdag 24 januari 2013 @ 10:42
Erg bedankt, maar ik had net zelf al een oplossing gevonden.
Sorry voor de moeite die je hebt moeten doen.

Mijn oplossing:
SELECT *,YEAR( CURDATE( ) ) - YEAR( datum_in_dienst) as year FROM werknemer
WHERE YEAR( CURDATE( ) ) - YEAR( datum_in_dienst)
BETWEEN 10 AND 24
mstxdonderdag 24 januari 2013 @ 10:58
quote:
0s.gif Op donderdag 24 januari 2013 10:42 schreef Aap1000 het volgende:
Erg bedankt, maar ik had net zelf al een oplossing gevonden.
Sorry voor de moeite die je hebt moeten doen.

Mijn oplossing:
SELECT *,YEAR( CURDATE( ) ) - YEAR( datum_in_dienst) as year FROM werknemer
WHERE YEAR( CURDATE( ) ) - YEAR( datum_in_dienst)
BETWEEN 10 AND 24
Dat klopt alleen niet want dan zou iemand die op 15-12-2003 is begonnen ook 10 jaar in dienst zijn. ;)
Aap1000vrijdag 25 januari 2013 @ 10:17
quote:
0s.gif Op donderdag 24 januari 2013 10:58 schreef mstx het volgende:

[..]

Dat klopt alleen niet want dan zou iemand die op 15-12-2003 is begonnen ook 10 jaar in dienst zijn. ;)
Hmm, ja natuurlijk. Bedankt ^O^
Pakspulvrijdag 25 januari 2013 @ 11:53
Waarom gebruik je de functie datediff niet. Reaultaat is in dagen en dat deel je dan door 365.25.
GlowMousevrijdag 25 januari 2013 @ 11:57
quote:
0s.gif Op vrijdag 25 januari 2013 11:53 schreef Pakspul het volgende:
Waarom gebruik je de functie datediff niet. Reaultaat is in dagen en dat deel je dan door 365.25.
Omdat niet elk jaar 365.25 dagen heeft. Mstx heeft de mooiste oplossing.
rekenwonderzondag 27 januari 2013 @ 20:36
quote:
0s.gif Op vrijdag 25 januari 2013 11:57 schreef GlowMouse het volgende:

[..]

Omdat niet elk jaar 365.25 dagen heeft. Mstx heeft de mooiste oplossing.
Sterker: geen enkel aards jaar heeft een lengte van 365.25 dagen.

Nog wat aannames: http://infiniteundo.com/p(...)s-believe-about-time
MrNilesmaandag 28 januari 2013 @ 23:30
ineens heb ik in elk mapje op een site een default.php bestand,
hierin staat
<?php eval(gzinflate(base64_decode("een hele hoop karakters hier"))); ?>

site gehackt?
kreeg ook een redirect naar een of andere darwin...... .fr
ligt het aan mij...of kan het ook aan mijn hostingprovider liggen, dat die gehackt is.
Of is het totaal iets anders?
mscholmaandag 28 januari 2013 @ 23:49
quote:
0s.gif Op maandag 28 januari 2013 23:30 schreef MrNiles het volgende:
ineens heb ik in elk mapje op een site een default.php bestand,
hierin staat
<?php eval(gzinflate(base64_decode("een hele hoop karakters hier"))); ?>

site gehackt?
kreeg ook een redirect naar een of andere darwin...... .fr
ligt het aan mij...of kan het ook aan mijn hostingprovider liggen, dat die gehackt is.
Of is het totaal iets anders?
ik zou zeggen dat je site gehackt is :+
GlowMousemaandag 28 januari 2013 @ 23:50
ik zeg ftp account gehackt; iemand heeft de ftp-gegevens op zijn pc opgeslagen en diegene heeft een virus
MrNilesdinsdag 29 januari 2013 @ 00:00
quote:
14s.gif Op maandag 28 januari 2013 23:50 schreef GlowMouse het volgende:
ik zeg ftp account gehackt; iemand heeft de ftp-gegevens op zijn pc opgeslagen en diegene heeft een virus
aha..gelukkig..of niet..maar dan ligt het niet aan mij, maar aan de admin :)
als het dat is...nu hopen dat er een recente backup ergens is
ben al aan het fixen geweest maar in al de js files staat ook een document rewrite :(
Pakspuldinsdag 29 januari 2013 @ 08:55
quote:
0s.gif Op maandag 28 januari 2013 23:30 schreef MrNiles het volgende:
ineens heb ik in elk mapje op een site een default.php bestand,
hierin staat
<?php eval(gzinflate(base64_decode("een hele hoop karakters hier"))); ?>

site gehackt?
kreeg ook een redirect naar een of andere darwin...... .fr
ligt het aan mij...of kan het ook aan mijn hostingprovider liggen, dat die gehackt is.
Of is het totaal iets anders?
Haal die eval en gzinflate functie er eens omheen en maak het volgende er van:

1
2
3
<?php
echo base64_decode("een hele hoop karakters hier");
?>

Dit soort acties zijn ideaal om verdere uitbreiding van een script te realiseren. Heb er zelf ook al een keertje aangewerkt namelijk :+
Darkomendinsdag 29 januari 2013 @ 09:11
quote:
0s.gif Op dinsdag 29 januari 2013 00:00 schreef MrNiles het volgende:

[..]

aha..gelukkig..of niet..maar dan ligt het niet aan mij, maar aan de admin :)
als het dat is...nu hopen dat er een recente backup ergens is
ben al aan het fixen geweest maar in al de js files staat ook een document rewrite :(
quote:
0s.gif Op dinsdag 29 januari 2013 00:00 schreef MrNiles het volgende:

[..]

aha..gelukkig..of niet..maar dan ligt het niet aan mij, maar aan de admin :)
als het dat is...nu hopen dat er een recente backup ergens is
ben al aan het fixen geweest maar in al de js files staat ook een document rewrite :(
Hoewel GlowMouse eigenlijk altijd gelijk heeft vind ik het een beetje kort door de bocht om te zeggen dat de ftp account gehacked is.

Dit kan net zo goed zijn gebeurd via bugs of security holes in the server software of de webapplicaties die geinstalleerd zijn.

Basic rule: zorg dat alles up to date is.

[ Bericht 0% gewijzigd door Darkomen op 29-01-2013 12:03:35 (dt fail) ]
GlowMousedinsdag 29 januari 2013 @ 12:02
'vind ik'

Als je het zeker wilt weten moet je contact opnemen met de hoster, want dit kan inderdaad ook door andere dingen komen. Die kan de logfiles napluizen waar jij niet bij kunt. Maar dat ftp accounts gehackt worden en zulke code toegevoegd, gebeurt al zeker 3 jaar.
The_Terminatordinsdag 29 januari 2013 @ 12:39
quote:
0s.gif Op dinsdag 29 januari 2013 08:55 schreef Pakspul het volgende:

[..]

Haal die eval en gzinflate functie er eens omheen en maak het volgende er van:
[ code verwijderd ]

Dit soort acties zijn ideaal om verdere uitbreiding van een script te realiseren. Heb er zelf ook al een keertje aangewerkt namelijk :+
Als je wil weten wat de code is die uitgevoerd wordt moet je natuurlijk de gzinflate functie wel laten staan, als je dat niet doet krijg je nog steeds een hoop garbage als output aangezien het is gecomprimeerd.
MrNileswoensdag 30 januari 2013 @ 09:07
quote:
0s.gif Op dinsdag 29 januari 2013 12:02 schreef GlowMouse het volgende:
'vind ik'

Als je het zeker wilt weten moet je contact opnemen met de hoster, want dit kan inderdaad ook door andere dingen komen. Die kan de logfiles napluizen waar jij niet bij kunt. Maar dat ftp accounts gehackt worden en zulke code toegevoegd, gebeurt al zeker 3 jaar.
Hoster denkt dat het Gumblar is.
Niet zo fijn als ik de verhalen op internet allemaal moet geloven
Darkomenwoensdag 30 januari 2013 @ 10:24
Heeft Glowmouse toch weer gelijk ! :D
#ANONIEMwoensdag 30 januari 2013 @ 10:40
Glowmouse aka God.

[ Bericht 0% gewijzigd door #ANONIEM op 30-01-2013 10:40:59 ]
Swetseneggerdonderdag 31 januari 2013 @ 15:54
Korte vraag,

Ik heb een internet kassa die het resultaat van een betaling automatisch dmv POST doorgeeft aan een door mij ingestelde URL. Daar heb ik een php script welke het resultaat verwerkt, zoals de order table updaten met het resultaat van de betaling, klant mailen met de gegevens van de bestelling, etc.

En daarbij wil ik ook direct de sessie van het winkelwagentje resetten, maar... dat lukt niet. Mijn $_SESSION['cart'] wordt niet geleegd.

Ik heb nu op die pagina $_SESSION naar een txt file gedumpt dmv de volgende code

1
2
3
4
5
6
<?php
session_start
();
$fp=fopen('session.txt','w+');
fwrite($fp,var_export($_SESSION['cart'],true));
fclose($fp);
?>

Dit geeft als resultaat NULL. De sessie bestaat op desbetreffende pagina blijkbaar helemaal niet?

Gebruik ik namelijk dezelfde code op de pagina waar de internetkassa de gebruiker heen stuurt (manual response) krijg ik

1
2
3
4
array (
  2 => '1',
  5 => '2',
)

Waarom heeft de automatic response pagina geen sessie informatie :?

-edit-
Opgelost, op de automatic response pagina had ik geen sessie id, want geen cookie info uiteraard. Nu sessie id in de url van de automatic response geparsed en daarmee de sessie op die pagina gestart.

[ Bericht 3% gewijzigd door Swetsenegger op 31-01-2013 16:38:56 ]
Chandlerdonderdag 31 januari 2013 @ 17:06
Ik hoop wel dat je die sessie op een of andere manier beveiligd hebt :)
Swetseneggerdonderdag 31 januari 2013 @ 17:10
Ander vraagje dan maar :P

Is er een algemene stelregel voor welke kolommen een index zouden moeten hebben? Bijvoorbeeld altijd op kolommen die je gebruikt in JOINS of iets dergelijks?
Swetseneggerdonderdag 31 januari 2013 @ 17:10
quote:
5s.gif Op donderdag 31 januari 2013 17:06 schreef Chandler het volgende:
Ik hoop wel dat je die sessie op een of andere manier beveiligd hebt :)
Leg uit wat je bedoelt.
Chandlerdonderdag 31 januari 2013 @ 17:14
quote:
7s.gif Op donderdag 31 januari 2013 17:10 schreef Swetsenegger het volgende:
Ander vraagje dan maar :P

Is er een algemene stelregel voor welke kolommen een index zouden moeten hebben? Bijvoorbeeld altijd op kolommen die je gebruikt in JOINS of iets dergelijks?
Het veld van de 'op tellende' waarde? en verder lijkt mij niet dat er een stelregel is oid... maar logisch gezien pak je de velden die voor je applicatie het meest belangrijke zijn (dus waarmee je zoekt). en de links tussen bepaalde velden die waarde hebben..

ben geen expert zoals glowmouse..

quote:
5s.gif Op donderdag 31 januari 2013 17:10 schreef Swetsenegger het volgende:
Leg uit wat je bedoelt.
Je roept een externe url aan met allerlei post gegevens, dan neem ik aan dat de connectie tussen beide systeem een bepaalde controle uitvoert?
Swetseneggerdonderdag 31 januari 2013 @ 17:18
quote:
0s.gif Op donderdag 31 januari 2013 17:14 schreef Chandler het volgende:

[..]

Het veld van de 'op tellende' waarde? en verder lijkt mij niet dat er een stelregel is oid... maar logisch gezien pak je de velden die voor je applicatie het meest belangrijke zijn (dus waarmee je zoekt).

ben geen expert zoals glowmouse..

[..]

Je roept een externe url aan met allerlei post gegevens, dan neem ik aan dat de connectie tussen beide systeem een bepaalde controle uitvoert?
Omnikassa van de rabobank. Je post allerlei gegevens zoals return url (nu dus met sessie info), totaalbedrag,merchant ID, etc etc en die wordt gehashed met een secret key.

Lijkt me voldoende toch? Of moet ik nog wat met die sessie ID voor de verbinding van kassa -> webshop?
Chandlerdonderdag 31 januari 2013 @ 17:28
Nee, lijkt mij voldoende, vroeg mij alleen op opzet even af.
GlowMousedonderdag 31 januari 2013 @ 18:45
quote:
7s.gif Op donderdag 31 januari 2013 17:10 schreef Swetsenegger het volgende:
Is er een algemene stelregel voor welke kolommen een index zouden moeten hebben? Bijvoorbeeld altijd op kolommen die je gebruikt in JOINS of iets dergelijks?
Het hangt volledig van de queries uit, lees bv. het boek over High Performance MySQL over uitleg over indices.
Boze_Appeldonderdag 31 januari 2013 @ 19:25
quote:
7s.gif Op donderdag 31 januari 2013 17:10 schreef Swetsenegger het volgende:
Is er een algemene stelregel voor welke kolommen een index zouden moeten hebben? Bijvoorbeeld altijd op kolommen die je gebruikt in JOINS of iets dergelijks?
Je kan in MySQL de slow query log aanzetten en configgen om te checken welke queries eventueel vertraging opleveren in je applicatie of laten aangeven welke queries geen gebruik maken van indexes.

Als je een website maakt voor een lokale bakkerij zou ik er geen tijd in steken en gewoon je auto increment een primary geven. Het kan leuk zijn voor een oefening, maar de tijdswinst is zo marginaal bij kleine low traffic sites dat het de moeite niet loont om complexe indexes op te zetten.
papernotedonderdag 31 januari 2013 @ 19:48
quote:
0s.gif Op donderdag 31 januari 2013 17:18 schreef Swetsenegger het volgende:

[..]

Omnikassa van de rabobank. Je post allerlei gegevens zoals return url (nu dus met sessie info), totaalbedrag,merchant ID, etc etc en die wordt gehashed met een secret key.

Lijkt me voldoende toch? Of moet ik nog wat met die sessie ID voor de verbinding van kassa -> webshop?
Het meesturen van het sessie-ID naar de rabobank vind ik raar. De sessie is iets tussen jou en de bezoeker en daar heeft de rabobank niets mee te maken. Zodra de bezoeker terug komt op jouw website (door een redirect vanaf de rabobank) zou de browser van je bezoeker automatisch het sessie-cookie weer mee moeten sturen.
Swetseneggerdonderdag 31 januari 2013 @ 20:24
quote:
3s.gif Op donderdag 31 januari 2013 19:48 schreef papernote het volgende:

[..]

Het meesturen van het sessie-ID naar de rabobank vind ik raar. De sessie is iets tussen jou en de bezoeker en daar heeft de rabobank niets mee te maken. Zodra de bezoeker terug komt op jouw website (door een redirect vanaf de rabobank) zou de browser van je bezoeker automatisch het sessie-cookie weer mee moeten sturen.
De rabobank heeft er ook niets mee te maken, maar de pagina die de bestelling verwerkt wel.
De kassa heeft 2 return url's. Een URL waar de klant komt als die in de kassa op "klaar" klikt (normalReturnUrl), en 1 waar altijd een response heen gePOST wordt (automaticResponsUrl).

Het probleem van de eerste is dat je nooit zeker kan weten DAT de klant terug komt en is dus onbetrouwbaar voor het updaten van je order. Dat doe je dus op de automaticResponseUrl.

Wil ik op DIE pagina ook bij een geslaagde betaling de sessie van de winkelwagen 'unsetten' moet ik het sessieid wel in de automaticResponseUrl meesturen.

Maar ik heb nu voor de zekerheid de sessieID maar ge-mcrypt_encrypt voor hij naar de kassa gaat en hij wordt gedecrypt in de automaticResponseUrl. Dat lijkt me meer dan veilig genoeg :)
mstxdonderdag 31 januari 2013 @ 23:06
De winkelwagen kun je al legen op de pagina waar het formulier (die je doorstuurt naar omnikassa) opgebouwd wordt. Als het goed is is op dat moment je winkelwagen al omgezet naar een order en heb je die dus niet meer nodig.
Chandlervrijdag 1 februari 2013 @ 07:31
quote:
14s.gif Op donderdag 31 januari 2013 23:06 schreef mstx het volgende:
De winkelwagen kun je al legen op de pagina waar het formulier (die je doorstuurt naar omnikassa) opgebouwd wordt. Als het goed is is op dat moment je winkelwagen al omgezet naar een order en heb je die dus niet meer nodig.
Swets heeft wel gelijk want stel de betaling gaat niet goed, dan is het handig dat de winkelwagen nog gevuld is toch?
mstxvrijdag 1 februari 2013 @ 08:19
quote:
4s.gif Op vrijdag 1 februari 2013 07:31 schreef Chandler het volgende:

[..]

Swets heeft wel gelijk want stel de betaling gaat niet goed, dan is het handig dat de winkelwagen nog gevuld is toch?
Nee. Dan heb je in je account een onbetaalde order staan met een betaalknopje om het nog een keer te proberen.
Maar goed, dat ligt natuurlijk ook aan hoe je systeem werkt maar dit vind ik de meest logische manier.
Swetseneggervrijdag 1 februari 2013 @ 08:28
quote:
14s.gif Op donderdag 31 januari 2013 23:06 schreef mstx het volgende:
De winkelwagen kun je al legen op de pagina waar het formulier (die je doorstuurt naar omnikassa) opgebouwd wordt. Als het goed is is op dat moment je winkelwagen al omgezet naar een order en heb je die dus niet meer nodig.
Ik heb nu dat wanneer de betaling niet gelukt is, de items nog in de winkelwagen staan. Kan de klant direct een nieuwe order insturen.
quote:
0s.gif Op vrijdag 1 februari 2013 08:19 schreef mstx het volgende:

[..]

Nee. Dan heb je in je account een onbetaalde order staan met een betaalknopje om het nog een keer te proberen.
Maar goed, dat ligt natuurlijk ook aan hoe je systeem werkt maar dit vind ik de meest logische manier.
Eh ja, dan staat er dus 1 niet geactiveerde order en 1 wel geactiveerde order (als de 2e betaling lukt). Wat is precies het probleem? Zie ik wat over het hoofd?
mstxvrijdag 1 februari 2013 @ 08:35
quote:
0s.gif Op vrijdag 1 februari 2013 08:28 schreef Swetsenegger het volgende:

[..]

Eh ja, dan staat er dus 1 niet geactiveerde order en 1 wel geactiveerde order (als de 2e betaling lukt). Wat is precies het probleem?
"Probleem" is een groot woord, maar ik zou het fijner vinden als er in totaal maar 1 betaalde order bij mijn bestellingen staat als de betaling bij de 3e keer pas lukt, in plaats van 1 betaalde en 2 niet-betaalde. :)
Swetseneggervrijdag 1 februari 2013 @ 08:39
quote:
0s.gif Op vrijdag 1 februari 2013 08:35 schreef mstx het volgende:

[..]

"Probleem" is een groot woord, maar ik zou het fijner vinden als er in totaal maar 1 betaalde order bij mijn bestellingen staat als de betaling bij de 3e keer pas lukt, in plaats van 1 betaalde en 2 niet-betaalde. :)
Maar die niet betaalde toon ik uiteraard niet aan de klant, alleen de 'geactiveerde'.

Ik had inderdaad ook gewoon een 'mijn orders' pagina kunnen maken met een 'probeer opnieuw' knopje. Mijn ervaring is wel dat voor veel mensen webshops nog steeds 'eng' zijn en ze nog een keer door een bekende betaalstraat heen loodsen misschien sneller geprobeerd wordt.

Nou ja, het was een keuze. Achteraf met wat haken en ogen.
papernotezaterdag 2 februari 2013 @ 11:18
Persoonlijk vind ik het beter om één order te hebben, waar dan [0, n] (nul of meer) betalingen aan hangen. Als mensen een iDeal betaling annuleren omdat ze toch liever een overschrijving doen, dan lijkt het me raar als je daarvoor een nieuwe order aan maakt?
Swetseneggerzaterdag 2 februari 2013 @ 18:07
quote:
2s.gif Op zaterdag 2 februari 2013 11:18 schreef papernote het volgende:
Persoonlijk vind ik het beter om één order te hebben, waar dan [0, n] (nul of meer) betalingen aan hangen. Als mensen een iDeal betaling annuleren omdat ze toch liever een overschrijving doen, dan lijkt het me raar als je daarvoor een nieuwe order aan maakt?
Waarom? Het is gewoon een andere order. Ik ga toch niet dezelfde order 0 of meer keer laten afrekenen? Dat vind ik onlogisch. Een order kan WEL of NIET betaald worden dus er zeker geen n relatie mbt betalen.

Daarnaast zijn er allerlei terugkoppelingen van de internet kassa, onder andere:

"Authorization limit exceeded"
"Authorization refused"
"Invalid card number or invalid Card Security Code"
"Fraud suspicion"
"Security breach detected, transaction stopped"
"The number of attempts to enter the card number has been exceeded"

Die wil ik eigenlijk wel opgeslagen hebben bij desbetreffende orders.

[ Bericht 13% gewijzigd door Swetsenegger op 02-02-2013 18:13:12 ]
mstxzaterdag 2 februari 2013 @ 18:20
quote:
2s.gif Op zaterdag 2 februari 2013 11:18 schreef papernote het volgende:
Persoonlijk vind ik het beter om één order te hebben, waar dan [0, n] (nul of meer) betalingen aan hangen. Als mensen een iDeal betaling annuleren omdat ze toch liever een overschrijving doen, dan lijkt het me raar als je daarvoor een nieuwe order aan maakt?
Zo doe ik het inderdaad ook. En die codes die hierboven worden genoemd worden dan bij de betaling/transactie opgeslagen.
papernotezaterdag 2 februari 2013 @ 18:21
quote:
0s.gif Op zaterdag 2 februari 2013 18:07 schreef Swetsenegger het volgende:

[..]

Waarom? Het is gewoon een andere order. Ik ga toch niet dezelfde order 0 of meer keer laten afrekenen? Dat vind ik onlogisch. Een order kan WEL of NIET betaald worden dus er zeker geen n relatie mbt betalen.

Daarnaast zijn er allerlei terugkoppelingen van de internet kassa, onder andere:

"Authorization limit exceeded"
"Authorization refused"
"Invalid card number or invalid Card Security Code"
"Fraud suspicion"
"Security breach detected, transaction stopped"
"The number of attempts to enter the card number has been exceeded"

Die wil ik eigenlijk wel opgeslagen hebben bij desbetreffende orders.
Iemand kan toch één order betalen met een cadeaubon en het restant met iDeal? Dan heb je twee betalingen. Wellicht niet in je huidige opzet, maar wie weet ga je ooit nog cadeaubonnen uitgeven, de vvv-cadeaubon accepteren, enz...

Terugkoppelingen sla je ook op als een betaling, maar dan met een andere (mislukte) status. Zo kun je bij één order de historie van betalingen terugzien. Een order is pas volledig betaald als de som van alle betalingen met de status "succesvol" gelijk is aan het totaal van de order.

Ik zou niet zeggen dat het een andere order is. De klant is nog steeds met dezelfde order bezig en vanuit zijn opzicht is het natuurlijk wel gewoon dezelfde order. Het lijkt me ook verwarrend voor de klant als zijn betaling mislukt hij een nieuw ordernummer krijgt voor hetzelfde.
Swetseneggerzaterdag 2 februari 2013 @ 18:28
quote:
2s.gif Op zaterdag 2 februari 2013 18:21 schreef papernote het volgende:

[..]

Iemand kan toch één order betalen met een cadeaubon en het restant met iDeal?
Nee :)

quote:
Dan heb je twee betalingen. Wellicht niet in je huidige opzet, maar wie weet ga je ooit nog cadeaubonnen uitgeven, de vvv-cadeaubon accepteren, enz...
In een webshop? Hoe wil je dat doen?
quote:
Terugkoppelingen sla je ook op als een betaling, maar dan met een andere (mislukte) status. Zo kun je bij één order de historie van betalingen terugzien. Een order is pas volledig betaald als de som van alle betalingen met de status "succesvol" gelijk is aan het totaal van de order.
Tja, ik heb er voor gekozen dat het een nieuwe order word. Overigens net als elke internet kassa ook verlangt. Ik moet bij elke order een transactie reference meesturen die uniek moet zijn.

quote:
Ik zou niet zeggen dat het een andere order is. De klant is nog steeds met dezelfde order bezig en vanuit zijn opzicht is het natuurlijk wel gewoon dezelfde order. Het lijkt me ook verwarrend voor de klant als zijn betaling mislukt hij een nieuw ordernummer krijgt voor hetzelfde.
Nee, want de kassaomgeving is anders dan de webshop omgeving en het is heel duidelijk wanneer je betaling niet slaagt.

Hoe dan ook, ik vind dit het meest logisch en handig.
Swetseneggerzaterdag 2 februari 2013 @ 19:01
Overigens zou ik eventuele korting/tegoedbonnen eerder opnemen in de order als product met een negatief bedrag waardoor je simpelweg een lager totaalbedrag gaat afrekenen. Ik zou nooit 1 order in "2 delen" (laten) afrekenen.

Maar dat terzijde.
papernotezondag 3 februari 2013 @ 09:58
Hey Swets, het is niet dat ik je probeer te overtuigen hoor. Ik heb de software geschreven voor een webshop die in Nederland alleen al 1.000+ iDeal betalingen per dag via de Rabobank verwerkte en in het buitenland vanalles via Ogone. Vanuit die ervaring vertel ik je hoe ik het heb opgelost, hoe je het zelf doet mag je natuurlijk zelf weten. Op mijn keuzes zal ook genoeg aan te merken zijn.

Cadeaubonnen werden bij ons digitaal ingeleverd en als deelbetaling ingevoerd. VVV-bonnen werden per post opgestuurd.

Het unieke transactie-id dat je bij elke betaling moet meegeven is dus niet gelijk aan het order-id. Maar de betalingen-tabel werkt als koppel-tabel tussen betaling-id en order-id. Elke nieuwe betaling krijgt een nieuw id en wordt aan een order gekoppeld. Het voordeel hiervan is dat je bij één order ook overzicht krijgt van mislukte betalingen, je een klant kunt benaderen als er problemen zijn en de betaling voor een order alsnog compleet krijgen.

Ikzelf heb iDeal Professional (heet dat nog zo?) geďmplementeerd, waarbij webshop en kassa één geheel zijn. Omnikassa lijkt iets anders te werken, omdat ze de iDeal implementatie al voor je gedaan hebben.
webbyplusdinsdag 5 februari 2013 @ 09:18
Vraagje; Voor school moet ik regelmatig Word/Excel-documenten maken/aanpassen. Kent iemand een soort van "repository"/opslag tooltje in PHP waarmee ik op mijn site makkelijk documenten kan uploaden en bewerken?
Tijndinsdag 5 februari 2013 @ 09:23
Google Docs?
KomtTijd...dinsdag 5 februari 2013 @ 09:27
dropbox?
mega.co.nz?
webbyplusdinsdag 5 februari 2013 @ 09:28
quote:
10s.gif Op dinsdag 5 februari 2013 09:23 schreef Tijn het volgende:
Google Docs?
Ken ik, maar wil alles graag in eigen beheer hebben...
Swetseneggerdinsdag 5 februari 2013 @ 09:31
Korte vraag,

Zijn 2500 tot 6000 queries per seconden als "ernstig veel" te classificeren voor een SQL server?
En indien ja, hoe kan je dat aantal verminderen zonder het obvious "minder queries per pageview gebruiken"?

Ik bedoel dus cache oid?
mstxdinsdag 5 februari 2013 @ 09:37
Geen idee of dat ernstig veel is, maar door dingen met APC/memcached dingen te cachen kun je dat aantal in de meeste gevallen wel drastisch verlagen.
Tijndinsdag 5 februari 2013 @ 09:39
quote:
0s.gif Op dinsdag 5 februari 2013 09:28 schreef webbyplus het volgende:

[..]

Ken ik, maar wil alles graag in eigen beheer hebben...
Dus je wil zelf Word en Excel gaan nabouwen in PHP?
webbyplusdinsdag 5 februari 2013 @ 09:40
quote:
5s.gif Op dinsdag 5 februari 2013 09:39 schreef Tijn het volgende:
Dus je wil zelf Word en Excel gaan nabouwen in PHP?
Nee, dat gaat misschien te ver ;-)
Ik wil een bestand kunnen uploaden, downloaden, eventueel de status "uitgecheckt" kunnen geven als ik hem bewerk. De bewerking van de bestanden doe ik gewoon lokaal.
Tijndinsdag 5 februari 2013 @ 09:45
Ah zo. Geen idee of er zoiets bestaat, maar zelf maken is niet erg ingewikkeld lijkt me :)
webbyplusdinsdag 5 februari 2013 @ 09:45
quote:
14s.gif Op dinsdag 5 februari 2013 09:45 schreef Tijn het volgende:
Ah zo. Geen idee of er zoiets bestaat, maar zelf maken is niet erg ingewikkeld lijkt me
Alsof je gedachten kunt lezen; ik dacht al bij mezelf, waarom niet zelf maken...
Weer een hobbyprojectje er bij :)
rekenwonderdinsdag 5 februari 2013 @ 10:26
quote:
1s.gif Op dinsdag 5 februari 2013 09:31 schreef Swetsenegger het volgende:
Korte vraag,

Zijn 2500 tot 6000 queries per seconden als "ernstig veel" te classificeren voor een SQL server?
En indien ja, hoe kan je dat aantal verminderen zonder het obvious "minder queries per pageview gebruiken"?
Ligt maar net aan de complexiteit van de queries. Meten = weten :-)
Swetseneggerdinsdag 5 februari 2013 @ 10:27
quote:
0s.gif Op dinsdag 5 februari 2013 10:26 schreef rekenwonder het volgende:

[..]

Ligt maar net aan de complexiteit van de queries. Meten = weten :-)
Ja dat begrijp ik, maar in het algemeen bedoelde ik. We hebben hier een performance probleem en ICT roept elke keer een andere reden. Nu dus weer het aantal queries.
rekenwonderdinsdag 5 februari 2013 @ 14:41
Wel, dat is het lastige. Er valt niets algemeens over te zeggen. Er hoeft maar één query tussen te zitten die een seconde lang een table gelockt heeft en je bent de sjaak (gechargeerd).

Wat gisteren bij een bepaald aantal queries/sec goed performde, doet dat vandaag bijvoorbeeld niet omdat er een bepaalde threshold overschreden is.

Wat voor bak is het? Wat zegt de profiler?
wobbeldinsdag 5 februari 2013 @ 15:53
Er zijn allemaal manieren voor, maar wat is nou de beste manier om bepaalde waardes te zoeken in een array?

Ik heb de volgende waardes, en wil alles selecteren wat begint met "VD20130130", en de rest hoeft hij niet weer te geven.

VD201301281628.jpg
VD201301281630.jpg
VD201301281632.jpg
VD201301281634.jpg
VD201301301020.jpg
VD201301301044.jpg
VD201301301146.jpg
KomtTijd...dinsdag 5 februari 2013 @ 15:55
preg_match? preg_grep
Tijndinsdag 5 februari 2013 @ 16:01
quote:
14s.gif Op dinsdag 5 februari 2013 15:55 schreef KomtTijd... het volgende:
preg_match? preg_grep
Ik zou een regex proberen te vermijden als het niet hoeft. In dit geval kun je ook met strpos wel uit de voeten.
papernotedinsdag 5 februari 2013 @ 17:54
quote:
0s.gif Op dinsdag 5 februari 2013 15:53 schreef wobbel het volgende:
Er zijn allemaal manieren voor, maar wat is nou de beste manier om bepaalde waardes te zoeken in een array?

Ik heb de volgende waardes, en wil alles selecteren wat begint met "VD20130130", en de rest hoeft hij niet weer te geven.

VD201301281628.jpg
VD201301281630.jpg
VD201301281632.jpg
VD201301281634.jpg
VD201301301020.jpg
VD201301301044.jpg
VD201301301146.jpg
array_filter
rekenwonderdinsdag 5 februari 2013 @ 18:08
Je kan natuurlijk ook filteren bij de bron. Gebruik je glob() om de lijst van - naar ik aanneem - bestanden op te halen? Dan kan je daar al een pattern opgeven.
Tijndinsdag 5 februari 2013 @ 18:51
Ja, glob() is cool.
#ANONIEMdinsdag 5 februari 2013 @ 18:53
Glob _O_
urselmaandag 11 februari 2013 @ 02:47
Enige tijd geleden kwam ik ergens (geen flauw idee meer waar, volgens mij via twitter :') ) een link tegen naar een PHP library die van de meeste social media's de API's hadden samengevat. Facebook, Twitter, Google, Foursquare etc. zaten hierin verwerkt.

Nu raad je het al, blijkbaar geen bookmark hierop gezet en niet meer terug te vinden in mijn favorieten. ;(
Iemand hier toevallig bekend mee welke ik bedoel?
Maringomaandag 11 februari 2013 @ 05:54
quote:
0s.gif Op maandag 11 februari 2013 02:47 schreef ursel het volgende:
Enige tijd geleden kwam ik ergens (geen flauw idee meer waar, volgens mij via twitter :') ) een link tegen naar een PHP library die van de meeste social media's de API's hadden samengevat. Facebook, Twitter, Google, Foursquare etc. zaten hierin verwerkt.

Nu raad je het al, blijkbaar geen bookmark hierop gezet en niet meer terug te vinden in mijn favorieten. ;(
Iemand hier toevallig bekend mee welke ik bedoel?
HybridAuth?
http://sourceforge.net/projects/hybridauth/
urselmaandag 11 februari 2013 @ 09:56
Kwam die idd ook nog tegen hierna. Tis niet degene die ik zocht eigenlijk, maar volgens mij doet die ook zo goed als hetzelfde. Ga er even mee stoeien. Bedankt in ieder geval
mscholdinsdag 12 februari 2013 @ 17:16
even een vraagje:
ik probeer php een plaatje uit te laten poepen, wat op de ene manier wel werkt en de andere niet...
ik heb de volgende, sterk versimpelde, code:
1
2
3
4
5
<?php
     header
("Content-type:image/png");
     
$im     imagecreatefrompng("./images/Horizontal Banner2.png");
    
imagepng($im);
?>

als ik het op bovenstaande manier doe krijg ik allemaal gibberish in IE9, op chrome gaat het goed

als ik imagejpeg en imagecreatefromjpeg (met een jpeg variant van het plaatje) doe, dan werkt het wel correct

doe ik wat verkeerd? zit er een rare quirck in IE9 + imagepng() functie?
GlowMousedinsdag 12 februari 2013 @ 17:26
heb je een url? Waarom gebruik je geen readfile? Spatie voor image/png? Type met een hoofdletter?
mscholdinsdag 12 februari 2013 @ 17:29
quote:
0s.gif Op dinsdag 12 februari 2013 17:26 schreef GlowMouse het volgende:
heb je een url? Waarom gebruik je geen readfile? Spatie voor image/png? Type met een hoofdletter?
ik heb geen live test url
ik wil er tekst in plaatsen met GD, maar gezien hij zo raar deed heb ik het even vereenvoudigd..
de spatie had ik juist weggehaald (in de hoop dat het dan wel werkte :D)

nouja... schiet mij maar lek, nu doettie ut wel.. en dan heb ik niks veranderd.. :') :(
KomtTijd...dinsdag 12 februari 2013 @ 17:33
ctrl+f5 doen als je met zulke output bezig bent. Images worden automatisch gecached.
mscholdinsdag 12 februari 2013 @ 17:35
quote:
14s.gif Op dinsdag 12 februari 2013 17:33 schreef KomtTijd... het volgende:
ctrl+f5 doen als je met zulke output bezig bent. Images worden automatisch gecached.
ga ik zeker (nog vaker) doen.. (al kwam er geen plaatje maar echt rauwe tekst, incl png header)
Chandlervrijdag 15 februari 2013 @ 19:20
Weet iemand ook een script/methode om video's te checken zonder ffmpeg (deze extensie is niet geďnstalleerd op de webserver en wordt door de hoster ook niet ondersteund/geďnstalleerd!

En dan doel ik natuurlijk niet op de content type :)

[edit]
Gevonden getID3 werkt perfect, nu nog kijken welke filmpjes hij allemaal kan detecteren!
http://getid3.sourceforge.net/

:)

[ Bericht 31% gewijzigd door Chandler op 15-02-2013 23:24:30 ]
#ANONIEMzaterdag 16 februari 2013 @ 12:28
Mysql doet eigenwijs. Ik heb een tabel die er zo uit ziet
1
2
3
4
5
6
7
CREATE TABLE `user_statics` (
    `users` INT(10) NULL DEFAULT NULL,
    `time` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
    `server` VARCHAR(64) NOT NULL DEFAULT ''
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB;

maar nu als ik daar wat ingooi met

1INSERT INTO user_statics (users, server) SELECT `currentusers`, `server` FROM server WHERE VERSION LIKE 'unreal%'

dan klopt het veldje 'time' in de tabel user_statics niet. Ik wil dat er een unix timestamp in komt (wat ook hoort dacht ik?) Maar hij zet er heel leuk 2013-02-16 12:28:22 neer :( Hoe fix ik dat?

[ Bericht 0% gewijzigd door #ANONIEM op 16-02-2013 12:29:27 ]
GlowMousezaterdag 16 februari 2013 @ 12:50
SELECT UNIX_TIMESTAMP(time) FROM user_statics
Farenjizaterdag 16 februari 2013 @ 12:58
Er komt gewoon een timestamp in maar mysql converteert die bij ophalen automatisch van UTC naar een leesbare datum volgens de tijdzone-instellingen van de server. En bij opslaan converteert ie de meegegeven datum op dezelfde manier naar UTC.

Gevolg is dus ook dat mocht je de tijdzone van de server veranderen, de tijden in de database meeveranderen. Dat kan zijn wat je wil, maar vaak wil je dat niet. Als je zeker wil dat er altijd dezelfde datum/tijd in blijft staan die je erin hebt gestopt dan moet je een datetime ipv timestamp gebruiken. Omrekenen naar een echte timestamp is voor beide kolomtypes hetzelfde, zoals glowmouse zegt.
#ANONIEMzaterdag 16 februari 2013 @ 13:21
quote:
14s.gif Op zaterdag 16 februari 2013 12:50 schreef GlowMouse het volgende:
SELECT UNIX_TIMESTAMP(time) FROM user_statics
_O_ thx.
GlowMousezaterdag 16 februari 2013 @ 13:26
En lees wat Farenji zegt.
#ANONIEMzaterdag 16 februari 2013 @ 15:21
quote:
0s.gif Op zaterdag 16 februari 2013 12:58 schreef Farenji het volgende:
Er komt gewoon een timestamp in maar mysql converteert die bij ophalen automatisch van UTC naar een leesbare datum volgens de tijdzone-instellingen van de server. En bij opslaan converteert ie de meegegeven datum op dezelfde manier naar UTC.

Gevolg is dus ook dat mocht je de tijdzone van de server veranderen, de tijden in de database meeveranderen. Dat kan zijn wat je wil, maar vaak wil je dat niet. Als je zeker wil dat er altijd dezelfde datum/tijd in blijft staan die je erin hebt gestopt dan moet je een datetime ipv timestamp gebruiken. Omrekenen naar een echte timestamp is voor beide kolomtypes hetzelfde, zoals glowmouse zegt.
timezone veranderen, is dat ook als er zomertijd / wintertijd ingaat, of ziet mysql dat zo?
Wooninckdonderdag 21 februari 2013 @ 16:01
Vraagje.. ik probeer momenteel een PHP script met MySQL database te installeren, maar hij blijft maar een Failed opening required error aangeven, terwijl de path goed is, en het mapje gewoon bestaat. Iemand enig idee hoe ik dit op kan lossen?

1
2
3
4
5
<?php
Warning
: require(/app/config/boot.php) [function.require]: failed to open streamNo such file or directory in /home/.../domains/.../public_html/share/index.php on line 7

Fatal error
: require() [function.require]: Failed opening required '/app/config/boot.php' (include_path='.:/usr/local/lib/php'in /home/.../domains/.../public_html/share/index.php on line 7
?>

index.php:

1
2
3
4
5
6
<?php
define
('APPPATH'realpath(__DIR__).'/app');
define('APPDIR'realpath(__DIR__).'/');

require 
APPPATH.'/config/boot.php';
?>
Tijndonderdag 21 februari 2013 @ 16:14
Wat krijg je hieruit?

1
2
3
<?php
echo __DIR__;
?>

en

1
2
3
<?php
echo realpath(__DIR__);
?>
Wooninckdonderdag 21 februari 2013 @ 16:34
quote:
5s.gif Op donderdag 21 februari 2013 16:14 schreef Tijn het volgende:
Wat krijg je hieruit?
[ code verwijderd ]

en
[ code verwijderd ]

Ik ben niet bepaald een PHP ster, waar wil je dat ik dit invoer? :@
Tijndonderdag 21 februari 2013 @ 16:50
Ik zou gewoon een bestandje maken op de plek waar je nu index.php ook hebt staan en vervolgens dat bestandje opvragen.

Het lijkt er namelijk op dat __DIR__ niet wordt gevuld, aangezien er wordt geprobeerd om "/app/config/boot.php" te includen. Daar zou nog iets voor moeten staan (namelijk de plek op je schijf waar dit allemaal staat). Ik neem ten minste aan dat je webapplicatie niet in de root van je partitie staat, wel?
Wooninckdonderdag 21 februari 2013 @ 17:01
quote:
2s.gif Op donderdag 21 februari 2013 16:50 schreef Tijn het volgende:
Ik zou gewoon een bestandje maken op de plek waar je nu index.php ook hebt staan en vervolgens dat bestandje opvragen.

Het lijkt er namelijk op dat __DIR__ niet wordt gevuld, aangezien er wordt geprobeerd om "/app/config/boot.php" te includen. Daar zou nog iets voor moeten staan (namelijk de plek op je schijf waar dit allemaal staat). Ik neem ten minste aan dat je webapplicatie niet in de root van je partitie staat, wel?
Correct, hij staat op een subdomein. Het is overigens nog niet gelukt.
mscholvrijdag 22 februari 2013 @ 12:21
ik ben eens wat aan het proberen met classes (OOP is nooit echt mijn ding geweest) en vraag mij af of de basis opzet correct is:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
class User {
    public 
$RealFirstName;
    public 
$RealLastName;
    public 
$RegDate;
    public 
$Nickname;
    public 
$Email;
    
    function 
AddUser($Fname,$Lname,$Nick,$Mail)
    {
        
$this->RealFirstName $Fname;
        
$this->RealLastName $Lname;
        
$this->RegDate date("d-m-Y");
        
$this->Nickname $Nick;
        
$this->Email $Mail;
    }
    
    function 
DelUser()
    {
        
$this->RealFirstName "";
        
$this->RealLastName "";
        
$this->Nickname "";
        
$this->Email "";
        
$this->RegDate "";
    }
    
    function 
EditUser()
    {
        
//pas gebruiker aan
    
}
    
    function 
GetNickname()
    {
        return 
$this->Nickname;
    }

    function 
GetRealname()
    {
        
$realname $this->RealFirstName." ".$this->RealLastName;
        return 
$realname;
    }

    function 
GetEmail()
    {
        return 
$this->Email;
    }

    function 
GetRegdate()
    {
        return 
$this->RegDate;
    }
}

$user = new User();
$user->AddUser("John","doe","Jdoe","Doe@Joh.nl");
?>
dus afgezien van escapes enzo, klopt deze opzet?
rekenwondervrijdag 22 februari 2013 @ 14:55
quote:
0s.gif Op vrijdag 22 februari 2013 12:21 schreef mschol het volgende:
ik ben eens wat aan het proberen met classes (OOP is nooit echt mijn ding geweest) en vraag mij af of de basis opzet correct is:
[ code verwijderd ]

dus afgezien van escapes enzo, klopt deze opzet?
In wezen wel. De grote vraag van mijn kant is: wat is het voor een object? Dan kan je er functioneel of architectuur-technisch pas iets zinnigs over zeggen.

Paar opmerkingen:

• Member variabelen maak je over het algemeen private of protected (data-hiding in OOP)
• Ik zou de methods (functies) expliciet van een visibility scope voorzien. Dus in dit geval waarschijnlijk public.
• Check even het hoofdstukje in de PHP manual over naming conventions van methods en variabelen.
mscholvrijdag 22 februari 2013 @ 15:10
quote:
0s.gif Op vrijdag 22 februari 2013 14:55 schreef rekenwonder het volgende:

[..]

In wezen wel. De grote vraag van mijn kant is: wat is het voor een object? Dan kan je er functioneel of architectuur-technisch pas iets zinnigs over zeggen.
dit is voor mij puur een zeer simpel probeerseltje, waarmee ik dan een gebruiker (b.v. van een site) kan aanmaken, informatie kan tonen en weer kan verwijderen...
dat de data niet in een database staat maakt voor dit voorbeeld niet uit, gaat mij puur even om het princiepe. Ik wil wel proberen in OOP dingen te gaan doen (al is dat niet professioneel) maar ik wil voor mijzelf wat concrete en simpele voorbeelden hebben van waaruit ik verder kan gaan

quote:
Paar opmerkingen:

• Member variabelen maak je over het algemeen private of protected (data-hiding in OOP)
• Ik zou de methods (functies) expliciet van een visibility scope voorzien. Dus in dit geval waarschijnlijk public.
• Check even het hoofdstukje in de PHP manual over naming conventions van methods en variabelen.
Ik ga het doornemen.., bedankt iig :)

ooit in een grijs verleden is het mij wel uitgelegd (wat ik dan wel snapte), maar in de praktijk brengen lukte mij toen niet..

tevens moesten we toen ook het MVC model erbij betrekken, en ik vermoed dat ik daarmee in de knoop raakte ofzo.. (ik vond het onlogisch en omslachtig :P)
papernotezaterdag 23 februari 2013 @ 13:03
quote:
0s.gif Op vrijdag 22 februari 2013 12:21 schreef mschol het volgende:
ik ben eens wat aan het proberen met classes (OOP is nooit echt mijn ding geweest) en vraag mij af of de basis opzet correct is:
[ code verwijderd ]

dus afgezien van escapes enzo, klopt deze opzet?
Wat opmerkingen:

- addUser is feitelijk gewoon de constructor, dus die functie moet weg. Vervang hem door __construct()
- delUser is overbodig
- editUser zou ik weghalen en vervangen door set-methoden (setRealFirstName(), setRealLastName, enz...)
- ik mis de get-functies voor firstname en lastname
- let op de benaming van alles (consistent gebruik van hoofdletters). Ik vind het zelf mooier als functies en variabelen lowerCamelCase zijn en classes UpperCamelCase.
- gebruik public/private/protected

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
class User
{
  private 
$realFirstName_;
  
// ...

  
public function __construct($realFirstName, ...) {
    
$this->realFirstName_ $realFirstName;
    
// ...
  
}

  public function 
getRealFirstName() { return $this->realFirstName_; }
  public function 
setRealFirstName($realFirstName) { $this->realFirstName_ $realFirstName; }

  
// ...
}

$user = new User('Jan''Modaal', ...);
?>
raptorixzondag 24 februari 2013 @ 10:48
quote:
0s.gif Op dinsdag 5 februari 2013 09:18 schreef webbyplus het volgende:
Vraagje; Voor school moet ik regelmatig Word/Excel-documenten maken/aanpassen. Kent iemand een soort van "repository"/opslag tooltje in PHP waarmee ik op mijn site makkelijk documenten kan uploaden en bewerken?
Weet niet of er een PHP library is, maar de c# library heb ik laatst gebruikt, en dat ging best fijn.
raptorixzondag 24 februari 2013 @ 10:50
quote:
1s.gif Op dinsdag 5 februari 2013 09:31 schreef Swetsenegger het volgende:
Korte vraag,

Zijn 2500 tot 6000 queries per seconden als "ernstig veel" te classificeren voor een SQL server?
En indien ja, hoe kan je dat aantal verminderen zonder het obvious "minder queries per pageview gebruiken"?

Ik bedoel dus cache oid?
Ja dat is behoorlijk veel, klinkt als een slechte loop ergens in de software.
raptorixzondag 24 februari 2013 @ 10:55
quote:
2s.gif Op zaterdag 23 februari 2013 13:03 schreef papernote het volgende:

[..]

Wat opmerkingen:

- addUser is feitelijk gewoon de constructor, dus die functie moet weg. Vervang hem door __construct()
- delUser is overbodig
- editUser zou ik weghalen en vervangen door set-methoden (setRealFirstName(), setRealLastName, enz...)
- ik mis de get-functies voor firstname en lastname
- let op de benaming van alles (consistent gebruik van hoofdletters). Ik vind het zelf mooier als functies en variabelen lowerCamelCase zijn en classes UpperCamelCase.
- gebruik public/private/protected
[ code verwijderd ]

Eens, ook zou ik de Get prefix niet gebruiken als het om een property gaat, get zou ik hooguit gebruiken wanneer er een speciale operatie zou moeten plaatsvinden die nog eens een extra handeling doet om iets buiten het object op te halen.
TwenteFCmaandag 25 februari 2013 @ 00:30
quote:
0s.gif Op zondag 24 februari 2013 10:50 schreef raptorix het volgende:

[..]

Ja dat is behoorlijk veel, klinkt als een slechte loop ergens in de software.
Ligt er aan natuurlijk, als dit gebeurt wanneer er 5 mensen actief zijn op de website, dan wel natuurlijk.
raptorixmaandag 25 februari 2013 @ 08:34
quote:
19s.gif Op maandag 25 februari 2013 00:30 schreef TwenteFC het volgende:

[..]

Ligt er aan natuurlijk, als dit gebeurt wanneer er 5 mensen actief zijn op de website, dan wel natuurlijk.
Uiteraard, maar dan nog zijn duizenden queries per seconde idioot hoog, ik zit naast de funda beheerders, kan wel eens vragen hoeveel queries per seconde het db cluster pakt, hoewel tegenwoordig veel gebruik gemaakt word van SOLR indexes.
webbyplusdinsdag 26 februari 2013 @ 12:24
Hallo, zie bijgaande tabel mappen;
treemaken.png

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?
stefanhaandinsdag 26 februari 2013 @ 12:28
quote:
0s.gif Op dinsdag 26 februari 2013 12:24 schreef webbyplus het volgende:
Hallo, zie bijgaande tabel mappen;
[ afbeelding ]

Iemand zin in deze uitdaging?
het is een hulptopic, geen topic waar anderen jouw code geheel voor jou schrijven.
webbyplusdinsdag 26 februari 2013 @ 12:30
quote:
14s.gif Op dinsdag 26 februari 2013 12:28 schreef stefanhaan het volgende:
het is een hulptopic, geen topic waar anderen jouw code geheel voor jou schrijven.
dat vraag ik ook niet :) Er moet blijkbaar een itereterend stukje code worden geschreven om steeds de submenus op te halen en ik kom er niet uit. Dus ik vraag om hulp, een duw in de goede richting, maar hoef geen volledige uitgewerkt code...
Tijndinsdag 26 februari 2013 @ 12:30
Wat is je vraag, webbyplus? Wat heb je al? Waar loop je tegenaan?
stefanhaandinsdag 26 februari 2013 @ 12:30
quote:
0s.gif Op dinsdag 26 februari 2013 12:30 schreef webbyplus het volgende:

[..]

dat vraag ik ook niet :) Er moet blijkbaar een itereterend stukje code worden geschreven om steeds de submenus op te halen en ik kom er niet uit. Dus ik vraag om hulp, een duw in de goede richting, maar hoef geen volledige uitgewerkt code...
dan moet je ook een daadwerkelijke vraag stellen, of zeggen wat je probleem is. Zoals tijn aangeeft.
quote:
5s.gif Op dinsdag 26 februari 2013 12:30 schreef Tijn het volgende:
Wat is je vraag, webbyplus? Wat heb je al? Waar loop je tegenaan?
Rockfiredinsdag 26 februari 2013 @ 12:38
Waarom heb je een kolom haschildren en level? Dat kun je toch allemaal afleiden uit de kolom parent?
Tijndinsdag 26 februari 2013 @ 12:39
Overigens heb je "haschildren" en "level" natuurlijk helemaal niet nodig. Aan het id van de parent heb je genoeg om deze structuur te maken.
Tijndinsdag 26 februari 2013 @ 12:39
quote:
0s.gif Op dinsdag 26 februari 2013 12:38 schreef Rockfire het volgende:
Waarom heb je een kolom haschildren en level? Dat kun je toch allemaal afleiden uit de kolom parent?
Ja, dat zeg ik :')
Rockfiredinsdag 26 februari 2013 @ 12:40
quote:
10s.gif Op dinsdag 26 februari 2013 12:39 schreef Tijn het volgende:

[..]

Ja, dat zeg ik :')
gmta ;)
Tijndinsdag 26 februari 2013 @ 12:42
Ik zou denk ik een functie maken om alle mappen van een bepaalde parent op te halen. Dan begin je met alle mappen die parent null hebben en daarna loop je door je resultaten en haal je steeds de submappen bij elke parent op.

Dat zorgt misschien wel voor een hoop queries. Simpele queries, maar toch. Het kan vast ook met 1 geniale query die alles combineert, maar zo'n held met SQL ben ik niet.
KomtTijd...dinsdag 26 februari 2013 @ 13:26
Ik zou `id` left-joinen op `parentmap` om erachter te komen of een map children heeft. En als dat het geval is, voor die map de query herhalen met where `parentid` = thisid
The_Terminatordinsdag 26 februari 2013 @ 13:32
quote:
10s.gif Op dinsdag 26 februari 2013 12:42 schreef Tijn het volgende:
Ik zou denk ik een functie maken om alle mappen van een bepaalde parent op te halen. Dan begin je met alle mappen die parent null hebben en daarna loop je door je resultaten en haal je steeds de submappen bij elke parent op.

Dat zorgt misschien wel voor een hoop queries. Simpele queries, maar toch. Het kan vast ook met 1 geniale query die alles combineert, maar zo'n held met SQL ben ik niet.
Een enkele query is lastig aangzien de boom ergens in de PHP code opgebouwd zou moeten worden. Zoiets als dit is het beste te realiseren dmv een recursieve functie die steeds een stap dieper gaat.
Chandlerdinsdag 26 februari 2013 @ 13:41
En dan is het misschien handig zeker bij grote boom structuren om te gaan cachen ;)
The_Terminatordinsdag 26 februari 2013 @ 14:01
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?
Onderstaande heb ik niet getest. Zal theoretisch hetzelfde als je voorbeeld moeten outputten.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
print listMappen();

function 
listMappen($master_id 0$depth 1) {
    
$mappen_output '';
    
    if(
is_numeric($master_id)) {
        
$res mysql_query("SELECT id, parentmap, mapname
                            FROM mappen
                            WHERE parentmap = " 
$master_id)or die("Fatal error: ".mysql_error());
                                     
        while(
$row mysql_fetch_array($res)) {
           
$mappen_output .= str_repeat('-----'$depth) . htmlentities($row['mapname']) . '<br />';
           
$mappen_output .= listMappen($row['id'], $depth 1);
        }
    }
    
    return 
$mappen_output;
}
?>
KomtTijd...dinsdag 26 februari 2013 @ 14:07
quote:
0s.gif Op dinsdag 26 februari 2013 14:01 schreef The_Terminator het volgende:

[..]

mysql_query()

The_Terminatordinsdag 26 februari 2013 @ 14:07
quote:
9s.gif Op dinsdag 26 februari 2013 14:07 schreef KomtTijd... het volgende:

[..]

Dikke boei. Het is maar een voorbeeld.
Crutchdinsdag 26 februari 2013 @ 14:22
Lekker voorbeeld dan.
The_Terminatordinsdag 26 februari 2013 @ 15:21
quote:
9s.gif Op dinsdag 26 februari 2013 14:22 schreef Crutch het volgende:
Lekker voorbeeld dan.
Dan post je maar een betere.
Maringodinsdag 26 februari 2013 @ 15:30
quote:
9s.gif Op dinsdag 26 februari 2013 15:21 schreef The_Terminator het volgende:

[..]

Dan post je maar een betere.
1
2
3
4
5
6
7
8
9
10
11
12
<?php 
        $dbh = new PDO("mysql:host=".$address.";dbname=".$dbname, $user, $password);
        $sql = $dbh->prepare('    
            SELECT x-as, y-as, z-as
            FROM locations
            WHERE z-as > steen
        ');    
        if($sql->exec()){
            $result = $sql->fetch();
            // Code
        }
?>

http://php.net/manual/en/function.mysql-db-query.php
The_Terminatordinsdag 26 februari 2013 @ 15:47
quote:
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.