AJAX, JavaScript (jQuery) in PHP za naročanje
 
powerzan 28. feb 2013 22:00:00 Pridružen od:
20. feb 2012
113 objav
77 19 2
#1

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


všeč(0) ni všeč(0) spam(0)
 
powerzan 28. feb 2013 22:14:39 Pridružen od:
20. feb 2012
113 objav
77 19 2
#2

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>
všeč(0) ni všeč(0) spam(1)
 
powerzan 1. mar 2013 13:26:03 Pridružen od:
20. feb 2012
113 objav
77 19 2
#3

Ali res nihče ne ve?


všeč(0) ni všeč(0) spam(0)
 
s1l3 1. mar 2013 13:45:33 Pridružen od:
6. jun 2012
345 objav
320 60 1
#4

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.


všeč(3) ni všeč(0) spam(0)
 
Mešetar 1. mar 2013 13:47:06 Pridružen od:
24. nov 2010
1543 objav
1945 962 114
#5

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


všeč(1) ni všeč(0) spam(0)
 
powerzan 1. mar 2013 23:42:44 Pridružen od:
20. feb 2012
113 objav
77 19 2
#6

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.


všeč(0) ni všeč(0) spam(0)
 
technolog 2. mar 2013 00:31:50 Pridružen od:
14. nov 2011
598 objav
768 300 22
#7

Mešetar:

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




No, ne učit krive vere.



Taka vprašanja na SO niso zaželjena, ker niso konstruktivna.


všeč(1) ni všeč(0) spam(0)
Z linuxom že 7 let. Pro web development.
 
Mešetar 2. mar 2013 06:23:06 Pridružen od:
24. nov 2010
1543 objav
1945 962 114
#8

hehe ... saj nisem razlagal, kaj je v korist SO ampak kaj je bolj njemu v korist ;)


všeč(0) ni všeč(0) spam(0)
 
technolog 2. mar 2013 09:09:04 Pridružen od:
14. nov 2011
598 objav
768 300 22
#9

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.


všeč(0) ni všeč(0) spam(0)
Z linuxom že 7 let. Pro web development.
 
Mešetar 2. mar 2013 09:24:26 Pridružen od:
24. nov 2010
1543 objav
1945 962 114
#10

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 :(


všeč(3) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se