Hej!
Kan man göra ett dynamiskt inmatningsformulär med textrutor? Har försökt lite men jag har svårt att hålla i sär Html och ASP. det jag vill göra är att på en sida kan man välja hur många textrutor som ska visas på nästa sida.
Det hela hör i hop med min CD-databas. Alla skivor har ju inte samma antal låtar, och jag vill inte ha tomma fält i databasen.........
<form action="denna_fil.asp" method="post">
<%
If Request.Form("ant_chk") = "" then
%>
<input type="text" name="ant_chk">
<input type="submit" name="b1">
<%
Else
For i = 1 To Request.Form("ant_chk")
%>
<input type="text" name="song<%=i%>">
<%
Next
End If
%>
<input type="submit" name="b1">
</form>
Nu kommer du att få så många fält som du skriver in i formuläret innan... med namnen song1, song2, song3 osv...
Lättast är att loopa igenom alla objekt i Request.Form... och sedan i loopen göra en If-sats eller en Case, och alla objekt som dom första fyra bokstäverna är "song", dessa är då låtar... Sedan bygger du SQL-strängen dynamiskt utifrån det...
------------------ Nu har du sjungit på sista refrängen Jourhavande Vide
Ett annat sätt kan väl vara att bara ha en textarea som man skriver in låttitlarna i, med ex. ett mellanslag emellan.
Eftersom man antagligen lägger låtarna i en enskild tabell så borde det gå fint att använda Split() för att skapa en array av textsträngen som innehåller låttitlarna.
Sen så går det ju fint att loopa igenom arrayn och skicka in datan i den aktuella tabellen. På så vis så slipper man det extra steget när man skall tala om hur många titlar man vill registrera
Det borde väl fungera fint om man bara skall mata in låttitlarna?
...bara lite alternativa funderingar alltså. ;)
------------------
"Life's a bitch who sucks... then you marry one who doesn't"
<%@ Language = VBScript %>
<% Option Explicit %>
<!--#INCLUDE FILE="adovbs.inc" -->
<% Dim Antal
Dim i
%>
<% Antal = Request.Form("Antal") %>
<html>
<head>
<title>Mata in uppgifter!</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<form name="song_form" method="post" action="">
<%For i = 1 to CInt(Antal)%>
<input type="text" name="song<%=i%>"><BR>
<%next%>
<p>
<input type="submit" name="submit" value="Skicka!">
</p>
</form>
</body>
</html>
Jag har även gjort så att textfältets namn ökar med 1 hela tiden. MEN, när jag sedan skickar infon till tabellen i databasen måste ju även Form.Request vara lika många som textfälten och ha samma namn. Det blir nästa problem att lösa. man kanske kan ha det på samma sida, eller kan man skicka med en variabel?
Frågan är då hur man ska göra med Request.Form. Eftersom de måste variera med antalet låtar från sidan innan. Hur gör man det dynamiskt? Och nästa problem blir ju Insert/addNew. Den strängen måste ju också varieras med tanke på antal fält på sidan innan?
Beror på hur du har byggt din databas... Förslagsvis så har du en tabell men artist, en för album och en för låtar. Varje fält har ett unikt id.
I artist så har du statisk info om artisten.
I Album så har du fältet id och fältet album, i id lägger du in id:t på den artist som den tillhör , altså en relation till Tabellen Artist och fältet id där...
I songs har liknande album ett fält för id som kopplas till primärnyckeln i Album.
Sedan skapar du SQLsträngen dynamiskt:
<%
For each item in Request.Form
Select case Left(Item,4)
Case "song"
strSQL = "INSERT INTO songs (id, song)"
strSQL = strSQL&Albums_id&", "&Request.Form(item)
databas.execute(strSQL)
End Select
Next
%>
Nu har du fått en idé om hur det kan gå till... :)
------------------ Nu har du sjungit på sista refrängen Jourhavande Vide
Den här CD-databasen började som ett sätt att lära sig ASP, men ju mer jag lärt mig desto fler funktioner vill jag ha med....
Koden fungerar alldeles utmärkt och ser ut så här:
For each item in Request.Form
Select case Left(Item,4)
Case "song"
strSQL = "INSERT INTO song(album_id, song_name) VALUES(" & iAlbum_id & ", '" & Request.Form(item) & "')"
objConn.execute(strSQL)
End Select
Next
Nu är det så att jag vill ha fler dynamiska fält för varje låt/post. T ex. Längd, kompositör, text osv. Dessa fälten har jag gjort som med låtnamnsfältet, dvs att det första heter song1, det andra song2 osv. Kan man utöka koden för att även sätta in andra värden i tabellen. det ska ju ske i samma INSERT INTO sats.
------------------
Henke
[Redigerat av devotion den 26 jan 2001]
[Redigerat av devotion den 26 jan 2001]
263 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9