login  Naam:   Wachtwoord: 
Registreer je!
 Forum

woordenboek script (Opgelost)

Offline dreamworld - 19/08/2005 20:19
Avatar van dreamworldHTML beginner Ok, het volgende.
Ik heb dus een soort van woordenboek. Hierin zit een overzicht met alle letters uit het alfabet. Op dit moment bevat elke letter een aparte pagina en in die pagina zit dan weer een mysql query die iets uit de database haalt. Wat ik dus graag zou willen, is dat zodra je op een letter klikt de pagina word aangemaakt en de desbetreffende woorden die bij de letter horen uit de database gehaald worden en worden getoond.
Het zou mooi zijn als hij dan ook met een melding komt als er geen woord(en) met die letter in de database staan/voorkomen.

Ik heb nog niet al te veel ervaring met php en mysql, maar dit lijkt me een mooi moment om het een en ander te leren en/of uit te zoeken. Maar aangezien ik geen idee heb hoe ik zoiets begin heb ik de hulp van jullie nodig. Wie zou me daar bij willen helpen? Of is zoiets niet mogelijk? Lijkt me sterk dat dit niet kan namelijk.. 

20 antwoorden

Gesponsorde links
Offline Stijn - 19/08/2005 20:47
Avatar van Stijn PHP expert --woordenboek.php--
  1. <?php
  2. if(!isset($_GET['letter']))
  3. {
  4. /*hier tik je overzicht in
  5. vb:
  6. <a href="woordenboek.php?letter=a">-A-</a>
  7. enz...
  8. */
  9. }
  10. else
  11. {
  12. /*
  13. TABEL: (voorbeeld)
  14. id (int 11)
  15. letter (varchar 1)
  16. woord(varchar 255)
  17. */
  18. $query = mysql_query("SELECT * FROM woordenboek WHERE letter='".$_GET['letter']."' ORDER BY woord ASC");
  19. //woorden weergeven
  20. while($row = mysql_fetch_assoc($query))
  21. {
  22. echo $row['woord']."<br>";
  23. }
  24. /*
  25. OUTPUT:
  26. ?letter=a
  27. alle rijen selecteren met de letter 'a' van A-Z sorteren
  28. weergeven
  29. ==>
  30. An
  31. Appel
  32. ...
  33. <==
  34. */
  35. }
  36. ?>


hopelijk ben je er iets mee snel voor je geschreven 

mvg stijn
Offline Disa - 19/08/2005 20:48 (laatste wijziging 19/08/2005 20:49)
Avatar van Disa PHP interesse
  1. <?php
  2. $where = '';
  3. if (isset($_GET['letter']) && strtolower($_GET['letter']) != 'all') {
  4. $letter = $_GET['letter'];
  5. $where = "WHERE woord REGEXP '^".$letter.".*'";
  6. }
  7. elseif (isset($_GET['letter']) && strtolower($_GET['letter']) == 'all') {
  8. $where = "";
  9. }
  10. else {
  11. $where = "WHERE woord REGEXP '^[^a-z].*'";
  12. }
  13. $query = mysql_query("SELECT id, woord, uitleg FROM woordenboek $where ORDER BY woord DESC");
  14. if (mysql_numrows($query) > 0) {
  15. while ($sql = mysql_fetch_assoc($query)) {
  16. echo $sql['woord']." - ".$sql['uitleg'];
  17. }
  18. }
  19. else {
  20. echo "Er zijn geen woorden gevonden.";
  21. }
  22. ?>


Hiermee zoekt hij alle woorden die beginnen met de letter die meegegeven is in de woordenboek.php?letter=...

Je kan ook All of niets opgeven.


Het zal zoiets wel zijn zeker dat je zoekt? Je zal de query wel moeten aanpassen naar je eigen database scheme. 

- Disa
Offline dreamworld - 19/08/2005 21:19
Avatar van dreamworld HTML beginner Damn..het is dus makkelijker dan ik dacht...

@stijn: denk dat ik iets fout doe, maar heb wat dingen aangepast zoals in het script staat maar ik krijg simpelweg niets te zien..

@Disa, ik krijg telkens de melding dat er niks gevonden is.. ook hier is alles aan gepast..

En btw, de config word bij beide ge-included..
Offline Stijn - 19/08/2005 21:44
Avatar van Stijn PHP expert
  1. <?php
  2. error_report("E_ALL");
  3. if(!isset($_GET['letter']))
  4. {
  5. /*hier tik je overzicht in
  6. vb:
  7. <a href="woordenboek.php?letter=a">-A-</a>
  8. enz...
  9. */
  10. echo "-<a href=\"woordenboek.php?letter=a\">A</a>-";
  11. }
  12. elseif(isset($_GET['letter']))
  13. {
  14. /*
  15. TABEL: (voorbeeld)
  16. id (int 11)
  17. letter (varchar 1)
  18. woord(varchar 255)
  19. */
  20. $query = mysql_query("SELECT * FROM woordenboek WHERE letter='".addslashes($_GET['letter'])."' ORDER BY woord ASC") or die(mysql_error());
  21. //kijken of er iets is geselecteerd
  22. if(mysql_num_rows($query) == 0)
  23. {
  24. echo "Er zijn nog geen woorden beschikbaar voor <strong>".$_GET['letter']."</strong>";
  25. }
  26. else
  27. {
  28. //woorden weergeven
  29. while($row = mysql_fetch_assoc($query))
  30. {
  31. echo $row['woord']."<br>"; //moet hij weergeven
  32. }
  33. /*
  34. OUTPUT:
  35. ?letter=a
  36. alle rijen selecteren met de letter 'a' van A-Z sorteren
  37. weergeven
  38. ==>
  39. An
  40. Appel
  41. ...
  42. <==
  43. */
  44. }
  45. }
  46. else
  47. {
  48. echo "fout in je script!";
  49. }
  50. ?>


wat zegt hij hier?
Offline dreamworld - 19/08/2005 21:58
Avatar van dreamworld HTML beginner
Citaat:
wat zegt hij hier?


Krijg weer niets te zien...
Offline Rens - 19/08/2005 22:09
Avatar van Rens Gouden medaille

Crew algemeen
Maak je wel verbinding met je MySQL server & database?
Offline dreamworld - 19/08/2005 22:13
Avatar van dreamworld HTML beginner
Citaat:
Maak je wel verbinding met je MySQL server & database?


Jup, staat ook ergens in een post van mij 

En als ik dat niet deed moet ie een melding geven dat ie de database niet kan vinden of iets dergelijks.. toch?
Offline WebVisual - 19/08/2005 22:58
Avatar van WebVisual Lid Waarom aparte tabellen, ik zou gewoon alles in 1 zetten. Weet niet of dit beter is want veel ken ik er niet van.

$letter = $_GET['letter'];
SELECT * FROM woordenboek WHERE letter = $letter ORDER BY woord

dan gewoon ?pagina=woordenboek&letter=A <- die letter dan ook uit de database halen zodat je niet gans het alfabet moet tijpen.
Offline Rens - 19/08/2005 23:05
Avatar van Rens Gouden medaille

Crew algemeen
Beetje onnodig om bij elk woord nog eens apart de beginletter erbij te zetten...

$sQuery = "SELECT * FROM woordenboek WHERE woord LIKE '".addSlashes($_GET['letter'])."%' ORDER BY woord";

'".addSlashes($_GET['letter']."%' zorgt ervoor dat de beginletter $_GET['letter'] is.
Door het % teken haalt hij alle woorden op die beginnen met $_GET['letter'].
Offline Stijn - 19/08/2005 23:10
Avatar van Stijn PHP expert @WebVisual: al eens mijn script gelezen hierboven ;)

@Rensjuh: addslashes($_GET['letter']) klein detail -> grote error

@dreamworld: error_report("E_ALL"); -> staat bovenaan, geeft hij geen error of iets weer 

mvg stijn
Offline dreamworld - 19/08/2005 23:14
Avatar van dreamworld HTML beginner @stijn: ik heb al vanalles geprobeerd, maar ik krijg simpelweg niets te zien, ook geen foutmelding(en)
Of moet ik nog iets toevoegen aan het script? nee toch?
Offline Stijn - 19/08/2005 23:51 (laatste wijziging 20/08/2005 00:14)
Avatar van Stijn PHP expert http://dhost.info/webcreator/woordenboek.php -> hier zie je mijn script werkend

Nota: error_report("E_ALL"); mag weg of vervang het door error_reporting("E_ALL");

--tabel--
  1. CREATE TABLE `woordenboek` (
  2. `id` int(11) NOT NULL auto_increment,
  3. `letter` char(1) NOT NULL default '',
  4. `woord` varchar(255) NOT NULL default '',
  5. PRIMARY KEY (`id`)
  6. ) TYPE=MyISAM AUTO_INCREMENT=4 ;
  7.  
  8. --
  9. -- Gegevens worden uitgevoerd voor tabel `woordenboek`
  10. --
  11.  
  12. INSERT INTO `woordenboek` VALUES (1, 'a', 'aap');
  13. INSERT INTO `woordenboek` VALUES (2, 'a', 'appel');
  14. INSERT INTO `woordenboek` VALUES (3, 'b', 'banaan');


ik snap het niet waarom jij niets ziet 
Het zal aan je config liggen ofzo, maar dit werkt want werkt op mijn server 

mvg stijn

PS: je kan de letter eens veranderen in de URL bv: b of c 

Graag gedaan hoor veel succes met je andere scripts 
Offline dreamworld - 19/08/2005 23:57 (laatste wijziging 20/08/2005 00:40)
Avatar van dreamworld HTML beginner lol, na de vervanging van de error_reporting("E_ALL"); werkt ie! 

thx voor de hulp, nu kan ik ff verder prutsen... 

EDIT:

@stijn: nu zou ik graag willen dat het overzicht (met a b c d e etc..) constant in beeld blijft en dat je zodra je een letter aanklikt dat dat onder het overzicht word getoond..
Offline Rens - 20/08/2005 00:59 (laatste wijziging 20/08/2005 01:05)
Avatar van Rens Gouden medaille

Crew algemeen
  1. <?php
  2. /*hier tik je overzicht in
  3. vb:
  4. <a href="woordenboek.php?letter=a">-A-</a>
  5. enz...
  6. */
  7. if(IsSet($_GET['letter']))
  8. {
  9. /*
  10. TABEL: (voorbeeld)
  11. id (int 11)
  12. letter (varchar 1)
  13. woord(varchar 255)
  14. */
  15. $query = mysql_query("SELECT * FROM woordenboek WHERE letter='".$_GET['letter']."' ORDER BY woord ASC");
  16. //woorden weergeven
  17. while($row = mysql_fetch_assoc($query))
  18. {
  19. echo $row['woord']."<br>";
  20. }
  21. /*
  22. OUTPUT:
  23. ?letter=a
  24. alle rijen selecteren met de letter 'a' van A-Z sorteren
  25. weergeven
  26. ==>
  27. An
  28. Appel
  29. ...
  30. <==
  31. */
  32. }
  33. ?>


Letters weergeven, dan checken of er een letter is geset.
Zojah, letter ophalen en SQL query uitvoeren.

edit; @FangorN: Pagina 1, één na laatste reactie:)
Offline Thomas - 20/08/2005 01:03
Avatar van Thomas Moderator Je hebt geen kolom "letter" nodig in je database - daarvoor kun je het "LIKE"-statement gebruiken als je een woord opvraagt ...
Offline dreamworld - 20/08/2005 01:17
Avatar van dreamworld HTML beginner
Citaat:
Je hebt geen kolom "letter" nodig in je database - daarvoor kun je het "LIKE"-statement gebruiken als je een woord opvraagt ...


Dat heb ik in het huidige script (niet deze) ook zo gedaan..

Maar hoe ik dat toe pas in dit script.. geen idee..
Offline lasdesigner - 20/08/2005 10:57
Avatar van lasdesigner PHP beginner kan je niet zoiets doen:
if(action == $_GET['a'])
{
echo 'a';
}
elseif(action == $_GET['b'])
{
echo 'b';
}
etc
Offline cracker - 20/08/2005 11:00 (laatste wijziging 20/08/2005 11:06)
Avatar van cracker Onbekend
Citaat:
kan je niet zoiets doen:
if(action == $_GET['a'])
{
echo 'a';
}
elseif(action == $_GET['b'])
{
echo 'b';
}
etc

dat is dus volledig fout.
action moet een variabele zijn op die plaats en daarna zeg je ?a= en ?b= 

@lasdesigner:
Zo vraag je een waarde uit de URL op:
URL: pagina.php?var=beschrijving
  1. if($_GET['var'] == "beschrijving"){
  2. //doe iets
  3. }else{
  4. //doe iets anders dan
  5. }
Offline Rens - 20/08/2005 11:06
Avatar van Rens Gouden medaille

Crew algemeen
Hmm, moet niet zo moeilijk zijn om die LIKE in dat script te zetten, maar goed...

  1. <?php
  2. /*hier tik je overzicht in
  3. vb:
  4. <a href="woordenboek.php?letter=a">-A-</a>
  5. enz...
  6. */
  7. if(IsSet($_GET['letter']))
  8. {
  9. /*
  10. TABEL: (voorbeeld)
  11. id (int 11)
  12. letter (varchar 1)
  13. woord(varchar 255)
  14. */
  15. $query = mysql_query("SELECT * FROM woordenboek WHERE woord LIKE '".$_GET['letter']."%' ORDER BY woord ASC") or die(MySQL_Error());
  16. //woorden weergeven
  17. while($row = mysql_fetch_assoc($query))
  18. {
  19. echo $row['woord']."<br>";
  20. }
  21. /*
  22. OUTPUT:
  23. ?letter=a
  24. alle rijen selecteren met de letter 'a' van A-Z sorteren
  25. weergeven
  26. ==>
  27. An
  28. Appel
  29. ...
  30. <==
  31. */
  32. }
  33. ?>
Offline dreamworld - 20/08/2005 15:55
Avatar van dreamworld HTML beginner
Citaat:
Hmm, moet niet zo moeilijk zijn om die LIKE in dat script te zetten, maar goed...


Achteraf gezien heel simpel ja..

Maar ik krijg het alleen niet voor elkaar dat het overzicht (met a b c d als link) blijft staan en dat hij de rest eronder opent..
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.244s