AJAX, JavaScript (jQuery) in PHP za naročanje
4 naročniki
4 naročniki
Pozdravljeni,
Zanima me, kako bi lahko v spletno stran implementiral gumb za naročanje na projekt.
Osnovo že imam, torej, ko uporabnik klikne na gumb, se v MySQL bazo prenese njegova prošnja itd.
Bolj natančno pa me zanima, kako bi naredil funkcijo s pomočjo AJAX-a, da ko uporabnik klikne na gumb Naroči se (x) se le-ta spremeni v Odjavi se (x) (pri čemer se število x spremeni v število trenutnih naročnikov - preko PHP skripte) in obratno?
Če želite videti, kako sem vse izpeljal za zdaj, si oglejte tukaj.
Za preizkus se morate prijaviti:
Username: imojster
Geslo: 1234
11 odgovorov
Ker nisem mogel urediti, bom kodo objavil kar sem:
Naroči se:
<script type="text/javascript">
function subscribe(id) {
$.ajax({
url : "subscribe.php",
data: "IdPrj="+id,
type : "get",
success: function(){
window.location.reload();
}
});
return false;
}
</script>
<div onclick="subscribe(1);" class="btnSB">
Naroči se <span>(0)</span>
</div>
Odjavi se:
<script type="text/javascript">
function unsubscribe(id) {
$.ajax({
url : "unsubscribe.php",
data: "IdPrj="+id,
type : "get",
success: function(){
window.location.reload();
}
});
return false;
}
</script>
<div onclick="unsubscribe(1);" class="btnSB">
Odjavi se <span>(0)</span>
</div>
Kolikor vidim imaš vse že narejeno, samo v success moreš odstranit reload, spremeniti "Prijavi se" z "odjavi se" in pa onclick od diva spremenit iz subscribe na unsubscribe.
Zdej da se ti številka updata ti bo pa moral php vrnit tudi trenutno število naročnikov.
To najlažje narediš da funkcijam, ki skrbita za subscribe,unsubscribe daš en if, kateri preveri če je XMLHttpsRequest, naredi kar ima za narediti z bazo in vrne število naročnikov. Jaz navadno to kar z echo naredim (echo $stevilo uporabnikov oz. če hočeš več podatkov poslat echo jsonencode($stevilouporabnikov)). Potem pa v JS zadevo dobiš tako da successu daš variabilo (success: function(data){}). Zdej je samo odvisno kaj si poslal iz php-ja, se pravi če si uporabil json_encode. Če si ga, moreš parsat string z JSON.parse() in dobiš object ven, drugače je pa dovolj da zadevo samo daš v tisti span kjer hočeš imeti podatke o št. naročnikov.
Mal sem bluzil, upam da ti je jasno kaj sem hotel povedat. Če ti do večera ne rata ti lahko pomaga z dejansko kodo, prej me žal ne bo doma.
Disclaimer: Možne pravopisne napake. Obstaja možnost da sem kaj narobe rekel oz. spustil ampak mislim, da je to, to.
za take stvari priporocam stackoverflow.com
dobis res hitro odgovore...
sej ne da tle nebi kjer vedel, sam si tezko cas vzamemo
bom prechekiral malo poznej, ce bom utegnu
good luck
edit: oh me je s1l3 prehitu z odgovorom! zakon
s1l3: Tisto vrstico z reloadanjem strani sem spremenil v tole:
$('#btnSB').html("Odjavi se");
Vendar se tekst ne spremeni. Tisti div pa sem spremenil v:
<div onclick="subscribe(<?echo $_GET['id'];?>);" class="btnSB" id="btnSB">
<?
$sql=mysql_query("SELECT * FROM subscribes WHERE idPrj='".mysql_real_escape_string($_GET['id'])."'");
$subs=mysql_num_rows($sql);
?>
Naroči se <span id="cnt">(<?echo $subs;?>)</span>
</div>
Tisti del za refreshanje counterja mi pa ni bil jasen.
Mešetar:
za take stvari priporocam stackoverflow.comdobis res hitro odgovore...
sej ne da tle nebi kjer vedel, sam si tezko cas vzamemo
bom prechekiral malo poznej, ce bom utegnu
good luck
edit: oh me je s1l3 prehitu z odgovorom! zakon
No, ne učit krive vere.
Taka vprašanja na SO niso zaželjena, ker niso konstruktivna.
No, ti pa jst kot zgleden član SO povem, da vprašanj tipa "sprogrmiraj tole namesto mene" in "len sem kot fuks in se mi ne da pogooglat" nočemo in so tud zelo hitr zaprta in downvotana.
Tako da ne bi bilo v korist ne njemu, še manj pa SO.
me veseli, da si zgleden clan, take nucamo... jaz sem malo manj zgleden, priznam...zelo malo prispevam v smislu resevanja problemov drugim.... velikokrat pa odprem vprasanja, ki so precej ozka, komplicirana in ostanem tudi brez odgovora... tako da so malokrat koristna drugim... tu pa tam pa kaj pokomentiram in votam :(
prsezem, d ase bom bolj potrudil...mi je skoda da velikokrat pomagam komu direktno po forumih, kjer se teme pol izgubijo for ever, namesto na SOju :(
Če boš imel še kdaj kak specifičen problem, mi pošl link do vprašanja, pa bom pogledal, če lahko kako pomagam :) Da ne boš ostal brez odgovora. Vem pa, da se tudi to dogaja (tudi meni).
Sej, vprašat ni greh, o kakovosti vprašanja pa bo itak odločila skupnost. :)