Autor Zpráva
Fisak
Profil
Zdravím... potřeboval bych aby výběrem ze select se mi změnilo coocies... nechci ovšem klikat na žádný submit ale rovnou když vyberu jiný jazyk ze selectu tak aby se mi změnilo v coocies
<select name="jazyk">
<option value="cs">Česky</option>
<option value="sk" selected="selected">Slovensky</option>
</select>
a
setcookie ("language", "$_post['jazyk']", time()+36000);
jenikkozak
Profil
Formulář můžeš odeslat automaticky pomocí submit v JS. V PHP pak změň jazyk, ulož soubor cookie a načti stránku.
Jestli se změna jazyka nemá týkat dané stránky, pomocí události pak nastav cookii v JS.
Mimochodem fakt nechápu, jak můžeš hodnotit něco, u čeho neznáš ani základy.
Fisak
Profil
dobře .. nevim jestli to dobře chápu ale (v js nemám zkušenosti)
<script>
HTMLFormElement.submit()
</script>
<?php setcookie ("language", "document.forms["jazyk"].submit()", time()+36000); ?>
<select name="jazyk">
<option value="cs" onsubmit="cs">Česky</option>
<option value="sk" selected="selected" onsubmit="sk">Slovensky</option>
</select>
jenikkozak
Profil
Fisak:
A to jsi hodnotil i PHP? ;-)

Chceš, aby to postupovalo takto:
1) načtení stránky
2) výběr položky ve formuláři
3) automatické odeslání formuláře (budou se ti hodit události, aby se to neposlalo bez výběru položky, ale ne onsubmit)
4) zpracování formuláře na serveru (uložení cookie).

Tvé schéma (nebo co to má být) dělá v podstatě všechno v jednom kroku.

Umíš (asi) vytvořit formulář v HTML a zpracovat jej v PHP. Jedinou změnu, kterou potřebuješ, je automatické odeslání formuláře po vybrání položky v selectu.
Fisak
Profil
dobře... zkusím to trochu předělat.. a použití onsubmit je správné nebo mám použít onclick nebo ještě něco jiného ??
jenikkozak
Profil
<form id="id-formu">
<select name="jazyk" onchange="document.getElementById('id-formu').submit()">
<option value="cs">Česky</option>
<option value="sk">Slovensky</option>
<option value="ru">Rusky</option>
</select>
V PHP zvolené položce přiděl atribut selected.
Fisak
Profil
A co mám dát do tý fce ??
<script>
function document.getElementById('id-formu') {
????
}
</script>
jenikkozak
Profil
Fisak:
A co mám dát do tý fce ??
????
V t?o?m m?é?m k?ódu žádná funkce není. Proč jej nevyužiješ, když už jsem ti jej psal? To je hotová stránka, připiš konec formu, title a kódování a nic dál nemusíš řešit.
(Taky zvládám narvat šest otazníků do příspěvku.)
SeparateSK
Profil
<form id="id-formu">
<select name="jazyk" onchange='var loc=this.options[selectedIndex].value;loc="?jazyk="+loc;location.href=loc'>
<option value="sk">---</option>
<option value="cs">Česky</option>
<option value="sk">Slovensky</option>
<option value="ru">Rusky</option>
</select>
<?php
echo $_COOKIE[language];
?>
<?php 
if(isset($_COOKIE[language]))setcookie ("language", "$_GET[jazyk]", time()-36000);
setcookie ("language", "$_GET[jazyk]", time()+36000);
if(isset($_GET[jazyk])) echo "<script type=\"text/javascript\">location.href=document.referrer</script>";
?>
Fisak
Profil
díky
Fisak
Profil
Zdravím ... ještě bych měl dotaz... mám fci lang_change() a ta by mi měla vypsat výběr jazyka kdekoliv na webu kde napíšu echo lang_change(); jen nevím jestli je tato fce správně....
<?php
function lang_change()
{
if(isset($_GET['lang'])) echo "<script type=\"text/javascript\">location.href=document.referrer</script>";
if($_COOKIE['language'] == "sk")
{
return "
<form id=\"id-formu\">
<select name=\"jazyk\" onchange='var loc=this.options[selectedIndex].value;loc=\"?lang=\"+loc;location.href=loc'>
<option value=\"cs\">Česky</option>
<option value=\"sk\" select=\"selected\">Slovensky</option>
</select>";
} 
elseif($_COOKIE['language'] == "cs") {
return "
<form id=\"id-formu\">
<select name=\"jazyk\" onchange='var loc=this.options[selectedIndex].value;loc=\"?lang=\"+loc;location.href=loc'>
<option value=\"cs\" select=\"selected\">Česky</option>
<option value=\"sk\">Slovensky</option>
</select>";
} else {
return "
<form id=\"id-formu\">
<select name=\"jazyk\" onchange='var loc=this.options[selectedIndex].value;loc=\"?lang=\"+loc;location.href=loc'>
<option value=\"cs\">Česky</option>
<option value=\"sk\">Slovensky</option>
</select>";
}
if(isset($_COOKIE['language'])) setcookie("language", $_GET['lang'], time()-36000);
}
?>
SeparateSK
Profil
Skús toto :
<?php

function lang_change(){
    if($_COOKIE['language'] == "sk") {
        echo "
        <form id=\"id-formu\">
        <select name=\"jazyk\" onchange='var loc=this.options[selectedIndex].value;loc=\"?lang=\"+loc;location.href=loc'>
        <option value=\"sk\">Vyberte si jazyk</option>
        <option value=\"cs\">Česky</option>
        <option value=\"sk\" select=\"selected\">Slovensky</option>
        </select>";
    } 
    elseif($_COOKIE['language'] == "cs") {
        echo "
        <form id=\"id-formu\">
        <select name=\"jazyk\" onchange='var loc=this.options[selectedIndex].value;loc=\"?lang=\"+loc;location.href=loc'>
        <option value=\"cs\">Vyberte si jazyk</option>
        <option value=\"cs\" select=\"selected\">Česky</option>
        <option value=\"sk\">Slovensky</option>
        </select>";
    } else {
        echo "
        <form id=\"id-formu\">
        <select name=\"jazyk\" onchange='var loc=this.options[selectedIndex].value;loc=\"?lang=\"+loc;location.href=loc'>
        <option value=\"sk\">Vyberte si jazyk</option>
        <option value=\"cs\">Česky</option>
        <option value=\"sk\">Slovensky</option>
        </select>";
    }    
    if(isset($_GET['lang'])) {
        setcookie("language", $_GET['lang'], time()+36000);
        echo "<script type=\"text/javascript\">location.href=document.referrer</script>";
    }
}
lang_change();
echo $_COOKIE[language];
?>
- nemusis to zvolat typom echo lang_change(); stačí lang_change();
Ten tvoj script (tvoja fukcia) neuklada cookie - iba ho maže :)
A radšej tam nechaj to "Vyberte si jazyk" , lebo ak to tam nebude, tak češtinu uživatel zrejme nikdy nevyberie

Mimochodom, na to aby si zmenil cookie nemusíš písať : time()-36000;
jednoducho ten cookie prepíšeš s time()+36000;
setcookie predsa znamená "Nastav cookie", tak ho to iba prenastaví
Fisak
Profil
koukni http://insignia.funsite.cz/home/ když změníš jazyk tak ti to stále vypisuje "cs"
SeparateSK
Profil
Skopiroval si ten môj kód celý ??? Lebo mne to na localhoste ide aboslutne bez problémov a Cookie sa mení.
Zvlášť dôležité je toto :
    if(isset($_GET['lang'])) {
        setcookie("language", $_GET['lang'], time()+36000);
        echo "<script type=\"text/javascript\">location.href=document.referrer</script>";
    }
A zdá sa mi ,že to ako si to moje "neskopíroval dobre", si samo nastaví češtinu aj bez vybratia

Mimochodom, stači aj iba:

<?php 
function lang_change(){
   echo "
        <form id=\"id-formu\">
        <select name=\"jazyk\" onchange='var loc=this.options[selectedIndex].value;loc=\"?lang=\"+loc;location.href=loc'>
        <option value=\"sk\">Vyberte si jazyk</option>
        <option value=\"cs\">Česky</option>
        <option value=\"sk\" select=\"selected\">Slovensky</option>
        </select>
    ";
    if(isset($_GET['lang'])) {
        setcookie("language", $_GET['lang'], time()+36000);
        echo "<script type=\"text/javascript\">location.href=document.referrer</script>";
    }
}
lang_change();
echo $_COOKIE[language];
?>
Fisak
Profil
zkopíroval sem to přesně jak si mi to napsal... :(
SeparateSK
Profil
Tak je asi problém niekde tam v
    if(isset($_GET['lang'])) {
        setcookie("language", $_GET['lang'], time()+36000);
        echo "<script type=\"text/javascript\">location.href=document.referrer</script>";
    }
Lebo som si všimol ,že tvoj web na to vôbec nereaguje.
Logicky by sa stránka mala redirectnúť naspäť už so zmeneným jazykom a v zdrojovom kóde by sa malo nachádzať
<script type="text/javascript">location.href=document.referrer</script>
lebo php script hovorí , že ak je zadaný parameter LANG, tak vypíše tento javascript ^ a zároveň zmení cookie
Fisak
Profil
jestli spíš neni třeba problém v mod_rewrite v htaccessu ...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.[[:alnum:]]+$
RewriteRule ^(.+[^/])$ /$1/ [R=301]
RewriteCond %{REQUEST_URI} !^/(_images|_uploads) [OR]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)?/?([^/]+)?/?$ /?page=$1&action=$2&run=$3

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: