Gå til innhold

[Løst] Sette inn ett ekstra tall i databasen


Anbefalte innlegg

Høres kanskje enkelt ut med tanke på overskiften, men det er det nok ikke.

 

Jeg laster inn alt av informasjon rundt en artikkel som er lagret på databasen jeg har slik at alt blir fint satt opp og artikkelen blir lett leselig på .php filen. Under artikkelen så har jeg laget en rute der man kan trykke på en stjerne hvis man likte artikkelen, og da ønsker jeg at det blir lagt på ett ekstra tall i databasen slik at jeg vet hvor mange det er som likte denne artikkelen.

 

Det vil si at jeg har en <img> som er stjernen og at jeg har satt ett javascript inn på onClick siden det er den eneste måten så langt som jeg vet er mulig. Når man trykker på dette bildet så skal javascriptet sørge for at "Pluss" variabelen i databasen blir plusset på med 1.

 

Har også kommet frem til at det ikke er nok med å bare bruke javascript, men må lære meg å bruke Ajax også for at dette skal være mulig siden det er bare den som kan dirigere serveren.

 

Synes selv at det blir bare mer og mer innviklet bare det å kunne få til dette.

 

Har klart å komme frem til første skrittet med å gjøre Ajax'n klar og deretter hvordan jeg klarer å motta innholdet fra databasen.

 

<script language="javascript" type="text/javascript">
<!-- 
//Browser Support Code
function ajaxFunction(){
var ajaxRequest;  // The variable that makes Ajax possible!
try{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
} catch (e){
// Internet Explorer Browsers
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
// Something went wrong
alert("Your browser broke!");
return false;
}}}}
//-->
</script>

Deretter javascript:

// Create a function that will receive data sent from the server
ajaxRequest.onreadystatechange = function(){
// We still need to write some code here
}

Database: nettside

Tabell: artikler

[Id][...][Pluss]

 

Håper noen kan litt om dette og kan hjelpe meg hvordan jeg skal skrive dette for å få det til. Som sagt så har jeg skrevet hva databasen heter ovenfor og ønsker å få plusset på "Pluss" i tabellen. Jeg vet ikke om jeg orker å lære om Ajax'n, synes det begynner å bli alt for mye, hehe... :ermm:

 

Finnes det en annen måte å gjøre dette på, så må jeg si at jeg foretrekker det isteded, hehe...

 

Vennlig hilsen FreeZeMan

Lenke til kommentar
Videoannonse
Annonse

Du må i alle fall bruke et rammeverk som gjør det enklere å bruke Ajax. Det er flere år siden folk sluttet å skrive sånn kode som det du viser der. jQuery er det jeg bruker.

 

Ellers finnes det nok mange tutorials som viser hvordan du tar imot et ajax-kall på serversiden med PHP. Og i det PHP-scriptet skal du jo bare lagre verdien i databasen.

 

Noen som har gjort akkurat dette kanskje, som kan hjelpe med noen detaljer?

  • Liker 1
Lenke til kommentar

Du må i alle fall bruke et rammeverk som gjør det enklere å bruke Ajax. Det er flere år siden folk sluttet å skrive sånn kode som det du viser der. jQuery er det jeg bruker.

 

Ellers finnes det nok mange tutorials som viser hvordan du tar imot et ajax-kall på serversiden med PHP. Og i det PHP-scriptet skal du jo bare lagre verdien i databasen.

 

Noen som har gjort akkurat dette kanskje, som kan hjelpe med noen detaljer?

Det er bra at du nevner at det er gammeldags, for jeg ønsker heller å bruke jQuery istedenfor Ajax da. Håper du da kan hjelpe meg med dette :innocent:

 

Det er jo bare noen dager siden jeg startet med å bruke det og har "installert det" med .js filen. Måtte bruke det for å fikse til en egen skriveside som gjorde alt så mye enklere. Holder selv på med å lære akkurat dette. Selv om det kan ta litt tid, så har jeg ingenting imot hjelp selvsagt, alt vil gå så mye raskere da ;)

Endret av FreeZeMan83
Lenke til kommentar

Da klarte jeg det selv til slutt, takker så mye for jQuery :dribble:

Men må jo alltid skrive ned svaret før jeg slutter av her.

 

id til <img> ble satt til "pluss" og fikset til en ny .php side som heter for Pluss.php som får lagret variabelen inn i databasen. (Skal prøve få fikset til at jeg kan få brukt Data.php isteded som lagrer funksjoner jeg ellers bruker når jeg får lært meg hvordan)

 

$(document).ready(function() {
  $("#pluss").click(function(event){
    $.post('Pluss.php', { pluss: 1 } );
 });   
});

Lenke til kommentar

Jeg ønsker som sagt ikke å starte en ny tråd, men fortsetter bare på den som jeg allerede har laget her. Driver på å søker på nettet, men sliter med å finne svaret på noe som sikkert er veldig enkelt for de som driver på med javascript fra før av.

 

Jeg ønsker som sagt at etter at man har trykket en gang, så skal det ikke være mulig for de å trykke flere ganger på den. Prøver å fikse til med "if" i koden som allerede er skrevet, men så lenge jeg setter en verdi på en variabel, så blir jo den verdien bare gjentatt uansett hva jeg gjør.

 

Håper noen kan hjelpe meg med koden for å få sørget for at det bare er mulig for personen å trykke kun en gang, dette blir i følge av Brukernavnet personen bruker som er lagret i $_SESSION. Men du trenger ikke å fokusere noe på det, jeg skal ha lært meg nok om det til jeg kommer dit.

 

Håper du skjønte hva jeg skrev her, hehe... Er ikke alltid så flink til å ordlegge meg riktig :blush:

Lenke til kommentar

Vil du begrense det til en stemme per artikkel per bruker per session, eller en stemme per artikkel per bruker, på tvers av alle sessions? Er brukerne logget på, sånn at du kan identifisere dem? I så fall kan du lagre hvem som allerede har avgitt stemmer i databasen din. Hvis ikke kan du vurdere å bruke cookies som lagres hos brukeren, men det blir ingen 100% løsning (dvs. det går an å jukse).

 

Ikke helt sikker på hvordan folk foretrekker å gjøre dette her for tiden...

Lenke til kommentar

Vil du begrense det til en stemme per artikkel per bruker per session, eller en stemme per artikkel per bruker, på tvers av alle sessions? Er brukerne logget på, sånn at du kan identifisere dem? I så fall kan du lagre hvem som allerede har avgitt stemmer i databasen din.

Jeg har fikset det slik at man kan logge seg på for å kunne skrive i forumet + skrive artikler. Og har derfor tenkt å gjøre det slik at det bare er mulig for de som er logget på til å kunne stemme på de forskjellige artiklene som er der. Det gjør det så mye enklere.

 

Ønsker at det bare skal være mulig å gi 1 stemme per artikkel, per bruker. Og fikser til som du nevner at jeg lager en ekstra tabell i databasen så jeg skal vite hvem som har gitt en stemme.

 

Så php & sql er enkelt for meg å fikse, det er den forbaskende javascripten som ikke er så enkel som jeg hadde håpet på, hehe...

Endret av FreeZeMan83
Lenke til kommentar

Eneste måtte være om du skal fjerne klikk-muligheten etter at brukeren har klikket, og det kan du gjøre ved å settet onclick til null i selve onclick-handleren (mener jeg).

Det er nettopp den biten jeg sliter med, og den omhandler jo javascript koden. $("#pluss") er bare id'n til <img> og sliter med å få stoppet .click funksjonen i javascriptet.

$(document).ready(function() {
  $("#pluss").click(function(event){
    $.post('Pluss.php', { pluss: 1 } );
 });   
});

Prøvde å bruke if i scriptet, men slet litt for mye med variablene. Så jeg prøver å lese meg til nøyaktig hvordan det fungerer. Trist at jeg kan for lite om javascript :hmm:. Men kommer som sagt til å bruke mye tid med det fremover, veldig kjekt å ha mye kunnskaper rundt det også, spesielt jquery funksjonene ;)

 

Men klarer vel å stoppe at det ikke blir flere stemmer så lenge databasen allerede har registrert hvem det er som har gjort det, spørsmålet blir vel mer om det er mulig å bare få stoppet scriptet slik at f.eks den samme meldingen ikke dukker opp igjen som forteller at personen nå har avgitt sin stjerne til artikkelen eller hva jeg nå skal skrive for det, hehe...

Endret av FreeZeMan83
Lenke til kommentar

Det er nettopp den biten jeg sliter med, og den omhandler jo javascript koden. $("#pluss") er bare id'n til <img> og sliter med å få stoppet .click funksjonen i javascriptet.

$(document).ready(function() {
  $("#pluss").click(function(event){
    $.post('Pluss.php', { pluss: 1 } );
 });   
});

Jeg tenker noe sånn som dette skal gjøre susen:

 

$(document).ready(function() {
  $("#pluss").click(function(event){
    this.click = null; // fjerner click-handleren på elementet første gang det klikkes
    $.post('Pluss.php', { pluss: 1 } );
 });   
});

Lenke til kommentar

Satt det opp akkurat slik du visste med den ekstra koden, "this.click = null;":

$(document).ready(function() {
  $("#pluss").click(function(event){
    this.click = null; // fjerner click-handleren på elementet første gang det klikkes
    $.post('Pluss.php', { pluss: 1 } );
 });   
});

 

Men virket akkurat som den gjorde fra før av. Klikket 3 ganger på den, og 3 ekstra stemmer dukket opp, hehe...

 

Er det på grunn av at jeg ikke har brukt onClick på <img> og istedet bruker <img id="pluss">?

Endret av FreeZeMan83
Lenke til kommentar

Er det på grunn av at jeg ikke har brukt onClick på <img> og istedet bruker <img id="pluss">?

Nei, det er nok heller jeg som ikke vet helt hva jeg snakker om. Nå har jeg funnet noe som fungerer:

 

$(document).ready(function() {
   $("#pluss").click(function(event){
     $(this).unbind('click');
     $.post('Pluss.php', { pluss: 1 } );
   });   
});

Endret av torbjørn marø
  • Liker 1
Lenke til kommentar

$(document).ready(function() {
   $("#pluss").click(function(event){
     $(this).unbind('click');
     $.post('Pluss.php', { pluss: 1 } );
   });   
});

Superb :new_woot:

 

Dette fungerte perfekt, takker så mye, nå vil alt ordne seg fremover. Takker for din kunnskap rundt javascripten :thumbup:

 

Nå er det bare å satse på at jeg ikke kommer borti så mye mer rundt javascripten før jeg har lært meg nok om det selv, hehe...

Endret av FreeZeMan83
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...