lefsaker Skrevet 16. oktober 2009 Del Skrevet 16. oktober 2009 Holder på med en nettbasert applikasjon som lar brukere skrive dokumenter, og lagre de i databasen. Sånn som det er nå, må brukeren manuelt klikke på en knapp for å lagre det de har skrevet. Det jeg ønsker er at en javascript/AJAX-funksjon ligger i bakgrunnen og hele kjører et mysql_query som oppdaterer databasen med informasjonen fra tekstfelte uten at brukeren behøver å gjøre noe som helst. Omtrent som Gmail's måte å autosave drafts på. Har søkt meg halvt ihjel, men finner bare henvisninger til cron og event manager :< Hva bør jeg søke etter? Hvilket rammeverk anbefales? Lenke til kommentar
JohndoeMAKT Skrevet 16. oktober 2009 Del Skrevet 16. oktober 2009 setTimeout() i JavaScript? Lenke til kommentar
cbastus Skrevet 16. oktober 2009 Del Skrevet 16. oktober 2009 Som JohndoeMAKT sa: setTimeout() Her er en fin innføring: http://www.w3schools.com/JS/js_timing.asp Lenke til kommentar
lefsaker Skrevet 17. oktober 2009 Forfatter Del Skrevet 17. oktober 2009 (endret) Har lest litt nå, og når jeg kjører følgende kodesnutt, utfører den handingen bare 1 gang. <?php $c = "1"; ?> <script type="text/javascript"> function timedCount() { document.getElementById('txt').value="<?php echo $c; $c = $c + "1"; ?>"; setTimeout("timedCount()",1000); } function doTimer() { timedCount(); } </script> Tekstboksen txt stopper på 1. Jeg forstår ikke hva som er galt Endret 17. oktober 2009 av lefsaker Lenke til kommentar
JohndoeMAKT Skrevet 17. oktober 2009 Del Skrevet 17. oktober 2009 Hva er det du ønsker at skal skje? Husk at PHP kjører på serveren mens JavaScript kjører hos klienten. Du kan ikke få PHP kjørt i samme request etter at klienten har mottatt all dataene. Lenke til kommentar
lefsaker Skrevet 17. oktober 2009 Forfatter Del Skrevet 17. oktober 2009 (endret) Jeg ønsker følgende egentlig: <script type="text/javascript"> function timedCount() { <?php $innhold = //Innholdet i textarea uten at brukeren submitter formen mysql_query("update tabell set innhold='$innhold'"); ?> setTimeout("timedCount()",1000); } function doTimer() { timedCount(); } </script> Men det er tydelig vis ikke så enkelt Endret 17. oktober 2009 av lefsaker Lenke til kommentar
JohndoeMAKT Skrevet 17. oktober 2009 Del Skrevet 17. oktober 2009 Skriv med vanlige ord hva du ønsker at skal skje. Du har tydeligvis også ikke sett skillet mellom PHP og JavaScript. Når PHP er ferdig med å prosessere tråden kan den ikke fortsette eksekveringen senere. Lenke til kommentar
lefsaker Skrevet 17. oktober 2009 Forfatter Del Skrevet 17. oktober 2009 Siden inneholder henholdsvis en textbox (title), et textarea (content), og en submit-knapp. Dersom brukeren klikker på submit-knappen, sendes skjemaet, og et mysql_query blir utført som oppdaterer databasetabellen med title og content. Foreløpig null problem. Problemet oppstår derimot om brukeren har skrevet et relativt langt dokument uten å lagre manuelt i løpet av skriveperioden. Om brukeren feks. skulle miste nettilgangen, eller navigere seg til en annen side uten å lagre manuelt, forsvinner alt brukeren har skrevet. Det jeg ønsker er et script som konstant kjører i bakgrunnen, og utfører et mysql_query som oppdaterer databasen med det brukeren har skrevet i feltene, uten at brukeren selv trenger å gjøre noe. Lenke til kommentar
JohndoeMAKT Skrevet 17. oktober 2009 Del Skrevet 17. oktober 2009 (endret) JavaScript kan ikke kjøre PHP-kode. PHP-kode utføres på serveren mens JavaScript utføres hos brukeren. JavaScript kan derfor selvsagt ikke kjøre mysql_query til en database på serveren. Dette er måten du gjør det: var contentElement; function pushData() { if (!contentElement) { contentElement = document.getElementById('content-element'); } doAjax(contentElement.value); setTimeout(pushData, 30000); } } setTimeout(pushData, 30000); doAjax-funksjonen sender et AJAX-POST med innholdet til serveren hvor PHP kan lagre innholdet i databasen. Endret 17. oktober 2009 av JohndoeMAKT Lenke til kommentar
TheClown Skrevet 17. oktober 2009 Del Skrevet 17. oktober 2009 (endret) Jeg gjør akkurat det som står her. Har et script som kjøres hvert 5 sekund og i php-scriptet mitt kobles den til en db med timestamp for siste lagring. Dersom det er over, eller akkuat 60 sekunder siden *save* Mine scripts. Ignorer thomas(), det er det scriptet som kjøres hver gang siden lastes. http://pastebin.com/f406cc496, send PM dersom du trenger mer hjelp, sleit mye med å få til dette scriptet Endret 17. oktober 2009 av TheClown 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å