HJ: Metatags aus Datenbank

Hallo an alle,

bin auf der Suche, nach einer Möglichkeit mit asp.net Werte aus einer Datenbank als MetTag einzusetzen. Toll wären Title, Description und Keywords.

Ich hab auch schon was zusammengestrickt, aber bekomme es mangels Wissen nicht zum LAufen ;-(((

Wer kann mir Helfen oder zumindest richige Ansätze nennen??

Anbei der Codesalat:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ Page Language="C#" %>
<html dir="ltr">
<head runat="server">
<%
   string myConnString = Provider=Microsoft.ACE.OLEDB.12.0;
   Data Source=C:\Inetpub\Www_root\Arzneivergleich\fpdb\adressen.accdb;Persist Security Info=False;
   string mySelectQuery = "SELECT Firmentitel, Beschreibung, Keywords FROM Stammdaten WHERE ID=1";
   OleDbConnection myConnection = new OleDbConnection(myConnString);
   OleDbCommand myCommand = new OleDbCommand(mySelectQuery,myConnection);
   myConnection.Open();
   OleDbDataReader myReader;
   myReader = myCommand.ExecuteReader();

while (myReader.Read()) {
      Response.Write(myReader["Firmentitel"].ToString() + ", " + myReader["Beschreibung"].ToString());
   }

myReader.Close();
   myConnection.Close();
%>
<meta name="keywords" content="<%= varKeywords %>">
<meta name="description" content="<%= varBeschreibung %>">
<title><%= varFirmentitel %></title>
</head>
<body>
</body>
</html>

  1. Servus,

    Was steht denn in der ausgelieferten Seite bei den Keywords drin?
    Ich schätze mal nichts ;) Stattdessen steht alles einfach so auf der Seite?

    Ich sehe nämlich nirgendwo eine Wertezuweisung zu _varFirmentitel_ oder _varKeywords_.

    Du machst eine Datenbankabfrage, führst einen Reader aus und von jedem Datensatz aus der Abfrage schreibst du [Firmentitel] , [Beschreibung] einfach in die Seite, kurz nach <html><head> und vor <meta>. Danach weist lässt du den Inhalt von _varKeywords_, der nirgendwo vorher definiert ist in das MetaTag.

    Gruss,
    Frank

    1. Hallo Frank,

      mittlerweile sieht das aus wie folgt, funktioniert aber immer nocht nicht. Über ein kurzes Debugging wäre ich dankbar...

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
      <%@ Page Language="VB" ContentType="text/html" %>
      <%@ Import Namespace="System.Data" %>
      <%@ Import Namespace="System.Data.OleDb" %>
      <script runat="server"> Dim varFirmentitel As String

      Sub Load_Page
              Dim strConnect As String = System.Configuration.ConfigurationManager.AppSettings("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\WWW_root\Arzneivergleich\fpdb\adressen.mdb")
              Dim objConnect As New OleDbConnection(strConnect)
              Dim sqlCheck As String = "SELECT * FROM Stammdaten WHERE Firmentitel=" & Request.QueryString("Firmentitel").ToString()
              Dim myCommand As New OleDbCommand(sqlCheck, objConnect)
              objConnect.Open()
              Dim Data As OleDbDataReader
              Data = myCommand.ExecuteReader()
              While Data.Read()
                  varFirmentitel = Data.Item("Firmentitel")
              End While
              Data.close()
              objConnect.close()
              objConnect = Nothing
      End Sub
      </script>
      <meta name="keywords" content="">
      <title><%= varFirmentitel %></title>
      <link rel="stylesheet" type="text/css" href="eislingen.css">
      </head>

      1. Hi,

        mittlerweile sieht das aus wie folgt, funktioniert aber immer nocht nicht.
                Dim sqlCheck As String = "SELECT * FROM Stammdaten WHERE Firmentitel=" & Request.QueryString("Firmentitel").ToString()

        Aha, funzt also nicht. Geht es eventuell noch unkonktreter? "funktioniert nicht" ist keine Fehlerbeschreibung.

        Evt. kommt eine Exception? Firmentitel ist vielleicht vom Typ "varchar" bzw. "text"? Und deshalb sollte es besser so aussehen:

        Dim sqlCheck As String = "SELECT * FROM Stammdaten WHERE Firmentitel='" & Request.QueryString("Firmentitel").ToString() & "'"

        Data = myCommand.ExecuteReader()
        While Data.Read()
          ...
        End While

        Aber dennoch, das sieht mir suspekt aus. Request.QueryString("Firmentitel") ist eventuell leer also "". Vielleicht wird einfach kein Datensatz in [Stammdaten] gefunden, der deinem Kriterium für Firmentitel entspricht. Die Folge wäre, dass die Leseschleife (Data.Read()) genau kein Mal ausgeführt wird und deshalb deine Variable "varFirmentitel" nie einen Wert bekommt.

        Ciao, Frank