Autor Zpráva
bob.99
Profil *
Zdravím,
trochu zápasím s javascriptem, potřeboval bych v syntaxi použít sql dotaz, viz kód:

<script type="text/javascript" language="javascript">

function DoplnCenu()
{
     var Myecena = document.getElementById("ecena");
     <?
     $sql = "SELECT * FROM postovnetypy WHERE typ = '?>Myetyp.value;<?'";                         
     $vyber = mysql_db_query($databaze,$sql);
     $radek = mysql_fetch_array($vyber);
     ?>
     Myecena.value = "<?echo $radek["id"];?>";
     <?
     mysql_free_result($vyber); 
     ?>
     return true;
}
</script>


..problém je v SELECT dotazu kde se nepředá hodnota "Myetyp". Lze to nějak vyřešit? Díky
nightfish
Profil
..problém je v SELECT dotazu kde se nepředá hodnota "Myetyp". Lze to nějak vyřešit? Díky
inu... PHP kód se provede na serveru, a jeho výsledek se pošle do prohlížeče, který potom interpretuje javascript (mimo jiné i proměnnou Myetyp.value)
PHP tedy v okamžiku spuštění nemůže mít tušení, jakou má proměnná Myetyp.value hodnotu...
řešením je použití ajaxu - javascript vytvoří požadavek s tím, že do URL připojí hodnotu té proměnné, PHP požadavek zpracuje a vrátí nějakou hodnotu
bob.99
Profil *
Bohužel nejsem znalcem javascriptu ani ajaxu. Můžete mě poradit s konkrétním příkladem?

Zde je ještě html kód:

<?
echo "<select id='etyp' name='etyp'>";
echo "<option value=''>- typ dopisu -</option>";
echo "<option value='P'>P - obyčejně</option>";
echo "<option value='PA5'>P(A5) - obyčejně</option>";
echo "<option value='R'>R - doporučeně</option>";
echo "<option value='RA5'>R(A5) - doporučeně</option>";
 echo "<option value='D'>D - dodejka</option>";
echo "<option value='DA5'>D(A5) - dodejka</option>";
echo "<option value='DR'>DZ/DR - zástupci/do ruky</option>";
echo "<option value='DRA5'>DZ/DR(A5) - zástupci/do ruky</option>";
echo "</select>";
echo "<input id='ecena' type='text' size='5' name='ecena' value='".$ecena."' onFocus='DoplnCenu()'>";
?>                     
peta
Profil
princip, pochopit princip je zaklad.
* server - spousti program, ktery umi zpracovat PHP
* PHP - vygeneruje HTML stranku a posle ji www prohlizeci
* www prohlizec prijme HTML stranku (HTML + JS) a zobrazi ji uzivateli

Cili spravny postup je, ulozit si HTML stranku do promenne a vypsat jedinym prikazem ECHO.

To nahore funguje jen a pouze tak, ze pri nacteni stranky provede SQL prikaz a vygeneruje JS kod.
server posle prohlizeci toto:
<script type="text/javascript" language="javascript">
function DoplnCenu()
{
var Myecena = document.getElementById("ecena");
Myetyp.value;
Myecena.value = "123";
return true;
}
</script>
A muzes si to zobrazit, kdyz klinkes Soubor - Zobrazit zdrojovy kod
Na zobrazeni zdrojoveho kodu nepotrebujes byt znalec.
Neni zde zadna zpetna vazna, tento script bude vzdy stejny do nacteni stranky.

To, co chces, zpetnou vazbu na server, to se da resit jedine ajaxem nebo odeslanim stranky. Coz ajax v podstate dela taky.
Jak najit neco o ajax? google.com napises do vyhledavaciho:
policka ajax javascript php
Druha moznost je pouzit skryty iframe, kde si vyrobis formular, odesles na server, server prijme a vygeneruje JS kod, ktery pak prepise, co ma v hlavnim frame.
bob.99
Profil *
Asi jste ten dotaz nepochopil. Nemůžu načíst sql dotaz před zobrazením stránky, když neznám všechny podmínky dotazu. Ty jsou známy až po vyplnění input pole formuláře "etyp".
Google samozřejmě znám a vyhledávám, to bych se tu neptal. PHP a SQL dotazy jsou taky bez problémů, akorát ten javascript :-)
Joker
Profil
bob.99
Nemůžu načíst sql dotaz před zobrazením stránky, když neznám všechny podmínky dotazu.
...a zároveň nikdy jindy než před odesláním stránky do prohlížeče nelze SQL dotaz provést. Databáze je na serveru, PHP skript a SQL dotazy se provádějí ze serveru. Výsledkem je obvykle nějaký HTML kód, který se pošle klientovi. Tam si ho prohlížeč převezme a teprve zpracuje Javascript.

Čili jediné řešení tohohle problému je:
1. Zobrazí se první stránka. Uživatel zadá hodnotu políčka.
2. Hodnota políčka se odešle na server.
3. Server provede SQL dotaz a zjistí výsledek.
4. Server pošle klientovi novou stránku s výsledkem dotazu.

Vpodstatě vyplnění formuláře - odeslání formuláře - zobrazení nové stránky s výsledkem.
AJAX dělá v principu to samé, akorát že to načtení "nové stránky" se dělá Javascriptem na pozadí aktuální stránky, takže uživatel nemusí vědět, že se vůbec se serverem komunikuje.
bob.99
Profil *
Byl by tu někdo kdo by poradil s javascriptem?
peta
Profil
bob.99
Zkusim to jinak.
Server PHP + SQL vygeneruje HTML + JS kod a odesle www prohlizeci, uzivateli.
"Nemůžu načíst sql dotaz před zobrazením stránky"
Princip rika, ze nemuzes zobrazit stranku uzivateli a potom chtit SQL dotaz.
Cili treba odeslat formular a nacist stranku.
Pokud chces nacist stranku, zpracovat formular odeslany bez obnoveni stranky, resi to ajax. Psal to uz nightfish v prvni reakce. O ajaxu tu byla rec, staci pouzit hledani a najit prislusne tema. Nebo google a najit si priklady.

Uz chapes? Nebo porad mame pracovat za tebe zadarmo?
Chamurappi
Profil
Reaguji na boba.99:
Inspiruj se universální funkcí pro AJAX. Hotové řešení ti tu asi nikdo nenaservíruje, tak triviální totiž není a pokud ti dělá problémy rozpoznat, co se děje u klienta a co na serveru, byla by asi snaha zbytečná.

Pokud je typů rozumné množství (třeba těch tvých osm), bylo by efektivnější všechny hodnoty nasázet do skriptu už při načítání základní stránky než sahat si pro každou zvlášť na server (a skriptem na serveru do databáze).
var ceny = { "P": 2, "PA5": 3, "R": 10 /* atd. */ };
Myecena.value = ceny[Myetyp.value];
bob.99
Profil *
Těch polí je samozřejmě více a každý s několika hodnotami, to byl jen zjednodušenej příklad. Jinak o tom jsem taky přemejšlel že by se to před načtením uložilo do array pole. Jinak díky za odkaz kouknu na to.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

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