Avatar billede dennism Nybegynder
25. februar 2003 - 19:55 Der er 19 kommentarer og
1 løsning

Target i en iframe!?

Jeg har en iframe der hedder "chattop".
Må siden har jeg så også en form, hvis targer er sat til "chattop", men alligevel bliver handlingen ikke udført i iframen, men derimod på siden!..

Hvordan kan dette gøres?
Avatar billede schaefner Juniormester
25. februar 2003 - 19:57 #1
hvis du alligevel har formen i iframen, så er target ikke nødvendig.
Avatar billede dennism Nybegynder
25. februar 2003 - 20:06 #2
Formen ligger ikke i dokumentet for iframen er, men på siden hvor iframen bliver indsat!
Avatar billede mortrr Praktikant
25. februar 2003 - 20:06 #3
"target", ikke "targer"

(ja ja  - det kunne jo være)

- Morten
Avatar billede dennism Nybegynder
25. februar 2003 - 20:08 #4
HVad er forskellen på action og target? Jeg havde åbenbart skrevet chattop i action, istedet for target!..
Avatar billede mortrr Praktikant
25. februar 2003 - 20:13 #5
action er den fil den sender formularen til.
target er navnet på det vindue (eller frame) den sender til.

Forøvrigt - hvis det vindue formularen ligger i også hedder chattop, så kunne det forklare hvorfor det ikke virker.
Skift navn på iframe og target i formular, og prøv igen.

- Morten
Avatar billede dennism Nybegynder
25. februar 2003 - 20:15 #6
Jeg har fået det til at virke.. Men jeg har imidlertid fået et nyt problem!..
Men.. Jeg har fået iframen og formen til at virke sammen, så gider du lige smide et svar mortrr?
Avatar billede dennism Nybegynder
25. februar 2003 - 20:20 #7
Jeg har denne form:

<FORM class=\"inlineform\" ACTION=\"include/side/chat/insert.php\" TARGET=\"insert\" METHOD=\"POST\">
<INPUT TYPE=\"hidden\" VALUE=\"insert\" NAME=\"action\">
<INPUT CLASS=\"but\" TYPE=\"text\" SIZE=\"30\" MAXLENGTH=\"150\" NAME=\"besked\" STYLE=\"background-color: #e0e0e0;\">
<INPUT type=\"submit\" VALUE=\"Send\" class=\"button\">
</FORM>

Den sender godtnok værdierne til "insert", men alligevel, så står den tekst man har skrevet i feltet stadig deri efter man har trykket send, hvorfor det?
Avatar billede mortrr Praktikant
25. februar 2003 - 20:25 #8
Det er fordi du sender til en anden frame.
Formularen forsvinder jo netop ikke, når du sender indholdet et andet sted hen.

Når det er så få felter, kunne man rydde felterne "manuelt" efter submit.

<script>
function sendformular(iForm) {
  iForm.submit();
  iForm.besked.value="";
  iForm.besked.focus();
  return false;
}
</script>
<FORM onsubmit="return sendformular(this)"

- Morten
Avatar billede dennism Nybegynder
25. februar 2003 - 20:26 #9
Hvad skal jeg skrive istedet for this?
Avatar billede dennism Nybegynder
25. februar 2003 - 20:28 #10
Kan jeg så også lave sådan, at dem efter at man har trykket send, også skal opdatere indholdet i iframen "chattop"?

Jeg har iøvrigt fået det med formularen til at virke!.. Tusind tak.. Du skal nok få lidt ekstra point, når jeg lukker dette spm.!
Avatar billede mortrr Praktikant
25. februar 2003 - 20:33 #11
Det er bedst at få "insert" iframen til at gøre det.
Når formularen er postet til den, vil der jo komme en html-fil tilbage til brugeren (som de sikkert ikke kan se), denne skal indeholde et javascript, som opdaterer chattop.
<script>
parent.chattop.location.reload();
</script>
(hvis insert og chattop ligger på "samme niveau" = i samme fil.

- Morten
Avatar billede dennism Nybegynder
25. februar 2003 - 20:42 #12
Fedt nok.. Smid lige et svar, tak!

Jeg har så denne while, som indsætter en "option" for hver bruger der er online:

$mysql = mysql_query("SELECT brugernavn FROM online_chat");
while ($row = mysql_fetch_array($mysql)) {
echo"<OPTION value=\"$row[bruger]\">$row[brugernavn]";
}

Hvordan kan jeg lave sådan at dette stykke bliver opdateret hvert 15 sek.?
Avatar billede dennism Nybegynder
25. februar 2003 - 20:57 #13
Jeg har lige sat det op til 20...
Avatar billede mortrr Praktikant
25. februar 2003 - 23:22 #14
Sæt fx en <meta http-equiv="refresh" content=15> ind i <head>.

Og tak skal du ha'.

(jeg har nu svaret tidligere)

- Morten
Avatar billede dennism Nybegynder
26. februar 2003 - 14:22 #15
mortrr >>

Problemet er at det kun er det lille stykke af siden der skal reloades!... Hvordan kan jeg gøre det?
Avatar billede mortrr Praktikant
26. februar 2003 - 14:26 #16
Enten have det i en iframe, eller brug javascript til at opdatere det med.

Kig fx på threaden her: http://www.eksperten.dk/spm/320350

- Morten
Avatar billede dennism Nybegynder
26. februar 2003 - 14:29 #17
Hvordan kunne sådan et javascript se ud?...
Avatar billede mortrr Praktikant
26. februar 2003 - 14:38 #18
Hvis du kigger på ole's eksempel, kan du se en writeChat funtktion.

Denne opretter nye tabel-rækker i en html-tabel som indeholder dine chat-linier:
<table id="chat" cellspacing="0" cellpadding="0" border="0">
<tr>
    <td colspan="2">&nbsp;</td>
</tr>
</table>


Den bliver kaldt fra en skjult iframe, som refresher hele tiden - chat.php i oles eksempel.

- Morten
Avatar billede dennism Nybegynder
26. februar 2003 - 14:42 #19
Undskyld.. Men jeg forstår altså slet ikke hvordan jeg kan gøre det!.. Er du ik venlig at forklare?
Avatar billede mortrr Praktikant
26. februar 2003 - 14:59 #20
Jeg kan prøve.

Du skal have en iframe, som refresher hvert et eller andet sekund:
<?
$max_rows=20;
$sql = "select * from messages order by dato desc";
$res = mysql_query( $sql ) or die (mysql_error());
$num_rows = mysql_num_rows( $res );
if ($num_rows>$max_rows) {
  $num_rows=$max_rows;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<script type="text/JavaScript">
var a = new Array();

<?
if ($num_rows>0) {
    while ( $row=mysql_fetch_array($res) ) {
        $arr_str .= "a[a.length] = \"".stripslashes($row["user"])."\";\n"; //Brugernavn
        $arr_str .= "a[a.length] = \"".date( "H:i:s", $row["dato"] )."\";\n"; //dato
        $arr_str .= "a[a.length] = \"".stripslashes($row["msg"])."\";\n"; //besked
        $s = $row["dato"];
    }
       
    print $arr_str;
}
?>

parent.writeChat( a );
setTimeout( "location.href='chat.php?s=<?=$s?>'", 5000 );
</script>
</html>

I siden med selve chatten (hvor chatten skal vises), skal du have et script der henter indlægene, og viser dem:

<script type="text/JavaScript">
var maxNumMsgs = <?=$maxNumMsgs?>;  //max antal beskeder
var hiCol = "<?=$hiCol?>";  //farver til hver anden linie
var loCol = "<?=$loCol?>";
var d=document;
function gE(id){return d.getElementById(id)}
function gA(o,tN){return o.getElementsByTagName(tN)}
function writeChat( a ) {
    var tbl = gE("chat");
    for (i=0; i<a.length; i+=3) {
        var bgCol = ( gA(tbl, "TR")[0].style.backgroundColor=="#ffffff" )? loCol : hiCol;
        var newRow = tbl.insertRow(0);
        var newCell = newRow.insertCell(0);
        newCell.innerHTML = "<b>" + a[i] + "</b><div class=\"time\">[" + a[i+1] + "]</div>";
        newCell.className = "u";
        var newCell = newRow.insertCell(1);
        newCell.innerHTML = a[i+2];
        newCell.className = "m";
        newRow.style.backgroundColor = bgCol;
    }
    var numMsgs = gA(tbl, "TR").length;
    while ( numMsgs>maxNumMsgs ) {
        tbl.deleteRow(numMsgs-1);
        numMsgs--;
    }
}
</script>
<table id="chat" cellspacing="0" cellpadding="0" border="0">
<tr>
    <td colspan="2">&nbsp;</td>
</tr>
</table>

- Morten
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