FOK!forum / Digital Corner / [PHP/(My)SQL] voor dummies #92
PiRANiAdonderdag 14 juli 2011 @ 14:45
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
Dokaydonderdag 14 juli 2011 @ 16:14
Al gelukt met while loop lus :)

[ Bericht 48% gewijzigd door Dokay op 14-07-2011 20:28:37 ]
QBaydonderdag 14 juli 2011 @ 16:59
quote:
0s.gif Op donderdag 14 juli 2011 16:14 schreef Dokay het volgende:
Hallo Fokkertjes, hoop dat iemand mij hier uit de brand kan helpen;
Ik wil dit script laten loopen totdat het de laatste record uit de tabel CSVimport heeft verwerkt. De primary key is 'code'. Hij moet dus bij de WHERE statement dit van 1 tot 300 doen.. hoe krijg ik dit voor elkaar? Kom er niet uit.. :/
[ code verwijderd ]

WHERE code >= 0 AND code <= 300 gebruiken? Dat pakt alle records waarvan code groter of gelijk is aan 0 en kleiner of gelijk aan 300.
Dokaydonderdag 14 juli 2011 @ 17:12
quote:
0s.gif Op donderdag 14 juli 2011 16:59 schreef QBay het volgende:

[..]

WHERE code >= 0 AND code <= 300 gebruiken? Dat pakt alle records waarvan code groter of gelijk is aan 0 en kleiner of gelijk aan 300.
Klopt, maar dan blijft het script dus hangen op het feit dat ik 300 records aanwijs ipv 1 specifiek record waarmee deze aan de slag moet. Ik wil dat ie bij 'code = 1' begint en herhaalt tot ie bij 'code = 300' (laatste rij) is aangekomen van de andere tabel waar de informatie vandaan komt...
remi1986donderdag 14 juli 2011 @ 17:23
quote:
0s.gif Op donderdag 14 juli 2011 17:12 schreef Dokay het volgende:

[..]

Klopt, maar dan blijft het script dus hangen op het feit dat ik 300 records aanwijs ipv 1 specifiek record waarmee deze aan de slag moet. Ik wil dat ie bij 'code = 1' begint en herhaalt tot ie bij 'code = 300' (laatste rij) is aangekomen van de andere tabel waar de informatie vandaan komt...
In dit geval (als het toch de laatste rij is), hoef je toch helemaal geen WHERE ofzo te doen, dan pakt hij gewoon alles?
Dokaydonderdag 14 juli 2011 @ 19:53
nee zo werkt het helaas niet... al geprobeerd
Pakspuldonderdag 14 juli 2011 @ 20:43
WHERE BETWEEN moet je dan gebruiken of anders WHERE X <= 0 OR X >= 300. Je zou inderdaad verwachten dat je AND moet gebruiken, maar het AND commando kijkt te sterk naar beide kanteb van de query. Moet zelf weer een keer uittesten om precieze uitleg te kunnen geven :-P
The_Terminatordonderdag 14 juli 2011 @ 22:10
Ik zit al een tijd te klooien met character encoding en wil graag zeker weten dat ik het goed doe.

Stel dat ik een pagina heb met de volgende meta tag in de header: "<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>"

Als ik de gegevens bijvoorbeeld encodeer naar BASE64 en de output insert in de database (collation = latin1_swedish_ci) is er niets aan de hand. Echter als ik de gegevens wil opslaan zonder het naar BASE64 te encoderen gaat het mis; ik moet dan utf8_decode gebruiken om de gegevens goed in de tabel te krijgen.

Ik wil graag het volgende weten:
- is het gebruik van utf8_decode de beste oplossing om het probleem te verhelpen?
- is het nodig de functie uft8_encode te gebruiken om de gegevens weer te geven in de browser? (het lijkt overigens prima te werken zonder uft8_encode).

Overigens weet ik dat de beste oplossing is om de collation op UTF-8 te zetten. Helaas is dit om verschillende redenen niet altijd mogelijk...
Dale.vrijdag 15 juli 2011 @ 11:07
Vraagje...

Ik heb een tabel met een column waarin een pad staat... "C:\...\...\test.txt" Nu wil ik graag "test" als uitvoer hebben.

SELECT FUNCTION(TEST) AS var FROM <TABEL>

Nu moet die FUNCTION er dus voor zorgen dat alleen test wordt geretouneerd... Iemand een idee?
KomtTijd...vrijdag 15 juli 2011 @ 11:52
quote:
7s.gif Op vrijdag 15 juli 2011 11:07 schreef Dale. het volgende:
Vraagje...

Ik heb een tabel met een column waarin een pad staat... "C:\...\...\test.txt" Nu wil ik graag "test" als uitvoer hebben.

SELECT FUNCTION(TEST) AS var FROM <TABEL>

Nu moet die FUNCTION er dus voor zorgen dat alleen test wordt geretouneerd... Iemand een idee?
Ik zou dat lekker in PHP doen met een regex. Weet niet of dat best practice is maar dan weet ik wat er gebeurt.
Als je die bestandsnaam vaak op moet vragen, zou ik 'm gewoon apart opslaan in je tabel, trouwens.
Tijnvrijdag 15 juli 2011 @ 12:02
quote:
0s.gif Op vrijdag 15 juli 2011 11:52 schreef KomtTijd... het volgende:

[..]

Ik zou dat lekker in PHP doen met een regex. Weet niet of dat best practice is maar dan weet ik wat er gebeurt.
Die regex wordt door PHP al meegeleverd trouwens, zie bv pathinfo().
urselzaterdag 16 juli 2011 @ 16:07
Hoe kan ik me bij de PHP tracker afmelden? :')
mscholzaterdag 16 juli 2011 @ 16:19
quote:
0s.gif Op zaterdag 16 juli 2011 16:07 schreef ursel het volgende:
Hoe kan ik me bij de PHP tracker afmelden? :')
php tracker?
cablegunmasterzaterdag 16 juli 2011 @ 17:14
quote:
0s.gif Op zaterdag 16 juli 2011 16:07 schreef ursel het volgende:
Hoe kan ik me bij de PHP tracker afmelden? :')
huh? , Bedoel je bij de serie reeks van Fok zelf? :)
Want daar was ik ook niet even duidelijk over hoe dat moest. zal vast doodsimpel zijn. :P
Luchtkokerzaterdag 16 juli 2011 @ 17:16
MyAT en dan gewoon rechts op dat kruisje drukken.
Diaboxzaterdag 16 juli 2011 @ 17:17
Of op stop volgen boven- en onderaan dit topic.
cablegunmasterzaterdag 16 juli 2011 @ 17:19
quote:
2s.gif Op zaterdag 16 juli 2011 17:16 schreef Luchtkoker het volgende:
MyAT en dan gewoon rechts op dat kruisje drukken.
quote:
3s.gif Op zaterdag 16 juli 2011 17:17 schreef Diabox het volgende:
Of op stop volgen boven- en onderaan dit topic.
Dankje :) , zat de hele tijd met een reekst in myAT die ik eruit wou , hij is nu weg :) Deze natuurlijk niet. :)
urselzaterdag 16 juli 2011 @ 17:27
Voordat FOK! reeksen had had je een topic tracker van wyrihaximus.net en kreeg je mailtje dat er een nieuw topic was. Dat is nu dus overbeodig, maar zit geen afmeld optie zover ik kan zien. :')
Luchtkokerzaterdag 16 juli 2011 @ 17:28
Email adres blacklisten in je Spamfilter, done.
Diaboxzaterdag 16 juli 2011 @ 17:34
Hey hallo, dit gaat allemaal niet over PHP/MySQL jongens :(
Lightzaterdag 16 juli 2011 @ 17:38
quote:
0s.gif Op zaterdag 16 juli 2011 17:27 schreef ursel het volgende:
Voordat FOK! reeksen had had je een topic tracker van wyrihaximus.net en kreeg je mailtje dat er een nieuw topic was. Dat is nu dus overbeodig, maar zit geen afmeld optie zover ik kan zien. :')
Stuur WyriHaximus een privebericht.
urselzaterdag 16 juli 2011 @ 18:09
quote:
_O_ done
cablegunmasterzaterdag 16 juli 2011 @ 18:09
quote:
0s.gif Op zaterdag 16 juli 2011 17:34 schreef Diabox het volgende:
Hey hallo, dit gaat allemaal niet over PHP/MySQL jongens :(
normaal gaat het over problemen met php /mysql maar die zijn ff weg. geen Php problemen op dit moment
urselzaterdag 16 juli 2011 @ 18:10
quote:
2s.gif Op zaterdag 16 juli 2011 17:28 schreef Luchtkoker het volgende:
Email adres blacklisten in je Spamfilter, done.
Als je script errors geeft ga je ook niet je errors onderdrukken, maar ga je terug naar de source :+
cablegunmasterzaterdag 16 juli 2011 @ 18:11
quote:
0s.gif Op zaterdag 16 juli 2011 18:10 schreef ursel het volgende:

[..]

Als je script errors geeft ga je ook niet je errors onderdrukken, maar ga je terug naar de source :+
"De source" :P

Edit: Nog geen youtube grapjes over kunnen vinden . :{

[ Bericht 5% gewijzigd door cablegunmaster op 16-07-2011 18:20:24 ]
mscholzondag 17 juli 2011 @ 22:54
even vraagje, wellicht is iemand er bekent mee hier:
ik heb een simpele site opgezet voor iemand met GetSimple CMS
op mijn testmachine werkt het perfect, echter is dat windows en dus wat minder gevoelig voor schrijfrechten

nou heb ik de boel geupload, een aantal mappen (data en backups + sub-directory's/files) ge-chmod naar 777 maar nog krijg ik er een foutmelding van... iemand toevallig een idee/ervaring mee..

anders ga ik wel nog een accountje registreren om het bij de maker te vragen :+
Lightzondag 17 juli 2011 @ 22:56
quote:
0s.gif Op zondag 17 juli 2011 22:54 schreef mschol het volgende:

nog krijg ik er een foutmelding van...
Welke foutmelding?
mscholzondag 17 juli 2011 @ 22:58
quote:
0s.gif Op zondag 17 juli 2011 22:56 schreef Light het volgende:

[..]

Welke foutmelding?
quote:
Fout: Unable to continue: Unable to write config file. CHMOD 777 the folders /data, /backups and their sub-folders and retry
intressant iets: als ik de taal b.v. aanpas, dan worden de wijzigingen wel opgeslagen
cablegunmasterzondag 17 juli 2011 @ 23:25
quote:
0s.gif Op zondag 17 juli 2011 22:58 schreef mschol het volgende:
intressant iets: als ik de taal b.v. aanpas, dan worden de wijzigingen wel opgeslagen
Interessant ander feitje, als je meer informatie geeft zouden we je kunnen helpen :).
mscholmaandag 18 juli 2011 @ 00:07
quote:
0s.gif Op zondag 17 juli 2011 23:25 schreef cablegunmaster het volgende:

[..]

Interessant ander feitje, als je meer informatie geeft zouden we je kunnen helpen :).
welke andere info valt er te geven..
1) gebruik getsimpel CMS (3.x)
2) hij geeft foutmelding dat er niet geschreven kan worden en dat er ge-chmod moet worden naar 777, wat ik al gedaan heb.

3) ik krijg nog steeds de foutmelding maar hij lijkt het wel aan te passen..
Lightmaandag 18 juli 2011 @ 00:15
quote:
0s.gif Op zondag 17 juli 2011 22:58 schreef mschol het volgende:

intressant iets: als ik de taal b.v. aanpas, dan worden de wijzigingen wel opgeslagen
Dan denk ik dat het iets specifieks voor het cms is. En omdat ik daar geen ervaring mee heb, kan ik je er niet mee helpen. :)
mscholmaandag 18 juli 2011 @ 00:18
quote:
0s.gif Op maandag 18 juli 2011 00:15 schreef Light het volgende:

[..]

Dan denk ik dat het iets specifieks voor het cms is. En omdat ik daar geen ervaring mee heb, kan ik je er niet mee helpen. :)
oke, dat is jammer :P

hmm..
blijkt dat de ftp user en php user niet gelijk zijn, hierdoor kan/mag php niet chmodden
ik heb een bepaalde check in de config uitgeschakeld waardoor het nu wel werkt, aangezien bij getsimple wordt verwezen naar je hoster die dat op moet lossen

[ Bericht 15% gewijzigd door mschol op 18-07-2011 00:45:24 ]
Diaboxwoensdag 20 juli 2011 @ 00:55
Ik heb een array genaamd $children en dit is de var_dump:
1array(3) { [0]=> string(1) "4" [1]=> string(1) "9" [2]=> string(2) "13" } 
Ofwel een array met 3 indices, met respectievelijk de waarden '4', '9' en '13'. So far so good, want deze waarden kloppen.

Gelijk daarna begin ik een foreach loop als volgt:
1foreach($children as $child)
En hierin ging van alles mis, dus ik ben gaan uitzoeken wat, en het kwam door het volgende probleem. Als ik het volgende echo in de foreach:
1echo $child['id']
Dan echo'ed ie de waarden: 4, 9 en 1, dus niet 13. Bij alle strings met een lengte langer dan 1 echo'ed ie alleen de eerste character van de id. Dat is het dus het probleem, maar wat veroorzaakt dit probleem? En hoe los ik deze op? Ik voel me zo noob :'(
cablegunmasterwoensdag 20 juli 2011 @ 01:14
quote:
0s.gif Op woensdag 20 juli 2011 00:55 schreef Diabox het volgende:
Ik heb een array genaamd $children en dit is de var_dump:
[ code verwijderd ]

Ofwel een array met 3 indices, met respectievelijk de waarden '4', '9' en '13'. So far so good, want deze waarden kloppen.

Gelijk daarna begin ik een foreach loop als volgt:
[ code verwijderd ]

En hierin ging van alles mis, dus ik ben gaan uitzoeken wat, en het kwam door het volgende probleem. Als ik het volgende echo in de foreach:
[ code verwijderd ]

Dan echo'ed ie de waarden: 4, 9 en 1, dus niet 13. Bij alle strings met een lengte langer dan 1 echo'ed ie alleen de eerste character van de id. Dat is het dus het probleem, maar wat veroorzaakt dit probleem? En hoe los ik deze op? Ik voel me zo noob :'(
register_globals off. zetten in je php.ini :P

vervolgens Apache herstarten.

Bron:
http://stackoverflow.com/(...)urns-first-character
Diaboxwoensdag 20 juli 2011 @ 01:46
Stond helaas al uit :'(

1register_globals    Off    Off
Tijnwoensdag 20 juli 2011 @ 01:48
Hoe kom je erbij om $child['id'] te echo'en en niet gewoon $child? Uit de vardump blijkt iig niet dat de elementen van $children zelf ook arrays zijn.
Diaboxwoensdag 20 juli 2011 @ 02:02
quote:
5s.gif Op woensdag 20 juli 2011 01:48 schreef Tijn het volgende:
Hoe kom je erbij om $child['id'] te echo'en en niet gewoon $child? Uit de vardump blijkt iig niet dat de elementen van $children zelf ook arrays zijn.
Oh my god, helemaal over het hoofd gezien :') Inderdaad, heb het gelijk gefixed en alles werkt nu zoals het hoort, 1000 maal dank!
Tijnwoensdag 20 juli 2011 @ 02:04
Graag gedaan hoor :7
Intrepiditywoensdag 20 juli 2011 @ 08:30
quote:
0s.gif Op woensdag 20 juli 2011 02:02 schreef Diabox het volgende:

[..]

Oh my god, helemaal over het hoofd gezien :') Inderdaad, heb het gelijk gefixed en alles werkt nu zoals het hoort, 1000 maal dank!
Technische onderbouwing: 'id' geconverteerd naar een integer is 0. Als je dus $string['id'] doet gaat hij onderwater positie 0 van de string opvragen (want strings zijn ook benaderbaar als arrays).
urselwoensdag 20 juli 2011 @ 09:32
Volgens mij vast al eens besproken, maar gooi hem toch maar weer eens omhoog. :7
Wat gebruiken jullie om PDF's te genereren?

Maak nu gebruik van FPDF. Gaat op zich wel goed, maar zit me mateloos te irriteren dat alles zo nauwkeurig gepositioneerd moet zijn. En kan gewoon met de huidige ontwikkeling van alle software nog niet echt geloven dat er geen betere pakketten/classes beschikbaar zijn die dat niet eenvoudiger kunnen. :')

We moeten een redelijk uitgebreide PDF generator hebben die ook eenvoudig grafieken kan opmaken.
Chandlerwoensdag 20 juli 2011 @ 12:11
Een vraagje.

Ik wil een site beveiligen met een ww.

Nu wil ik niet alleen een wachtwoord gebruiken in mijn htaccess maar ook rewriterules?

Waar ga ik de fout in?


Options +FollowSymLinks

RewriteEngine on


AuthGroupFile /dev/null
AuthType Basic
Auth
UserFile /home/*****/.htpasswd/public_html/.htpasswd

AuthName "Mag ik uw ID zien?"

require valid-user

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^*****/(.*).html$ index.php?arg=****&name=$1 [L,QSA]
RewriteRule ^****/zoeken-(.*).html$ index.php?arg=****-list&query=$1 [L,QSA]
RewriteRule ^****/(.*)/(.*).html$ index.php?arg=****-item&id=$1 [L,QSA]
RewriteRule ^****/(.*).html$ index.php?arg=****-list&city=$1 [L,QSA]
RewriteRule ^(.*).html$ index.php?arg=$1&%{QUERY_STRING} [L,QSA]

Iemand? :D
Diaboxwoensdag 20 juli 2011 @ 15:25
quote:
0s.gif Op woensdag 20 juli 2011 08:30 schreef Intrepidity het volgende:

[..]

Technische onderbouwing: 'id' geconverteerd naar een integer is 0. Als je dus $string['id'] doet gaat hij onderwater positie 0 van de string opvragen (want strings zijn ook benaderbaar als arrays).
I know :7 Zat al de hele dag te programmeren en dan zie je soms hele domme fouten niet :'( (was ook al laat :P)
1201Rickwoensdag 20 juli 2011 @ 16:13
quote:
0s.gif Op woensdag 20 juli 2011 09:32 schreef ursel het volgende:
Volgens mij vast al eens besproken, maar gooi hem toch maar weer eens omhoog. :7
Wat gebruiken jullie om PDF's te genereren?

Maak nu gebruik van FPDF. Gaat op zich wel goed, maar zit me mateloos te irriteren dat alles zo nauwkeurig gepositioneerd moet zijn. En kan gewoon met de huidige ontwikkeling van alle software nog niet echt geloven dat er geen betere pakketten/classes beschikbaar zijn die dat niet eenvoudiger kunnen. :')

We moeten een redelijk uitgebreide PDF generator hebben die ook eenvoudig grafieken kan opmaken.
Misschien kun je hier wat meer mee ?
Ik kon er in ieder geval veel meer mee dan FPDF

http://code.google.com/p/dompdf/

weet niet of er ook iets inzit voor grafieken, maar dat moet je zelf maar ff kijken
cablegunmasterwoensdag 20 juli 2011 @ 17:01
quote:
5s.gif Op woensdag 20 juli 2011 01:48 schreef Tijn het volgende:
Hoe kom je erbij om $child['id'] te echo'en en niet gewoon $child? Uit de vardump blijkt iig niet dat de elementen van $children zelf ook arrays zijn.
daar had ik nog niet aan gedacht :P
urseldonderdag 21 juli 2011 @ 10:41
quote:
0s.gif Op woensdag 20 juli 2011 16:13 schreef 1201Rick het volgende:

[..]

Misschien kun je hier wat meer mee ?
Ik kon er in ieder geval veel meer mee dan FPDF

http://code.google.com/p/dompdf/

weet niet of er ook iets inzit voor grafieken, maar dat moet je zelf maar ff kijken
Zal er eens naar kijken. Tnx.
Dale.donderdag 21 juli 2011 @ 10:59
Hmmm vraagje... ik heb een tabel met een naam en een status (passed, failed, skipped). Nu wil ik graag van alle namen in de tabel weten hoevaak die naam passed, failed of skipped is. (Er zijn dus rijen met dezelfde naam in de tabel)

Is dit mogelijk om in 1 query te doen? Dus dat ik zoiets als resultaat krijg...

1
2
3
4
5
6
7
8
|---------------------------------------------------------|
| Names  | Count(Passed) | Count(Skipped) | Count(Failed) |
|---------------------------------------------------------|
| Naam_1 |            15 |              4 |             2 |
| Naam_2 |             3 |             32 |             1 |
| Naam_. |             . |              . |             . |
| Naam_N |            12 |              2 |             4 |
----------------------------------------------------------|

Ik gebruik trouwens nu dit

1SELECT COUNT(*), NAAM, STATUS FROM tabel GROUP BY NAAM, STATUS;

Hier krijg ik dan van (bijna) iedere naam 3 records voor (passed, skipped, failed). Ik zeg bijna want als er geen voorkomt met b.v. passed dan geeft ie die natuurlijk niet weer, zou dan liever hebben dat ie dan COUNT(*) 0 retouneert ofzo voor passed.

[ Bericht 3% gewijzigd door Dale. op 21-07-2011 11:13:32 ]
Pakspuldonderdag 21 juli 2011 @ 11:14
1SELECT Names, COUNT(Passed), COUNT(Skipped), COUNT(Failed) FROM tablename GROUP BY Names

Hoe ziet je tabel er precies er uit? En waarom tel je in die tabel niet direct het aantal Passed op. Soort update waar Names = Naam_1 en dan Passed = Passed + 1 :?

Maar als je de structuur van je tabel nog even post dan kan ik beter antwoord geven :)
Dale.donderdag 21 juli 2011 @ 11:28
quote:
0s.gif Op donderdag 21 juli 2011 11:14 schreef Pakspul het volgende:

[ code verwijderd ]

Hoe ziet je tabel er precies er uit? En waarom tel je in die tabel niet direct het aantal Passed op. Soort update waar Names = Naam_1 en dan Passed = Passed + 1 :?

Maar als je de structuur van je tabel nog even post dan kan ik beter antwoord geven :)
Dat komt omdat het STATUS is opgeslagen als een string wat dus passed, failed, skipped kan hebben en eventueel meer in de toekomst.

1
2
3
4
5
6
CREATE TABLE `tabel` (
  `ID` char(38) NOT NULL,
  `NAAM` varchar(255) DEFAULT NULL,
  `STATUS` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`ID`),
  ) ENGINE=InnoDB DEFAULT CHARSET=latin1$$

Maar iig deze beslissing heb ik dus niet gemaakt he ;D :P
Pakspuldonderdag 21 juli 2011 @ 11:34
1SELECT Names, Status, COUNT(ID) AS 'Count' FROM tabel GROUP BY Names, Status

:)
Dale.donderdag 21 juli 2011 @ 11:39
quote:
0s.gif Op donderdag 21 juli 2011 11:34 schreef Pakspul het volgende:

[ code verwijderd ]

:)
Retouneert hetzelfde als mijn eigen huidige query :P

SELECT COUNT(*), NAAM, STATUS FROM tabel GROUP BY NAAM, STATUS;

Het liefst heb ik zoals in [PHP/(My)SQL] voor dummies #92 verteld maar als ik met jou query (wat aangepast) ook rijen erbij kan krijgen voor wanneer de count 0 is en er dus voor iedere naam 3 rijen is (skipped, passed, failed) ben ik ook blij :P
Pakspuldonderdag 21 juli 2011 @ 11:41
Oh je wilt ook met 0 erbij dat had ik niet gezien, even overheen gelezen ;+

Geef me paar minuten en je hebt je query :+
Dale.donderdag 21 juli 2011 @ 11:46
quote:
0s.gif Op donderdag 21 juli 2011 11:41 schreef Pakspul het volgende:
Oh je wilt ook met 0 erbij dat had ik niet gezien, even overheen gelezen ;+

Geef me paar minuten en je hebt je query :+
Ja als het kan wel want dat scheelt me wat logica in de stap erna :P
Pakspuldonderdag 21 juli 2011 @ 12:01
1
2
3
4
5
6
7
8
9
10
SELECT 
    ID, 
    Names, 
    (SELECT COUNT(t2.ID) FROM `names` t2 WHERE t2.Names = t1.Names AND Status = 'Passed' ) as 'Passed',
    (SELECT COUNT(t2.ID) FROM `names` t2 WHERE t2.Names = t1.Names AND Status = 'Failed' ) as 'Failed',
    (SELECT COUNT(t2.ID) FROM `names` t2 WHERE t2.Names = t1.Names AND Status = 'Skipped' ) as 'Skipped'
FROM 
    `names` t1
GROUP BY 
    t1.Names

Weet niet zeker of met subqueries werken het beste is, ik wil zo nog een testen of het met JOINS kan, maar hier heb je al iets om mee te werken.

Let even op bij de tabelnaam, deze is nu 'names' die moet je nog even aanpassen.
Dale.donderdag 21 juli 2011 @ 12:02
Ok thanks _O_ even testen hoor!
Dale.donderdag 21 juli 2011 @ 12:12
Woei die query is of super traag bij mij of hij loopt oneindig :P
Pakspuldonderdag 21 juli 2011 @ 12:13
Hoeveel records heb je er in staan? Ik verwacht dat hij super traag is.
Dale.donderdag 21 juli 2011 @ 12:14
maar 2000 ofzo :P
Pakspuldonderdag 21 juli 2011 @ 12:15
Haal Skipped en failed er eens uit en voer hem nog eens uit en kijk eens of hij het wel doet?
Dale.donderdag 21 juli 2011 @ 12:16
quote:
0s.gif Op donderdag 21 juli 2011 12:15 schreef Pakspul het volgende:
Haal Skipped en failed er eens uit en voer hem nog eens uit en kijk eens of hij het wel doet?
Heb al getest met 1 naam en hij doet het :) alleen voor 1 record doet ie al 4-5 seconde _O-
Pakspuldonderdag 21 juli 2011 @ 12:19
Je kunt natuurlijk ook deze query gebruiken:

1SELECT Names, Status, COUNT(ID) AS 'Count' FROM tabel GROUP BY Names, Status

Om huidige resultaten op te halen en dan die in een goede tabel te stoppen. Eerst loop je door de resultaten heen om te kijken wat je allemaal hebt. Hiermee kun je mooi een array vullen. Bijvoorbeeld:

1
2
3
4
5
6
7
8
9
10
11
<?php
$array 
= array(
    
'naam_1' => array(
        
'Passed = 0,
        '
Skipped 0,
        
'Failed' 0,
    ),
);

$array[$record['Names']]['Passed'] = $record['Count'];
?>

of je Passed, Skipped of Failed moet je uitzoeken met een SWITCH CASE
Pakspuldonderdag 21 juli 2011 @ 12:22
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$result 
mysql_query('SELECT Names, Status, COUNT(ID) AS 'Count' FROM tabel GROUP BY Names, Status');

$outputArray = array();

while(
$record mysql_fetch_assoc($result)
{
    if ( isset(
$outputArray[$record['Names']]) === false )
    {
        
$outputArray[$record['Names']] = array(
            
'Passed' 0,
            
'Skipped' 0,
            
'Failed' 0,
        );
    }

    
$outputArray[$record['Names']][$record['Status']] = $record['Count'];
}
?>

Nu heb je een leuke array welke je kunt doorlopen om de tabel goed te vullen :)

1
2
3
4
5
6
7
<?php
foreach ($outputArray as $naam => $info)
{
    
// voorbeeld output: 'Naam_1 (5,2,0)
    
echo $naam " (" $info['Passed'] . "," $info['Skipped'] . "," $info['Failed'] . ")";
}
?>

Waar de echo staat kun je de insert query gaan bouwen :)
Dale.donderdag 21 juli 2011 @ 12:30
Thanks voor je voorbeeld ^O^ zal eens kijken of ik me huidige code (andere taal trouwens) aanpas of dat ik het dan nu gewoon zo laat zoals het is :) iig zoals gezegd bedankt!
Pakspuldonderdag 21 juli 2011 @ 12:33
Je zult wat dingen moeten aanpassen, maar berekende dingen (echt zware berekeningen) moet je niet database uitvoeren. Zelfde als bij een forum, daar ga je de topic of post count niet berekenen, want dat duurt veels te lang. Dan kun je er beter voor kiezen een kolom op te nemen waar je dit kunt opslaan en snel weer terug kunt halen.

Succes er mee, en als er nog iets is dan horen we het wel weer :)
Chandlerzaterdag 23 juli 2011 @ 12:00
opgelost :D
Cue_maandag 25 juli 2011 @ 12:50
Kort vraagje;

Ik wil een rij van de ene tabel naar de andere tabel queryen.
wat eigenlijk neer komt op :

insert into table1 values (select * from table 2 where iets = iets)

Maar letterlijk werkt ie zo niet, want hij ziet volgens mij die select als 1 value.Iemand ideeen?
tnx alvast! :)
Tijnmaandag 25 juli 2011 @ 12:53
quote:
5s.gif Op maandag 25 juli 2011 12:50 schreef Cue_ het volgende:
Kort vraagje;

Ik wil een rij van de ene tabel naar de andere tabel queryen.
wat eigenlijk neer komt op :

insert into table1 values (select * from table 2 where iets = iets)

Maar letterlijk werkt ie zo niet, want hij ziet volgens mij die select als 1 value.Iemand ideeen?
tnx alvast! :)
Zoiets?

1
2
3
INSERT INTO target_table (col1, col2, col3, col4) 
    SELECT (col1, col2, col3, col4) FROM source_table 
    WHERE iets = iets;
Cue_maandag 25 juli 2011 @ 12:58
quote:
5s.gif Op maandag 25 juli 2011 12:53 schreef Tijn het volgende:
Zoiets?
[ code verwijderd ]

Ik zal dus echt alle kolomnamen moeten uitschrijven?
Tijnmaandag 25 juli 2011 @ 13:24
quote:
0s.gif Op maandag 25 juli 2011 12:58 schreef Cue_ het volgende:

[..]

Ik zal dus echt alle kolomnamen moeten uitschrijven?
Ja, maar dat is toch sowieso wel een goed idee? Anders faalt je query als je later ooit eens een kolom aan je tabel toevoegt.
Cue_maandag 25 juli 2011 @ 13:26
quote:
2s.gif Op maandag 25 juli 2011 13:24 schreef Tijn het volgende:

Ja, maar dat is toch sowieso wel een goed idee? Anders faalt je query als je later ooit eens een kolom aan je tabel toevoegt.
de twee tabellen zullen identiek zijn, dus daar maak ik me geen zorgen over. Maar tnx :) hij werkt!
Tijnmaandag 25 juli 2011 @ 13:41
quote:
0s.gif Op maandag 25 juli 2011 13:26 schreef Cue_ het volgende:

[..]

de twee tabellen zullen identiek zijn
Famous last words :7

quote:
Maar tnx :) hij werkt!
Ik ben wel benieuwd waarom je eigenlijk dubbele data wil opslaan in je database. Heb je niet genoeg aan gewoon het ID van de rij die je nodig hebt?
Scorpiemaandag 25 juli 2011 @ 13:41
quote:
2s.gif Op maandag 25 juli 2011 13:41 schreef Tijn het volgende:

[..]

Famous last words :7

[..]

Ik ben wel benieuwd waarom je eigenlijk dubbele data wil opslaan in je database. Heb je niet genoeg aan gewoon het ID van de rij die je nodig hebt?
Ik vermoed dat het iets van logging of archiving is dat Cue_ wil bewerkstelligen.
Cue_maandag 25 juli 2011 @ 13:43
quote:
0s.gif Op maandag 25 juli 2011 13:41 schreef Scorpie het volgende:
Ik vermoed dat het iets van logging of archiving is dat Cue_ wil bewerkstelligen.
Dat inderdaad :)
Zijn waarschijnlijk nog wel meer methodes voor, maar deze is voor dit geval gekozen.
Cue_maandag 25 juli 2011 @ 13:44
quote:
2s.gif Op maandag 25 juli 2011 13:41 schreef Tijn het volgende:

Famous last words :7
i know ;(
remi1986maandag 25 juli 2011 @ 13:44
Ik heb een array die er zo uit ziet

1
2
3
4
5
6
<?php
$results
[2010]['medewerker']['jan']['percentage'] = 10
$results
[2010]['medewerker']['piet']['percentage'] = 20
$results
[2011]['medewerker']['jan']['percentage'] = 15
$results
[2011]['medewerker']['piet']['percentage'] = 20
?>

De namen van de medewerkers zijn ff fictief, maar heeft ook niks te maken met het uiteindelijke doel.

Ik wil nu de percentages aflopend sorteren van het hoogste jaar (in dit geval 2011, maar is variabel). Alleen als de percentages van 2011 worden gewijzigd (en dus de keys ook), wil ik dat ook van de andere jaren doen, aangezien alles in een tabel wordt weergegeven.

Ik heb gekeken naar de standaard array sort functies (sort, asort, multisort etc.), maar volgens mij is er geen standaard functie voor.

Heeft iemand een idee om dit voor elkaar te krijgen?
Scorpiemaandag 25 juli 2011 @ 13:48
quote:
0s.gif Op maandag 25 juli 2011 13:43 schreef Cue_ het volgende:

[..]

Dat inderdaad :)
Zijn waarschijnlijk nog wel meer methodes voor, maar deze is voor dit geval gekozen.
Data replicatie is niet altijd de beste manier. Kan je neit beter gewoon een indicator maken die aangeeft dat de record in kwestie is verwijderd/readonly/archived is ?
Tijnmaandag 25 juli 2011 @ 13:48
array_multisort() doet in grote lijnen toch wel wat je hebben wil? Misschien dat je er alleen even een functie omheen moet schrijven om te zorgen dat 'ie alleen het meest recente jaar sorteert. Of zie ik iets over het hoofd?
remi1986maandag 25 juli 2011 @ 13:57
quote:
5s.gif Op maandag 25 juli 2011 13:48 schreef Tijn het volgende:
array_multisort() doet in grote lijnen toch wel wat je hebben wil? Misschien dat je er alleen even een functie omheen moet schrijven om te zorgen dat 'ie alleen het meest recente jaar sorteert. Of zie ik iets over het hoofd?
Het probleem is dat hij alle jaren moet sorteren naar de sortering van de meest recente. Maar volgens mij zit ik veel te moeilijk te denken. Ik kan natuurlijk met een foreach het meest recente jaar pakken en dan de waarden van $results[$year + 1) tonen. Dan heb ik niks nodig van een sortering.

EDIT: lang leve de maandag :Z c_/ c_/
A-mineurmaandag 25 juli 2011 @ 14:02
Waarom doe je allemaal zo moeilijk je kunt toch gewoon in je query orderen, ook op meerdere velden ORDER BY YEAR(date) ASC, name ASC, date desc iets in die trend, dan hoef je niet allemaal in PHP te gaan orderen wat voor PHP dus nietszeggende data is.
Pakspulmaandag 25 juli 2011 @ 14:07
quote:
0s.gif Op maandag 25 juli 2011 13:57 schreef remi1986 het volgende:

[..]

Het probleem is dat hij alle jaren moet sorteren naar de sortering van de meest recente. Maar volgens mij zit ik veel te moeilijk te denken. Ik kan natuurlijk met een foreach het meest recente jaar pakken en dan de waarden van $results[$year + 1) tonen. Dan heb ik niks nodig van een sortering.

EDIT: lang leve de maandag :Z c_/ c_/
Waar haal je het vandaan? Want als je het uit een DB haalt dan kan het makkelijker opgelost worden. Anders zou ik eens gaan kijken naar je opbouw van je array, want daar kun je volgens mij ook nog een verbeterslag maken.
remi1986maandag 25 juli 2011 @ 14:08
quote:
0s.gif Op maandag 25 juli 2011 14:02 schreef A-mineur het volgende:
Waarom doe je allemaal zo moeilijk je kunt toch gewoon in je query orderen, ook op meerdere velden ORDER BY YEAR(date) ASC, name ASC, date desc iets in die trend, dan hoef je niet allemaal in PHP te gaan orderen wat voor PHP dus nietszeggende data is.
het ligt allemaal iets ingewikkelder dan dit.

Gebruiker voert een start en eind jaar in.

Vervolgens ga ik met een query met allemaal joins naar andere tabellen de data ophalen die ik nodig heb. Met dit resultaat van die query, vul ik de $results array, omdat de percentages niet in de database staan, maar moeten worden berekend, kan ik daar niet in de query op ordenen.
A-mineurmaandag 25 juli 2011 @ 14:11
quote:
0s.gif Op maandag 25 juli 2011 14:08 schreef remi1986 het volgende:

[..]

het ligt allemaal iets ingewikkelder dan dit.

Gebruiker voert een start en eind jaar in.

Vervolgens ga ik met een query met allemaal joins naar andere tabellen de data ophalen die ik nodig heb. Met dit resultaat van die query, vul ik de $results array, omdat de percentages niet in de database staan, maar moeten worden berekend, kan ik daar niet in de query op ordenen.
Tuurlijk wel, je berekend de resultaten toch, ik zou dit sowieso berekenen met de DB daar is hij nl. voor bedoeld.

Tevens bespaart dit je een hoop onnodig rekenwerk in PHP en dataomzetting.
remi1986maandag 25 juli 2011 @ 14:11
quote:
0s.gif Op maandag 25 juli 2011 14:07 schreef Pakspul het volgende:

[..]

Waar haal je het vandaan? Want als je het uit een DB haalt dan kan het makkelijker opgelost worden. Anders zou ik eens gaan kijken naar je opbouw van je array, want daar kun je volgens mij ook nog een verbeterslag maken.
Zoals in mijn reactie hierboven, staan de percentages niet in de database. Dat wat ik toonde van de $results array is maar een klein stukje. Het is een groot overzicht met allemaal statistieken. Met de ene keer een medewerker als uitgangspunt maar in een ander overzicht het hele bedrijf.
remi1986maandag 25 juli 2011 @ 14:16
quote:
0s.gif Op maandag 25 juli 2011 14:11 schreef A-mineur het volgende:

[..]

Tuurlijk wel, je berekend de resultaten toch, ik zou dit sowieso berekenen met de DB daar is hij nl. voor bedoeld.

Tevens bespaart dit je een hoop onnodig rekenwerk in PHP en dataomzetting.
Hoe kan ik met MySQL een percentage berekenen dan? En dan moet het een percentage zijn over de SUM van een aantal kolommen.
Pakspulmaandag 25 juli 2011 @ 14:16
quote:
0s.gif Op maandag 25 juli 2011 14:11 schreef remi1986 het volgende:

[..]

Zoals in mijn reactie hierboven, staan de percentages niet in de database. Dat wat ik toonde van de $results array is maar een klein stukje. Het is een groot overzicht met allemaal statistieken. Met de ene keer een medewerker als uitgangspunt maar in een ander overzicht het hele bedrijf.
Schaduw array bijhouden waar je percentages aan personen koppelt en deze makkelijk kunt sorteren :? Die zou je nog kunnen opnemen onder $results[jaartal][percentage2medewerker] en dan een array alla: array('85' => 'mark', '98' => 'piet', '65' => 'jan');
Pakspulmaandag 25 juli 2011 @ 14:17
quote:
0s.gif Op maandag 25 juli 2011 14:16 schreef remi1986 het volgende:

[..]

Hoe kan ik met MySQL een percentage berekenen dan? En dan moet het een percentage zijn over de SUM van een aantal kolommen.
Deel / totaal * 100 (normale percentage berekening lijkt me?)
A-mineurmaandag 25 juli 2011 @ 14:19
In MySQL heb je de mooie AVG(). Daarbij kun je gewoon een beetje creatief zijn in je query's. MySQL ondersteunt o.a Switch statements en ifelse, en een hele set aan math operators en functions.
remi1986maandag 25 juli 2011 @ 14:19
quote:
0s.gif Op maandag 25 juli 2011 14:16 schreef Pakspul het volgende:

[..]

Schaduw array bijhouden waar je percentages aan personen koppelt en deze makkelijk kunt sorteren :? Die zou je nog kunnen opnemen onder $results[jaartal][percentage2medewerker] en dan een array alla: array('85' => 'mark', '98' => 'piet', '65' => 'jan');
Dit is ongeveer vergelijkbaar met de oplossing die ik zelf gaf met de foreach loop. Want als je de volgorde weet van het eerste jaar, kan je ze gewoon benaderen als je de naam weet.
Pakspulmaandag 25 juli 2011 @ 14:21
quote:
0s.gif Op maandag 25 juli 2011 14:19 schreef remi1986 het volgende:

[..]

Dit is ongeveer vergelijkbaar met de oplossing die ik zelf gaf met de foreach loop. Want als je de volgorde weet van het eerste jaar, kan je ze gewoon benaderen als je de naam weet.
Ga eerst eens spelen met je database, want dit kun je perfect daaruit halen. Percentage berekening kun je gewoon in je ORDER statement gooien.

1SELECT * FROM `test` ORDER BY (Deel / Totaal) DESC

Werkende query, dat moet je probleem oplossen.
Tijnmaandag 25 juli 2011 @ 14:28
quote:
0s.gif Op maandag 25 juli 2011 14:16 schreef remi1986 het volgende:

[..]

Hoe kan ik met MySQL een percentage berekenen dan? En dan moet het een percentage zijn over de SUM van een aantal kolommen.
Dat is toch niet zo'n probleem? Gewoon met SUM en COUNT de totalen berekenen en dan selecten en ordenen op de waarde / totaal * 100.
remi1986maandag 25 juli 2011 @ 14:28
De resultaten komen uit koppeltabellen en worden met GROUP BY bij elkaar gevoegd (hiermee krijg ik dus totalen voor in dit geval de medewerker)

Onderstaand de query met Nederlandse namen (kolommen heten anders, maar dit gaat sneller),

1
2
3
4
5
6
7
8
9
10
11
SELECT medewerker_naam
              SUM(getal1) AS getal1
              SUM(getal2) AS getal2
              SUM(getal3) AS getal3
FROM medewerkers
INNER JOIN tabel 1
INNER JOIN tabel 2
INNER JOIN tabel 3
WHERE datum BETWEEN ....
AND .. 
GROUP BY medewerker

Om het percentage te berekenen moet ik eerst getal 1 en 2 optellen. Getal 3 / (getal 1+2) * 100 = percentage wat ik nodig heb. Hoe wil dit allemaal in MySQL
A-mineurmaandag 25 juli 2011 @ 14:31
quote:
0s.gif Op maandag 25 juli 2011 14:28 schreef remi1986 het volgende:
De resultaten komen uit koppeltabellen en worden met GROUP BY bij elkaar gevoegd (hiermee krijg ik dus totalen voor in dit geval de medewerker)

Onderstaand de query met Nederlandse namen (kolommen heten anders, maar dit gaat sneller),
[ code verwijderd ]

Om het percentage te berekenen moet ik eerst getal 1 en 2 optellen. Getal 3 / (getal 1+2) * 100 = percentage wat ik nodig heb. Hoe wil dit allemaal in MySQL
Wat dacht je van
1
2
3
4
5
6
7
8
9
10
11
12
SELECT medewerker_naam
              SUM(getal1) AS getal1
              SUM(getal2) AS getal2
              SUM(getal3) AS getal3
              AVG (getal1, getal2, getal3) AS gemiddeld
FROM medewerkers
INNER JOIN tabel 1
INNER JOIN tabel 2
INNER JOIN tabel 3
WHERE datum BETWEEN ....
AND .. 
GROUP BY gemiddeld ASC, medewerker ASC
Tijnmaandag 25 juli 2011 @ 14:31
Gewoon zo toch?

1
2
3
4
5
6
7
8
9
10
11
12
SELECT medewerker_naam
              SUM(getal1) AS getal1
              SUM(getal2) AS getal2
              SUM(getal3) AS getal3
              getal3 / (getal1+2) * 100 AS percentage
FROM medewerkers
INNER JOIN tabel 1
INNER JOIN tabel 2
INNER JOIN tabel 3
WHERE datum BETWEEN ....
AND .. 
GROUP BY medewerker
Pakspulmaandag 25 juli 2011 @ 14:33
1
2
SELECT Naam, SUM(Deel) / SUM(Totaal) * 100 As Percentage 
FROM `test` GROUP BY Naam ORDER BY Percentage DESC


Grrr Tijn :( Als je dan eerder wil zijn doe het dan wel goed. Je mist de ORDER BY daar had je nog 2 minuten voor.
remi1986maandag 25 juli 2011 @ 14:35
quote:
0s.gif Op maandag 25 juli 2011 14:31 schreef A-mineur het volgende:

[..]

Wat dacht je van
[ code verwijderd ]

quote:
5s.gif Op maandag 25 juli 2011 14:31 schreef Tijn het volgende:
Gewoon zo toch?
[ code verwijderd ]

ok dit snap ik. Maar ik moet de volgorde bepalen van de medewerkers hoe deze getoond worden (hoogste percentage in laatste jaar bovenaan). Die ORDER BY gaat dan alleen op als jaar 2011 is (in het eerste voorbeeld dat ik gaf)
Pakspulmaandag 25 juli 2011 @ 14:37
quote:
0s.gif Op maandag 25 juli 2011 14:35 schreef remi1986 het volgende:

[..]


[..]

ok dit snap ik. Maar ik moet de volgorde bepalen van de medewerkers hoe deze getoond worden (hoogste percentage in laatste jaar bovenaan). Die ORDER BY gaat dan alleen op als jaar 2011 is (in het eerste voorbeeld dat ik gaf)
ORDER BY Jaartal DESC, Percentage DESC *O*
A-mineurmaandag 25 juli 2011 @ 14:37
ORDER BY YEAR(datum) ASC, percentage ASC

Zo schikt hij eerst op jaar, en daarna op percentage.
A-mineurmaandag 25 juli 2011 @ 14:37
quote:
0s.gif Op maandag 25 juli 2011 14:37 schreef Pakspul het volgende:

[..]

ORDER BY Jaartal DESC, Percentage DESC *O*
haha je was me voor,
Pakspulmaandag 25 juli 2011 @ 14:38
quote:
0s.gif Op maandag 25 juli 2011 14:37 schreef A-mineur het volgende:

[..]

haha je was me voor,
Het was het F5-en waard :P
remi1986maandag 25 juli 2011 @ 14:46
hmm het zal wel aan de maandag liggen, dus wellicht nog een domme opmerking

Maar mijn uiteindelijke doel is een tabel met een overzicht van alle jaren naast elkaar (onderstaand 2011 en 2010, maar dit kunnen er 10 zijn (dus tot 2001 terug).

2011 2010
Jan (getal1+2), getal 3, percentage (getal1+2), getal 3, percentage
Klaas (getal1+2), getal 3, percentage (getal1+2), getal 3, percentage
Piet (getal1+2), getal 3, percentage (getal1+2), getal 3, percentage

Volgens mij gaat dat niet goedkomen, aangezien je dit niet kan doen zonder eerst een array voor een bepaald jaar te maken. Of zit ik nu weer helemaal verkeerd te denken?

EDIT: Zou een tabel moeten voorstellen maar de jaren komen elk dus boven (getal 1 +2 etc...)
A-mineurmaandag 25 juli 2011 @ 14:50
quote:
0s.gif Op maandag 25 juli 2011 14:46 schreef remi1986 het volgende:
hmm het zal wel aan de maandag liggen, dus wellicht nog een domme opmerking

Maar mijn uiteindelijke doel is een tabel met een overzicht van alle jaren naast elkaar (onderstaand 2011 en 2010, maar dit kunnen er 10 zijn (dus tot 2001 terug).

2011 2010
Jan (getal1+2), getal 3, percentage (getal1+2), getal 3, percentage
Klaas (getal1+2), getal 3, percentage (getal1+2), getal 3, percentage
Piet (getal1+2), getal 3, percentage (getal1+2), getal 3, percentage

Volgens mij gaat dat niet goedkomen, aangezien je dit niet kan doen zonder eerst een array voor een bepaald jaar te maken. Of zit ik nu weer helemaal verkeerd te denken?

EDIT: Zou een tabel moeten voorstellen maar de jaren komen elk dus boven (getal 1 +2 etc...)
Als je dingen specifiek tussen 2 jaartallen wilt hebben voeg je er gewoon op het einde aan toe: WHERE YEAR(datum) BETWEEN 2000 AND 2011.
remi1986maandag 25 juli 2011 @ 14:51
quote:
0s.gif Op maandag 25 juli 2011 14:50 schreef A-mineur het volgende:

[..]

Als je dingen specifiek tussen 2 jaartallen wilt hebben voeg je er gewoon op het einde aan toe: WHERE YEAR(datum) BETWEEN 2000 AND 2011.
Ja dat klopt, maar dan krijg ik de resultaten verticaal terug en niet horizontaal zoals dus zou moeten.
A-mineurmaandag 25 juli 2011 @ 14:57
quote:
0s.gif Op maandag 25 juli 2011 14:51 schreef remi1986 het volgende:

[..]

Ja dat klopt, maar dan krijg ik de resultaten verticaal terug en niet horizontaal zoals dus zou moeten.
Als je ze horizontaal wil maken zul je dus de rijen per jaar jaar voor jaar ophalen.

iets van;

<?php
endyear = 2011;

for($year1 = 2000; $year1 < $endyear; $year++){
// je query. en verwerking.
}


?>
remi1986maandag 25 juli 2011 @ 15:04
quote:
0s.gif Op maandag 25 juli 2011 14:57 schreef A-mineur het volgende:

[..]

Als je ze horizontaal wil maken zul je dus de rijen per jaar jaar voor jaar ophalen.

iets van;

<?php
endyear = 2011;

for($year1 = 2000; $year1 < $endyear; $year++){
// je query. en verwerking.
}


?>
Klopt, dit doe ik ook.. En moet je alsnog alles uit elkaar trekken om de volgorde te bepalen. Want het percentage van het meest recente jaar bepaald deze.
Pakspulmaandag 25 juli 2011 @ 15:13
quote:
0s.gif Op maandag 25 juli 2011 15:04 schreef remi1986 het volgende:

[..]

Klopt, dit doe ik ook.. En moet je alsnog alles uit elkaar trekken om de volgorde te bepalen. Want het percentage van het meest recente jaar bepaald deze.
Als je nu nog de volgorde moet bepalen dan heb je dus je query nog niet goed in elkaar zitten.
A-mineurmaandag 25 juli 2011 @ 15:38
quote:
0s.gif Op maandag 25 juli 2011 15:13 schreef Pakspul het volgende:

[..]

Als je nu nog de volgorde moet bepalen dan heb je dus je query nog niet goed in elkaar zitten.
De volgorde wordt in de query bepaald. Je krijgt dus voor elk jaartal een query waar je de waardes ophaalt voor dat jaartal.
Pakspulmaandag 25 juli 2011 @ 16:08
quote:
0s.gif Op maandag 25 juli 2011 15:38 schreef A-mineur het volgende:

[..]

De volgorde wordt in de query bepaald. Je krijgt dus voor elk jaartal een query waar je de waardes ophaalt voor dat jaartal.
dat kan ook wel in één keer het opbouwen van je array moet daarna een eitje zijn, maar het is niet de bedoeling dat hij later nog een keer naar de volgorde moet kijken. Dan mist er namelijk nog iets in zijn query.
Tijnmaandag 25 juli 2011 @ 16:13
quote:
0s.gif Op maandag 25 juli 2011 15:04 schreef remi1986 het volgende:

[..]

Klopt, dit doe ik ook.. En moet je alsnog alles uit elkaar trekken om de volgorde te bepalen. Want het percentage van het meest recente jaar bepaald deze.
Dan order je alle volgende queries toch gewoon ook op de percentages van 2011?
remi1986maandag 25 juli 2011 @ 16:21
quote:
14s.gif Op maandag 25 juli 2011 16:13 schreef Tijn het volgende:

[..]

Dan order je alle volgende queries toch gewoon ook op de percentages van 2011?
Deze snap ik niet helemaal?
A-mineurmaandag 25 juli 2011 @ 19:54
Als je zorgt dat de query voor 1 jaar goed is, is de rest piece of cake en loop je die gewoon, je hoeft het niet eens in een array te mikken, want dan moet je daarna weer gaan loopen om het er uit te poepen. Dubbele moeite dus.
Tijnmaandag 25 juli 2011 @ 20:11
quote:
0s.gif Op maandag 25 juli 2011 19:54 schreef A-mineur het volgende:
Als je zorgt dat de query voor 1 jaar goed is, is de rest piece of cake en loop je die gewoon, je hoeft het niet eens in een array te mikken, want dan moet je daarna weer gaan loopen om het er uit te poepen. Dubbele moeite dus.
Volgens mij is het probleem dat de andere jaren gesorteerd moeten worden op de percentages van het laatste jaar.
Keiichidinsdag 26 juli 2011 @ 07:40
Is SOAP door php eigenlijk wel officieel ondersteund?

Het lijkt er op dat elke willekeurige SOAP 'server' gemaakt in .NET , java o.i.d. per definitie niet door bv wsdl2php komt en als dit wel lukt dat belangrijke dingen gewoon ontbreken. (Heb nu een xsd met enumeratie waar ie geen raad mee weet om een concreet voorbeeld te pakken)
remi1986dinsdag 26 juli 2011 @ 10:24
Ik heb het probleem met de medewerkers opgelost.

Ik kwam er niet uit om het op query niveau te doen. En de $result array is sowieso nodig ook voor andere overzichten. Ik heb een aparte array bijgehouden met de sortering van het laatste jaar.

Met een foreach loop ik daar doorheen en kan ik de andere waarden voor de medewerker van de andere jaren benaderen.

Toch iedereen bedankt voor de gegeven antwoorden! ^O^

Wellicht dat ik er ooit nog een keer naar kijk om het beter te doen.
A-mineurdinsdag 26 juli 2011 @ 10:57
quote:
0s.gif Op dinsdag 26 juli 2011 07:40 schreef Keiichi het volgende:
Is SOAP door php eigenlijk wel officieel ondersteund?

Het lijkt er op dat elke willekeurige SOAP 'server' gemaakt in .NET , java o.i.d. per definitie niet door bv wsdl2php komt en als dit wel lukt dat belangrijke dingen gewoon ontbreken. (Heb nu een xsd met enumeratie waar ie geen raad mee weet om een concreet voorbeeld te pakken)
http://nl.php.net/soapserver

Gebruik het regelmatig, er zijn natuurlijk wat bugs maar als je die eenmaal kent werkt het prima. Er is trouwens ook nog zoiets als nuSOAP voor PHP wat vergelijkbaar doet, alleen dan in eigen implementatie.
Dokaydinsdag 26 juli 2011 @ 14:54
Fokkertjes, is er een SQL held in de zaal?

Ik wil graag een woord in een kolom veranderen naar een ander woord. Voorbeeld van een kolomwaarde:
Kostenplaats <BR> Kostensoort <BR> Subnummer <BR> Kostendrager <BR> Project
Ik zou graag "Subnummer" willen veranderen naar "Dimensie 1" voor de hele tabel. Geen probleem want dat gebruik je de REPLACE functie zou je zeggen. Maar het komt weleens voor dat de term "Subnummers" (meervoud dus) wordt gehanteerd. Aangezien je bij de REPLACE functie alleen maar een vaste zoekwaarde zonder %wildcards% kan gebruiken zit ik een beetje met de handen in het haar omdat het hier om veel verschillende tabellen gaat. Dan zou ik voor elke tabel een aparte query in elkaar moeten peuteren... Iemand een idee?
Keiichidinsdag 26 juli 2011 @ 15:11
quote:
0s.gif Op dinsdag 26 juli 2011 10:57 schreef A-mineur het volgende:

[..]

http://nl.php.net/soapserver

Gebruik het regelmatig, er zijn natuurlijk wat bugs maar als je die eenmaal kent werkt het prima. Er is trouwens ook nog zoiets als nuSOAP voor PHP wat vergelijkbaar doet, alleen dan in eigen implementatie.
Eens even naar nuSoap kijken. de soapclient van php zelf laat voor kopellingen met SOAP servers van ERP paketten enzo wat te wensen over.
A-mineurdinsdag 26 juli 2011 @ 16:20
quote:
0s.gif Op dinsdag 26 juli 2011 14:54 schreef Dokay het volgende:
Fokkertjes, is er een SQL held in de zaal?

Ik wil graag een woord in een kolom veranderen naar een ander woord. Voorbeeld van een kolomwaarde:
Kostenplaats <BR> Kostensoort <BR> Subnummer <BR> Kostendrager <BR> Project
Ik zou graag "Subnummer" willen veranderen naar "Dimensie 1" voor de hele tabel. Geen probleem want dat gebruik je de REPLACE functie zou je zeggen. Maar het komt weleens voor dat de term "Subnummers" (meervoud dus) wordt gehanteerd. Aangezien je bij de REPLACE functie alleen maar een vaste zoekwaarde zonder %wildcards% kan gebruiken zit ik een beetje met de handen in het haar omdat het hier om veel verschillende tabellen gaat. Dan zou ik voor elke tabel een aparte query in elkaar moeten peuteren... Iemand een idee?
Ik snap niet wat je wilt bereiken, maar als de kolom naam anders moet zijn kun je gewoon een alias gebruiken. Misschien handiger om je vraag wat te specificeren met een stukje code.

SELECT iets AS ietsanders FROM table
Pakspuldinsdag 26 juli 2011 @ 16:28
quote:
0s.gif Op dinsdag 26 juli 2011 14:54 schreef Dokay het volgende:
Fokkertjes, is er een SQL held in de zaal?

Ik wil graag een woord in een kolom veranderen naar een ander woord. Voorbeeld van een kolomwaarde:
Kostenplaats <BR> Kostensoort <BR> Subnummer <BR> Kostendrager <BR> Project
Ik zou graag "Subnummer" willen veranderen naar "Dimensie 1" voor de hele tabel. Geen probleem want dat gebruik je de REPLACE functie zou je zeggen. Maar het komt weleens voor dat de term "Subnummers" (meervoud dus) wordt gehanteerd. Aangezien je bij de REPLACE functie alleen maar een vaste zoekwaarde zonder %wildcards% kan gebruiken zit ik een beetje met de handen in het haar omdat het hier om veel verschillende tabellen gaat. Dan zou ik voor elke tabel een aparte query in elkaar moeten peuteren... Iemand een idee?
PHP script schrijven, welke eerst alle tabellen doorloopt (tabel namen in een array gooien en foreach er door heen gaan) daarna ook met de woorden die je wil vervangen (tevens weer in een array en dan foreach er door heen)

Dan heb je twee foreach loops in elkaar en op diepste niveau ga je de query schrijven. Dan voer je hem uit en tada klaar *O*
A-mineurdinsdag 26 juli 2011 @ 18:55
quote:
0s.gif Op dinsdag 26 juli 2011 16:28 schreef Pakspul het volgende:

[..]

PHP script schrijven, welke eerst alle tabellen doorloopt (tabel namen in een array gooien en foreach er door heen gaan) daarna ook met de woorden die je wil vervangen (tevens weer in een array en dan foreach er door heen)

Dan heb je twee foreach loops in elkaar en op diepste niveau ga je de query schrijven. Dan voer je hem uit en tada klaar *O*
http://www.java2s.com/Code/SQL/Select-Clause/UsingAliases.htm

Extra query is nergens voor nodig.
Cue_woensdag 27 juli 2011 @ 12:50
Wat is eigenlijk het tegenovergestelde van trim?

Ik heb een variable bv : 2574 of 4 of 24.. in ieder geval een getal.
en nu wil ik dat deze aan de voorkant wordt verlengt tot 6 tekens (wordt weggeschreven als char)
mstxwoensdag 27 juli 2011 @ 12:54
quote:
0s.gif Op woensdag 27 juli 2011 12:50 schreef Cue_ het volgende:
Wat is eigenlijk het tegenovergestelde van trim?

Ik heb een variable bv : 2574 of 4 of 24.. in ieder geval een getal.
en nu wil ik dat deze aan de voorkant wordt verlengt tot 6 tekens (wordt weggeschreven als char)
In PHP? str_pad()
Cue_woensdag 27 juli 2011 @ 12:55
quote:
0s.gif Op woensdag 27 juli 2011 12:54 schreef mstx het volgende:

[..]

In PHP? str_pad()
sorry, idd php. Dat is idd wat ik zoek zoals ik nu zie :)
remi1986woensdag 27 juli 2011 @ 12:56
quote:
0s.gif Op woensdag 27 juli 2011 12:55 schreef Cue_ het volgende:

[..]

sorry, idd php. Dat is idd wat ik zoek zoals ik nu zie :)
Geloof dat het ook met sprintf kan, "%06d"
Cue_woensdag 27 juli 2011 @ 12:58
Dan nog even een heel kleintje (ook php)

hoe split ik een variable (geen array) op.
Maar dan enkel alleen op de eerste spatie die hij tegenkomt. Dus latere spaties moet hij negeren.
remi1986woensdag 27 juli 2011 @ 12:58
quote:
0s.gif Op woensdag 27 juli 2011 12:58 schreef Cue_ het volgende:
Dan nog even een heel kleintje (ook php)

hoe split ik een variable (geen array) op.
Maar dan enkel alleen op de eerste spatie die hij tegenkomt. Dus latere spaties moet hij negeren.
pff lees weer eens niet goed.

Als je het resultaat als array wil, kan dat met explode (kan je een limit opgeven)
mstxwoensdag 27 juli 2011 @ 13:00
quote:
0s.gif Op woensdag 27 juli 2011 12:58 schreef remi1986 het volgende:

[..]


explode()
sorry .. str_replace
Volgens mij wel explode hoor, en dan bij het 3e argument 1 gebruiken. :P
remi1986woensdag 27 juli 2011 @ 13:01
quote:
0s.gif Op woensdag 27 juli 2011 13:00 schreef mstx het volgende:

[..]

Volgens mij wel explode hoor, en dan bij het 3e argument 1 gebruiken. :P
ja inderdaad zag het ook later .. las ff niet goed |:(
Cue_woensdag 27 juli 2011 @ 13:03
Een spatie kan je dan toch aangeven door " " ?
Want als ik die zo pak dan splitst hij na elk getal :?
remi1986woensdag 27 juli 2011 @ 13:03
quote:
0s.gif Op woensdag 27 juli 2011 13:03 schreef Cue_ het volgende:
Een spatie kan je dan toch aangeven door " " ?
Want als ik die zo pak dan splitst hij na elk getal :?
" " ja en dan wel een limit opgeven (derde argument)
Cue_woensdag 27 juli 2011 @ 13:06
quote:
0s.gif Op woensdag 27 juli 2011 13:03 schreef remi1986 het volgende:
" " ja en dan wel een limit opgeven (derde argument)
Dat limiet werkt! :)

Maar alleen die seperator nog niet.
$naam = "5424 Naam"

wordt nu met limit van 3
[0] = 5
[1] = 4
[2] = 2
remi1986woensdag 27 juli 2011 @ 13:07
quote:
0s.gif Op woensdag 27 juli 2011 13:06 schreef Cue_ het volgende:

[..]

Dat limiet werkt! :)

Maar alleen die seperator nog niet.
$naam = "5424 Naam"

wordt nu met limit van 3
[0] = 5
[1] = 4
[2] = 2
explode(" ", $naam, 1) ?
Cue_woensdag 27 juli 2011 @ 13:09
quote:
0s.gif Op woensdag 27 juli 2011 13:07 schreef remi1986 het volgende:

[..]

explode(" ", $naam, 1) ?
Yup die idd

1
2
    $username = "5427 naam";
    explode(" ",$username,3);

Met echo
echo $username[0];
echo 'd';
echo $username[1];
echo 'd';
echo $username[2];

uitkomst
5d4d2
remi1986woensdag 27 juli 2011 @ 13:09
quote:
0s.gif Op woensdag 27 juli 2011 13:09 schreef Cue_ het volgende:

[..]

Yup die idd
[ code verwijderd ]

Met echo
echo $username[0];
echo 'd';
echo $username[1];
echo 'd';
echo $username[2];

uitkomst
5d4d2
Je moet wel $naam = explode doen.. anders verandert de variabele niet
Cue_woensdag 27 juli 2011 @ 13:10
quote:
0s.gif Op woensdag 27 juli 2011 13:09 schreef remi1986 het volgende:
je

[..]

Je moet wel $naam = explode doen.. anders veranderd de variabele niet
tnx O+

domme fout :)
remi1986woensdag 27 juli 2011 @ 13:11
quote:
0s.gif Op woensdag 27 juli 2011 13:10 schreef Cue_ het volgende:

[..]

tnx O+

domme fout :)
^O^
Pakspulwoensdag 27 juli 2011 @ 13:26
Volgende is nog wel een mooie oplossing als je weet hoeveel stukken er uit zullen komen.

1
2
3
4
5
<?php
$string 
"12 username email@domein.nl";

list(
$id$name$email) = explode(" "$string);
?>
cablegunmasterdonderdag 28 juli 2011 @ 13:40
had eerst een vraagje maar heb het al opgelost :P
Cue_donderdag 28 juli 2011 @ 14:42
Was ik weer :)

Ik heb een formulier, met daarin verschillende radiobuttons.
bv
1
2
3
<input type="radio" name="adr" value="1" style="width:20px" />Yes<br />
<input type="radio" name="adr" value="2" style="width:20px" />No <br />
<input type="radio"  name="adr" value="-1" style="width:20px" />Unknown <br/>

nu is het zo dat als men het formulier submit dat er bepaalde velden verplicht gevuld moeten worden, gebeurd dit niet, komen ze terug in het formulier met de eerder opgegeven waardes natuurlijk nog ingevuld. Enkel lukt mij dit niet met de radiobuttons. Geen idee hoe ik dit moet oppakken.

De andere velden vul ik door:
1
2
3
4
5
6
    $pagina = new Template('layout/framework.tpl');
      $inhoud = new Template("layout/new_order_1.tpl");
      
    $inhoud->set('fout', $fouttekst);
       $inhoud->set ('username', $username);
       $inhoud->set ('trailernr', $$trailernr);
mstxdonderdag 28 juli 2011 @ 14:49
quote:
0s.gif Op donderdag 28 juli 2011 14:42 schreef Cue_ het volgende:
Was ik weer :)

Ik heb een formulier, met daarin verschillende radiobuttons.
bv
[ code verwijderd ]

nu is het zo dat als men het formulier submit dat er bepaalde velden verplicht gevuld moeten worden, gebeurd dit niet, komen ze terug in het formulier met de eerder opgegeven waardes natuurlijk nog ingevuld. Enkel lukt mij dit niet met de radiobuttons. Geen idee hoe ik dit moet oppakken.

De andere velden vul ik door:
[ code verwijderd ]

Geen idee hoe dat in dat template-systeem werkt, maar in php kan het zo:
1
2
<input type="radio" name="adr" value="1" style="width:20px"<?php echo $_POST['adr']==1?"checked='checked'":""?> />Yes<br />
Tijndonderdag 28 juli 2011 @ 14:52
Welk framework gebruik je? Zo te zien vult de set() functie van je framework alleen de value van een inputfield, terwijl 'ie in het geval van een radio-button ervoor moet zorgen dat 'checked="checked"' erin komt te staan. Je zult dus een functie moeten zoeken in het systeem dat je gebruikt die dat doet.
remi1986donderdag 28 juli 2011 @ 14:55
Waarschijnlijk kan je die variabelen weer benaderen in de template met {USERNAME} of iets dergelijks.

Dan kan je de oplossing misschien gebruiken van mstx

1$inhoud->set("CHECKED", $_POST['adr']==1?"checked='checked'":"");

De variabele {CHECKED} zal dan of het woord "checked" bevatten of is leeg.

1<input type="radio" {CHECKED}> 

misschien nog een isset() er omheen om te controleren of de POST variabele wel bestaat, weet niet of het goed gaat als je nog niet gesubmit hebt (dus de eerste keer dat je de pagina laadt)
Cue_donderdag 28 juli 2011 @ 15:06
quote:
0s.gif Op donderdag 28 juli 2011 14:49 schreef mstx het volgende:
Geen idee hoe dat in dat template-systeem werkt, maar in php kan het zo:
[ code verwijderd ]

Deze werkt O+

$adr = $_POST['adr'];
$inhoud->set ('adr', $adr);

En dan in de tabel de code die jij hebt voorgesteld *O*
Chandlerdonderdag 28 juli 2011 @ 16:04
die werkt fout? of controlleer je ook of er een POST is gedaan? en of $_POST['adr'] wel bestaat?

Beter is

$inhoud->set('adr', (isset($_POST['adr']) ? $_POST['adr'] : ''));
Scorpiedonderdag 28 juli 2011 @ 16:10
quote:
0s.gif Op donderdag 28 juli 2011 16:04 schreef Chandler het volgende:
die werkt fout? of controlleer je ook of er een POST is gedaan? en of $_POST['adr'] wel bestaat?

Beter is

$inhoud->set('adr', (isset($_POST['adr']) ? $_POST['adr'] : ''));
Beter is nog je hele $_POST door een functie te halen die dit soort dingen voor je afvangt :)
Cue_donderdag 28 juli 2011 @ 16:16
Ik ben een beginneling en ben al blij dat het allemaal werkt :D
Scorpiedonderdag 28 juli 2011 @ 16:26
quote:
12s.gif Op donderdag 28 juli 2011 16:16 schreef Cue_ het volgende:
Ik ben een beginneling en ben al blij dat het allemaal werkt :D
Vrouwelijke PHP-ers :9~
remi1986donderdag 28 juli 2011 @ 16:57
quote:
6s.gif Op donderdag 28 juli 2011 16:26 schreef Scorpie het volgende:

[..]

Vrouwelijke PHP-ers :9~
Idd ^O^

En al netjes dat je dan met template engines e.d. aan de gang gaat, als je zegt een beginneling te zijn. Niks is lelijker dan PHP rechtstreeks in je HTML code |:(
Cue_donderdag 28 juli 2011 @ 17:06
Ik ben goed in afkijken van degene die andere applicaties heeft gemaakt ;)

Dus begrijpen doe ik ook nog niet alles, maar zolang het werkt (soms op een enorm omslachtige manier) dan vind ik het goed. En hoe meer je er mee bezig bent hoe meer je het leert en snapt en dus weer spul effencienter gaat maken. Maar het kost tijd. Ben pas een maand of 2 goed bezig hiermee nu en ach, het lukt redelijk :)
Google (en nu fok ook) is my best friend O+
remi1986donderdag 28 juli 2011 @ 17:12
quote:
0s.gif Op donderdag 28 juli 2011 17:06 schreef Cue_ het volgende:
Ik ben goed in afkijken van degene die andere applicaties heeft gemaakt ;)

Dus begrijpen doe ik ook nog niet alles, maar zolang het werkt (soms op een enorm omslachtige manier) dan vind ik het goed. En hoe meer je er mee bezig bent hoe meer je het leert en snapt en dus weer spul effencienter gaat maken. Maar het kost tijd. Ben pas een maand of 2 goed bezig hiermee nu en ach, het lukt redelijk :)
Google (en nu fok ook) is my best friend O+
Begrijpen hoeft ook niet altijd, als je maar snapt wat er moet gebeuren ;)
The_Terminatordonderdag 28 juli 2011 @ 20:01
quote:
14s.gif Op donderdag 28 juli 2011 16:10 schreef Scorpie het volgende:

[..]

Beter is nog je hele $_POST door een functie te halen die dit soort dingen voor je afvangt :)
Ik heb voor het afhandelen van de request variabelen een simpele class geschreven. De class handelt ook eventuele encodering en het escapen van de variabelen af.

Het mooie ervan is dat je dan bijna niet meer kunt vergeten de variabelen te escapen om ze te gebruiken in een query. Dit kan een hoop problemen zoals query injecties of XSS aanvallen tegengaan.

Doordat de class een lege string teruggeeft als een element niet bestaat in de request array vang je ook foutmeldingen af, eventueel is het dan ook mogelijk de niet bestaande requests te loggen.

Overigens heb ik op mijn vraag: [PHP/(My)SQL] voor dummies #92 nog geen antwoord gekregen. Iemand een idee?
The_Terminatordonderdag 28 juli 2011 @ 20:11
quote:
0s.gif Op donderdag 28 juli 2011 16:57 schreef remi1986 het volgende:

[..]

Niks is lelijker dan PHP rechtstreeks in je HTML code |:(
Voor kleine projecten met een minieme template ga ik echt geen template engine gebruiken. PHP in de HTML code ziet er inderdaad niet sjiek uit, echter wordt het wel heel snel uitgevoerd.

Een template engine moet moet namelijk de volledige template bij langs en waar nodig variabelen aanpassen, dat kost gewoon tijd. Een voordeel is dat een template engine de mogelijkheid heeft tot het cachen van data, en dat kan de weergave een stuk sneller maken.

De mogelijkheid tot cachen is ook de reden dat ik voor zeer grote applicaties een templateengine gebruik, en voor de kleinere gewoon de PHP rechtstreeks in de HTML code plaats.

Uiteraard scheid is de templates wel van de rest van het script en verwerk zo weinig mogelijk PHP in de HTML, ik vind het anders erg onoverzichtelijk worden.
mstxdonderdag 28 juli 2011 @ 20:24
quote:
11s.gif Op donderdag 28 juli 2011 20:11 schreef The_Terminator het volgende:
Voor kleine projecten met een minieme template ga ik echt geen template engine gebruiken. PHP in de HTML code ziet er inderdaad niet sjiek uit, echter wordt het wel heel snel uitgevoerd.

Een template engine moet moet namelijk de volledige template bij langs en waar nodig variabelen aanpassen, dat kost gewoon tijd.
Ligt aan het template systeem. Smarty bijvoorbeeld parsed de template 1x en zet de code om naar pure PHP en slaat die ook zo op voor de volgende call. Er zit dan natuurlijk nog steeds een overhead in maar voor de overzichtelijkheid gebruik ik het ook gewoon voor kleine projectjes.
Chandlerdonderdag 28 juli 2011 @ 23:46
1
2
3
4
RewriteCond    %{HTTP_HOST}    ^[_a-zA-Z0-9]+\.fotos\.nl$    
RewriteCond    %{HTTP_HOST}    !^www.fotos.nl$    
# RewriteCond    %{REQUEST_URI}    !^/members/    
RewriteRule    (.*)    /user.php?user=$1    

Dit is toch een juiste rewrite rule om te werken met sub domeinen? die ik via DA via het DNS instellen heb aangepakt *.fotos.nl A ip.ip.ip.ip

Iemand? :D
GlowMousevrijdag 29 juli 2011 @ 00:28
Apache moet om te beginnen zo ingesteld zijn dat *.fotos.nl vanuit die map geserveerd wordt.
Chandlervrijdag 29 juli 2011 @ 07:07
quote:
0s.gif Op vrijdag 29 juli 2011 00:28 schreef GlowMouse het volgende:
Apache moet om te beginnen zo ingesteld zijn dat *.fotos.nl vanuit die map geserveerd wordt.
Dus het heeft niet allen met de DNS wildcard ingesteld moeten worden maar ook nog een extra setting aanpassen in http.conf? :D
GlowMousevrijdag 29 juli 2011 @ 11:05
idd
Chandlervrijdag 29 juli 2011 @ 12:59
LOL dan ga ik de hoster daarom vragen! :)

Ik heb trouwens wel de melding op een subdomain (Apache is functioning normally).

Dus moet ik dan nog die httpd.conf aanpassen of betreft het dan alleen htaccess? :D
basmensvrijdag 29 juli 2011 @ 13:11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
// ophalen met welk registratienummer deze session nu bezig is
$huidige_regnr $_SESSION["registratienummer"];

// ophalen van de clearance level van de huidige session
$clvl_huidige_regnr mysql_query("SELECT functie FROM $tbl_name2 WHERE registratienummer='$huidige_regnr'");

//het juiste include file bij de juiste rechten zetten zodat het juistse menu verschijnt
switch ($clvl_huidige_regnr
{
case 
'level1': include('menu/menu1.php');
break;
case 
'level2': include('menu/menu2.php');
break;
}
?>

in mijn menu wil ik afhankelijk van het clearance level een specifiek menu tonen. Bovenstaande code geeft echter een blank scherm, terwijl menu1.php nu als test een echo heeft.
Verder ben ik er ook achter gekomen dat $clvl_huidige_regnr als output heeft: Resource id #5 . Dit terwijl ik hier als output verwacht level1

een van jullie een idee waar het misgaat?
Chandlervrijdag 29 juli 2011 @ 13:13
je doet een query maar je haalt de resultaten niet op? :D

mysql_query = query doen
mysql_fetch_assoc = query uitlezen

in jou geval zou ik zelfs mysql_result gebruiken

bv $res = mysql_result(mysql_query("JE QUERY), 0);

Have fun! :)
GlowMousevrijdag 29 juli 2011 @ 13:14
quote:
0s.gif Op vrijdag 29 juli 2011 12:59 schreef Chandler het volgende:
LOL dan ga ik de hoster daarom vragen! :)

Ik heb trouwens wel de melding op een subdomain (Apache is functioning normally).

Dus moet ik dan nog die httpd.conf aanpassen of betreft het dan alleen htaccess? :D
httpd.conf, want in welke map zou hij een htaccess zoeken?
quote:
0s.gif Op vrijdag 29 juli 2011 13:11 schreef basmens het volgende:

[ code verwijderd ]

in mijn menu wil ik afhankelijk van het clearance level een specifiek menu tonen. Bovenstaande code geeft echter een blank scherm, terwijl menu1.php nu als test een echo heeft.
Verder ben ik er ook achter gekomen dat $clvl_huidige_regnr als output heeft: Resource id #5 . Dit terwijl ik hier als output verwacht level1

een van jullie een idee waar het misgaat?
http://www.php.net/manual/en/function.mysql-fetch-assoc.php
basmensvrijdag 29 juli 2011 @ 13:15
quote:
14s.gif Op vrijdag 29 juli 2011 13:13 schreef Chandler het volgende:
je doet een query maar je haalt de resultaten niet op? :D

mysql_query = query doen
mysql_fetch_assoc = query uitlezen

in jou geval zou ik zelfs mysql_result gebruiken

bv $res = mysql_result(mysql_query("JE QUERY), 0);

Have fun! :)
haha thnx, wist ergens wel dat er iets fout ging in de basics, maar had geen idee wat. ga ermee verder!

waar staat eigenlijk die ,0 voor?
Chandlervrijdag 29 juli 2011 @ 13:22
eerst lezen dan vragen :7 http://www.php.net/mysql_result :)
Chandlervrijdag 29 juli 2011 @ 13:23
quote:
0s.gif Op vrijdag 29 juli 2011 13:14 schreef GlowMouse het volgende:

httpd.conf, want in welke map zou hij een htaccess zoeken?
Zou kunnen dat DA dat zelf toevoegd oid? :D geen idee hoor?

Verder geef ik deze ff door aan de hoster :P
http://www.easymodrewrite.com/example-subdomains
Cue_vrijdag 29 juli 2011 @ 13:30
Mijn helden van het PHP forum, de volgende vraag.

Ik heb nog altijd mijn formulier met daarop data die ik wil opslaan. Met een update statement heb ik geen problemen, echter wel met de insert.

Ik haal al mijn velden op met $_POST en evt maak ik er een leuke variabele van.
vervolgens gooi ik de velden die ik wil updaten en hun waarden in een aparte variable als:

1
2
$velden = "ordernr,plangroup, username, customerid, customername, orderdate,ect ";
$values = $ordernr.",".$_GET['pl'].",'".$_SESSION['username']."',".$nr. etc ";

Vervolgens wil deze in een 'class' wegschrijven naar een database
1$new = $no->addOrder($velden,$values)

Het probleem zit het hem erin dat ik niet van alle values een waarde hebben op dat moment, zijn soms null. Ik kan niet alle velden tussen aanhalingstekens zetten, want dan heeft ie een string die hij wil wegschrijven in een numeriek veld.

Is het enige wat mogelijk is om eerst alle velden af te vangen (de numerieke) en deze anders op null te zetten? :?
mstxvrijdag 29 juli 2011 @ 13:36
quote:
0s.gif Op vrijdag 29 juli 2011 13:30 schreef Cue_ het volgende:
Ik kan niet alle velden tussen aanhalingstekens zetten, want dan heeft ie een string die hij wil wegschrijven in een numeriek veld.
Volgens mij gaat dat prima.

quote:
Is het enige wat mogelijk is om eerst alle velden af te vangen
Lijkt me sowieso handig.

quote:
en deze anders op null te zetten? :?
Ligt aan de kolom, of deze 0 of NULL als waarde moet hebben.

En ik zou trouwens alles in 1 array zetten.
1
2
3
4
<?php
$velden 
= array('ordernr'=>$ordernr'plangroup'=>$_GET['pl']); //etc
$new $no->addOrder($velden)
?>
Cue_vrijdag 29 juli 2011 @ 13:40
quote:
0s.gif Op vrijdag 29 juli 2011 13:36 schreef mstx het volgende:
Volgens mij gaat dat prima.
dat dacht ik ook, maar hij gaat zeuren dat hij dus geen numerieke waarde heeft. Of dat komt doordat het dus enkel '' is en niet bv 'null'.
quote:
Ligt aan de kolom, of deze 0 of NULL als waarde moet hebben.
null mag ook.
quote:
En ik zou trouwens alles in 1 array zetten.
[ code verwijderd ]

maar hoe gaat mijn qry er dan uitzien? die is nu namelijk :
1
2
3
4
5
    function addOrder($velden, $values){
        $query_09 = "INSERT INTO orders ($velden) VALUES ($values)";
        $sql_09 = QueryOra($query_09);
        QueryExe($sql_09, OCI_COMMIT_ON_SUCCESS, $query_09);
    }

wordt dat dan gewoon insert into order ($velden) ?
mstxvrijdag 29 juli 2011 @ 13:52
quote:
0s.gif Op vrijdag 29 juli 2011 13:40 schreef Cue_ het volgende:
dat dacht ik ook, maar hij gaat zeuren dat hij dus geen numerieke waarde heeft. Of dat komt doordat het dus enkel '' is en niet bv 'null'.
Zo te zien gebruik je geen MySQL? Andere databases zijn meestal wat strenger dus dan gaat dat inderdaad niet werken. :9

quote:
maar hoe gaat mijn qry er dan uitzien? die is nu namelijk :
[ code verwijderd ]

wordt dat dan gewoon insert into order ($velden) ?
Ik ben gewend om alle insert queries via een centrale functie te doen waar je alleen de tabelnaam + velden hoeft aan te geven, zoiets;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
function insertRow($table$values){
            foreach ( 
$values as $k => $v ) {
                
$insertColums[]=$k;
                if ( 
$v===NULL ) {
                    
$insertValues[]="NULL";
                } else {
                    
$insertValues[]="'".$v."'";
                }
            }

            
mysql_query("INSERT INTO `" $table "` (`" implode("`, `"$insertColums) . "`) VALUES (" implode(", "$insertValues) . ")");
            return 
mysql_insert_id();
        }
?>
Nooit meer gezeik met onoverzichtelijke statements ^O^

Dus dan wordt het
1
2
3
<?php
insertRow
('orders'$velden);
?>

Moet je die functie alleen even aanpassen met de juiste functies voor jouw database. :P
Cue_vrijdag 29 juli 2011 @ 13:54
Oracle database ;)

Ik ga eens ontpluizen hoe die $values er dan uit moet komen te zien zodat er een foreach op werkt :)

woei het werkt *O*
tnx O+

[ Bericht 37% gewijzigd door Cue_ op 29-07-2011 14:08:02 ]
Chandlervrijdag 29 juli 2011 @ 16:47
quote:
0s.gif Op vrijdag 29 juli 2011 13:14 schreef GlowMouse het volgende:
Ze hebben het regeltje toegevoegd en het werkt maar dan nu het volgende. Aangezien ik maar met 1 wildcard subdomein wil testen wil ik andere (niet bestaande) redirecten naar www. echter gaat dit op een of andere manier niet werken en laat deze de index zien van het hoofd domein.

Nu wilde ik dit oplossen met een 301 redirect maar die doet niets!? nu is mijn vraag doe ik wat fout?

Voorbeeld van htaccess

1
2
3
4
5
6
7
8
9
RewriteCond %{HTTP_HOST} ^[_a-zA-Z0-9]+\mijndomen\.nl$
RewriteCond %{HTTP_HOST} !^www\.mijndomen\.nl
RewriteCond %{HTTP_HOST} !^test\.mijndomen\.nl
RewriteRule ^(.*) http://www.mijndomen.nl/$1 [r=301,L]

# RewriteCond    %{HTTP_HOST}    ^[_a-zA-Z0-9]+\.mijndomen\.nl$    
RewriteCond    %{HTTP_HOST}    ^test\.mijndomen\.nl$    
RewriteCond    %{HTTP_HOST}    !^www\.mijndomen\.nl$    
RewriteRule    (.*)    subdomain.php?user=$1

waarbij het eerste gedeelte zou dit zou moeten doen

redirect bij geen www
redirect bij ander subdomein dan test.nl

het tweede gedeelte filtert weer op die 'sub domein' en moet deze dan doorsturen aan een bepaald script.

Maar het eerste stuk werkt niet, tweede wel maar natuurlijk zoals geschreven voor alle sub domeinen. (Zie # lol)

Waar ga ik de fout in? zie jij / iemand het?
GlowMousevrijdag 29 juli 2011 @ 16:54
RewriteCond %{HTTP_HOST} ^[_a-zA-Z0-9]+\mijndomen\.nl$

daar mist een punt voor mijndomein
Chandlervrijdag 29 juli 2011 @ 17:14
Zie, daar keek ik dus al een minuut of 5 naar maar zag het niet ;) bedankt! :)
Chandlervrijdag 29 juli 2011 @ 17:52
quote:
14s.gif Op vrijdag 29 juli 2011 17:14 schreef Chandler het volgende:
Zie, daar keek ik dus al een minuut of 5 naar maar zag het niet ;) bedankt! :)
Het volgende probleem is dat ik sessies niet over alle subdomeinen kan laten lopen :{ grrr moet weer een aanpassing vragen :P
GlowMousevrijdag 29 juli 2011 @ 17:55
quote:
4s.gif Op vrijdag 29 juli 2011 17:52 schreef Chandler het volgende:

[..]

Het volgende probleem is dat ik sessies niet over alle subdomeinen kan laten lopen :{ grrr moet weer een aanpassing vragen :P
http://www.php.net/manual(...)ession.cookie-domain
kan via .htaccess
Chandlervrijdag 29 juli 2011 @ 18:02
quote:
Als de server dat natuurlijk toestaat, kon het stukje niet vinden met htaccess uitleg :D
Cue_maandag 1 augustus 2011 @ 10:49
En we gaan weer vrolijk verder :)
Ik heb mijn array:
1  $values = array("ordernr" => $ordernr, "plangroup" => $plangroup,

Echter wil ik hier afhankelijk van de knop die ze indrukken een extra waarde bij toevoegen.
Nu kom ik de array_push wel tegen, maar hierin kan ik alleen een bepaalde waarde meegeven en niet ook de key. (voor zover ik het online zie).

ik wil eigenlijk dat er nog
$status => 2 bij toe wordt gevoegd aan bovengenoemde array.
mstxmaandag 1 augustus 2011 @ 10:52
quote:
0s.gif Op maandag 1 augustus 2011 10:49 schreef Cue_ het volgende:
En we gaan weer vrolijk verder :)
Ik heb mijn array:
[ code verwijderd ]

Echter wil ik hier afhankelijk van de knop die ze indrukken een extra waarde bij toevoegen.
Nu kom ik de array_push wel tegen, maar hierin kan ik alleen een bepaalde waarde meegeven en niet ook de key. (voor zover ik het online zie).

ik wil eigenlijk dat er nog
$status => 2 bij toe wordt gevoegd aan bovengenoemde array.
1
2
3
4
5
<?php
if ( $knopisingedrukt ) {
$values['status']=2;
}
?>
Pakspulmaandag 1 augustus 2011 @ 11:17
quote:
0s.gif Op maandag 1 augustus 2011 10:49 schreef Cue_ het volgende:
En we gaan weer vrolijk verder :)
Ik heb mijn array:
[ code verwijderd ]

Echter wil ik hier afhankelijk van de knop die ze indrukken een extra waarde bij toevoegen.
Nu kom ik de array_push wel tegen, maar hierin kan ik alleen een bepaalde waarde meegeven en niet ook de key. (voor zover ik het online zie).

ik wil eigenlijk dat er nog
$status => 2 bij toe wordt gevoegd aan bovengenoemde array.
Misschien heb je er iets aan, misschien niet, maar het zijn wat manieren om array's te gebruiken.

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

    
// zo wat letters
    
$stack = array('a''b''c');
    
    
// paar toevoegen aan de array
    
array_push($stack"d""e");
    
    
// doet zelfde als array_push
    
$stack[] = "f";
    
    
// letters met ASCII nummer
    
$stack = array(
        
'a' => 97,
        
'b' => 98,
        
'c' => 99,
    );
    
    
// paar letters toevoegen
    
$stack['d'] = 100;
    
$stack['e'] = 100;
    
    
// nu letter D verwijderen
    
unset($stack['d']);

?>

En zo te zien zou ik eens gaan kijken naar classes, want de dingen die je nu opslaat in een array horen in een class.
Cue_donderdag 4 augustus 2011 @ 14:28
En weer een vraagje :)

Ik heb een in een tabel bij een datumveld heel vaak de waarde 00-00-0000
(zet hij blijkbaar om als de waarde null is)

Maar ik wil deze waarde handmatig weer omzetten naar een fictieve datum in de toekomst, van mij paart 01-01-3000 .. hoe doe ik dit?

met sql that is :)

of ik moet ergens kunnen zeggen dat een datum die ik ergens heb gelijk mag zijn aan die 00-00-0000 (wat ik eig liever heb) .
GlowMousedonderdag 4 augustus 2011 @ 14:32
Gebruik een UPDATE query met daarin een WHERE.

Waarom maak je de kolom niet NULLable?
Cue_donderdag 4 augustus 2011 @ 14:34
quote:
0s.gif Op donderdag 4 augustus 2011 14:32 schreef GlowMouse het volgende:
Gebruik een UPDATE query met daarin een WHERE.

Waarom maak je de kolom niet NULLable?
tis een tabel uit een erp systeem, dus daar kan ik niets aan veranderen. En moet hem gebruiken in een scansysteem, die weer alleen datums kan lezen als je hier een to_char om heen zet :S
Best vaag (eerste keer dat ik wat hierin moet aanpassen)

hmm in t scansysteem zet ie hem op 00-00-0000 in t erp als 01-01-99

Gaat lekekr :+
GlowMousedonderdag 4 augustus 2011 @ 14:38
Maar wat wil je nou eigenlijk?
Cue_donderdag 4 augustus 2011 @ 14:50
Vergeet hem maar :)
7leintje93donderdag 4 augustus 2011 @ 15:08
Hoi allemaal!

Ik wil voor mijn zusje een portfolio-website gaan maken (ze schildert) en daarop wil ze graag een niewspagina. Afgelopen jaar heb ik met PHP en MySQL gewerkt voor mijn profielwerkstuk, en dat is me best bevallen dus daar wil ik wel graag mee doorgaan. Ik weet dus hoe je tekst via je browser in een database moet opslaan enzo, maar ik zou graag willen weten hoe je een soort scriptje schrijft waardoor voor ieder nieuwsitem automatisch een eigen url wordt aangemaakt. Bijvoorbeeld zo: www.mijnzusjeswebsite.nl/(...)erste-nieuwsitem.php . Weet iemand hoe dit werkt? Ik ben nog niet bekend met OOP, ik ga na de vakantie informatica studeren dus die kennis heb ik waarschijnlijk pas volgend jaar.

Groetjes Marjolein

P.S. Is het het beste om met PHPMyAdmin te werken? Want dat vind ik best onhandig. Heb het met mijn profielwerkstuk wel gebruikt.
GlowMousedonderdag 4 augustus 2011 @ 15:11
Met mod-rewrite:

RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^news/(.*) index.php [L]

Elke url die met news/ begint komt bij index.php terecht. Daar kun je het nieuwtje erbijzoeken.

Groetes GM

P.S. PMA is wel handig
7leintje93donderdag 4 augustus 2011 @ 15:17
quote:
0s.gif Op donderdag 4 augustus 2011 15:11 schreef GlowMouse het volgende:
Met mod-rewrite:

RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^news/(.*) index.php [L]

Elke url die met news/ begint komt bij index.php terecht. Daar kun je het nieuwtje erbijzoeken.
.....Dit snap ik niet :@
Ik heb ook al gekeken in mijn schoolboeken voor volgend jaar maar daar stond niks in dat ik nodig had of nog niet wist..
GlowMousedonderdag 4 augustus 2011 @ 15:19
Gelukkig is er Google.
7leintje93donderdag 4 augustus 2011 @ 15:20
quote:
0s.gif Op donderdag 4 augustus 2011 15:19 schreef GlowMouse het volgende:
Gelukkig is er Google.
Thank you, captain Obvious. Ik ben allang bezig.
GIvrijdag 5 augustus 2011 @ 08:22
quote:
0s.gif Op donderdag 4 augustus 2011 15:20 schreef 7leintje93 het volgende:

[..]

Thank you, captain Obvious. Ik ben allang bezig.
Mooi, dan hoef je hier geen compleet 'brede' vragen te stellen en ook hier geen goede antwoorden meer niet te snappen!
remi1986vrijdag 5 augustus 2011 @ 09:53
quote:
0s.gif Op donderdag 4 augustus 2011 15:17 schreef 7leintje93 het volgende:

[..]

.....Dit snap ik niet :@
Ik heb ook al gekeken in mijn schoolboeken voor volgend jaar maar daar stond niks in dat ik nodig had of nog niet wist..
In je schoolboeken staat inderdaad niet uitgelegd hoe je een portfoliowebsite maakt (of je moet al geluk hebben dat ze het als voorbeeld gebruiken).

Programmeren (of met PHP is het eigenlijk scripten), is het zien van de "stappen" die je moet doen om iets voor elkaar te krijgen).

De code die GlowMouse echter gaf is geen PHP, maar hoort thuis in een .htaccess bestand. Misschien is het handig(er) om voor dit eens een CMS te pakken (heb goede ervaringen met CMS Made Simple), die het hele url rewrite gebeuren al heeft.

Als je het toch helemaal zelf wil doen, kijk eens naar mod_rewrite.
7leintje93vrijdag 5 augustus 2011 @ 15:52
quote:
3s.gif Op vrijdag 5 augustus 2011 08:22 schreef GI het volgende:

[..]

Mooi, dan hoef je hier geen compleet 'brede' vragen te stellen en ook hier geen goede antwoorden meer niet te snappen!
Als er in de sticky post van dit topic staat dat ik veel mag vragen dan doe ik dat. En als je vindt dat het hier niet thuis hoort begin ik vrolijk een eigen topic.

En met 'dat snap ik niet' bedoelde ik dat ik daar al wel eens naar had gekeken op aanraden van een vriend maar er niet veel van kon maken. Ik ga niet zomaar zeggen dat ik iets niet snap zonder het serieus te proberen. Heb het nog een keer gegoogled en ga het nog een keer proberen, maar vind het nog steeds ontzettend ingewikkeld.

quote:
0s.gif Op vrijdag 5 augustus 2011 09:53 schreef remi1986 het volgende:

[..]

In je schoolboeken staat inderdaad niet uitgelegd hoe je een portfoliowebsite maakt (of je moet al geluk hebben dat ze het als voorbeeld gebruiken).

Programmeren (of met PHP is het eigenlijk scripten), is het zien van de "stappen" die je moet doen om iets voor elkaar te krijgen).

De code die GlowMouse echter gaf is geen PHP, maar hoort thuis in een .htaccess bestand. Misschien is het handig(er) om voor dit eens een CMS te pakken (heb goede ervaringen met CMS Made Simple), die het hele url rewrite gebeuren al heeft.

Als je het toch helemaal zelf wil doen, kijk eens naar mod_rewrite.
Ik heb wel eens geprobeerd Wordpress te integreren in een website maar dat was geen succes. Joomla! ook niet. Ik zal CMS made simpel eens proberen, dan kan ik verder en als de website af is kan ik altijd nog kijken of ik zoiets zelf kan bouwen. Bedankt voor uw tip!
GlowMousevrijdag 5 augustus 2011 @ 15:52
Dan had je kunnen posten wat je geprobeerd had en waarom het niet lukte.
WyriHaximusvrijdag 5 augustus 2011 @ 15:59
quote:
0s.gif Op donderdag 4 augustus 2011 15:11 schreef GlowMouse het volgende:
P.S. PMA is wel handig
Gebruik zelf eigenlijk alleen nog maar navicat ipv pma. Werkt imo net ff wat lekkerder :).
7leintje93vrijdag 5 augustus 2011 @ 16:00
Ik heb me enkel in de theorie toen verdiept en vond het te gewaagd en te ingewikkeld om het te proberen in een schoolopdracht dat bijna direct op mijn examencijferlijst zou komen, en heb het toen niet ergens gebruikt. Daarom is mijn vraag redelijk breed. Maar nogmaals, als je vindt dat het hier niet thuis hoort come right out and say it en ik open ergens anders een topic. En als je het niet breed wil uitleggen dan kan ik me dat prima voorstellen, maar ik gaf alleen aan dat ik het niet snapte en wilde afwachten of er nog andere opties langs zouden komen.
7leintje93vrijdag 5 augustus 2011 @ 16:01
quote:
0s.gif Op vrijdag 5 augustus 2011 15:59 schreef WyriHaximus het volgende:

[..]

Gebruik zelf eigenlijk alleen nog maar navicat ipv pma. Werkt imo net ff wat lekkerder :).
Worth a try! Thanks!
remi1986vrijdag 5 augustus 2011 @ 23:39
quote:
0s.gif Op vrijdag 5 augustus 2011 15:52 schreef 7leintje93 het volgende:

Bedankt voor uw tip!
Zeg maar jij .. anders voel ik me zo oud O-)
basmenszaterdag 6 augustus 2011 @ 17:23
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
<?php

$maand_nu 
date("m");
$maandweergeef $maand_nu ;

$srv $_SERVER['index1.php?locatie=plan'];

if(isset(
$_POST['volgende']))
    {
    
$maandweergeef++; // Volgende Maand
}    
switch (
$maandweergeef
{
case 
'01': echo("januari");
break;

case 
'02': echo("februari");
break;

etc...
}

?>
<form action="<?php echo $srv?>" method="post">

<input type="submit" name="volgende" value=">>" />
</form>


beste kenners. Ben nu bezig de code te schrijven om met een knop naar de andere maand te switchen en deze variabele $maandweergeeft daar ook in te gebruiken. Het probleem is nu dat de pagina wel begint in augustus en met de knop verandert in september, maar als ik nogmaals op de knop volgende druk verandert september niet in oktober. Lijkt mij om dat post dan al een waarde heeft en dus niet nogmaals verhoogt.
Ik heb deze code echter uit een voorbeeld van een kalender en daar werkte de code wel.

Mis ik iets of is er een meer practische oplossing?

thnx alvast
KomtTijd...zaterdag 6 augustus 2011 @ 17:28
quote:
0s.gif Op zaterdag 6 augustus 2011 17:23 schreef basmens het volgende:

[ code verwijderd ] Het probleem is nu dat de pagina wel begint in augustus en met de knop verandert in september, maar als ik nogmaals op de knop volgende druk verandert september niet in oktober. Lijkt mij om dat post dan al een waarde heeft en dus niet nogmaals verhoogt.

thnx alvast
Nee, dat is omdat je $maandweergeef iedere keer dat het script draait op de huidige maand zet. In plaats van op de weergegeven maand.
GlowMousezaterdag 6 augustus 2011 @ 17:58
$_SERVER['index1.php?locatie=plan'] zal ook niet bestaan.
cablegunmasterzaterdag 6 augustus 2011 @ 18:00
quote:
0s.gif Op zaterdag 6 augustus 2011 17:23 schreef basmens het volgende:

[ code verwijderd ]

beste kenners. Ben nu bezig de code te schrijven om met een knop naar de andere maand te switchen en deze variabele $maandweergeeft daar ook in te gebruiken. Het probleem is nu dat de pagina wel begint in augustus en met de knop verandert in september, maar als ik nogmaals op de knop volgende druk verandert september niet in oktober. Lijkt mij om dat post dan al een waarde heeft en dus niet nogmaals verhoogt.
Ik heb deze code echter uit een voorbeeld van een kalender en daar werkte de code wel.

Mis ik iets of is er een meer practische oplossing?

thnx alvast
Waarom maak je een knopje voor elke keer volgende maand en niet een option set?

1
2
3
4
5
6
7
8
9
<?php
<select name='maand'>
  <
option value='01'>Januari</option>
  <
option value='02'>Februari</option>
  <
option value='03'>Maart</option>
  <
option value='04'>April</option>
      <!--- 
etc --!>
</
select>
?>
:P ?

Tip om te debuggen:
1
2
3
<?php
error_reporting
(E_ALL);
?>
Dit boven in je script te zetten krijg je alle foutmeldingen ^O^ . (weghalen na serieus gebruik ).
The_Terminatorzaterdag 6 augustus 2011 @ 18:04
quote:
0s.gif Op zaterdag 6 augustus 2011 17:23 schreef basmens het volgende:

[ code verwijderd ]

beste kenners. Ben nu bezig de code te schrijven om met een knop naar de andere maand te switchen en deze variabele $maandweergeeft daar ook in te gebruiken. Het probleem is nu dat de pagina wel begint in augustus en met de knop verandert in september, maar als ik nogmaals op de knop volgende druk verandert september niet in oktober. Lijkt mij om dat post dan al een waarde heeft en dus niet nogmaals verhoogt.
Ik heb deze code echter uit een voorbeeld van een kalender en daar werkte de code wel.

Mis ik iets of is er een meer practische oplossing?

thnx alvast
Dit werkt:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$month_names 
= array(=> "januari"=> "februari"=> "maart"=> "april"=> "mei"=> "juni",
                     
=> "juli"=> "augustus"=> "september"10 => "oktober"11 => "november"12 => "december");
                     
$sel_month date("n");

if(isset(
$_POST['current_month']) && is_numeric($_POST['current_month']) && $_POST['current_month'] > 0) {
    
$sel_month $_POST['current_month'];
}

if(isset(
$_POST['volgende'])) {
    
$sel_month = ($sel_month == 12) ? : ($sel_month 1);
}

echo 
'geselecteerde maand: ' $month_names[$sel_month];
?>
<form action="index.php" method="post">
    <input type="hidden" id="current_month" name="current_month" value="<?php print is_numeric($sel_month) ? $sel_month 0?>" />
    <input type="submit" name="volgende" value=">" />
</form>

De variable wordt vastgehouden in een onzichtbaar element, het script voegt daar steeds 1 bij zodra er op de knop wordt geklikt. Zodra 12 is bereikt begint de telling weer bij 1.

[ Bericht 14% gewijzigd door The_Terminator op 06-08-2011 18:37:30 ]
GlowMousezaterdag 6 augustus 2011 @ 18:06
Regel 11 is niet zo mooi en de regelnummering ook niet nee; fixed; edit je post om je post te fixen

[ Bericht 22% gewijzigd door GlowMouse op 06-08-2011 18:21:16 ]
cablegunmasterzaterdag 6 augustus 2011 @ 18:09
http://www.learnphponline.com/php-basics/php-echo-vs-print

Heerlijk nutteloos, echo vs print. :P 20% snelheids verschil? in grote loops O+ . :9
The_Terminatorzaterdag 6 augustus 2011 @ 18:26
quote:
0s.gif Op zaterdag 6 augustus 2011 18:06 schreef GlowMouse het volgende:
Regel 11 is niet zo mooi en de regelnummering ook niet nee; fixed; edit je post om je post te fixen
Idd, slordig foutje, was niet de bedoeling. Post zojuist aangepast.
basmenszaterdag 6 augustus 2011 @ 22:04
@komttijd: had ik ook even aan gedacht, maar toen ik die regel in een include_once zette maakte het geen verschil :s
quote:
0s.gif Op zaterdag 6 augustus 2011 17:58 schreef GlowMouse het volgende:
$_SERVER['index1.php?locatie=plan'] zal ook niet bestaan.
jewel..... waarom denk je dat?

@cablegunmaster. zal dat debuggen onthouden, kan altijd van pas komen.
@the_terminator thnx, werkt! (nu nog kijken of ik kan snappen wat er in jouw script gebeurt
mstxzaterdag 6 augustus 2011 @ 22:07
quote:
0s.gif Op zaterdag 6 augustus 2011 22:04 schreef basmens het volgende:
[..]

jewel..... waarom denk je dat?
Wat voor waarde heeft die variabele dan? :?
The_Terminatorzaterdag 6 augustus 2011 @ 22:09
quote:
0s.gif Op zaterdag 6 augustus 2011 22:04 schreef basmens het volgende:
@komttijd: had ik ook even aan gedacht, maar toen ik die regel in een include_once zette maakte het geen verschil :s

[..]

jewel..... waarom denk je dat?
De array $_SERVER bestaat wel, echter wat jij eruit wil halen niet. Zie ook: http://php.net/manual/en/reserved.variables.server.php
basmenszaterdag 6 augustus 2011 @ 22:10
ah oke, ik heb em guys.
Bedankt voor de hulp wederom!!!
Lightzaterdag 6 augustus 2011 @ 23:50
quote:
12s.gif Op zaterdag 6 augustus 2011 18:09 schreef cablegunmaster het volgende:
http://www.learnphponline.com/php-basics/php-echo-vs-print

Heerlijk nutteloos, echo vs print. :P 20% snelheids verschil? in grote loops O+ . :9
Echo is sneller (en minder typen) maar er zijn situaties waarin echo niet werkt en print wel.

1
2
3
4
5
6
7
8
<?php

$title 
'Demo';
$showTitle true;

$showTitle && echo 'Titel: '$title;

?>
Dit werkt niet (het compileert niet eens). Als je echo door print vervangt, werkt het wel, en doet het wat je verwacht.
Thomasszondag 7 augustus 2011 @ 01:37
Relevant:

http://fabien.potencier.o(...)-which-one-is-faster

maar vooral

http://scientopia.org/blo(...)mature-optimization/
cablegunmastermaandag 8 augustus 2011 @ 16:00
kan ik de increment counter ook ophogen met een fixed aantal? want ik wil een Tabel ergens anders laten beginnen met aantal. omdat de boekhouding zo werkt :P.
GlowMousemaandag 8 augustus 2011 @ 16:10
http://dev.mysql.com/doc/(...)_increment_increment
Thomassmaandag 8 augustus 2011 @ 16:33
quote:
0s.gif Op maandag 8 augustus 2011 16:00 schreef cablegunmaster het volgende:
kan ik de increment counter ook ophogen met een fixed aantal? want ik wil een Tabel ergens anders laten beginnen met aantal. omdat de boekhouding zo werkt :P.
quote:
Ik denk dat hij bedoelt ALTER TABLE blabla AUTO_INCREMENT = 1000
GlowMousemaandag 8 augustus 2011 @ 16:35
Ik denk t ook nu ik zijn post nog een keer leest. Dat is wel minder spannend, want zelfs in phpMyAdmin zit daar een invulvakje voor.
cablegunmastermaandag 8 augustus 2011 @ 16:36
quote:
0s.gif Op maandag 8 augustus 2011 16:35 schreef GlowMouse het volgende:
Ik denk t ook nu ik zijn post nog een keer leest. Dat is wel minder spannend, want zelfs in phpMyAdmin zit daar een invulvakje voor.
Invulvakje niet gezien. :P

quote:
0s.gif Op maandag 8 augustus 2011 16:33 schreef Thomass het volgende:


Ik denk dat hij bedoelt ALTER TABLE blabla AUTO_INCREMENT = 1000
Jep Danke :D! moest even op de naam komen van AUTO_INCREMENT. :P

ALTER TABLE table AUTO_INCREMENT = 2980

Fixed :).

[ Bericht 13% gewijzigd door cablegunmaster op 08-08-2011 16:55:25 ]
Cue_dinsdag 9 augustus 2011 @ 08:38
Vraagje over een sql qry

Ik heb de qry:
1
2
3
select lpad(trim(debnr),6,' ') as id, nvl(naam, '-' ) as fullname, count(distinct(vlootnr)) as trucks , count(*) as activities
from tabel left outer join ander_tabel on debnr = debnr
group by debnr, naam
Komt de volgende data uit:

ID FULLNAME TRUCKS ACTIVITIES
------ ----------------------------------- ------------------ ------------------
(leeg) - 4 6
0 - 28 117
12 Naam bedrijf 56 2853
188 Naam bedrijf 1 40

Waar (leeg) staat, ide is dus ook echt leeg.

Wat ik nu wil is dat ik de gegevens krijg van die eerste regel. dus dat ik eigenlijk een select * van tabel kan maken. Maar enkel van regel waar id = '' , naam is - , waar er 4 trucks zijn en 6 activiteiten.
GlowMousedinsdag 9 augustus 2011 @ 09:41
Daar moet je een nieuwe query voor uitvoeren; ipv WHERE kun je HAVING count(distinct(vlootnr))=4 AND count(*) = 6 gebruiken.
Cue_dinsdag 9 augustus 2011 @ 10:02
de having.. dat was hem :D
MrNileswoensdag 10 augustus 2011 @ 11:53
Ik heb van iemand een script gekregen om een wachtwoord te kunnen wijzigen.
Alleen werkt het niet en degene die het voor me heeft gemaakt krijg ik niet te pakken.
Zouden jullie me kunnen helpen om het te fixen.

Het script doet niets
krijg geen echo helemaal niets
zodra ik op de button wachtwoord opslaan druk dan krijg ik de index pagina
wat gaat er fout...want ik snap m niet
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
session_start();

function change_password()
{
    $G_name=$_SESSION['G_name'];

$result = mysql_query("SELECT * FROM gebruikers WHERE G_name='$G_name' ");
while($row = mysql_fetch_array($result))
$G_id=$row['G_id'];

    //$G_id = $_SESSION['G_id']; // ga er ff vanuit dat deze ook bestaat

    if (count($_POST) > 0 ) // zo check ik altijd de post.
    {
        //eerst oude wachtwoord ophalen
        $query = mysql_query("SELECT wachtwoord FROM gebruikers WHERE G_id='".mysql_real_escape_string($G_id)."' ");
        if (mysql_num_rows($query) == 1)
        {
            //hier bestaat de gebruiker en heb je het wachtwoord
            $result = mysql_fetch_array($query);

            //controle of opgegeven "oude" wachtwoord gelijk is aan die in de database en de twee nieuwe wachtwoorden gelijk zijn
            if(($result['wachtwoord'] == md5($_POST['oud_wachtwoord'])) && ($_POST['wachtwoord'] == $_POST['wachtwoord_herh']))
            {
                //alles is goed, we kunnen gaan updaten
                $query = mysql_query("UPDATE gebruikers SET wachtwoord='".md5(mysql_real_escape_string($_POST['wachtwoord']))."' WHERE G_id = '".mysql_real_escape_string($G_id)."' ");

                echo "Het wachtwoord is aangepast";

            } else {
                echo "Opgegeven oud wachtwoord is niet goed, of de nieuwe komen niet met elkaar overeen";
            }

        } else {
            echo "Gebruiker bestaat niet";     //Eigenlijk zou deze melding nooit hoeven, omdat je ingelogd bent, maar hackers kunnen een sessie kopieren of aanmaken of posten naar dit formulier, en dan bestaat G_id dus niet.
        }
    }

    ?>

<form action=" " method="post">Oud wachtwoord:<br />
<input type="password" name="oud_wachtwoord" /><br /> Nieuw wachtwoord:<br />
<input type="password" name="wachtwoord" /><br />Nieuw wachtwoord herhalen:<br />
<input type="password" name="wachtwoord_herh" /><br /><br />
<input type="submit" value="Wachtwoord opslaan" />
</form>
<?php
}


[ Bericht 12% gewijzigd door MrNiles op 10-08-2011 12:01:52 ]
The_Terminatorwoensdag 10 augustus 2011 @ 12:04
quote:
0s.gif Op woensdag 10 augustus 2011 11:53 schreef MrNiles het volgende:
Ik heb van iemand een script gekregen om een wachtwoord te kunnen wijzigen.
Alleen werkt het niet en degene die het voor me heeft gemaakt krijg ik niet te pakken.
Zouden jullie me kunnen helpen om het te fixen.

Het script doet niets
krijg geen echo helemaal niets
zodra ik op de button wachtwoord opslaan druk dan krijg ik de index pagina
wat gaat er fout...want ik snap m niet
[ code verwijderd ]

Zet dit eens aan het begin van het script en probeer het dan nog eens:

error_reporting(E_ALL);
ini_set('display_errors', '1');

Eventuele errors zou je hier kunnen posten.

Heb je het overigens ook getest zonder dat het in een functie staat?
boem-dikkiewoensdag 10 augustus 2011 @ 12:15
quote:
0s.gif Op woensdag 10 augustus 2011 11:53 schreef MrNiles het volgende:
Ik heb van iemand een script gekregen om een wachtwoord te kunnen wijzigen.
Alleen werkt het niet en degene die het voor me heeft gemaakt krijg ik niet te pakken.
Zouden jullie me kunnen helpen om het te fixen.

Het script doet niets
krijg geen echo helemaal niets
zodra ik op de button wachtwoord opslaan druk dan krijg ik de index pagina
wat gaat er fout...want ik snap m niet
[ code verwijderd ]

Komt het niet omdat je nergens de wachtwoorden die je invult in je variabelen zet?
lifeblindwoensdag 10 augustus 2011 @ 12:21
Zo te zien wordt de functie change_password() niet eens aangeroepen, dan doet ie ook vrij weinig.
The_Terminatorwoensdag 10 augustus 2011 @ 12:27
quote:
5s.gif Op woensdag 10 augustus 2011 12:15 schreef boem-dikkie het volgende:

[..]

Komt het niet omdat je nergens de wachtwoorden die je invult in je variabelen zet?
Zo te zien komt dat direct uit de POST array. Natuurlijk geen goede manier van doen aangezien je niet eens weet of die variabelen wel bestaan. En 'if (count($_POST) > 0 ) // zo check ik altijd de post.' is geen manier om te checken of bepaalde variabelen bestaan, het triggert al zodra er nonsense wordt gepost.

quote:
0s.gif Op woensdag 10 augustus 2011 12:21 schreef lifeblind het volgende:
Zo te zien wordt de functie change_password() niet eens aangeroepen, dan doet ie ook vrij weinig.
De form staat ook in de functie, en ik haal uit de post dat de form wel wordt weergegeven: 'zodra ik op de button wachtwoord opslaan druk dan krijg ik de index pagina'. Ik neem aan dat de functie wel ergens wordt aangeroepen.
lifeblindwoensdag 10 augustus 2011 @ 12:31
quote:
0s.gif Op woensdag 10 augustus 2011 12:27 schreef The_Terminator het volgende:

[..]

Zo te zien komt dat direct uit de POST array. Natuurlijk geen goede manier van doen aangezien je niet eens weet of die variabelen wel bestaan. En 'if (count($_POST) > 0 ) // zo check ik altijd de post.' is geen manier om te checken of bepaalde variabelen bestaan, het triggert al zodra er nonsense wordt gepost.

[..]

De form staat ook in de functie, en ik haal uit de post dat de form wel wordt weergegeven: 'zodra ik op de button wachtwoord opslaan druk dan krijg ik de index pagina'. Ik neem aan dat de functie wel ergens wordt aangeroepen.
De functie kan initieel wel aangeroepen worden zodat het form zichtbaar is, maar nadat er op submit gedrukt is, moet het stukje script wat de verwerking doet, OOK die functie aanroepen omdat de verwerking verder namelijk in die functie staat...

Sowieso erg onhandig om het form in de functie te zetten die de verwerking doet...
remi1986woensdag 10 augustus 2011 @ 12:33
quote:
0s.gif Op woensdag 10 augustus 2011 12:31 schreef lifeblind het volgende:

[..]

De functie kan initieel wel aangeroepen worden zodat het form zichtbaar is, maar nadat er op submit gedrukt is, moet het stukje script wat de verwerking doet, OOK die functie aanroepen omdat de verwerking verder namelijk in die functie staat...

Sowieso erg onhandig om het form in de functie te zetten die de verwerking doet...
De action is ook leeg. Misschien wordt naar hetzelfde bestand gepost, maar omdat de afhandeling in een functie staat en niet wordt aangeroepen, gebeurt er niks.

@MrNiles, als je naar hetzelfde bestand post, moet je eerst controleren of die post variabelen bestaan en dan de functie aanroepen.
lifeblindwoensdag 10 augustus 2011 @ 12:34
quote:
0s.gif Op woensdag 10 augustus 2011 12:33 schreef remi1986 het volgende:

[..]

De action is ook leeg. Misschien wordt naar hetzelfde bestand gepost, maar omdat de afhandeling in een functie staat en niet wordt aangeroepen, gebeurt er niks.
Dat bedoel ik inderdaad. De action mag gewoon leeg zijn, dan post ie gewoon naar zichzelf. Maar zonder dat er iets met die post gedaan wordt, gebeurt er vrij weinig.
MrNileswoensdag 10 augustus 2011 @ 16:03
met velen dank aan remi is het gelukt
zat m inderdaad in de form action, die mag voor IE niet leeg zijn
lifeblindwoensdag 10 augustus 2011 @ 16:31
quote:
0s.gif Op woensdag 10 augustus 2011 16:03 schreef MrNiles het volgende:
met velen dank aan remi is het gelukt
zat m inderdaad in de form action, die mag voor IE niet leeg zijn
:{ Sinds wanneer? action moet wel in je form tag staan, maar hij mag gewoon leeg zijn hoor (leeg als in "", je had er zelf een spatie in staan in je voorbeeld.
Intrepiditywoensdag 10 augustus 2011 @ 16:33
quote:
0s.gif Op woensdag 10 augustus 2011 16:31 schreef lifeblind het volgende:

[..]

:{ Sinds wanneer? action moet wel in je form tag staan, maar hij mag gewoon leeg zijn hoor (leeg als in "", je had er zelf een spatie in staan in je voorbeeld.
Volgens de specs mag dat inderdaad, maar IE pikt het niet. Zelf ook al eens meegemaakt.
lifeblinddonderdag 11 augustus 2011 @ 11:48
quote:
0s.gif Op woensdag 10 augustus 2011 16:33 schreef Intrepidity het volgende:

[..]

Volgens de specs mag dat inderdaad, maar IE pikt het niet. Zelf ook al eens meegemaakt.
Ah oke, nu je het zegt kan ik me er vaag wel iets van herinneren, maar goed, voor de zekerheid vul ik altijd wel gewoon de action in, dan weet ik zelf 100% zeker dat ie goed gaat.
MrNilesvrijdag 12 augustus 2011 @ 08:27
waarschijnlijk een hele domme vraag..maar ik stel m toch maar

kan je database ook anders zijn dan localhost?
is het dus mogelijk om op 1 site een database te onderhouden en deze op een hele andere url weer uit te lezen?
Sitethiefvrijdag 12 augustus 2011 @ 08:49
Ja, dan moet je gewoon het adres geven van de plek waar die database staat.
cablegunmastervrijdag 12 augustus 2011 @ 08:50
quote:
0s.gif Op vrijdag 12 augustus 2011 08:27 schreef MrNiles het volgende:
waarschijnlijk een hele domme vraag..maar ik stel m toch maar

kan je database ook anders zijn dan localhost?
is het dus mogelijk om op 1 site een database te onderhouden en deze op een hele andere url weer uit te lezen?
quote:
0s.gif Op vrijdag 12 augustus 2011 08:49 schreef Sitethief het volgende:
Ja, dan moet je gewoon het adres geven van de plek waar die database staat.
Mits je provider dat toestaat :) . Sommige providers wilen hierover best moeilijk doen. blabla beveiliging en zulks zeiken ze dan over. hetgeen in mijn ogen ongegrond is .
MrNilesvrijdag 12 augustus 2011 @ 08:56
quote:
0s.gif Op vrijdag 12 augustus 2011 08:50 schreef cablegunmaster het volgende:

[..]


[..]

Mits je provider dat toestaat :) . Sommige providers wilen hierover best moeilijk doen. blabla beveiliging en zulks zeiken ze dan over. hetgeen in mijn ogen ongegrond is .
ok..das dan wel goed om rekening mee te houden
ik heb nu een cheap provider..die nogal wat dingen niet toelaat (geen cronjobs, geen unzip)
dus dikke kans dat dit ook niet mag...ff uitproberen
lifeblindvrijdag 12 augustus 2011 @ 09:52
Als je database server een andere is dan je webserver is het heel goed mogelijk dat je iets anders dan lovalhost invult :P Ik denk dat bij de meeste bedrijven de database server in ieder geval los staat van de webserver trouwens, op mijn werk in ieder geval wel.
Chandlervrijdag 12 augustus 2011 @ 15:50
Je zou natuurlijk ook alle data kunnen opvragen via XML ;) de ene server de database + xml en de andere de site? :P
KomtTijd...vrijdag 12 augustus 2011 @ 17:09
quote:
0s.gif Op vrijdag 12 augustus 2011 08:56 schreef MrNiles het volgende:

[..]

ok..das dan wel goed om rekening mee te houden
ik heb nu een cheap provider..die nogal wat dingen niet toelaat (geen cronjobs, geen unzip)
dus dikke kans dat dit ook niet mag...ff uitproberen
Lijkt me stug dat ze daar moeilijk over doen. Scheelt hun alleen maar servergebruik
De database van een goedkope hosting extern benaderen, daar doen ze vaak wel moeilijk over...
GlowMousevrijdag 12 augustus 2011 @ 17:12
Goedkope hosting laat je helemaal geen verbindingen naar buiten leggen ivm veiligheid :P
urselmaandag 15 augustus 2011 @ 11:09
Ik snap het even niet helemaal meer. :')

Ik maak gebruik van het Zend Framework. Ben bezig met het opzetten van een webservice.
Ik heb het in een omgeving werkend als module. Ben het momenteel om aan het zetten om het in mijn eigen library te kunnen gebruiken, maar dan gaat het verkeerd.

De foutmelding die ik krijg:

quote:
PHP Fatal error: SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://localhost/LTFU/index.php/wsdl' : Premature end of data in tag html line 1
Goed, mijn wsdl zou niet goed zijn zegt die. Als ik de url http://localhost/LTFU/index.php/wsdl in de browser plak krijg ik wel netjes een XML te zien. En als ik hem door een online validator heen haal krijg ik als antwoord dat die perfect is. -O-

Alle stappen al nagelopen en het loopt continue spaak bij het inladen van de wsdl.

Voor de zekerheid een werkende en de nietwerkende geupload
Werkend
Niet werkend

Als ik deze 2 files met elkaar diff dan krijg ik alleen de verschillen in de URL, wat natuurlijk klopt.
Laat ik bij het ophalen van de WSDL verwijzen naar de werkende wsdl dan loopt het proces ook goed.

Maar wat klopt er dan niet in de XML. :?
GlowMousemaandag 15 augustus 2011 @ 11:26
waarom laad je hem in via http:// en niet via het filesystem?
urselmaandag 15 augustus 2011 @ 11:32
quote:
0s.gif Op maandag 15 augustus 2011 11:26 schreef GlowMouse het volgende:
waarom laad je hem in via http:// en niet via het filesystem?
De WSDL wordt automatisch gegenereerd.
GlowMousemaandag 15 augustus 2011 @ 11:34
op http://localhost kan dmv vhosts heel wat anders draaien dan op http://www.solutia.nl Dat zie je al aan "Premature end of data in tag html", want in jouw code zit helemaal geen html tag op regel 1 en bij een willekeurige andere pagina vaak wel.

probeer eens een php-script: echo file_get_contents('http://localhost/LTFU/index.php');

dynamisch genereren kan ook met include, dat scheelt je webserver weer werk.
Catbertmaandag 15 augustus 2011 @ 11:51
quote:
0s.gif Op vrijdag 12 augustus 2011 08:50 schreef cablegunmaster het volgende:
Mits je provider dat toestaat :) . Sommige providers wilen hierover best moeilijk doen. blabla beveiliging en zulks zeiken ze dan over. hetgeen in mijn ogen ongegrond is .
Niks ongegronds aan databaseservers niet van buiten benaderbaar te maken.

quote:
0s.gif Op vrijdag 12 augustus 2011 17:09 schreef KomtTijd... het volgende:
Lijkt me stug dat ze daar moeilijk over doen. Scheelt hun alleen maar servergebruik
De database van een goedkope hosting extern benaderen, daar doen ze vaak wel moeilijk over...
En terecht.
MrNilesmaandag 15 augustus 2011 @ 11:56
quote:
0s.gif Op maandag 15 augustus 2011 11:51 schreef Catbert het volgende:

[..]

Niks ongegronds aan databaseservers niet van buiten benaderbaar te maken.

[..]

En terecht.
dus eigenlijk is het niet sowieso niet slim om het te proberen
maaruh kun je het niet omzeilen met curl?


maar of zelf wat uit te testen..kan ik ergens stukje code de exacte locatie van de database opvragen?
Intrepiditymaandag 15 augustus 2011 @ 11:59
quote:
0s.gif Op maandag 15 augustus 2011 11:51 schreef Catbert het volgende:

[..]

Niks ongegronds aan databaseservers niet van buiten benaderbaar te maken.
Inderdaad. Onze database-servers zijn geen van allen van buiten benaderbaar. En als er dan toch van buitenaf gegevens nodig zijn komt er een webservice, geen directe DB-toegang.
Catbertmaandag 15 augustus 2011 @ 12:02
quote:
0s.gif Op maandag 15 augustus 2011 11:56 schreef MrNiles het volgende:
dus eigenlijk is het niet sowieso niet slim om het te proberen
maaruh kun je het niet omzeilen met curl?
Hoe bedoel je omzeilen met Curl? Je kunt gewoon niet van buitenaf bij die servers omdat er niks op die poort luistert.

quote:
maar of zelf wat uit te testen..kan ik ergens stukje code de exacte locatie van de database opvragen?
Wat bedoel je met 'exacte locatie'? De database luistert over het algemeen alleen op localhost, of op een andere hostname, en die gegevens krijg je van je provider. Als het goed ingesteld staat is het niet te achterhalen waar de database fysiek staat, en je hebt er ook niks aan dat te weten.
urselmaandag 15 augustus 2011 @ 12:08
quote:
0s.gif Op maandag 15 augustus 2011 11:34 schreef GlowMouse het volgende:
op http://localhost kan dmv vhosts heel wat anders draaien dan op http://www.solutia.nl Dat zie je al aan "Premature end of data in tag html", want in jouw code zit helemaal geen html tag op regel 1 en bij een willekeurige andere pagina vaak wel.

probeer eens een php-script: echo file_get_contents('http://localhost/LTFU/index.php');

dynamisch genereren kan ook met include, dat scheelt je webserver weer werk.
Het draait allebei op localhost (de werkende en niet werkende). De files staan alleen op die url zodat jullie ze kunnen bekijken.
Heb het probleem gevonden door die echo. De niet werkende site vereist een login bij de start. Omdat ik vanuit de browser dus was ingelogged kon ik de XML zien. De listener zelf moet ook nog inloggen en kreeg dus met die echo netjes inlog scherm te zien. :')

Inloggen uitgeschakeld en het werkt. Soms kan je toch zo heerlijk in een verkeerde hoek zoeken. _O- :@

Ga ook gelijk even kijken naar die include advies. Bedankt daarvoor :7
Dale.woensdag 17 augustus 2011 @ 14:15
Vraagje...

Queued MySQL events? Ik heb namelijk een routine die om de 5 seconde wordt uitgevoerd. Het kan soms gebeuren dat deze routine langer dan 5 seconde duurt. Nu wil ik weten als de routine langer duurt dan 5 seconde queued MySQL dan het event? Of slaat hij het gewoon over?

Wanneer die queued... is het mogelijk om het event dan over te slaan?
GlowMousewoensdag 17 augustus 2011 @ 14:29
Wat voor events?
Pakspulwoensdag 17 augustus 2011 @ 14:31
quote:
7s.gif Op woensdag 17 augustus 2011 14:15 schreef Dale. het volgende:
Vraagje...

Queued MySQL events? Ik heb namelijk een routine die om de 5 seconde wordt uitgevoerd. Het kan soms gebeuren dat deze routine langer dan 5 seconde duurt. Nu wil ik weten als de routine langer duurt dan 5 seconde queued MySQL dan het event? Of slaat hij het gewoon over?

Wanneer die queued... is het mogelijk om het event dan over te slaan?
variable isBusy opnemen? Wanneer die ziet dat die true is dan de query overslaan en anders uitvoeren?
KomtTijd...woensdag 17 augustus 2011 @ 14:41
quote:
7s.gif Op woensdag 17 augustus 2011 14:15 schreef Dale. het volgende:
Vraagje...

Queued MySQL events? Ik heb namelijk een routine die om de 5 seconde wordt uitgevoerd. Het kan soms gebeuren dat deze routine langer dan 5 seconde duurt. Nu wil ik weten als de routine langer duurt dan 5 seconde queued MySQL dan het event? Of slaat hij het gewoon over?

Wanneer die queued... is het mogelijk om het event dan over te slaan?
Natuurlijk wordt er gequeued. Anders zou iedere website vastlopen als twee bezoekers tegelijk (of vlak na elkaar) een pagina opvragen.
GIwoensdag 17 augustus 2011 @ 14:43
Je kan, in principe kijken hoe lang je script al loopt, en als het langer dan vijf seconden is dan niet het sql statement uitvoern ?

1
2
3
4
5
6
7
8
9
10
11
<?php


$start 
= (float) array_sum(explode(' ',microtime())); 
//--code uitvoeren
$end = (float) array_sum(explode(' ',microtime())); 
if(
$verschil<5){
//-sqlstatement
}

?>
GlowMousewoensdag 17 augustus 2011 @ 14:45
quote:
3s.gif Op woensdag 17 augustus 2011 14:41 schreef KomtTijd... het volgende:

[..]

Natuurlijk wordt er gequeued. Anders zou iedere website vastlopen als twee bezoekers tegelijk (of vlak na elkaar) een pagina opvragen.
queries worden niet gequeued hoor
quote:
3s.gif Op woensdag 17 augustus 2011 14:43 schreef GI het volgende:
Je kan, in principe kijken hoe lang je script al loopt, en als het langer dan vijf seconden is dan niet het sql statement uitvoern ?
[ code verwijderd ]

Dan moet je je query wel asynchroon draaien, anders kom je al niet bij die code. Ik ben weinig scripts tegengekomen die queries asynchroon draaien.
quote:
0s.gif Op woensdag 17 augustus 2011 14:31 schreef Pakspul het volgende:

[..]

variable isBusy opnemen? Wanneer die ziet dat die true is dan de query overslaan en anders uitvoeren?
User-defined variables are connection-specific.
Pakspulwoensdag 17 augustus 2011 @ 14:46
quote:
3s.gif Op woensdag 17 augustus 2011 14:43 schreef GI het volgende:
Je kan, in principe kijken hoe lang je script al loopt, en als het langer dan vijf seconden is dan niet het sql statement uitvoern ?
[ code verwijderd ]

Bij PHP werkt dat toch anders, als ik om de 100msec wil kijken hoelang het script loopt dan gaat mij dat liet lukken als ik een sleep(10) heb aangeroepen. Mooiste zou zijn als PHP threads and zogenaamde backgroundworkers kan laten runnen, maar dat is voor PHP niet echt bepaald nodig.
GIwoensdag 17 augustus 2011 @ 14:47
quote:
0s.gif Op woensdag 17 augustus 2011 14:45 schreef GlowMouse het volgende:
Dan moet je je query wel asynchroon draaien, anders kom je al niet bij die code. Ik ben weinig scripts tegengekomen die queries asynchroon draaien.
Ik ging er eigenlijk vanuit dat
quote:
Ik heb namelijk een routine
een php routine zou zijn die hij om de zoveel tijd aanriep. Maar je kan het ook lezen als een mysql routine die getimed loopt. Indien dat het geval is dan heeft mijn code weinig nut.
Tijnwoensdag 17 augustus 2011 @ 14:48
Ik zou vanuit je script een bestandje aanmaken voordat de query wordt uitgevoerd en weer weghalen zodra de query voltooid is. Je kunt dan controleren of het bestandje bestaat en alleen als 'ie niet bestaat de query runnen.
Pakspulwoensdag 17 augustus 2011 @ 14:57
quote:
14s.gif Op woensdag 17 augustus 2011 14:48 schreef Tijn het volgende:
Ik zou vanuit je script een bestandje aanmaken voordat de query wordt uitgevoerd en weer weghalen zodra de query voltooid is. Je kunt dan controleren of het bestandje bestaat en alleen als 'ie niet bestaat de query runnen.
Kun je ook een settings tabel in je database voor gebruiken, dan sla je daar je variabel op :P
Farenjiwoensdag 17 augustus 2011 @ 15:06
quote:
14s.gif Op woensdag 17 augustus 2011 14:48 schreef Tijn het volgende:
Ik zou vanuit je script een bestandje aanmaken voordat de query wordt uitgevoerd en weer weghalen zodra de query voltooid is. Je kunt dan controleren of het bestandje bestaat en alleen als 'ie niet bestaat de query runnen.
Daar kun je beter een lockfile voor gebruiken.
http://php.net/manual/en/function.flock.php
Idee is dat je een exclusief lock op een bestand hebt zolang je script loopt. Mocht het script halverwege crashen dan blijft het bestand wel staan maar verdwijnt het lock dus kan een ander proces weer een lock verkrijgen. Met een gewone file en een check op het bestaan, of een veldje in de database zou je in zo'n geval een deadlock krijgen.
Dale.woensdag 17 augustus 2011 @ 15:23
quote:
0s.gif Op woensdag 17 augustus 2011 14:29 schreef GlowMouse het volgende:
Wat voor events?
MySQL events :)

maar...

http://dev.mysql.com/doc/refman/5.5/en/events-overview.html
quote:
An event performs a specific action according to a schedule. This action consists of an SQL statement, which can be a compound statement in a BEGIN ... END block if desired (see Section 12.7, “MySQL Compound-Statement Syntax”). An event's timing can be either one-time or recurrent. A one-time event executes one time only. A recurrent event repeats its action at a regular interval, and the schedule for a recurring event can be assigned a specific start day and time, end day and time, both, or neither. (By default, a recurring event's schedule begins as soon as it is created, and continues indefinitely, until it is disabled or dropped.)

If a repeating event does not terminate within its scheduling interval, the result may be multiple instances of the event executing simultaneously. If this is undesirable, you should institute a mechanism to prevent simultaneous instances. For example, you could use the GET_LOCK() function, or row or table locking.
Even mechanisme inbouwen dus...
boem-dikkiewoensdag 17 augustus 2011 @ 15:29
Ik ben wat aan het kloten met OOP en ik krijg een error bij deze code.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
class Gastenboek {
    public 
$naam$bericht;
    public function 
__construct ($naam$bericht) {
        
$this->Naam $naam;
        
$this->Bericht $bericht;
    }
    public function 
Insert () 
        {
            
$sql "INSERT INTO gastenboek (Naam, Bericht) VALUES ('" mysql_real_escape_string($This->Naam) . "', '" mysql_real_escape_string($This->Bericht) . "')";
            if (!
mysql_query($sql)) { $melding  "<p>Error.</p>"; }
            else { 
$melding  "<p>Bericht is succesvol toegevoegd.</p>"; }
        }
}
?>

De error die ik krijg is:
1Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in *** on line 5

Line 5 refereert naar 'class Gastenboek {', ik zou niet weten wat er fout gaat eigenlijk.
GlowMousewoensdag 17 augustus 2011 @ 15:38
boem: php4? En let op hoofdletters.
boem-dikkiewoensdag 17 augustus 2011 @ 15:39
quote:
0s.gif Op woensdag 17 augustus 2011 15:38 schreef GlowMouse het volgende:
boem: php4? En let op hoofdletters.
Ik heb helemaal geen verstand van OOP e.d. ik ben een YT-video aan het bekijken en zelf aan het proberen. :')
U.N.K.L.E.woensdag 17 augustus 2011 @ 15:39
php 4 wil geen __construct functie idd. je kunt ipv dat de classenaam als functie gebruiken als constructor.
U.N.K.L.E.woensdag 17 augustus 2011 @ 15:40
ook public,private,protected kan volgens mij niet in php4.
helaas.
boem-dikkiewoensdag 17 augustus 2011 @ 15:41
Ugh. Dus het komt door mijn server?
U.N.K.L.E.woensdag 17 augustus 2011 @ 15:42
Doe even een nieuwe pagina met dit:
1
2
<?php
phpinfo();

en kijk welke php versie daar staat :)
boem-dikkiewoensdag 17 augustus 2011 @ 15:43
Ja, PHP4.
GlowMousewoensdag 17 augustus 2011 @ 15:46
whehehe, loop je zomaar 7 jaar achter.
U.N.K.L.E.woensdag 17 augustus 2011 @ 15:47
OOP is niet leuk in php4 :P dus upgrade even naar 5.2 ofzo, dan kun je goed oefenen :)
boem-dikkiewoensdag 17 augustus 2011 @ 15:47
Ik heb het nu zo maar krijg dezelfde error als zonet.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
class Gastenboek {
    var 
$naam$bericht
    public function 
Gastenboek($naam$bericht){
        
$this->Naam $naam;
        
$this->Bericht $bericht;
    }
    public function 
Insert () 
        {
            
$sql "INSERT INTO gastenboek (Naam, Bericht) VALUES ('" mysql_real_escape_string($This->Naam) . "', '" mysql_real_escape_string($This->Bericht) . "')";
            if (!
mysql_query($sql)) { $melding  "<p>Error.</p>"; }
            else { 
$melding  "<p>Bericht is succesvol toegevoegd.</p>"; }
        }
}
?>
U.N.K.L.E.woensdag 17 augustus 2011 @ 15:48
omdat public ook niet kan in php 4. gewoon function blabla(){} dus :)

en haal die hoofdletters even weg na je $this
boem-dikkiewoensdag 17 augustus 2011 @ 15:49
quote:
0s.gif Op woensdag 17 augustus 2011 15:47 schreef U.N.K.L.E. het volgende:
OOP is niet leuk in php4 :P dus upgrade even naar 5.2 ofzo, dan kun je goed oefenen :)
Domme vraag: Kan ik gewoon mijn 'hosting-bedrijf' mailen met de vraag of ze dit voor me kunnen updaten? Kan ik niet zelf doen toch?
U.N.K.L.E.woensdag 17 augustus 2011 @ 15:51
quote:
10s.gif Op woensdag 17 augustus 2011 15:49 schreef boem-dikkie het volgende:

[..]

Domme vraag: Kan ik gewoon mijn 'hosting-bedrijf' mailen met de vraag of ze dit voor me kunnen updaten? Kan ik niet zelf doen toch?
ja dat moeten zij doen ja. Beetje vreemd wel dat ze nog op php4 draaien, misschien is dat een optie ofzo. In ieder geval moet dat server-side, dus bij hun, geregeld worden :)
GlowMousewoensdag 17 augustus 2011 @ 16:01
of stem met je voeten
U.N.K.L.E.woensdag 17 augustus 2011 @ 16:05
ik snap de post boven mij niet :')
KomtTijd...woensdag 17 augustus 2011 @ 16:06
Dat je je provider moet schoppen, als'ie nog steeds PHP4 draait.
Pakspulwoensdag 17 augustus 2011 @ 16:11
quote:
10s.gif Op woensdag 17 augustus 2011 15:47 schreef boem-dikkie het volgende:
Ik heb het nu zo maar krijg dezelfde error als zonet.
[ code verwijderd ]

Pleur error_reporting(E_ALL); ook nog even aan, want je definieert eerst variabelen zonder hoofdletter en roept dan met hoofdletter aan (zie regel: 6,7)
boem-dikkiewoensdag 17 augustus 2011 @ 16:13
Zo. Geregeld. PHP 5.2.4.
boem-dikkiewoensdag 17 augustus 2011 @ 16:13
quote:
14s.gif Op woensdag 17 augustus 2011 16:06 schreef KomtTijd... het volgende:
Dat je je provider moet schoppen, als'ie nog steeds PHP4 draait.
Je kon het kiezen. Ik ben daar al een tijd klant en mensen die voor een bepaalde datum al klant waren blijven PHP4 draaien tot je dat zelf aanpast.
boem-dikkiewoensdag 17 augustus 2011 @ 16:14
quote:
0s.gif Op woensdag 17 augustus 2011 16:11 schreef Pakspul het volgende:

[..]

Pleur error_reporting(E_ALL); ook nog even aan, want je definieert eerst variabelen zonder hoofdletter en roept dan met hoofdletter aan (zie regel: 6,7)
Al gedaan, thanks. Ik had E_ALL ook al aan trouwens, die gaf over die variabelen geen fouten.
GlowMousewoensdag 17 augustus 2011 @ 16:15
quote:
14s.gif Op woensdag 17 augustus 2011 16:06 schreef KomtTijd... het volgende:
Dat je je provider moet schoppen, als'ie nog steeds PHP4 draait.
Nee, stmmen met je voeten is weglopen naar een ander.
Pakspulwoensdag 17 augustus 2011 @ 16:17
quote:
14s.gif Op woensdag 17 augustus 2011 16:14 schreef boem-dikkie het volgende:

[..]

Al gedaan, thanks. Ik had E_ALL ook al aan trouwens, die gaf over die variabelen geen fouten.
Krom, zou die wel moeten doen. Ander punt volgens mij is je klasse opbouw ook niet helemaal goed. Een gastenboek als class hebben betekent dat je meerdere gastenboeken hebt. Maar jij hebt een gastboek met daarin meerdere berichten. Dus je class moet GasteboekBericht heten o.i.d. In de gastenboek class komen dingen als AantalBerichten (totaal) en Berichten per pagina etc.
boem-dikkiewoensdag 17 augustus 2011 @ 16:21
quote:
0s.gif Op woensdag 17 augustus 2011 16:17 schreef Pakspul het volgende:

[..]

Krom, zou die wel moeten doen. Ander punt volgens mij is je klasse opbouw ook niet helemaal goed. Een gastenboek als class hebben betekent dat je meerdere gastenboeken hebt. Maar jij hebt een gastboek met daarin meerdere berichten. Dus je class moet GasteboekBericht heten o.i.d. In de gastenboek class komen dingen als AantalBerichten (totaal) en Berichten per pagina etc.
Ja oké. Maar de namen hier zijn meer om even te testen of het werkt. Ben pas net aan het inlezen over OOP en het één en ander aan het proberen.
KomtTijd...woensdag 17 augustus 2011 @ 16:26
quote:
7s.gif Op woensdag 17 augustus 2011 16:15 schreef GlowMouse het volgende:

[..]

Nee, stmmen met je voeten is weglopen naar een ander.
Dat is stemmen met je portemonnee :P
Sitethiefwoensdag 17 augustus 2011 @ 16:44
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

$res 
mysql_query($sql$dbe);
if (
$res && mysql_num_rows($res) > 0) {
            
$i 0;
            while(
$row mysql_fetch_array($resMYSQL_ASSOC)){
                foreach(
$row as $key => $value){
                    
$output[$i][$key] = $value;    
                }
                
$i++;
            }
        }

?>

Kan dit performance wise sneller? Ik heb het gevoel dat ik iets verkeerd doe.....
GlowMousewoensdag 17 augustus 2011 @ 16:45
$output[$i] = $row. En je if is wel zinloos.
Pakspulwoensdag 17 augustus 2011 @ 16:48
quote:
0s.gif Op woensdag 17 augustus 2011 16:44 schreef Sitethief het volgende:

[ code verwijderd ]

Kan dit performance wise sneller? Ik heb het gevoel dat ik iets verkeerd doe.....
Volgens mij heb je het al aardig minimalistisch.

Heb nog paar verbeteringen gemaakt.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php

$res 
mysql_query($sql$dbe);

if ( 
is_resource($res) === true )
{
    if ( 
mysql_num_rows($res) > )
    {
        
$outputArray = array();
        
        while(
$row mysql_fetch_assoc($res))
        {
            
$outputArray[] = $row;
        }
    }
}
else
{
    die(
mysql_error());
}

?>
Sitethiefwoensdag 17 augustus 2011 @ 16:50
Dank je, ik was helemaal uit vorm omdat ik steeds een API gebruikte voor queries etc, en nu moet ik opeens weer zonder :X .
boem-dikkiewoensdag 17 augustus 2011 @ 17:15
Om aan te geven of ik een error of een goedkeuring heb bij het toevoegen van een bericht heb ik dit stukje.

1
2
3
4
5
<?php
if (!mysql_query($sql))  {$this->melding  "<p>Error.</p>";}
            else {
$this->melding  "<p>Bericht is succesvol toegevoegd.</p>";}
        }
?>

Buiten de class spreek ik dit aan doormiddel van:
1<?php if (!empty($Gastenboek->melding)) { echo $Gastenboek->melding; }    ?>

Hij laat nu echter altijd "Bericht is succesvol toegevoegd" zien boven het formulier in plaats wanneer ik iets heb toegevoegd.
Pakspulwoensdag 17 augustus 2011 @ 17:31
quote:
9s.gif Op woensdag 17 augustus 2011 17:15 schreef boem-dikkie het volgende:
Om aan te geven of ik een error of een goedkeuring heb bij het toevoegen van een bericht heb ik dit stukje.
[ code verwijderd ]

Buiten de class spreek ik dit aan doormiddel van:
[ code verwijderd ]

Hij laat nu echter altijd "Bericht is succesvol toegevoegd" zien boven het formulier in plaats wanneer ik iets heb toegevoegd.
Als er iets misgaat bij invoeren van het bericht kun je ook een Exception gooien die je dan buiten de class kunt opvangen.
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
try
    {
        
$gastboek->BerichtToevoegen();

        
// als alles is goed gegaan dan gaat hij hier verder
    
}
    catch( 
Exception $ex)
    {
        echo 
"<h1>Er is iets heel ergs gebeurd!</h1>";
        
        echo 
$ex->getMessage();
        
        exit;
    }
    
    
// in het gastenboek
    
class Gastenboek
    
{
        function 
BerichtToevoegen()
        {
            
$result mysql_query($query);
            
            if ( 
$result === false )
            {
                throw new 
Exception(mysql_error());
            }
        }
    }
?>
boem-dikkiewoensdag 17 augustus 2011 @ 19:22
quote:
0s.gif Op woensdag 17 augustus 2011 17:31 schreef Pakspul het volgende:

[..]

Als er iets misgaat bij invoeren van het bericht kun je ook een Exception gooien die je dan buiten de class kunt opvangen.
[ code verwijderd ]

Oké, maar dan alsnog vraag ik me af waarom hij mijn '!empty' niet pakt terwijl hij dat in mijn 'oude' code (niet OOP) wel gewoon doet.
The_Terminatorwoensdag 17 augustus 2011 @ 19:39
quote:
14s.gif Op woensdag 17 augustus 2011 19:22 schreef boem-dikkie het volgende:

[..]

Oké, maar dan alsnog vraag ik me af waarom hij mijn '!empty' niet pakt terwijl hij dat in mijn 'oude' code (niet OOP) wel gewoon doet.
Hoe en waar heb je '$this->melding' gedeclareerd?
Pakspulwoensdag 17 augustus 2011 @ 20:03
quote:
14s.gif Op woensdag 17 augustus 2011 19:22 schreef boem-dikkie het volgende:

[..]

Oké, maar dan alsnog vraag ik me af waarom hij mijn '!empty' niet pakt terwijl hij dat in mijn 'oude' code (niet OOP) wel gewoon doet.
Gooi eens wat meer code hier neer, want doe je de formulier afhandeling (aanname <form action="post">) achter de volgende ifstatement.

1
2
3
4
5
6
<?php
if ( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
     
// hier formulier afhandeling
}
?>
urselwoensdag 17 augustus 2011 @ 21:31
Hoe kan ik een Soap XML het gemakkelijskte omzetten naar een Data object?
Ja, ik weet dat met een soap call je dit automatisch kan aanroepen, maar heb een aantal xml's per file toegestuurd gekregen
Pakspulwoensdag 17 augustus 2011 @ 21:52
quote:
0s.gif Op woensdag 17 augustus 2011 21:31 schreef ursel het volgende:
Hoe kan ik een Soap XML het gemakkelijskte omzetten naar een Data object?
Ja, ik weet dat met een soap call je dit automatisch kan aanroepen, maar heb een aantal xml's per file toegestuurd gekregen
Met SimpleXMLElement kun je eenvoudig een XML bestand omzetten naar een array. Volgens mij moet het daarna een eitje zijn om je object te vullen.
urselwoensdag 17 augustus 2011 @ 21:55
quote:
0s.gif Op woensdag 17 augustus 2011 21:52 schreef Pakspul het volgende:

[..]

Met SimpleXMLElement kun je eenvoudig een XML bestand omzetten naar een array. Volgens mij moet het daarna een eitje zijn om je object te vullen.
Ja, was daar ondertussen al half. Soms zit je gewoon ff in de verkeerde hoek te zoeken. :')
Pakspulwoensdag 17 augustus 2011 @ 21:56
quote:
0s.gif Op woensdag 17 augustus 2011 21:55 schreef ursel het volgende:

[..]

Ja, was daar ondertussen al half. Soms zit je gewoon ff in de verkeerde hoek te zoeken. :')
Laatste tijd zelf met XML bezig geweest en kwam hier na een tijdje achter. Zat eerst dagen met XML reader/writers te kloten en dit is velen malen makkelijker aangezien ik het ook zo wilde hebben :P
Sitethiefdonderdag 18 augustus 2011 @ 10:35
Ik ben nu bezig een PDO class te bouwen, is het aanbevolen om de connect meteen in de construct af te handelen?

Heeft iemand wat voorbeelden van PDO classes, heb zelf al wat gegoogled, maar echt heel helder wordt het niet.
Pakspuldonderdag 18 augustus 2011 @ 10:45
99% van de tijd werk je toch maar met 1 database per website en daarom heb ik er voor gekozen om ene singleton class te maken waarin ik gebruik maak van PDO

Hier nog meer over singleton pattern: http://en.wikipedia.org/wiki/Singleton_pattern

Voorbeeld:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php

final class DataBase
{
    private static 
$_Instance;

    private 
$_ID// hier komt de PDO class in te staan

    
public $_onnectionString;

    protected function 
__construct
    
{
        
// niet public omdat dat nodig is in singleton pattern
    
}

    public function 
ExecuteQuery($Query)
    {
        
// hier wordt de SELECT query uitgevoerd
    
}

    public function 
ExecuteNonQuery($Query)
    {
        
// hier worden INSERT, UPDATE, DELETE queries uitgevoerd
    
}

    public function 
Open()
    {
        
// openen van de database connectie (moet je dus wel connection string hebben)
    
}

    public function 
Close()
    {
        
// spreekt voor zich
    
}

    
// kun je gebruiken bij ISERTR query om nieuwe ID nummer op te halen (a
    
public function LastInsertID()
    {
        return (int) 
$this->_ID->lastInsertID();
    }

    public function 
BeginTransaction()
    {
        
$this->_ID->beginTransaction();
    }

    public function 
Commit()
    {
        
$this->_ID->Commit();
    }
        
    public function 
Rollback()
    {
        
$this->_ID->Rollback();
    }

    final static public function 
GetInstance()
    {
        if ( 
self::$_Instance === null )
        {
            
self::$_Instance = new DataBase();
        }
        
        return 
self::$_Instance;
    }

    final public function 
__Clone()
    {
        throw new 
Exception("Ain't allowed to clone this object");
    }
}

?>
Sitethiefdonderdag 18 augustus 2011 @ 11:20
Thanks Pakspul :).


Nu nog prepared statements uitvogelen :D :X .
Pakspuldonderdag 18 augustus 2011 @ 11:24
Een wat :? Hoe je het moet aanroepen?

Waar je ook bent, maakt niet uit hoe diep in de code kun je het volgende doen.

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

// ergens in het begin van je code
$db DataBase::GetInstance();
$db->ConnectionString "localhost;balblablablabla";

$db->Open();

// om query uit te voeren
$db DataBase::GetInstance();
$db->ExecuteQuery("query hier invullen");

// afsluiter
$db DataBase::GetInstance();
$db->Close();

?>

Als open en close in zelfde functie zitten dan hoef je uiteraard niet weer $db = DataBase::GetInstance(); te doen.
Sitethiefdonderdag 18 augustus 2011 @ 11:30
PDO::prepare en PDO::exec bedoel ik dan hé.
Pakspuldonderdag 18 augustus 2011 @ 11:33
quote:
0s.gif Op donderdag 18 augustus 2011 11:30 schreef Sitethief het volgende:
PDO::prepare en PDO::exec bedoel ik dan hé.
Ahzo ik gebruik gewoon query, want een andere class bouwt deze queries op aan de hand van de models (classes die directe relatie hebben met tabellen in de database). Laatste tijd schrijf ik eigenlijk echt nooit meer een echte query :P