Ik ben bezig met een website en gebruik daarvoor PHP en MySQL. 
De MySQL-database wordt gebruikt om daarin de content van de website op te slaan. In de database heb ik 2 tabellen staan namelijk CONTENT en TYPE_URL.
De tabellen zien er als volgt uit:
en:
Beide tabellen hebben een kolom 'TYPE' en dat is tevens de relatie tussen de beide tabellen. In de kolom type vermeld ik wat voor een record het is, bijvoorbeeld Nieuws, Product of Service. Gaat het bijvoorbeeld om een Product, dan moet de 'URL' zijn: 'product.php'.
Er zou dus gezegd kunnen worden dat er een foreign key bestaat tussen de twee tabellen. Deze is niet gelegd, omdat ik niet gebruik maak van MySQL 4.0 of innoDB, ik gebruik de normale versie ( 3.23.49 ).
Voor de zoekmachine op de website gebruik ik de volgende query:
De query geeft de juiste records weer, echter bij sommige records geeft MySQL een verkeerde 'TYPE' en 'URL' weer. Het gaat
Ik weet niet of het aan mijn query, db-ontwerp of MySQL ligt, maar ik krijg verkeerde resultaten wanneer het trefwoord ook in de titel staat.
Een situatie die bij mij voorkomt is, wanneer ik de naam(titel) invoer van een product, bijvoorbeeld 'Samsung 900 IFT', MySQL een verkeerde 'URL' teruggeeft. In plaats van 'product.php' terug te geven als 'URL' geeft het 'index.php' als waarde terug.
Zelf ben ik van mening dat het een fout van MySQL is( en dat het gebruik van een Foreign Key niet nodig hoeft te zijn).
Ik hoop dat jullie dit lange gebrabbel nog kunnen begrijpen en mij uit de brand kunnen helpen.
De MySQL-database wordt gebruikt om daarin de content van de website op te slaan. In de database heb ik 2 tabellen staan namelijk CONTENT en TYPE_URL.
De tabellen zien er als volgt uit:
code:
1
2
3
4
5
6
7
8
| CREATE TABLE content ( id int(5) NOT NULL auto_increment, titel varchar(120) NOT NULL default '', tekst longtext NOT NULL, datum date NOT NULL default '0000-00-00', type varchar(50) NOT NULL default '', PRIMARY KEY (id) ) |
en:
code:
1
2
3
4
5
| CREATE TABLE type_url ( type varchar(50) NOT NULL default '', url varchar(50) NOT NULL default '', PRIMARY KEY (type) ) |
Beide tabellen hebben een kolom 'TYPE' en dat is tevens de relatie tussen de beide tabellen. In de kolom type vermeld ik wat voor een record het is, bijvoorbeeld Nieuws, Product of Service. Gaat het bijvoorbeeld om een Product, dan moet de 'URL' zijn: 'product.php'.
Er zou dus gezegd kunnen worden dat er een foreign key bestaat tussen de twee tabellen. Deze is niet gelegd, omdat ik niet gebruik maak van MySQL 4.0 of innoDB, ik gebruik de normale versie ( 3.23.49 ).
Voor de zoekmachine op de website gebruik ik de volgende query:
code:
1
2
3
4
5
6
| SELECT c.id, c.titel, c.tekst, t.type, t.url FROM content c, type_url t WHERE c.type = t.type AND c.tekst LIKE '%$trefwoord%' OR c.titel LIKE '%$trefwoord%' GROUP BY c.titel |
De query geeft de juiste records weer, echter bij sommige records geeft MySQL een verkeerde 'TYPE' en 'URL' weer. Het gaat
Ik weet niet of het aan mijn query, db-ontwerp of MySQL ligt, maar ik krijg verkeerde resultaten wanneer het trefwoord ook in de titel staat.
Een situatie die bij mij voorkomt is, wanneer ik de naam(titel) invoer van een product, bijvoorbeeld 'Samsung 900 IFT', MySQL een verkeerde 'URL' teruggeeft. In plaats van 'product.php' terug te geven als 'URL' geeft het 'index.php' als waarde terug.
Zelf ben ik van mening dat het een fout van MySQL is( en dat het gebruik van een Foreign Key niet nodig hoeft te zijn).
Ik hoop dat jullie dit lange gebrabbel nog kunnen begrijpen en mij uit de brand kunnen helpen.
-