Avatar billede Slettet bruger
07. september 2004 - 12:27 Der er 26 kommentarer og
1 løsning

udskrive 4 poster ud fra et nummer

Hej.

Jeg har et script der indsætter et navn når man skriver et nummer. Men da jeg pludselig skal bruge fire oplysninger istedet for to har jeg et problem. Nummer er lige langt hele tiden og jeg kan derfor går ud fra det og tage resten til titel. Men titlerne er ikke lige lange og der er mellemrum i også, så hvordan dælen takler man lige den ?

Her har jeg f. eks.:

var KursusNr = new Array("4309 En meget lang titel",
"4364 Og her en anden titel",
"4701 og så er der den tredje titel, og dem er der mange af " );


Så har jeg en funktion der klarer det for mig og sætter titel ind i min formular.

function addKursusNr(form)
{
  kursusnummer = form.KursusNr.value;

    for (i = 0; i < KursusNr.length; i++)
    {
      if (KursusNr[i].substring(0, 4) == kursusnummer)
        {
          form.KursTitel.value = KursusNr[i].substring(5, KursusNr[i].length);
            i = KursusNr.length;
        }
    }
}


Kan man skrive variablerne som f. eks. "nummer","titel","dato","pris" eller hvordan klarer man den. Jeg ved ikke meget om javascript, så derfor må jeg jo spørge jer :-)

På forhånd tak.
Avatar billede roenving Novice
07. september 2004 - 12:53 #1
var KursusNr = new Array();
KursusNr[KursusNr.length] = [4309,"En meget lang titel","1/10-2004",1565];
KursusNr[KursusNr.length] = [4364,"Og her en anden titel","1/1-2005",3657];
KursusNr[KursusNr.length] = [4701,"og så er der den tredje titel, og dem er der mange af","15/9-2004",18715];

-- så har du lavet et todimensionelt array, hvor f.eks. KursusNr[1][0] vil give tallet 4364, og KursusNr[2][2] tekst-datoen 15/9-2004 ...

-- den anden vnkel er at lave det som et objekt:

var KursusNr = new Array();
KursusNr[KursusNr.length] = {'nummer':4309,'titel':"En meget lang titel",'dato':"1/10-2004",'pris':1565};
KursusNr[KursusNr.length] = {'nummer':4364,'titel':"Og her en anden titel",'dato':"1/1-2005",3657};
KursusNr[KursusNr.length] = {'nummer':4701,'titel':"og så er der den tredje titel, og dem er der mange af",'dato':"15/9-2004",'pris':187150;

-- så har du et array af objekter, hvor du kan hente f.eks. KursusNr[1].titel eller KursusNr[2].pris !-)
Avatar billede Slettet bruger
07. september 2004 - 12:57 #2
Det virker noget volsomt. Der er mange titler, og så skal der jo skrives en del på hvert felt. Er det virkelig nødvendigt :-)

Når man skirver kursusnummer er det meningen at de tre resterende felter udfyldes. Filen vil jo også blive stor med alt den tekst der skal tilføjes pr. record. Kan det ikke laves lidt lettere ;-)
Avatar billede Slettet bruger
07. september 2004 - 13:01 #3
Jeg er heller ikke helt sikker på at jeg helt forstår dit eksempel.
Avatar billede roenving Novice
07. september 2004 - 13:37 #4
Selv hvis du har rigtig lange titler, så skal du have 100, som gennemsnitligt er 100 karakterer lange, før du når 10 kb, så det vil se voldsomt ud kodemæssigt, men lur mig, om du ikke har en 3-4 billeder, som hver er mellem 20 og 50 kb !-)

-- så det voldsomme er det det fylder, men du kan f.eks. tage udgangspunkt i det trick, som jeg viste her:

http://www.eksperten.dk/spm/496122

-- der bliver en select fyldt op fra en .txt-fil, men den kunne du jo generere ved hjælp af dit database-udtræk, og det er så ikke den aktive søgefunktion, du har brug for men en udfyldelse af nogle felter på baggrund af indtastningen af tallet ...

-- alt sammen er ikke alt for voldsomt, noget endda ganske rutine-agtigt, så det kommer sådan set an på, hvordan du foretrækker det, for vi kan jo også lægge alle data (og selve koden til at fylde felterne !-) i en php- eller asp-genereret ekstern javascript-fil !o]
Avatar billede Slettet bruger
07. september 2004 - 13:50 #5
Du giver mig godtnok noget at tænke over :-)

Jeg regnede ikke med at det ville være så omfattende.

Jeg har det hele liggende i en database og har så forsøgt at lave udtræk af de felter jeg skal bruge, og med nummer og titel virker det.

Men det var da noget smartere hvis den kan hente det fra databasen istedet for. Men der tror jeg ikke jeg kan være med, da php ikke kan aktiveres med TAB som javascript kan.

Har du et eksempel på javascript der kan hente variablerne direkte i en MySQL database. Da systemet kører på Linux kan jeg ikke bruge ASP, men PHP går rimeligt  :-) Det med databasen tiltaler mig i allerhøjeste grad, da den bliver opdateret med ændringer, når der er nogen. Og er der det skal jeg jo huske at få det lavet i de tilsvrende XXX.js filer.
Avatar billede roenving Novice
07. september 2004 - 14:12 #6
Principielt laver du ikke et javascript, som henter data, men et php-script, hvis output er formatteret som en javascript-fil !-)

-- og eksterne javascript-filer må hedde hvadsomhelst, så du kan godt f.eks.

<script type="texst/javascript" src="kurser.php"></script>

-- og så lave kurser.php sådan:

<?
/*Åbn database og hent de aktuelle poster*/
?>

var KursusNr = new Array();

<?
/*Lav et loop, hvor du iterer igennem de forskellige poster*/
?>

KursusNr[KursusNr.length] = {'nummer':<?echo $nummer?>,'titel':<?echo $titel?>,'dato':<?echo $dato?>,'pris':<?echo $pris?>};

<?
/*movenext*/

/*Luk databasen og afslut output*/
?>

-- så kan du aflæse alle data med javascript, f.eks. onload eller onchange på kursusnummer-feltet !-)
Avatar billede Slettet bruger
07. september 2004 - 14:16 #7
Aha, nu tror jeg ( bemærk jeg skrev: tror jeg ), at jeg begynder at forstå lidt af det :-) Det vil jeg rode videre med. Du må hellere lægge et svar, og så vil jeg kaste mig over kodningen, og se om jeg kan få det til at fungere. Det virker smart, og jeg håber jeg får det til at virke.

Tak for tipsene.
Avatar billede roenving Novice
07. september 2004 - 14:23 #8
-- og så bliver funktionen iøvrigt rasende enkel:

function addKursusNr(f){
  kursusnummer = f.KursNr.value;
  for(i=0;KursusNr.length>i;i++){
    if(KursusNr[i].nummer == kursusnummer){
      f.KursTitel.value = KursusNr[i].titel;
      f.KursDato.value = KursusNr[i].dato;
      f.KursPris.value = KursusNr[i].pris;
      break;
    }
  }
}

-- bemærk at jeg ændrede feltnavn (til KursNr !-), for visse browsere kan have problemer med den slags ens variabel-navne ...

-- og velbekomme '-)
Avatar billede roenving Novice
07. september 2004 - 14:25 #9
-- Tak for point ;~}
Avatar billede Slettet bruger
07. september 2004 - 14:25 #10
Selv tak - det er jo en fornøjelse. Jeg er i fuld gang med dit eksempel :-)
Avatar billede Slettet bruger
07. september 2004 - 14:37 #11
Jeg får at vide at:

kursusnummer = f.KursNr.value;  KursNr er tom.

Skal den ikke kaldes med:

onchange="addKursusNr(this);"
Avatar billede Slettet bruger
07. september 2004 - 14:49 #12
Nu fik jeg rettet et par skrivefejl, og så skriver den en den venter et } i anden linie af kursus.php filen. Der er sådan en i slutningen af alle linierne. Den genererer fint de variabler, men komme med en fejl, jeg ikke kan gennemskue.

Den er lavet sådan her:

KursusNr[KursusNr.length] = {'nummer':<?php echo $row_rsVisKursus['KursusNr']; ?>,'titel':<?php echo $row_rsVisKursus['KursTitel']; ?>,'dato':<?php echo $row_rsVisKursus['Dato']; ?>,'Pris':<?php echo $row_rsVisKursus['Pris']; ?>};
Avatar billede roenving Novice
07. september 2004 - 16:58 #13
onchange="addKursusNr(this.form);" !-)
Avatar billede Slettet bruger
07. september 2004 - 17:02 #14
Ok. Tak for det. Den skriver der er fejl i denne linie. Den forventer et }

KursusNr[KursusNr.length] = {'nummer':4364,'titel':Komposition med børn,'dato':11-08-2004 09:00:00,'Pris':640};

det er linie 3 af de generedere data fra kursus.php. Jeg synes de ser rigtige ud efter din opskrift.
Avatar billede roenving Novice
07. september 2004 - 17:09 #15
Der dummede jeg mig, sådan:

KursusNr[KursusNr.length] = {'nummer':'<?echo $nummer?>','titel':'<?echo $titel?>','dato':'<?echo $dato?>','pris':'<?echo $pris?>'};

-- det er ø'et den kløjs i, så det er nødvendigt med plingerne !-)

-- og så satte jeg alle værdierne i plinger, da de jo alligevel skal bruges i form-felter !o]
Avatar billede Slettet bruger
07. september 2004 - 17:13 #16
Ok, det er rettet, så kommer der den samme fejl i linie 63 som er:

KursusNr[KursusNr.length] = {'nummer':'4363','titel':'Litteraturundervisning på mellemtrinnet','dato':'16-09-2004 09:00:00','Pris':'580'};

Kan du se fejl i den ?
Avatar billede roenving Novice
07. september 2004 - 17:18 #17
-- er du sikker på, at du ikke i en linje meget tæt på, har en tekst med en apostrof i ?-)
Avatar billede Slettet bruger
07. september 2004 - 17:22 #18
Det er der, den fjerner jeg lige, eller kan man gøre noget så den kan blive stående ?
Avatar billede Slettet bruger
07. september 2004 - 17:26 #19
Så kom den fejl ikke mere. Så komme denne i et lille skilt:

Linie 14:
Error: 'KursNr.value' is null or not an object

Hvad kan det så skyldes. Det er da mere besværligt end jeg regnede med da jeg startede :-) Desværre er jeg ikke rigtig inde i det, så det er svært at finde fejl.
Avatar billede roenving Novice
07. september 2004 - 17:26 #20
Apostroffer skal escapes, hvis de skal bruges inde i en tekststreng defineret med apostroffer (forøvrigt ligesom i php !-)

-- du kan også bruge ""er i stedet for 'erne i javascript-tingen ...

-- men jeg valgte plingerne, hvis du senere skulle støde ind i en lille ombygning, hvor du i stedet echoede objekterne ...

-- er der ikke en funktion i php, hvor man automatisk kan sætte slashes (i familie med stripslashes !o)
Avatar billede roenving Novice
07. september 2004 - 17:27 #21
Det er jo feltnavnet, som jeg ændrede i scriptet, det skal jo også ændres i formen (og dit php-script !-)
Avatar billede Slettet bruger
07. september 2004 - 17:28 #22
Er det dem her ?  KursusNr[KursusNr.length]  der skal rettes
Avatar billede Slettet bruger
07. september 2004 - 17:43 #23
Ved at ændre denne:

function addKursusNr(f){
  kursusnummer = f.KursusNr.value;

Fra det du gjorde, virker det nu, bortset fra at den skriver at Pris er undefined. Men der er nok stadig et eller andet forkert et sted. Jeg kan ikke gennemskue hvilke variabler jeg skal ændre hvor for ikke at få problemer, som du skrev tidligere.
Avatar billede roenving Novice
07. september 2004 - 17:43 #24
Næh, det er:

<input type="text" name="KursNr">

-- og så også $_POST(KursNr) (eller hvordan det nu ser ud i php !-) i dit script, som skal bruge oplysningen !o]
Avatar billede Slettet bruger
07. september 2004 - 17:56 #25
Så fik jeg den pris på plads også. Jeg havde skrevet det med stort P i kursus.php.

Så nu virker det, ser det ud til,men altså uden den rettelse der kan give problemer i andre browsere, som du skrev. Det kan jeg ikke lige gennemskue nu.

Men tusind tak for din tålmodighed.
Avatar billede roenving Novice
07. september 2004 - 17:58 #26
Den kan kun potentielt give fejl i IE og Opera, så det skal du ikke bekymre dig !-)
Avatar billede Slettet bruger
07. september 2004 - 17:59 #27
Ok, så tager jeg det roligt ind til videre. Tak.

Det giver tilsyneladende ikke problemer i IE eller Mozilla Firefox som jeg har prøvet det i nu.
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