Dat dus!quote:Op vrijdag 6 januari 2012 10:34 schreef Scorpie het volgende:
Bij SQL queries http://php.net/manual/en/function.mysql-real-escape-string.php
Die zag ik idd voorbij komen.quote:Op vrijdag 6 januari 2012 10:31 schreef Pakspul het volgende:
[ code verwijderd ]
Bron: http://php.net/manual/en/function.addslashes.php
quote:Op vrijdag 6 januari 2012 10:34 schreef Scorpie het volgende:
Bij SQL queries http://php.net/manual/en/function.mysql-real-escape-string.php
quote:
quote:A MySQL connection is required before using mysql_real_escape_string() otherwise an error of level E_WARNING is generated, and FALSE is returned.
1 | trailer='o\'' |
1 | quoted string not properly terminated |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | SQL> SELECT 'Frank''s Oracle site' AS text FROM DUAL; TEXT -------------------- Franks's Oracle site SQL> SELECT 'A ''quoted'' word.' AS text FROM DUAL; TEXT ---------------- A 'quoted' word. SQL> SELECT 'A ''''double quoted'''' word.' AS text FROM DUAL; TEXT ------------------------- A ''double quoted'' word. |
1 2 3 4 | <?php // hopelijk is het zichtbaar dat een enkele quote wordt vervangen door twee enkele quotes. $name = str_replace("'", "''", "Frank's Oracle site"); ?> |
1 | trailer='".$trailer."' |
En als je " (dubbele quote) naar " veranderd en ' (enkele quote) naar 'quote:Op vrijdag 6 januari 2012 11:20 schreef Cue_ het volgende:
Een str_replace (en wss ook die addslashes) werken niet omdat het bij verwerking in quotes komt te staan
[ code verwijderd ]
SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
quote:Op vrijdag 6 januari 2012 21:18 schreef Geflipte-Koelkast het volgende:
Het is me al gelukt. Op de 1 of andere manier het oude script aan de praat gekregen. Alleen nog 1 vraag. Als ik op verzenden klik, wat moet er dan verandert worden in het script, om hem door te sturen naar de 'bedank' pagina?Een header toevoegen naar je bedank pagina nadat de mail succesvol is verzonden.SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.Ik weet niks van Hindoes. Wel van Samoerai en andere dingen.
Ik heb wat basic tutorials doorgenomen,quote:Op vrijdag 6 januari 2012 22:16 schreef Catch22- het volgende:
zo werkt het niet. Ik zou even wat basic tutorials php lezen en ook even wat debug-tutorials doornemen.
Maar die code he, daar staat regel voor regel wat er gebeurt...
quote:Op vrijdag 6 januari 2012 21:18 schreef Geflipte-Koelkast het volgende:
Het is me al gelukt. Op de 1 of andere manier het oude script aan de praat gekregen. Alleen nog 1 vraag. Als ik op verzenden klik, wat moet er dan verandert worden in het script, om hem door te sturen naar de 'bedank' pagina?SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.Er is een reden dat register_globals niet meer gebruikt moet worden. Dan moet je niet zelf dat gedrag proberen na te bootsen.
1
2
3
4
5
6
7
8
9
10
11
12<?php
// Emular register_globals on
if (!ini_get('register_globals')) {
$superglobales = array($_SERVER, $_ENV, $_FILES, $_COOKIE, $_POST, $_GET);
if (isset($_SESSION)) {
array_unshift($superglobales, $_SESSION);
}
foreach ($superglobales as $superglobal) {
extract($superglobal, EXTR_SKIP);
}
}
?>
1 2 3 4 | A = 2 likes B = 3 likes C = 4 likes D = 1 like |
1 2 3 4 | 1. C 2. B 3. A 4. D |
Wat voor melding geeft het? en heb je die melding door google heen gehaalt?quote:Op vrijdag 6 januari 2012 23:50 schreef Vanillax het volgende:
[..]
Ik heb wat basic tutorials doorgenomen,
En dus de tutorial gevolgd waarvan ik die link gaf maar het werkt dus niet.
En ik snap niet waarom.
Dus ik begin me af te vragen of het niet gewoon aan de host ligt ipv aan mijn php skills, want ik doe gewoon letterlijk wat er in die tutorial staat..
Nee likes staan in mijn eigen database, en wat jij wilt gaat niet lukkenquote:Op zondag 8 januari 2012 20:57 schreef cablegunmaster het volgende:
Easy... een order by in je query's gebruiken de vraag blijft of dit mogelijk is.
Want volgens mij gebruik je hierbij de facebook API? applicatie??
Corrigeer me als ik het verkeerd heb.
anders een query maken;
Select * from TABLE order by aantal_likes desc
of hoe je het veld hebt genoemd.
Zie voorbeeld:
http://www.w3schools.com/php/php_mysql_order_by.asp
[..]
Wat voor melding geeft het? en heb je die melding door google heen gehaald?![]()
Hoe haal je de gegevens van A uit de database zijnde van wat erbij hoort? Dus bijvoorbeeld de rest van de pagina? want dan is het een kwestie van een variabele query.quote:Op zondag 8 januari 2012 21:15 schreef dirkjo het volgende:
[..]
Nee likes staan in mijn eigen database, en wat jij wilt gaat niet lukken
Want op die pagina wil ik niet de complete lijst, maar alleen de positie van het ene element (A in dit geval) uit de lijst. Snap je?
Oke stel je dit voor:quote:Op zondag 8 januari 2012 21:32 schreef cablegunmaster het volgende:
[..]
Hoe haal je de gegevens van A uit de database zijnde van wat erbij hoort? Dus bijvoorbeeld de rest van de pagina? want dan is het een kwestie van een variabele query.
"select * from likes where id = ' ".esc($_GET['id'])." ' ";
Met bvb de link index.php?id=50 dan haalt hij de ID eruit van 50 en welke ABCD er bij hoort.
1 2 3 4 | A = 3 likes B = 2 likes C = 4 likes D = 1 like |
Dus je wil dat de site tegen je zegt Dit nieuwsartikel of letter A Staat op nummer 2 van de hele lijst. en de rest negeren? Dan zou ik een order by desc. doen en vervolgens het eruit halen met echo. een Getal++; in de for lus doen (of welke lus) en als het overeen komt welke positie het is dus als de id te voorschijn komt die nodig is dan laat je het pas Echo'en welke positie het is.quote:Op zondag 8 januari 2012 21:42 schreef dirkjo het volgende:
[..]
Oke stel je dit voor:
Je hebt de waardes A, B, C en D zoals ik net al zei. Buiten nog veel meer informatie staat er onder andere in de database bij elke waarde (elke rij dus) het aantal likes dat die heeft gekregen (facebook onafhankelijk).
Als ik een lijst wil maken waarbij de waarde met de meeste likes bovenaan komt te staan kan ik inderdaad ORDER BY likes DESC gebruiken, maar dit wil ik niet.
Ik wil namelijk het volgende:
Elke waarde is ook een pagina, stel je voor A heeft ID 1; dan heb ik een waarde met ID 1. Dan kan ik alle waardes van die row pakken door WHERE ID = 1 te gebruiken, waaronder dus ook de likes.
Maar dat heeft allemaal niks te maken met wat ik wil. Ik wil namelijk op die pagina van 'A' dat je kan zien waar 'A' staat in de lijst (dus de lijst waar de meeste likes bovenaan staan).
Ik wil dat mysql dan aan mij teruggeeft op welke plek A zou staan als ik alle waardes sorteer van meeste naar minste likes.
Dus als voorbeeld:
[ code verwijderd ]
Als ik nu de hele lijst zou plaatsen zou 'A' op nummer twee worden geplaatst, hij heeft tenslotte de op een na meeste likes.
Nu wil ik op de pagina van 'A' die plaatst (positie 2) dus laten zien ZONDER de hele zooi te moeten plaatsen.
Ik hoop hiermee een beetje duidelijk te hebben beschreven wat ik wil?
Je snapt hetquote:Op zondag 8 januari 2012 22:20 schreef cablegunmaster het volgende:
[..]
Dus je wil dat de site tegen je zegt Dit nieuwsartikel of letter A Staat op nummer 2 van de hele lijst. en de rest negeren? Dan zou ik een order by desc. doen en vervolgens het eruit halen met echo. een Getal++; in de for lus doen (of welke lus) en als het overeen komt welke positie het is dus als de id te voorschijn komt die nodig is dan laat je het pas Echo'en welke positie het is.
Voila?of snap ik het verkeerd
?
Dan krijg je als resultaat : A staat op X positie en heeft 4 likes.
Positie moet altijd up-to-date blijven omdat users hem kunnen bepalen (door middel van de likes).quote:Op zondag 8 januari 2012 22:37 schreef GlowMouse het volgende:
Select count(*) op de rijen met meer likes als het aantal rijen klein is, anders denormaliseren en de positie ook in de rij opslaan
1 2 3 4 5 6 7 8 9 10 11 12 | <?php function songRank($songID){ $rank = 0; $getrank = mysql_query("SELECT songID FROM songs ORDER BY `likes` DESC"); while($row = mysql_fetch_array($getrank)){ $rank++; if($songID == $row['songID']){ return $rank; } } } ?> |
Nog nooit gebruik gemaakt van COUNT(*), maar ik zal er eens naar kijken.quote:Op zondag 8 januari 2012 22:48 schreef GlowMouse het volgende:
Dat is een domme query, net alsof je niet snapt wat COUNT(*) en WHERE doen.
quote:Op zondag 8 januari 2012 22:50 schreef dirkjo het volgende:
[..]
Nog nooit gebruik gemaakt van COUNT(*), maar ik zal er eens naar kijken.
1 | SELECT COUNT(*) AS aantal FROM songs WHERE songID = '" . mysql_real_escape_string($songID) . "' ORDER BY `likes` DESC |
songID is nummeriek, maar je query geeft geen positie terug. Ik krijg overal '1' terugquote:Op zondag 8 januari 2012 22:52 schreef The_Terminator het volgende:
[..]
[ code verwijderd ]
Het aantal zit dan in: $row['aantal']
Edit: is songID numeriek of een string?
Oeps... Onderstaande fixt het:quote:Op zondag 8 januari 2012 22:56 schreef dirkjo het volgende:
[..]
songID is nummeriek, maar je query geeft geen positie terug. Ik krijg overal '1' terug
1 | SELECT COUNT(*) AS aantal, songID FROM songs WHERE songID = " . mysql_real_escape_string($songID) . " ORDER BY `likes` DESC |
Nee hoorquote:Op zondag 8 januari 2012 22:58 schreef The_Terminator het volgende:
[..]
Oeps... Onderstaande fixt het:
[ code verwijderd ]
Geen rijen, maar één kolom in een rij. (Ja ik weet; dat heb ik een paar keer verkeerd gezegd zie ik netquote:Op zondag 8 januari 2012 23:02 schreef GlowMouse het volgende:
Welke rijen moet je tellen om de rank te bepalen.
Daarom vroeg ik of songid een numerieke waarde zou zijn. Ik gebruikt meestal is_numeric om te bepalen of de ingevoerde waarde ook daadwerkelijk numeriek is en als dat zo is voer ik het aan de query zonder de escape_string functie te gebruiken. En ik heb een vermoeden dat ik in mijn query een group by ben vergetenquote:Op zondag 8 januari 2012 23:04 schreef GlowMouse het volgende:
De oplossing van T_T is alleen daarom al niet goed omdat hij mysql_real_escape_string en intval door elkaar haalt.
Of niet, want je weet toch al dat dat precies één rij is. Je wilt juist tellen hoeveel rijen een hogere score hebben. Je functie zou dus "songRank($likes)" moeten zijn.quote:Op zondag 8 januari 2012 23:06 schreef dirkjo het volgende:
[..]
De kolom 'likes' vertelt me de positie, die kolom bevat een getal. Met COUNT ga je alle rijen tellen die `songID` '$songID' bevatten, ofniet?
Probeer het niet goed te pratenquote:Op zondag 8 januari 2012 23:07 schreef The_Terminator het volgende:
[..]
Daarom vroeg ik of songid een numerieke waarde zou zijn. Ik gebruikt meestal is_numeric om te bepalen of de ingevoerde waarde ook daadwerkelijk numeriek is en als dat zo is voer ik het aan de query zonder de escape_string functie te gebruiken. En ik heb een vermoeden dat ik in mijn query een group by ben vergeten
Maar wat gebeurd er dan als meerdere nummers hetzelfde aantal likes hebben? Dan pakt die de eerste de beste rij die het gegeven aantal likes heeft.quote:Op zondag 8 januari 2012 23:13 schreef GlowMouse het volgende:
[..]
Of niet, want je weet toch al dat dat precies één rij is. Je wilt juist tellen hoeveel rijen een hogere score hebben. Je functie zou dus "songRank($likes)" moeten zijn.
[..]
Probeer het niet goed te praten. Je stopt output van mysql_real_escape_string in een query zonder quotes om die output en dat is onveilig.
Ik probeer niets goed te pratenquote:Op zondag 8 januari 2012 23:13 schreef GlowMouse het volgende:
Probeer het niet goed te praten. Je stopt output van mysql_real_escape_string in een query zonder quotes om die output en dat is onveilig.
Heb je die vraag eens bij je eigen query gesteld?quote:Op zondag 8 januari 2012 23:23 schreef dirkjo het volgende:
[..]
Maar wat gebeurd er dan als meerdere nummers hetzelfde aantal likes hebben? Dan pakt die de eerste de beste rij die het gegeven aantal likes heeft.
Jazeker, maar als ik mijn manier gebruik garandeer ik wel dat de plek die de pagina over het nummer aangeeft gelijk is aan de plek die staat in de pagina waar de complete lijst van alle nummers staat.quote:Op zondag 8 januari 2012 23:25 schreef GlowMouse het volgende:
[..]
Heb je die vraag eens bij je eigen query gesteld?
Ik definieer de plek als 1+[het aantal songs met meer likes]. Het aantal songs met meer likes kun je met één query tellen.
Dat is niet waar, het resultaat berust op toeval.quote:Op zondag 8 januari 2012 23:27 schreef dirkjo het volgende:
[..]
Jazeker, maar als ik mijn manier gebruik garandeer ik wel dat de plek die de pagina over het nummer aangeeft gelijk is aan de plek die staat in de pagina waar de complete lijst van alle nummers staat.
quote:Op zondag 8 januari 2012 23:30 schreef dirkjo het volgende:
En dat zou het niet doen in jouw geval, of valt zoiets niet te vermijden?
quote:Op zondag 8 januari 2012 23:25 schreef GlowMouse het volgende:
[..]
Ik definieer de plek als 1+[het aantal songs met meer likes]. Het aantal songs met meer likes kun je met één query tellen.
Oke, dus (even snel) zou jouw query er ongeveer zo uitzien:quote:
1 2 3 | <?php mysql_query("SELECT COUNT(*) AS rank FROM songs WHERE likes > ". $likes. " "); ?> |
Oke, bedankt!quote:Op zondag 8 januari 2012 23:37 schreef GlowMouse het volgende:
Precies zo. Alleen dan nog eentje bij het resultaat optellen.
Veel doeltreffender.quote:Op zondag 8 januari 2012 23:40 schreef dirkjo het volgende:
[..]
Oke, bedankt!
je houdt het trouwens wel lang vol om iemand niet het antwoord te geven, maar zelf te laten maken
Er is nu alleen wel één probleempje. Ik vertelde net dat die oude query mij dezelfde waarde geeft als wanneer ik de hele lijst zou echo'en. Deze doet dat nietquote:Op zondag 8 januari 2012 23:37 schreef GlowMouse het volgende:
Precies zo. Alleen dan nog eentje bij het resultaat optellen.
Dan moet je die andere lijst aanpassen zodat hij zo wordt:quote:Op zondag 8 januari 2012 23:48 schreef dirkjo het volgende:
[..]
Er is nu alleen wel één probleempje. Ik vertelde net dat die oude query mij dezelfde waarde geeft als wanneer ik de hele lijst zou echo'en. Deze doet dat niet
En toch heb je geen garantie dat het niet verandert.quote:Je zei dat dat bij die oude query toevallig zo gebeurde, maar na een flink aantal refreshes blijft die lijst precies hetzelfde.
Je doet het nu door te selecteren op het aantal likes?quote:Op zondag 8 januari 2012 23:48 schreef dirkjo het volgende:
[..]
Er is nu alleen wel één probleempje. Ik vertelde net dat die oude query mij dezelfde waarde geeft als wanneer ik de hele lijst zou echo'en. Deze doet dat niet![]()
Je zei dat dat bij die oude query toevallig zo gebeurde, maar na een flink aantal refreshes blijft die lijst precies hetzelfde.
//edit
Deze manier geeft zelfs bij meerdere nummers dezelfde rank, terwijl dit toch echt iets is wat niet mag gebeuren![]()
1 2 3 4 5 6 7 8 | SET @rownum := 0; SELECT * FROM ( SELECT @rownum := @rownum+1 AS song_rank, likes FROM songs ORDER BY likes DESC ) AS song_score WHERE songID = " . $songID |
Ik gebruik nu de manier van GM, een paar posts terug.quote:Op zondag 8 januari 2012 23:55 schreef The_Terminator het volgende:
[..]
Je doet het nu door te selecteren op het aantal likes?
[ code verwijderd ]
Bovenstaande zou je de rank terug moeten geven adhv het songid.
Ah, ok. Ik heb mijn code zojuist wat aangepast en getest. Het functioneerd goed en geeft de positie terug adhv een gegeven songID, zoals je dat in je eerste versie had.quote:Op zondag 8 januari 2012 23:57 schreef dirkjo het volgende:
[..]
Ik gebruik nu de manier van GM, een paar posts terug.
Heldquote:Op maandag 9 januari 2012 00:02 schreef GlowMouse het volgende:
Wijzig
SELECT songID FROM songs ORDER BY `likes` DESC
in
SELECT songID FROM songs ORDER BY `likes` DESC,songID DESC
En
SELECT COUNT(*) AS rank FROM songs WHERE likes > ...
in
SELECT COUNT(*) AS rank FROM songs WHERE likes > ... OR (likes = .... ANDS songID > ....)
Dit gebruik ik nu en werkt:quote:Op maandag 9 januari 2012 00:07 schreef The_Terminator het volgende:
[..]
Ah, ok. Ik heb mijn code zojuist wat aangepast en getest. Het functioneerd goed en geeft de positie terug adhv een gegeven songID, zoals je dat in je eerste versie had.
1 2 3 | <?php $rankQuery = mysql_query("SELECT COUNT(*) AS rank FROM songs WHERE `likes` > ". $likes. " OR (`likes` = '". $likes ."' AND `songID` > ". $songID .")"); ?> |
True.quote:Op maandag 9 januari 2012 00:09 schreef GlowMouse het volgende:
maar die van mij is uiteraard sneller.
Oke, duidelijk!quote:Op maandag 9 januari 2012 21:13 schreef GlowMouse het volgende:
Dat is het inderdaad. Als jij een query zonder COUNT(*) doet dan gaan alle rijen van MySQL naar PHP zodat PHP ze kan tellen.
1 2 3 4 5 | SELECT Naam, Challenge, Voortgang, ( Voortgang / ( Challenge /100 ) ) AS Percentage FROM hardlopen ORDER BY Naam |
Ik had de 2e parameter bij ROUND gemist in mijn zoektocht, bedankt!quote:Op dinsdag 10 januari 2012 08:54 schreef Scorpie het volgende:
round gebruiken.
http://www.w3schools.com/sql/sql_func_round.asp
Ik zou dit soort taken niet bij de database server neerleggen. Queries moet je zo licht mogelijk schrijven, zodat je de database server zo min mogelijk lastig valt.quote:Op dinsdag 10 januari 2012 09:39 schreef Swetsenegger het volgende:
Ja de op functie ken ik, maar in dit geval was het makkelijker in mysql.
Geloof me, m'n server krijgt het er echt niet warm vanquote:Op dinsdag 10 januari 2012 10:41 schreef Pakspul het volgende:
[..]
Ik zou dit soort taken niet bij de database server neerleggen. Queries moet je zo licht mogelijk schrijven, zodat je de database server zo min mogelijk lastig valt.
Dat begrijp ik, maar het gaat er om dat je begrijpt waarom je die dingen daar niet moet neerleggenquote:Op dinsdag 10 januari 2012 10:43 schreef Swetsenegger het volgende:
[..]
Geloof me, m'n server krijgt het er echt niet warm van
Het is niet fout om je query zo te formuleren dat de data die eruit komt zo nuttig mogelijk is in je applicatie.quote:Op dinsdag 10 januari 2012 10:49 schreef Pakspul het volgende:
[..]
Dat begrijp ik, maar het gaat er om dat je begrijpt waarom je die dingen daar niet moet neerleggenJe kunt het je beter direct goed aanleren
Swets is al een paar stapjes verder dan aanlerenquote:Op dinsdag 10 januari 2012 10:49 schreef Pakspul het volgende:
[..]
Dat begrijp ik, maar het gaat er om dat je begrijpt waarom je die dingen daar niet moet neerleggenJe kunt het je beter direct goed aanleren
Het is niet fout, maar kwa belasting wil je het gewoon niet. Bij hobby projecten maakt het uiteraard niets uit waar je het doet en als die het makkelijkste voor je is dan moet je het vooral doen. Maar als je grote projecten draait dan kunnen dit wel winst punten zijn.quote:Op dinsdag 10 januari 2012 10:50 schreef Tijn het volgende:
[..]
Het is niet fout om je query zo te formuleren dat de data die eruit komt zo nuttig mogelijk is in je applicatie.
Dat dus.quote:Op dinsdag 10 januari 2012 10:51 schreef GI het volgende:
[..]
Swets is al een paar stapjes verder dan aanleren
En ik ben het met Tijn eens. Het is niet per definitie fout om de DB server te laten rekenen.
Definieer 'belasting'.quote:Op dinsdag 10 januari 2012 10:54 schreef Pakspul het volgende:
[..]
Het is niet fout, maar kwa belasting wil je het gewoon niet. Bij hobby projecten maakt het uiteraard niets uit waar je het doet en als die het makkelijkste voor je is dan moet je het vooral doen. Maar als je grote projecten draait dan kunnen dit wel winst punten zijn.
Zelfde als in hobby projecten kun je best: SELECT * doen, maar het is beter om alleen de velden op te halen die nodig zijn.
Als je round door je db-clients wilt laten uitrekenen, ben je verkeerd bezig.quote:Op dinsdag 10 januari 2012 10:41 schreef Pakspul het volgende:
[..]
Ik zou dit soort taken niet bij de database server neerleggen. Queries moet je zo licht mogelijk schrijven, zodat je de database server zo min mogelijk lastig valt.
Ik denk eigenlijk dat de database een stuk efficiënter z'n eigen data kan manipuleren dan de applicatie die deze data verder verwerkt.quote:Op dinsdag 10 januari 2012 10:54 schreef Pakspul het volgende:
[..]
Het is niet fout, maar kwa belasting wil je het gewoon niet.
quote:Op dinsdag 10 januari 2012 11:00 schreef Tijn het volgende:
[..]
Ik denk eigenlijk dat de database een stuk efficiënter z'n eigen data kan manipuleren dan de applicatie die deze data verder verwerkt.
Indeed.quote:Op dinsdag 10 januari 2012 10:57 schreef GlowMouse het volgende:
[..]
Als je round door je db-clients wilt laten uitrekenen, ben je verkeerd bezig.
Ja, dat is wel waar. Maar het hangt compleet van de situatie af of je dergelijke dingen laat berekenen door de DBengine of door de applicatie zelf. Als het puur en alleen om weergave gaat zou ik zeggen dat het door de applicatie gedaan moet worden. Als het om tussentabellen gaat of iets in die geest dan kan ik me nog voorstellen dat je het de DBengine laat doen.quote:Op dinsdag 10 januari 2012 11:00 schreef Tijn het volgende:
[..]
Ik denk eigenlijk dat de database een stuk efficiënter z'n eigen data kan manipuleren dan de applicatie die deze data verder verwerkt.
Nee?quote:Op dinsdag 10 januari 2012 11:04 schreef GI het volgende:
[..]
Das knap, het eens zijn met twee quotes die elkaar tegenspreken.
Het is rekenkracht wat je kwijt bent, bij 10 request per minuut maakt het geen fuck uit, maar als je request omhoog gaan dan wil je niet dat je DB server met dit soort dingen bezig is.quote:
Dat probeer ik hier te zeggen.quote:Op dinsdag 10 januari 2012 10:57 schreef GlowMouse het volgende:
[..]
Als je round door je db-clients wilt laten uitrekenen, ben je verkeerd bezig.
ja, want deze eerste zegt. Leg het neer bij de DB en de andere zegt doe het niet want dan ben je verkeerd bezig.quote:
Je begrijpt het verschil tussen server en client?quote:Op dinsdag 10 januari 2012 11:07 schreef Pakspul het volgende:
[..]
ja, want deze eerste zegt. Leg het neer bij de DB en de andere zegt doe het niet want dan ben je verkeerd bezig.
Dat is niet altijd een criterium omdat je vaak eenvoudig servers waar de applicatie op draaien kunt bijplaatsen.quote:Op dinsdag 10 januari 2012 11:00 schreef Tijn het volgende:
[..]
Ik denk eigenlijk dat de database een stuk efficiënter z'n eigen data kan manipuleren dan de applicatie die deze data verder verwerkt.
Geef me maar root-toegang op een server die 50.000 queries per seconde afhandelt, zal ik je 10 dingen aanwijzen die elk een miljoen keer meer opleveren.quote:Op dinsdag 10 januari 2012 11:06 schreef Pakspul het volgende:
[..]
Het is rekenkracht wat je kwijt bent, bij 10 request per minuut maakt het geen fuck uit, maar als je request omhoog gaan dan wil je niet dat je DB server met dit soort dingen bezig is.
Niet waar, jij wilt het van je db-server naar je db-client verplaatsen.quote:Dat probeer ik hier te zeggen.
Dat denk ik ook. Het is ook duidelijk dat je moet proberen een trage query te voorkomen natuurlijk. Maar dat doe je niet door de round-functie van je database te vermijden.quote:Op dinsdag 10 januari 2012 11:14 schreef GI het volgende:
Ah, dan las ik het verkeerd. Ik denk trouwens wel dat er geen gouden regel is voor deze problematiek.
Ik weet niet wat jij bedoelt met DB-server en DB-client.quote:Op dinsdag 10 januari 2012 11:08 schreef Tijn het volgende:
[..]
Je begrijpt het verschil tussen server en client?
De machine waar de database zelf op staat is de databaseserver. De machine waar de applicatie op draait die met de database verbinding heeft is de databaseclient.quote:Op dinsdag 10 januari 2012 11:26 schreef Pakspul het volgende:
[..]
Ik weet niet wat jij bedoelt met DB-server en DB-client.
100x zegt niks. Doe hem eens 100.000 keer.quote:Op dinsdag 10 januari 2012 11:26 schreef Pakspul het volgende:
[..]
Ik weet niet wat jij bedoelt met DB-server en DB-client.
Maar ik heb even een test uitgevoerd. 100 x een query opgehaald waar 2x50 float in voorkomen. In de ene heb ik hem door PHP laten afronden en in de andere heb ik het door MySQL laten doen. En het verschil is dat PHP er 35% langer over doet wanneer deze zelf de getallen nog moet afronden.
Dan had Tijn het dus toch goed dat de DB-server zelf efficiënter zijn data kan manipuleren.
Nouja, daar zat ik er dus naast ik dacht altijd dat je zulke functie niet daar moest uitvoeren. Vraag ik mij nu alleen af of dit ook geldt voor berekeningen.Straks maar eens doen
eerst koffie!
Bij 100.000 keer doet hij er 11% langer over in PHP dan wanneer je MySQL zelf de round functie laat uitvoeren.quote:Op dinsdag 10 januari 2012 11:28 schreef Scorpie het volgende:
[..]
100x zegt niks. Doe hem eens 100.000 keer.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |