Woordenboek PHP

  • Onderwerp starter Onderwerp starter otie
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

otie

Gebruiker
Lid geworden
1 dec 2008
Berichten
313
hallo, helpmijers
ik heb een vraagje over een woordenboek in PHP

ik heb wat gegoogeld en ik vond dit:
PHP:
<?php
$aWoorden = array(
  "Nederlands woord" => "Dialect woord",
  "etc." => "etc.",
);
?>

ik ben niet echt goed met php ( ik kan alleen de basis een beetje :()
HTML kan ik beter. maar ook niet echt goed :(

is er een manier dat je gewoon een woord intypt,
en dat je dan een geprogrammeerd woord krijgt en als het er niet is dat je dan krijgt:

Not find in our database :(

alvast bedankt.
als het maandagavond klaar zou zijn, dat zou heeel mooi zijn!
 
Jawel, dat kan:

PHP:
<?php

    $woordenboek = array(
      "auto" => "car",
      "boek" => "book",
      "chocolade" => "chocolate",
      "dier" => "animal"
    );

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<title>
		Woordenboek
	</title>
</head>
<body>
<?php

  if ( $_SERVER[ 'REQUEST_METHOD' ] == 'POST' ) {
    
    if ( array_key_exists ( $_POST[ 'q' ], $woordenboek ) {

      $result = $woordenboek[ $_POST[ 'q' ] ];

    } else {

      $result = 'Geen vertaling gevonden';

    }

    echo 'U zocht naar: ', $_POST[ 'q' ];
    echo '<br />';
    echo 'Vertaling: ', $result;
    echo '<br />';

  }

?>
	<form name="vertaling" method="POST" action="">
		<input type="text" name="q" />
		<input type="submit" name="submit" value="Vertaal" />         
	</form>
</body>
</html>

Gezien het feit dat je zegt dat je nog niet zo goed bent met PHP, ga ik er niet vanuit dat je alles meteen snapt, dus stel gerust (gerichte) vragen.

Dit script is nog makkelijk uit te breiden om ook zoek opdrachten de andere kant op te doen.
 
Laatst bewerkt:
Jawel, dat kan:

PHP:
<?php

    $woordenboek = array(
      "auto" => "car",
      "boek" => "book",
      "chocolade" => "chocolate",
      "dier" => "animal"
    );

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<title>
		Woordenboek
	</title>
</head>
<body>
<?php

  if ( $_SERVER[ 'REQUEST_METHOD' ] == 'POST' ) {
    
    if ( array_key_exists ( $_POST[ 'q' ], $woordenboek ) {

      $result = $woordenboek[ $_POST[ 'q' ] ];

    } else {

      $result = 'Geen vertaling gevonden';

    }

    echo 'U zocht naar: ', $_POST[ 'q' ];
    echo '<br />';
    echo 'Vertaling: ', $result;
    echo '<br />';

  }

?>
	<form name="vertaling" method="POST" action="">
		<input type="text" name="q" />
		<input type="submit" name="submit" value="Vertaal" />         
	</form>
</body>
</html>

Gezien het feit dat je zegt dat je nog niet zo goed bent met PHP, ga ik er niet vanuit dat je alles meteen snapt, dus stel gerust (gerichte) vragen.

Dit script is nog makkelijk uit te breiden om ook zoek opdrachten de andere kant op te doen.

ik was niet zo zeer van plan er een vertaal machine van te maken... maar dat pas ik wel aan, als het niet werkt vraag ik het wel, alvast bedank!!!

EDIT:
er is een foutmelding:

Parse error: syntax error, unexpected '{' in /home/a9355777/public_html/woordenboek.php on line 23
dit dus:
PHP:
    if ( array_key_exists ( $_POST[ 'q' ], $woordenboek ) {

woordenboek error :(
 
Laatst bewerkt:
PHP:
<?php
 
    $woordenboek = array(
      "auto" => "car",
      "boek" => "book",
      "chocolade" => "chocolate",
      "dier" => "animal"
    );
 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>
        Woordenboek
    </title>
</head>
<body>
<?php
 
  if ( $_SERVER[ 'REQUEST_METHOD' ] == 'POST' ) {
    
    if ( array_key_exists ( $_POST[ 'q' ], $woordenboek ) ) {
 
      $result = $woordenboek[ $_POST[ 'q' ] ];
 
    } else {
 
      $result = 'Geen vertaling gevonden';
 
    }
 
    echo 'U zocht naar: ', $_POST[ 'q' ];
    echo '<br />';
    echo 'Vertaling: ', $result;
    echo '<br />';
 
  }
 
?>
    <form name="vertaling" method="POST" action="">
        <input type="text" name="q" />
        <input type="submit" name="submit" value="Vertaal" />         
    </form>
</body>
</html>

Ik was een haakje vergeten ;)

Als je het anders wilt, moet je het maar even laten weten dan kunnen we het aanpassen!
 
heel erg bedankt!
ik ga nu mijn woorden inprogrammeren!
 
eigenlijk zou het wel mooi zijn als iedereen iets kon toevoegen...
maar daar heb je vast SQL voor nodig he, nja dat heb ik wel... maar ik weet niet hoe dat moet
 
Nou je hebt er niet per sé SQL voor nodig.

Het kan ook met een tekstbestandje:

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>
        Woordenboek
    </title>
</head>
<body>
<?php
  if ( $_SERVER[ 'REQUEST_METHOD' ] == 'POST' ) {
 
    $fh = fopen ( 'woordenlijst.txt', 'a' );
    
    if ( fwrite ( $fh, "\r\n" . $_POST[ 'origineel' ] . ":" . $_POST[ 'nieuw' ] ) ) {
      echo 'Toegevoegd: ', $_POST[ 'origineel' ], '=>', $_POST[ 'nieuw' ], '<br />';
    } else {
      echo 'Kan niet toevoegen';
    }
 
    fclose( $fh );
 
  }
?>
    <form name="toevoegen" method="POST" action="">
        <input type="text" name="origineel" />
        <input type="text" name="nieuw" />
        <input type="submit" name="submit" value="Toevoegen" />         
    </form>
</body>
</html>

Dan moet je wel de pagina waar je de woorden kunt opzoeken een beetje aanpassen:

PHP:
<?php
 
    $woordenboek = array(
      "auto" => "car",
      "boek" => "book",
      "chocolade" => "chocolate",
      "dier" => "animal"
    );
 
?>

Moet je dan vervangen door:

PHP:
<?php
 
  $woordenboek = array();
 
  if ( file_exists ( 'woordenlijst.txt' ) ) {
 
    $fh = fopen ( 'woordenlijst.txt', 'r' );
 
    $filecontents = file ( 'woordenlijst.txt' );
 
    fclose ( $fh );
 
    foreach ( $filecontents as $line ) {
 
      $words = explode ( ':', $line );
      $woordenboek[ $words[ 0 ] ] = $words[ 1 ];
 
    }
 
  } 
 
?>

Ik heb het niet getest, maar ik ga ervan uit dat het werkt. Je moet wel even een tekstbestandje aanmaken, genaamd 'woordenlijst.txt' in de map waar je pagina's ook staan.

Je woorden komen nu zo in je file:

Code:
auto:car
boek:book
chocolade:chocolate
dier:animal

Op die manier kun je dus ook gewoon in kladblok de woorden toevoegen.


EDIT: Toch maar even getest en er zaten nog wel een aantal fouten in. Ik heb bovenstaande code inmiddels verbeterd.
 
Laatst bewerkt:
wat ik eigenlijk bedoelde is dat ik gewoon een textarea krijgt waar je wat kan typen en dan ook een beschrijving en dan een verstuur-button
 
Dat kan nu toch? Je hebt twee velden. In het eerste typ je iets, in het tweede typ je de beschrijving en je drukt op Toevoegen...

Of snap ik het nou niet? Misschien dat je het dan nog iets duidelijker kunt uitleggen?
 
Dat kan nu toch? Je hebt twee velden. In het eerste typ je iets, in het tweede typ je de beschrijving en je drukt op Toevoegen...

Of snap ik het nou niet? Misschien dat je het dan nog iets duidelijker kunt uitleggen?

ja ik heb het getest maar nu kan ik weer niet zoeken...
of moet ik 2 files maken? 1 met die html code en 1 die ik al had maar dan aangepast?
 
Ja, het zijn nu twee aparte bestanden. Eén voor het zoeken en één voor het toevoegen.
 
gemaakt...
nu zijn mijn 2 scripts zo:

woordenboek.php
PHP:
<?php
 
  $woordenboek = array();
 
  if ( file_exists ( 'woordenlijst.txt' ) ) {
 
    $fh = fopen ( 'woordenlijst.txt', 'r' );
 
    $filecontents = file ( 'woordenlijst.txt' );
 
    fclose ( $fh );
 
    foreach ( $filecontents as $line ) {
 
      $words = explode ( ':', $line );
      $woordenboek[ $words[ 0 ] ] = $words[ 1 ];
 
    }
 
  } 
 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>
        gaming dictionary
    </title>
</head>
<body><center>
<A HREF="/woordenboekadd.php">woorden toevoegen</A>

    <form name="vertaling" method="POST" action="">
        <input type="text" name="q" />
        <input type="submit" name="submit" value="Search" />         
    </form>
</center></body>
</html>

<?php
 
  if ( $_SERVER[ 'REQUEST_METHOD' ] == 'POST' ) {
    
    if ( array_key_exists ( $_POST[ 'q' ], $woordenboek ) ) {
 
      $result = $woordenboek[ $_POST[ 'q' ] ];
 
    } else {
 
      $result = 'not found in our database!';
 
    }
 
    echo 'You searched for: ', $_POST[ 'q' ];
    echo '<br />';
    echo 'result: ', $result;
    echo '<br />';
 
  }
 
?>

woordenboekadd.php
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>
        Woordenboek
    </title>
</head>
<body>
<?php
  if ( $_SERVER[ 'REQUEST_METHOD' ] == 'POST' ) {
 
    $fh = fopen ( 'woordenlijst.txt', 'a' );
    
    if ( fwrite ( $fh, "\r\n" . $_POST[ 'origineel' ] . ":" . $_POST[ 'nieuw' ] ) ) {
      echo 'Toegevoegd: ', $_POST[ 'origineel' ], '=>', $_POST[ 'nieuw' ], '<br />';
    } else {
      echo 'Kan niet toevoegen';
    }
 
    fclose( $fh );
 
  }
?>
    <form name="toevoegen" method="POST" action="">
        <input type="text" name="origineel" />
        <input type="text" name="nieuw" />
        <input type="submit" name="submit" value="Toevoegen" />         
    </form>
</body>
</html>

en nog woordenlijst.txt
en inhoud daarvan:
auto:car
kijk er maar ff naar

woordenboek

EDIT:
fout hersteld ipv .html .php
 
Laatst bewerkt:
volgensmij heb ik het gevonde ik moet even de rechten geven aan woordenlijst.txt (777)
 
werkt helemaal :)
bedankt voor je inspanning :D
 
Laatst bewerkt:
Nog even een paar kleine dingen,

je hebt in add alleen maar een form staan,zonder tekst.
maak er bijv nederlands: (inputbox)
engels: (inputbox) van.
en een vorig knop als je geadd hebt.
Ik weet verder niet waarvoor je het wilt gebruiken, maar ik denk dat er veel mensen zijn die scripts op deze pagina kunnen gebruiken!
 
Het ging hier puur en alleen om de code, niet om visuele aantrekkelijkheid, niet om gebruikersgemak, etc. Puur een werkend stukje code. Het is aan de TS om dit in zijn eigen pagina te integreren.
 
Ja, dat kan. Plak het volgende stuk code binnen de div met class 'content-lk-c'.

PHP:
<?php
 
  if ( $_SERVER[ 'REQUEST_METHOD' ] == 'POST' ) {
    
    if ( array_key_exists ( $_POST[ 'q' ], $woordenboek ) ) {
 
      $result = $woordenboek[ $_POST[ 'q' ] ];
 
    } else {
 
      $result = 'not found in our database!';
 
    }
 
    echo 'You searched for: ', $_POST[ 'q' ];
    echo '<br />';
    echo 'result: ', $result;
    echo '<br />';
 
  }
 
?>

PHP:
<div class="content-lk-c">
  <DL class="title-f">
    <DT>
      <DD>
        <A HREF="/woordenboekadd.php">add words</A>
        <form name="vertaling" method="POST" action="">
          <input type="text" name="q" />
          <input type="submit" name="submit" value="Search" />         
        </form>
      </DD>
    </DL>
  </DT>
  <!-- bijvoorbeeld hier -->
</div>

Zoals je het nu hebt, staat het buiten je HTML tags, en dat kan sowieso niet. Het kan ook zijn dat je het nog ergens in je <DT> / <DL> / <DD> moet plaatsen, maar dat weet ik niet. Ik weet namelijk niet exact wat deze doen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan