Ik weet, dat iedereen mijn volgende probleem met angst en beven tegemoet ziet, maar ik heb geen andere keus.

Ik wil een door de gebruiker opgegeven woord in een door hem opgegeven taal half-automatisch door 'Google Translate' naar een reeks van zeven andere talen laten vertalen.

Dus staan er op mijn pagina Zamenhofa.php zeven knoppen, met bv. voor de knop naar het Duits de HTML-code
<button type="button" onclick="vertaalWoordMetGT('de')">
Klik hier voor Duits.</button >,
voor Frans
<button type="button" onclick="vertaalWoord Met GT('fr')">
Klik hier voor Frans.</button >,
Ik moet dan http://translate.google.com openen met de parameters brontaal, doeltaal en woord, zodat er bij voorbeeld http://translate.google.com/#cs|fr|miláček komt te staan.
De waarden cs (brontaal) en miláček (bronwoord) komen dus van de gebruiker en zijn met de methode "POST" naar Zamenhofa.php opgestuurd.

Ik wil voor dat vertalen met de javascriptfunctie vertaalWoordMetGT(doeltaal) de variabele
url = "http://translate.google.com/#"+<?php echo $_POST['brontaal']; ?>+"|"+doeltaal+"|"+<?php echo $_POST['bronwoord']; ?>" gebruiken.

Helaas, er gebeurt niets als ik op de betreffende knop druk.

Dit probleem lijkt op mijn vorige probleem, maar toen kon de PHP-variabele maar twee bekende waarden hebben en kon ik met 'if else' en de PHP-functie 'print' het HTML-script genereren.
Nu kunnen brontaal en brontaal allerlei onbekende waarden aannemen, dus gaat dat niet met 'if else'.
De reactie van Erwin begrijp ik niet helemaal. Echo'en aan het begin van het javscript begrijp ik wel.
Voor Gert, ik heb:
<?php /* Created on: 17-12-2011 */
ini_set('display_errors',1);
error_reporting(E_ALL&~E_NOTICE);
define('TITLE','Register');
session_start();
if (isset($_POST["fontVorto"]))
{$_SESSION["fontVorto"]=$_POST["fontVorto"];};
if (isset($_POST["fontLingvo"]))
{$_SESSION["fontLingvo"]=$_POST["fontLingvo"];};
if (isset($_POST["portugalaItala"]))
{$_SESSION["portugalaItala"]==$_POST["portugalaItala"];};
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">;
<html xmlns="http://www.w3.org/1999/xhtml">;
<!-- Created on: 13-12-2011 -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
<title>Tiel Zamenhof ver&#349;ajne difinus 'fremdan vorton', se li estintus statistikisto.</title>
<meta name="description" content=""/>
<meta name="keywords" content=""/>
<meta name="author" content="Unregistered User"/>
<meta name="generator" content="AceHTML Freeware"/>

<style type="text/css">
h4 {text-align: center; color: #FFFFCC; font-family: book antiqua; background: silver}
button {text-align: right; background: #FFFFCC; width: 250px}
select {font-size: 15px}
</style>

<script type="text/javascript">
function tradukuVortonPerGT(allingvo)
{var url="http://translate.google.com/#<?php echo $_POST['fontLingvo'] ?>|"+allingvo+"|<?php echo $_POST['fontVorto'] ?>";
alert(url);
window.open(url,"alGugla", "toolbar=0, location=0, directories=0, menuBar=0, scrollbars=1, resizable=1, width=520, height=680, left=520, top=0")
}
</script>

</head>

<body onload="kashu()">
<h4>Interaktive kun Gugl Translejt</h4>

<form name="lingvojZamenhofaj" method="post">
<table align="center">
<tr>
<td><button type="button" onclick="tradukuVortonPerGT('de')">
Klaku &#265;i-tie por la germana.</button ></td>
<td>Ekzistas traduko kiu<input type="radio" name="de" value="jes">jes </input>
<input type="radio" name="de" value="ne" checked="checked">ne </input>similas.</td>
</tr>
<tr>
Enzovoorts (andere talen)
</tr>
</table>

</body>
</html>


[size=xsmall]Toevoeging op 23/12/2011 16:47:53:[/size]

en het javascript was geworden, op Erwins advies:
<script type="text/javascript">
function tradukuVortonPerGT(allingvo)
{var url="http://translate.google.com/#<?php echo $_POST['fontLingvo'] ?>|"+allingvo+"|<?php echo $_POST['fontVorto'] ?>";
alert(url);
window.open(url,"alGugla", "toolbar=0, location=0, directories=0, menuBar=0, scrollbars=1, resizable=1, width=520, height=680, left=520, top=0")
}
</script>
Bekijk de broncode die in je browser staat eens.
print_r($_POST);

Als je dit even aan het begin zet (alleen voor test) krijg je je hele POST array op je scherm. Hiermee kan je controleren of de juiste waarde wel in je POST array zijn gekomen. Zoniet, dan kunnen we daar dus de fout zoeken.
Ik zie ook dar je in de onload van de body een functie aanroept dei verder nergens gedefinieerd is, roep je ook nog een extern script aan?
Bedankt Jacco (een nuttige tip om eenvoudig de broncode te bekijken of bv. een ge-echode variabele is overgekomen) en Ger (Ik roep een javscriptje om te verbergen en die had ik gewist, maar dat vormt geen probleem).
Nu even terug naar Erwin, die samenvattend vroeg of het volgende juist is:
1. De gebruiker geeft een woord op in een formulier en klikt op een knop.
2. Daarmee wordt er een pagina geladen via een php script waarin dus dat woord al meegegeven is.
3. In de output pagina van dat php script kan de gebruiker op een knop klikken om de vertaling te zien, maar geeft dus GEEN nieuw woord op.
Mijn antwoord was niet goed. De pagina van 2. heet metodElektilo.php (methodekiezer), die stuurt het van 1. (fontVortRegistrado.html) ontvangen woord alleen maar door naar 3. (Zamenhofa.php) en dáár klik op een knop om een vertaling te zien.
Mijn eerste opzet was: metodElektilo vangt het van fontVortRegistrado ontvangen woord op in een formulier met verborgen variabelen en zendt de gegevens van dat formulier door naar Zamenhofa. Dat wordt ingewikkeld met een php-script dat een formulier met verborgen variabelen genereert.
Mijn tweede opzet was: start een sessie, maar daarvoor vind ik onvoldoende uitleg op internet en in het boek van Larry Ullman.
Mijn derde opzet is: heel beleefd zijn en het jullie vragen!
De enige vraag die ik heb is hoe precies de overgang van pagina 2 naar 3 gaat (metodElektilo naar Zamenhofa). Dat zijn beide php pagina's neem ik aan, maar moet de gebruiker op een knop klikken of zo?
Ja, op
<form name="alZamenhofaj" action="Zamenhofa.php" target="ZamenhofaKadro.html" method="post">
<p><button type="submit" style="width: 400px">Trasendu min al elektopa&#285;o pri 7 gravaj e&#365;ropaj lingvoj.</button></p>.
Wel zit deze voorgeprogrammeerd in het php-script:
<?php
if ($_POST["portugalaItala"]!=-1)
{print'
<form name="alZamenhofaj" action="Zamenhofa.php" target="ZamenhofaKadro.html" method="post">
<p><button type="submit" style="width: 400px">Trasendu min al elektopa&#285;o pri 7 gravaj e&#365;ropaj lingvoj.</button></p></form>';
}
?>
Daar gaat het dan fout denk ik.
Het woord dat is opgegeven op pagina 1 (fontVortRegistrado.html) wordt naar pagina 2 (metodElektilo.php) gestuurd. Daar wordt bovenstaande code dus gegenereerd, waarbij pagina 3 (Zamenhofa.php) wordt geladen als de gebruiker op de knop klikt.
Alleen, in het form staan geen hidden inputs met de waardes van die woorden. Wat je dus eigenlijk wil op pagina 2 is dat het volgende form wordt gebouwd:
<?php
if ($_POST["portugalaItala"]!=-1)
    {print'
    <form name="alZamenhofaj" action="Zamenhofa.php" target="ZamenhofaKadro.html" method="post">
    <input type="hidden" name="fontLingvo" value="'.$_POST['fontLingvo'].'" />
    <input type="hidden" name="fontVorto" value="'.$_POST['fontVorto'].'" />
    <p><button type="submit" style="width: 400px">Trasendu min al elektopa&#285;o pri 7 gravaj e&#365;ropaj lingvoj.</button></p></form>';
    }
?>


Hiermee worden de variabelen dan in het form gezet op pagina 2 vanuit de POST array. Als de gebruiker nu op de knop klikt, komen die waardes automatisch ook weer in de POST array op pagina 3 terecht en daar kan je ze dan in het javascript zetten zoals ik eerder al aangaf.
Voor zover toepasselijk, een gelukkig kerstfeest!

Hartelijkst dank voor de geboden adviezen.

Johan Derks

Reageren