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'.
Een paar vragen om mee te beginnen:
1 - geeft de gebruiker een woord op in een input veld?
2 - bij het klikken op de knop, wordt de pagina dan herladen?
en omdat ik denk dat het antwoord op 1 ja is en op 2 nee is...
3 - hoe moet dat door de user opgegeven woord in de $_POST array komen?
Antwoord 1: Ja, in een voorgaande pagina, die dat woord naar Zamenhofa.php gepost heeft. Ik gebruik ook een session, maar weet daar niet mee om te gaan.
Antwoord 2: Nee. Dat is dus hier niet relevant, omdat het woord uit een formulier op een vorige pagina komt.
Antwoord 3: De volledige code van de javascriptfunctie is:
<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>
en het event zit in:
<button type="button" onclick="tradukuVortonPerGT('de')">
Klaku ĉi-tie por la germana.</button >
Antwoord 2 is dus wel ja... alleen niet helemaal....
Even zodat ik het begrijp:
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
Klopt dit allemaal? In dat geval kan je namelijk wel het woord uit de $_POST array halen, alleen waarschijnlijk iets anders dan je denkt.
Maar het antwoord is dat als het woord al bestaat als je de html pagina genereert door php, je de php variabelen wel kan echoen in je javascript. Je moet er dan alleen op letten dat het wel correcte javascript wordt en dat de variabelen dan als strings in je javascript komen. Als ik je voorbeeld gewoon even pak zou je het als volgt kunnen doen:
Wat je dus feitelijk doet is de variabelen in je php script al invullen in je javascript, zodat tijdens de executie van javascript dat niet meer nodig is. Let wel goed op de quotes (alleen nodig daar waar de string onderbroken wordt) en zorg ervoor dat de hele url op een regel terechtkomt. Dus GEEN enters in je php script anders kan javascript er niet meer overweg. Dat kan alleen als je er een + hebt staan, maar ik raad aan het helemaal niet te doen.
Bah, bah!
Volgens mij heb ik alles nauwkeurig uitgevoerd, wat je zei. Maat het werkt niet.
De alert met de url geeft alleen http://translate.google.com/#|de|", dus de variabelen in het PHP-script komen niet over. Ze zijn wel goed gepost.
Omdat ik ook steeds vóór de html-tags in php-script een session startte en die volgens mij nu geen enkele functie meer heeft, heb ik die code weggehaald. Het maakt geen verschil.
Tenslotte ter informatie: De javascriptfunctie wordt aangeroepen in een button met
onclick="tradukuVortonPerGT('de')" (feitelijk zeven verschillende buttons, voor zeven verschillende talen). Moet dat misschien
onclick="type/javascript: tradukuVortonPerGT('de')" zijn?
dus de variabelen in het PHP-script komen niet over. Ze zijn wel goed gepost.
Als je deze helemaal aan het begin van je php script eens echo'ed, krijg je ze dan wel te zien? Of anders, zet aan het begin van je script eens:
print_r($_POST);
Dit zou je hele POST array moeten printen waardoor je kan controleren of alles er goed in staat.