Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Datumbereik

Categorieën

AND

Onderwerpen

AND

Subforum

Topicstarter

Topicstatus

610 topics - Pagina 1 van 25

Totaal van records aangeven met php/mysqli lukt niet

27-01 09:09 vraag 11

Vraag

Ik ben voor mijzelf een projectje begonnen. Het komt er kort op neer dat ik bezig ben met een formulier waar personen gegevens kunnen invullen over een hoeveelheid troepen, van tribalwars, en deze hoeveelheid wordt dan inclusief gebruikersnaam opgeslagen in een database. Het probleem is echter dat ik het totaal aantal troepen van alle gebruikers bij elkaar opgeteld wil zijn en dat gegeven dan outputten in een html tabel. Het is me nu wel gelukt om een totaal van troepen per gebruiker weer te geven, maar het lukt me niet om dat van alle gebruikers in totaal te doen.

Dit is de code die ik nu gebruik:
PHP: test.php
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 $mysqli = new mysqli($servername, $username, $password, $db); if ($mysqli->connect_errno) { printf("Connect failed: %s\n", $mysqli->connect_error); exit(); } $query = "SELECT * FROM Troepen"; if ($result = $mysqli->query($query)) { echo "<table border=1 width=70% bgcolor=white>"; echo "<tr>"; echo "<th> Speler</th>"; echo "<th> Aanvallend</th>"; echo "<th> Verdedigend</th>"; echo "<th> Totaal</th>"; echo "</tr>"; while ($row = $result->fetch_assoc()) { $username = $row["username"]; $aanvallend = $row["bijlvechter"] + $row["cavalerist"] + $row["boogschutter_te_paard"] + $row["ram"] + $row["katapult"]; $verdedigend = $row["speervechter"] + $row["zwaardvechter"] + $row["boogschutter"] + $row["gepantserde_cavalerist"]; $totaal = $aanvallend + $verdedigend; echo "<tr>"; echo "<td> $username</td>"; echo "<td> $aanvallend </td>"; echo "<td> $verdedigend </td>"; echo "<td> $totaal </td>"; echo "</tr>"; ob_flush(); flush(); } echo "</table>"; $result->free(); } $mysqli->close();

[Laravel] Onverwacht reultaat van sortBy()

21-01 19:30 vraag 7

Vraag

Als oefening voor mezelf probeer ik een adres boek te maken met Laravel. Als ik mijn adres lijst wil sorteren krijg ik niet het resultaat dat ik verwacht. ik heb de volgende code in mijn controller:
PHP:
1 2 3 4 5 public function test(){ $adres = Adres::all()->sortBy( 'surname' ); return View::make('adres.test') ->with('adres', $adres); }
en in mijn view dit:
PHP:
1 2 3 4 5 6 7 @section('content') <div class="col-md-10 table-responsive"> @foreach ($adres as $test) {{ $test->surname }}<br> @endforeach </div> @stop
Als resultaat krijg ik een achternamen lijst met eerst alle namen met 1 woord, dan alle namen met 2 woorden, daarna alle namen met 3 woorden. dus zoiets als:Akkermans...Wagenaarde Bekker...van Zeelandvan den Heuvel...van der ZeeMijn verwachting is dat een spatie tussen de letters niet uit maakt voor de manier van sorteren. Als ik met phpMyadmin naar de dataset kijk en sorteer dan krijg ik wel de achternamen gesorteerd zoals ik zou verwachten. Ik heb geprobeerd dit te googelen maar vind niks. (Kan er ook aan liggen dat ik geen goede steek woorden kan verzinnen)
Waarom wordt er op deze manier gesorteerd en voor kom ik het?

Beste antwoord

Je kan ook een flag meegeven om case insensitive te sorteren:
PHP:
1 Adres::all()->sortBy('surname', SORT_STRING | SORT_FLAG_CASE)
Zie http://php.net/manual/en/function.sort.php

Maar in dit geval kan je ook via MySQL sorteren, dat is waarschijnlijk efficienter ook.

[python] Package install

18-01 15:26 vraag 4

Vraag

Beste Tweakers,

Ik heb een python script gemaakt dat werkt op os x.
Nu wil ik deze gebruiken op windows 10 nu moet ik nog enkele package installeren.
Het probleem is wanneer ik het commando pip install ********.
Ook wanneer ik een andere package installeer kom ik altijd op dezelfde fout code terecht.
code:
1 error: command 'C:\\Users\\NAS\\AppData\\Local\\Programs\\Common\\Microsoft\\Visual C++ for Python\\9.0\\VC\\Bin\\cl.exe' failed with exit status 2
Visual C++ heb ik al geïnstalleerd en het bestand bestaat maar kom altijd op dezelfde fout terecht.
Heb al wat info opgezocht op internet maar kom er niet veel verder mee.

Databasekeuze-discussie

15-12-2015 discussie 52
Ik ben met een vriend bezig met een project(je) wat als het goed gaat, flink uit de hand kan lopen(positief gezien). Echter is er een kleine discussie ontstaan betreft database keuze :-)


70,000 regels per user per jaar
elke regel is +/- 15Kb

verwacht word een max van 300,000 users in +/- 5 jaar, voor al deze users is er ook historische data beschikbaar. Dus stel user x is in jaar 1 al actief is dat na 5 jaar dus 70,000 * 5 = 350000 regels voor 1 user met 5 jaar aan historische data.

vanuit deze data worden grafieken gegenereerd die weer als rapport gestuurd worden naar de user.

Nu wil ik het genereren van deze data door PHP laten doen voor al deze users. Dit kan op een aparte server waardoor deze server zich alleen maar bezig hoeft te houden met het genereren van de rapporten. Nu heb ik alleen een discussie met diegene waarmee ik dit wil gaan realiseren.

Hij zegt dit kan je vergeten met MySQL en PHP dat gaat nooit goed en snel werken. Waarop mijn reactie was, er zal vast een combinatie zijn php met ?? waarbij dit normaal mogelijk is.

Wat is jullie gedachten hierover ? Het staat al wel vast dat het een taal of database moet zijn die op een (l)unix server moet kunnen draaien.

[ASP.NET] Virtual objecten + Mysql en identity

03-12-2015 discussie 11
Ik ga binnenkort starten met een nieuw project en heb wel een aantal vraagjes.

Het gaat om een ASP.NET MVC5 Web applicatie. Ik heb hier al wel ervaring mee icm EF6. Nou heb ik in het verleden gebruik gemaakt van Virtual objecten om relaties aan te geven in mijn code (code first migrations). Maar toen gebruikte ik een lokale MSSQL database.. (localdb)\v11.0.. Kan iemand mij vertellen of dit ook mogelijk is met EF6 en een MySQL database? Dit omdat MSSQL niet beschikbaar is op Linux en ik al wel een Linux server heb en aan het afwachten ben op de port van .NET naar Linux (of dit verstandig is, laat ik in het midden, feedback geven mag).

Verder ben ik nog op zoek naar een goede identity/membership provider. Ik heb onlangs gewerkt met MySQL MembershipProvider. Deze werd dan aangemaakt door Visual Studio in een MySQL MVC3 Project, maar ik heb thuis problemen met het aanmaken van dit project dus deze valt af mits handmatig aangemaakt. Ik heb al een optie bekeken, namelijk ASP.NET.Identity. Heeft iemand hier ervaring mee? Zo ja, hoe was die? En hoe staat het met security? Ik ben altijd beetje huiverig voor standaard providers.

Ik wil ook externe logins toelaten op de website, zoals bijvoorbeeld Steam, is dat beetje compatibel met eerder genoemde provider?

Misschien beetje veel vragen voor in 1 topic, maar ik sta open om ze verhelderen.

[SQL] Problemen met snelheid van ophalen

16-10-2015 discussie 5
Hoe zou ik de volgende SQL code korter of effcienter maken? Het werkt snel met een kleine dataset alleen als er veel data (meer dan 1000 in order & 1200 in invoice & 4000 in order_status) in staat is het heel langszaam.

Gaat om het volgende stukje SQL:
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 SELECT o.O_order_ID FROM ( SELECT o.*, max(os.OS_datetime) latestDate FROM `order` o INNER JOIN `order_status` os ON o.O_order_ID = os.O_order_ID GROUP BY o.O_order_ID ) o INNER JOIN `order_status` os ON os.O_order_ID = o.O_order_ID LEFT JOIN invoice i ON o.O_order_ID = i.O_order_ID AND i.I_type = 'invoice' LEFT JOIN invoice c ON o.O_order_ID = c.O_order_ID AND c.I_type = 'credit' WHERE o.O_order_ID <> '' AND os.OS_datetime = o.latestDate AND o.O_payment_status = '1' GROUP BY o.O_order_ID
Nadeel is dat ik die invoice niet kan en mag ombouwen tot een waardig tabel met invoices en credits. En de subquery betreft order_status moet de laatst mogelijke status van de bestelling ophalen.

[MySQL] SELECT query met JOIN en GROUP BY traag

15-10-2015 discussie 19
Ik loop tegen het probleem aan dat een query in MySQL waarbij een JOIN en vervolgens een GROUP BY wordt gedaan erg traag is. De losse JOIN zonder GROUP BY en de GROUP BY zonder JOIN gaan razendsnel. De SELECT query zoals hij hieronder staat doet er iets meer dan 2 seconden over. Zonder de JOIN of zonder de GROUP BY minder dan 0,004 seconden. Waarom is de combinatie dan zo traag? Is het nog mogelijk dit substantieel te versnellen?
SQL:
1 2 3 4 5 SELECT t_bpk.p FROM t_bpk JOIN t_bp ON t_bpk.bp = t_bp.id GROUP BY t_bpk.p ORDER BY NULL;

SQL:
1 2 3 4 5 6 7 CREATE TABLE t_bp (id INT PRIMARY KEY); INSERT INTO t_bp (SELECT n FROM generator_1m WHERE n < 150000); CREATE TABLE t_bpk (p INT, bp INT); CREATE INDEX p ON t_bpk (p); CREATE INDEX bp ON t_bpk (bp); INSERT INTO t_bpk (SELECT n,n FROM generator_1m WHERE n < 150000);
Beide tabellen heb ik gevuld met dummy data met behulp van deze generator: http://use-the-index-luke...07-30/mysql-row-generator

Omgaan met veel data

03-09-2015 discussie 49
Beste mede-Tweakers,

Omdat wij sinds een paar weken zonnepanelen hebben leek het mij leuk om de data in te lezen, dit kan bijvoorbeeld mooi met enelogics.
Toch heb ik daar echter mijn twijfels over omdat iemand anders toch precies kan zien hoeveel ik verbruik etc.

Daarom kwam ik op het idee om zelf iets kleins te ontwikkelen.

Het idee wordt dat ik via een cronjob elke 1-15 minuten de data ophaal via een raspberry pi vanuit mijn slimme meter, om het zo op te slaan in een MySQL database.

Het probleem waar ik een beetje mee zit is dat als je elke 15 minuten data opslaat in een database deze erg snel vol zou raken.

Weten jullie misschien een mooie oplossing voor dit probleem? En weten jullie misschien hoe bedrijven zoals enelogics dit doen?

Bijvoorbeeld:
1 dag = 1440 minuten / 15 minuten = 96 x per dag moet er data worden opgeslagen.

[MySQL] Query met boolean uitzondering

28-08-2015 discussie 23
Ha devvers, daar ben ik weer

Ik heb de volgende databasestructuur, klikbaar:



Het boolean veld exception kan twee waardes bevatten, namelijk 0 en 1 (of groter). Als een record in de tabel agent_contract bij exception de waarde 0 heeft, houdt dat in dat desbetreffende agent het desbetreffende contract niet heeft. Heeft exception de waarde 1, dan houdt dat in dat desbetreffende agent het desbetreffende contract wel heeft. In beide gevallen geldt dit ongeacht of de agent het contract al wel of niet via een team waar 'ie lid van is heeft.

Nu wil ik graag een lijst hebben van de contracten die een agent heeft, dus contracten via team(s) plus en min de exceptions. Nu is me dit wel gelukt met onderstaande query, maar ik heb zo m'n twijfels omdat de volgorde van het afhandelen van de exceptions die er afgaan en erbij worden opgeteld uitmaakt.
SQL:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 SELECT contract_id FROM contract_team INNER JOIN agent_team ON contract_team.team_id=agent_team.team_id WHERE agent_id='Agent1' AND contract_id NOT IN ( SELECT contract_id FROM agent_contract WHERE agent_id='Agent1' AND exception=0 ) UNION SELECT contract_id FROM agent_contract WHERE agent_id='Agent1' AND exception=1
Kan iemand me helpen met het verbeteren van de query en/of uitleggen welke exception ik voorrang moet geven?

[Laravel] MySQL LONGBLOB maximaal 1MB te downloaden

12-08-2015 discussie 17
Beste PRGers.

Sinds een aantal weken ben ik aan het stoeien met Laravel (5.1). Ik ben voor een interne website een project aan het maken waarin collega's data kunnen opslaan (MySQL LONGBLOBS van ongeveer 16MB) en onze build server kan daarna deze data weer gebruiken bij het vullen van de deliverables.

De tabel is als volgt:
Table: blobstore Columns: id int(10) UN AI PK version_id int(10) UN size int(10) UN description text created_at timestamp updated_at timestamp raw_data longblob

Ik kwam er bij het generen van het schema achter dat Laravel / Eloquent van zichzelf geen LONGBLOBs ondersteunt. Daarom moest ik de volgende regel toevoegen bij het aanmaken van de tabel:
[php]DB::statement("ALTER TABLE `blobstore` ADD `raw_data` LONGBLOB");[/php

Nu loop ik echter tegen een probleem aan. Wanneer ik de file download, kreeg ik maar 1MB (de eerste megabyte) van de LONGBLOB binnen.
Ik verdacht eerst de database, maar daarin staat de data wel volledig.


Een korte zoektocht leidde me naar: http://stackoverflow.com/...ownload-easily-in-laravel

Omdat ik geen files had, echo-de ik de content van de raw_data direct naar de outputbuffer:
PHP:
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 /* Versimpeld */ $blob = Blobstore::find($bid); $headers = array( 'Content-Description' => 'File Transfer', 'Content-Type' => 'application/octet-stream', 'Content-Transfer-Encoding' => 'binary', 'Expires' => 0, 'Cache-Control' => 'must-revalidate, post-check=0, pre-check=0', 'Pragma' => 'public', 'Content-Length' => $blob->size, ); $filename = 'foobar.bin'; $response = new Response('', 200, $headers); $response->header('Content-Disposition', 'attachment; filename=' . $filename); // If there's a session we should save it now if (Config::get('session.driver') !== '') { Session::save(); } session_write_close(); ob_end_clean(); $response->sendHeaders(); echo $blob->raw_data; // Finish off, like Laravel would Event::fire('laravel.done', array($response)); $response->foundation->finish(); exit;
Middels bovenstaande code kreeg ik ook maar files van 1MB binnen.

Mogelijk was de echo $blob->raw_data; het probleem, dus verving ik de code door een tempfile:
PHP:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 $temp_file = tempnam(sys_get_temp_dir(), $filename); $fp = fopen($temp_file, "w+"); flock($fp, LOCK_EX); $writen = fwrite($fp, $blob->raw_data); flock($fp, LOCK_UN); fclose($fp); if ($fp = fread($temp_file, 'rb')) { while(!feof($fp) and (connection_status()==0)) { print(fread($fp, 8192)); flush(); } } unlink($temp_file);
Wat schepte mijn verbazing; $writen stond op 1048576. Precies 1MB. Op dat moment begon ik Eloquent te verdenken, dus ik schreef zelf een query:
PHP:
1 2 3 4 $raw_datas = DB::select('select `raw_data` from blobstore where id = ?', [$bid]); $raw_data = $raw_datas[0]; /* ... */ $writen = fwrite($fp, $raw_data->raw_data);
Echter hetzelfde resultaat.

Nu zit ik dus klem, wie kan mij in de juiste richting duwen?

Alvast bedankt

Matis

[PHP/MySQL] Begin/einddatum weeknummer op basis van datum

28-07-2015 discussie 17
Ik ben nu al een tijdje aan het denken hoe ik aan de juiste start- en einddatum van een week kom. Er zijn hiervoor allerlei functies en die werken allemaal prima totdat je rond de jaarwisseling komt.

Zo is 1-1-2015 namelijk volgens het ISO 8601 formaat nog week 52 van 2014, en daar gaan alle functies dan weer mis die ik kan vinden.

Het weeknummer van de week bepaal ik in de SQL query op de volgende manier (Waarin WeekDatum een "DATE" field is met bijvoorbeeld de waarde 2015-01-01)
code:
1 2 3 SELECT *, WEEK(WeekDatum, 3) as WeekNummer FROM marketingtaken ORDER BY WeekDatum DESC

[PHP][MySQL] Load data query escaping

05-06-2015 discussie 3
Hallo,

Ik heb op dit moment een pagina waar je bestanden kunt uploaden, de bedoeling is dat er een csv bestand wordt geüpload en dat hij rechtstreeks de database in gaat. Alleen de escaping krijg ik maar niet voor elkaar.
code:
1 2 3 4 5 "LOAD DATA LOCAL INFILE '".$path."' REPLACE INTO TABLE `tmptable` FIELDS TERMINATED BY ';' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'";
Ik krijg deze melding vanuit MySQL als ik de query wil uitvoeren:
code:
1 "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 5"
Zou iemand me de goede richting in willen wijzen?

Alvast bedankt!

[MySQL] Escape backslash werkt niet

27-05-2015 discussie 24
Ik heb de volgende MySQL Tabel
id (primary key)pad (varchar utf8_general_ci)1TEKST TEKST \ TEKST

Nu probeer ik op basis van het Pad de bijbehorende primary key te vinden, maar dit wil niet lukken. Van de volgende 3 query's werken de eerste 2 wel, maar de laatste niet. De Collatie wijzigen van utf8_general_si naar latin1_swedish_ci werkt ook niet. Het Database type is Inno_DB.
MySQL:
1 2 3 4 SELECT * FROM `table` WHERE `pad` LIKE '% \\\\ %' #werkt SELECT * FROM `table` WHERE `pad` LIKE '%TEKST \\\\ %' #werkt SELECT * FROM `table` WHERE `pad` LIKE '%T TEKST \\\\ %' #werkt niet SELECT * FROM `table` WHERE `pad` LIKE '%T TEKST%' #werkt niet
Ik begrijp niet helemaal waarom ik de backslash moet Escapen met \\\\ ipv \\ en waarom de query mislukt wanneer er een 2e spatie in zit.

Heeft iemand een idee waarom dit mis gaat?

Via PHP en via phpMyAdmin geprobeerd
PHP Version 5.3.29
phpMyAdmin 4.1.9


EDIT:
Het lijkt er op dat juist de spatie mij de spreekwoordelijke das om doet. '%TEKST TEKST%' werkt ook niet.

[mysql] probleem met join over meerdere tabellen

13-05-2015 discussie 6
Hey,

ik heb een db met wat tabellen en wil daar een query op uitvoeren. Eerst een schets:
Tabel1: product
Tabel2: box
Tabel3: location
Tabel4: prod/box
Tabel5: box/location

tabel 4 en 5 zijn dus tabellen die connecties bevatten, gewoon telkens de twee primary keys van de andere tabellen.

Nu zoeken we een product op en daar zouden we graag alle dozen van hebben en hun locaties op basis van de barcode van het product. Aangezien de barcode van het product ook de key is kan ik die tabel uitsluiten denk ik.
Het lukt me alle dozen van een bepaald product te zoeken met deze querry:
SQL:
1 select b.naam as box from box b inner join `prod/box` p on b.id = p.box WHERE p.product LIKE "00000024"
maar om dan door te gaan om in diezelfde query alle locaties ook op te zoeken dat lukt me niet, ik neem aan dat dit met een soort van subquery moet gebeuren maar dit lukt me niet, enige hulp in de juiste richting zou zeer welkom zijn.
Ik zou het theoretisch gezien kunnen doen door gewoon de resultaten van de query uit te lezen en een nieuwe query op te bouwen en lijn per lijn de locatie na te kijken maar dat zou ik liever niet doen om stappen te besparen.

[SQL] Voorwaarde in query

11-05-2015 discussie 6

code:
1 'SELECT T1.begin, T1.eind, T2.tekst, T3.naam FROM gebouw AS T1, commentaar AS T2, heilige AS T3 WHERE T1.heilige = T3.idheilige AND T1.referenties_id = T2.referenties_id AND T1.heilige = :consecid AND T1.gebouw = :gebouwid'
(De variabelen consecid en gebouwid komen via een Ajax call aan en zijn integers)

Het probleem: soms is er geen veld in de tabel commentaar (T2) wat gekoppeld is aan het referenties_id in T1. Er is dan vaak wel weer een referenties_id in T1, maar de voorwaarde "AND T1.referenties_id = T2.referenties_id" geeft dus geen resultaat (oftewel NULL), wat betekend dat de hele query NULL teruggeeft. Hierdoor komt andere data (die dan wel getoond moet worden) ook niet te voorschijn. Dat moet, ook bij het ontbreken van commentaar, wel gebeuren.
Inconsistente database van een klant, niet ideaal

Ik heb in SQL (betreft een MySQL database) al zitten vogelen met de IFNULL() maar krijg daar geen werkende oplossing voor elkaar. De COALESCE() functie krijg ik niet helemaal doorgrond maar lijkt in dit geval ook niet de ideale oplossing.

Iemand tips?

Replicatie Linux web server (database en www folder)

11-05-2015 discussie 6
Beste medetweakers,

Ik ben van plan om een Linux server te repliceren, op dit moment draait er een Ubuntu 15.04 virtuele machine in Hyper-V met een MariaDB database, Apache 2.4 en PHP 5.6 in FPM/fastcgi.

De bedoeling is dat ik een kopie van de virtuele machine maak en deze op een tweede server laat draaien.
Het is dan de bedoeling dat de database gerepliceerd wordt tussen beide virtuele machines en dat de /var/www directory gerepliceerd wordt tussen beide virtuele machines.

De servers zullen een relatief grootte latency hebben (80-120 ms) aangezien een van de servers in Europa zal staan en de andere in Noord Amerika.
Via Amazon Route 53 zal het verkeer gerouteerd worden naar de dichts bijzijnde locatie (indien die niet down is)

De verbinding tussen de servers loopt via internet, en ik wil dit dan ook graag beveiligd hebben om email adressen en NAW gegevens en dergelijke in de database te beschermen.
Ik heb de volgende opties overwogen:openvpn SSH tunnel SSL (TLS)Mijn vraag is welke optie het veiligst, betrouwbaarst en snelst is (hervatten van verbinding, doorvoer snelheid en latency) voor bovenstaande toepassing, gemak in onderhoud is overigens ook prettig Ik kan een SSH tunnel opzetten voor het repliceren van de database server en door middel van een applicatie of script kan de /var/www folder gerepliceerd worden.

Een andere mogelijkheid is om de database replicatie via SSL te beveiligen en de SSH tunnel alleen te gebruiken voor de replicatie van de bestanden en folders in /var/www
Het nadeel hiervan is dat er certificaten aanmoeten worden gemaakt die kunnen verlopen en die geld kosten. Niet het geval als ik gebruik maak van: https://letsencrypt.org/

De laatste mogelijkheid is om een VPN op te zetten, bijvoorbeeld door middel van openvpn.
Maar ook hierbij moeten certificaten worden aangemaakt. Daarnaast heb ik geen ervaring met het gebruik van openvpn als "extra" netwerk zonder dat al het verkeer hier over wordt verstuurd.


2. Wat kan ik het beste gebruiken om de bestanden tussen beide virtuele machines gelijk te houden?

3. Eventueel wil ik later nog extra virtuele machines toe kunnen voegen, indien mogelijk ook Windows Servers.

[MYSQL] Waarde in tabellen staat in HEX

09-05-2015 discussie 2
Ik heb volgens mij ergens iets verkeerd gedaan maar nu zit ik dus met het probleem dat ik zelf de tabel waarden niet meer kan lezen zonder een hex omzetter te gebruiken.

Ik heb jusit geprobeerd om de lokale db die ik gebruik om te devven die over te zetten naar de live test site en hetzelfde resultaat, het blijft in hex.

Dus mijn vraag, welke instelling staat er verkeerd want echt ik weet het niet en google geeft me niet echt wat ik zoek

Dit via phpmyadmin, voorbeeld:

MySQL/PHP: Regel in tabel updaten

05-05-2015 discussie 28
Ik ben mij sinds kort aan het verdiepen in de wereld van MySQL. Nou loop ik al tegen genoeg uitdagingen en hindernissen aan, maar ik kom er nu één tegen waar ik geen raad mee weet en niet vooruitkom met meer dan een weekend aan Google, (vooral) Stackoverflow of verschillende basic tutorials zoals deze.

Als proefomgeving ben ik mijn kilometerregistratie aan het omzetten vanaf een spreadsheet naar een database. Dit is gewoon privé-administratie, en het doel is dus vooral ter lering ende vermaak.
Ik heb de gevraagde waarden uit een database in een tabel zichtbaar middels een eenvoudige query. Eén van de functies welke ik wil toevoegen is het 'verwijderen' (mind the quotes) van een regel middels een button welke in iedere regel terugkomt. Dat gaat redelijk goed, maar het vreemde is dat wanneer ik klik/submit...
PHP:
1 2 3 4 if(isset($_POST['submit'])){ $conn->query("UPDATE auto_kmreg SET actief='0' WHERE kilometers='183145'"); $conn->close(); }
...er redelijk voor zorgt dat de regel met die waarde wordt verwijderd (lees: onzichtbaar is), maar dat...
PHP:
1 2 3 4 if(isset($_POST['submit'])){ $conn->query("UPDATE auto_kmreg SET actief='0' WHERE kilometers='$kilometers'"); $conn->close(); }
...helemaal niets lijkt te doen. Ik zeg daarbij "redelijk" aangezien ik de pagina nog handmatig moet refreshen voor het resultaat, maar dat is een zorg voor later. Ik begrijp echter niet helemaal wat ik nu kan doen om te zorgen dat de betreffende regel wordt verwijderd aan de hand van die variabele $kilometers.

Dit stukje is nu opgenomen boven de head van het document en getuige het feit dat het met een vaste waarde functioneert bij een submit van de button lijkt die plaatsing niet een oorzaak te zijn. In datzelfde document wordt de variabele op andere plekken wel herkend en kan er mee gewerkt/gerekend worden.

Kan iemand me een duwtje in de goede richting geven?

Overigens: ik realiseerde me later dat natuurlijk een tweede auto op exact dezelfde kilometerstand zou kunnen staan bij een tankbeurt, dus ik schakel over op de ID's in plaats van kilometers. Voor nu maakt dat echter geen oplossing voor het probleem.

[SQL] Optimaliseren van query (subquery en IN() )

27-03-2015 discussie 6
Beste allen,

Voor een website, heb ik onderstaande query om een totaal te krijgen van de kolomwaarde 'area', gebaseerd op een specifieke code.

Voorbeeld inhoud tabel 'bc_parameter_difference':

sequence_idobject_idcodeparameter_nameparameter_value123200area10223200area5323201area15125200area10225201area5325200area15

Een scenario om e.e.a. te verduidelijken:

Stel ik wil per 'object_id' een totaal van 'area' voor de code '201':
Er zal dan gezocht moeten worden naar alle objecten waarvan de laatst ingevoerde code (hoogste sequence_id) '201' is. In de voorbeeldtabel hierboven zal dus alleen object_id = 23 geselecteerd moeten worden (immers is 200 de laatste code van object_id 25.
Vervolgens wil ik van object_id = 23 het totaal van de waarde 'Area' hebben.

Na veel proberen, heb ik dit bereikt met de volgende query.
code:
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 SELECT d0.object_id, SUM(d0.parameter_value) AS values_sum, FROM bc_parameter_difference d0 WHERE d0.object_id IN ( SELECT d1.object_id FROM bc_parameter_difference d1 WHERE ( SELECT COUNT(*) FROM bc_parameter_difference d2 WHERE d2.object_id = d1.object_id AND d1.sequence_id <= d2.sequence_id ) <= 1 AND d1.project_id = 1 AND d1.code = 201 ORDER BY d1.object_id ASC, d1.sequence_id ASC ) AND d0.parameter_name = 'area' GROUP BY d0.object_id
Echter, het aantal records kan snel gaan oplopen (tot 100.000+), waardoor ik het idee heb dat de query erg traag gaat worden (met name door het gebruik van een subquery en IN() ).

Hebben jullie tips voor het optimaliseren van de query om de gewenste output snel te kunnen opvragen? Of kan ik de query beter opdelen?

Alvast bedankt voor jullie tips.

MySQL & PHP hulp nodig.

24-03-2015 discussie 3
Beste tweakers,

ik heb een probleem met mijn php en mysql.

<?php

$conn = mysql_connect("localhost", "root", "root", "cijferlijst");
$sql = "SELECT * FROM cijfers";

if ($conn->query($sql)) {
echo "<table><tr><th>ID</th><th>Name</th></tr>";


foreach ($conn->query($sql) as $row) {
echo "<tr><td>". $row['id'] . "</td><td>" . $row['vak'] . "</td><td>" . $row['leerlingnaam'] . "</td></tr>";
}

echo "</table>";

} else {
echo "Error: ". $sql . "<br>" . $conn->error;
}


?>

Mijn database ziet er als volgt uit.
De database =

Als je doorklikt naar 'cijfers' krijg je dit:

Ik krijg de inhoud van de tabel niet zichtbaar.

Kan iemand aub helpen?

SQL optimalisatie

13-03-2015 discussie 16
Ik heb één tabel met de volgende structuur.

waardeA waardeB waardeC waardeD waardeE waardeF waardeG


Hierop zit de volgende query.
SQL:
1 SELECT tbl1.waardeF, tbl1.waardeG, tbl2.waardeI, tbl2.waardeH FROM tabel1 AS tbl1 LEFT JOIN tabel2 AS tbl2 ON tbl1.waardeG = tbl2.waardeH AND tbl2.waardeF = 'het-specifieke-label-nummer' WHERE tbl1.waardeA = 'een-relatie-nr' AND tbl1.waardeB = 'een-volg-nr' AND tbl1.waardeF = 'het-specifieke-label-nummer' AND tbl1.waardeC = 0
De join zelf gaat eigenlijk snel, zoals je in bijgevoegde image gaat zien.



Nja in feite is een index scan ook niet verkeerd, maar alles bij elkaar duurt het gewoon enorm lang. Om wat preciezer te zijn: 00:00:02.2049370 (2.2 seconden dus).

Nu heb ik gewoon een probleem dat er door 'bad-data' door de jaren heen het (nog) niet mogelijk is om een unieke index te maken op basis van meerdere kolommen. Mijn doel was om van waarde a-b-c-f en g een unieke index te maken. Die combinatie zou technisch gezien uniek moeten zijn.

Dus ja, vraag 1: is het logisch om dat te gaan doen (als ik de data uiteindelijk op orde heb?). En zou me dat veel tijd schelen, of is het nog te generiek?

Goed, voor nu dan. Stel dat ik een query uitvoer op basis van -alleen- waardeA (en die returned al bijv. 600 records) dan is dat gewoon instant < 1 seconden. Waarom zou specifiek deze bovenstaande query dan zo 'lang' duren?

Indexen:

Clustered index op waarde A-B-C-F-G.
Non-Clustered index op F met included colomns D en E.

Letterlijk 'alles' wat ik opvraag MITS er maar één in de WHERE clause zit duurt < 1 seconden, bijv. SELECT * FROM table1 WHERE waardeG = foo, maar in zo'n query als bovenstaande duurt het opeens weer lang.. Idem als ik dan nog een 'AND waarde A = bar' erbij zet, dan gaat het opeens niet meer.

Nog een detail, als ik de volledige index eraf flikker dan is het weer wat sneller dan met een index.


Wat zouden jullie doen om het tijdelijk wat sneller te maken, oh en vergeet m'n eerste vraag niet. Antwoorden als 'de fik er in' zijn valide, maar daar heb ik nu even niets aan.

ps. table heeft 23377793 records.

[MySQL] Using where; Using index; Using filesort

27-02-2015 discussie 8
Nou de titel spreekt voor zich denk ik! In een oud project kwam ik een query tegen die in een EXPLAIN een 'Using where; Using filesort' teruggaf. Daar kon ik zelf nog wat aan veranderen om er een 'Using where; Using index; Using filesort' van te maken, maar mooi is het nog steeds niet. Hieronder de query (in essentie).
MySQL:
1 2 3 4 5 6 7 8 9 10 11 12 SELECT topic_id FROM fora_topics WHERE forum_id=49 ORDER BY topic_sticky DESC, topic_closed = 1 ASC, last_post_id DESC
De index die er gebruikt word ziet er zo uit, in deze volgorde:
code:
1 2 3 4 5 forum_id topic_sticky topic_closed topic_post // word gebruikt in een INNER JOIN last_post_id
Wat kan ik doen om deze query nog enigszins te optimaliseren? Maakt volgorde nog uit voor de index of moet misschien topic_post er tussenuit?

Via Google vind ik vooral veel oude blogposts en dergelijke; 2006, 2009 soms 2012. Weinig eenduidig en na wat proberen nog niks wijzer

[MySQL] query selectie meerdere waardes, zelfde objectid

25-02-2015 discussie 8
Ik heb de volgende tabel:

autoidobjectidveldidtypewaardeidwaarde1111521112321124311253115

Daarbij wil ik een query maken waarbij veldid = 1, typewaardeid = 1, waarde = 5 en waarde = 2. de records van objectid 1 en 3 getoond worden. object 2 kent wel 2 maar geen 5. Die moet in dit geval niet meegenomen worden.

De volgende query heb ik bedacht:
SELECT COUNT(`objectid`),`objectid` FROM `values` WHERE ((`veldid` = 1 AND `typewaardeid` = 1) AND `waarde` = 2 OR `waarde` = 700) GROUP BY `objectid` HAVING count = 2

Met deze query krijg ik uit bovenstaande tabel de juiste objectid's, als er echter een record zou zijn waarbij waarde = 2, 2x zou voorkomen (in theorie mogelijk), dan wordt die ook meegenomen. Al met al lijkt me de query zeer omslachtig en werkt die niet ideaal.

Het liefst zou ik een query willen die (ongeveer) als volgt werkt:
SELECT * FROM `values` WHERE ((`veldid` = 1 AND `typewaardeid` = 1) AND `waarde` = 2 AND `waarde` = 700)

Op die wijze kan ik makkelijk aan de query andere combinaties van veldid, typewaardeid en waarde meegeven.

Ik heb de faq bekijken. Volgens mij staat daar niet in wat ik zoek (voor zover ik het begreep).
Daarnaast heb ik gezocht op HAVING wat volgens mij ook geen oplossing kan bieden. Verder heb ik op algemene dingen gezocht zoals mysql where inside group by.

Is er een makkelijke oplossing?

"Best practice" Gebruikers profiel updaten MYSQL, PHP, ...

25-02-2015 discussie 15
- Moet natuurlijk "Best Practice" zijn -

Hi,

Ik zit er al een tijdje mee te struikelen dus vond ik het tijd de vraag even te stellen aan personen die ook veel bezig zijn met ontwikkeling.

Stel je volgende situatie eens voor:

Klant registreert zich op een website geeft al zijn persoonlijke gegevens in (NAAM, VOORNAAM, TEL.NR., EMAIL, WOONPLAATS, LEEFTIJD, ...) Na een tijdje klopt zijn woonplaats niet meer en moet enkel zijn WOONPLAATS aangepast worden, mijn vraag gaat hierover... Hoe doe je dit nu het best?

Voorbeeld code:
PHP:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <?php $userquery = $db->prepare("SELECT * FROM users"); $userquery->execute(); $userrow = $userquery->fetch(PDO::FETCH_ASSOC) ?> <div class="row"> <div class="col-lg-6"> <h5><?php echo htmlspecialchars($userrow['user_name'], ENT_COMPAT, 'UTF-8'); ?></h5> </div> <div class="col-lg-6"> <input type="text" name="<?php echo $userrow['user_name']; ?>" class="form-control" /> </div> </div> <div class="row"> <div class="col-lg-6"> <h5><?php echo htmlspecialchars($userrow['user_city'], ENT_COMPAT, 'UTF-8'); ?></h5> </div> <div class="col-lg-6"> <input type="text" name="<?php echo $userrow['user_city']; ?>" class="form-control" /> </div> </div>
Wat heb ik al gedaan:
1.
Ik heb mijn input veranderd naar dit
PHP:
1 <input type="text" name="<?php echo $userrow['user_city']; ?>" class="form-control" value="<?php echo $userrow['user_city']; ?>"/>
- Namelijk een value aan gekoppeld die hij uit mijn query haalt en als er geen veranderingen gebeuren en ik doe een submit dan controleert hij eerst of de value gelijk is en indien niet zal hij een update uitvoeren. Nadeel = veel code en nogal omslachtig volgens mij.

2.
submit knoppen naast ieder veld geplaatst en dan bovenaan in mijn php code een controle gedaan welke submit ingedrukt geweest is en dan ook nog eens een controle gedaan of de value weldegelijk veranderd is geweest. Nadeel = terug veel code maar iets overzichtelijker.

Mijn vraag van hierboven komt hier nu terug. Hoe lossen jullie dergelijk iets op? Werken jullie hier misschien met jQuery en Ajax? of is er een gouden tussenweg in PHP?

Bedankt om jullie werking te delen!

[MySQL] Transaction: insert, update met foreign key

16-02-2015 discussie 3
Beste mensen,

Ik probeer een transaction uit te voeren waarin eerst een record wordt toegevoegd met een insert. Vervolgens wil ik in dezelfde transaction een update uitvoeren in een ander tabel om de id die toegevoegd is met de insert query, te updaten. Echter is die kolom een foreign key en moet de id dus bestaan.

Nu heb ik het idee dat de transaction de insert nog niet echt heeft uitgevoerd en er dus nog geen relatie gelegd kan worden waardoor de gehele transaction mislukt omdat er een update wordt uitgevoerd met een niet bestaande relatie:
MySQL:
1 2 3 4 5 6 7 START TRANSACTION; INSERT INTO table (id) VALUES(1); UPDATE child_table SET parent_id = 1; COMMIT;
Heeft iemand enig idee wat ik hieraan kan doen?
Resultaten per pagina: 25 | 50 | 100
1 2 3 ... 25


Huawei Nexus 6P Apple iPad Pro WiFi FIFA 16 Samsung Galaxy S7 Fallout 4 Apple iPhone 6C Athom Homey LG G5

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True