O oke.quote:Op woensdag 20 november 2013 13:57 schreef wobbel het volgende:
[..]
Het scriptje draait maar 1 keer, het wordt in de database gestopt en daarna zien we de data nooit meer terug
Beunhaasquote:Op woensdag 20 november 2013 13:57 schreef mstx het volgende:
[..]
O oke.Er zat ook een foutje in m'n script.
![]()
1 2 3 4 5 | <?php $arr = explode('.',$ip); $arr = array_map(function($a){return (int) $a;}, $arr); $ip = implode('.',$arr); ?> |
Wat is er mis met array_map('intval', $arr); ?quote:Op woensdag 20 november 2013 14:42 schreef KomtTijd... het volgende:
[ code verwijderd ]
Niet IPv6 proof uiteraard.
Dat moet je gewoon weigeren, dat voldoet niet aan de IPv4 syntax.quote:Op woensdag 20 november 2013 13:45 schreef wobbel het volgende:
Oke, long2ip ( ip2long ( "185.002.241.100") ) werkt niet, maar ik zit nog wel met een probleem.
Ik heb "185.002.241.100" aangeleverd gekregen (wel 1503025325 keer) en ik moet alle voorloopnullen verwijderen, in dit geval moet het dus 185.2.241.100 worden. Is daar een manier voor zonder eerst alles te exploden enzo?
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 | { # Stolen from Regexp::IPv6 (to prevent adding a dependency for BSD machines) my $sub = '([0-9]|[1-9][0-9]|1[0-9][0-9]|2([0-4][0-9]|5[0-5]))'; my $IPv4 = "$sub\\.$sub\\.$sub\\.$sub"; my $G = "[0-9a-fA-F]{1,4}"; my @tail = ( ":", "(:($G)?|$IPv4)", ":($IPv4|$G(:$G)?|)", "(:$IPv4|:$G(:$IPv4|(:$G){0,2})|:)", "((:$G){0,2}(:$IPv4|(:$G){1,2})|:)", "((:$G){0,3}(:$IPv4|(:$G){1,2})|:)", "((:$G){0,4}(:$IPv4|(:$G){1,2})|:)" ); my $IPv6 = $G; $IPv6 = "$G:($IPv6|$_)" for @tail; $IPv6 = qq/:(:$G){0,5}((:$G){1,2}|:$IPv4)|$IPv6/; $IPv6 =~ s/\(/(?:/g; $IPv6 = qr/\A(?:$IPv6|::)\Z/; $IPv4 = qr/\A$IPv4\Z/; use constant CHECK_IP => sub { my $ip = shift; # End with / we are not a valid IP return 0 if ($ip =~ /\/\s*$/); my $mask; ($ip, $mask) = split(/\//, $ip); # If you supply a /32 you supply a single ip, we allow this if (defined $mask && ( $mask !~ /^\d+$/ || $mask != 32)) { return 0 ; } return ($ip =~ m/$IPv4/) ? 1 : 0; }; use constant CHECK_IPV6 => sub { my $range = shift; ($range) = split(/\//, $range); return ($range =~ m/$IPv6/) ? 1 : 0; }; } |
Voetbalquote:Op woensdag 20 november 2013 12:01 schreef Michaelvanb het volgende:
Iemand interesse om een voetbal transfer nieuws website (engelstalig) op te starten?
Ik heb een heel mooi plan liggen, alleen ik heb onderschat hoe moeilijk het is om een team/speler database te maken als je nog nooit met php/mysql hebt gewerkt en alleen wordpress kennis hebt.![]()
50/50 split waarbij ik zorg voor content, seo, 't plan etc en de evt. partner helpt mee met technische gedeelte. theme of psd zijn al redelijk klaar. EMD domeinnaam met 200k exact search
DM voor meer info
Ondanks je edit moet ik toch een beetje huilen van binnen.quote:Op maandag 18 november 2013 15:26 schreef raptorix het volgende:
[..]
Waarom zou het moeilijk zijn? Zo moeilijk is het niet om een simpele join te maken in MongoDb
Edit: ik bedoel dit zul je wel buiten MonngoDB moeten doen met een extra actie.
Overigens niet echt nodig, in no Sql hoef je je niet aan relationele principes te houden, sterker nog het is zelfs erg niet de bedoeling
Omdat?quote:Op donderdag 21 november 2013 02:37 schreef TwenteFC het volgende:
[..]
Ondanks je edit moet ik toch een beetje huilen van binnen.
Als je Wordpress kennis hebt kun je dat daar toch realiseren.quote:Op woensdag 20 november 2013 12:01 schreef Michaelvanb het volgende:
Iemand interesse om een voetbal transfer nieuws website (engelstalig) op te starten?
Ik heb een heel mooi plan liggen, alleen ik heb onderschat hoe moeilijk het is om een team/speler database te maken als je nog nooit met php/mysql hebt gewerkt en alleen wordpress kennis hebt.![]()
50/50 split waarbij ik zorg voor content, seo, 't plan etc en de evt. partner helpt mee met technische gedeelte. theme of psd zijn al redelijk klaar. EMD domeinnaam met 200k exact search
DM voor meer info
Ach, het is slechts 1 keerquote:Op woensdag 20 november 2013 18:26 schreef slacker_nl het volgende:
[..]
Dat moet je gewoon weigeren, dat voldoet niet aan de IPv4 syntax.
'127.000.000.001' is not a valid ipv4 address.# Tests were run but no plan was declared and done_testing() was not seen.
Dit is de Perl-code om IPv4/IPv6 syntax te valideren:
[ code verwijderd ]
Dit, en je kan altijd even "EXPLAIN" uitvoeren om te kijken wat er allemaal gebeurt.quote:Op donderdag 28 november 2013 20:06 schreef KomtTijd... het volgende:
Aangezien WHERE id = 25 al 100% selectief is zal de rest alleen maar ballast zijn en waarschijnlijk genegeerd worden of anders de query vertragen.
run beide queries 10000 keer ofzo en je weet het.
Database is nog niet gevuld (lees: leeg), script is nog niet af. Maar wat je zegt kan wel inderdaad met demo data. Anyways, thanks!quote:Op donderdag 28 november 2013 20:06 schreef KomtTijd... het volgende:
Aangezien WHERE id = 25 al 100% selectief is zal de rest alleen maar ballast zijn en waarschijnlijk genegeerd worden of anders de query vertragen.
run beide queries 10000 keer ofzo en je weet het.
Heb je in de database gekeken of je model überhaupt wordt opgeslagen?quote:Op donderdag 28 november 2013 18:25 schreef TwenteFC het volgende:
Iemand hier die gebruik maakt van Laravel?
Ik wil een child toevoegen aan de parent model en deze opslaan, alleen pakt hij de parentId niet omdat die waarde na het opslaan van de parent verspringt naar 1.
Code:
http://paste.laravel.com/1aMv
Het lijkt je handig met als reden dat het niets toevoegtquote:Op donderdag 28 november 2013 20:31 schreef xaban06 het volgende:
[..]
Database is nog niet gevuld (lees: leeg), script is nog niet af. Maar wat je zegt kan wel inderdaad met demo data. Anyways, thanks!
LIMIT 1 lijkt mij ook handig, niet? id is namelijk uniek.
->push is voor bestaande objecten, heb het ondertussen al opgelost door heel lelijk een AI veld toe te voegen en daar op te koppelen.quote:Op donderdag 28 november 2013 20:31 schreef Crutch het volgende:
[..]
Heb je in de database gekeken of je model überhaupt wordt opgeslagen?
En relationships sla je op met ->push()
Je kan ook even een grote batch insert doen om er mee te testen natuurlijk.quote:Op donderdag 28 november 2013 20:31 schreef xaban06 het volgende:
[..]
Database is nog niet gevuld (lees: leeg), script is nog niet af. Maar wat je zegt kan wel inderdaad met demo data. Anyways, thanks!
LIMIT 1 lijkt mij ook handig, niet? id is namelijk uniek.
"het beste", mijn inziens is het vrij persoonlijk wat voor jou het beste is.quote:Op donderdag 28 november 2013 20:41 schreef RetRy32 het volgende:
Uhm, hey guys wat vinden jullie het beste framework voor PHP?
Ik heb nou al tering veel artikelen gelezen, maar ben nog niet echt wijzer...
Ik dacht dat het wel meerwaarde had, dat het namelijk stopt met verder zoeken wanneer er een match gevonden is. Zonder LIMIT doorzoekt hij alle records dacht ik.quote:Op donderdag 28 november 2013 20:38 schreef KomtTijd... het volgende:
[..]
Het lijkt je handig met als reden dat het niets toevoegt
Niet als je id Unique is, waar ik wel even vanuit ging natuurlijk.quote:Op donderdag 28 november 2013 20:50 schreef xaban06 het volgende:
[..]
Ik dacht dat het wel meerwaarde had, dat het namelijk stopt met verder zoeken wanneer er een match gevonden is. Zonder LIMIT doorzoekt hij alle records dacht ik.
Is het nietquote:Op donderdag 28 november 2013 20:53 schreef KomtTijd... het volgende:
[..]
Niet als je id Unique is, waar ik wel even vanuit ging natuurlijk.
Maar hoe weet je dan dat de eerste het juiste resultaat is? Als het onderscheid gemaakt wordt op category,subcategory dan zou je sowieso de 2e query moeten gebruiken even terug te komen op je eerste vraag.quote:
Ik bedoel, id is altijd uniek, geen duplicates, maar ik heb het niet als unique gedefineerd omdat ik nog niet weet wat unique, primary key, index etc allemaal doen.quote:Op donderdag 28 november 2013 20:56 schreef TwenteFC het volgende:
[..]
Maar hoe weet je dan dat de eerste het juiste resultaat is? Als het onderscheid gemaakt wordt op category,subcategory dan zou je sowieso de 2e query moeten gebruiken even terug te komen op je eerste vraag.
Behalve dat je ze dan weg kan laten in de select, omdat je die waardes al hebt.
Wordt jouw id automatisch opgehoogd wanneer je een nieuwe toevoegt? zoja; dan is het al je PK, en uniek.quote:Op donderdag 28 november 2013 21:00 schreef xaban06 het volgende:
[..]
Ik bedoel, id is altijd uniek, geen duplicates, maar ik heb het niet als unique gedefineerd omdat ik nog niet weet wat unique, primary key, index etc allemaal doen.
Is een auto_increment veld. Wat is PK?quote:Op donderdag 28 november 2013 21:01 schreef TwenteFC het volgende:
[..]
Wordt jouw id automatisch opgehoogd wanneer je een nieuwe toevoegt? zoja; dan is het al je PK, en uniek.
Primary key, en een auto_increment veld is per definitie uniek en onderdeel v/d PK.quote:Op donderdag 28 november 2013 21:02 schreef xaban06 het volgende:
[..]
Is een auto_increment veld. Wat is PK?
Waarom niet gewoon de Price en shipmentCost ( Let even op met dit soort CamelCasing overigens !! ) uit DB trekken en PHP het op laten tellen? dan kun je er ook nog variabele kortingen en dergelijke in mee rekenen als je dit nodig hebt?quote:Op donderdag 28 november 2013 21:25 schreef xaban06 het volgende:
Nog een vraag, ik sla prijzen op als:
199,99
In MySQL doe ik in een SELECT, price+shipmentCost as totalPrice. Dit werkt niet. Het werkt wel wanneer ik de prijzen opsla als:
199.99
Dus een punt in plaats van een komma. Is hier omheen te werken op een nette manier?
Dit inderdaad, dat vind je backend ook stuk toffer! :-)quote:Op donderdag 28 november 2013 21:50 schreef KomtTijd... het volgende:
Al zou het kunnen, dat is toch iets wat je absoluut nooit aan wilt beginnen?
Sowieso, sla gewoon de prijs in centen op als int.
Ja, je waarde altijd opslaan als float of decimal en pas converteren naar #,## wanner je het output naar je template.quote:Op donderdag 28 november 2013 21:25 schreef xaban06 het volgende:
Nog een vraag, ik sla prijzen op als:
199,99
In MySQL doe ik in een SELECT, price+shipmentCost as totalPrice. Dit werkt niet. Het werkt wel wanneer ik de prijzen opsla als:
199.99
Dus een punt in plaats van een komma. Is hier omheen te werken op een nette manier?
quote:Op donderdag 28 november 2013 21:25 schreef xaban06 het volgende:
Nog een vraag, ik sla prijzen op als:
199,99
In MySQL doe ik in een SELECT, price+shipmentCost as totalPrice. Dit werkt niet. Het werkt wel wanneer ik de prijzen opsla als:
199.99
Dus een punt in plaats van een komma. Is hier omheen te werken op een nette manier?
1 2 3 4 5 | $price = 1999.99; $price = number_format($price, 2, ',', '.'); print $price . "\n"; # geeft 1.999,99 |
1 2 3 4 5 6 7 8 | setlocale(LC_ALL, array( 'nl_NL.utf8', 'nl_NL@euro', 'nl_NL.iso885915@euro', 'nl_NL.iso88591', 'nl_NL', 'POSIX', )); |
1 2 3 4 5 6 7 8 9 10 | <?php SELECT * FROM productoffers AS po WHERE po.id IN ( SELECT id FROM productoffers WHERE sellerId =1 ) AND po.sellerId = 2 ?> |
where po.sellerid = 1 and po.sellerid =2?quote:Op donderdag 28 november 2013 22:19 schreef TwenteFC het volgende:
[ code verwijderd ]
Ik wil de productprijzen op halen van producten die zowel bij shop A als bij shop B zijn, waar ga ik de fout in met deze query? Had het ook al met EXISTS geprobeerd maar ik loop even flink te kutten nu
Dan krijg ik alle producten seller 1 en 2, ongeacht of seller 1 en 2 het beide product hebben.quote:Op donderdag 28 november 2013 22:22 schreef slacker_nl het volgende:
[..]
where po.sellerid = 1 and po.sellerid =2?
Thanks, zal daar eens naar kijken. Het is allemaal read, ik doe verder zo goed als geen input/insertquote:Op donderdag 28 november 2013 21:56 schreef slacker_nl het volgende:
[..]
[ code verwijderd ]
Zo kan je het in je weergave aanpassen, ik zou het gewoon goed als float/double opslaan in je DB. En als centen opslaan in je DB.. mja, ik snap die redenatie niet. Alsof floats/doubles zo moeilijk zijn voor een database...
Je kan overigens ook..
[ code verwijderd ]
proberen te gebruiken. Maar dat kan eventueel misgaan bij de input naar de database. Dan moet je binnen je transactie wellicht even de locale terugzetten naar iets Engelsachtig (LC_MONETARY en/of LC_NUMERIC aanpassen helpt al).
hoezo, tis geen or toch? where (po.sellerid = 1 and po.sellerid = 2) and .. zou m.i. moeten werken.quote:Op donderdag 28 november 2013 22:24 schreef TwenteFC het volgende:
[..]
Dan krijg ik alle producten seller 1 en 2, ongeacht of seller 1 en 2 het beide product hebben.
quote:Op donderdag 28 november 2013 22:29 schreef slacker_nl het volgende:
[..]
hoezo, tis geen or toch? where (po.sellerid = 1 and po.sellerid = 2) and .. zou m.i. moeten werken.
Owja, das waar, maar je kan ook joinen met jezelf volgens mij.quote:Op donderdag 28 november 2013 22:32 schreef TwenteFC het volgende:
[..]hoe kan één sellerId 1 en 2 zijn dan?
Maar heb het al opgelost, er was simpelweg geen product dat zowel bij 1 als 2 beschikbaar was
![]()
Het wordt hoogtijd dat ik ga slapen.
1 2 3 4 5 6 7 8 | SELECT * FROM productoffer AS po JOIN productoffer AS po2 on po2.id = po.id AND po.reseller_id = 1 WHERE po2.reseller_id = 2; |
Heb het nu werkend maar je kan inderdaad gewoon een query in de ON gooien.quote:Op donderdag 28 november 2013 22:37 schreef slacker_nl het volgende:
[..]
Owja, das waar, maar je kan ook joinen met jezelf volgens mij.
dan krijg je iets als
[ code verwijderd ]
Al kan die AND in de JOIN ook een WHERE zijn, over die syntax twijfel ik even..
setlocale lijkt geen verandering er in te brengen.quote:Op donderdag 28 november 2013 21:56 schreef slacker_nl het volgende:
[..]
[ code verwijderd ]
Zo kan je het in je weergave aanpassen, ik zou het gewoon goed als float/double opslaan in je DB. En als centen opslaan in je DB.. mja, ik snap die redenatie niet. Alsof floats/doubles zo moeilijk zijn voor een database...
Je kan overigens ook..
[ code verwijderd ]
proberen te gebruiken. Maar dat kan eventueel misgaan bij de input naar de database. Dan moet je binnen je transactie wellicht even de locale terugzetten naar iets Engelsachtig (LC_MONETARY en/of LC_NUMERIC aanpassen helpt al).
NOT MATCH(...)quote:Op vrijdag 29 november 2013 21:15 schreef TwenteFC het volgende:
Ik wil in SQL met MATCH de overeenkomsten van een zoekopdracht vergelijk met een kolom en daar een percentage uit berekenen, dit werkt nu al goed.
Maar hoe kan ik woorden uitsluiten van deze match?
Een database kan prima floats en doubles opslaan, maar de exacte waarde die je opslaat is niet de waarde die je terugkrijgt. Floats en doubles kunnen namelijk niet ieder getal exact weergeven. 1,99 wordt dan misschien 1,9899999999. En dat gaat vroeg of laat afrondingsproblemen geven die ook nog eens best lastig te vinden zijn. Bij financiele informatie is dat niet wenselijk, dus kun je beter met centen rekenen en pas bij weergave afronden.quote:Op donderdag 28 november 2013 21:56 schreef slacker_nl het volgende:
Zo kan je het in je weergave aanpassen, ik zou het gewoon goed als float/double opslaan in je DB. En als centen opslaan in je DB.. mja, ik snap die redenatie niet. Alsof floats/doubles zo moeilijk zijn voor een database...
Jij wilt zeggen dat een postgres of mysql or oracle 1,99 als 1,98999 of als 1,97 teruggeeft? Ik geloof daar geen drol van.quote:Op vrijdag 29 november 2013 22:33 schreef Light het volgende:
[..]
Een database kan prima floats en doubles opslaan, maar de exacte waarde die je opslaat is niet de waarde die je terugkrijgt. Floats en doubles kunnen namelijk niet ieder getal exact weergeven. 1,99 wordt dan misschien 1,9899999999. En dat gaat vroeg of laat afrondingsproblemen geven die ook nog eens best lastig te vinden zijn. Bij financiele informatie is dat niet wenselijk, dus kun je beter met centen rekenen en pas bij weergave afronden.
Light overdrijft een beetje, maar heeft wel een puntje.quote:Op vrijdag 29 november 2013 22:35 schreef slacker_nl het volgende:
[..]
Jij wilt zeggen dat een postgres of mysql or oracle 1,99 als 1,98999 of als 1,97 teruggeeft? Ik geloof daar geen drol van.
Zie bijvoorbeeld ook hier:quote:Op vrijdag 29 november 2013 22:35 schreef slacker_nl het volgende:
[..]
Jij wilt zeggen dat een postgres of mysql or oracle 1,99 als 1,98999 of als 1,97 teruggeeft? Ik geloof daar geen drol van.
Het is gewoon opletten met wat je doet, bijv round(1.4545,2) geeft 1.45 terug.quote:Op vrijdag 29 november 2013 22:35 schreef slacker_nl het volgende:
[..]
Jij wilt zeggen dat een postgres of mysql or oracle 1,99 als 1,98999 of als 1,97 teruggeeft? Ik geloof daar geen drol van.
Het probleem is niet round(), het probleem is die 1.4545 en de nauwkeurigheid daarvan. Als je alleen dat getal hebt, zal het wel goed gaan. Als je spannende berekeningen doet en verschillende getallen gebruikt, kun je een afwijking krijgen.quote:Op vrijdag 29 november 2013 22:43 schreef TwenteFC het volgende:
[..]
Het is gewoon opletten met wat je doet, bijv round(1.4545,2) geeft 1.45 terug.
Vreemd, hier wel. Wat is de return value van setlocale? Zie de docs even, daar staan wat nuttige dingen in..quote:Op vrijdag 29 november 2013 21:48 schreef xaban06 het volgende:
[..]
setlocale lijkt geen verandering er in te brengen.
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 | CREATE TABLE `group` ( `id` TINYINT NULL AUTO_INCREMENT DEFAULT NULL, `name` TINYINT NULL DEFAULT NULL, PRIMARY KEY (`id`) ); CREATE TABLE `location` ( `id` TINYINT NULL AUTO_INCREMENT DEFAULT NULL, `group_id` TINYINT NULL DEFAULT NULL, PRIMARY KEY (`id`) ); CREATE TABLE `room` ( `id` TINYINT NULL AUTO_INCREMENT DEFAULT NULL, `location_id` TINYINT NULL DEFAULT NULL, PRIMARY KEY (`id`) ); CREATE TABLE `opening_hours` ( `id` TINYINT NULL AUTO_INCREMENT DEFAULT NULL, `open_time` TIME NULL DEFAULT NULL, `close_time` TIME NULL DEFAULT NULL, `weekday` TINYINT NULL DEFAULT NULL, PRIMARY KEY (`id`) ); |
Opzich ook een mooie oplossing inderdaad, alleen heb ik hier een ander probleem, namelijk dat de openingstijden per dag verschillend kunnen zijn (het weekday veld in opening_hours) Dat betekent dat ieder eigenlijk 7 "openingstijden" heeft. Om nou aan elke tabel zeven velden toe te voegen lijkt me ook niet erg mooi.quote:Op zondag 1 december 2013 13:41 schreef papernote het volgende:
Derde optie: een opening_hours_id toevoegen aan group, location en room welke ook NULL kan zijn.
Dan kun je beter aan de tabel opening_hours een kolom location_id (of room_id) toevoegen, om aan te geven voor welke locatie die openingstijden gelden. Dan weet je ook zeker dat je voor iedere lokatie de tijden apart kunt aanpassen zonder dat je tijden van andere lokaties verandert.quote:Op zondag 1 december 2013 13:53 schreef Alfje het volgende:
[..]
Opzich ook een mooie oplossing inderdaad, alleen heb ik hier een ander probleem, namelijk dat de openingstijden per dag verschillend kunnen zijn (het weekday veld in opening_hours) Dat betekent dat ieder eigenlijk 7 "openingstijden" heeft. Om nou aan elke tabel zeven velden toe te voegen lijkt me ook niet erg mooi.
Als je het echt wilt normaliseren ontkomt je daar niet aan, anders gaat het botsen met je business rules. Wat je nog wel zou kunnen doen is een table "opening schema's" maken waarin je dus verschillende sets van openingstijden kunt definieren, eventueel zou je dat ook weer naar 2 tables kunnen normaliseren met weer een opsplitsing per dag.quote:Op zondag 1 december 2013 13:53 schreef Alfje het volgende:
[..]
Opzich ook een mooie oplossing inderdaad, alleen heb ik hier een ander probleem, namelijk dat de openingstijden per dag verschillend kunnen zijn (het weekday veld in opening_hours) Dat betekent dat ieder eigenlijk 7 "openingstijden" heeft. Om nou aan elke tabel zeven velden toe te voegen lijkt me ook niet erg mooi.
1 | PHP Fatal error: Cannot use object of type mysqli_result as array in file.php |
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php $productQuery = "SELECT ean, name FROM products WHERE category = '$category'"; $productResult = $mysqli->query($productQuery); while ($productRow = $productResult->fetch_assoc()) { $productPriceQuery = "SELECT ean, price+shipmentCost AS totalPrice FROM prices WHERE ean = $productRow[ean] ORDER BY totalPrice ASC"; $productPriceResult = $mysqli->query($productPriceQuery); $totalPrice = $productPriceResult->fetch_assoc(); echo $productPriceResult["productURL"]; } ?> |
quote:Return Values
Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object. For other successful queries mysqli_query() will return TRUE.
Ik weet dat het efficienter kan dmv een 1 langere query, maar voor nu wil ik het doen zoals ik het heb, moet ook gewoon kunnen toch?quote:Op donderdag 5 december 2013 16:00 schreef zoem het volgende:
Beste oplossing (vziw ik uit de context kan halen): gebruik een JOIN.
Oplossing voor jouw snippet: sla de documentatie erop na
[..]
Natuurlijk, dat gaat ook werken. Alleen kan het aantal queries dan gigantisch oplopen als je een hele reeks aan producten hebt, waardoor de pagina traag wordt en/of de server het (onnodig) druk kan krijgen bij veel bezoekers.quote:Op donderdag 5 december 2013 16:05 schreef xaban06 het volgende:
[..]
Ik weet dat het efficienter kan dmv een 1 langere query, maar voor nu wil ik het doen zoals ik het heb, moet ook gewoon kunnen toch?
Klopt, maar dat is het geval nietquote:Op donderdag 5 december 2013 16:08 schreef zoem het volgende:
[..]
Natuurlijk, dat gaat ook werken. Alleen kan het aantal queries dan gigantisch oplopen als je een hele reeks aan producten hebt, waardoor de pagina traag wordt en/of de server het (onnodig) druk kan krijgen bij veel bezoekers.
En daarbij nog de overhead welke wordt veroorzaakt door het verkeer tussen het script en de MySQL server... Ik zou zelf niet zo snel query's in een loop gaan zetten als dat niet nodig is.quote:Op donderdag 5 december 2013 16:08 schreef zoem het volgende:
[..]
Natuurlijk, dat gaat ook werken. Alleen kan het aantal queries dan gigantisch oplopen als je een hele reeks aan producten hebt, waardoor de pagina traag wordt en/of de server het (onnodig) druk kan krijgen bij veel bezoekers.
quote:Op donderdag 5 december 2013 16:09 schreef xaban06 het volgende:
[..]
Klopt, maar dat is het geval nietEn ik wil het liever nu werkend hebben dan dat ik me weer moet inlezen, proberen, repareren, proberen, etc etc. Kost erg veel tijd voor nu
Wat is er precies fout in mijn script?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php $productQuery = "SELECT ean, name FROM products WHERE category = '$category'"; $productResult = $mysqli->query($productQuery); while ($productRow = $productResult->fetch_assoc()) { $productPriceQuery = "SELECT ean, price+shipmentCost AS totalPrice FROM prices WHERE ean = $productRow[ean] ORDER BY totalPrice ASC"; $productPriceResult = $mysqli->query($productPriceQuery); $totalPrice = $productPriceResult->fetch_assoc(); echo $productPriceResult["productURL"]; // productPriceResult is dus een mysqli object, geen array echo $totalPrice["productURL"]; // totalPrice moet je hebben, want die had je al omgezet naar een assoc array } ?> |
Je kunt je query simpelweg aanpassen naar:quote:Op donderdag 5 december 2013 16:09 schreef xaban06 het volgende:
[..]
Klopt, maar dat is het geval nietEn ik wil het liever nu werkend hebben dan dat ik me weer moet inlezen, proberen, repareren, proberen, etc etc. Kost erg veel tijd voor nu
Wat is er precies fout in mijn script?
1 2 3 4 | $productQuery = "SELECT products.ean, products.name, prices.price+prices.shipmentCost AS totalPrice, products.productURL FROM products JOIN prices ON products.ean = prices.ean WHERE category = '$category'"; |
Hartstikke bedankt voor de query, wordt gewaardeerd, maar mijn query wordt straks nog langer en dan weet ik dat ik er niet meer uit zal komen, vandaar hield ik het simpelquote:Op donderdag 5 december 2013 16:15 schreef bondage het volgende:
[..]
Je kunt je query simpelweg aanpassen naar:
[ code verwijderd ]
De laatste regel in de loop is de verbetering, de voorlaatste regel is foutief.quote:Op donderdag 5 december 2013 16:15 schreef xaban06 het volgende:
[..]
Ik zie geen verschil tussen jouw en mijn code, of wel?
De vraag is of er meerdere prijzen zijn per artikel, want dan moet de code iets aangepast worden. Anders was dit een prima drop-in replacement geweestquote:Op donderdag 5 december 2013 16:15 schreef bondage het volgende:
[..]
Je kunt je query simpelweg aanpassen naar:
[ code verwijderd ]
Per product zijn er meerdere prijzen, ik haal de goedkoopste eruit per product.quote:Op donderdag 5 december 2013 16:17 schreef zoem het volgende:
[..]
De laatste regel in de loop is de verbetering, de voorlaatste regel is foutief.
[..]
De vraag is of er meerdere prijzen zijn per artikel, want dan moet de php code iets aangepast worden.
Deze query zou die data moeten teruggeven. Kan echter niet testen en weet niet zeker of het zo klopt... Misschien dat zoem hier eventueel een aanvulling op kan geven.quote:Op donderdag 5 december 2013 16:18 schreef xaban06 het volgende:
[..]
Per product zijn er meerdere prijzen, ik haal de goedkoopste eruit per product.
1 2 3 4 5 6 7 8 | SELECT * FROM ( SELECT products.ean, products.name, prices.price+prices.shipmentCost AS totalPrice, products.productURL FROM products JOIN prices ON products.ean = prices.ean WHERE category = '$category' ) AS t GROUP BY t.ean HAVING t.totalPrice = MIN(t.totalPrice) |
Dit is inderdaad de juiste manier, en juist op deze manier hou je je queries ook redelijk leesbaar vind ik.quote:Op donderdag 5 december 2013 16:30 schreef bondage het volgende:
[..]
Deze query zou die data moeten teruggeven. Kan echter niet testen en weet niet zeker of het zo klopt... Misschien dat zoem hier eventueel een aanvulling op kan geven.
[ code verwijderd ]
Thanks voor deze reactie.quote:Op donderdag 5 december 2013 16:32 schreef zoem het volgende:
Dat is het bekende groupwise maximum (of minimum) probleem. Via de bekende zoekmachine zijn daar tal voorbeelden en oplossingen over te vinden.
1 2 3 | SELECT products.ean, prices.ean, prices.price FROM products, prices WHERE prices.price=(SELECT MIN(prices.price) FROM prices WHERE products.ean = prices.ean); |
prices.price+prices.shipmentCost AS totalPrice in de select werkt niet? Als het niet werkt zou je je query in een andere query kunnen zetten en dan in de buitenste query de waarden optellen.quote:Op donderdag 5 december 2013 23:51 schreef xaban06 het volgende:
[..]
Thanks voor deze reactie.
Volgens mij moet dit werken:
[ code verwijderd ]
/edit
het lijkt te werken, echter wil ik price+shipmentCost bijelkaar optellen, dan veranderd de WHERE, maar snap m niet helemaal
1 2 3 | # De syntax zal wellicht iets anders zijn, maar gebruik het! $stm = $PDO_object->prepare("SELECT * FROM meuk WHERE iets = ?"); $stm->execute($bla); |
Als je toch PDO gaat gebruiken, gebruikt dan BindParams. Dan je meteen typecasten en andere restricties op je input zetten.quote:Op vrijdag 6 december 2013 10:06 schreef slacker_nl het volgende:
Kennen jullie PDO? Ga het gebruiken!! Die sql die "SELECT * FROM meuk where iets = $bla"; is jakkes. Maak een prepared statement en execute die:
[ code verwijderd ]
Hoe heet je tabel en kolomnamen?quote:Op zondag 8 december 2013 18:28 schreef Onnoman het volgende:
Rij1: |1| |2| |3|
Rij2: |1| |2| |3|
Rij3: |1| |3| |4|
Rij4: |1| |5| |6|
Met bovenstaande tabel wil ik graag het resultaat van de bovenste 2 rijen terug krijgen omdat rij 2 de waarde 2 heeft en rij 3 de waarde 3.
welke query moet ik hiervoor uitvoeren?
alvast bedankt
Wat heb je al geprobeerd?quote:Op zondag 8 december 2013 18:28 schreef Onnoman het volgende:
Rij1: |1| |2| |3|
Rij2: |1| |2| |3|
Rij3: |1| |3| |4|
Rij4: |1| |5| |6|
Met bovenstaande tabel wil ik graag het resultaat van de bovenste 2 rijen terug krijgen omdat rij 2 de waarde 2 heeft en rij 3 de waarde 3.
welke query moet ik hiervoor uitvoeren?
alvast bedankt
Leg eens uit waarom je dit doet. Wat is het echt probleem. Je echte kolomnamen. Dit is namelijk niet erg duidelijk.quote:Op zondag 8 december 2013 18:56 schreef Onnoman het volgende:
ik wil eigenlijk een count doen op het aantal rijen met de zelfde kolom waardes
dus hoeveel rijen uit mijn tabel heeft een overeenkomstige waarde in kolom 2 en 3
ik dacht iets van
Select kolom2, kolom3, count(*) from table
group by kolom2, kolom3
having count(*) > 3;
maar dit gaat niet helemaal goed
is ook niet relevant.. het gaat mij puur om een voorbeeld query volgens mijn omschrijvingquote:Op zondag 8 december 2013 18:59 schreef totalvamp het volgende:
[..]
Leg eens uit waarom je dit doet. Wat is het echt probleem. Je echte kolomnamen. Dit is namelijk niet erg duidelijk.
Misschien is je tabel opzet wel verkeerd en ben je op de verkeerde wijze bezig.quote:Op zondag 8 december 2013 19:00 schreef Onnoman het volgende:
[..]
is ook niet relevant.. het gaat mij puur om een voorbeeld query volgens mijn omschrijving
ik wil namelijk de relatie met andere tabellen achterhalen
nou ik heb een kolom met de naam: straatnaam, huisnummer, en kamernummerquote:Op zondag 8 december 2013 19:02 schreef totalvamp het volgende:
[..]
Misschien is je tabel opzet wel verkeerd en ben je op de verkeerde wijze bezig.
Daarom is het relevant zodat ik een algemeen idee kan krijgen wat je wilt met je query
Geen manier om het te testen maar zoiets zou kunnen werken.quote:Op zondag 8 december 2013 19:10 schreef Onnoman het volgende:
[..]
nou ik heb een kolom met de naam: straatnaam, huisnummer, en kamernummer
ik wil een count doen op alle rijen die dezelfde straatnaam en huisnummer hebben
Dat is mooi!quote:Op zondag 8 december 2013 19:20 schreef Onnoman het volgende:
heb het trouwens al gevonden
mijn eerste query was toch goed
Ook goed!quote:Op vrijdag 6 december 2013 11:00 schreef Boze_Appel het volgende:
[..]
Als je toch PDO gaat gebruiken, gebruikt dan BindParams. Dan je meteen typecasten en andere restricties op je input zetten.
Standaardgedrag van exit() en (die(), want dat is een alias voor exit() ) als de parameter een string is. Als je een integer als parameter geeft, wordt dat de exit code. Maar daar heb je niets aan bij webpagina's.quote:Op zondag 8 december 2013 19:00 schreef Robuustheid het volgende:
[..]
Waarom toont de exit-functie de parameter?
Edit, laat maar.quote:Op zondag 8 december 2013 19:00 schreef Onnoman het volgende:
[..]
is ook niet relevant.. het gaat mij puur om een voorbeeld query volgens mijn omschrijving
ik wil namelijk de relatie met andere tabellen achterhalen
Of stored procedures, zijn ook nog eens makkelijker te testen.quote:
http://www.mysql.com/products/workbench/quote:Op donderdag 12 december 2013 14:35 schreef Onnoman het volgende:
Kent iemand een tooltje waarmee je van een sql of xml bestand een database diagram kan genereren?
Dus met relatie lijntjes enzo?
alvast bedankt!
quote:Op donderdag 12 december 2013 15:31 schreef Aether het volgende:
[..]
http://www.mysql.com/products/workbench/
http://www.fabforce.net/dbdesigner4/
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |