Avatar billede lademan Novice
06. september 2002 - 21:55 Der er 49 kommentarer og
1 løsning

Omformning af javascript-variabel til php-variabel

Hvordan omformer man fx flg. javascript-variabel:

idContent

til en php-variabel?
Avatar billede lillebror Nybegynder
06. september 2002 - 21:57 #1
du kan putte den i en cookie og hente den via php
Avatar billede lademan Novice
06. september 2002 - 21:58 #2
Er der ikke en måde der er mere ligetil?
Avatar billede bamzen Nybegynder
06. september 2002 - 22:00 #3
Ja det må være måden, du vil aldrig kunne lave den om on the fly...

php bliver omsat inden at koden når brugerens browser, javscript først efter

Så du kan godt få php til at generere js der skal bruges på en side, men ikke js til at generere php....

medmindre naturligvis du har en netscape server og kan køre serverside javascript
Avatar billede bamzen Nybegynder
06. september 2002 - 22:01 #4
Og netop af samme årsag, vil løsningen med cookien heller ikke funke på samme side, kun hvis du efterfølgende skifter side... (cookien bliver først sat efter php'en er afviklet)

prøv at beskriv præcis hvad det er du vil have den til, måske der er en bedre løsning
Avatar billede jakoba Nybegynder
06. september 2002 - 22:03 #5
<a href="#" onclick="self.location.href='endside.php?idCon='+idContent;">klik</a>

så bliver den værdie idContent har når der klikkes sendt med til den php side.

men som bamzen siger: der skal foretagen en load af en art for at aktivere php.
Avatar billede lademan Novice
06. september 2002 - 22:05 #6
Jeg har et artikelredigeringsapparat lavet i javascript som laver en variabel som jeg gerne vil lave om til en php-variabel for dermed at kunne gemme den i en database.

Hvis den kunn gemmes i en:

<form action=\"?action=write&id=$content\" method=\"post\">

Ville det selvfølgelig være lige så godt.
Avatar billede lademan Novice
06. september 2002 - 22:09 #7
Kan man ikke strikke java-variablen ind i denne formaction:

<form action="?action=write&id=self.location.href='endside.php?idCon='+idContent;" method="post">
Avatar billede lademan Novice
06. september 2002 - 22:12 #8
OOOPS, Nej kan man ikke lave variablen så den ikke kommer op i adressebjælen?

Tekstvariablen fylder jo meget :)
Avatar billede jakoba Nybegynder
06. september 2002 - 22:13 #9
mon så ikke variablen skal sendes sammen med nogen andre data så php kan vide fx hvilken artikel den hører til.

typisk vil man gøre dette ev at lade php udfylde et antal hidden felter i en form når artiklen kaldes frem til redigering.

når redigeringen så er færdig sendes det redigerede tilbage til php i den form så alle data der ankommer hører sammen.
Avatar billede lademan Novice
06. september 2002 - 22:14 #10
bjælken ..
Avatar billede bamzen Nybegynder
06. september 2002 - 22:14 #11
Den nemmeste måde, og "sikreste" da du kan skjule dine variabler er noget med:

<BODY onLoad="document.forms[0].feltNavn.value='whatever'">


og så i din form lave et hidden field

<INPUT TYPE=HIDDEN NAME=feltNavn VALUE="">

så ville du få den med når du gemte.....
Avatar billede bamzen Nybegynder
06. september 2002 - 22:16 #12
og så naturligvis have METHOD=POST på din form tag
Avatar billede lademan Novice
06. september 2002 - 22:17 #13
Hvordan skal jeg lave det hidden felt så javascritvariablen indgår?
<input type="hidden" name="idContent">
Avatar billede lademan Novice
06. september 2002 - 22:18 #14
helst ikke noget med <body>, da jeg bruger samme design til alle sider :)
Avatar billede bamzen Nybegynder
06. september 2002 - 22:19 #15
der hvor du laver din javascript variabel.... giv os noget kode, og vi kan fortælle dig hvor
Avatar billede bamzen Nybegynder
06. september 2002 - 22:21 #16
Du kan også skrive....


<SCRIPT LANGUAGE=JavaScript>
document.write('<INPUT TYPE=HIDDEN NAME=idContent VALUE="'+dinVariabel+'">')
</SCRIPT>

så bliver den sat direkte ind i feltet
Avatar billede lademan Novice
06. september 2002 - 22:21 #17
Her kommer hele banditten:
Avatar billede lademan Novice
06. september 2002 - 22:21 #18
<?php
if ($action == "write"){
print "$id";
}else{
?>

<STYLE TYPE="text/css">
TABLE#tblCoolbar
    {
    background-color:threedface; padding:1px; color:menutext;
    border-width:1px; border-style:solid;
    border-color:threedhighlight threedshadow threedshadow threedhighlight;
    }
.cbtn
    {
    height:18;
    BORDER-LEFT: threedface 1px solid;
    BORDER-RIGHT: threedface 1px solid;
    BORDER-TOP: threedface 1px solid;
    BORDER-BOTTOM: threedface 1px solid;
    }
.txtbtn {font-family:tahoma; font-size:70%; color:menutext;}
</STYLE>

<script LANGUAGE="JavaScript">
function button_over(eButton)
    {
    eButton.style.backgroundColor = "#B5BDD6";
    eButton.style.borderColor = "darkblue darkblue darkblue darkblue";
    }
function button_out(eButton)
    {
    eButton.style.backgroundColor = "threedface";
    eButton.style.borderColor = "threedface";
    }
function button_down(eButton)
    {
    eButton.style.backgroundColor = "#8494B5";
    eButton.style.borderColor = "darkblue darkblue darkblue darkblue";
    }
function button_up(eButton)
    {
    eButton.style.backgroundColor = "#B5BDD6";
    eButton.style.borderColor = "darkblue darkblue darkblue darkblue";
    eButton = null;
    }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

var isHTMLMode=false

function document.onreadystatechange()
    {
      idContent.document.designMode="On"
    }
function cmdExec(cmd,opt)
    {
      if (isHTMLMode){alert("Please uncheck 'Edit HTML'");return;}
      idContent.document.execCommand(cmd,"",opt);idContent.focus();
    }
function setMode(bMode)
    {
    var sTmp;
      isHTMLMode = bMode;
      if (isHTMLMode){sTmp=idContent.document.body.innerHTML;idContent.document.body.innerText=sTmp;}
    else {sTmp=idContent.document.body.innerText;idContent.document.body.innerHTML=sTmp;}
      idContent.focus();
    }
function createLink()
    {
    if (isHTMLMode){alert("Please uncheck 'Edit HTML'");return;}
    cmdExec("CreateLink");
    }
function insertImage()
    {
    if (isHTMLMode){alert("Please uncheck 'Edit HTML'");return;}
    var sImgSrc=prompt("Insert Image File (You can use your local image file) : ", "http://www.aspalliance.com/Yusuf/Article10/sample.jpg");
    if(sImgSrc!=null) cmdExec("InsertImage",sImgSrc);
    }
function Save()
    {
    if (isHTMLMode){alert("Please uncheck 'Edit HTML'");return;}
      var sImgTag = idContent.document.body.all.tags("IMG");
      var oImg;
      for (var i = sImgTag.length - 1; i >= 0; i--)
        {
        oImg = sImgTag[i];
        alert("Add your code to Upload local image file here. Image Inserted : " + oImg.src );
          }
      alert("Add your code to Save Document here");
      alert("Your Document : " + idContent.document.body.innerHTML);
    }
function foreColor()
    {
    var arr = showModalDialog("selcolor.htm","","font-family:Verdana; font-size:12; dialogWidth:30em; dialogHeight:34em" );
    if (arr != null) cmdExec("ForeColor",arr);   
    }
</script>

<P><STRONG><FONT size=3>Online Content Editor</FONT></STRONG></P>

<table id="tblCoolbar" width=542 cellpadding="0" cellspacing="0">
<tr valign="middle">
    <td colspan=18>
      <select onchange="cmdExec('fontname',this[this.selectedIndex].value);">
            <option selected>Font</option>
            <option value="Arial">Arial</option>
            <option value="Tahoma">Tahoma</option>
            <option value="Times New Roman">Times New Roman</option>
            <option value="Verdana">Verdana</option>
        </select>
        <select onchange="cmdExec('fontsize',this[this.selectedIndex].value);">
            <option selected>Size</option>
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
            <option value="4">4</option>
            <option value="5">5</option>
            <option value="6">6</option>
            <option value="7">7</option>
            <option value="8">8</option>
            <option value="10">10</option>
            <option value="12">12</option>
            <option value="14">14</option>
        </select>
       
    </td>
   
</tr>
<tr>

    <td><div class="cbtn" onClick="cmdExec('cut')" onmouseover="button_over(this);" onmouseout="button_out(this);" onmousedown="button_down(this);" onmouseup="button_up(this);">
    <img hspace="1" vspace=1 align=absmiddle src="images/Cut.gif" alt="Cut">
    </div></td>
   
    <td><div class="cbtn" onClick="cmdExec('copy')" onmouseover="button_over(this);" onmouseout="button_out(this);" onmousedown="button_down(this);" onmouseup="button_up(this);">
    <img hspace="1" vspace=1 align=absmiddle src="images/Copy.gif" alt="Copy">
    </div></td>   
   
    <td><div class="cbtn" onClick="cmdExec('paste')" onmouseover="button_over(this);" onmouseout="button_out(this);" onmousedown="button_down(this);" onmouseup="button_up(this);">
    <img hspace="1" vspace=1 align=absmiddle src="images/Paste.gif" alt="Paste">
    </div></td>   
   
    <td><div class="cbtn" onClick="cmdExec('bold')" onmouseover="button_over(this);" onmouseout="button_out(this);" onmousedown="button_down(this);" onmouseup="button_up(this);">
    <img hspace="1" vspace=1 align=absmiddle src="images/Bold.gif" alt="Bold">
    </div></td>
   
    <td><div class="cbtn" onClick="cmdExec('italic')" onmouseover="button_over(this);" onmouseout="button_out(this);" onmousedown="button_down(this);" onmouseup="button_up(this);">
    <img hspace="1" vspace=1 align=absmiddle src="images/Italic.gif" alt="Italic">
    </div></td>   
   
    <td><div class="cbtn" onClick="cmdExec('underline')" onmouseover="button_over(this);" onmouseout="button_out(this);" onmousedown="button_down(this);" onmouseup="button_up(this);">
    <img hspace="1" vspace=1 align=absmiddle src="images/Under.gif" alt="Underline">
    </div></td>       
       
    <td><div class="cbtn" onClick="cmdExec('justifyleft')" onmouseover="button_over(this);" onmouseout="button_out(this);" onmousedown="button_down(this);" onmouseup="button_up(this);">
    <img hspace="1" vspace=1 align=absmiddle src="images/Left.gif" alt="Justify Left">
    </div></td>
   
    <td><div class="cbtn" onClick="cmdExec('justifycenter')" onmouseover="button_over(this);" onmouseout="button_out(this);" onmousedown="button_down(this);" onmouseup="button_up(this);">
    <img hspace="1" vspace=1 align=absmiddle src="images/Center.gif" alt="Center">
    </div></td>   
   
    <td><div class="cbtn" onClick="cmdExec('justifyright')" onmouseover="button_over(this);" onmouseout="button_out(this);" onmousedown="button_down(this);" onmouseup="button_up(this);">
    <img hspace="1" vspace=1 align=absmiddle src="images/Right.gif" alt="Justify Right">
    </div></td>       
   
    <td><div class="cbtn" onClick="cmdExec('insertorderedlist')" onmouseover="button_over(this);" onmouseout="button_out(this);" onmousedown="button_down(this);" onmouseup="button_up(this);">
    <img hspace="2" vspace=1 align=absmiddle src="images/numlist.GIF" alt="Ordered List">
    </div></td>   

    <td><div class="cbtn" onClick="cmdExec('insertunorderedlist')" onmouseover="button_over(this);" onmouseout="button_out(this);" onmousedown="button_down(this);" onmouseup="button_up(this);">
    <img hspace="2" vspace=1 align=absmiddle src="images/bullist.GIF" alt="Unordered List">
    </div></td>
       
    <td><div class="cbtn" onClick="cmdExec('outdent')" onmouseover="button_over(this);" onmouseout="button_out(this);" onmousedown="button_down(this);" onmouseup="button_up(this);">
    <img hspace="2" vspace=1 align=absmiddle src="images/deindent.gif" alt="Decrease Indent">
    </div></td>   
   
    <td><div class="cbtn" onClick="cmdExec('indent')" onmouseover="button_over(this);" onmouseout="button_out(this);" onmousedown="button_down(this);" onmouseup="button_up(this);">
    <img hspace="2" vspace=1 align=absmiddle src="images/inindent.gif" alt="Increase Indent">
    </div></td>           
   
    <td><div class="cbtn" onClick="foreColor()" onmouseover="button_over(this);" onmouseout="button_out(this);" onmousedown="button_down(this);" onmouseup="button_up(this);">
    <img hspace="2" vspace=1 align=absmiddle src="images/fgcolor.gif" alt="Forecolor">
    </div></td>           

    <td><div class="cbtn" onClick="cmdExec('createLink')" onmouseover="button_over(this);" onmouseout="button_out(this);" onmousedown="button_down(this);" onmouseup="button_up(this);">
    <img hspace="2" vspace=1 align=absmiddle src="images/Link.gif" alt="Link">
    </div></td>   
   
    <td><div class="cbtn" onClick="insertImage()" onmouseover="button_over(this);" onmouseout="button_out(this);" onmousedown="button_down(this);" onmouseup="button_up(this);">
    <img hspace="2" vspace=1 align=absmiddle src="images/Image.gif" alt="Image">
    </div></td>       
   
    <td><div class="cbtn" onClick="Save()" onmouseover="button_over(this);" onmouseout="button_out(this);" onmousedown="button_down(this);" onmouseup="button_up(this);">
    <img  hspace="2" vspace=1 align=left src="images/Save.gif" alt="Save">
    <font class=txtbtn>Save&nbsp;&nbsp;</font>
    </div></td>       
       
    <td width=200></td>   
   
</tr>
</table>

<form action="?action=write&id=self.location.href='endside.php?idCon='+idContent;" method="post">

<iframe width="542" id="idContent" height="350"></iframe>
<br>
<input type="checkbox" onclick="setMode(this.checked)"> Edit HTML
<br><br>
<input type="submit" name="Submit" value="Submit">

</form>

<?php } ?>
Avatar billede lademan Novice
06. september 2002 - 22:27 #19
Er det sort snak?
Avatar billede Slettet bruger
06. september 2002 - 22:29 #20
En anden - måske lidt kreativ - måde at overføre variable mellem javascript og PHP er følgende. Den er måske
ikke relevant for dig, men kan måske være det for andre.

<html>

<head>
<script language='javascript'>
function sendvar() {
    var foo = 'bar';
    document.write("<img width='1' height='1' src='reciever.phtml?foo=" + foo + "'>");
}
</script>
</head>

<body>

<script language='javascript'>
sendvar();
</script>

Javascript variablen foo er sendt til PHP scriptet reciever.phtml

</body>

</html>


På reciever.phtml har man så $foo = 'bar'. Og kan gøre med data som man lyster.
Hvis man er lidt omhyggelig lader man så iøvrigt reciever.phtml retunere en 1 px. transparent gif el. lign.
Avatar billede bamzen Nybegynder
06. september 2002 - 22:29 #21
<form action="?action=write&id=self.location.href='endside.php?idCon='+idContent;" method="post">
vil ikke virke

som jeg læser det. vil du have alt hvad der står i iframen ind i et felt i formen?

hvis det er korrekt kan du måske bruge følgende linier i stedet

nu kender jeg ikke PHP, skal lige siges.... men jeg vil tro at følgende kan gøre tricket

<form action="endside.php method="post" onBeforeSubmit="document.forms[0].idCon.value=document.frames[0].innerHTML">
<INPUT TYPE=hidden name=action VALUE="write">
<INPUT TYPE=hidden name=idCon VALUE="">

Du ville så opnå at siden der bliver loaded når du gemmer er

endside.php?action=write&idCon=<indholdet af din iframe>
Avatar billede lademan Novice
06. september 2002 - 22:33 #22
indholdet i iframen er idContent som skabes opppe i javascriptet, hvilket du selvfølgelig har regnet ud.

>>bamzen
Det er måske ikke smart at have en kæmpestor variabel i adresselinjen?
Avatar billede lademan Novice
06. september 2002 - 22:34 #23
Du kan også skrive....

Vi kunne ikke indsætte den her:

<SCRIPT LANGUAGE=JavaScript>
document.write('<INPUT TYPE=HIDDEN NAME=idContent VALUE="'+dinVariabel+'">')
</SCRIPT>
Avatar billede bamzen Nybegynder
06. september 2002 - 22:39 #24
hvis du skriver som jeg gjorde, burde den ikke skrive det i adresselinien... (method=post)
hvis du dog sætter parametre på i din form action, vil de vises, eller ikke fungere..... eller begge dele...
så jeg skulle mene den korrekte løsning for dig, er som jeg skrev...

har du afprøvet det?
Avatar billede lademan Novice
06. september 2002 - 22:41 #25
GRR min server er selvfølgelig nede lige nu
Avatar billede lademan Novice
06. september 2002 - 22:41 #26
typisk
Avatar billede lademan Novice
06. september 2002 - 22:42 #27
Hmm - min ftp virker, men jeg kan ingen sider se?
Avatar billede bamzen Nybegynder
06. september 2002 - 22:48 #28
så er din http server gået ned....

det er to forskellige dæmoner (det kalder man hver service.... ie http, ftp etc)
Avatar billede lademan Novice
07. september 2002 - 08:30 #29
Jeg har forsøgt dette, som du skrev:

<form action="edit.php" method="post" onBeforeSubmit="document.forms[0].idCon.value=document.frames[0].innerHTML">

<iframe width="542" id="idContent" height="350"></iframe>
<br>
<input type="checkbox" onclick="setMode(this.checked)"> Edit HTML
<br><br>
<INPUT TYPE=hidden name=action VALUE="write">
<INPUT TYPE=hidden name=idCon VALUE="">
<input type="submit" name="Submit" value="Submit">

</form>
Avatar billede lademan Novice
07. september 2002 - 08:33 #30
Og øverst i filen:

<?php
if ($action == "write"){
print "$idContent <br> $action";
}else{
?>
Avatar billede lademan Novice
07. september 2002 - 08:33 #31
Men kan stadig ikke få det til at virke helt
Avatar billede Slettet bruger
07. september 2002 - 10:48 #32
Prøv:

<form action="<? echo $PHP_SELF; ?>" method="post" onSubmit="this.idCon.value = document.ifr.document.body.innerHTML;">
<input type="hidden" value="write" name="action">
<input type="hidden" value="" name="idCon">
<input type="submit" value="Submit">
</form>

<iframe width="542" height="350" id="idContent" name="ifr"></iframe>
Avatar billede Slettet bruger
07. september 2002 - 10:48 #33
OK, iframen skal nok ligge over submit-knappen, men ellers skulle det gerne virke!
Avatar billede lademan Novice
07. september 2002 - 10:51 #34
Jeg har brugt flg:

<form action="edit.php" method="post">

<iframe width="542" id="idContent" height="350"></iframe>
<br>
<input type="checkbox" onclick="setMode(this.checked)"> Edit HTML
<br><br>
<INPUT TYPE=hidden name=action VALUE="write">
<INPUT TYPE=hidden name=idContent VALUE="">
<input type="submit" name="Submit" value="Submit">

</form>
Avatar billede lademan Novice
07. september 2002 - 10:52 #35
Avatar billede lademan Novice
07. september 2002 - 10:53 #36
<form action="edit.php" method="post" onBeforeSubmit="document.forms[0].idContent.value=document.frames[0].innerHTML">

<iframe width="542" id="idContent" height="350"></iframe>
<br>
<input type="checkbox" onclick="setMode(this.checked)"> Edit HTML
<br><br>
<INPUT TYPE=hidden name=action VALUE="write">
<INPUT TYPE=hidden name=idContent VALUE="">
<input type="submit" name="Submit" value="Submit">

</form>
Avatar billede lademan Novice
07. september 2002 - 11:03 #37
Nu er min DHT.dk server igen nede ...
Avatar billede Slettet bruger
07. september 2002 - 11:07 #38
Prøv mit forslag. Det burde virke.
Avatar billede lademan Novice
07. september 2002 - 11:10 #39
Jeg har prøvet det!
Har du prøvet efter?

:-)
Avatar billede Slettet bruger
07. september 2002 - 11:13 #40
Ja. Tror du ikke, du blander mig og bamzen sammen?
Avatar billede lademan Novice
07. september 2002 - 11:14 #41
sorry sorry!!
jeg prøver lige så snart serveren kommer op!!
Avatar billede Slettet bruger
07. september 2002 - 11:17 #42
Det gør skam ikke noget. Jeg blander også tit folk sammen! :)
Avatar billede lademan Novice
07. september 2002 - 12:40 #43
Man skal også kunne rette i artiklerne.
Hvordan laver jeg så den omvendte procedue, så php-variablen bliver til indholdet i iframen?
Avatar billede lademan Novice
07. september 2002 - 12:41 #44
Har endnu ikke tjekket om det phoenixv script virker, da min server er nede! (Vælg ikke DHT.dk)

:-)
Avatar billede lademan Novice
07. september 2002 - 14:16 #45
Det virker perfekt!
Avatar billede Slettet bruger
08. september 2002 - 15:01 #46
Hvis du vil have indholdet ind i iframen igen, kan du enten vælge at gemme indholdet af "idCon" som en html-fil, hvis navn så udskrives i iframens src:

<iframe src="<? echo $fil_navn; ?>" width="542" height="350" id="idContent" name="ifr"></iframe>

... eller du kan gøre dette:

<iframe src="about:blank" width="542" height="350" id="idContent" name="ifr"></iframe>
<script>
document.ifr.document.body.innerHTML = "<? echo $idCon; ?>";
</script>
Avatar billede Slettet bruger
08. september 2002 - 15:02 #47
Du skal nok bruge urldecode() på $idCon.
Avatar billede lademan Novice
08. september 2002 - 19:41 #48
Af en eller anden grund får jeg \" på alle "
Prøv at indsætte et billede i min editor her:
http://www.surfersinfo.dk/admin/editor/edit.php
Og tryk submit ...
Avatar billede lademan Novice
08. september 2002 - 19:44 #49
Og stripslashes ($idContent); virker ikke synderligt
Avatar billede Slettet bruger
08. september 2002 - 20:34 #50
Prøv:

stripslashes($idCon);
eller:
stripcslashes($idCon);
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester