Kun je met echo in een javascript -functie een PHP-variabele oproepen?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Johan Derks

Johan Derks

20/12/2011 17:32:01
Quote Anchor link
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/#"+
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_POST['brontaal']; ?>
+"|"+doeltaal+"|"+
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?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'.
 
PHP hulp

PHP hulp

27/11/2024 16:43:28
 
Erwin H

Erwin H

20/12/2011 17:38:42
Quote Anchor link
Ondanks de angst ga ik het toch proberen...

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?
 
Johan Derks

Johan Derks

20/12/2011 17:56:48
Quote Anchor link
Bedankt broeder!

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/#"+
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_POST['fontLingvo']; ?>
+"|"+allingvo+"|"+
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?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 &#265;i-tie por la germana.</button >
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

20/12/2011 17:59:27
 
Erwin H

Erwin H

20/12/2011 18:12:54
Quote Anchor link
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.
 
Johan Derks

Johan Derks

20/12/2011 21:18:21
Quote Anchor link
Volgens mij heb je het goed begrepen.
 
Johan Derks

Johan Derks

22/12/2011 12:07:07
Quote Anchor link
Hoe dan, Erwin of iemand anders?
 
Erwin H

Erwin H

22/12/2011 14:44:27
Quote Anchor link
Sorry, niet meer naar dit topic gekeken.

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<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>


Stel nu dat de twee variabelen zijn "test1" en "test2" dan kom de javascript code die in je HTML terecht komt er als volgt uit te zien:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<script type="text/javascript">
  function tradukuVortonPerGT(allingvo)
  {
    var url="http://translate.google.com/#test1|"+allingvo+"|test2";
    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>

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.
 
Johan Derks

Johan Derks

23/12/2011 15:25:37
Quote Anchor link
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?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

23/12/2011 16:13:55
Quote Anchor link
De alert staat binnen de functie dus die wordt wel uitgevoerd. Post even het stukje code wat je nu hebt, misschien zie je iets over het hoofd.
 
Erwin H

Erwin H

23/12/2011 16:16:53
Quote Anchor link
Johan Derks op 23/12/2011 15:25:37:
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.
 
Johan Derks

Johan Derks

23/12/2011 16:45:51
Quote Anchor link
De reactie van Erwin begrijp ik niet helemaal. Echo'en aan het begin van het javscript begrijp ik wel.
Voor Gert, ik heb:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?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/#
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_POST['fontLingvo'] ?>
|"+allingvo+"|
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?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>


Toevoeging op 23/12/2011 16:47:53:

en het javascript was geworden, op Erwins advies:
<script type="text/javascript">
function tradukuVortonPerGT(allingvo)
{var url="http://translate.google.com/#
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_POST['fontLingvo'] ?>
|"+allingvo+"|
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?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>
 
Jacco Brandt

Jacco Brandt

23/12/2011 16:53:17
Quote Anchor link
Bekijk de broncode die in je browser staat eens.
 
Erwin H

Erwin H

23/12/2011 16:54:32
Quote Anchor link
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.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

23/12/2011 17:05:10
Quote Anchor link
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?
 
Johan Derks

Johan Derks

24/12/2011 13:36:57
Quote Anchor link
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!
 
Erwin H

Erwin H

24/12/2011 14:43:01
Quote Anchor link
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?
 
Johan Derks

Johan Derks

24/12/2011 16:17:43
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?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>'
;
    }

?>
 
Erwin H

Erwin H

24/12/2011 16:30:45
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?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.
 
Johan Derks

Johan Derks

24/12/2011 17:11:14
Quote Anchor link
Voor zover toepasselijk, een gelukkig kerstfeest!

Hartelijkst dank voor de geboden adviezen.

Johan Derks
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.