login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Woordenlijst in MySQL database opnemen

Offline Acario - 27/07/2010 18:54 (laatste wijziging 27/07/2010 19:05)
Avatar van AcarioNieuw lid Goedendag allen,

Ik heb een woordenlijst (.txt) op mijn pc staan die ik graag online wil zetten.

Het is in principe een compact woordenboek, op iedere regel staat het woord met de bijbehorende vertaling (gescheiden door een tab).

Denk aan:

Citaat:
summertime zomertijd
keyboard toetsenbord
landscape landschap
etc.


Wat ik graag zou willen zien:
- je vult in een form een woord in;
- vervolgens wordt dit woord in de database opgezocht;
- de vertaling die erbij staat wordt weergegeven.

Tot nu toe is voor mij het grootste obstakel: hoe plaats ik op systematische wijze die woordenlijst in de database? Hoe moet ik vervolgens het opgegeven woord opzoeken in de database en de vertaling weergeven?

(ik gebruik MyPhpAdmin)

Zouden jullie me alsjeblieft wegwijs kunnen maken op dit onderwerp?

Ik had al wat gezocht op google maar kwam helaas niet ver vanwege de dubbelzinnigheid van de term 'dictionary' in het Engels, vooral icm. MySQL of php.

13 antwoorden

Gesponsorde links
Offline Martijn - 27/07/2010 19:08 (laatste wijziging 27/07/2010 19:09)
Avatar van Martijn Crew PHP een tabel met de kolommen
id (int auto_increment)
nl (varchar)
en (varchar)

en zet je elk woord in je database, en dan doe je gewoon
  1. SELECT nl FROM woordenlijst WHERE en='englishWord'


Op die manier kun je (mcht je dat ooit gaan doen) er ook zo een nieuwe taal bij zetten door een kolomerbij te zetten bv 'be', zodat dat je hele tabel overnieuw moet
Offline Acario - 27/07/2010 19:40
Avatar van Acario Nieuw lid Dat stukje snap ik eerlijk gezegd ongeveer wel Martijn (heb een piepklein beetje mysql op school gehad), niettemin bedankt voor je reactie. Het gaat mij er meer om hoe ik die lijst met woorden in die database krijg (de lijst bevat zo'n 100 woorden, exclusief de vertalingen). Dus hoe krijg ik bijv. de eerste kolom met woorden onder nl (varchar) en de tweede kolom met vertalingen onder en (varchar) in de MySQL database...

Ik kan eventueel de woordenlijst scheiden, dan krijg je één .txt lijst met woorden en één .txt lijst met vertalingen, momenteel is het allemaal één geheel (met de woorden en de vertalingen gescheiden door een tab).
Offline Martijn - 27/07/2010 19:46
Avatar van Martijn Crew PHP je kunt een query met een insert ook zo maken:
  1. INSERT INTO woordenlijst ('nl','en') VALUES
  2. ('summertime','zomertijd'),
  3. ('keyboard','toetsenbord'),
  4. ('landscape','landschap')
  5. //etc


dus dan moete je met php je query voorbereiden en dan in 1x allemaal doen
Offline xSc - 27/07/2010 20:11
Avatar van xSc Onbekend Je kunt natuurlijk ook door slimme zoeken-vervangen juiste queries maken in je txt bestand en die uitvoeren 
Offline vinTage - 27/07/2010 21:35 (laatste wijziging 27/07/2010 21:37)
Avatar van vinTage Nieuw lid als ALLES werkelijk zo is opgebouwd => ned [tab] eng [newline]
Dan kan je je textfile exploden op newlines en middels een foreach weer exploden op een tab.

  1. <?php
  2. $woordenlijst = file_get_contents('woordenlijst.txt');
  3. $ar = explode("\n", $woordenlijst);
  4. foreach($ar as $line)
  5. {
  6. $ar2 = explode("\t", $line);
  7. echo 'insert into tabel (nl) values ("'.$ar2[0].'")';
  8. echo '---------------------------';
  9. echo 'insert into tabel (eng) values ("'.$ar2[1].'")';
  10. echo '<br />';
  11. }
  12. ?>


edit, wel belangrijk dat zowel de nl als engelse tabel een autoincrement id hebben en beginnen bij 0
Bedankt door: Acario
Offline Martijn - 27/07/2010 21:44
Avatar van Martijn Crew PHP in combo met mijn code voor merdere inserts in 1 query, is dit aardig je oplossing
Bedankt door: Acario
Offline Acario - 27/07/2010 22:15 (laatste wijziging 27/07/2010 22:15)
Avatar van Acario Nieuw lid
vinTage schreef:
als ALLES werkelijk zo is opgebouwd => ned [tab] eng [newline]
Dan kan je je textfile exploden op newlines en middels een foreach weer exploden op een tab.

[..code..]

edit, wel belangrijk dat zowel de nl als engelse tabel een autoincrement id hebben en beginnen bij 0


Die stapel echo's... die voegen die waarden toch niet toe aan de database? Dan zou je in feite dus zoiets krijgen als:

  1. <?php
  2. $woordenlijst = file_get_contents('woordenlijst.txt');
  3. $ar = explode("\n", $woordenlijst);
  4. foreach($ar as $line)
  5. {
  6. $ar2 = explode("\t", $line);
  7. INSERT INTO woordenlijst ('nl','en') VALUES
  8. ('.$ar2[0].','.$ar2[1].')
  9.  
  10. }
  11. ?>


Volgens mij is wel erg simplistisch bedacht van me 
Offline vinTage - 27/07/2010 22:40
Avatar van vinTage Nieuw lid ipv te echoen voer je die inserts echt uit natuurlijk he..!
Ik echoede ze alleen maar omdat ik je tabel/kolomnamen niet weet.
Offline Martijn - 27/07/2010 23:01
Avatar van Martijn Crew PHP ik zou ze niet inserten op vintage zn manier, maar het script een beetje aanpassen. Ipv 2000 queries uit te gaan voeren (wat niet werkt trouwens, want in vintage zn voorbeeld zullen alle oneven nederlands zijn en alle even engels) doe je iets als dit:

  1. $query = "INSERT INTO tabel nl,en) VALUES ";

en dan in de foreach van vintage doe je steeds
  1. $values[]= "('".$ar2[0]."','".$ar2[1]."')";

Dan wil je de values als een tekst, niet als een array:
$values = implode(",",$values);
// en dan issie klaar voor de query:
  1. mysql_query($query.$values) or die(mysql_error());



Je moet hier nog een beetje aan sleutelen voordat het werkt uiteraard, maar hiermee moet t lukken
Bedankt door: Acario
Offline Acario - 28/07/2010 10:10 (laatste wijziging 29/07/2010 02:43)
Avatar van Acario Nieuw lid - edit -
Offline Martijn - 28/07/2010 11:01
Avatar van Martijn Crew PHP $_GET['do_this'];
Offline Acario - 28/07/2010 20:02 (laatste wijziging 29/07/2010 02:42)
Avatar van Acario Nieuw lid Even een vraagje tussendoor, het woordenboek script werkt nu prima, en ik heb zelfs een x aantal woorden in de database gestopt, dat is verder ook allemaal prima gegaan, woorden opzoeken, vertalingen weergeven, alles lukt.

Alleen sommige woorden bevatten de letters &#351; en &#287;, het inserten en weergeven van deze woorden in phpmyadmin gaat prima, echter als ik de daadwerkelijke website open, krijg ik allerlei vraagtekens te zien op de plekken waar deze leters horen voor te komen...

Ik heb de character-encoding zowel in de database alsmede in de head van mijn website op utf-8 gezet, maar dat heeft niet geholpen... Heeft iemand enig idee hoe ik dit kan oplossen?
Offline valles10 - 29/07/2010 09:12
Avatar van valles10 HTML interesse als je een woord echoed dus bv
  1. echo $dbresult['engels_woord'];

zet dan rond de string enkele functions nl. de volgende:
  1. echo htmlentities(htmlspecialchars($dbresult['engels_woord']));

;)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.238s