Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

walterwac

[Resolvido] Menu à partir do bd

Recommended Posts

Como criar um menu à partir de um banco de dados?

 

ex:

 

Fabricantes

fiat(20)

volksvagen(10)

chevrolet(3)

ford(40)

 

 

field = fabricante

fiat,volksvagen, chevrolet e ford = registros

(10)quantidades ocorrências dos registros.

 

Poderiam me ajudar?

obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pegue a estrutura do menu que você tem e adicione os recodset normalmente, qual é teu nível de programação asp?

 

Taí uma pergunta, que não sei lhe responder:

Mas... este é um desafio pois eu nunca criei isto.

Ao contrário do que possam pensar, eu não quero scripts personalizáveis.

Só queria uma dica de como proceder.

 

Eu tenho alguns códigos, adicionados a bibliotecas de consulta(seguindo a idéia de ajude para ser ajudado!)

 

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo

Compartilhar este post


Link para o post
Compartilhar em outros sites

CHAMA-SE MENU DINÂMICO.

 

TA AÍ UM EXEMPLO DE UM SISTEMA QUE FIZ:

 



sql = "select * from menu" 'Busca na Tabela conteudo do menu
set rs = conexao.execute(SQL)

while not rs.eof

response.write "<a href=""consulta.asp?idservico=" & rs("MenuId") & """ class=""AQUI VOCE COLOCA O ESTILO DO LINK CONFORME O ARQUIVO CSS "">- "& rs("Servico")& "<br></a>"

rs.movenext
wend

rs.close


Compartilhar este post


Link para o post
Compartilhar em outros sites

Pegue a estrutura do menu que você tem e adicione os recodset normalmente, qual é teu nível de programação asp?

 

Desculpe, mas na estrutura que já tenho retorna desta forma:

 

fabricante

fiat

fiat

fiat

fiat

chevrolet

chevrolet

 

E eu gostaria de exibi-los somente uma única vez, com o seu total entre parênteses.

 

Ja percebi que para construir este menu preciso me aprofundar mais em "ado".

 

Por hora obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo:

 

<html>
<head>
<title>Modelo menu 02</title>
</head>

<body>
<script language="Javascript">
var menus = [];
// --- menu class ---
function menu (item_struct, pos, styles) {
// browser check
this.item_struct = item_struct;
this.pos = pos;
this.styles = styles;
this.id = menus.length;
this.items = [];
this.children = [];

this.add_item = menu_add_item;
this.hide = menu_hide;

this.onclick = menu_onclick;
this.onmouseout = menu_onmouseout;
this.onmouseover = menu_onmouseover;
this.onmousedown = menu_onmousedown;

var i;
for (i = 0; i < this.item_struct.length; i++)
new menu_item(i, this, this);
for (i = 0; i < this.children.length; i++)
this.children[i].visibility(true);
menus[this.id] = this;
}
function menu_add_item (item) {
var id = this.items.length;
this.items[id] = item;
return (id);
}
function menu_hide () {
for (var i = 0; i < this.items.length; i++) {
this.items[i].visibility(false);
this.items[i].switch_style('onmouseout');
}
}
function menu_onclick (id) {
var item = this.items[id];
return (item.fields[1] ? true : false);
}
function menu_onmouseout (id) {
this.hide_timer = setTimeout('menus['+ this.id +'].hide();',
this.pos['hide_delay'][this.active_item.depth]);
if (this.active_item.id == id)
this.active_item = null;
}
function menu_onmouseover (id) {
this.active_item = this.items[id];
clearTimeout(this.hide_timer);
var curr_item, visib;
for (var i = 0; i < this.items.length; i++) {
curr_item = this.items[i];
visib = (curr_item.arrpath.slice(0, curr_item.depth).join('_') ==
this.active_item.arrpath.slice(0, curr_item.depth).join('_'));
if (visib)
curr_item.switch_style (
curr_item == this.active_item ? 'onmouseover' : 'onmouseout');
curr_item.visibility(visib);
}
}
function menu_onmousedown (id) {
this.items[id].switch_style('onmousedown');
}
// --- menu item Class ---
function menu_item (path, parent, container) {
this.path = new String (path);
this.parent = parent;
this.container = container;
this.arrpath = this.path.split('_');
this.depth = this.arrpath.length - 1;
// get pointer to item's data in the structure
var struct_path = '', i;
for (i = 0; i <= this.depth; i++)
struct_path += '[' + (Number(this.arrpath[i]) + (i ? 2 : 0)) + ']';
eval('this.fields = this.container.item_struct' + struct_path);
if (!this.fields) return;

// assign methods
this.get_x = mitem_get_x;
this.get_y = mitem_get_y;
// these methods may be different for different browsers (i.e. non DOM compatible)
this.init = mitem_init;
this.visibility = mitem_visibility;
this.switch_style = mitem_switch_style;

// register in the collections
this.id = this.container.add_item(this);
parent.children[parent.children.length] = this;

// init recursively
this.init();
this.children = [];
var child_count = this.fields.length - 2;
for (i = 0; i < child_count; i++)
new menu_item (this.path + '_' + i, this, this.container);
this.switch_style('onmouseout');
}
function mitem_init() {
document.write (
'<a id="mi_' + this.container.id + '_'
+ this.id +'" class="m' + this.container.id + 'l' + this.depth
+'o" href="' + this.fields[1] + '" style="position: absolute; top: '
+ this.get_y() + 'px; left: ' + this.get_x() + 'px; width: '
+ this.container.pos['width'][this.depth] + 'px; height: '
+ this.container.pos['height'][this.depth] + 'px; visibility: hidden;'
+' background: black; color: white; z-index: ' + this.depth + ';" '
+ 'onclick="return menus[' + this.container.id + '].onclick('
+ this.id + ');" onmouseout="menus[' + this.container.id + '].onmouseout('
+ this.id + ');" onmouseover="menus[' + this.container.id + '].onmouseover('
+ this.id + ');" onmousedown="menus[' + this.container.id + '].onmousedown('
+ this.id + ');"><div class="m' + this.container.id + 'l' + this.depth + 'i">'
+ this.fields[0] + "</div></a>\n"
);
this.element = document.getElementById('mi_' + this.container.id + '_' + this.id);
}
function mitem_visibility(make_visible) {
if (make_visible != null) {
if (this.visible == make_visible) return;
this.visible = make_visible;
if (make_visible)
this.element.style.visibility = 'visible';
else if (this.depth)
this.element.style.visibility = 'hidden';
}
return (this.visible);
}
function mitem_get_x() {
var value = 0;
for (var i = 0; i <= this.depth; i++)
value += this.container.pos['block_left'][i]
+ this.arrpath[i] * this.container.pos['left'][i];
return (value);
}
function mitem_get_y() {
var value = 0;
for (var i = 0; i <= this.depth; i++)
value += this.container.pos['block_top'][i]
+ this.arrpath[i] * this.container.pos['top'][i];
return (value);
}
function mitem_switch_style(state) {
if (this.state == state) return;
this.state = state;
var style = this.container.styles[state];
for (var i = 0; i < style.length; i += 2)
if (style[i] && style[i+1])
eval('this.element.style.' + style[i] + "='"
+ style[i+1][this.depth] + "';");
}
// that's all folks
</script>

<script language="Javascript">

var MENU_STYLES1 = new Array();

MENU_STYLES1['onmouseout'] = [
'color', ['#ffffff', '#ffffff', '#ffffff'], //cor da font para a 1º,2º e 3º cascata
'background', ['#000000', '#000000', '#000000'],//cor do fundo para a 1º,2º e 3º cascata
'fontWeight', ['normal', 'normal', 'normal'],
'textDecoration', ['none', 'none', 'none'],
'border' ,['1px solid #404040','1px solid #404040','1px solid #404040'],

];
MENU_STYLES1['onmouseover'] = [
'color', ['#ffffff', '#ffffff', '#ffffff'], // on mouse over texto 1º,2º e 3º cascata
'background', ['#676767', '#676767', '#676767'],// on mouse over fundo 1º,2º e 3º cascata
'fontWeight', ['normal', 'normal', 'normal'],
'textDecoration', ['none', 'none', 'none'],
'border' ,['1px solid #404040','1px solid #404040','1px solid #404040'],

];
// clicar nos itens dos menus
MENU_STYLES1['onmousedown'] = [
'color', ['#ffffff', '#ffffff', '#ffffff'],
'background', ['#c4c4c4', '#c4c4c4', '#c4c4c4'],
'fontWeight', ['normal', 'normal', 'normal'],
'textDecoration', ['none', 'none', 'none'],
'border' ,['1px solid #404040','1px solid #404040','1px solid #404040'],

];
</script>

<script language="Javascript">
var MENU_POS2 = new Array();

MENU_POS2['width'] = [150, 150, 150];//largura dos menus
MENU_POS2['height'] = [21, 21, 21];

MENU_POS2['block_top'] = [0, 0, 0]; // posicao top
MENU_POS2['block_left'] = [0, 149, 149]; // posicao left

MENU_POS2['top'] = [20, 20, 20];//altura dos menus
MENU_POS2['left'] = [0, 0, 0];

MENU_POS2['hide_delay'] = [200, 200, 200]; //deley time
</script>

<!-- -----------------------------------------------------//---------------------------------- -->

<!-- estrutura dos menus -->
<script language="Javascript">
var MENU_ITEMS =
[

['Menu01','#'],

['Menu02',null,
['Submenu01','#'],
['Submenu02','#'],
['Submenu03','#'],
],

['Menu03','#'],

['Menu04',null,
['Submenu01','#'],
['Submenu02',null,
['Iten01','#'],
['Iten02','#'],
['Iten03','#'],
['Iten04','#'],
['Iten05','#'],
['Iten06','#'],
['Iten07','#'],
],
['Submenu03',null,
['Iten01','#'],
],
],

];
</script>


<font face="verdana" size="1">
<div align="center">
<script language="Javascript">
new menu (MENU_ITEMS, MENU_POS2, MENU_STYLES1);
</script>
</div>
</font>



</body>
</html>


-----------------------------------------------------------------------------------------------
Ex de um loop em uma tb de banco de dados

<%
sql = "SELECT * FROM xxx "
Set reg = Server.CreateObject("ADODB.RecordSet")
reg.Open sql, DB
If reg.EOF then
else

Do while not reg.Eof
abc = reg("abc")
%>
['<b><%=abc%></b>','link para onde deseja'],
<%
i = i+1
reg.MoveNext
Loop
end if
Set reg = Nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não gostaria de ter que criar outra tabela.

Pelo exemplos que tenho estudado sempre há presença de menu c/ submenu.(Não tenho interesse em submenu e sim em contar os números de registro)Ex:fiat(10) o número entre parêntese conta quantos registro do fiat existem, não quero exibir:

+fiat

|------uno mile

|------ brava

 

Isso nem me interessa!

 

A tabela principal ja possui os campos :

id | Fabricante | link

0 | fiat |

1 | volksvagem |

 

Por acaso é preciso, criar outra tabela e criar relacionamento c/ primeira, para poder criar este menu?

 

É possivel dizer ao objeto recordset para exibir somente uma ocorrências do registro através da propriedade colection da field e depois usar recordcount para contar.

 

Ou eu to viajando?

eu imagino que deva ser muito facil criar isto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

existe um exemplo de menu que coloquei no fórum, dá uma procurada, nele você pode deixar apenas um nível, ou seja, sem sub-menu

 

<%
Dim cnnSimple ' ADO connection
Dim rstSimple ' ADO recordset
Dim strDBPath ' path to our Access database (*.mdb) file

strDBPath = Server.MapPath("AccessDatabase.mdb")
Set cnnSimple = Server.CreateObject("ADODB.Connection")
cnnSimple.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDBPath & ";"

%>

<table border="1" width="100%" bgcolor="#000080">
<tr>
<td align="center"><table border="1">
<tr>
<td>
<%
Set rstSimple = cnnSimple.Execute("SELECT * FROM [horsedata] WHERE [gender]='"&"Sire"&"'")
%>
<form name="ex2" action="dropdown_selection_box_hyperlinked_menu_from_database.asp" method="POST">
<select name="GALLERYCAT" size="1">
<% Do While Not rstSimple.EOF %>
<option value="<%= rstSimple.Fields("ID").Value %>">#<%= rstSimple.Fields("ID").Value %> - <%= rstSimple.Fields("Horse Name").Value %></option>
<%
rstSimple.MoveNext
Loop
%>
</select>
<input type="submit" value="Go!">
</div>
</form>
</td>
</tr>
</table>
<font color="#FF0000"><b>Stallion</b></font><b><font color="#FF0000">s
</td>
<td align="center">

<%

Set rstSimple = cnnSimple.Execute("SELECT * FROM [horsedata] WHERE [gender]='"&"Broodmare"&"'")
%>

<table border="1">
<tr>
<td>
<form name="ex2" action="dropdown_selection_box_hyperlinked_menu_from_database.asp" method="POST">
<select name="GALLERYCAT" size="1">
<% Do While Not rstSimple.EOF %>
<option value="<%= rstSimple.Fields("ID").Value %>">#<%= rstSimple.Fields("ID").Value %> - <%= rstSimple.Fields("Horse Name").Value %></option>
<%
rstSimple.MoveNext
Loop
%>
</select>
<input type="submit" value="Go!">
</div>
</form>
</td>
</tr>
</table>
<font color="#FF0000"><b>Broodmares</b></font></td>
<td align="center">

<%
Set rstSimple = cnnSimple.Execute("SELECT * FROM [horsedata] WHERE [for-sale]='"&"Yes"&"'")
%>
<body style="font-family: Verdana">

<table border="1">
<tr>
<td>
<form name="ex2" action="dropdown_selection_box_hyperlinked_menu_from_database.asp" method="POST">
<select name="GALLERYCAT" size="1">
<% Do While Not rstSimple.EOF %>
<option value="<%= rstSimple.Fields("ID").Value %>">#<%= rstSimple.Fields("ID").Value %> - <%= rstSimple.Fields("Horse Name").Value %></option>
<%
rstSimple.MoveNext
Loop
%>
</select>
<input type="submit" value="Go!">
</div>
</form>
</td>
</tr>
</table>
<b><font color="#FF0000">For Sale</td>
</tr>
<tr>
<td align="center" colspan="3" bgcolor="#FF0000"><b>
<font color="#FFFFFF"><%if NOT request.form("GALLERYCAT")="" then %>Display record number: <%= request.form("GALLERYCAT") %><% end if %></font></b></td>
</tr>
</table>

<%
rstSimple.Close
Set rstSimple = Nothing
cnnSimple.Close
Set cnnSimple = Nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para nao repetir os nomes use o destinct:

 

set rs = conexao.execute("SELECT DISTINCT(nome) FROM fabricantes ORDER BY nome ASC")

if (not rs.eof) then
while (not rs.eof)
response.write("<a href='pagina.asp?nome="&rs("nome")&"'>"&rs("nome")&"</a>")
rs.moveNext : wend
end if

Compartilhar este post


Link para o post
Compartilhar em outros sites

rs = conexao.execute conjunto ("SELECT DISTINCT (nome) FROM Fabricantes ORDER BY Nome ASC")

if (RS.EOF não), então
enquanto (não RS.EOF)
response.write ("<a href='pagina.asp?nome="&rs("nome")&"'>" & rs ("nome ")&"</ a>")
rs.MoveNext: wend
End If

 

Obrigado pela dica!

Irei estudar mais a fundo sintaxe sql.

 

 

obrigado pela ajuda!

 

Logo que corrigir alguns outro probleminhas irei postar o código!

 

 

Mais uma vez obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK amigo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.