Avatar billede zhatten Nybegynder
17. januar 2001 - 10:37 Der er 22 kommentarer og
3 løsninger

Skift Side

Hej Xperter.

Jeg tror nok at dette spm. skal ligge i denne kategori.


Jeg skal have flg. :

Et formfelt hvor man kan indtaste 3 tal Fra 100 til 999.
Når man så trykker enter eller på en submit knap skal den så læse de 3 tal og hoppe over på den rigtige side :o)

Altså hvis jeg skriver 123 skal den hoppe over på siden jeg har lavet som skal læses når man trykker 123.

Der må ikke kunne skrives bogstaver i feltet


- Zhatten
Avatar billede kasseper Nybegynder
17. januar 2001 - 10:39 #1
Hvor vil du har adresserne til siderne til at ligge, i en database ???
Så kan du ikke bruge JavaScript, men skal ha fat i noget server side...
Avatar billede morten Nybegynder
17. januar 2001 - 10:55 #2
Med php4.0:
Anvend funktionen:
$tal=is_numeric($udtryk);

True hvis det er er et tal
False hvis det ikke er et tal.

Morten
Avatar billede zhatten Nybegynder
17. januar 2001 - 10:57 #3
Men hvordan for jeg den til at skifte side når jeg f.eks har indtaste 123 ? den skal jo også finde den rigtige. Hvis der er en som kan lave et forslag med php og måske mysql er jeg meget interreseret i at hører det.


- Zhatten
Avatar billede zhatten Nybegynder
17. januar 2001 - 11:12 #4
Når jeg måtte ikke ligge et link i php kategorien her over til så må jeg bare håbe at der kommer nogen php folk her ind :o(


- Zhatten
Avatar billede mkelle1 Nybegynder
17. januar 2001 - 12:01 #5
Hej zhatten

Her er et script som kan det du beder om. Det er en kombination af JavaScript og PHP. Det eneste det ellers kræver er at du laver en fil som hedder:  fil123.php  hvis du tester med tallet 123. Der er ikke noget automatisk check på om filen findes, men hvis den ikke gør får du en PHP fejlmeddelelse.

<html>
<head>
<title></title>
   
<script>
function Checktal(thisform)
{
    regtal = /[0-9]/;

if (!regtal.test(thisform.sidetal.value) )
  {
    alert(\"Feltet skal bestå af et 3-cifret tal!\");
    thisform.sidetal.focus();
      thisform.sidetal.select();
        return (false);
  }
}
</script>
</head>
<body>
<?
if ($sidetal)
{
$filnavn=\"fil\".$sidetal.\".php\";
include($filnavn);
}
else
{
?>

<form name=\'minform\' onsubmit=\"return Checktal(this);\">
<input type=\'text\' name=\'sidetal\' size=3>
<input type=\'submit\' name=\'submit\' value=\'Gå til siden\'>

<?
}
?>

</form>
</body>
</html>

Hilsen

Mads
Avatar billede zhatten Nybegynder
17. januar 2001 - 17:16 #6
Jeg for fejl i linie 7 :o( :

<script>


- Zhatten
Avatar billede zhatten Nybegynder
17. januar 2001 - 17:36 #7
Hmmm... :o( Har du selv lavet den ? spørg bare fordi så kunne du måske også finde ud af at lave om på den så den passer.

Fordi Der er fejl i linie 7 og siden bliver bare reloadet med indholdet fra siden fil123.php

Altså hvis der først stod :

Hej Med dig.

og der i fil123.php stod Goddag, står der så

Goddag :o(
Hej Med dig.


Den skal fjerne det gamle og så kun vise det nye.


- Zhatten
Avatar billede jakoba Nybegynder
17. januar 2001 - 20:09 #8
Den her omskrivning af mkelle1 s forslag uden php ser ud til at virke:

<html><head>
<title>xxx</title>
                     
<script language=\'javascript\'>

function Checktal(thisform) {
  var regtal = /\\d{3}/;
  var snr    = thisform.sidetal.value;
  var sdest  = \"\";
  if (regtal.test(snr) ) {
    switch ( parseInt(snr,10) ) {
    case 123:  sdest = \"fil123.html\";
                break;
    case 456:  sdest = \"fil456,html\";
                break;
    case 789:  sdest = \"fil789.html\";
                break;
    default:  alert(\"Beklager, de har fået galt nummer.\")
    };
    thisform.sidetal.value = \"\";
    if (sdest.length>0) self.location = sdest;
  } else {
    alert(\"Feltet skal udfyldes med et 3-cifret tal!\");
    thisform.sidetal.select();
  }
};
</script>
</head>
<body>
Indtast sidenummer:
<form name=\'minform\' action=\"java script:void(0)\">
<input type=\'text\' name=\'sidetal\' size=3>
<input type=\'button\' name=\'submit\' value=\'Gå til siden\'
      onclick=\"Checktal(this.form);\">
</form>

</body>
</html>
Avatar billede jakoba Nybegynder
17. januar 2001 - 20:16 #9
hovsa. overså tal skal være større end 99. så bliver
  var regtal = /\\d{3}/;
til
  var regtal = /1-9\\d{2}/;

mvh JakobA
Avatar billede mkelle1 Nybegynder
17. januar 2001 - 20:43 #10
Hej Zhatten

Jeg ved ikke hvorfor du får fejl, fordi jeg har testet scriptet før jeg sendte det og det virker fint. En enkelt ting. Når du includer en fil i PHP bliver det der står i filen opfattet som html kode, d.v.s. hvis du vil skrive php-kode skal du sætte <? i starten og ?> i slutningen af filen. Den \"fil123.inc\" jeg selv har lavet til testen indeholder blot een linie med text, ingen tags af nogen art, da <html>..... o.s.v. jo allerede står i den fil, som du includer \"fil123.inc\" i.

Det Jakoba gør, ser ud til at virke, men kræver jo desværre at du skal ind og rette i koden hver gang du tilføjer en ny fil. Nu har jeg ikke i det oprindelige script lavet nogen test af om filen findes, men det kan man sagtens gøre, så du kan få en fejl-meddelelse hvis du skriver et nummer som ikke existerer.

Hilsen

Mads
Avatar billede zhatten Nybegynder
17. januar 2001 - 21:21 #11
jakoba :

Når jeg indtaster f.eks 123 eller 456 så skriver den :

Feltet skal udfyldes med et 3-cifret tal!


- Zhatten
Avatar billede zhatten Nybegynder
17. januar 2001 - 21:24 #12
Fandt det selv :) Det virker fint hvis jeg skriver :

var regtal = /\\d{3}/;

Men virker ikke når jeg skriver :

var regtal = /1-9\\d{2}/;
Avatar billede zhatten Nybegynder
17. januar 2001 - 21:27 #13
Er det ikke muligt at få den til at åbne i en target ?

Har prøvet at sætte den ind i formen, men det funker ikke :o( kan det være fordi det er i en Iframe den skal åbne ?
Kan du ikke lige sætte det ind, hvis det kan lade sig gøre ?

- Zhatten
Avatar billede jakoba Nybegynder
17. januar 2001 - 21:28 #14
ikke usandsynligt, jeg er amatør til regular expressions :). måske /[1-9]\\d{2}/
Avatar billede jakoba Nybegynder
17. januar 2001 - 21:31 #15
Og iframes ved jeg heller ikke meget om. Kik om du kan se iframens navn i dit window.frames array.
hvis du kan bliver det:
self.frames.navnet_på_din_iframe.location = sdest;

Avatar billede zhatten Nybegynder
17. januar 2001 - 21:34 #16
Min Iframe ser sådan her ud :

<iframe name=\"index\" width=\"367\" height=\"335\" src=\"index2.html?action=laes\" frameborder=\"0\" SCROLLING=\"no\" style=\"border-left: 1 solid #000000; border-right: 1 solid #000000; border-top: 1 solid #000000; border-bottom: 0 solid #000000\">
</iframe>


- Zhatten
Avatar billede jakoba Nybegynder
17. januar 2001 - 21:41 #17
Prøv. Du kan gætte ligeså godt som jeg.
måske:

self.frames.index.location = sdest;
self.frames[0].location = sdest;
document.body.index.location = sdest;
document.body.index.src = sdest;
document.body.frames.index.location = sdest;
document.body.frames.index.src = sdest;
...

mvh JakobA
Avatar billede zhatten Nybegynder
17. januar 2001 - 21:50 #18
og hvor skal det indsættes ?


- Zhatten
Avatar billede zhatten Nybegynder
17. januar 2001 - 22:06 #19
mkelle1 :

Findes der ikke noget som ryder skærmen ? Fordi din åbner godt nok siden i Iframen, men den har alt det gamle indhold med.


- Zhatten
Avatar billede morten Nybegynder
17. januar 2001 - 22:17 #20
function SideSkift($input){
    //Tjek er det et tal
$tal=is_numeric($udtryk);
if($tal=true){
    //tjek længde
    $len=strlen($tal);
    if($len==3){
        $filnavn=\"fil\".$tal.\".php\";
        header(\"Location: $filnavn\");
      }else{
      //længde ikke 3
      //skab en aktion, således brugeren kommer
      //tilbage. Evt. header.
      }
  }else{
    //Udtryk var ikke et tal
    //Skab en aktion, således brugeren kommer
    //tilbage evt. header.
}
//Funktion slut
}

Hvad med noget der ligner dette her....
Det er ikke tjekket for trykfejl, men princippet burde virke.
Du kan så lægge funktionen i en enkelt fil/class som du inkluderer eller hvad du har lyst til.

Morten
Avatar billede jakoba Nybegynder
17. januar 2001 - 22:59 #21
Jeg har leget med det og det er
    self.frames.navn_på_irammen.location = sdest;
der virker.

grab scriptet fra:
http://hjem.get2net.dk/Jakob.Aggernaes/temp/exp44058.html

mvh Jakoba
Avatar billede jakoba Nybegynder
17. januar 2001 - 23:00 #22
PS: IFRAME dutter ikke i netscape.
Avatar billede mkelle1 Nybegynder
18. januar 2001 - 01:52 #23
Zhatten>
Jeg har ikke en dyt forstand på Iframes, så det ved jeg ikke.

Mads
Avatar billede zhatten Nybegynder
18. januar 2001 - 15:13 #24
Jakoba, nu virker din perfekt :o)

51 points til dig 14 til de andre
Avatar billede zhatten Nybegynder
18. januar 2001 - 15:15 #25
mkelle1 du fik 20 jakoba du fik 50 og morten du fik 9 tænkte mig ikke lige om da jeg skrev det første indlæg.


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