Autor Zpráva
vladap
Profil
Přeji hezký den,

prosím o nakopnutí. Mám WEBovou aplikačku, která má být, řekněme dynamická.
Uživatel změni hodnotu v nějakém objektu. Co nastane:
- změnu načtu přes OnChange/OnClick (javascript - funkce)
- Javascript-funkce zavolá proceduru v PHP
- PHP udělá změnu v DB (MySQL) - přes cURL
- Stránka se refreshuje a načte nanovo již s novým nastaveni. (tolik teorie)

Já vím, nic světoborného, určitě jste to uz řešili mnohokrát. Ja mám problém v tom, že nedokážu
předat proměnou z javascriptu do PHP funkce. Dokonce mi to už i fungovalo při jednoduším stringu. Když jsem tam však nal funkci, kterou v PHP potřebuji volat, celé mi to zkolobovalo :-(. Zkoušel jsem to následovně (je to pouze test, na kterém si to zkoušim):

<body> // Samotne body
    <input type="text" id="SetText" name="SetText"><br> 
    <input type="button" id="setButton" name="setButton" value="Poslat!" onclick="javascript:SetPHPScript();">
    <span id="php_code"> --- </span>
</body>
----
    <script type="text/javascript"> // volana javascript funkce
      function SetPHPScript()
      { 
         var MySetText=document.getElementById("SetText").value;       // Zde si nactu rucne zadane promenne, ktere chci zpracovat
         var StringForPHPDef='<?php ProcessURL2("http://127.0.0.1/cURL_PostRead.php","'+MySetText+'"); ?>'; //Vytvorim string pro volani PHP procedury
         document.getElementById("php_code").innerHTML = StringForPHPDef; // Volam PHP funkci
      } 
    </script>   
----
  <?php  // v teto casti jiz dostanu sve promenne do $_POST a muzu je precist pro zapsani do databaze
      function ProcessURL2($url,$vars)
      {
        $ch = curl_init($url);
        curl_setopt ($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch,CURLOPT_POST,1);
        curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $vystup = curl_exec ($ch);
        curl_close ($ch);
      }  
    ?>

Při zpracování mi to nic neudělá, případně mi to vyhazuje chyby jako Unterminated string constant a podobně. Vypadá to, že má psychicky
problem se zpracováním stringu z javascriptu, ktery mu předkládam pro zpracování v PHP.

Do teto části vyvoje jsem zabrousil poprve, omlouvam se proto za primitivnost a diky za nakopnuti.

PS: Změny chci ukládat do DB (ne do sušenek).

Vlada


Moderátor Str4wberry: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
sysel
Profil
Patrně jde o směs nedorozumění:

JavaScript je kód prováděný na straně klienta a kromě vlastních proměnných umí pracovat s elementy na stránce jako s objekty. Vše pouze na straně klienta.
--------------------
PHP je kód vkládaný do zdrojového HTML jazyka, který je, pokud to server umí, zpracovávaný na straně serveru a tamtéž generující modifikace daného HTML kódu, který se odesílá klientovi. V optimálním případě se klient vůbec nedozví, jakým PHP kódem byla jeho HTML stránka vygenerována.

Tím, že na straně klienta vygeneruji JavaScriptem syntakticky správnou sadu příkazů pro PHP interpreter, naprosto nic nezměním na chování serveru, protože jeho část práce již byla vykonána.

Klasický postup by vypadal nějak takto:
stránka formuláře, kupříkladu se jménem formular.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>formulář</title>
</head>
<body>
<form method="get" action="./zprac.php">
<input type="text" name="SetText"><br>
<input type="submit" name="Zprac" value="Zpracovani">
</form>
</body>
</html>

a zápis do MySQL pak provede následující stránka se jménem zprac.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>provedení</title>
</head>
<body>
<?php 
if ( $_GET["SetText"] != "")
{ mysql_connect("server","username","heslo");
  mysql_query("INSERT INTO  `databaze`.`tabulka` (`polozka`) VALUES ('".$_GET["SetText"]."'); ");
  echo "Vaše data byla úspěšně vložena, <br>pro vložení dalších pokračujte na vstupní formulář";
} else { echo "nic se nezadalo, vraťte se na vstupní formulář" }
?>

<form method="get" action="./formular.html">
<input type="submit" name="znovu" value="Zpět na formulář">
</form>
</body>
</html>


Při troše námahy lze obě stránky spojit do jedné a rozšířit informovanost klienta o to, co právě dělá.
Ovšem JavaScript se v tomto čarování může uplatnit spíš na kontrolu před odesláním formuláře anebo v mnohem složitější podobě dynamické stránky (AJAX ...)
vladap
Profil
Děkuji. Tomu rozumím. Špatně jsem svůj požadavek specifikoval.

Zkusim to jěště jednou. Já mám totiž problém, že nechci používat submit a v danou chvíli nechci ani do AJAXu.

Proto vycházim z faktu, že PHP funkci mohu volat pouze při dotazu, respektive odeslání dotazu na server. Proto jsem to udělal tak, že stránku volám přes javascript - otevíram php page, kde mám php funkci. Proměnné uložím do URL a v PHP je potom přečtu. Nejlépe by to bylo asi přes $_GET.

Nicméně na to bych to udělal, potřeboval bych javascript funkci URL encode kompatibilní s PHP (respektive s $_GET). Je něco takového?

Jak na to? Díky za radu.

Vlada

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0