abonnement Unibet Coolblue Bitvavo
  donderdag 10 februari 2011 @ 19:23:00 #181
75592 GlowMouse
l'état, c'est moi
pi_92601405
Ik gebruik log(ab) = b*log(a) en log(1+x)=x (voor kleine x).
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92621537
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
<?php
if (isset($params['submit']) )
{
    
$filter='';
    
$test false;
    if (isset(
$params['select_date']) && $params['select_date'] != '')
    {
        if (
$test) {$filter .=' AND ';}
        
$filter .= '(DATE(starttime) = \''.$params['select_date'].'\')';
        
$test true;
    }
    if (isset(
$params['select_pilot']) && $params['select_pilot'] != '')
    {
        if (
$test) {$filter .=' AND ';}
        
$filter .= '(firstpilot_id = '.$params['select_pilot'].' or secondpilot_id = '.$params['select_pilot'].')';
        
$test true;
    }
    if (isset(
$params['select_airplane']) && $params['select_airplane'] != '')
    {
        if (
$test) {$filter .=' AND ';}
        
$filter .= '(airplane = \''.$params['select_airplane'].'\')';
        
$test true;
    }
}
?>

Kan dit efficienter?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
if (isset($params['submit']) )
{
    
$filter='1=1';
    
$test false;
    if (isset(
$params['select_date']) && $params['select_date'] != '')
    {
        
$filter .= ' AND (DATE(starttime) = \''.$params['select_date'].'\')';
    }
    if (isset(
$params['select_pilot']) && $params['select_pilot'] != '')
    {
        
$filter .= ' AND (firstpilot_id = '.$params['select_pilot'].' or secondpilot_id = '.$params['select_pilot'].')';
    }
    if (isset(
$params['select_airplane']) && $params['select_airplane'] != '')
    {
        
$filter .= ' AND (airplane = \''.$params['select_airplane'].'\')';
    }
}
?>
Dit leek me al makkelijker maar die 1=1 is natuurlijk wel soort van ranzig :')
  vrijdag 11 februari 2011 @ 01:17:19 #183
75592 GlowMouse
l'état, c'est moi
pi_92621594
iets met imploden op AND?
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92621745
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if (isset($params['submit']) )
{
    
$filterarr=Array();
    if (isset(
$params['select_date']) && $params['select_date'] != '')
        
$filterarr[1] = '(DATE(starttime) = \''.$params['select_date'].'\')';
    if (isset(
$params['select_pilot']) && $params['select_pilot'] != '')
        
$filterarr[2] = '(firstpilot_id = '.$params['select_pilot'].' or secondpilot_id = '.$params['select_pilot'].')';
    if (isset(
$params['select_airplane']) && $params['select_airplane'] != '')
        
$filterarr[3] = '(airplane = \''.$params['select_airplane'].'\')';
    
$filter=implode(' AND ',$filterarr);
}
?>

Thnx!
  vrijdag 11 februari 2011 @ 01:25:23 #185
75592 GlowMouse
l'état, c'est moi
pi_92621782
waarom keys gebruiken als [] volstaat?
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92621905
Omdat het laat is!
  vrijdag 11 februari 2011 @ 01:32:24 #187
63192 ursel
"Het Is Hier Fantastisch!
pi_92621932
quote:
9s.gif Op donderdag 10 februari 2011 19:00 schreef GlowMouse het volgende:
Het aantal reacties valt tegen. Dan zal ik het maar verklappen. Pak dit stukje code:

[ code verwijderd ]

De check op regel4 wordt zonder problemen doorlopen: de laatste vier karakters zijn '.txt'. Bij touch wordt er een stukje C-code uitgevoerd, en in C houden strings op na een nul-byte.
Op http://mysql-apache-php.com/fileupload-security.htm staat dit stukje:

[ code verwijderd ]

Deze check voorkomt niet dat er php-code op de server komt. Een plaatje is een file, en een file is gewoon opgebouwd uit bytes. Ergens tussen die bytes kunnen best de volgende zitten: <?php echo 'hoi'; ?>. Een plaatje met die code kun je makkelijk zelf maken door met een hex-editor een plaatje te editten en wat bytes te overschrijven. Het resulterende plaatje ziet er niet uit, maar dat ziet de software niet :) Net als bij een html-file, wordt alles tussen <?php en ?> uitgevoerd als PHP-code (en de rest van de file wordt gewoon doorgegeven).
Dit kun je maar op één manier voorkomen. Je kunt het plaatje resizen, maar ondanks dat het een stuk lastiger om een plaatje te vinden dat na resizen de code <?php echo 'hoi'; ?> bevat, is het niet onmogelijk. De manier is daarom om plaatjes waar <?php in voorkomt gewoon te blokkeren. Als plaatjes 1MB zijn, kun je de kans p berekenen dat je een plaatje ten onrechte afkeurt (onder de aanname dat de 0/1'en willekeurig, onafhankelijk en identiek zijn verdeeld):
<?php is vijf bytes. De kans dat vijf willekeurige bytes niet overeenkomen met <?php, is 1-(1/256)5. Je wilt dat in de file van 1MB alle vijf opvolgende bytes verschillend zijn. Er zijn ongeveer een miljoen opeenvolgende series van vijf bytes in een bestand van 1MB. De kans dat er geen <?php in je file zit, is ongeveer 1-p = (1-(1/256)5)1.000.000. Dit is lastig om nauwkeurig te berekenen, daarom pakken we de logaritme: log(1-p) = 1.000.000 log(1-(1/256)5) ~= -10-6. Omdat voor kleine p geldt dat log(1-p) = -p, weten we dat p = 10-6. Je keurt dus één op de miljoen files ten onrechte af.
_O_ held.
Mooi stukje les in dit topic zeg. :Y
pi_92621985
1
2
3
<?php
if (count($filterarr) >> )
?>
is ook veel accurater dan
1
2
3
<?php
if (isset($params['submit']) )
?>

(dat het formulier verstuurd is betekent niet dat er ook wat ingevuld is)
pi_92622588
1
2
3
<?php
SELECT TIME_FORMAT
(SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(landingtime,starttime)))),"%k:%i") AS totaltime
?>

Hiervan heb ik ook het idee dat het efficienter kan :@
Doel: de totale vlieguren van alle vluchten in een bepaalde selectie
pi_92626120
quote:
10s.gif Op vrijdag 11 februari 2011 02:10 schreef KomtTijd... het volgende:

[ code verwijderd ]

Hiervan heb ik ook het idee dat het efficienter kan :@
Doel: de totale vlieguren van alle vluchten in een bepaalde selectie
Just a thought, maar neem aan dat het veldtype DATETIME is ? Kan je dan niet met SUM en TIMEDIFF het verschil berekenen (of een totaal aantal uren) en met PHP de datum/tijd formatten met date() of mktime() ?
pi_92626341
quote:
1s.gif Op donderdag 10 februari 2011 15:00 schreef GlowMouse het volgende:
Als je tabel heel veel vliegdagen gaat bevatten, zal het sneller zijn om met een index op starttime te doen starttime >= (SELECT F(MAX(DATE(starttime))) FROM ...)
waarbij je even moet zoeken wat je voor F moet gebruiken om een datetime te krijgen met die datum en als tijdstip 00:00:00.
Je kunt beter DATE(MAX(starttime)) gebruiken. En voor zover ik weet wordt de tijdcomponent van een date-field op 0 gesteld als je gaat vergelijken met een datetime, dus daar heb je geen extra functie F voor nodig.
pi_92626466
SUM(TIMEDIFF(tijd,tijd) ging fout. Dan telt hij niet goed op (blijkbaar kan SUM niet echt tijden optellen. Vandaar eerst de conversie naar seconden en daarna weer terug naar time. En ja ergens moet je de tijd formatten, helaas kan ik dat in dit geval niet aan de template overlaten want dan moet het weer een geldig datetime object worden, terwijl een totale tijd van 48 uur nu gewoon als 48:00 wordt weergegeven.
  vrijdag 11 februari 2011 @ 10:06:10 #193
75592 GlowMouse
l'état, c'est moi
pi_92626748
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92626814
quote:
Die had ik gevonden, maar die doet twee variables optellen, niet een hele kolom...
pi_92627064
Kan je ze niet in de database opslaan als timestamp. En dan alleen het verschil berekenen. Die kan je ook zo omzetten naar de datetime als je dat wil.

[/newb]
  vrijdag 11 februari 2011 @ 10:18:32 #196
75592 GlowMouse
l'état, c'est moi
pi_92627130
Als je met timestamps wilt rekenen, is er nog unix_timestamp(col1)
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92627295
Heb ook even gepuzzeld (kan niet te lang, ben op werk), maar krijg met timediff de tijd terug in miliseconden denk ik. Nog iets geprobeerd daar een date_format omheen te gooien, maar zonder resultaat.

Met timestamps zal het wel makkelijker worden inderdaad
pi_92670703
open sollicitatie voor anonymous hier ofzo :)

-nee-

[ Bericht 47% gewijzigd door smegmanus op 13-02-2011 18:34:10 ]
pi_92671424
quote:
1s.gif Op vrijdag 11 februari 2011 09:54 schreef KomtTijd... het volgende:
SUM(TIMEDIFF(tijd,tijd) ging fout.
Je kunt het ook anders proberen: TIMEDIFF(SUM(eindtijd), SUM(begintijd))
  zaterdag 12 februari 2011 @ 13:12:01 #200
302853 themole
graaft totaal door.
pi_92676300
quote:
1s.gif Op zaterdag 12 februari 2011 09:52 schreef MrNiles het volgende:
open sollicitatie voor anonymous hier ofzo :)

-nee-
[knip]reactie op edit [/knip]

[ Bericht 39% gewijzigd door smegmanus op 13-02-2011 18:34:49 ]
Niet altijd serieus
  zaterdag 12 februari 2011 @ 13:39:35 #201
75592 GlowMouse
l'état, c'est moi
pi_92677251
En je moet jezelf afvragen of het voordeel opweegt tegen de overlast die je anderen bezorgt en de gevangenisstraf die je ervoor kunt krijgen.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92693040
Ik heb een query op een tabel met een kleine 250.000 regels, nu wil ik daarin zoeken op tags met de volgende code

1
2
3
4
5
6
SELECT `pix`.*
FROM `pix`
WHERE `pix`.`tags` LIKE '%,cool%'
AND   `pix`.`accepted` = 'y' 
AND `pix`.`adult` = 'n'
LIMIT 0,20

Explain:
11    SIMPLE    pix    ref    accepted,adult    accepted    1    const    249142    Using where

Ik heb op deze tabel de volgende indexen;
1
2
3
4
5
6
7
8
9
10
11
12
13
Sleutelnaam    Type    Unieke waarde    Gecomprimeerd    Veld    Kardinaliteit    Collatie    
        PRIMARY    BTREE    Ja    Nee    id    249144    A        
        category    BTREE    Ja    Nee    category    0    A        
filetype    0    A    
filesize    0    A    
filex    0    A    
filey    0    A    
filecrc    249144    A    
        filedate    BTREE    Nee    Nee    filedate    1051    A        
        accepted    BTREE    Nee    Nee    accepted    1    A        
        tags    BTREE    Nee    Nee    tags    1    A        
        adult    BTREE    Nee    Nee    adult    1    A        
        category_2    BTREE    Nee    Nee    category    3663    A    

Wat doe ik verkeerd of hoe kan ik zorgen dat deze query beter loopt? want 2 seconden op 250.000 items is volgens mij best veel :*
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  zaterdag 12 februari 2011 @ 21:06:43 #203
75592 GlowMouse
l'état, c'est moi
pi_92693072
LIKE '%,cool%' moet je dan ook niet willen doen.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92693360
quote:
1s.gif Op zaterdag 12 februari 2011 21:06 schreef GlowMouse het volgende:
LIKE '%,cool%' moet je dan ook niet willen doen.
Goed, dat zou kunnen maar hoe moet ik het dan willen oplossen of moet ik een apart tabel gaan gebruiken om te zoeken op tags?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  zaterdag 12 februari 2011 @ 21:13:52 #205
75592 GlowMouse
l'état, c'est moi
pi_92693413
Voor tags heb ik een mooi naslagwerk gemaakt:
http://gathering.tweakers.net/forum/list_messages/1429432

Je post #202 is onleesbaar trouwens. Zo geef je geen indices weer.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92693547
quote:
1s.gif Op zaterdag 12 februari 2011 21:13 schreef GlowMouse het volgende:
Voor tags heb ik een mooi naslagwerk gemaakt:
http://gathering.tweakers.net/forum/list_messages/1429432

Je post #202 is onleesbaar trouwens. Zo geef je geen indices weer.
Ik ga je naslag werk eens lezen, maar hoe moet ik die dan weergeven?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  zaterdag 12 februari 2011 @ 21:16:47 #207
75592 GlowMouse
l'état, c'est moi
pi_92693572
(col1,col2), (col4), etc.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92693957
Ik ga je naslag werk uitprinten, dit moet ik even laten bezinken denk ik :@
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_92708428
als ik het volgende uitvoer dan krijg op mijn scherm te staan optredens.id
en ik zie eigenlijk ook wel dat het er staat..maar zonder quotes krijg ik de foutmelding:
Use of undefined constant optredens - assumed 'optredens'

ik zie m echt niet

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$commando_id
=
"SELECT 'optredens.id'
FROM 'optredens'
WHERE datum= '
$aData[datum]'
AND dagdeel = '
$aData[dagdeel]'
AND wat = '
$aData[wat]'
AND waar = '
$aData[waar]' ";

mysql_query($commando_id);
$id='optredens.id';
echo 
$id;
?>
pi_92709062
quote:
1s.gif Op zondag 13 februari 2011 10:09 schreef MrNiles het volgende:
als ik het volgende uitvoer dan krijg op mijn scherm te staan optredens.id
en ik zie eigenlijk ook wel dat het er staat..maar zonder quotes krijg ik de foutmelding:
Use of undefined constant optredens - assumed 'optredens'

ik zie m echt niet
[ code verwijderd ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$commando_id
=
"SELECT 'optredens.id'
FROM 'optredens'
WHERE datum= '"
.$aData['datum']."'
AND dagdeel = '"
.$aData['dagdeel']."'
AND wat = '"
.$aData['wat']."'
AND waar = '"
.$aData['waar']."' ";

$result mysql_query($commando_id);

//$id='optredens.id'; ?????? je wilde dit veranderen? in $id? Waaruit? zomaar uit 'optredens.id?'
// Dit snapt PHP niet , je speelt nu met 2 talen door elkaar SQL en PHP.
// hierdoor is het beter om eerst het in  een $result te gooien en voor elke Rij een waarde op te //roepen.

While($row mysql_fetch_assoc($result)){

echo 
$row['id'];
}
?>


[ Bericht 12% gewijzigd door cablegunmaster op 13-02-2011 11:05:59 ]
Redacted
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')