Rupal Skrevet 19. juli 2007 Del Skrevet 19. juli 2007 (endret) Helo ppl! Prøver å lage meg et kommentarsystem slik at hver av innleggene jeg legger ut i min blogg, får kommentarer knyttet til seg. Jeg har et par problemer med dette som jeg håpet noen kunne hjelpe meg med. Har før implementert det bare vha av PHP (og tekstfil). Nå tenkte jeg å kunne bruke javascript i tillegg for å kunne legge til kommentar uten at hele siden oppdateres. Jeg har lagd php-funksjoner som legger til og leser ut kommentarer fra tekstfila. Jeg har lagd slik at en metode i javascript-fila blir kalt, on submit: // JavaScript Document var xmlHttp function makeComment(newsid,navn,kommentar,epost) { xmlHttp=GetXmlHttpObject() if (xmlHttp==null) { alert ("Browser does not support HTTP Request") return } var url="index.php" url=url+"?newsid="+newsid+"&navn="+navn+"&kommentar="+kommentar+"&epost="+epost xmlHttp.onreadystatechange=stateChanged xmlHttp.open("GET",url,true) xmlHttp.send(null) } function stateChanged() { if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { document.getElementById("txtHint").innerHTML=xmlHttp.responseText } } function GetXmlHttpObject() { var xmlHttp=null; try { // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(); } catch (e) { //Internet Explorer try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } } return xmlHttp; Denne fila kaller som dere ser index.php som inneholder en del funksjoner. Tekstfilen er separert med en string, la oss si *|*. Så hver kommentar lagres ca sånn: innlegg-id *|* navn *|* kommentar *|* epost Når jeg skal lese ut kommentarene leser jeg da inn hver linje. Når jeg første gang går inne på kommentarsiden, fyller ut og sender av gårde, så kommer det fram, og blir skrevet. Men dersom jeg rett etter fyller ut og skriver igjen og submit, så legger hele linja rett etter den gamle, på samme linje. Dette gjør at jeg får problemer når jeg skal lese ut f.eks alle kommentarene som hører til innlegg med id 5. Dette skjedde ikke når jeg brukte bare php. Da kom hver kommentar på ny linje. Noen forslag til hva som gjøres? her er funksjonen som skriver en kommentar til tekstfila dersom dere skal se litt på den: function skrivKommentar($brukernavn,$kommentar,$epost,$nid){ if(get_magic_quotes_gpc) { $brukernavn = stripslashes($brukernavn); $kommentar = stripslashes($kommentar); } $replace = array("\r\n" => '', "\t" => ''); $brukernavn = strtr($brukernavn, $replace); $kommentar = strtr($kommentar, $replace); $dato = "".date("d/m.Y - H:i "); $altsammen = $nid.'*|*'.$dato.'*|*'.$brukernavn.'*|*'.$kommentar.'*|*'.$epost; $myFile = "entries.comments.php"; $fh = fopen($myFile, 'a') or die("can't open file"); fwrite($fh, $altsammen); fclose($fh); } Håper noen kan hjelpe. Er så nær en løsning, men likevel så fjernt.. Endret 19. juli 2007 av LBoN Lenke til kommentar
Rupal Skrevet 19. juli 2007 Forfatter Del Skrevet 19. juli 2007 Okei folkens, beklager at jeg var så dum! Det løste seg ved at jeg bare la inn en linjeskift helt på slutten av linja før jeg skrev det til tekstfila. Men det kommer et annet spørsmål. Hvordan kan man sørge for at hvis noen trykker på oppdater knappen så blir ikke kommentaren lagt inn på nytt? Lenke til kommentar
magicgunnar Skrevet 20. juli 2007 Del Skrevet 20. juli 2007 Hvordan kan man sørge for at hvis noen trykker på oppdater knappen så blir ikke kommentaren lagt inn på nytt? 9101248[/snapback] Tror du har to muligheter: 1. I php kan du sørge for at om to helt like innlegg kommer, så blir det siste ignorert. 2. Du kan disable metoden eller knappen i javascriptet som kaller ajaxfunksjonen din, det enkleste her er vel å endre verdiene til knappen som trykkes første gang den trykkes slik at den ikke responderer på klikk, det andre er å erstatte function makeComment med en annen funksjon som ikke gjør noe som helst. Lenke til kommentar
Rupal Skrevet 20. juli 2007 Forfatter Del Skrevet 20. juli 2007 Høres ut som ålreite forslag, selv om punkt nr 1 virker enklest. Men jeg syns å ha lest et eller annet sted om at man liksom kan tømme eller fjerne dataen som blir sendt fra formen, slik at man ikke kommer så langt som til php-filen i det hele tatt. (Sparer vel tid og ressurser). Man får bare beskjed om at dataen har blitt gammel e.l. Er jeg bærtur eller finnes dette? Noen som vet om hva jeg snakker om ? Lenke til kommentar
magicgunnar Skrevet 20. juli 2007 Del Skrevet 20. juli 2007 Høres ut som ålreite forslag, selv om punkt nr 1 virker enklest. Men jeg syns å ha lest et eller annet sted om at man liksom kan tømme eller fjerne dataen som blir sendt fra formen, slik at man ikke kommer så langt som til php-filen i det hele tatt. (Sparer vel tid og ressurser). Man får bare beskjed om at dataen har blitt gammel e.l. Er jeg bærtur eller finnes dette? Noen som vet om hva jeg snakker om ? 9106950[/snapback] Det finnes helt sikkert, er kanskje bare å sette formName.value = ''; i javascriptet? Da vil vel innholdet forsvinne? Lenke til kommentar
WiRRE Skrevet 6. august 2007 Del Skrevet 6. august 2007 Er bare å bruke: document.getElementById("[inputformID]").value=''; Såklart erstatt verdien med id'en på formen folk skriver inn i... sleng dette på etter response funksjonen din.. det finnes sikkert en måte å dissable knapper på, men det holder sikker å mulle ut verdien i texarea feltet ditt.. er ikke sikker på om det er "value" i texarea, men det finner du vel ut på google... Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå