abonnement Unibet Coolblue Bitvavo
pi_105136026
Een class is (als het goed is) meer dan een verzameling bijeengeraapte functies. Het is een abstractie van een ding uit de echte wereld, en je wilt dan ook de relevante eigenschappen meenemen. Zo heeft een klant een naam en een adres. En vast nog meer dingen (het totaal uitgegeven bedrag bijvoorbeeld.) Maar misschien wil je een klant wel modelleren als een persoon met wat extra gegevens.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
class Customer {
    private 
$name;
    public function 
getName() { return $this->name; }
    public function 
setName($name) { $this->name $name; }

    private 
$address;
    public function 
getAddress() { return $this->address; }
    public function 
setAddress($address) { $this->address $address; }
    
// More properties ... :)

    
public function __construct($name ''$address '')
    {
        
$this->setName($name);
        
$this->setAddress($address);
    }

    public function 
save()
    {
        
// save logic here
    
}

    public function 
delete()
    {
        
// delete logic here
    
}
}
?>

En ja, je kunt objecten in een sessie opslaan. Dan moet je ze serializen.
pi_105248716
Ik ben bezig met het laten zien van een kaart op een dynamische pagina van een restaurant. (zie bijv: http://www.japansesushi.nl/restaurants/kimono). Iemand een idee waarom lat en long hier geen waarde krijgen, waardoor de kaart dus niet zichtbaar is?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$adres 
strip_tagsget_the_term_list($post->ID'adres') );
$postcode strip_tagsget_the_term_list($post->ID'postcode') );  
$httpadres "http://maps.google.com/maps/api/geocode/json?address=";
$httpadres .= str_replace(" ""+"$adres);
$httpadres .= "+";
$httpadres .= str_replace(" ""+"$postcode);
$httpadres .= "&sensor=false";

$geocode=file_get_contents($httpadres);

$outputjson_decode($geocode);

$lat $output->results[0]->geometry->location->lat;
$long $output->results[0]->geometry->location->lng;
?>

Ik echo nu ook $httpadres, dat blijkt gewoon een correcte link te zijn.

edit: gister werkte de code nog wel
  dinsdag 6 december 2011 @ 13:15:57 #203
91039 mstx
2x1/2 = 1/2 x 1/2
pi_105249044
quote:
0s.gif Op dinsdag 6 december 2011 13:05 schreef _superboer_ het volgende:
edit: gister werkte de code nog wel
Teveel requests gedaan?
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
pi_105249154
quote:
0s.gif Op dinsdag 6 december 2011 13:15 schreef mstx het volgende:

[..]

Teveel requests gedaan?
Hoe worden requests geteld? Gaat het om dan om het aantal requests vanaf de domein japansesushi.nl of vanaf mijn ip-adres?
  dinsdag 6 december 2011 @ 13:21:30 #205
91039 mstx
2x1/2 = 1/2 x 1/2
pi_105249276
quote:
0s.gif Op dinsdag 6 december 2011 13:18 schreef _superboer_ het volgende:

[..]

Hoe worden requests geteld? Gaat het om dan om het aantal requests vanaf de domein japansesushi.nl of vanaf mijn ip-adres?
https://code.google.com/i(...)on/geocoding/#Limits
Ik neem aan dat hij het aantal requests per IP telt. Als je fiile_get_contents doet stuurt hij volgens mij sowieso geen domeinnaam mee dus die kan google niet achterhalen.
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
pi_105249319
quote:
0s.gif Op dinsdag 6 december 2011 13:21 schreef mstx het volgende:

[..]

https://code.google.com/i(...)on/geocoding/#Limits
Ik neem aan dat hij het aantal requests per IP telt. Als je fiile_get_contents doet stuurt hij volgens mij sowieso geen domeinnaam mee dus die kan google niet achterhalen.
Als ik vanaf een ander device probeer werkt het ook niet, terwijl als ik zelf in m'n browser naar de api-url surf ik wel iets terug krijg.
  dinsdag 6 december 2011 @ 15:26:25 #207
75592 GlowMouse
l'état, c'est moi
pi_105254067
quote:
0s.gif Op dinsdag 6 december 2011 13:18 schreef _superboer_ het volgende:

[..]

Hoe worden requests geteld?
Wie doet de request bij Google?
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_105254761
Hij(met php op de server) doet de requests, met file_get_contents. Ik zou even iets van caching doen op het resultaat ;)
💍 💍 💍 💍 💍 💍 🍌 ☎
  dinsdag 6 december 2011 @ 20:06:50 #209
52200 ViPeRII
It's a good day to die
pi_105267342
Hi,

Mijn query geeft een probleem, alleen kan ik door de bomen het bos even niet zien, en ik hoop dat jullie mij kunnen helpen.

Ik krijg de foutmelding: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 32

Dat gebeurd (vermoedelijk) bij de volgende query:

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
<?php
mysql_query('INSERT INTO toll_free_cross_corporation 
            (`LINE_NO`, 
             `CORPORATION_ID`,
             `BILL_PLAYER_ID`,
             `NODE_NO`,
             `ACCOUNT_NO`,
             `PAGE_NO`,
             `INVOICE_NO`,
             `INVOICE_DATE`,
             `ACCOUNTING_CODE`,
             `ACCOUNTING_DESCRIPTION`,
             `ACCOUNTING_ID_DESCRIPTION`,
             `NUMBER_CALLED_FROM`,
             `DATE_CALLED`,
             `TIME_CALLED`,
             `CALLER_NUMBER`,
             `PLACE_CALLED_FROM`,
             `MINUTES_CALLED`,
             `ROUTED_FROM_NETWORK`,
             `ROUTED_FROM_NCP`,
             `ROUTED_FROM_RATE`,
             `ROUTED_FROM_TYPE`,
             `USAGE`,
             `PAYPHONE_USE_CHARGE`,
             `SURCHARGE`,
             `TOTAL`,
             `END_TIME`,
             `CALCULATED_RATE`,
             `MINUTES_TRANSLATED_TO_SECONDS`,
             `START_DATE_TIME_TIMESTAMP`,
             `END_DATE_TIME_TIMESTAMP`
        ) VALUES '.implode(',', $sql)) or die (mysql_errno() . ": ". mysql_error());
?>
Lijn 31 is volgens mij
) VALUES '.implode(',', $sql)) or die (mysql_errno() . ": ". mysql_error());

En die kan deze fout volgens mij niet echt opleveren.

De inhoud van $sql wordt als volgt gevuld:

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
<?php
    foreach( $toll_free_cross_corporation_data_array as $row ) 
    {
            $sql[] = '("'.mysql_real_escape_string($row['LINE_NO']).'", 
                   "'.mysql_real_escape_string($row['CORPORATION_ID']).'",
                       "'.mysql_real_escape_string($row['BILL_PLAYER_ID']).'",
                   "'.mysql_real_escape_string($row['NODE_NO']).'",
                   "'.mysql_real_escape_string($row['ACCOUNT_NO']).'",
                   "'.mysql_real_escape_string($row['PAGE_NO']).'",
                               "'.mysql_real_escape_string($row['INVOICE_NO']).'",
                        "'.mysql_real_escape_string($row['INVOICE_DATE']).'",
                   "'.mysql_real_escape_string($row['ACCOUNTING_CODE']).'",
                   "'.mysql_real_escape_string($row['ACCOUNTING_DESCRIPTION']).'",
                   "'.mysql_real_escape_string($row['ACCOUNTING_ID_DESCRIPTION']).'",
                   "'.mysql_real_escape_string($row['NUMBER_CALLED_FROM']).'",
                   "'.mysql_real_escape_string($row['DATE_CALLED']).'",
                   "'.mysql_real_escape_string($row['TIME_CALLED']).'",
                   "'.mysql_real_escape_string($row['CALLER_NUMBER']).'",
                   "'.mysql_real_escape_string($row['PLACE_CALLED_FROM']).'",
                   "'.mysql_real_escape_string($row['MINUTES_CALLED']).'",
                   "'.mysql_real_escape_string($row['ROUTED_FROM_NETWORK']).'",
                   "'.mysql_real_escape_string($row['ROUTED_FROM_NCP']).'",
                   "'.mysql_real_escape_string($row['ROUTED_FROM_RATE']).'",
                   "'.mysql_real_escape_string($row['ROUTED_FROM_TYPE']).'",
                   "'.mysql_real_escape_string($row['USAGE']).'",
                   "'.mysql_real_escape_string($row['PAYPHONE_USE_CHARGE']).'",
                   "'.mysql_real_escape_string($row['SURCHARGE']).'",
                   "'.mysql_real_escape_string($row['TOTAL']).'",
                   "'.mysql_real_escape_string($row['END_TIME']).'",
                   "'.mysql_real_escape_string($row['CALCULATED_RATE']).'",
                   "'.mysql_real_escape_string($row['MINUTES_TRANSLATED_TO_SECONDS']).'",
                   "'.mysql_real_escape_string($row['START_DATE_TIME_TIMESTAMP']).'",
                   "'.mysql_real_escape_string($row['END_DATE_TIME_TIMESTAMP']).'"
                 )';
            }

?>

En de database is opgebouwd met de volgende gegevens:
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
CREATE TABLE IF NOT EXISTS `toll_free_cross_corporation` 
(
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `LINE_NO` text NOT NULL,
  `PAGE_NO` int(11) NOT NULL,
  `CORPORATION_ID` text NOT NULL,
  `BILL_PLAYER_ID` text NOT NULL,
  `NODE_NO` text NOT NULL,
  `ACCOUNT_NO` text NOT NULL,
  `INVOICE_NO` text NOT NULL,
  `INVOICE_DATE` date NOT NULL,
  `ACCOUNTING_CODE` text NOT NULL,
  `ACCOUNTING_DESCRIPTION` text NOT NULL,
  `ACCOUNTING_ID_DESCRIPTION` text NOT NULL,
  `NUMBER_CALLED_FROM` text NOT NULL,
  `DATE_CALLED` date NOT NULL,
  `TIME_CALLED` time NOT NULL,
  `CALLER_NUMBER` text NOT NULL,
  `PLACE_CALLED_FROM` text NOT NULL,
  `MINUTES_CALLED` decimal(6,2) NOT NULL,
  `ROUTED_FROM_NETWORK` varchar(1) NOT NULL,
  `ROUTED_FROM_NCP` varchar(1) NOT NULL,
  `ROUTED_FROM_RATE` varchar(1) NOT NULL,
  `ROUTED_FROM_TYPE` varchar(2) NOT NULL,
  `USAGE` decimal(6,2) NOT NULL,
  `PAYPHONE_USE_CHARGE` decimal(6,2) NOT NULL,
  `SURCHARGE` decimal(6,2) NOT NULL,
  `TOTAL` decimal(6,2) NOT NULL,
  `END_TIME` time NOT NULL,
  `CALCULATED_RATE` decimal(4,4) NOT NULL,
  `MINUTES_TRANSLATED_TO_SECONDS` int(11) NOT NULL,
  `START_DATE_TIME_TIMESTAMP` text NOT NULL,
  `END_DATE_TIME_TIMESTAMP` text NOT NULL,
  PRIMARY KEY (`ID`)    
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1";

Kan het zijn dat ik een type invoer wat niet overeenkomt met het soort veld? En zo ja, hoe achterhaal ik dan welke veld dat dit is?

Ik heb her en der al wat gelezen over deze error, en ik zie ook dat ik "DEFAULT CHARSET=latin1" zou kunnen weghalen, wat misschien het probleem oplost, maar mijn inziens staat dat er niet voor niets, en wil ik ook graag weten wat de impact hiervan in.

Ook zie ik wat staan over de reserved words van mysql maar dan zie ik het over het hoofd, want die heb ik volgens mij niet gebruikt.
-- ViPeRII --
  dinsdag 6 december 2011 @ 20:46:18 #210
75592 GlowMouse
l'état, c'est moi
pi_105269268
verander mysql_query in echo en kijk wat eruit komt

let ook op je datatypes, text om een datum op te slaan is raar
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  dinsdag 6 december 2011 @ 20:54:19 #211
52200 ViPeRII
It's a good day to die
pi_105269659
quote:
14s.gif Op dinsdag 6 december 2011 20:46 schreef GlowMouse het volgende:
verander mysql_query in echo en kijk wat eruit komt

let ook op je datatypes, text om een datum op te slaan is raar
Zit wat in, zou ook een varchar moeten zijn eigenlijk.
De datums zijn qua inhoud echter niet gelijk, en er wordt wat mee gerekend, en dit doe ik voor dat de gegevens weer geexporteerd worden naar bv excel, vandaar dat de datum er als datum en als stamp in staan, en dat had inderdaad anders kunnen zijn als een text veld..

Als ik m echo komt er niets te staan, dat helpt me helaas ook niet...
-- ViPeRII --
  dinsdag 6 december 2011 @ 20:55:28 #212
75592 GlowMouse
l'état, c'est moi
pi_105269705
MySQL heeft ook een datumtype.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  dinsdag 6 december 2011 @ 21:15:09 #213
52200 ViPeRII
It's a good day to die
pi_105270575
Die gebruik ik ook ;)
-- ViPeRII --
pi_105282202
--edit
opgelost so far

[ Bericht 48% gewijzigd door Teeno op 07-12-2011 01:53:37 ]
pi_105283143
quote:
0s.gif Op dinsdag 6 december 2011 21:15 schreef ViPeRII het volgende:
Die gebruik ik ook ;)
Daar is anders niets van te zien in het create-statement van toll_free_cross_corporation.
pi_105293519
Ik vraag het toch hier maar even..

Sinds gisteren wat met OpenCart gaan stoeien, en besloten om even een lokale kopie te trekken van de files en database.

de shop zelf werkt gewoon, alleen kom ik niet in de admin.

db.php
1
2
3
4
5
if (file_exists(DIR_DATABASE . $driver . '.php')) {
            require_once(DIR_DATABASE . $driver . '.php');
        } else {
            exit('Error: Could not find database file ' . DIR_DATABASE . $driver . '.php!');
        }
Geeft het volgende terug;
Error: Could not find database file system/database/mysql.php!

Dat terwijl dezelfde db.php ook via de normale index wordt aangeroepen en hier wel alles werkt?

Dus in een notendop
bron admin/index.php kan database file niet vinden.
bron index.php werkt wel.

De admin dir heeft een eigen config.php, maar deze is identiek aan die van de root dir.
  woensdag 7 december 2011 @ 14:06:50 #217
75592 GlowMouse
l'état, c'est moi
pi_105293804
Zoek op cwd of stel een absoluut pad in.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_105294137
quote:
0s.gif Op woensdag 7 december 2011 14:06 schreef GlowMouse het volgende:
Zoek op cwd of stel een absoluut pad in.
Het moet em ergens in de includes zitten, want als ik het volgende aanpas
1
2
// define('DIR_DATABASE', DIR_SYSTEM.'database/');
define('DIR_DATABASE', $_SERVER['DOCUMENT_ROOT'].'/OpenCart/system/database');
Loopt ie weer vast op de volgende
Notice: Error: Could not load language dutch! in I:\Webserver\root\OpenCart\system\library\language.php on line 26
Warning: fopen(system/logs/error.txt) [function.fopen]: failed to open stream: No such file or directory in I:\Webserver\root\OpenCart\system\library\log.php on line 12

Stukje uit config.php
1
2
3
4
5
6
// DIR
define('INCLUDE_PATH', $_SERVER['DOCUMENT_ROOT'].'/OpenCart');

define('DIR_CATALOG', 'catalog/');
define('DIR_APPLICATION', DIR_CATALOG);
define('DIR_SYSTEM', 'system/');

Het setten van de INCLUDE_PATH in index.php gebeurt na de require_once('config.php');
1
2
// Set Include Path
ini_set('include_path', INCLUDE_PATH);

Wat zie ik over het hoofd :)
  woensdag 7 december 2011 @ 14:28:43 #219
75592 GlowMouse
l'état, c'est moi
pi_105294723
Ook de map voor je language file absoluut instellen dan maar. Of stel DIR_SYSTEM absoluut in.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_105294848
quote:
0s.gif Op woensdag 7 december 2011 14:28 schreef GlowMouse het volgende:
Ook de map voor je language file absoluut instellen dan maar. Of stel DIR_SYSTEM absoluut in.
Die zag ik aankomen idd en had ik al gedaan, zit nu weer met een nieuwe error dus ga weer even debuggen :)

Voor het gemak toch maar een verse install uitgevoerd, ging iets minder tijd in zitten :)

[ Bericht 12% gewijzigd door Teeno op 07-12-2011 14:40:08 ]
pi_105297274
URL: /producten/303/45/
Resultaat: index.php?page=producten&gid=303&product=45
RewriteRule ^/?producten/(.*)/?(.*)/$ /index\.php?page=producten&gid=$1&product=$2 [L]

Alleen klopt dit niet, en ik zie niet wat. ik heb geprobeerd met een regex pattern checker:
Te kijken of de regex overeen kwam met de url: http://regexpal.com/
maar hij wil de URL niet in Resultaat veranderen.
Redacted
  woensdag 7 december 2011 @ 15:40:34 #222
91039 mstx
2x1/2 = 1/2 x 1/2
pi_105297379
quote:
0s.gif Op woensdag 7 december 2011 15:37 schreef cablegunmaster het volgende:
URL: /producten/303/45/
Resultaat: index.php?page=producten&gid=303&product=45
RewriteRule ^/?producten/(.*)/?(.*)/$ /index\.php?page=producten&gid=$1&product=$2 [L]

Alleen klopt dit niet, en ik zie niet wat. ik heb geprobeerd met een regex pattern checker:
Te kijken of de regex overeen kwam met de url: http://regexpal.com/
maar hij wil de URL niet in Resultaat veranderen.
Verander /index\.php eens naar /index.php

Of probeer het anders eens zo:
1RewriteRule ^producten/(.*)/(.*)/$ /index.php?page=producten&gid=$1&product=$2 [L]
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
  woensdag 7 december 2011 @ 15:42:37 #223
75592 GlowMouse
l'état, c'est moi
pi_105297470
^/?producten/(.*)/?(.*)/$
Die eerste .* kan nu 303/45 matchen
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_105297489
quote:
0s.gif Op woensdag 7 december 2011 15:42 schreef GlowMouse het volgende:
^/?producten/(.*)/?(.*)/$
Die eerste .* kan nu 303/45 matchen
Dat zal hem wel zijn. hoe kan ik dat voorkomen?
vraagteken weghalen :P

Solved :)

quote:
0s.gif Op woensdag 7 december 2011 15:40 schreef mstx het volgende:

[..]

Verander /index\.php eens naar /index.php

Of probeer het anders eens zo:
[ code verwijderd ]

Dankje :). zag hem net staan en had het ook net zo gedaan en dat werkte O+
Redacted
pi_105326589
Weet iemand of het volgende al bestaat:

Ik zoek iets waarmee ik heel simpel 'n video bestand kan embedden op 'n pagina, dat ik het als volgt ongeveer kan aanroepen:

1
2
3
4
5
6
<?php
$videoplayer
->setSource('http://blabla.mpg');
$videoplayer->setDimensions($x$y);
$videoplayer->etc;
$videoplayer->start(); 
?>

Oid. Wil geen poespas admin panel of wat dan ook erbij. Wil puur en alleen in m'n php bestand alles kunnen setten, en dat ie vervolgens het embed in m'n div :)

In welk topic hoort dit precies thuis?
pi_105326612
quote:
0s.gif Op donderdag 8 december 2011 02:20 schreef Diabox het volgende:
Weet iemand of het volgende al bestaat:

Ik zoek iets waarmee ik heel simpel 'n video bestand kan embedden op 'n pagina, dat ik het als volgt ongeveer kan aanroepen:
[ code verwijderd ]

Oid. Wil geen poespas admin panel of wat dan ook erbij. Wil puur en alleen in m'n php bestand alles kunnen setten, en dat ie vervolgens het embed in m'n div :)

In welk topic hoort dit precies thuis?
Heeft vrij weinig met PHP te maken gezien dit uiteindelijk met HTML moet worden opgelost, PHP is slechts een serverside taal, die kan zoiets niet. Dit zou dan een soort wrapper worden die uiteindelijk ook een HTML oplossing moet gebruiken.
Of toch du vader?
pi_105326617
quote:
2s.gif Op donderdag 8 december 2011 02:23 schreef Luchtkoker het volgende:

[..]

Heeft vrij weinig met PHP te maken gezien dit uiteindelijk met HTML moet worden opgelost, PHP is slechts een serverside taal, die kan zoiets niet. Dit zou dan een soort wrapper worden die uiteindelijk ook een HTML oplossing moet gebruiken.
Ik weet wat PHP is ik zit bij je in de klas remember :) :) :) :) :)

Maar goed, op aanraden van jou ff JW player gecheckt, is zo te zien precies wat ik zoek. ^O^
pi_105332201
Hallo mede PHP-ers,

zit met een (raar) probleem. Ik ben bezig om een functie te schrijven die een IBAN rekeningnummer berekent aan de hand van rekeningnummer en banknaam. Dit moet kunnen volgens http://nl.wikipedia.org/w(...)Number#Samenstelling en http://www.ibannl.org/iban_nummer_uitleg.php.

Daarvoor moet het controlegetal berekent worden met de uitleg die daar staat.

Met het voorbeeld op de wikipedia site met bankrekening nummer 1234567 komt daar op gegeven moment 182316110001234567232100 uit en als je de rest neemt van de deling door 97 komt daar 78 uit. Je moet dan 98 - 78 doen en dan is het controlegetal 20. Dat klopt.

Echter als ik mijn eigen rekeningnummer gebruik in mijn functie kom ik op gegeven moment op
10112310549223002232100 / 97 en dan is de uitkomt van de rest ook 78, terwijl dit 82 moet zijn. Het controlegetal moet 16 zijn volgens meerdere IBAN checkers (bijv. http://www.ibannl.org/iban_check.php)

Ook als ik andere rekeningnummers gebruik, dan komt er altijd 78 uit als rest. Doe ik iets fout?

De code

1
2
3
4
<?php
$controlegetal 
10112310549223002232100;
$controlegetal 98 - ($controlegetal 97);     //een echo hierna geeft 20
?>
pi_105332361
http://code.google.com/p/php-iban/

Volgende vond ik op php.net:

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
function controleer_iban($iban) {
    $iban = str_replace(array(" ", "  ", "   ", "\t"), "", $iban);
    $iban = strtoupper(str_replace(" ", "", $iban));
    if(strlen($iban)>34)
        return false;
    $acceptabel = "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 3 4 5 6 7 8 9 0";
    $acceptabel = explode(" ", $acceptabel);
    for($i = 0; $i<strlen($iban); $i++) {
        if(in_array(substr($iban, $i, 1), $acceptabel) === false)
            return false;
    }
    $alfa = "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z";
    $alfa = explode(" ", $alfa);
    for($i = 1; $i<27; $i++) {
        $alfa_replace[] = $i+9;
    }
    $controlegetal = str_replace($alfa, $alfa_replace, substr($iban, 4, strlen($iban)-4).substr($iban, 0, 2)."00");
    $controlegetal = 98 - (int)bcmod($controlegetal,97);
    if((int)$controlegetal === (int)substr($iban, 2, 2))
        return true;
    else
        return false;   
}
?>
💍 💍 💍 💍 💍 💍 🍌 ☎
pi_105332672
Dank Pizzalucht, echter die php-iban heeft functies voor als je het IBAN al hebt. Ik ben bezig om een conversie te maken van "gewone" bankrekeningnummers naar IBAN nummers voor SEPA betalingen.

In de functie die je eronder post wordt er gebruik gemaakt van bcmod. Echter geeft die bij mij een undefined function error. Volgens de documentatie van PHP zou het gewoon een functie moeten zijn in PHP5. Zal even kijken of ik hier wat over kan vinden, misschien moet er een extensie geinstalleerd worden.
  donderdag 8 december 2011 @ 12:14:53 #231
75592 GlowMouse
l'état, c'est moi
pi_105333061
Het probleem is dat als jij 182316110001234567232100 invoert, er niet als 182316110001234567232100 mee wordt gerekend. Doe dit maar eens:
1
2
3
4
<?php
$a 
182316110001234567232100;
var_dump($a);
?>
Wat je kunt doen zonder bcmod, is het getal als string opslaan en dan zelf een staartdeling uitvoeren.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_105333234
quote:
0s.gif Op donderdag 8 december 2011 12:14 schreef GlowMouse het volgende:
Het probleem is dat als jij 182316110001234567232100 invoert, er niet als 182316110001234567232100 mee wordt gerekend. Doe dit maar eens:
[ code verwijderd ]

Wat je kunt doen zonder bcmod, is het getal als string opslaan en dan zelf een staartdeling uitvoeren.
Ik krijg inderdaad

1
2
3
<?php
string
(24"101123100549223002232100"
?>

Als ik vervolgens dat deel door 97 (dat bedoel je met staartdeling toch?) dan krijg ik

1
2
3
<?php
9.5086309658297E+16
?>

Hoe krijg ik hier dan de rest van?
Ik weet inmiddels wat je bedoeld met staartdeling, maar ga dan liever even kijken of ik die extensie kan installeren :P
  donderdag 8 december 2011 @ 12:23:56 #233
75592 GlowMouse
l'état, c'est moi
pi_105333330
Mensen die bang zijn van een staartdeling.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_105333524
quote:
9s.gif Op donderdag 8 december 2011 12:23 schreef GlowMouse het volgende:
Mensen die bang zijn van een staartdeling.
Het is niet dat ik er bang voor ben, maar dit is dan veel makkelijker

quote:
These functions are only available if PHP was configured with --enable-bcmath
  donderdag 8 december 2011 @ 18:26:22 #235
292596 Faux.
Fan van zichzelf
pi_105345887
mail() en imap_mail(); doen het bij mij niet. Ik roep het script aan via de terminal en hij geeft geen errors aan. Als ik het script upload op een web server dan blijft de pagina maar laden als ik het probeer te bereiken. Heeft iemand enig idee waar ik moet kijken om de oplossing te vinden?
Hier schreef tong80 het volgende:
Faux is een FOK!held, zoals dat vroeger Gellarboy en Brechtje waren. Users die je koestert.
pi_105346245
quote:
0s.gif Op donderdag 8 december 2011 12:14 schreef GlowMouse het volgende:
Het probleem is dat als jij 182316110001234567232100 invoert, er niet als 182316110001234567232100 mee wordt gerekend. Doe dit maar eens:
[ code verwijderd ]

Wat je kunt doen zonder bcmod, is het getal als string opslaan en dan zelf een staartdeling uitvoeren.
Ik krijg trouwens als type float terug, ligt dat aan het feit dat ik 64bit OS heb ?
pi_105347297
quote:
0s.gif Op donderdag 8 december 2011 18:38 schreef Pakspul het volgende:

[..]

Ik krijg trouwens als type float terug, ligt dat aan het feit dat ik 64bit OS heb ?
Nee, dat komt omdat het getal groter is dan PHP_INT_MAX.
pi_105368271
quote:
0s.gif Op donderdag 8 december 2011 19:06 schreef Light het volgende:

[..]

Nee, dat komt omdat het getal groter is dan PHP_INT_MAX.
Anyway het is "opgelost". In ieder geval de functie werkt. PHP is opnieuw compiled met bc_math support :P
  vrijdag 9 december 2011 @ 14:30:22 #239
267443 Cue_
Cuecumbergirl
pi_105377458
Jullie kunnen me vast wel even op weg helpen met een sql query

Ik heb een tabel order_match met daarin de volgende gegevens
- (1) act_starttime
- (2) act_id
- (3) act_nextid
- (4) act_activityid

nou wil ik dat ik bovenstaande gegevens krijg van een bepaalde klant (geen probleem)
plus diezelfde gegevens waar next_id = act_id

Dus ik wil op 1 regel eigenlijk de gegevens
1,2,3,4 .. met daarachter de gegevens van eig de volgende regel (nextid = actid)
  vrijdag 9 december 2011 @ 14:33:15 #240
267443 Cue_
Cuecumbergirl
pi_105377579
laat maar denk ik :)
  zondag 11 december 2011 @ 11:24:03 #241
52200 ViPeRII
It's a good day to die
pi_105446432
Hulp gezocht met een query!

Ik heb mijn gegevens in 1 tabel zitten, en daar wil ik een vergelijking op loslaten.

Tabel: Card
Velden: N_ID, CALLING_CARD_NO, CALLED_FROM, START_TIMESTAMP, END_TIMESTAMP

nu wil ik een selectie maken, waarbij ik per CALLING_CARD kijk, of de CALLED_FROM veranderd is, binnen een bepaalde tijd (zeg 2 uur). Maar ik kom totaal niet uit mijn query :P
Hij moet dus zichzelf gaan itereren, maar als ik dat doe, krijg ik meer resultaten terug dan dat er rijen in mijn tabel zitten.
1
2
3
4
5
6
N_ID    |   CALLING_CARD_NO    |    CALLED_FROM   | START_TIMESTAMP   | END_TIMESTAMP
1       |     0123             |    BOSTON        | 1230000           | 1230020
2       |     0123             |    BOSTON        | 1230040           | 1230060
3       |     0123             |    CHINA         | 1230080           | 1230100
4       |     0123             |    NETHERLANDS   | 1245000           | 1245010
5       |     0124             |    TAIWAN        | 1230000           | 1230100
Waarbij dan dus rij 2 + 3 geselecteerd zouden moeten worden, maar niet 4 omdat die dan buitend mijn zoekgebied valt (buiten de 2 uur), en 2 + 3 eigenlijk om dat ik de resultaten meteen wil hebben, maar als ik het ID bijvoorbeeld heb van 3 omdat die foutief is, denk ik dat ik er ook nog wel uit kan komen. Wie kan mij helpen?

Ik was begonnen met:
SELECT n1.*, n2.* FROM card n1 JOIN card n2 ON n1.CALLING_CARD_NO = n2.CALLING_CARD_NO WHERE n1.N_ID <> n2.N_ID AND n1.CALLED_FROM <> n2.CALLED_FROM

Maar ook dat levert al meer resultaten op dan dat er rijen in mijn tabel zitten :S
-- ViPeRII --
pi_105487492
SQL-query:

ALTER TABLE `accounts` ADD FOREIGN KEY ( `id` ) REFERENCES `DB_NAME`.`users` (
`acc_id`
) ON DELETE CASCADE ON UPDATE RESTRICT ;

MySQL retourneerde: Documentatie
#1452 - Cannot add or update a child row: a foreign key constraint fails (`DB_NAME`.<result 2 when explaining filename '#sql-419_1bae51'>, CONSTRAINT `#sql-419_1bae51_ibfk_1` FOREIGN KEY (`id`) REFERENCES `users` (`acc_id`) ON DELETE CASCADE)

Hoe kan ik dit oplossen? :P
Wat ik wou doen was een Foreign key op een acc_id uit users zetten. en op Accounts als ik daar 1 verwijderde dat uit accounts een corresponderend ID verdween. Alleen krijg ik opeens deze melding. Uit google wordt ik niet veel wijzer. beide tabellen hebben een InnoDB engine.
Redacted
pi_105512469
quote:
0s.gif Op maandag 12 december 2011 11:43 schreef cablegunmaster het volgende:
SQL-query:

ALTER TABLE `accounts` ADD FOREIGN KEY ( `id` ) REFERENCES `DB_NAME`.`users` (
`acc_id`
) ON DELETE CASCADE ON UPDATE RESTRICT ;

MySQL retourneerde: Documentatie
#1452 - Cannot add or update a child row: a foreign key constraint fails (`DB_NAME`.<result 2 when explaining filename '#sql-419_1bae51'>, CONSTRAINT `#sql-419_1bae51_ibfk_1` FOREIGN KEY (`id`) REFERENCES `users` (`acc_id`) ON DELETE CASCADE)

Hoe kan ik dit oplossen? :P
Wat ik wou doen was een Foreign key op een acc_id uit users zetten. en op Accounts als ik daar 1 verwijderde dat uit accounts een corresponderend ID verdween. Alleen krijg ik opeens deze melding. Uit google wordt ik niet veel wijzer. beide tabellen hebben een InnoDB engine.
Als er een foreign key op acc_id moet, moet je de tabel users wijzigen.
1
2
ALTER TABLE `users` ADD FOREIGN KEY (`acc_id`) REFERENCES `accounts` (`id`)
    ON DELETE CASCADE ON UPDATE RESTRICT;
pi_105513910
quote:
0s.gif Op zondag 11 december 2011 11:24 schreef ViPeRII het volgende:
Hulp gezocht met een query!

Ik heb mijn gegevens in 1 tabel zitten, en daar wil ik een vergelijking op loslaten.

Tabel: Card
Velden: N_ID, CALLING_CARD_NO, CALLED_FROM, START_TIMESTAMP, END_TIMESTAMP

nu wil ik een selectie maken, waarbij ik per CALLING_CARD kijk, of de CALLED_FROM veranderd is, binnen een bepaalde tijd (zeg 2 uur). Maar ik kom totaal niet uit mijn query :P
Hij moet dus zichzelf gaan itereren, maar als ik dat doe, krijg ik meer resultaten terug dan dat er rijen in mijn tabel zitten.
[ code verwijderd ]

Waarbij dan dus rij 2 + 3 geselecteerd zouden moeten worden, maar niet 4 omdat die dan buitend mijn zoekgebied valt (buiten de 2 uur), en 2 + 3 eigenlijk om dat ik de resultaten meteen wil hebben, maar als ik het ID bijvoorbeeld heb van 3 omdat die foutief is, denk ik dat ik er ook nog wel uit kan komen. Wie kan mij helpen?

Ik was begonnen met:
SELECT n1.*, n2.* FROM card n1 JOIN card n2 ON n1.CALLING_CARD_NO = n2.CALLING_CARD_NO WHERE n1.N_ID <> n2.N_ID AND n1.CALLED_FROM <> n2.CALLED_FROM

Maar ook dat levert al meer resultaten op dan dat er rijen in mijn tabel zitten :S
Zoiets, denk ik.
1
2
3
4
5
6
7
8
9
10
SELECT n1 . * , n2 . *
FROM card n1
INNER JOIN card n2 ON n1.calling_card_no = n2.calling_card_no
WHERE n1.called_from <> n2.called_from
AND n2.id = (
    SELECT min( id )
    FROM card n
    WHERE n.id > n1.id
    AND n.calling_card_no = n1.calling_card_no
)
pi_105522473
quote:
0s.gif Op maandag 12 december 2011 21:46 schreef Light het volgende:

[..]

Als er een foreign key op acc_id moet, moet je de tabel users wijzigen.
[ code verwijderd ]
Ik krijg dezelfde foutmelding met jou query , ik probeer dit simpelweg met phpmyadmin uit te voeren en ik word er niet wijzer van. na 3 pagina's google doorzoeken op deze melding.
Redacted
pi_105524371
quote:
0s.gif Op dinsdag 13 december 2011 01:15 schreef cablegunmaster het volgende:

[..]

Ik krijg dezelfde foutmelding met jou query , ik probeer dit simpelweg met phpmyadmin uit te voeren en ik word er niet wijzer van. na 3 pagina's google doorzoeken op deze melding.
Bevatten de tabellen al data? En zijn de kolommen wel gelijk?

Wat levert dit op?
1
2
3
4
5
6
7
8
9
10
11
12
SELECT table_schema, table_name, column_name, column_type
FROM information_schema.columns
WHERE table_schema='db_name'
AND (
  (
    table_name = 'users' AND column_name = 'acc_id'
  )
  OR
  (
    table_name =  'accounts' AND column_name = 'id'
  )
)
  FOK!-Schrikkelbaas dinsdag 13 december 2011 @ 21:22:12 #247
1972 Swetsenegger
Egocentrische Narcist
pi_105551985
Simpele vraag, ik een tabel (order_content) waar in elke row, naast andere gegevens, een product ID staat. En dit is een gekocht produkt.

In een andere tabel (products) staat of een product actief is (NOT NULL or <>0)

Nu wil ik een top 10 van de meest verkochte produkten die nog actief zijn. Kan iemand me even op weg helpen met de query(ies)?
pi_105552845
1
2
3
4
5
6
SELECT product.*, count(order_content.ProductID) as productcount
FROM product, order_content
WHERE product.ID = order_content.ProductID
GROUP BY product.ID
ORDER BY productcount
LIMIT 0, 10

Zoiets :? Haalt alle product informatie op en geeft als extratje nog mee het aantal keren dat product is verkocht (voorkomt in order_content)

Je moet zelf evens in de WHERE de AND product.active = ja NOT NULL, weet niet precies hoe je het hebt.
pi_105553045
quote:
5s.gif Op dinsdag 13 december 2011 21:22 schreef Swetsenegger het volgende:
Simpele vraag, ik een tabel (order_content) waar in elke row, naast andere gegevens, een product ID staat. En dit is een gekocht produkt.

In een andere tabel (products) staat of een product actief is (NOT NULL or <>0)

Nu wil ik een top 10 van de meest verkochte produkten die nog actief zijn. Kan iemand me even op weg helpen met de query(ies)?
Gebruik je in products zowel NULL als 0 om aan te geven dat een product niet actief is? Is het niet handiger om daar 1 oplossing voor te kiezen, altijd 0 bij inactief en 1 bij actief?
pi_105553129
quote:
0s.gif Op dinsdag 13 december 2011 21:41 schreef Light het volgende:

[..]

Gebruik je in products zowel NULL als 0 om aan te geven dat een product niet actief is? Is het niet handiger om daar 1 oplossing voor te kiezen, altijd 0 bij inactief en 1 bij actief?
idd, gebruik Tinyant(1) als boolean.
pi_105553171
quote:
0s.gif Op dinsdag 13 december 2011 21:43 schreef Pakspul het volgende:

[..]

idd, gebruik Tinyant(1) als boolean.
Kleine mier? ;)
pi_105553497
quote:
0s.gif Op dinsdag 13 december 2011 21:44 schreef Light het volgende:

[..]

Kleine mier? ;)
ja, is de opvolger van een int :P
  FOK!-Schrikkelbaas dinsdag 13 december 2011 @ 21:51:46 #253
1972 Swetsenegger
Egocentrische Narcist
pi_105553639
quote:
0s.gif Op dinsdag 13 december 2011 21:41 schreef Light het volgende:

[..]

Gebruik je in products zowel NULL als 0 om aan te geven dat een product niet actief is? Is het niet handiger om daar 1 oplossing voor te kiezen, altijd 0 bij inactief en 1 bij actief?
Het heeft een geschiedenis :)
pi_105553862
quote:
0s.gif Op dinsdag 13 december 2011 21:51 schreef Swetsenegger het volgende:

[..]

Het heeft een geschiedenis :)
Had je wat aan de query?
  FOK!-Schrikkelbaas dinsdag 13 december 2011 @ 22:09:59 #255
1972 Swetsenegger
Egocentrische Narcist
pi_105554748
quote:
0s.gif Op dinsdag 13 december 2011 21:55 schreef Pakspul het volgende:

[..]

Had je wat aan de query?
Yep! Met wat kleine aanpassingen.
pi_105554848
quote:
0s.gif Op dinsdag 13 december 2011 21:51 schreef Swetsenegger het volgende:

[..]

Het heeft een geschiedenis :)
Alter Table ook ;)
  FOK!-Schrikkelbaas dinsdag 13 december 2011 @ 22:41:17 #257
1972 Swetsenegger
Egocentrische Narcist
pi_105556845
quote:
0s.gif Op dinsdag 13 december 2011 22:11 schreef Light het volgende:

[..]

Alter Table ook ;)
Echt, als het zo eenvoudig was had ik het gedaan :). De table aanpassen is het minste van mijn zorg. Het cms aanpassen om die wijziging door te voeren is een groter probleem.
pi_105562771
Ik zocht een goede manier om wachtwoorden op te slaan. Van vinden jullie van deze methode? Hashen gebaseerd op tijd... md5 doet het 0,3 miljoen keer bij mij :P

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
<?php
define
('TIMEDHASH_MAX_TIME_SECONDS'1);
    
define('TIMEDHASH_ALGORITHM''sha256');
    
    function 
get_timedhash($str) {
    
        
$start_time microtime(true);
        
$end_time $start_time+TIMEDHASH_MAX_TIME_SECONDS;
        
$a0;
        
$new_str $str;
        
        while(
microtime(true) < $end_time) {
            
$new_str hash(TIMEDHASH_ALGORITHM$new_str.$a);
            
$a++;
        }
        
        return 
$new_str;
    
    }
    
    function 
match_timedhash($hash,$str) {
        
        
$max_time_seconds TIMEDHASH_MAX_TIME_SECONDS*1.5;
                
        
$start_time microtime(true);
        
$end_time $start_time+$max_time_seconds;
                
        
$a0;
        
$new_str $str;
                
        while(
microtime(true) < $end_time) {
                
            
$new_str hash(TIMEDHASH_ALGORITHM$new_str.$a);
                    
            if (
$new_str == $hash) return true;
                    
            
$a++;
                    
        }

        return 
false;
        
    }
    
    echo 
$hash get_timedhash('test');
    echo 
' ';
    
var_dump(match_timedhash($hash'test'));
    
    die();
?>
..///
  woensdag 14 december 2011 @ 10:13:29 #259
12348 _Flash_
Heeft altijd blackjack
pi_105567367
Ik vind het maar een riskante methode. Kom je niet in de problemen als er bijvoorbeeld meerdere mensen tegelijk willen inloggen, de processorkracht verdeeld wordt over die berekeningen en ze dus allemaal de juiste diepte niet halen? Soort van oplossing is natuurlijk wel om het aantal gebruikte loopjes ook in de tabel op te slaan, dan hoef je niet met die factor anderhalf te werken ;-)
Devil, just come on back if you ever wanna try again, because I told you once you son of a bitch, I'm the best there's ever been!
  woensdag 14 december 2011 @ 10:50:21 #260
58834 Catbert
The evil HR Director.
pi_105568341
Een busy-wait van een seconde lang, nee dat is fijn...
"[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
  woensdag 14 december 2011 @ 20:29:19 #261
292596 Faux.
Fan van zichzelf
pi_105590425
Hoe kan ik met PHP bij een pagina komen die beveiligd is met HTTP 401?
Hier schreef tong80 het volgende:
Faux is een FOK!held, zoals dat vroeger Gellarboy en Brechtje waren. Users die je koestert.
pi_105591894
quote:
7s.gif Op woensdag 14 december 2011 20:29 schreef Faux. het volgende:
Hoe kan ik met PHP bij een pagina komen die beveiligd is met HTTP 401?
Nou dan heb je de juiste variabelen nodig lijkt mij als ik het zo 1-2-3 lees.
Is de pagina van jezelf?
Redacted
  woensdag 14 december 2011 @ 20:58:13 #263
292596 Faux.
Fan van zichzelf
pi_105592087
quote:
0s.gif Op woensdag 14 december 2011 20:54 schreef cablegunmaster het volgende:

[..]

Nou dan heb je de juiste variabelen nodig lijkt mij als ik het zo 1-2-3 lees.
Is de pagina van jezelf?
Nee. Ik probeer nu een cURL-oplossing die ik ergens op internet gevonden heb. Even testen :)
Hier schreef tong80 het volgende:
Faux is een FOK!held, zoals dat vroeger Gellarboy en Brechtje waren. Users die je koestert.
pi_105593499
quote:
7s.gif Op woensdag 14 december 2011 20:58 schreef Faux. het volgende:

[..]

Nee. Ik probeer nu een cURL-oplossing die ik ergens op internet gevonden heb. Even testen :)
En anders kan het ook door een header mee te sturen, zie: http://www.electrictoolbo(...)g-username-password/
  woensdag 14 december 2011 @ 21:28:53 #265
292596 Faux.
Fan van zichzelf
pi_105593566
quote:
0s.gif Op woensdag 14 december 2011 21:27 schreef The_Terminator het volgende:

[..]

En anders kan het ook door een header mee te sturen, zie: http://www.electrictoolbo(...)g-username-password/
Dank je voor je bijdrage, maar de cURL-oplossing werkte :)
Hier schreef tong80 het volgende:
Faux is een FOK!held, zoals dat vroeger Gellarboy en Brechtje waren. Users die je koestert.
pi_105606406
quote:
0s.gif Op woensdag 14 december 2011 01:30 schreef wipes66 het volgende:
Ik zocht een goede manier om wachtwoorden op te slaan. Van vinden jullie van deze methode? Hashen gebaseerd op tijd... md5 doet het 0,3 miljoen keer bij mij :P
[ code verwijderd ]

Waarom gebruik je niet gewoon http://php.net/manual/en/function.crypt.php ? SHA-512 encryptie? In combinatie met afdwingen van lange wachtwoorden die sterk moeten zijn (meer dan acht symbolen lang en moet volgende bezitten: hoofdletters, kleine letters, cijfers en mogelijk symbolen) dan heb je redelijke garantie dat wanneer ze het wachtwoord hebben ze deze de eerste tijd niet zullen kraken.
pi_105607500
quote:
0s.gif Op donderdag 15 december 2011 08:20 schreef Pakspul het volgende:

[..]

Waarom gebruik je niet gewoon http://php.net/manual/en/function.crypt.php ? SHA-512 encryptie? In combinatie met afdwingen van lange wachtwoorden die sterk moeten zijn (meer dan acht symbolen lang en moet volgende bezitten: hoofdletters, kleine letters, cijfers en mogelijk symbolen) dan heb je redelijke garantie dat wanneer ze het wachtwoord hebben ze deze de eerste tijd niet zullen kraken.
En zorg voor een goede, lange salt zodat je ook geen last hebt van rainbow table attacks. Want een wachtwoord als "Secret1234!" voldoet aan je eisen maar staat vast wel in wat rainbow tabellen.
pi_105608642
quote:
0s.gif Op woensdag 14 december 2011 01:30 schreef wipes66 het volgende:
Ik zocht een goede manier om wachtwoorden op te slaan. Van vinden jullie van deze methode? Hashen gebaseerd op tijd... md5 doet het 0,3 miljoen keer bij mij :P
[ code verwijderd ]

Altijd met salts gaan werken.
  FOK!-Schrikkelbaas donderdag 15 december 2011 @ 19:22:52 #269
1972 Swetsenegger
Egocentrische Narcist
pi_105626454
quote:
0s.gif Op dinsdag 13 december 2011 21:37 schreef Pakspul het volgende:

[ code verwijderd ]

Zoiets :? Haalt alle product informatie op en geeft als extratje nog mee het aantal keren dat product is verkocht (voorkomt in order_content)

Je moet zelf evens in de WHERE de AND product.active = ja NOT NULL, weet niet precies hoe je het hebt.
Dit werkt met wat aanpassingen perfect:

1
2
3
4
5
6
SELECT produkten.*, count(order_content.product_id) as productcount
FROM produkten, order_content
WHERE produkten.product_id = order_content.product_id AND produkten.product_menu IS NOT NULL AND produkten.product_menu<>0
GROUP BY produkten.product_id
ORDER BY productcount DESC
LIMIT 0, 10

Maar nu... wil ik eigenlijk alleen de top tien van afgelopen jaar. De oder_date staat in de tabel 'orders' en je begrijpt het al, de order_id gebruik ik in de tabel order_content, waar ik dus voor elke product in die order een record schrijf.

Dit betekent dus dat je voor elke row in de tabel order_content moet controleren of die hoort bij een order in orders met een orderdate in 2011. order_date is een datetime.

Hier kom ik echt ff niet meer uit :{
pi_105627187
Volgens mij werkt het onderstaande gewoon met een datetime field
1
2
WHERE orders between order_date ('2010/01/01', 'yyyy/mm/dd')
AND order_date ('2010/12/31', 'yyyy/mm/dd');

Wat zou betekenen dat je query er als volgt uit komt te zien:

1
2
3
4
5
6
7
8
SELECT produkten.*, count(order_content.product_id) as productcount
FROM produkten, order_content
WHERE produkten.product_id = order_content.product_id AND produkten.product_menu IS NOT NULL  
AND orders between order_date ('2010/01/01', 'yyyy/mm/dd') AND order_date ('2010/12/31', 'yyyy/mm/dd')
AND produkten.product_menu<>0
GROUP BY produkten.product_id
ORDER BY productcount DESC
LIMIT 0, 10
  FOK!-Schrikkelbaas donderdag 15 december 2011 @ 19:54:28 #271
1972 Swetsenegger
Egocentrische Narcist
pi_105627973
Met wat aanpassingen lijkt het te werken, alleen duurt de query 59 seconden :P

Ik ga even verder knutselen. Misschien is het handiger als ik met subqueries ga werken? Dat ik eerst alle ordercontent van 2011 eruit trek en met die resultset de count query doe.
pi_105634847
quote:
0s.gif Op donderdag 15 december 2011 08:20 schreef Pakspul het volgende:

[..]

Waarom gebruik je niet gewoon http://php.net/manual/en/function.crypt.php ? SHA-512 encryptie? In combinatie met afdwingen van lange wachtwoorden die sterk moeten zijn (meer dan acht symbolen lang en moet volgende bezitten: hoofdletters, kleine letters, cijfers en mogelijk symbolen) dan heb je redelijke garantie dat wanneer ze het wachtwoord hebben ze deze de eerste tijd niet zullen kraken.
Ik vind het altijd vervelend als een site mij afdwingt wat ik wel en niet in mijn wachtwoord mag hebben. Met een goede salt (en de eis dat het wachtwoord niet leeg mag zijn) moet je een heel eind kunnen komen. Je kunt de salt (of een deel van de salt) ook afhankelijk maken van het id van de user.
pi_105634924
quote:
14s.gif Op donderdag 15 december 2011 19:54 schreef Swetsenegger het volgende:
Met wat aanpassingen lijkt het te werken, alleen duurt de query 59 seconden :P

Ik ga even verder knutselen. Misschien is het handiger als ik met subqueries ga werken? Dat ik eerst alle ordercontent van 2011 eruit trek en met die resultset de count query doe.
Klinkt alsof je een index moet toevoegen aan de tabel. Met EXPLAIN SELECT kun je zien hoe MySQL de query wil uitvoeren (en dat geeft ook informatie over waarom het zo lang duurt).
  FOK!-Schrikkelbaas donderdag 15 december 2011 @ 22:45:20 #274
1972 Swetsenegger
Egocentrische Narcist
pi_105636855
quote:
0s.gif Op donderdag 15 december 2011 22:08 schreef Light het volgende:

[..]

Klinkt alsof je een index moet toevoegen aan de tabel. Met EXPLAIN SELECT kun je zien hoe MySQL de query wil uitvoeren (en dat geeft ook informatie over waarom het zo lang duurt).
  donderdag 15 december 2011 @ 23:15:47 #275
75592 GlowMouse
l'état, c'est moi
pi_105638434
Schrijf gewoon COUNT(*), zet een index op order_content.product_id en kijk naar ansi style joins
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_105638836
quote:
Ik denk dat er geen index op orders.orderdate staat. Een index daar zal helpen. En verder wat GlowMouse zegt.
  FOK!-Schrikkelbaas vrijdag 16 december 2011 @ 08:34:56 #277
1972 Swetsenegger
Egocentrische Narcist
pi_105646453
quote:
0s.gif Op donderdag 15 december 2011 23:15 schreef GlowMouse het volgende:
Schrijf gewoon COUNT(*), zet een index op order_content.product_id en kijk naar ansi style joins
ANSI ken ik alleen van BBS systemen, glowmouse ;-) Ik ga er mee aan de slag en hou jullie op de hoogte.

order_content.product_id had ik ondertussen een index opgezet maar dat helpt niet echt.
pi_105650281
quote:
0s.gif Op woensdag 14 december 2011 10:13 schreef _Flash_ het volgende:
Ik vind het maar een riskante methode. Kom je niet in de problemen als er bijvoorbeeld meerdere mensen tegelijk willen inloggen, de processorkracht verdeeld wordt over die berekeningen en ze dus allemaal de juiste diepte niet halen? Soort van oplossing is natuurlijk wel om het aantal gebruikte loopjes ook in de tabel op te slaan, dan hoef je niet met die factor anderhalf te werken ;-)
Dat is inderdaad een goede oplossing :P Je zou het ook clientside kunnen doen via javascript. Als je wilt inloggen vul je eerst het email adres in. Dat wordt het aantal loops opgehaald dat bij het email adres hoort en vervolgens wordt de boel (e-mail + ww) x aantal keer gehashed en naar de server verstuurd. via deze manier is een challenge response systeem ook mogelijk :7
..///
  FOK!-Schrikkelbaas vrijdag 16 december 2011 @ 17:47:54 #279
1972 Swetsenegger
Egocentrische Narcist
pi_105663478
quote:
0s.gif Op vrijdag 16 december 2011 08:34 schreef Swetsenegger het volgende:

[..]

ANSI ken ik alleen van BBS systemen, glowmouse ;-) Ik ga er mee aan de slag en hou jullie op de hoogte.

order_content.product_id had ik ondertussen een index opgezet maar dat helpt niet echt.
Ik zit met de aanpassingen nog steeds op een query van 57 seconden. Ik heb alleen de ANSI join nog niet gedaan
pi_105669714
Misschien meer een logica vraag dan php, maar goed:

Ik heb gister met php en mysql een systeem gebouwd om lootjes te trekken. We hebben 5 personen in de database en bij elk lootje dat getrokken wordt, wordt die naam verwijderd.
Uiteraard zorg ik ervoor met code dat niemand zichzelf kan trekken. Echter een probleem weet ik niet zo snel op te lossen.

A trekt B
B trekt A
C trekt D
D trekt C

Persoon E kan dus niemand trekken. Nu kunnen we het net zo lang proberen dat het wel goed gaat, maar vind het mooier om zoiets te voorkomen met code. Iemand een suggestie?
pi_105670803
Ik snap het probleem niet helemaal.
pi_105670857
quote:
0s.gif Op vrijdag 16 december 2011 20:55 schreef Scorpie het volgende:
Ik snap het probleem niet helemaal.
Dat hij een manier zoekt om iedereen aan een andere willekeurige persoon te koppelen.
Je hebt 5 personen, en iedereen is aan iemand gekoppeld, maar niet aan zichzelf.

Hoe doe je dat het beste, proberen totdat je de goede combi hebt, of is daar een soort algoritme voor.

Dat is zijn vraag.
💍 💍 💍 💍 💍 💍 🍌 ☎
pi_105670978
Klopt helemaal
pi_105671318
quote:
0s.gif Op vrijdag 16 december 2011 20:56 schreef Pizzalucht het volgende:

[..]

Dat hij een manier zoekt om iedereen aan een andere willekeurige persoon te koppelen.
Je hebt 5 personen, en iedereen is aan iemand gekoppeld, maar niet aan zichzelf.

Hoe doe je dat het beste, proberen totdat je de goede combi hebt, of is daar een soort algoritme voor.

Dat is zijn vraag.
Oh zo. Maak gewoon een resultset op basis van alle id`s van de gebruikers, minus je eigen, en laat hem daar 1tje van kiezen?
pi_105671823
Ter info. Ik heb iedereen de url gegeven. Iedereen trekt het lootje wanneer diegene wil. De persoon selecteert zijn eigen naam en het systeem bekijkt dan in de database wie er nog in zit, en daaruit kiest hij de naam <> eigen naam. Als er nog maar een naam inzit en die is van diegene zelf, dan gaat het fout.
pi_105672190
A heeft als optie B,C,D,E
B heeft als optie A,C,D,E
C heeft als optie A,B,D,E
D heeft als optie A,B,C,E
E heeft als optie A,B,C,D

Hoe kan hij zichzelf kiezen dan?
pi_105677168
Het gaat mis omdat als E aan de beurt is mogelijk alle opties al vergeven zijn.

Het kan zo verlopen:

A trekt B
B trekt A
C trekt D
D trekt C

E trekt?
  vrijdag 16 december 2011 @ 23:32:38 #288
75592 GlowMouse
l'état, c'est moi
pi_105678552
quote:
0s.gif Op vrijdag 16 december 2011 21:15 schreef das_phantom het volgende:
Ter info. Ik heb iedereen de url gegeven. Iedereen trekt het lootje wanneer diegene wil. De persoon selecteert zijn eigen naam en het systeem bekijkt dan in de database wie er nog in zit, en daaruit kiest hij de naam <> eigen naam. Als er nog maar een naam inzit en die is van diegene zelf, dan gaat het fout.
niet pas trekken als iemand de url aanroept, of bij het een na laatste loodje zorgen dat je niet in een foute situatie komt
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_105678609
Oplossing voor dat lootjes trekken.

Zet de personen in een random volgorde. Bijvoorbeeld:

edacb

En elke persoon krijgt de volgende persoon in de array:

e krijgt d
d krijgt a
a krijgt c
c krijgt b

en bij b is er geen volgende daarom krijgt hij de eerste uit de array: e

zo; en nu weekend
pi_105683052
Goede suggesties. Ik ga er mee aan de slag!
pi_105686848
bij lootjestrekken.nl moet iedereen eerst "deelnemen" (+verlanglijstje invullen kan ook), daarna regelt de site het lootjes trekken en stuurt iedereen een link
is dat niet waar je naar opzoek bent?
pi_105687577
quote:
0s.gif Op vrijdag 16 december 2011 23:33 schreef ErikNijland het volgende:
Oplossing voor dat lootjes trekken.

Zet de personen in een random volgorde. Bijvoorbeeld:

edacb

En elke persoon krijgt de volgende persoon in de array:

e krijgt d
d krijgt a
a krijgt c
c krijgt b

en bij b is er geen volgende daarom krijgt hij de eerste uit de array: e

zo; en nu weekend
Wat nou als randomizen van personen dezelfde lijst oplevert als je lijst waar je aan gaat koppelen? Dan krijgt iedereen zichzelf :P

Ik zou een functie (class liever) maken die bijhoudt welke personen meedoen, random persoon toewijst aan iemand en daarbij rekening houdt dat het niet persoon is waar die aan toe wordt gewezen.
  FOK!-Schrikkelbaas zaterdag 17 december 2011 @ 15:31:10 #293
1972 Swetsenegger
Egocentrische Narcist
pi_105693953
quote:
0s.gif Op vrijdag 16 december 2011 17:47 schreef Swetsenegger het volgende:

[..]

Ik zit met de aanpassingen nog steeds op een query van 57 seconden. Ik heb alleen de ANSI join nog niet gedaan
Iemand nog een idee?
  zaterdag 17 december 2011 @ 15:50:02 #294
218617 YazooW
bel de wouten!
pi_105694464
quote:
0s.gif Op zaterdag 17 december 2011 11:24 schreef Pakspul het volgende:

[..]

Wat nou als randomizen van personen dezelfde lijst oplevert als je lijst waar je aan gaat koppelen? Dan krijgt iedereen zichzelf :P

Ik zou een functie (class liever) maken die bijhoudt welke personen meedoen, random persoon toewijst aan iemand en daarbij rekening houdt dat het niet persoon is waar die aan toe wordt gewezen.
Het is niet zo dat hij 2 lijsten gaat koppelen. Hij heeft 1 lijst met personen a,b,c,d en e.
Die lijst randomized hij, dus abcde wordt bijvoorbeeld bdcae. Vervolgens wordt de eerste letter gekoppeld aan de tweede, de tweede aan de derde, de derde aan de vierde, etc etc. Dus ongeacht of het randomizen iets heeft opgeleverd kan je nooit jezelf loten.
  FOK!-Schrikkelbaas zaterdag 17 december 2011 @ 16:01:02 #295
1972 Swetsenegger
Egocentrische Narcist
pi_105694771
1
2
3
4
5
6
7
SELECT produkten.*, count(*) as productcount
FROM produkten, order_content
JOIN orders on (orders.order_id=order_content.order_id)
WHERE produkten.product_id = order_content.product_id AND produkten.product_menu IS NOT NULL AND produkten.product_menu<>0 AND orders.wishlist=0 AND orders.activated=1 AND orders.orderdate between ('2011-01-01 0:0:0') AND ('2012-01-01 0:0:0')
GROUP BY produkten.product_id
ORDER BY productcount DESC
LIMIT 0, 5

Deze lijkt m'n probleem op te lossen :)
  zaterdag 17 december 2011 @ 19:13:30 #296
75592 GlowMouse
l'état, c'est moi
pi_105700576
twee join stijlen door elkaar, lelijk hoor
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  FOK!-Schrikkelbaas zaterdag 17 december 2011 @ 19:19:25 #297
1972 Swetsenegger
Egocentrische Narcist
pi_105700742
quote:
0s.gif Op zaterdag 17 december 2011 19:13 schreef GlowMouse het volgende:
twee join stijlen door elkaar, lelijk hoor
:D jajaja

1
2
3
4
5
6
7
8
SELECT produkten.*, count(*) as productcount
FROM order_content
JOIN orders on (orders.order_id=order_content.order_id)
JOIN produkten on (produkten.product_id=order_content.product_id)
WHERE produkten.product_id = order_content.product_id AND produkten.product_menu IS NOT NULL AND produkten.product_menu<>0 AND orders.wishlist=0 AND orders.activated=1 AND orders.orderdate between ('2011-01-01 0:0:0') AND ('2012-01-01 0:0:0')
GROUP BY produkten.product_id
ORDER BY productcount DESC
LIMIT 0, 5

Zo dan.
  zaterdag 17 december 2011 @ 19:34:03 #298
75592 GlowMouse
l'état, c'est moi
pi_105701239
Je WHERE is nog te uitgebreid. Deze query zou ook niet sneller draaien dan de eerste.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  FOK!-Schrikkelbaas zaterdag 17 december 2011 @ 19:46:42 #299
1972 Swetsenegger
Egocentrische Narcist
pi_105701732
quote:
0s.gif Op zaterdag 17 december 2011 19:34 schreef GlowMouse het volgende:
Je WHERE is nog te uitgebreid. Deze query zou ook niet sneller draaien dan de eerste.
Deze query draait in 37ms, mijn eerste zonder ANSI join in 57 seconden.

Of bedoel je dat deze tov de vorige niet sneller draait? Dat klopt. Maar hoe kan ik de where clausule korter maken? Dit zijn de voorwaarden.

-edit-

duh

1
2
3
4
5
6
7
8
SELECT produkten.*, count(*) as productcount
FROM order_content
JOIN orders on (orders.order_id=order_content.order_id)
JOIN produkten on (produkten.product_id=order_content.product_id)
WHERE produkten.product_menu IS NOT NULL AND produkten.product_menu<>0 AND orders.wishlist=0 AND orders.activated=1 AND orders.orderdate between ('2011-01-01 0:0:0') AND ('2012-01-01 0:0:0')
GROUP BY produkten.product_id
ORDER BY productcount DESC
LIMIT 0, 5
  zaterdag 17 december 2011 @ 20:20:17 #300
75592 GlowMouse
l'état, c'est moi
pi_105703028
De joinvolgorde zal wel gewijzigd zijn, ANSI vs. theta-style heeft geen invloed.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')