Avatar billede webtiger Nybegynder
16. august 2000 - 20:41 Der er 12 kommentarer og
1 løsning

Asp-fil vil ikke åbne på www - onlinebestilling/database

Hej

Denne fil (modtag.asp) virker fint lokalt på min PWS og opdaterer min Access-97 database fint, men den kan ikke åbnes på www hos Cybercity som den eneste fil blandt mange. Jeg har checket igen og igen for fejl, men jeg har som nubegynder ikke kunnet finde fejlen.

Filen er \"sidste\" fil i rækken af en onlinebestilling. Min midterste frame kan ses på http://www.web-tiger.dk/kc/framebestil.htm

<% @language=JavaScript %>

<!-- #include file=\"database.js\" -->
<!-- #include file=\"string.js\" -->

<%
  OK = 0;
  FORKERT_KODEORD = 1;
  KUNDE_EKSISTERER = 2;

  objConnection = Server.CreateObject(\"ADODB.Connection\");
strConn = \"Provider=Microsoft.Jet.OLEDB.4.0; Data Source =\" +
          Server.MapPath(\"kc.mdb\");
objConnection.Open(strConn);

  // kontroller først, om kunden er logget ind
  id = -1;
  if (Request.Cookies(\"kundeid\") != \"\")
    {
      id = opdaterKunde(Request.Cookies(\"kundeid\"));
    } else
    {
      id = tilfojKunde();
    }

  // registrer ordren
  Application.Lock();
  objConnection.execute(\"INSERT INTO ordre (kunde, dato, leveringsdato) VALUES(\" + id + \", \" + toSqlDate(new Date()) + \", \" + Request.Form(\"leveringsdato\") + \")\");
  res = objConnection.execute(\"SELECT id FROM ordre WHERE kunde=\" + id + \" ORDER BY id DESC\");
  ordrenummer = res.Fields(\"id\");
  Application.Unlock();

  produktantal = Session(\"produktantal\");
  for (i = 0; i < produktantal; i++)
    {
    sql = \"INSERT INTO ordrelinie (produkt, antal, ordre) VALUES (\";
    sql += Session(\"produkt\"+i);
    sql += \", \";
    sql += Session(\"antal\"+i);
    sql += \", \";
    sql += ordrenummer;
    sql += \")\";
      objConnection.execute(sql);
      }
  printResult(OK);

  function opdaterKunde(id)
    {
    sql = \"UPDATE kunde SET \";
    sql += \"Kodeord=\'\" + Request.Form(\"kodeord\") + \"\', \";
    sql += \"Kundenr=\" + Request.Form(\"Kundenr\") + \" , \";
    sql += \"Navn=\'\" + Request.Form(\"Navn\") + \"\', \";
    sql += \"Adresse=\'\" + Request.Form(\"Adresse\") + \"\', \";
    sql += \"Postnummer=\" + Request.Form(\"Postnummer\") + \" , \";
    sql += \"Postdistrikt=\'\" + Request.Form(\"Postdistrikt\") + \"\', \";
    sql += \"Email=\'\" + Request.Form(\"Email\") + \"\'\";
    sql += \" WHERE id=\" + id;
    objConnection.execute(sql);
      return id;
      }

  function tilfojKunde(id)
    {
    // kontroller, at de to kodeord er ens
    if (!strcmp(Request.Form(\"kodeord\"),Request.Form(\"kodeord2\")))
    {
        printResult(FORKERT_KODEORD);
        }

    // kontroller, at der ikke allerede eksisterer en kunde med den email-adresse
    res = objConnection.execute(\"SELECT id FROM kunde WHERE email=\'\" + Request.Form(\"Email\") + \"\'\");
    if (!res.EOF)
    {
    // kunden eksisterer
        printResult(KUNDE_EKSISTERER);
        }

      sql = \"INSERT INTO Kunde (Kundenr, Navn, Adresse, Postnummer, Postdistrikt, Email, Kodeord) VALUES (\";
      sql += Request.Form(\"Kundenr\") + \", \";
    sql += \"\'\" + Request.Form(\"Navn\") + \"\', \";
      sql += \"\'\" + Request.Form(\"Adresse\") + \"\', \";
      sql += Request.Form(\"Postnummer\") + \", \";
      sql += \"\'\" + Request.Form(\"Postdistrikt\") + \"\', \";
      sql += \"\'\" + Request.Form(\"Email\") + \"\', \";
      sql += \"\'\" + Request.Form(\"kodeord\") + \"\')\";

      objConnection.execute(sql);

      res = objConnection.execute(\"SELECT id FROM kunde WHERE Email=\'\" + Request.Form(\"Email\") + \"\'\");
    return res.Fields(\"id\");


    }

  function printResult(status)
    {
%>

<html>
<head>
    <title>K.C. Frugt Aps [Indkøbskurv]</title>
</head>

<body bgcolor=\"#99CC99\">
<table background=\"vandret.jpg\" width=\"100%\">
  <tr><td>
<div align=\"center\"><b><font face=\"Arial, Helvetica, sans-serif\" size=\"6\" color=\"#99CC99\">K.C.
  FRUGT <font size=\"4\">ApS</font></font></b> </div></td></tr></table><table>
<tr>

    <td> <%
  if (status == OK)
    {
%> <br>
      <h4><font face=\"Times New Roman, Times, serif\" color=\"#333300\">Ordrebekræftelse.</font><font face=\"Times New Roman, Times, serif\" size=\"2\" color=\"#333300\"><br>
        Din ordre er nu blevet afsendt. Den har fået online-ordrenummer <%=ordrenummer%>.
        Opgiv venligst dette nummer, hvis du har spørgsmål angående din ordre.</font></h4>
      <font color=\"#333300\"><%

  produktantal = Session(\"produktantal\");
  undefined = Session(\"garbage\");
  totalpris = 0;   
%> </font>
      <table width=70% cellpadding=\"2\" cellspacing=\"0\" border=\"2\" bordercolor=\"#336600\" align=\"center\">
        <TR>
          <td height=\"29\" width=\"11%\"><font color=\"#303000\"><b><font face=\"Times New Roman, Times, serif\" size=\"-1\">Antal</font></b></font></td>
          <td height=\"29\" width=\"49%\"><font color=\"#303000\"><b><font face=\"Times New Roman, Times, serif\" size=\"-1\">Varenavn</font></b></font></td>
          <td height=\"29\" width=\"23%\">
            <div align=\"right\"><font color=\"#303000\"><b><font face=\"Times New Roman, Times, serif\" size=\"-1\">kr.
              pr enhed</font></b></font></div>
          </td>
          <td height=\"29\" width=\"17%\">
            <div align=\"right\"><font color=\"#303000\"><b><font face=\"Times New Roman, Times, serif\" size=\"-1\">kr.
              i alt</font></b></font></div>
          </td>
        </tr>
        <%
  for (i = 0; i < produktantal; i++) {
      if (Session(\"antal\"+i) == 0) {
          continue;
      }
%>
        <tr>
          <td width=\"11%\"> <font face=\"Times New Roman, Times, serif\" size=\"-1\" color=\"#303000\"><%=Session(\"antal\"+i)%>
            </font></td>
          <td width=\"49%\"> <font face=\"Times New Roman, Times, serif\" size=\"-1\" color=\"#303000\"><%
  res = objConnection.execute(\"SELECT Varenavn, Pris FROM Produkt WHERE id=\" + Session(\"produkt\"+i));
%> <%=res.Fields(\"Varenavn\")%> </font></td>
          <td align=right width=\"23%\"> <font face=\"Times New Roman, Times, serif\" size=\"-1\" color=\"#303000\"><%
  produktpris = res.Fields(\"Pris\");
%> <%=produktpris%> </font></td>
          <td align=right width=\"17%\"> <font face=\"Times New Roman, Times, serif\" size=\"-1\" color=\"#303000\"><%=Math.round(produktpris * Session(\"antal\"+i) * 100) / 100%>
            <%
      totalpris += Math.round(produktpris * Session(\"antal\"+i) * 100) / 100;
  %> </font></td>
        </tr>
        <%
  }
%>
        <tr>
          <td colspan=\"3\"><font face=\"Times New Roman, Times, serif\" size=\"-1\" color=\"#303000\"><b>Total</b></font></td>
          <td align=right width=\"17%\"><font face=\"Times New Roman, Times, serif\" size=\"-1\" color=\"#303000\"><b><%=totalpris%>
            </b></font></td>
        </tr>
      </table>
      <h5><font color=\"#333300\"><%

Response.Write(\"Leveringsdato:\");
Response.Write(\"&nbsp;&nbsp;\");
Response.Write(Request.Form(\"Leveringsdato\"));
Response.Write(\"<br>\");
Response.Write(\"Kundenr:\");
Response.Write(\"&nbsp;&nbsp;\");
Response.Write(Request.Form(\"Kundenr\"));
Response.Write(\"<br>\");
Response.Write(\"Navn:\");
Response.Write(\"&nbsp;&nbsp;\");
Response.Write(Request.Form(\"Navn\"));
Response.Write(\"<br>\");
Response.Write(\"Adresse:\");
Response.Write(\"&nbsp;&nbsp;\");
Response.Write(Request.Form(\"Adresse\"));
Response.Write(\"<br>\");
Response.Write(\"Postnummer og by:\");
Response.Write(\"&nbsp;&nbsp;\");
Response.Write(Request.Form(\"Postnummer\"));
Response.Write(\"&nbsp;&nbsp;\");
Response.Write(Request.Form(\"Postdistrikt\"));
Response.Write(\"<br>\");
Response.Write(\"Emailadresse:\");
Response.Write(\"&nbsp;&nbsp;\");
Response.Write(Request.Form(\"Email\"));
Response.Write(\"<br>\");
Response.Write(\"Kodeord:\");
Response.Write(\"&nbsp;&nbsp;\");
Response.Write(Request.Form(\"kodeord\"));
Response.Write(\"<br>\");
%> </font> </h5>
      <h5> <font color=\"#333300\">&nbsp;Det anbefales at tage et print af denne
        side.</font></h5>
      <p><font face=\"Times New Roman, Times, serif\" size=\"-1\" color=\"#333300\">
        Eventuelle spørgsmål og kommentarer kan sendes til <a href=mailto:tiger@web-tiger.dk>tiger@web-tiger.dk</a>.
        </font>
      <p><font face=\"Times New Roman, Times, serif\" size=\"-1\" color=\"#333300\">
        Tak, fordi du handlede hos K.C. Frugt Aps. </font>
      <p><font face=\"Times New Roman, Times, serif\" size=\"-1\" color=\"#333300\"><a href=\"frame.htm\" target=\"_top\">Retur
        til forsiden</a></font>
      <p> <font face=\"Times New Roman, Times, serif\" size=\"-1\"><%
    }
    else if (status == FORKERT_KODEORD || status == KUNDE_EKSISTERER) {
%> </font>
      <h5><font face=\"Times New Roman, Times, serif\">Fejl</font></h5>
      <font face=\"Times New Roman, Times, serif\" size=\"-1\">Der opstod en fejl i forbindelse
      med afsendelse af din ordre. Din ordre er ikke afsendt! </font>
      <p> <font face=\"Times New Roman, Times, serif\" size=\"-1\"><%
    if (status == FORKERT_KODEORD)
    {
%> De to indtastede kodeord var ikke ens. Hvis du vil registreres som kunde og
        blive genkendt, når du vender tilbage til K.C. Frugt Aps, skal du vælge
        et kodeord og gentage dette på afsendelsessiden. Hvis du ikke vil registreres,
        skal du lade begge felter være blanke. </font>
      <p><font face=\"Times New Roman, Times, serif\" size=\"-1\"> Klik <a href=afsend.asp>her</a>
        for at komme tilbage til afsendelssiden. <%
    } else
    {
%> Der er allerede registreret en kunde med den angivne email-adresse (<%=Request.Form(\"Email\")%>).
        Hvis du har indtastet email-adressen korrekt, skal du <a href=login.asp>logge
        ind</a> ved at angive din email-adresse og dit kodeord. </font>
      <p><font face=\"Times New Roman, Times, serif\" size=\"-1\"> Hvis du vil indtaste
        en anden email-adresse, kan du gøre det på <a href=afsend.asp>afsendelsessiden</a>.
        <%
    }

    }
%> </font>
    </td>
 
  </tr>
</table>
</body></html>
<%
    Response.End();
    }
%>


Mvh
Anni

Avatar billede ricardo Nybegynder
16. august 2000 - 20:59 #1
Hvad er det for en fil du hentyder til? Det ser ud til, at der er noget der hænger, men

Ellers synes jeg det er rart at nogen koder deres ASP i javascript...men det ser lidt mærkelig ud som du skifter til HTML-mode midt i en funktion.

(og forresten kan det lade sig gøre at downloade din database...frk. O)
Avatar billede mhedex Nybegynder
16. august 2000 - 21:14 #2
>Ricardo..
Det var da pænt af dig, at fortælle alle os andre, at databasen kan downloades... NOT!

:=(
Avatar billede webtiger Nybegynder
16. august 2000 - 21:39 #3
>Ricardo

Jeg hentyder til filen længere nede i spørgsmålet startende med

<% @language=JavaScript %>

Jeg ved godt, at man kan downloade databasen, men det kræver jo, at man kender fil-navnet og på www kan du jo ikke se asp-koden.

:-)
Anni


Avatar billede flemming Nybegynder
16. august 2000 - 22:26 #4
Er du sikker på at du kan connecte på dit web hotel med \"OLEDB\" (i think not)

Hvis jeg var dig ville jeg lave en DSN Less forbindelse til databasen. kig evt her:
http://www.activeserverpages.dk

Et par kommentarer i øvrigt. Du har lagt din database i roden af direktoriet. Er du sikker på at anonym bruger har skrive rettigheder der ?

Du bør aldrig navngive dine filer med extension .js (eller for den sags skyld) INC. kald dem istedet for js.asp - således at man ikke at man kan læse dem. Selv om du mener at man skal kende navnet på din database - så ville jeg tro at der nok er mere end en person der ville gætte på noget i stal med \"database\" ;=)

Avatar billede webtiger Nybegynder
17. august 2000 - 06:48 #5
>Flemming

I de øvrige filer har jeg brugt OLEDB og de henter oplysninger fra mdb fint, men denne fil skal jo opdatere databasen, så jeg ved ikke om, det giver problemer ?

Jeg har prøvet med en DSNLess forbindelse, men jeg kunne ikke finde ud af at omskrive den fra VBScript til JavaScript jvf http://www.eksperten.dk/spm/23167

Jeg er ikke sikker på skriverettighederne for anonyme brugere på www mht til filplaceringen af databasen, men jeg ved, at det virker lokalt på min PWS.

God idé mht filextention - det råd vil jeg følge.

Jeg er som sagt nybegynder indenfor ASP, så jeg har lænet mig op ad bogen: \"Active Server Pages dynamiske web-sider\" af Kristian Hansen og Karim Pedersen. Bogen er god, men fyldt med fejl i eksemplet på en ASP-applikation og han bruger  filextentionen js. Bogen er lige udkommet i juli måned !

:-)
Anni



Avatar billede ricardo Nybegynder
17. august 2000 - 12:24 #6
>> Er du sikker på at du kan connecte på dit web hotel med \"OLEDB\"

OLE DB er langt bedre end ODBC, og hvis webtiger ikke kunne connecte, kunne hun ikke hente fra den - hvad hun bevisligt gør.

Jeg tror den hænger pga. denne linie i opdaterKunde():

>>  return id;

du behøver ikke får den til at returnere en id, da Request.Cookies(\"kundeid\") kan give dig den - det er jo det argument du bruger for at finde kunden. Prøv at kommentere det ud.

>> Det var da pænt af dig, at fortælle alle os andre, at databasen kan downloades... NOT!

Duh. Kunne du ikke se det?
Avatar billede webtiger Nybegynder
17. august 2000 - 16:54 #7
>>ricardo
>\"Prøv at kommentere det ud. \"

Hvordan ?

Jeg prøvede at slette linien, men det hjalp ikke.

:-(

Avatar billede ricardo Nybegynder
17. august 2000 - 17:47 #8
webtiger: du har givet dig i kast med noget, der er en tand mere avanceret end du selv kan overskue: det fører til problemer.

Hvis jeg var dig ville jeg begynde forfra med de enkle ting, så du vænner dig til syntaksen og faldgruberne.

Du kunne begynde med at splitte filen op i flere: man kan godt lave mange ting med en fil, men det gør det svært at debugge.

Sorry, men jeg kan ikke sige mere end det.
Avatar billede phylox2 Nybegynder
18. august 2000 - 21:44 #9
objConnection = Server.CreateObject(\"ADODB.Connection\");
strConn = \"Provider=Microsoft.Jet.OLEDB.4.0; Data Source =\" +
          Server.MapPath(\"kc.mdb\");
objConnection.Open(strConn, 1, 3);

Prøv at bruge følgende og se, hvad der sker !
Avatar billede webtiger Nybegynder
19. august 2000 - 09:51 #10
>>phylox2

Desværre - siden vil stadig ikke åbne.

:-(
Anni
Avatar billede webtiger Nybegynder
21. august 2000 - 17:29 #11
Hjælp - dette er en hastesag !

Hvem vil hjælpe mig mod betaling i DKK ?

Mvh
Anni
Avatar billede phylox2 Nybegynder
21. august 2000 - 23:22 #12
Jeg kan sgu ikke det der JavsScripting ASP code - jeg er mere til VBscript :)
Avatar billede webtiger Nybegynder
24. august 2000 - 15:37 #13
Hurra - jeg løste selv problemet !
Det var ikke en programmeringsfejl, men at databasen lå i et bibliotek hos Cybercity, hvor der ikke var givet skriverettigheder til databaser. Databasen skulle ligge i et særligt bibliotek. Det havde jeg ikke fået noget at vide om, da jeg oprettede mit asp-domaine.

Tak for indsatsen til alle.

;-)
Anni

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
Kurser inden for grundlæggende programmering

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