abonnement Unibet Coolblue
  zondag 24 juni 2012 @ 19:46:13 #251
118011 BrainOverfloW
Fok! around the Clock!
pi_113326507
quote:
Het is altijd zo simpel als je door hebt wat je over het hoofd ziet :'). Bedankt.
Whether or not you can become great at something, you can always become better.
And one day you'll wake up and find out how good you actually became, having transcended whatever limits you might have thought you couldn't pass.
Neil Degrasse Tyson
pi_113326513
quote:
0s.gif Op zondag 24 juni 2012 19:40 schreef raptorix het volgende:

[..]

Dan gebruik je gewoon een kut database omdat normale databases dat zelf wel cachen dan wel optimaliseren, we hebben het hier niet over miljoenen records mag ik aannemen.
Nope :N
Ik verwacht honderden. Als het echt succesvol wordt (wat ik niet zo gauw verwacht) misschien duizeden, maar that's it.
Leuk dat er nog over mijn stelling wordt gedebatteerd hier :). Ik heb inmiddels een tweede design verzonnen. Een aparte scoretabel (wedstrijdid, teamid, scorevoor, scoretegen, toto) met daarin per wedstrijd 2 records, voor elk team van de wedstrijd 1. Het is wel redundante opslag, maar maakt het volgens mij wel een stuk makkelijker om de standen te bereken.
"...while I'm supposed to marry her brother, a renowned pillow biter." Cersei Lannister
"Float like a butterfly, sting like a bee, look ridiculous." Rory the Roman
"It's smaller on the outside." Clara Oswin Oswald
pi_113326662
quote:
0s.gif Op zondag 24 juni 2012 19:46 schreef BrainOverfloW het volgende:

[..]

Het is altijd zo simpel als je door hebt wat je over het hoofd ziet :'). Bedankt.
Is wel zonder decimalen :P

Wacht dit is een leuke met decimalen:
1
2
3
4
5
    probability = probability/(probability+1);
    probability = Math.round(probability*100)/100;
    probability = probability.toString().split('.');
    probability = probability[1] + '.' + probability[0];
    alert(probability);
pi_113327000
quote:
2s.gif Op zondag 24 juni 2012 19:46 schreef WheeleE het volgende:

[..]

Nope :N
Ik verwacht honderden. Als het echt succesvol wordt (wat ik niet zo gauw verwacht) misschien duizeden, maar that's it.
Leuk dat er nog over mijn stelling wordt gedebatteerd hier :). Ik heb inmiddels een tweede design verzonnen. Een aparte scoretabel (wedstrijdid, teamid, scorevoor, scoretegen, toto) met daarin per wedstrijd 2 records, voor elk team van de wedstrijd 1. Het is wel redundante opslag, maar maakt het volgens mij wel een stuk makkelijker om de standen te bereken.
Heb je het al geprobeerd met een genormaliseerd design en een reeele set testdata?
Het probleem met denormaliseren is dat wanneer je later dingen wilt uitbreiden je vaak de web inslaat van "sloppy design".
🕰️₿🕰️₿🕰️₿🕰️₿🕰️₿🕰️ TikTok next Block
pi_113327288
quote:
0s.gif Op zondag 24 juni 2012 19:54 schreef raptorix het volgende:

[..]

Heb je het al geprobeerd met een genormaliseerd design en een reeele set testdata?
Het probleem met denormaliseren is dat wanneer je later dingen wilt uitbreiden je vaak de web inslaat van "sloppy design".
Ik maak me niet zo'n zorgen over de performance, maar ik krijg de juiste resultaten er niet uit. Mijn querykennis is gewoon ontzettend weggezakt :')
Het initiele ontwerp was netjes genormaliseerd, en met enkele tientalle records testdata. Alleen kreeg ik het niet voor mekaar de complexere overzichten uit te halen. Door een aangepast ontwerp lukt dat hopelijk wel, zonder dat het ten koste gaat van performance.
"...while I'm supposed to marry her brother, a renowned pillow biter." Cersei Lannister
"Float like a butterfly, sting like a bee, look ridiculous." Rory the Roman
"It's smaller on the outside." Clara Oswin Oswald
pi_113332577
quote:
2s.gif Op zondag 24 juni 2012 19:59 schreef WheeleE het volgende:

[..]

Ik maak me niet zo'n zorgen over de performance, maar ik krijg de juiste resultaten er niet uit. Mijn querykennis is gewoon ontzettend weggezakt :')
Het initiele ontwerp was netjes genormaliseerd, en met enkele tientalle records testdata. Alleen kreeg ik het niet voor mekaar de complexere overzichten uit te halen. Door een aangepast ontwerp lukt dat hopelijk wel, zonder dat het ten koste gaat van performance.
Queries om standen op te bouwen zijn ook lastig, je ontkomt in principe niet aan aggregate queries, en die vind ik zelf ook altijd kut :+

Zelf heb ik jarenlang behoorlijk complexe queries geschreven (bijvoorbeeld voor de eerste versie van Funda) maar laatst moest ik een simpele join doen, en dat lukte me niet meer uit me hoofd :+
🕰️₿🕰️₿🕰️₿🕰️₿🕰️₿🕰️ TikTok next Block
pi_113334191
quote:
0s.gif Op zondag 24 juni 2012 21:26 schreef raptorix het volgende:

[..]

Queries om standen op te bouwen zijn ook lastig, je ontkomt in principe niet aan aggregate queries, en die vind ik zelf ook altijd kut :+

Zelf heb ik jarenlang behoorlijk complexe queries geschreven (bijvoorbeeld voor de eerste versie van Funda) maar laatst moest ik een simpele join doen, en dat lukte me niet meer uit me hoofd :+
Heheh, ja dat is hem precies. Ik ben ooit begonnen als beheerder+ontwikkelaar, maar de afgelopen 5/6 jaar heb ik alleen maar beheerwerk gedaan. Joinen lukt nog wel, maar al dat soort berekeningen worden een uitdaging.
Daarom ga ik nu maar voor de concessie in normalisatie. Mocht mijn hobbyfrutsel ooit succesvol worden dan zal het toch helemaal herschreven moeten worden, lekker boeiend :).
"...while I'm supposed to marry her brother, a renowned pillow biter." Cersei Lannister
"Float like a butterfly, sting like a bee, look ridiculous." Rory the Roman
"It's smaller on the outside." Clara Oswin Oswald
  zondag 24 juni 2012 @ 22:59:12 #258
75592 GlowMouse
l'état, c'est moi
pi_113340082
quote:
0s.gif Op zondag 24 juni 2012 19:40 schreef raptorix het volgende:

[..]

Dan gebruik je gewoon een kut database omdat normale databases dat zelf wel cachen dan wel optimaliseren, we hebben het hier niet over miljoenen records mag ik aannemen.
Dit topic gaat over MySQL, die doet dat niet. Andere db's ken ik niet, maar ik betwist dat die dit wel goed kunnen cachen.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  zondag 24 juni 2012 @ 23:19:10 #259
363305 Muffle
Mufflelicious
pi_113341800
Hallo PHP'ers en SQL'ers.

Ik heb al een beetje basiservaring met standaard html geneuzel, en ben begaafd in het oplossen van mijn HTML/CSS problemen met google.

Alleen heb ik een nieuw idee, en dat heeft natuurlijk weer php nodig.

Ik heb easyPHP al geinstalleerd dus alles staat klaar.

Mijn vraag/nieuw project:

Hoe maak ik een knop, dat als je er op drukt, dat een variabele 1 omhoog gaat.
Slechts 1x klikken per IP, en dat het IP ook wordt opgeslagen.

Iemand enig idee WAAR ik moet beginnen, en hoe ik een goeie database aanmaak?
Ik krijg me dan toch een partij met opties.
  zondag 24 juni 2012 @ 23:25:29 #260
75592 GlowMouse
l'état, c'est moi
pi_113342701
Het begint met het onderscheid leren tussen server-side en client-side.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  maandag 25 juni 2012 @ 01:10:10 #261
12221 Tijn
Powered by MS Paint
pi_113348069
Wat bedoel je met "dat een variabele omhoog gaat"? Is dat een getal? Bedoel je dan niet gewoon het aantal records dat is geregistreerd?
  maandag 25 juni 2012 @ 01:20:29 #262
363305 Muffle
Mufflelicious
pi_113348324
quote:
5s.gif Op maandag 25 juni 2012 01:10 schreef Tijn het volgende:
Wat bedoel je met "dat een variabele omhoog gaat"? Is dat een getal? Bedoel je dan niet gewoon het aantal records dat is geregistreerd?
Gewoon het aantal records :)
  maandag 25 juni 2012 @ 02:03:18 #263
12221 Tijn
Powered by MS Paint
pi_113349226
quote:
0s.gif Op maandag 25 juni 2012 01:20 schreef Muffle het volgende:

[..]

Gewoon het aantal records :)
Ik zou zeggen, maak dan een tabel waarin je de unieke IP-adressen opslaat. Dit is de simpelste variant, zonder verdere velden. In een echte applicatie zijn kolommen als een uniek id en een timestamp waarschijnlijk wel handig om toe te voegen, maar niet nodig om alleen maar het aantal keer dat er op een knop is geklikt te tellen.

1
2
3
4
CREATE TABLE IF NOT EXISTS `log` (
  `ip` varchar(45) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`ip`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Dit is een tabel met alleen een kolom die "ip" heet waarin varchars (strings) van maximaal 45 tekens kunnen worden opgeslagen, wat lang genoeg is om zowel IPv4 als IPv6-adressen op te slaan. Doordat deze kolom ook de primary key is, wordt voorkomen dat er dubbele IP-adressen worden opgeslagen.

Vervolgens zou je zo'n soort pagina kunnen maken:

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

#
# KNOPPENTELLER
#

// verbinden met de database
$mysqli = new mysqli("localhost""username""password""database");

// verwerk input
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
  
// controleer of het meegestuurde ip-adres een geldig adres is
  
if(filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP))
  {
    
// probeer het in de database op te slaan
    
if($mysqli->query('INSERT INTO `log` (`ip`) VALUES("'.$_SERVER['REMOTE_ADDR'].'")'))
    {
      
// gelukt :)
      
$message 'Bedankt!';
    }
    else
    {
      
// mislukt :(
      
$message 'Er is al een keer vanaf dit IP-adres op de knop gedrukt, dus het mag nu niet meer.';
    }
  }
}

// haal alle logs op
$result $mysqli->query("SELECT * FROM `log`");

?>
<!DOCTYPE html>
<html>
  <head>
    <title>Knoppenteller</title>
  </head>
  <body>
    <h1>Knoppenteller</h1>
    <p>Elk uniek IP-adres mag 1 keer op de knop drukken.</p>
    <p>De knop is tot nu toe <strong><?php echo $result->num_rows?></strong> keer ingedrukt.</p>
    <?php if(isset($message)): ?>
    <p><strong><?php echo $message?></strong></p>
    <?php else: ?>
    <form method="post" action="">
      <button type="submit">de knop</button>
    </form>  
    <?php endif; ?>
  </body>
</html>

Kheb bij elke PHP-regel een comment gezet met uitleg wat die regel doet. Spreekt voor zich, toch?

Wat betreft de databaseverbinding: PHP biedt 3 manieren om met een MySQL-database te verbinden (klik hier voor meer info). Ik heb hier gebruik gemaakt van mysqli. Je zou ook voor PDO kunnen kiezen.

Mocht je een echte applicatie gaan bouwen dan is het waarschijnlijk een goed idee om te kijken naar een framework (Zend Framework, CakePHP, CodeIgniter om wat populaire voorbeelden te noemen) met een abstractielaag voor databasetoegang, zodat je je hier niet druk om hoeft te maken. Een goed framework is waarschijnlijk de beste manier om op een zo snel mogelijke manier een veilige applicatie te bouwen.

[ Bericht 0% gewijzigd door Tijn op 25-06-2012 02:46:16 ]
  maandag 25 juni 2012 @ 05:30:41 #264
363305 Muffle
Mufflelicious
pi_113350913
quote:
14s.gif Op maandag 25 juni 2012 02:03 schreef Tijn het volgende:

[..]

Ik zou zeggen, maak dan een tabel waarin je de unieke IP-adressen opslaat. Dit is de simpelste variant, zonder verdere velden. In een echte applicatie zijn kolommen als een uniek id en een timestamp waarschijnlijk wel handig om toe te voegen, maar niet nodig om alleen maar het aantal keer dat er op een knop is geklikt te tellen.
[ code verwijderd ]

Dit is een tabel met alleen een kolom die "ip" heet waarin varchars (strings) van maximaal 45 tekens kunnen worden opgeslagen, wat lang genoeg is om zowel IPv4 als IPv6-adressen op te slaan. Doordat deze kolom ook de primary key is, wordt voorkomen dat er dubbele IP-adressen worden opgeslagen.

Vervolgens zou je zo'n soort pagina kunnen maken:
[ code verwijderd ]

Kheb bij elke PHP-regel een comment gezet met uitleg wat die regel doet. Spreekt voor zich, toch?

Wat betreft de databaseverbinding: PHP biedt 3 manieren om met een MySQL-database te verbinden (klik hier voor meer info). Ik heb hier gebruik gemaakt van mysqli. Je zou ook voor PDO kunnen kiezen.

Mocht je een echte applicatie gaan bouwen dan is het waarschijnlijk een goed idee om te kijken naar een framework (Zend Framework, CakePHP, CodeIgniter om wat populaire voorbeelden te noemen) met een abstractielaag voor databasetoegang, zodat je je hier niet druk om hoeft te maken. Een goed framework is waarschijnlijk de beste manier om op een zo snel mogelijke manier een veilige applicatie te bouwen.
Danku zeer!
Na veel doorlezen/leren/proberen, snap ik het nu, en heb ik zelf de tables/databases gemaakt en ID's toegevoegd.

En nu even denken over verder project.
  maandag 25 juni 2012 @ 12:13:28 #265
267443 Cue_
Cuecumbergirl
pi_113357425
Even een SQL vraagje

ik heb twee tabellen uhm de 101 en 860
nu moet ik van bepaalde data in de 860 gegevens updaten met data uit de 101

De 860 bevat
id, customer, ordernr, regelnr, status

de 101
customer, ordernr,regel

Nu wil ik in de 860 de customer updaten waar de ordernr en regelnr van de 860 en 101 gelijk zijn aan elkaar.
Dus krijg dan ... update 860 set customer = (select customer from 101 ......
Maar hoe stel ik die twee dan gelijk aan elkaar bij een update statement. Een select vind ik dan weer niet lastig.

Dan krijg ik:
select t.customer from 101 t
inner join 860 b on t.ordernr = b.ordernr and t.regelnr = b.regelnr
where b.id = 377743365
  maandag 25 juni 2012 @ 12:14:57 #266
75592 GlowMouse
l'état, c'est moi
pi_113357486
update 860 set customer = (select customer from 101 where 101.ordernr=860.ordernr and 101.regel=860.regelnr order by ... limit 1)
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  maandag 25 juni 2012 @ 12:24:18 #267
267443 Cue_
Cuecumbergirl
pi_113357837
Hij dut t O+

[ Bericht 46% gewijzigd door Cue_ op 25-06-2012 12:34:25 ]
pi_113365587
Ik mag serieus hopen dat je die tables niet echt zo hebt genoemd?
🕰️₿🕰️₿🕰️₿🕰️₿🕰️₿🕰️ TikTok next Block
  maandag 25 juni 2012 @ 16:24:09 #269
363305 Muffle
Mufflelicious
pi_113369671
quote:
14s.gif Op maandag 25 juni 2012 02:03 schreef Tijn het volgende:

[..]

Ik zou zeggen, maak dan een tabel waarin je de unieke IP-adressen opslaat. Dit is de simpelste variant, zonder verdere velden. In een echte applicatie zijn kolommen als een uniek id en een timestamp waarschijnlijk wel handig om toe te voegen, maar niet nodig om alleen maar het aantal keer dat er op een knop is geklikt te tellen.
[ code verwijderd ]

Zitten er allebei ook in.
Nu verder met het design van mijn website
  dinsdag 26 juni 2012 @ 13:48:02 #270
104871 remlof
Europees federalist
pi_113410023
www.memsql.com volledig compatibel met en 30x sneller dan MySQL :o
  dinsdag 26 juni 2012 @ 13:58:01 #271
84244 Scorpie
Abject en infaam!
pi_113410404
quote:
11s.gif Op dinsdag 26 juni 2012 13:48 schreef remlof het volgende:
www.memsql.com volledig compatibel met en 30x sneller dan MySQL :o
Heb je alleen wel Linux 64 bit met 8gig geheugen voor nodig.
Op dinsdag 13 augustus schreef Xa1pt:
Neuh, fraude mag best aangepakt worden. Maar dat het de maatschappij meer oplevert of beter is voor de samenleving, is nog maar de vraag.
Op donderdag 25 juni 2015 schreef KoosVogels:
Klopt. Ik ben een racist.
  dinsdag 26 juni 2012 @ 13:59:27 #272
104871 remlof
Europees federalist
pi_113410469
quote:
6s.gif Op dinsdag 26 juni 2012 13:58 schreef Scorpie het volgende:

[..]

Heb je alleen wel Linux 64 bit met 8gig geheugen voor nodig.
Wat kost 8Gb nou nog tegenwoordig? :P
  dinsdag 26 juni 2012 @ 14:11:33 #273
267443 Cue_
Cuecumbergirl
pi_113411009
quote:
0s.gif Op maandag 25 juni 2012 15:04 schreef raptorix het volgende:
Ik mag serieus hopen dat je die tables niet echt zo hebt genoemd?
Nop, dit is even een afkorting. Al hebben ze wel heel leuk cijfertjes in de naam. Maar heb ik niet bedacht. BAAN (Infor) :r
  dinsdag 26 juni 2012 @ 14:15:34 #274
84244 Scorpie
Abject en infaam!
pi_113411210
quote:
7s.gif Op dinsdag 26 juni 2012 13:59 schreef remlof het volgende:

[..]

Wat kost 8Gb nou nog tegenwoordig? :P
Niks, binnenkort maar eens een VM maken met dit erop. Kijken hoe het zich verhoudt met mijn newznab instantie met 25 gig aan data.
Op dinsdag 13 augustus schreef Xa1pt:
Neuh, fraude mag best aangepakt worden. Maar dat het de maatschappij meer oplevert of beter is voor de samenleving, is nog maar de vraag.
Op donderdag 25 juni 2015 schreef KoosVogels:
Klopt. Ik ben een racist.
  dinsdag 26 juni 2012 @ 14:18:42 #275
75592 GlowMouse
l'état, c'est moi
pi_113411367
quote:
11s.gif Op dinsdag 26 juni 2012 13:48 schreef remlof het volgende:
www.memsql.com volledig compatibel met en 30x sneller dan MySQL :o
Leuk voor mensen die MySQL niet kunnen configureren en durability niet waarderen. Ik verwacht binnen niet al te lange tijd wat vernietigende blogposts.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')