abonnement Unibet Coolblue Bitvavo
  donderdag 14 juli 2011 @ 14:45:48 #1
136730 PiRANiA
All thinking men are atheists.
pi_99457011


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
  donderdag 14 juli 2011 @ 16:14:21 #2
159156 Dokay
Ago ergo sum
pi_99461827
Al gelukt met while loop lus :)

[ Bericht 48% gewijzigd door Dokay op 14-07-2011 20:28:37 ]
pi_99464133
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.
  donderdag 14 juli 2011 @ 17:12:09 #4
159156 Dokay
Ago ergo sum
pi_99464818
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...
pi_99465464
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?
  donderdag 14 juli 2011 @ 19:53:08 #6
159156 Dokay
Ago ergo sum
pi_99472113
nee zo werkt het helaas niet... al geprobeerd
pi_99474550
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
pi_99479742
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...
pi_99494704
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?
pi_99495985
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.
  vrijdag 15 juli 2011 @ 12:02:29 #11
12221 Tijn
Powered by MS Paint
pi_99496259
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().
  zaterdag 16 juli 2011 @ 16:07:03 #12
63192 ursel
"Het Is Hier Fantastisch!
pi_99543991
Hoe kan ik me bij de PHP tracker afmelden? :')
pi_99544531
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?
pi_99547293
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
Redacted
pi_99547413
MyAT en dan gewoon rechts op dat kruisje drukken.
Of toch du vader?
pi_99547433
Of op stop volgen boven- en onderaan dit topic.
pi_99547524
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. :)
Redacted
  zaterdag 16 juli 2011 @ 17:27:40 #18
63192 ursel
"Het Is Hier Fantastisch!
pi_99548004
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. :')
pi_99548040
Email adres blacklisten in je Spamfilter, done.
Of toch du vader?
pi_99548285
Hey hallo, dit gaat allemaal niet over PHP/MySQL jongens :(
pi_99548470
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.
  zaterdag 16 juli 2011 @ 18:09:44 #22
63192 ursel
"Het Is Hier Fantastisch!
pi_99549700
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
Redacted
  zaterdag 16 juli 2011 @ 18:10:53 #24
63192 ursel
"Het Is Hier Fantastisch!
pi_99549733
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 :+
pi_99549755
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 ]
Redacted
pi_99596993
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 :+
pi_99597152
quote:
0s.gif Op zondag 17 juli 2011 22:54 schreef mschol het volgende:

nog krijg ik er een foutmelding van...
Welke foutmelding?
pi_99597216
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
pi_99598960
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 :).
Redacted
pi_99601497
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..
pi_99602003
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. :)
pi_99602108
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 ]
pi_99690304
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 :'(
pi_99690978
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
Redacted
pi_99691825
Stond helaas al uit :'(

1register_globals    Off    Off
  woensdag 20 juli 2011 @ 01:48:53 #36
12221 Tijn
Powered by MS Paint
pi_99691882
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.
pi_99692202
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!
  woensdag 20 juli 2011 @ 02:04:48 #38
12221 Tijn
Powered by MS Paint
pi_99692250
Graag gedaan hoor :7
pi_99694568
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).
  woensdag 20 juli 2011 @ 09:32:56 #40
63192 ursel
"Het Is Hier Fantastisch!
pi_99695483
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.
pi_99699866
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
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_99706844
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)
pi_99709057
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
pi_99711568
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
Redacted
  donderdag 21 juli 2011 @ 10:41:19 #45
63192 ursel
"Het Is Hier Fantastisch!
pi_99740826
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.
pi_99741346
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 ]
pi_99741775
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 :)
pi_99742166
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
pi_99742382
1SELECT Names, Status, COUNT(ID) AS 'Count' FROM tabel GROUP BY Names, Status

:)
pi_99742538
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
pi_99742637
Oh je wilt ook met 0 erbij dat had ik niet gezien, even overheen gelezen ;+

Geef me paar minuten en je hebt je query :+
pi_99742772
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
pi_99743392
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.
pi_99743443
Ok thanks _O_ even testen hoor!
pi_99743837
Woei die query is of super traag bij mij of hij loopt oneindig :P
pi_99743877
Hoeveel records heb je er in staan? Ik verwacht dat hij super traag is.
pi_99743945
maar 2000 ofzo :P
pi_99743977
Haal Skipped en failed er eens uit en voer hem nog eens uit en kijk eens of hij het wel doet?
pi_99744021
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-
pi_99744192
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
pi_99744290
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 :)
pi_99744635
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!
pi_99744743
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 :)
pi_99832830
opgelost :D
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  maandag 25 juli 2011 @ 12:50:06 #65
267443 Cue_
Cuecumbergirl
pi_99917755
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! :)
  maandag 25 juli 2011 @ 12:53:18 #66
12221 Tijn
Powered by MS Paint
pi_99917850
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;
  maandag 25 juli 2011 @ 12:58:17 #67
267443 Cue_
Cuecumbergirl
pi_99917983
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?
  maandag 25 juli 2011 @ 13:24:25 #68
12221 Tijn
Powered by MS Paint
pi_99918829
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.
  maandag 25 juli 2011 @ 13:26:49 #69
267443 Cue_
Cuecumbergirl
pi_99918916
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!
  maandag 25 juli 2011 @ 13:41:21 #70
12221 Tijn
Powered by MS Paint
pi_99919392
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?
pi_99919411
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.
  maandag 25 juli 2011 @ 13:43:55 #72
267443 Cue_
Cuecumbergirl
pi_99919489
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.
  maandag 25 juli 2011 @ 13:44:12 #73
267443 Cue_
Cuecumbergirl
pi_99919501
quote:
2s.gif Op maandag 25 juli 2011 13:41 schreef Tijn het volgende:

Famous last words :7
i know ;(
pi_99919520
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?
pi_99919634
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 ?
  maandag 25 juli 2011 @ 13:48:33 #76
12221 Tijn
Powered by MS Paint
pi_99919653
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?
pi_99919875
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_/
  maandag 25 juli 2011 @ 14:02:30 #78
241330 A-mineur
Zware akkoorden.
pi_99920053
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.
To doom or not to doom
pi_99920256
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.
pi_99920282
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.
  maandag 25 juli 2011 @ 14:11:37 #81
241330 A-mineur
Zware akkoorden.
pi_99920409
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.
To doom or not to doom
pi_99920416
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.
pi_99920587
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.
pi_99920600
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');
pi_99920630
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?)
  maandag 25 juli 2011 @ 14:19:49 #86
241330 A-mineur
Zware akkoorden.
pi_99920756
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.
To doom or not to doom
pi_99920761
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.
pi_99920848
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.
  maandag 25 juli 2011 @ 14:28:14 #89
12221 Tijn
Powered by MS Paint
pi_99921094
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.
pi_99921109
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
  maandag 25 juli 2011 @ 14:31:14 #91
241330 A-mineur
Zware akkoorden.
pi_99921203
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
To doom or not to doom
  maandag 25 juli 2011 @ 14:31:46 #92
12221 Tijn
Powered by MS Paint
pi_99921223
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
pi_99921279
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.
pi_99921366
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)
pi_99921425
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*
  maandag 25 juli 2011 @ 14:37:07 #96
241330 A-mineur
Zware akkoorden.
pi_99921431
ORDER BY YEAR(datum) ASC, percentage ASC

Zo schikt hij eerst op jaar, en daarna op percentage.
To doom or not to doom
  maandag 25 juli 2011 @ 14:37:19 #97
241330 A-mineur
Zware akkoorden.
pi_99921440
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,
To doom or not to doom
pi_99921472
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
pi_99921758
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...)
  maandag 25 juli 2011 @ 14:50:22 #100
241330 A-mineur
Zware akkoorden.
pi_99921851
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.
To doom or not to doom
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')