webForumDet fria alternativet

Hjälp med kodning - gästbok

8 svar · 701 visningar · startad av mariel

marielMedlem sedan okt. 2004430 inlägg
#1

Hej! Fälterna i min gästbok är:

Namn (obligatorisk)
E-mail (ej obligatorisk)
Kommentär (obligatorisk)

Om användaren inte skriver sitt e-mail, hur gör jag för att inte visa e-mail fältet och sedan "tom" (när det inte finns e-mail på databasen)?

En annan sak, hur kan jag spara datum utan att ha ett fält där man skriver datumet?

Jag använder DW Ultradev 4, Access, ASP+JScript men om det är lättare och bättre att använda VBScrip, kan jag ändra.

Tack!!!!

PS: ursäkta om min svenska inte är tillräckligt bra.

@ndersMedlem sedan juni 200032 969 inlägg
#2

Hej!

Om du visar den kod du har idag så ska det nog inte bli några problem för oss att ändra den så den gör det du önskar.

Angående datumfält:
Lägg till ett fält av datumtyp i tabellen. Sedan ändrar du egenskapen "standardvärde" / "default" till Now() eller Nu() beroende på språkversion.

Mvh

marielMedlem sedan okt. 2004430 inlägg
#3

Här är koden!

DW Ultradev gör ASP-koden åt mig. Mina mjukvarorprogram är på engelska.

Databasen (Access 2k)
id - Autonumber - primary key
nombre (namn) - text - required=yes
email - text - required=no
comentario (kommentär) - memo - required=yes
fecha (datum) - date/time - required=no (för tillfället)

@LANGUAGE="JAVASCRIPT"
#include file="../Connections/guestbook.asp"

// *** Edit Operations: declare variables

// set the form action variable
var MM_editAction = Request.ServerVariables("URL");
if (Request.QueryString) {
MM_editAction += "?" + Request.QueryString;
}

// boolean to abort record edit
var MM_abortEdit = false;

// query string to execute
var MM_editQuery = "";

// *** Insert Record: set variables

if (String(Request("MM_insert")) != "undefined") {

var MM_editConnection = MM_guestbook_STRING;
var MM_editTable = "librovis";
var MM_editRedirectUrl = "visamig.asp";
var MM_fieldsStr = "namn|value|email|value|kommentarer|value";
var MM_columnsStr = "nombre|',none,''|email|',none,''|comentario|',none,''";

// create the MM_fields and MM_columns arrays
var MM_fields = MM_fieldsStr.split("|");
var MM_columns = MM_columnsStr.split("|");

// set the form values
for (var i=0; i+1 MM_fields.length; i+=2) {
MM_fields[i+1] = String(Request.Form(MM_fields*));
}

// append the query string to the redirect URL
if (MM_editRedirectUrl && Request.QueryString && Request.QueryString.length 0) {
MM_editRedirectUrl += ((MM_editRedirectUrl.indexOf('?') == -1)?"?":"&") + Request.QueryString;
}
}

// *** Insert Record: construct a sql insert statement and execute it

if (String(Request("MM_insert")) != "undefined") {

// create the sql insert statement
var MM_tableValues = "", MM_dbValues = "";
for (var i=0; i+1 MM_fields.length; i+=2) {
var formVal = MM_fields[i+1];
var MM_typesArray = MM_columns[i+1].split(",");
var delim = (MM_typesArray[0] != "none") ? MM_typesArray[0] : "";
var altVal = (MM_typesArray[1] != "none") ? MM_typesArray[1] : "";
var emptyVal = (MM_typesArray[2] != "none") ? MM_typesArray[2] : "";
if (formVal == "" || formVal == "undefined") {
formVal = emptyVal;
} else {
if (altVal != "") {
formVal = altVal;
} else if (delim == "'") { // escape quotes
formVal = "'" + formVal.replace(/'/g,"''") + "'";
} else {
formVal = delim + formVal + delim;
}
}
MM_tableValues += ((i != 0) ? "," : "") + MM_columns*;
MM_dbValues += ((i != 0) ? "," : "") + formVal;
}
MM_editQuery = "insert into " + MM_editTable + " (" + MM_tableValues + ") values (" + MM_dbValues + ")";

if (!MM_abortEdit) {
// execute the insert
var MM_editCmd = Server.CreateObject('ADODB.Command');
MM_editCmd.ActiveConnection = MM_editConnection;
MM_editCmd.CommandText = MM_editQuery;
MM_editCmd.Execute();
MM_editCmd.ActiveConnection.Close();

if (MM_editRedirectUrl) {
  Response.Redirect(MM_editRedirectUrl);
}

}

}

var Recordset1 = Server.CreateObject("ADODB.Recordset");
Recordset1.ActiveConnection = MM_guestbook_STRING;
Recordset1.Source = "SELECT * FROM librovis";
Recordset1.CursorType = 0;
Recordset1.CursorLocation = 2;
Recordset1.LockType = 3;
Recordset1.Open();
var Recordset1_numRows = 0;

//kod från formuläret

 \<form ACTION="=MM_editAction" name="gbook-svensk" method="POST" onsubmit="return validacion(this)"\>
    \<table border=0 align=center\>
      \<tr\< 
       \<td width="98"\>\<font color=red\>\<b\>Namn:\</b\>\</font\>\</td\>
       \<td width="314" \>
          \<input type="text" name="namn" class="txt"\>
       \</td\>
      \</tr\>
     \<tr\>
       \< td width="98"\>\<b\>E-mail:\</b\>\</td\>
        \<td width="314"\>
         \<input type="text" name="email" class="txt"\>
        \</td\>
      \</tr\>
      \<tr\> 
        \<td width="98"\>\<font color=red\>\<b\>Kommentarer:\</b\>\</font\>\</td\>
        \<td width="314"\>
        \<textarea name="kommentarer" cols="30" rows="5" class="txta"\>\</textarea\>
        \</td\>
      \</tr\>
    \</table\>
    \<p align=center\> 
      \<input type="submit" name="Submit" value="Skicka" class="btn" onmouseover="this.className='btn btnhov'" onmouseout="this.className='btn'"\>
      \<input type="reset" name="Reset" value="Rensa" class="btn" onmouseover="this.className='btn btnhov'" onmouseout="this.className='btn'"\>
    \</p\>
    \<input type="hidden" name="MM_insert" value="true"\>
  \</form\>
  \<center\>\<a href="visamig.asp"Visa inlägg\</a\>\</center\>

Recordset1.Close();**

@ndersMedlem sedan juni 200032 969 inlägg
#4

Hmm. Jag ser ingen kod för att visa upp gästboksinläggen?

Dessutom; om du använder [kod]-taggar istället för

när du skriver ditt inlägg blir koden mer lättläst. :)

(sen verkar det ha blivit något knas med alla < och > i inlägget, men det kanske du märkt)

mvh

marielMedlem sedan okt. 2004430 inlägg
#5

åh men förlåt! det var första gången jag "postar" koden :)

här är visamig.asp koden

<%@LANGUAGE="JAVASCRIPT"%> 
<!--#include file="../Connections/guestbook.asp" -->
<%
var Recordset1 = Server.CreateObject("ADODB.Recordset");
Recordset1.ActiveConnection = MM_guestbook_STRING;
Recordset1.Source = "SELECT * FROM librovis ORDER BY id DESC";
Recordset1.CursorType = 0;
Recordset1.CursorLocation = 2;
Recordset1.LockType = 3;
Recordset1.Open();
var Recordset1_numRows = 0;
%>
<%
var Repeat1__numRows = 10;
var Repeat1__index = 0;
Recordset1_numRows += Repeat1__numRows;
%>
<html>
<head>
<title>Mariels webbsida - G&auml;stbok</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<br>
<table width="90%" border="1" align=center cellpadding=3 cellspacing=0>
  <tr>
    <td width="77%" bordercolor=gray valign=top>
	 <p align=center><b>Inlägg i min gästbok</b></p> 
     <table border=0>
        <% if (!Recordset1.EOF || !Recordset1.BOF) { %>
        <% while ((Repeat1__numRows-- != 0) && (!Recordset1.EOF)) { %>
        <tr> 
          <td valign=top><b>Namn:</b></td>
          <td valign=top><%= Recordset1.Fields("nombre")%></td>
        <tr> 
          <td valign=top><b>E-mail:</b></td>
          <td valign=top><%= Recordset1.Fields("email")%></td>
        <tr> 
          <td valign=top><b>Kommentarer:</b></td>
          <td valign=top><%= Recordset1.Fields("comentario")%></td>
		</tr>
		<tr><td><hr align=center></td></tr>
          <%
           Repeat1__index++;
           Recordset1.MoveNext();
          }
          %>
        <% } // end !Recordset1.EOF || !Recordset1.BOF %>
      </table>
    </td>
  </tr>
</table>
</body>
</html>
<%
Recordset1.Close();
%>
@ndersMedlem sedan juni 200032 969 inlägg
#6

Det saknas lite i din html-tabell, lite </tr> och sånt, jag har lagt till det här:

     <table border=0>
        <% if (!Recordset1.EOF || !Recordset1.BOF) { %>
        <% while ((Repeat1__numRows-- != 0) && (!Recordset1.EOF)) { %>
        <tr> 
          <td valign=top><b>Namn:</b></td>
          <td valign=top><%= Recordset1.Fields("nombre")%></td>
        [b]</tr>[/b]
        <% if (""+Recordset1.Fields("email")!="") { %>
        <tr> 
          <td valign=top><b>E-mail:</b></td>
          <td valign=top><%= Recordset1.Fields("email")%></td>
        [b]</tr>[/b]
        <% } %>
        <tr> 
          <td valign=top><b>Kommentarer:</b></td>
          <td valign=top><%= Recordset1.Fields("comentario")%></td>
		</tr>
		<tr><td><hr align=center></td></tr>
          <%
           Repeat1__index++;
           Recordset1.MoveNext();
          }
          %>
        <% } // end !Recordset1.EOF || !Recordset1.BOF %>
      </table>

Jag lade till en if-sats i koden så inte email visas när det är tomt, men det var ett tag sedan jag använde jscript, så jag är inte helt säker på att det ser ut som det ska. :)

mvh

marielMedlem sedan okt. 2004430 inlägg
#7

mr. @nders: "if" funkade kanonbra!!!!!!!!!!!!!!!! tack! och tack for de missade

</tr>

en sak till, angående kod i javascript för att kontrollera formuläret:

jag har den här koden:

  <script language="javascript">
   <!--
   function validacion(formulario) {
var er_nombre = /^([a-z]|[A-Z]|á|é|í|ó|ú|ñ|ü|å|ä|ö|\s|\.|-)+$/ //bokstäver, '.' y '-' eller tom 
var er_comentario = /^([a-z]|[A-Z]|á|é|í|ó|ú|ñ|ü|å|ä|ö|\!|\?|\s|\.|\,|-|[0-9\s\+\-])+$/	
      	
	//kontrollera fält namn
	if(!er_nombre.test(formulario.namn.value)) { 
		alert('Fel namn, var god ändra det')
		return false
	}   	  	

	//kontrollera fält kommentärer
	if(!er_comentario.test(formulario.kommentarer.value)) { 
		alert('Fel kommentar, var god ändra det')
		return false
	}   	

	return true			
   }
   -->
  </script>

hur gör jag för att "acceptera" tecken som " ' * mm.? jag försökte lägga till " som \" och det funkar inte.

@ndersMedlem sedan juni 200032 969 inlägg
#8

Nu börjar det bli jobbigt, åtminstone för min hjärna i alla fall. ;-)

Jag föreslår att du skapar en tråd i Javascript-forumet om detta problem med teckenvalideringen.

Mvh

marielMedlem sedan okt. 2004430 inlägg
#9

tack för ditt hjälp :)

137 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)