Eventjes geleden kwam ik hier met vragen voor een groot project. Ondertussen ben ik een half javascript boek verder en ook enkele database ontwerpen. En ben ik tot de conclusie gekomen dat het project iets te hoog gegrepen is. Vandaar een oefenprojectje. Zelfde onderdelen, maar minder.

Boardit
Online prikbord. Geschikt om online notities/foto's en documenten te groeperen.
De projecten kunnen dus meerdere foto's bevatten, maar ook documenten of online notities. Of een logboek.

Even mindmappen kwam ik op het volgende beperkte beeld.


Een typische gebruikservaring kan zijn.
+ Inloggen
+ nieuw Item aanmaken
+ titel, onderwerp, omschrijving, keywords toevoegen
+ subitem toevoegen, bijvoorbeeld een afbeelding.
+ Item plaatsen op het prikbord.
+ Uitloggen

Een typische lezerservaring kan zijn.
+ Naar de pagina toegaan.
+ klikken op een project
+ inhoud bekijken, projectomschrijving/bijgevoegde documenten/foto's/etc
+ verder kijken

Database opzet:
Ik heb al een basis opgezet voor de database. Wat vinden jullie ervan? Ben overigens niet van plan om het in access te maken, maar voor het offline werken vind ik access wel prettig voor ontwerpen.



Mag ik in dit topic alle ontwikkelingen en vragen stellen, of moet ik verschillende topic's aanmaken?
Karl Karl op 04/07/2011 22:33:34

[quote="Joeri de Man op 04/07/2011 22:30:44"]
Pff reageer dan liever niet in dit topic.


Ik heb je alweer een stap vooruit geholpen.
De volgende stap moet je zelf doen.
Net als lopen.
Eerst kruipen.
Dan opstaan.
Dan lopen.
Dan fietsen.
Dan op je bek pleuren en onder een bus en vrachtauto komen en dood gaan.
[/quote]

vaag
Hmm naar mijn mening te veel kleur, gebruik wat modernere kleuren welke bij elkaar passen.
Bedankt, de kleur is er nu om onderdelen te onderscheiden. Niet voor het uiterlijk. Het gaat me alleen nog om de instellingen, en uitlijning. Ik zal je tip onthouden, die kan ik wel gebruiken straks.

Ik zit bijvoorbeeld met het centreren van de titel. Dat lukt me niet.



En de zoekwoorden. Ik heb daar over nagedacht. Maar elk item kan zijn eigen zoekwoorden hebben. En het kan natuurlijk voorkomen dat zoekwoorden meer dan 1 gebruikt worden maar dit hoeft niet. Is het dan niet makkelijk om ze in 1 veld te zetten en te scheiden door een komma of spatie?
Bedoel je met zoekwoorden toevallig trefwoorden, tags?
Je zou ze inderdaad kunnen scheiden met een komma in je database-record.
Als je dan vervolgens gaat zoeken op een bepaalde tag, kan je je query het volgende stukje laten bevatten:
SELECT * FROM Items WHERE Zoekwoorden LIKE "%TAG_HERE%";

Uiteraard die fine-tunen naar eigen wensen.

Succes!
Gerard Nijboer op 05/07/2011 23:38:05

Bedoel je met zoekwoorden toevallig trefwoorden, tags?
Je zou ze inderdaad kunnen scheiden met een komma in je database-record.
Als je dan vervolgens gaat zoeken op een bepaalde tag, kan je je query het volgende stukje laten bevatten:
SELECT * FROM Items WHERE Zoekwoorden LIKE "%TAG_HERE%";

Uiteraard die fine-tunen naar eigen wensen.

Succes!

Ja joh, normaliseren, welke lul dat bedacht heeft is natuurlijk Achterlijk. Waarom zou je ook je db gaan optimaliseren? Nergens voor nodig, dat ding gaat vanzelf wel over zijn nek...
Om toch maar te laten zien dat ik weer wat verder ben. http://boardit.misterdeman.eu/database.php

3 tabellen gemaakt, en items uitgelezen. Subitems houd ik nog even geen rekening mee.

Nu kan ik dus gaan kijken hoe ik naar aanleiding van gegevens in de database items kan aanmaken. En vullen. Nog een tip?
Wees nou eens niet zo eigenwijs en ga leren.
Je hoort maar één waarde per veld op te slaan. Niet meerdere.
Dit is normaliseren: http://nl.wikipedia.org/wiki/Databasenormalisatie
Als je een goed werkende applicatie wilt hebben, dan normaliseer je.
Als je dat allemaal niet hoeft, dus als je wilt dat het niet werkt zoals het moet, rare situaties er mogen komen of andere onzin, dan ga je niet normaliseren.
maak een koppeltabel en noem die "trefwoorden"
maak de volgende velden aan: ItemId en Trefwoord.

en dan kun je hem als volgt vullen
ItemId - Trefwoord
1 - PHP
1 - MySQL
1 - SQL
1 - Database
Oke gezamelijke reactie van Karl en Maikel = super nuttig.

Ik weet wat normaliseren is, ik vroeg ook eventjes terug. Wat is in mijn geval makkelijker ik zag niet in hoe ik trefwoorden moest koppelen/ordenen. Die koppeltabel was ik eventjes vergeten.

Ik ben niet eigenwijs, maar moet het begrijpen voordat ik er iets mee kan doen. Ik spring niet meer zomaar over op een andere trein omdat een ander zegt dat het beter is.

Als ik het goed begrijp komen er dan toch 2 tabellen bij?


Zo dus:


Als een Item 5 trefwoorden heeft dan moet ik dus 5 keer het volgende stappenplan doorgaan.

ControleBestaat het trefwoord al? Zo ja door naar koppeling zo nee door naar invoeren
InvoerenNieuwe invoer (trefwoorden) Trefwoord
koppelingnieuwe invoer (koppeltabel) TrefwoordId,ItemId

[size=xsmall]Toevoeging op 06/07/2011 19:38:18:[/size]

Heb nu bedacht. Ik kan proberen het trefwoord toe te voegen. Dan het TrefwoordId samen met ItemId in de koppeltabel plaatsen. Als trefwoord bestaat zal dat een fout opleveren, maar dat maakt dan niet uit.

Ik denk dat 3 query's
Invoeren Trefwoord

mysql_query("INSERT INTO trefwoorden 
(Trefwoord)VALUES($trefwoord) ");




mysql_query("SELECT TrefwoordId FROM `trefwoorden` WHERE Trefwoord =$trefwoord ")


En dan invoeren in koppeltabel

mysql_query("INSERT INTO itemtrefwoord 
(ItemId,TrefwoordId)VALUES(Itemid,$trefwoordid) ");


Ik ben niet zeker over het gebruik van variabelen. Maar mag duidelijk zijn waar ze moeten komen. Gaat dit zo werken of zijn er betere oplossingen?

Reageren