Avatar billede knagen7100 Novice
31. marts 2005 - 15:51 Der er 44 kommentarer og
1 løsning

Åbne en redirect i nyt vindue

Hejsa

Kan nogen hjælpe mig med et javascript i PHP der skal åbne i et byt vindue. Min kode ser således ud:

if (preg_match("/^[0-9]{1,2}$/", $tid)) {
      if ($tid <= 60 && $tid >= 1){
        $nytid = $tid * $kons;
        $_SESSION["reload"] = $nytid;
        header("Location: http://primdahl/autmål.php");
        exit;
        }else{
                osv.
header("Location: http://primdahl/autmål.php"); <--Den vil jeg gerne have åbnet i et nyt vindue.
Avatar billede barklund Nybegynder
31. marts 2005 - 16:24 #1
Se, ovenstående er jo ikke javascript men derimod php. Men ja, du kan bare skrive:

print "<script type='text/javascript'>window.open('http://primdahl/autmål.php','_blank');</script>";

Og så vil den åbne en ny side - men det skal jo nok ikke printes hele oppe i starten af din html, så du skal nok lige tænke det ind i eksisterende design først :)

--
Morten Barklund
Avatar billede knagen7100 Novice
31. marts 2005 - 16:36 #2
Hej Morten

Jeg er udemærket klar over at ovenstående er PHP og ikke javascript. Jeg søger dog et javascript som kan ligges ind min PHP kode og gøre jobbet for mig.
Jeg har også set at du har lagt et javascript ind i PHP koden netop som jeg efterspurgte.
Men det fungere ikke. Jeg har ersattet min linie header("Location: http://primdahl/autmål.php"); med din print "<script type='text/javascript'>window.open('http://primdahl/autmål.php','_blank');</script>";
Der bliver ikke åbnet et nyt vindue.
Avatar billede barklund Nybegynder
31. marts 2005 - 16:45 #3
Har du en popupblokker på - for i så fald vil den blive fanget heri.

Og derudover bør du printe javascriptet det rette sted i dit dokument - for eksempel i <head>-sektionen eller i body :)

--
Morten Barklund
Avatar billede knagen7100 Novice
31. marts 2005 - 17:04 #4
Jeg køre med IE's indbyggede popupblokker, den er slået fra.

Jeg køre ikke med HTML's <header> og <body> sektioner i PHP da jeg oplever problemer af afsendelse af header på den måde. Derfor starter jeg min kode med <? og slutter med ?> og har ingen tekst udenfor disse.

Sagen er og også den at min kode laver noget kontrol på input data og kun hvis den overholder bestemte regler skal der foretages redirect, derfor kan den jo kun placeres det ene sted.
Avatar billede barklund Nybegynder
31. marts 2005 - 17:42 #5
Men hvad skal side selv så gøre - altså hvis den laver en popup med et eller andet så skal den jo også selv gøre noget?
Avatar billede knagen7100 Novice
31. marts 2005 - 17:52 #6
Den oprindelige side skal jo bare blive stående.
Det jeg søger er noget i stil med HTML taget: target="blank"
Avatar billede barklund Nybegynder
31. marts 2005 - 19:34 #7
Men den eksisterende side er jo gået videre til en ny side? Du har allerede trykket på et eller andet og sendt den videre til den nye php-side.

Altså den side, som du kommer fra - den skal lave en popup under nogle omstændigheder med en helt ny side - og under andre omstændigheder skal der ingenting ske?
Avatar billede knagen7100 Novice
31. marts 2005 - 20:14 #8
Som du jo kan se i koden, 
($tid <= 60 && $tid >= 1){
        $nytid = $tid * $kons;
        $_SESSION["reload"] = $nytid;
        header("Location: http://primdahl/autmål.php");
        exit;
(Hvis alt dette er sandt skal den gå videre til http://primdahl/autmål.php. Det gør den også, MEN det skal bare være i et nyt vindue der poper up.)
     
      }else{
(Ellers skal den udskrive noget tekst som jeg har valgt ikke at medtage her)
Avatar billede roenving Novice
02. april 2005 - 13:54 #9
Du kan ikke på serveren åbne et nyt vindue, så du er nødt til at bruge window.open !-)
Avatar billede barklund Nybegynder
02. april 2005 - 14:11 #10
Hvis alt det der er sandt, hvad skal den eksisterende side så vise? Duj har jo sendt den videre til en ny side, som så skal lave en popup - men siden bagved skal vel også gøre noget? Og i det 'noget', som den skal gøre, skal du inkludere et stykke javascript, som laver en popup.

Alternativt kunne du allerede fra forrige side lade din formular eller link (eller hvad det måtte være der sendte en til denne side) lave popuppen direkte til den behandlede php-side - så kan resultatet bare printes ud.
Avatar billede knagen7100 Novice
02. april 2005 - 18:08 #11
Hej roenving

Kan du hjælpe med window.open !-) ??
Avatar billede roenving Novice
02. april 2005 - 18:10 #12
-- er du sikker på, at det ikke er å'et i din sides adresse, som driller ?-)
Avatar billede knagen7100 Novice
02. april 2005 - 18:15 #13
Hmmmmm, jeg har jo som sådan igen problemer med den ovenstående kode. Linien

  header("Location: http://primdahl/autmål.php");

åbner jo i eksisterende vindue men den skal gerne åbne i en nye popup.
Avatar billede roenving Novice
02. april 2005 - 18:20 #14
Tjah, i mit mail-program (browseren i gmail !-) viste den linket som http://primdahl/autm direkte efterfulgt af teksten ål.php ...

Har du prøvet at omdøbe til f.eks. http://primdahl.dk/autmaal.php

-- og der var slet ikke en gyldig adresse, når der ikke er topdomæne på !o]
Avatar billede knagen7100 Novice
03. april 2005 - 12:31 #15
Jeg har nu rettet adressen til automaal.php

Men jeg skal jo stadig have åbnet siden i nyt popup vindue.
Avatar billede barklund Nybegynder
03. april 2005 - 12:34 #16
Så mine kommentarer ignoreres blot? Yes yes, så blander jeg mig uden om :)
Avatar billede knagen7100 Novice
03. april 2005 - 12:45 #17
barklund

Jeg tror stadig ikke du har forstået mit problem. Siden jeg er på http://primdahl/udregn.php med ovenstående kode redirectes til siden http://primdahl/autmaal.php i eksisterende vindue. Siden http://primdahl/autmaal.php skal åbnes i et nyt popup vindue.
Forøvrigt køre alle siderne på lokal server så ikke noget med topdomæne og .dk
Avatar billede barklund Nybegynder
03. april 2005 - 12:48 #18
Jo, jeg forstår det fint. Men når nu du trykker på "submit" i din formular på udregn.php (hvis det er en formular?), hvilken side bliver du så sendt hen til? Submitter den til sig selv? Og hvis data er i orden skal den lave en popup med svaret (og vise sig selv som den hele tiden er ser ud), og hvis data ikke er i orden skal den vise sig selv - med nogle fejlmeddelelser?

Er det rigtigt forstået?
Avatar billede knagen7100 Novice
03. april 2005 - 12:58 #19
Jeg har en side før udregn.php. Her en alm html formular med det indtasningsfelt hvor der skal indtastes et tal mellem 1 og 60.
<form action="udregn.php" method="POST"> <-- Herefter sendes man videre til udregn.php hvor der tjekkes om det et tal mellem 1 og 60 der indtastes. Hvis dette ikke er tilfældet bliver man på siden og får en fejlmeddelse.
Er det derimod et korrekt tal der indtastes skal man redirectes til autmaal.php i et popup vidue.
Avatar billede barklund Nybegynder
03. april 2005 - 13:04 #20
Og hvad skal udregn.php så vise hvis data er rigtige? Altså, den laver en popup, der viser svaret - men hvad viser udregn.php nedenunder når man lukker popup'en?
Avatar billede knagen7100 Novice
03. april 2005 - 13:10 #21
På udregn.php skal det være muligt at kigge på de andre sider der tilknyttet sitet, altså at surfe videre mens popup vinduet nu er åbnet.
Udregn.php kan jo fx bare vise en tekst eller redirecte til en anden side.
Avatar billede barklund Nybegynder
03. april 2005 - 13:16 #22
Præcis. Og det som udregn.php nu en gang skal vise skal inkludere en window.open i sin <body onload> - og så vil din popup blive vist korrekt. Din php kan ikke lave en popup på samme måde som den kan lave en redirect via header. Derfor skal du outputte en htmlside, der inkluderer et javascript der laver en popup.

Hvilket er den information jeg hele tiden har forsøgt at få igennem :)

Du kan for eksempel redirecte til formular.php og gemme info om popup i session - så bliver man sendt tilbage til formularen og popupen bliver lavet ved at undervejs i rendering af din html teste, om der ligger noget i session der vil have en popup.
Avatar billede knagen7100 Novice
03. april 2005 - 13:52 #23
Jeg laver altså en ny side formular.htm som man bliver sendt til efter udregn.php På formular.htm laves popup med følgende:

print "<script type='text/javascript'>window.open('http://primdahl/autmaal.php','_blank');</script>";

På automaal.php er info om popup gemt i en session variabel.

Skal window.open i <body onload> placeres på udregn.php så det eksisterende vindue ved hvad det skal foretage sig.
Avatar billede barklund Nybegynder
03. april 2005 - 13:56 #24
Du kan også lægge den fladt i script som du har gjort. Det er fint nok.

Men du har vel også en hel masse andet html på formular.htm - som dit javascript skal printes (korrekt) ind i.

Og hvis udregn.php ikke printer noget html (og nej, det laver jo en redirect til formular.htm), så skal den heller ikke printe en body onload selvfølgelig.
Avatar billede knagen7100 Novice
03. april 2005 - 14:24 #25
Min formular.htm der således:

<html>

<body>
<form action="udregn.php" method="POST">
Indtast opdaterings tid i hele minutter <input type="text" name="tid" />
<input type="submit" value="Set tid" />
</form>

<script type='text/javascript'>window.open('http://primdahl/udregn.php','_blank');

</html>

Den åbner ikke noget popup vindue.
Avatar billede barklund Nybegynder
03. april 2005 - 14:33 #26
Du slutter da ikke </script> nogetsteds?

<html>

<body>
<form action="udregn.php" method="POST">
Indtast opdaterings tid i hele minutter <input type="text" name="tid" />
<input type="submit" value="Set tid" />
</form>
<script type='text/javascript'>window.open('http://primdahl/udregn.php','_blank');</script>
</html>

Dette giver mig en popup - godt nok en blokeret en, men en popup.

--
Morten Barklund
Avatar billede knagen7100 Novice
03. april 2005 - 15:15 #27
formular.htm laver nu en popup inder der trykkes på Set tid. Det bevirker jo så at udregn.php åbnes i popup og ikke kan finde variablen $_POST["tid"] hvilket jo er klart nok efter som den ikke er indtastet endnu.
Popup skal først laves når der er trykket på Set tid.
Avatar billede barklund Nybegynder
03. april 2005 - 15:20 #28
Ja selvfølgelig - du skal jo lave det så udregn.php siger:

session_start();
header("Location: http://primdahl/formular.htm");
$_SESSION['poptid'] = $_POST['tid']
exit;

Og så i formular.htm:

<?php
if (isset($_SESSION['tid'])) {
    print "<script type='text/javascript'>window.open('autmaal.php?tid=".$_SESSION['tid'].",'_blank');</script>";
    delete $_SESSION['tid'];
}

Og så i autmaal.php?

<?php
tid = $_GET['tid'];
?>

Så har du din variabel med hele vejen rundt.

--
Morten Barklund
Avatar billede barklund Nybegynder
03. april 2005 - 15:20 #29
hov, ikke $_SESSION['poptid'] men bare $_SESSION['tid'] :)
Avatar billede barklund Nybegynder
03. april 2005 - 15:21 #30
formular.htm skal også have en session_start() - jeg håber du kan finde rundt i det alligevel :)
Avatar billede knagen7100 Novice
03. april 2005 - 15:54 #31
Det er en længere omgang det her. Hvor skal min html formular placeres i formular.htm. Før eller efter php koden.

<?
/*
session_start();

if (isset($_SESSION['tid'])) {
    print "<script type='text/javascript'>window.open('autmaal.php?tid=".$_SESSION['tid'].",'_blank');</script>";
    //delete $_SESSION['tid'];
}
*/

?>
<html>

<body>
<form action="formular.php" method="POST">
Indtast opdaterings tid i hele minutter <input type="text" name="tid" />
<input type="submit" value="Set tid" />
</form>
<script type='text/javascript'>window.open('http://primdahl/udregn.php','_blank');</script>
</html>

<?
/*
session_start();

if (isset($_SESSION['tid'])) {
    print "<script type='text/javascript'>window.open('autmaal.php?tid=".$_SESSION['tid'].",'_blank');</script>";
    //delete $_SESSION['tid'];
}
*/

?>
Avatar billede barklund Nybegynder
03. april 2005 - 15:57 #32
formular.htm skal _kun_ være:

<?php
session_start();
?>
<html>

<body>
<form action="formular.php" method="POST">
Indtast opdaterings tid i hele minutter <input type="text" name="tid" />
<input type="submit" value="Set tid" />
</form>
<?php
if (isset($_SESSION['tid'])) {
    print "<script type='text/javascript'>window.open('autmaal.php?tid=".$_SESSION['tid'].",'_blank');</script>";
    delete $_SESSION['tid'];
}
?>
</html>
Avatar billede knagen7100 Novice
03. april 2005 - 16:28 #33
formular.php giver følgende fejl:
Parse error: syntax error, unexpected T_VARIABLE in c:\Inetpub\wwwroot\formular.php on line 14
Linje 14: delete $_SESSION['tid'];
Hvis linie 14 udkommenteres sker der intet efter indtasning i submit boks.
Avatar billede barklund Nybegynder
03. april 2005 - 19:54 #34
Hva satan - delete er der da ikke noget der hedder i PHP :/

unset($_SESSION['tid']);

Sådan skal det være :)
Avatar billede knagen7100 Novice
03. april 2005 - 21:33 #35
Det hjælper ikke, jeg får samme fejlmeddelse.
Avatar billede barklund Nybegynder
03. april 2005 - 23:25 #36
Altså hvis du skriver:

<?php
session_start();
?>
<html>

<body>
<form action="formular.php" method="POST">
Indtast opdaterings tid i hele minutter <input type="text" name="tid" />
<input type="submit" value="Set tid" />
</form>
<?php
if (isset($_SESSION['tid'])) {
    print "<script type='text/javascript'>window.open('autmaal.php?tid=".$_SESSION['tid'].",'_blank');</script>";
    unset($_SESSION['tid']);
}
?>
</html>

--
Morten Barklund
Avatar billede knagen7100 Novice
04. april 2005 - 14:11 #37
Intet popup vindue åbner med ovenstående kode.
Avatar billede barklund Nybegynder
04. april 2005 - 14:13 #38
Du giver mig sgu ikke meget at arbejde med - har du selv forsøgt at debugge det den mindste smule? Lidt mere info kan vel nok lade sig gøre? Prøv at printe nogle variabler rundt omkring og se, om de har de rigtige værdier.
Avatar billede knagen7100 Novice
04. april 2005 - 14:56 #39
Jeg har faktisk prøvet at debugge en del syntes jeg selv. Men det underlige er jo at der ikke åbner noget popup vindue.
Jeg kan se du køre formular som .htm jeg køre den som .php
Hvis jeg laver den til .htm skriver den følgende på siden:  "; unset($_SESSION['tid']); } ?> lige under boksen.
I øvrigt vil jeg mene at ('autmaal.php?tid=".$_SESSION['tid'<-- skal skiftes ud med udregn.php da der først skal regnes lidt på det input der laves iboksen og herefter videre til autmaal.php hvor resultatet skal bruges.
Avatar billede barklund Nybegynder
04. april 2005 - 15:05 #40
Jeg aner jo ikke hvordan dit system fungerer - men da du har været rundt om udregn.php så kan den jo bare gemme den beregnede værdi i $_SESSION['tid'] som den nu har lyst til at beregne - og først bagefter sendes man tilbage til formular.php (som ikke skal være en .htm nej) og som åbner en popup med den beregnede værdi fra $_SESSION.
Avatar billede knagen7100 Novice
04. april 2005 - 21:02 #41
Så køre det. Efter en god sammen blanding af din og min kode har jeg fået det hele til at køre efter hensigten. Jeg siger tak for hjælpen og tålmodigheden.
Hvis du smider svar er der point. Et sidste spørsmål: Hvordan sætter jeg størrelsen på popup vinduet i linien:
print "<script type='text/javascript'>window.open'http://primdahl/autmaal.php','_blank');</script>";
Avatar billede roenving Novice
05. april 2005 - 00:52 #42
window.open'http://primdahl/autmaal.php','_blank','width=300,height=200,top=50,left=100');
Avatar billede knagen7100 Novice
05. april 2005 - 16:39 #43
Sig til hvis du ikke vil have point, så tager jeg dem selv.
Avatar billede barklund Nybegynder
05. april 2005 - 16:52 #44
Hehe, hovsa :)

Og jo tak :)
Avatar billede barklund Nybegynder
05. april 2005 - 17:02 #45
Tark for points ;)
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