Jeg ønsker nu at ændre dette således at data ikke bliver udskrevet i en alert box, men bliver gemt i min database.
alert(document.textform.rte1.value); skal derfor ændres til:
<? $sql = "UPDATE content SET text1='document.textform.rte1.value' WHERE menuid = '$menuid'"; ?>
Jeg er usikker på hvordan sql sætningen skal smeltes ind i javascriptet og hvordan indholdet af formen 'document.textform.rte1.value' skal indgå i sql sætningen således at sql kan læse denne.
der er én ting du skal tage højde for - og det er at SQL er noget der skal køre serverside sammen med ASP/PHP hvorimod at javascript kører clientsite. Det vil sige at du ikke kan få javascript til direkte at skrive i databasen så det du forsøger er reelt set umuligt!
Det du i stedet kan gøre - måske - er at lave en skjult iframe der bliver opdateret af din javascriptkode og indholdet i iframen svarer til den PHP/SQL kode du vil have kørt og når den kode er kort korrekt (eller ikke korrekt) kan du kaste en javascript-alert eller andet tilbage
Ok, kan du hjælpe mig med at sende javascript data over i en iframe, da jeg ikke har prøvet at lave en iframe før?
Jeg går ud fra at jeg skal have variablen til at kalde en iframe: onchange="skjult.location = 'updatedb.php?value'+document.textform.rte1.value;"> <iframe name="skjult" style="height:0px;width:0px;border:0px;"></iframe>
updatedb.php (iframen)skal så indeholde:
<? opendb(); $sql = "UPDATE content SET text1=$_GET['value'] WHERE menuid = '$menuid'"; if (!mysql_query($sql)) { msgbox("Database fejl under processen, prøv igen!"); closedb(); } closedb(); } ?>
Næh, så submitter du bare formen med text-feltet og aflæser den i dit php-script !-)
-- men det kan også gøres ved at submitte indholdet ved at have den form, som submittes i en iframe, som er skjult, og så vil brugeren ikke opleve at siden reloader ...
Ja, hvis du skal overføre data, kan det kun gøres med en submit af en form, men så længe det sker fra en skjult iframe, vil det ikke påvirke resten af siden !-)
Alternativet er jo, at du simpelthen submitter dokumentet ...
<script language="JavaScript" type="text/javascript"> function submitForm() { //make sure hidden and iframe values are in sync before submitting form //to sync only 1 rte, use updateRTE(rte) to sync all rtes, use updateRTEs //updateRTE('rte1'); updateRTEs(); // alert(document.textform.rte1.value); window.updatedb.document.form1.textcontent.value=document.textform.rte1.value; window.updatedb.document.form1.submit();
Men jeg forstår stadig ikke hvorfor jeg ikke kan gemme data i min database når der klikkes submit:
// Jeg har data i mit javascript, omsæt til php variabel thedata.value=document.textform.rte1.value;
// nu hvor jeg har en phpvariabel <? $contenttext = $_GET['thedata']; $sql = "UPDATE content SET text1='$contenttext' WHERE menuid = '$menuid'"; ?> // back to javascript return true; } </script>
Jeg har ikke helt overblik over, hvad det er for værdier, du vil sende - men vær lige opmærksom på, du ikke kan sende e-mail-adresser med method="get" - eller i en URL ;o)
Derudover kan jeg ikke se årsagen til at splitte 'mailto' i dit script: onmouseover="this.href='mai' + 'lto:' ... osv
Du burde blot kunne skrive: onmouseover="this.href='mailto:' ... osv
svaret var meget enkelt, jeg skulle hverken bruge iframes eller andet, blot hente $_POST['rte1'] som svar submittet i den første form.
<? if (isset($_POST['rte1'])) { opendb(); $sql2 = "UPDATE content SET text1='" . $_POST['rte1'] . "' WHERE menuid = '$menuid'"; if (!mysql_query($sql2)) { msgbox("Database fejl under processen, prøv igen!"); closedb(); } msgandlink("Du har nu ændret på siden!", "http://www.blabla.dk"); closedb(); } ?>
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.