webForumDet fria alternativet

1st bokning/daum

ASP

12 svar · 703 visningar · startad av Biasse

Medlem sedan aug. 2003480 inlägg
Frågan#1

Om man har en bokning (i detta fall en hyrsjö). Hur gör man för att det bara ska gå att boka en sjö 1ggr på samma datum? Att kolla mot dagens datum förstår jag men sen kan det ju vara 1 av 6 olika sjöar... En if-sats men rätt jämförelse men hur :q

dagensdatum = date()
If dNewDatum = dagensdatum Then

<p>Redan bokad</p>

Else

bla bla bla

Men sen...........

Form koden:

<form method=post action="add_admin.asp?action=add&id=<%=sNew%>" name="form" onSubmit="return validateForm()">

<input type="hidden" name="datum" value="<%=dNewDatum%>">
<input type="hidden" name="id" value="<%=id%>">
<input type="hidden" name="new" value="<%=sNew%>">
<input type="hidden" name="rubrik" value="Preleminär Bokat">
<input type="hidden" name="bokad" value="1">
  
  <tr>
    <td align="center">Ny Preleminär Bokning</td>
  </tr>
  
  <tr>
    <td><br>Datum:&nbsp;<%=dNewDatum%></td>
  </tr>
  
  <tr>
    <td><br>Förnamn & Efternamn<br>
    <input type="text" name="namn" size="54"></td>
  </tr>
   
  <tr>  
     <td>Adress<br>
     <input type="text" name="adress" size="54"></td>
  </tr>
  
  <tr>     
     <td>Postnummer & Ort<br>
     <input type="text" name="postadress" size="54">
     </td>
  </tr>
  
  <tr>     
     <td>Telefon nummer<br>
     <input type="text" name="telefon" size="54">
     </td>
  </tr>
  
  <tr>     
     <td>
     Email<br>
     <input type="text" name="email" size="54">
     </td>
  </tr>
  
  <tr>     
     <td>Hyrsjö<br>
      
     <select name="handelse">
     <option value="">-Välj-</option>
     <option value="Åstjärn">Åstjärn</option>
     <option value="Abbortjärn">Abbortjärn</option>
     <option value="Kroktjärn">Kroktjärn</option>
     <option value="Laxtjärn">Laxtjärn</option>
     <option value="Lövtjärn">Lövtjärn</option>
     <option value="Hemtjärn">Hemtjärn</option>
     </select>
    </td>
  </tr>
  
  <tr>
    <td align=center><br><input type="submit" name="submit" value="Spara Bokningen"></td>
  </tr>
  
</table>
</form>
Medlem sedan juni 20019 519 inlägg
#2

Och vad ar dNewDatum for varde? har du konverterat det till datum CDate(value) ? Om det ar flera sjoar som man kan boka sa maste du kolla aven om den redan finns bokad ocksa med en SQL fraga eller var du har denna data om den ar bokad eller inte.

sql fraga kan se ut nagot liknande:

"SELECT * FROM tblBookings WHERE BookingDate = #" & CDate(formDatumet) & "# AND BookingLake = '" & FormLakeName & "'"

och om Recordsetet ar EOF sa har ingen gjort bokningen pa sjon annu. # ar access for datum du skrev inte vilken databas du anvander dig av men hoppas du forstar.

Medlem sedan aug. 2003480 inlägg
#3

Vet inte om jag krånglat till det nånstanns men den nekar alla sjöar såhär.
Datum=bokningsdatum & "handelse" innehåller sjönamnet om det bokats.

If Request("action") = "add" then

kollHandelse = Fixinput(Request.Form("handelse"))
bokDatum = Fixinput(Request.Form("datum"))

Set RS3 = Conn.Execute("select * from kalender where datum = "& bokDatum &" AND handelse = '"& kollHandelse &"'")

If RS3.EOF Then 
%>

<table border="0" align="center" cellspacing="0" cellpadding="0">

  <tr>
    <td>Boknings Info</td>
  </tr>
  
  <tr>
    <td><%=kollHandelse%></b> är redan bokad detta datum. Du måste välja en annan av våra sjöar eller välja ett nytt datum och prova igen.<br><br>mvh /Trille</td>
  </tr>
  
</table>

<%
Else
  
  strDatum 			= Request.Form("datum")
  strNamn 			= Fixinput(Request.Form("namn"))
  strAdress 		= Fixinput(Request.Form("adress"))
  strPostadress 	= Fixinput(Request.form("postadress"))
  strTelefon 		= Fixinput(Request.Form("telefon"))
  strHandelse 		= Fixinput(Request.Form("handelse"))
  strBokad 		    = Fixinput(Request.Form("bokad"))
  strEmail 		    = Fixinput(Request.Form("email"))
  
  sql = "insert into kalender (datum,namn,adress,postadress,telefon,handelse,bokad,email) "
  sql = sql & "values('" & strDatum & "','" & strNamn & "','" & strAdress & "','" & strPostadress & "','" & strTelefon & "','" & strHandelse & "','" & strBokad & "','" & strEmail & "')"
  
  Conn.Execute SQL,,128
  Conn.Close  
  Set Conn = Nothing
  
  Response.Redirect"add_admin.asp?action=klart"
    
End If
End If
Medlem sedan juni 200032 967 inlägg
#4
If [b]not[/b] RS3.EOF Then
Medlem sedan aug. 2003480 inlägg
#5

re:

Det verkar vara nått med sql raden..

select * from kalender where datum = "& bokDatum &" AND handelse = '"& kollHandelse &"'

Det finns en post inlagt i mdb som har samma datum och sjö=Åstjärn. Men väljer jag samma datum fast sjö=Abborrtjärn får jag iallafall svar att sjön är bokad.

Abborrtjärn finns inte ens inlagd i databasen så det verkar neka bara det är samma datum?

Medlem sedan juni 200032 967 inlägg
#6

Menar du att det, trots ändringen jag föreslog, blir smäll på alla sjöar?

Skriv ut SQL-frågan med Response.Write så kan du se om det är något konstigt. Exempelvis borde du ha något runt datumet (syns inte i den kod du postat) - brädgårdar om du använder Access.

Medlem sedan aug. 2003480 inlägg
#7
Set RS3 = Conn.Execute("SELECT * FROM kalender WHERE #"& CDate(datum) &"# = "& valtDatum &" AND handelse = '"& valdHandelse &"'")

Med

If not RS3.EOF Then

godkänner den allt rakt av. Utan NOT ingen.

Kan det vara nått med att åäö används?

Medlem sedan juni 200032 967 inlägg
#8

Den SQL-frågan är felaktig. Det är datumvärdet som ska ha brädgårdar runt sig.
Om man har problem med att SQL-frågor inte ger det resultat man tänkt sig skall man skriva ut frågan - så man kan se exakt vad den innehåller.

Medlem sedan aug. 2003480 inlägg
#9

Ja det var brädgårdarna som var på fel ställe. Nu funkar det :)

Set RS3 = Conn.Execute("SELECT * FROM kalender WHERE datum = #"& valtDatum &"# AND handelse = '"& valdHandelse &"'")

Jag har inte lärt mig att skriva ut en sql fråga som du säger men det bör vara dags att klara det nu. Hur skriver jag ut den riktigt så jag slipper dessa problem i framtiden?

Medlem sedan juni 200032 967 inlägg
#10

Om man tar för vana att alltid lägga SQL-frågan i en variabel så är det enkelt att både exekvera och skriva ut för att felsöka.

strSQL = "SELECT * FROM kalender WHERE datum = #"& valtDatum &"# AND handelse = '"& valdHandelse &"'"
Response.write strSQL
Set RS3 = Conn.Execute (strSQL)

Om SQL-frågan genererar felmeddelande kan du vara tvungen att kommentera bort execute-raden (lite beroende på hur server/webbläsare är inställda).

Medlem sedan aug. 2003480 inlägg
#11

Tack.. Är nu sparat här :)

Medlem sedan juni 200032 967 inlägg
#12

Vasse! :)

Medlem sedan aug. 2003480 inlägg
#13

följdfråga

Jag fick hjälp att få till det så man inte kan dubbelboka en sjö med denna kod

Set RS3 = Conn.Execute("SELECT * FROM kalender WHERE datum = #"& valtDatum &"# AND handelse = '"& valdHandelse &"'")

Jag har en följdfråga ang den och det är om det bara ska gå att boka en sjö 5 dagar från idag. Om man använder "idagDatum=date()"..?..

Kan man med lite mer finness få till det på nått vis då? Alltså från idag +5 dagar annars ska ett felmeddelande komma att det inte ska gå utan man får välja ett nytt datum längre fram. Det bör då även stoppa bokning på äldre datum. Hoppas jag kunde förklara nu ;)

261 ms totalt · 4 externa anrop · v20260731065814-full.868a69e5
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)