#17 noris
Prideme na to pomalicky ;)
Skus:
data: {id: JSON.stringify(pchecked)},
Tak tak, ako pise Peter.
Mozno by stacilo aj nieco taketo: (prepokladam, ze mas nejaky button a chces mat v nom ikonu?)
HTML:
<a href="#" id="button" class="anim">Linka</a>
CSS:
#button {
display: block;
height: 30px; // vyska obrazku + okraj
line-height: 30px;
padding-left: 30px; // sirka obrazku + okraj
}
.anim {
background: url(anim.gif) no-repeat left top;
}
.noanim {
background: url(noanim.gif) no-repeat left top;
}
javascript (jQuery):
$(document).ready(function() {
setTimeout(function(){
$("#button").removeClass(".anim").addClass(".noanim");
},3000);
$("#button").on("click", function(e) {
$("#button").removeClass(".noanim").addClass(".anim");
});
});
Snad by ti to mohlo fungovat. Ostatne si uz musis dojest sam ;)
#5 asija
A kde si to nastavil? V gife? Necitas pozorne?
Riadit prehravanie gifu v browseri NEJDE!
Vytvor si 2 obrazky, 1 animovany a 1 staticky. Najprv zobraz animovany, potom po uplynuti casu ho nahrad tym statickym.
Po kliknuti na odkaz zase nahrad obrazok animovanym.
#3 asija
Nijaky iny sposob ako zastavit animaciu v gife nexistuje. Animacia prebieha priamo v obrazku a o jeho renderovanie sa stara browser. Neviem o nicom, ako by si mohol vstupit do obrazku a jednoducho zastavit jeho animaciu.
A uz vobec nie bez javascriptu.
#1 asija
Tatko google vravi, ze tu mas odpoved:
http://stackoverflow.com/questions/19171075/how-to-stop-an-animated-gif-from-looping
A ide sa na to takto:
http://bit.ly/1gBjvFu
#5 Row
Samozrejme, pokial mas nastaveny spravne scope a uzivatel ti odsuhlasi ze mozes vidiet jeho email pri autentifikacii tvojej fb app, vtedy ti facebook email posle.
(napr. tu to mam tak riesene, skus: http://www.krestan.sk/user/auth)
#3 Row
Ze si to ty:
http://stackoverflow.com/…-on-facebook
Zvlastnu pozornost by som venoval tomuto:
You are doing it right, but the email will only be displayed for the users who have set their privacy options for their emails to be shown to all, otherwise it wont display you the email of the user.
Standardne by mala funkcia nieco prijat ako parameter a nieco vratit ako vysledok:
def secti(x):
x += 1
return x
Python je pre mna tiez novy, ale vyguglil som pre teba toto:
scitani = Button(okno, text='+1', command=secti: action(x))
#6 tribalcz
Gugl vravi toto:
http://stackoverflow.com/questions/2621583/can-i-use-javascript-regular-expression-in-php-as-it-is
Iba tolko, aby ti to v pripade, ze najprv uzivatel nezada nic, vypisalo hlasku, ze je to povinne pole, v pripade, ze sa opravi, napise to ok, ak je zly email, namiesto ok to napise nespravny email, ale vzapati to prepise na ok, lebo je pole vyplnene...
Teda iba osetrit vsetky moznosti.
Skus prehodit namiesto:
function mf(x){
$(document).ready(function(){
...
});
};
daj:
$(document).ready(function(){
function mf(x){
...
}
});
Okrem toho by som ti skor doporucoval uplne vyhodit javascript z html a odchytavat kliknutia ako eventy:
$(document).ready(function(){
$("option").on("click", mf($(this).val()));
function mf(x){
...
}
});
Mas to tam dost krizom krazom pomiesane, doporucujem trosku pred kodovanim popozerat, ako to robia velki chlapci. Napr. id="1", skus radsej id="nieco1" (http://stackoverflow.com/…id-as-number)
Dalej, ked chces odchytit zmenu v select boxe, t.j. ktory option je zvoleny, tvoje riesenie nezachyti zmenu klavesnicou, iba kliknutie. Na to sa lepsie hodi $("select").on("change")...
K objednavke si ulozis informaciu do db (napr. stlpec `zobrazene`), pripadne ak mas viac uzivatelov, co to mozu vidiet, tak nejaku tabulku (napr. zobrazene_objednavky), kde ulozis pary many to many relacie, napr:
Tabulka zobrazene_objednavky:
id_objednavky (int)
id_uzivatela (int)
timestamp (datetime)
Potom ostava uz iba nieco ako:
SELECT * FROM objednavky WHERE id NOT IN (SELECT id_objednavky FROM zobrazene_objednavky WHERE id_uzivatela = $id_uzivatela)
Pokial si riadne autentifikovany a mas v session ulozeny stav (napr. napr. priamo rola=admin, prihlaseny=true, kazdy request, ktory odide (aj ajax) bude pouzivat tuto session.
Staci ti potom zavolat vzdy na zaciatku nejaku jednoduchu metodu na overenie, napr:
function delete($table, $id) {
if (isAdmin()) {
// delete action
}
}
Overenie bude vyzerat nejako takto:
function isAdmin() {
if ($_SESSION["prihlaseny"] == true && $_SESSION["rola"] == "admin")
return true;
}
Takze potom v javascripte by som to riesil nejak takto (jQuery)
$(".smazat").on("click", function() {
$.get($(this).href(), function(data) {
$('.result').html(data);
alert('Zaznam bol zmazany');
});
})
Za predpokladu, ze html vyzera nejak takto:
echo '
<div class="zprava" id="'.$a.'">
<span class="text">"'.$b.'"</span>
<a href="api.php?controller=tablename&action=delete&id='.$a.'" class="smazat">smazat</a>
</div>
';
Subor api.php by mohol vyzerat napr. takto:
switch ($_GET["action"]) {
case "delete":
delete($_GET["controller"], $_GET["id"]); // doporucujem este osetrit na zaciatku scriptu proti sql injection
break;
case "edit":
edit();
break;
a tak dalej..
}
Overenie isAdmin, pripadne hasRole("delete") si mozes potom implementovat aj v tom api.php aby si to nemusel zakazdym volat v jednotlivych metodach.
Celkovo by sa to dalo postavit jednoducho, ale aj zlozito.. Ale ako urcenie smeru ti to dufam staci.
#12 Danek
Odporucam najskor zaklady:
Ako naplnim premennu?
Ty najskor vypises obsah prazdnych premennych, a az potom ich plnis.
Prehod si poradie.
Teda najprv:
$jmeno = $_POST['jmeno'];
$prijmeni = $_POST['prijmeni'];
$trasa = $_POST['trasa'];
$sex = $_POST['sex'];
$den = $_POST['den'];
$mesic = $_POST['mesic'];
$rok = $_POST['rok'];
A az potom:
$text = "".$jmeno." \n ".$prijmeni." \n ".$trasa." \n ".$sex." \n ".$den." \n ".$mesic." \n ".$rok."";
A vela studuj!
Chcelo by to trosku nastudovat veci ohladom autentifikacie, prihlaseny uzivatel, ktory ma prava na dane operacie operacie (CUD) by mal byt nejak standardne autentifikovany a stav prenasany v session. Potom samozrejme kazde overenie by malo prebiehat interne, nemusi sa posielat v GET, ci POST, kto robi zmeny. Samozrejmostou je SSL.
Ina situacia je ovsem vtedy, ak by si ten script chcel pouzit ako webservis, povedzme pre mobilnu aplikaciu, ale to je tiez asi trosku vyssia skola. Tam musi byt nejaky auth session key, ktory sa ziska pri logine a potom sa posiela s kazdym requestom.
Kazdopadne, ja by som to riesil nejakym REST servisom. Usetris si kopec casu a nervov, ked budes chciet jedneho dna riesit nejaku mobilnu aplikaciu, pripadne nejake realtime zmeny na webovom frontende (websockets).
Teda pre zhrnutie, skus urobit nejake REST API, ktore budes volat formou https://domain/…er/action/id (napr: https://domain/…ele/delete/4). Samozrejme aby to bolo take nice, musis pouzit mod_rewrite, inak to bude vyzerat napr. takto: https://domain/api.php?controller=uzivatele&action=delete&id=4
Pomohlo?
Tak, ako ti napisal Peter + musis sa naucit pouzivat debugovanie = vypis premennych pocas behu v scripte.
Ten najednoduchsi sposob je jednoduche echo/print_r()/var_dump(), zlozitejsie do buducna napr. pouzitie niektorej debug kniznice (http://coding.smashingmagazine.com/…l-php-tools/)
Co sa tyka zmeny databazy z javascriptu, tu by som urcite nesiel touto formou (parameter k obrazku), lebo staci, ze na strane servra nebudu korektne img hlavicky a o prekvapenie je postarane.
Namiesto toho treba pouzit asynchronny request - ajax (idealne skus napr. jQuery kniznicu a $.post()
Javascript sa da tiez pekne debugovat cez console.log (vysledok uvidis po stlaceni F12 v browseri).
Cize skor, ako ti najst chybu volim naviest ta na programatorske praktiky, ktorymi si ulahcis hladanie chyb a naucis sa debugovat vlastne scripty sam.
Na taketo realtime veci kde je mnozstvo uzivatelov treba pouzit nejake sikovne node.js riesenie:
http://lmgtfy.com/?…
http://onedayitwillmake.com/…ing-node-js/
Na to ovsem treba uz vlastny server. Pripadne mozes skusit niektory z free node.js cloudovych servrov:
Narocnost: myslim na manipulaciu so src.
Menej narocne je vymenit poziciu elementov.
Pri zmene src si totiz browser zakazdym vlozi do DOM novu instanciu obrazka. Ked poklikas par sto krat, budes mat v pamati ovela viac, ako nejakych par kB kodu jQuery
Peter, tvoj script dajak nefunguje. Navyse je to trosku narocnejsie na DOM.
Tu je sice jquery, ale ciste a jednoduche riesenie.
http://jsfiddle.net/…sko/jsN9N/2/
<?php
header('Content-Type: text/html; charset=utf-8');
$query = urlencode("příliš");
header("location:https://www.google.cz/search?q=$query&aq=f&oq=$query&aqs=chrome.0.57j62l3.5837&sourceid=chrome&ie=UTF-8");
?>
U mna funguje, aj ked ten text korektne enkodujem. Google si ho po presmerovani spravne dekoduje,
Skus sa pozriet, ci mas spravne nastavene kodovanie scriptu, v ktorom manipulujes s tym suborom.
Dovolim si upriamit pohlad aj na webaplikacie, aplikacie beziace v okne prehliadaca.
Je ovela jednoduchsie nastavit si vyvojove prostredie aj testovat.
HTML5 a Javascript je jedina potreba, existuje spusta prikladov, kniznic, a hlavne ma tento pristup velku buducnost pre jeho multiplatformnost, multiuser a realtime environment a mnoho ineho.
To uz patri asi do ineho fora, ale predsa:
Na tento ucel je treba na webe urobit tzv. webservis: malinku aplikaciu, ktora bude pocuvat na nejakej URL, kam budeme z konzolovej aplikacie posielat request.
Moze to byt napr. jednoduchy php script, ktory zoberie parametre z URL (napr. typ_requestu, meno, sprava) a ulozi ich do suboru. (http://www.nieco.cz/webservis.php?…)
Ked chcem zistit, aka bola posledna sprava a kto ju ulozil, poslem iny request napr. http://www.nieco.cz/webservis.php?typ=posledny
a odpoved bude napr. Honza;7
Tvoja uloha je v konzolovej aplikacii vediet zavolat http request a precitat odpoved, ktoru ti posle. V Linuxe mozes vyuzit napr. "curl"
Samozrejme je to na dlhsie, webservisy maju svoje standardy, (REST, SOAP), ale na jednoduchy ucel mozes pouzit aj nieco ako som pisal vyssie. Doporucujem precitat nieco o JSON, umoznuje prenos poli, objektov a ma vacsie moznosti, ako iba prenost nejakeho textu, ktory potom treba este parsovat.
Pomohlo aspon nasmerovat?
Je viac sposobov ako na to, idealne je vytvorit si nejaku metodu na generovanie iba toho obsahu a potom ho volat asynchronne ajaxom. Ak ten online chat nepises v nejakom frameworku, potom je este moznost zavolat ajaxom celu stranku a zobrazit iba dany div. Moze pomoct napr. jQuery load() funkcia:
$('.chat').load('chatpage.php .chat');
urobi to, ze do .chat elementu vlozi iba .chat element zo stranky chatpage.phpč