« 1 2 »
Autor Zpráva
snazimse
Profil
Zdravím,

mám tady takový menší problém,řešení sem nějak nedohledal.
Zeptám se zkušených.

V jquery,bych potřeboval za určité podmínky,v tomto případě,
kliknutí změni pomocí php v jquery přepsat hodnotu post,ale ikdyž podmínka,

není vypsaná,hned při reload,jakoby onload,se post změní,ikdyž není podmínka splněna,

co s tím prosím,dal jsem to záměrně do alertu,abych na klik věděl zda funguje,funguje? Jak to upravit? Proč to vypisuje,novou hodnotu,když se podmínka ještě nesplnila?

Je to v pořádku? Jak to řešit?


Skript:

<script>
$(document ).ready(function() {
$("#yeah").click(function(){
if ($(this).data('clicked', true)) {
alert("<?php $_POST['value'] = 'something'; ?>");
}; 
}); 
});
</script>

Díky všem za reakce!
Joker
Profil
snazimse:
Zajímavý zvyk, používat zapisovací operace v kontextu čtení. Ale ne zrovna šťastný.

Jednak i kdyby ta podmínka závisela na hodnotě data-clicked, pokaždé se tam nastaví true, takže výsledek musí být pokaždé stejný, ale hlavně ta podmínka na té hodnotě vůbec nezávisí.
Metoda data vrací jQuery objekt, takže výsledek IFu logicky bude pokaždé stejný.

Krom toho mi není zřejmé, je zamýšlené tímhle:
alert("<?php $_POST['value'] = 'something'; ?>");
_es
Profil
snazimse:
Tvoj dotaz je veľmi nezrozumiteľný. Čo to má celé robiť? Čo si tak pozrieť dokumentáciu k tomu, čo používaš? http://api.jquery.com/data/ => 4. riadok je nezmyselný.
snazimse
Profil
Joker
Dobře jasně alert,se na to nepoužívá,to jsem měl jen kvůli kliknutí,ale ikdyž to odmažu,a dám jen:

<script>
$(document ).ready(function() {
$("#yeah").click(function(){
$('#content').html("<?php $_POST['value'] = 'something'; ?>");
}); 
});
</script>

Tak výsledek je stejný stejně se to zapíše,ikdyž jsem na nic neklikl.
Hned při loadu,se to nastaví,ta nová post na stránce.

_es:
Co to má dělat,jsem již napsal,měnit hodnotu dané post,po kliknutí pomocí jquery.


Děkuji vám!
_es
Profil
snazimse:
měnit hodnotu dané post
Ako, kde, kedy meniť?
Možno máš nejaké medzery v základných veciach:
Nejčastější potíže s PHP (FAQ) » Jak přenést proměnnou z javascriptu do PHP
http://pehapko.cz/zakladni-kurz/15-php-a-javascript
Kubo2_
Profil *
snazimse:
Tak sa mi vidí, že chceš využiť AJAX.
Joker
Profil
snazimse:
Dobře jasně alert,se na to nepoužívá
O alert vůbec nešlo.
Takže tak jak to je teď:
$('#content').html("<?php $_POST['value'] = 'something'; ?>");
- není mi zřejmé, co je zamýšlené tímhle.

Hned při loadu,se to nastaví,ta nová post na stránce.
Hmm, už jsem to asi pochopil.
Smyslem je na kliknutí provést nějaký PHP kód?
Tak to takhle nelze.
Viz Základní kurz 15: Komunikace mezi PHP a JavaScriptem
_es
Profil
Joker:
Smyslem je na kliknutí provést nějaký PHP kód?
Ale okrem toho aj ten uvedený PHP kód je nezmyselný, či nie?
Kubo2_
Profil *
_es:
Nie, nie je. Do $_POST je možné zapisovať, akurát sa to neodporúča.
snazimse
Profil
Joker:

V tom článku,jsem pochopil,že mám používat json_encode,a převést,to je json formátu,pak to použít?

Ale jak říkám,ta post,se normálně nastaví,ale jako by na jquery neměla vliv,na to nastaví se vždy po loadu stránky.
To znamená,když dám nějakou podmínku v jquery tak prostě potřebuji,aby to fungovalo.

A potřebuji to nějak rozumně nastavit.

Jinak bych to musel asi nějak přes ajax obměnit,ale to zrovna přesně nevím jak.
_es
Profil
[#9] Kubo2:
No ale okrem toho, že sa zmení hodnota, to predsa nič nerobí, teda je to prakticky nezmyselné.

snazimse:
Ale jak říkám,ta post,se normálně nastaví
Neviem, čo sa kedy „nastaví“, ale ten krátky PHP kód nič nenastavuje, len nezmyselne mení hodnotu určenú na čítanie dát odoslaných z prehliadača a nemá ani žiaden výstup. Prečítal si si ten odkázaný článok zo základného kurzu?
Joker
Profil
snazimse:
tom článku,jsem pochopil,že mám používat json_encode,a převést,to je json formátu,pak to použít?

Umm… Doufal jsem, že úvodní část toho článku celkem jasně říká, že to takhle dělat nejde a proč.
snazimse
Profil
_es:

Však o to jde,změnit hodnotu dočasně.Ale je třeba to změnit v php,po příkazu js.

Joker:
Tak tomu nerozumím,je mi jasné,že js,pracuje v jinou dobu než php,a že to jsou různé světy,jak tam píšete.
Ale předávat data tam jdou a když nepoužiju ajax? A chci nějaké obyčejné předání?

Ale zde píšete,že to lze takto použít? Přes funkci json_encode.Můžete to objasnit?

<script type="text/javascript">
    var ip = <?php echo  json_encode($_SERVER["REMOTE_ADDR"]); ?>;
    // teď už můžeme v JS pracovat s proměnnou ip
</script>
Díky
Joker
Profil
snazimse:
V tom příkladu json_encode slouží k ošetření řetězce pro použití v JavaScriptu.
Konkrétně tady by to json_encode ani nebylo nutné, protože IP adresa se získává spolehlivě na serveru a neobsahuje problematické znaky.
Původně jsem to tak i měl, ale na základě připomínky jsem to pak změnil.

Další text objasňuje, že po zpracování PHP z toho vznikne např.:
<script type="text/javascript">
    var ip = "127.0.0.1";
    // teď už můžeme v JS pracovat s proměnnou ip
</script>

Předávat data z PHP do JS takhle jde, protože PHP se zpracuje jako první.

Kód v [#4] při zpracování PHP nastaví $_POST['value'] na 'something' (přičemž zapisovat do $_POST bych obecně nedoporučoval), ale protože nic nevypisuje, jeho výsledkem bude:
<script>
$(document ).ready(function() {
$("#yeah").click(function(){
$('#content').html("");
}); 
});
</script>

Čili efekt bude stejný, jako kdyby to bylo:
<?php $_POST['value'] = 'something'; ?>
<script>
$(document ).ready(function() {
$("#yeah").click(function(){
$('#content').html("");
}); 
});
</script>
snazimse
Profil
Joker:


Dobře,děkuji moc za vysvětlení,rozumím,tak jak se to dá nastavit?
Způsoby? Když bych chtěl na jeden klik změnit načtenou post na dané stránce?

Co by jste mi poradil?
Jinými slovy,teď chápu,jak se to nemá dělat.
Ale jak se to tedy má dělat?
_es
Profil
snazimse:
Když bych chtěl na jeden klik změnit načtenou post na dané stránce?
Asi stále nerozumieš, čo chceš stále „nastavovať“ alebo „zmeniť“? Aký by to malo mať účinok? Tá „post hodnota“ je hodnota odoslaná z prehliadača na server, preto nedáva zmysel „nastavovať post hodnotu na serveri“. Ani v prehliadači sa to nedá nejako priamo „nastaviť“: http://cs.wikipedia.org/wiki/POST - je to spôsob odoslania dát z prehliadača na server cez HTTP protokol.
Kubo2
Profil
[#11] _es:
Áno, zmení sa hodnota. Čo viac by sa malo stať? Ako si zmienil nižšie, serverový skript nezmení originálne hodnoty (spätne sa dajú získať zo stdin://). Ale modifikácia $_POST môže byť občas (aj keď asi zriedkavo) vcelku dobrý hack.
Joker
Profil
Kubo2:
Áno, zmení sa hodnota. Čo viac by sa malo stať?
To nám právě musí říct snazimse. Zavolat skript, který si přiřadí hodnotu do proměnné a pak skončí, aniž by se s tou hodnotou cokoliv udělalo, nemá smysl.
snazimse
Profil
_es, Kubo2, Joker:

Já nevím,jak to mám vysvětlit,prostě odešlu formulářem,nějakou post value,na druhou stránku,pak se redirectuji na tu druhou,mám post value na další stránce,která se mi někde pevně vypisuje,a já potřebuji když kliknu na nějaké tlačítko tuto post stornovat,anebo lépe přenastavit,pomocí javascriptu,

php to nejde nastavit na kliknutí.Protože to musí proběhnout na načtené stránce.Proto jsem chtěl po kliknutí tu post,přednastavit.


Vysvětlil jsem vám to lépe? A na to právě potřebuji řešení.


Děkuji vám všem za věnování!
_es
Profil
snazimse:
tuto post stornovat
Ako „stornovať“? To sa chceš vrátiť v čase a odoslať ten formulár s inými hodnotami než bol naozaj odoslaný? Čo si predstavuješ pod tým menením, nastavením, prenastavením, stornovaním či inou operáciou vo vlastnej terminológii s nejakým neurčitým „post“? Čo by to malo na serveri či v prehliadači spraviť?
Joker
Profil
snazimse:
já potřebuji když kliknu na nějaké tlačítko tuto post stornovat
V době kliknutí na tlačítko už žádné $_POST v PHP neexistuje, není co „stornovat“.

Jestli PHP tu hodnotu někam ukládá (třeba do databáze), dá se vyrobit skript, který tu uloženou hodnotu změní.
To může v nejjednodušším případě mít podobu úplně normálního dalšího odeslání formuláře.

Jestli se POST data drží někde na té stránce, třeba v neviditelných polích, a pak odesílají znovu, dá se JavaScriptem změnit hodnota příslušného políčka.
snazimse
Profil
_es
To jistě nechci se vracet,už hotovou post hodnotu chci změnit.

Joker:
Ale existuje,protože ji tam pořád mám.Navíc kliknutí na to tlačítko nebude nic redirectovat,realoadovat.

Jestli PHP tu hodnotu někam ukládá (třeba do databáze), dá se vyrobit skript, který tu uloženou hodnotu změní.
To může v nejjednodušším případě mít podobu úplně normálního dalšího odeslání formuláře.


Nikam se neukládá.To by pak bylo jasné.Jde o dočasnou hodnotu.

Jestli se POST data drží někde na té stránce, třeba v neviditelných polích, a pak odesílají znovu, dá se JavaScriptem změnit hodnota příslušného políčka.

Přesně ,tak jak to tedy změnit na internetu jsem nic kloudného nenašel,kromě složitého ajaxu.
_es
Profil
snazimse:
už hotovou post hodnotu chci změnit.
Zmeniť, zmeniť, kde, čo, zmeniť?
Nikam se neukládá.
Tak keď sa to nikam neukladá, tak nemáš vlastne čo meniť. Logicky sa dá predsa zmeniť len to, čo je niekde uložené.

Jde o dočasnou hodnotu.
Aj „dočasná“ hodnota predsa musí byť niekde uložená.

...dá se JavaScriptem změnit hodnota příslušného políčka.
Přesně ,tak jak to tedy změnit...
Hodnotu nejakého inputu zmeníš v JS veľmi jednoducho: objektInputu.value = "hodnota";.
snazimse
Profil
_es:
Ne tohle znám,to je hodnota inputu ne post!!!

o to mi nejde.

Já už nevím jak to mám říct,prostě.

Chci tohle.

JS KLIK->NASTAVÍ DOSTUPNOU POST NA NOVOU HODNOTU PŘES PHP COŽ ASI NEPŮJDE ,KDYŽ TO JE NA SERVERU BEZ ODESLÁNÍ NEBO POKUD TO JDE PŘÍMO V JS,TÍM LÉPE.

JINAK REČENO:
Kliknu na tlačítko -> " <?php $_POST['value'] = 'NOVA HODNOTA'; ?>"

POKUD SE TO DÁ TA POST NASTAVIT ?

TOTO MI NEMŮŽETE ZODPOVĚDĚT,NEBO DÁT PŘÍKLAD,JAK TO UDĚLAT?
POŘÁD SE MĚ PTÁTE CO? JÁ NEVÍM JSEM ZAČÁTEČNÍK. POPISUJI DETAILNĚ ČEHO CHCI DOCÍLIT UŽ PO NĚKOLIKATÉ.
ZMĚNIT POST VALUE NA JEDEN KLIK.

PROTO SE PTÁM V ŽIVOTĚ JSEM TO NEDĚLAL.

DĚKUJI VÁM!
_es
Profil
snazimse:
NASTAVÍ DOSTUPNOU POST NA NOVOU HODNOTU PŘES PHP
To je nezmysel.
PHP prečíta, čo mu prehliadač poslal, ak mu to bolo poslané metódou POST, tak prečíta čo, žiadna „POST hodnota“ sa na serveri nenastavuje, „POST hodnotu“ pošle prehliadač napríklad v prípade odoslania formulára s nastavenou metódou POST. Server (PHP) nijakú „POST hodnotu“ ani nemôže nastaviť, či poslať, lebo to je dotazovacia metóda HTTP protokolu (myslené dotaz prehliadača na server). Je to v tom odkaze, ktorý si už dostal (http://cs.wikipedia.org/wiki/POST).
Neexistuje nejaká iná, špeciálna, „POST hodnota“ s inými účinkami, ktoré nevieš ani špecifikovať, visiaca niekde mimo reality.

JÁ NEVÍM JSEM ZAČÁTEČNÍK. POPISUJI DETAILNĚ ČEHO CHCI DOCÍLIT UŽ PO NĚKOLIKATÉ.
Ak si začiatočník, tak si najprv pozri tie odkazované články - možno pochopíš, v čom je ten tvoj opakovaný dotaz nezmyselný.
Joker
Profil
snazimse [#24]:
Jak jsem už psal, v dříve odkázaném článku jsem se snažil věnovat dost prostoru vysvětlování, že takhle to nefunguje a něco takového není možné.

PHP skript odešle stránku do prohlížeče a skončí. Na konci skriptu zaniknou i hodnoty proměnných. Nastavovat je potom není možné, protože už neexistují. I kdyby taková možnost existovala, stejně to bude k ničemu, protože skript skončil a není nic, co by tu hodnotu mohlo zpracovat.
snazimse
Profil
_es:
Dobře no,díky


Joker:
No ,ale když jsem nastavil ,tak to funguje.

<?php $_POST['value'] = 'NOVA HODNOTA'; ?>

Tak jsem předal post na další stránku,kde jsem nastavil výše uvedený kod.
Tak pak když se redirectovalo na tu stránku kde jsem to chtěl předat ten kod,
tak se mi podle toho hned nastavila ta hodnota na novou post.Viz výše.

Akorát,že to nejde nastavit na onlick.Tak jsem myslel,že by to mělo jít.

Děkuji za trpělivost vás obou!
_es
Profil
snazimse:
No ,ale když jsem nastavil ,tak to funguje.
<?php $_POST['value'] = 'NOVA HODNOTA'; ?>
„Funguje“ to len tak, že po tomto príkaze máš v $_POST['value'] namiesto „POST hodnoty“ odoslanej z prehliadača (napríklad z inputu s name=value) text 'NOVA HODNOTA'. Praktický význam takého niečoho je pochybný - možno tak pre testovanie PHP skriptu, ako by sa choval, ak by prijal iné hodnoty z prehliadača, než naozaj prijal. $_POST je určené na čítanie, nie na zapisovanie, vidíš snáď v oficiálnej dokumentácii (http://php.net/reserved.variables.post), že by tam bolo radené nejaké hodnoty prepisovať?
snazimse
Profil
_es:
Dobře,ale nechápu proč.

JS nebo ajaxem,by to mělo jít za chodu,upravit.

Když to bude někdo potřebovat,tak má smůlu?

Díky!
_es
Profil
snazimse:
JS nebo ajaxem,by to mělo jít za chodu,upravit.
Ako „za chodu“? Prečo si si poriadne neprečítal ten odkazovaný článok základného kurzu? Ten PHP skript je vtedy už skončený - ako ho chceš po jeho skončení „za chodu“ meniť? To sa ti pokúšal,´už viac krát, vysvetliť aj Joker. Snáď si už mohol, z napísaného, pochopiť, že „POST hodnota“ je meniteľná v prehliadači, ešte predtým, než prehliadač HTTP POST dotaz odošle a nie potom, či dokonca nejako, ktovie ako, na serveri. Možno sa ti zíde si niečo prečítať o cookies, alebo o nejakých iných spôsoboch ukladania dát na serveri či v prehliadači.

Když to bude někdo potřebovat,tak má smůlu?
Nikto asi nepochopil, čo by mal niekto vlastne „potrebovať“. PHP skript má na ukladanie dát počas behu skriptu možnosť použiť normálne vlastné premenné - netreba prepisovať globálne premenné určené PHP interpretom na čítanie. Ak majú byť nejaké hodnoty dostupné aj po skončení PHP skriptu, tak ich možno uložiť v databáze, či do nejakého súboru na serveri.
« 1 2 »

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: