Jump to content


Photo

Socorro - Recuperar Valores Do Banco De Dados


  • Faça o login para participar
22 replies to this topic

#1 Perdida no Código

Perdida no Código

    Novato no fórum

  • Usuários
  • 12 posts
  • Sexo:Feminino
  • Localidade:São Paulo

Posted 13/01/2011, 01:27

Queridos amigos bom dia,

Meu nome é Erika e a muito tempo frequento o fórum mas apenas hoje me cadastrei, depois de muita pesquisar na net resolvi me aventurar em um projeto, porém, não sei praticamente nada de php e mysql, estou começando de forma mais modesta atavéz da barra de ferramentas para o Dreamweaver, a Developer Toolbox, e achei que estava indo bem, mas...

Vendi um projeto basicamente simples, a cliente deseja ter um site onde fará um cadastro de produtos que serão vendidos em outro site, um sisteminha de busca (que pensei ser simples), e por ai vai, não precisa nem de carrinho de compras, porém, agora a cliente solicitou algumas mudanças, e como já recebi meus miseros R$ 300,00 de pagamento pelo sistema não posso voltar atraz e preciso concluir o projeto, por isso serei muito grata se me ajudarem.

Me desculpe se postei no lugar errado, não encontrei nada que me ajudasse no fórum.

É o seguinte, criei um banco de dados com as seguintes tabelas:

produtos, categoria, eventos, genero, idade, profissoes...

A tabela produtos criei da seguinte forma:


CREATE TABLE `produtos` (
`idprodutos` int(11) NOT NULL AUTO_INCREMENT,
`p_titulo` varchar(120) DEFAULT NULL,
`p_descricao` varchar(255) DEFAULT NULL,
`p_foto` varchar(255) DEFAULT NULL,
`p_url` text,
`p_preco` double(15,2) DEFAULT NULL,
`p_idade_id` varchar(60) DEFAULT NULL,
`p_sexo_id` varchar(60) DEFAULT NULL,
`p_categoria_id` varchar(60) DEFAULT NULL,
`p_evento_id` varchar(60) DEFAULT NULL,
`p_profissao_id` varchar(60) DEFAULT NULL,
`p_hobbies_id` varchar(60) DEFAULT NULL,
`p_lancamento` tinyint(1) DEFAULT NULL,
`p_status` tinyint(1) DEFAULT NULL,
PRIMARY KEY (`idprodutos`)
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=latin1;

Onde os campos idade, evento, profissao e hobbies são de multipla escolha e são carregados dinamicamente puxando os dados das outras tabelas, até ai tudo bem, consegui cadastrar os produtos sem problemas, inclusive nesses campos os ids são cadastrados separados por virgula tudo como eu achei que seria certo.

Agora vem o grande problema, o sistema de busca.

Criei um formulário de busca com os seguintes campos:

eventos, genero, idade, profissao, hobbies, preco e categoria

Criei os recordsets para cada um dos campos, atribui cada um deles aos respectivos campos do formulário e tudo conforme tem que ser...

O que acontece é que não consigo listar os produtos no resultado da busca, vou tentar explicar melhor, por exemplo.

Tenho um produto cadastrado com as seguintes caracteristicas:

p_categoria_id = 1
p_evento_id = 2,3,4

e assim por diante...

Quando eu vou fazer uma busca pela categoria os produtos são listados corretamente, porém, quando vou fazer uma busca pelo evento são listados apenas os ultimos ids, ou seja, quando seleciono outro evento que o mesmo produto está cadastrado ele não aparece...

Usei a função echo e vi que o resultado da busca imprime o id do evento selecionado no formulário corretamente, mas não consegue recuperar os valores dos produtos cadastrados.

Estou usando os seguintes códigos para a busca:

// Verifica as categoria
if (isset($_POST['categoria']) && is_numeric ($_POST['categoria']) && $_POST['categoria'] > 0 ) {
$busca .= "AND p_categoria_id = ".$_POST['categoria']." ";
}

// Verifica as evento
if (isset($_POST['evento']) && is_numeric ($_POST['evento']) && $_POST['evento'] > 0 ) {
$busca .= "AND p_evento_id = ".$_POST['evento']." ";
}

Se alguem puder me ajudar agradeço de coração, pois, estou desesperada, tenho que entregar o projeto amanha dia 14/01/11 e só falta isso para dar tudo certo.

Se for necessário disponibilizo todo o código para download, só peço que pelo amor de Deus, ajudem rsrsrs

Obrigadinha a todos e muitos beijinhos

#2 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 13/01/2011, 01:49

O problema é que esse tipo de relacionamento não se faz assim. A solução mais adequada é usar uma terceira tabela que relacione as outras duas. Imagino que a essa altura refazer o código não seja uma opção muito viável. Então, pro futuro, dê uma olhada em relacionamentos n:m.

Para aproveitar o que você já tem, grave os ids na tabela com vírgulas tanto no começo quanto no final.

p_evento_id = ,2,3,4,

E aí, na hora da pesquisa, faça:

$busca .= "AND p_evento_id LIKE '%,".$_POST['evento'].",%'";


#3 Perdida no Código

Perdida no Código

    Novato no fórum

  • Usuários
  • 12 posts
  • Sexo:Feminino
  • Localidade:São Paulo

Posted 13/01/2011, 10:57

O problema é que esse tipo de relacionamento não se faz assim. A solução mais adequada é usar uma terceira tabela que relacione as outras duas. Imagino que a essa altura refazer o código não seja uma opção muito viável. Então, pro futuro, dê uma olhada em relacionamentos n:m.

Para aproveitar o que você já tem, grave os ids na tabela com vírgulas tanto no começo quanto no final.

p_evento_id = ,2,3,4,

E aí, na hora da pesquisa, faça:

$busca .= "AND p_evento_id LIKE '%,".$_POST['evento'].",%'";


Oi leo, muito obrigada pela sua resposta me ajudou muito e solucionou o problema, entrei no phpmyadmin e inserir as virgulas manualmente nos campos necessários, porém, agora surgiu um novo problema rsrsrs

Como estou utilizando o recurso developer toolbox -> form controls -> comma-separatad selector, por padrão os produtos são cadastrados apenas com uma virgula após o id por exemplo: p_evento_id = 2,3,4 e não faço a minima idéia de como fazer para conseguir cadastrar os produtos da forma necessária como informou, poderia me ajudar?

Coloquei o formulário de cadastro dos produtos para download no link http://lismorishita.com/busca/

Mais uma vez muito obrigada.

Beijos

#4 offspring

offspring

    O_o

  • Ex-Admins
  • 946 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 13/01/2011, 11:07


O problema é que esse tipo de relacionamento não se faz assim. A solução mais adequada é usar uma terceira tabela que relacione as outras duas. Imagino que a essa altura refazer o código não seja uma opção muito viável. Então, pro futuro, dê uma olhada em relacionamentos n:m.

Para aproveitar o que você já tem, grave os ids na tabela com vírgulas tanto no começo quanto no final.

p_evento_id = ,2,3,4,

E aí, na hora da pesquisa, faça:

$busca .= "AND p_evento_id LIKE '%,".$_POST['evento'].",%'";


Oi leo, muito obrigada pela sua resposta me ajudou muito e solucionou o problema, entrei no phpmyadmin e inserir as virgulas manualmente nos campos necessários, porém, agora surgiu um novo problema rsrsrs

Como estou utilizando o recurso developer toolbox -> form controls -> comma-separatad selector, por padrão os produtos são cadastrados apenas com uma virgula após o id por exemplo: p_evento_id = 2,3,4 e não faço a minima idéia de como fazer para conseguir cadastrar os produtos da forma necessária como informou, poderia me ajudar?

Coloquei o formulário de cadastro dos produtos para download no link http://lismorishita.com/busca/

Mais uma vez muito obrigada.

Beijos


Poste o trecho do código que faz o cadastro

#5 Perdida no Código

Perdida no Código

    Novato no fórum

  • Usuários
  • 12 posts
  • Sexo:Feminino
  • Localidade:São Paulo

Posted 13/01/2011, 11:22

Oi offspring obrigada pela resposta mas dessa vez você me pegou, não faço nem ideia de qual parte do código faz o cadastro, segue o código inteiro, desculpe pela ignorancia...

<?php require_once('../Connections/presentes.php'); ?>
<?php
//MX Widgets3 include
require_once('../includes/wdg/WDG.php');

// Load the common classes
require_once('../includes/common/KT_common.php');

// Require the MXI classes
require_once ('../includes/mxi/MXI.php');

// Load the KT_back class
require_once('../includes/nxt/KT_back.php');

// Load the tNG classes
require_once('../includes/tng/tNG.inc.php');

// Make a transaction dispatcher instance
$tNGs = new tNG_dispatcher("../");

// Make unified connection variable
$conn_presentes = new KT_connection($presentes, $database_presentes);

//Start Restrict Access To Page
$restrict = new tNG_RestrictAccess($conn_presentes, "../");
//Grand Levels: Any
$restrict->Execute();
//End Restrict Access To Page

// Start trigger
$formValidation = new tNG_FormValidation();
$formValidation->addField("p_titulo", true, "text", "", "", "", "Por favor, insira o nome do produto!");
$formValidation->addField("p_descricao", true, "text", "", "", "", "Por favor, faça uma breve descrição do produto!");
$formValidation->addField("p_url", true, "text", "", "", "", "Por favor, insira o endereço da página do produto!");
$formValidation->addField("p_preco", true, "double", "", "", "", "Por favor, informe o valor do produto!");
$formValidation->addField("p_categoria_id", true, "text", "", "", "", "Por favor, selecione uma categoria para este produto!");
$tNGs->prepareValidation($formValidation);
// End trigger

//start Trigger_FileDelete trigger
//remove this line if you want to edit the code by hand
function Trigger_FileDelete(&$tNG) {
$deleteObj = new tNG_FileDelete($tNG);
$deleteObj->setFolder("../produtos/");
$deleteObj->setDbFieldName("p_foto");
return $deleteObj->Execute();
}
//end Trigger_FileDelete trigger

//start Trigger_ImageUpload trigger
//remove this line if you want to edit the code by hand
function Trigger_ImageUpload(&$tNG) {
$uploadObj = new tNG_ImageUpload($tNG);
$uploadObj->setFormFieldName("p_foto");
$uploadObj->setDbFieldName("p_foto");
$uploadObj->setFolder("../produtos/");
$uploadObj->setResize("true", 172, 0);
$uploadObj->setMaxSize(300);
$uploadObj->setAllowedExtensions("gif, jpg, jpe, jpeg, png");
$uploadObj->setRename("auto");
return $uploadObj->Execute();
}
//end Trigger_ImageUpload trigger

if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}

mysql_select_db($database_presentes, $presentes);
$query_rsCategoria = "SELECT * FROM categorias ORDER BY categoria ASC";
$rsCategoria = mysql_query($query_rsCategoria, $presentes) or die(mysql_error());
$row_rsCategoria = mysql_fetch_assoc($rsCategoria);
$totalRows_rsCategoria = mysql_num_rows($rsCategoria);

mysql_select_db($database_presentes, $presentes);
$query_rsIdade = "SELECT * FROM idade ORDER BY id_idade ASC";
$rsIdade = mysql_query($query_rsIdade, $presentes) or die(mysql_error());
$row_rsIdade = mysql_fetch_assoc($rsIdade);
$totalRows_rsIdade = mysql_num_rows($rsIdade);

mysql_select_db($database_presentes, $presentes);
$query_rsGenero = "SELECT * FROM genero ORDER BY genero ASC";
$rsGenero = mysql_query($query_rsGenero, $presentes) or die(mysql_error());
$row_rsGenero = mysql_fetch_assoc($rsGenero);
$totalRows_rsGenero = mysql_num_rows($rsGenero);

mysql_select_db($database_presentes, $presentes);
$query_rsEventos = "SELECT * FROM eventos ORDER BY evento ASC";
$rsEventos = mysql_query($query_rsEventos, $presentes) or die(mysql_error());
$row_rsEventos = mysql_fetch_assoc($rsEventos);
$totalRows_rsEventos = mysql_num_rows($rsEventos);

mysql_select_db($database_presentes, $presentes);
$query_rsProfissao = "SELECT * FROM profissoes ORDER BY profissao ASC";
$rsProfissao = mysql_query($query_rsProfissao, $presentes) or die(mysql_error());
$row_rsProfissao = mysql_fetch_assoc($rsProfissao);
$totalRows_rsProfissao = mysql_num_rows($rsProfissao);

mysql_select_db($database_presentes, $presentes);
$query_rsHobbies = "SELECT * FROM hobbies ORDER BY hobbie ASC";
$rsHobbies = mysql_query($query_rsHobbies, $presentes) or die(mysql_error());
$row_rsHobbies = mysql_fetch_assoc($rsHobbies);
$totalRows_rsHobbies = mysql_num_rows($rsHobbies);

// Make an insert transaction instance
$ins_produtos = new tNG_multipleInsert($conn_presentes);
$tNGs->addTransaction($ins_produtos);
// Register triggers
$ins_produtos->registerTrigger("STARTER", "Trigger_Default_Starter", 1, "POST", "KT_Insert1");
$ins_produtos->registerTrigger("BEFORE", "Trigger_Default_FormValidation", 10, $formValidation);
$ins_produtos->registerTrigger("END", "Trigger_Default_Redirect", 99, "../includes/nxt/back.php");
$ins_produtos->registerTrigger("AFTER", "Trigger_ImageUpload", 97);
// Add columns
$ins_produtos->setTable("produtos");
$ins_produtos->addColumn("p_titulo", "STRING_TYPE", "POST", "p_titulo");
$ins_produtos->addColumn("p_descricao", "STRING_TYPE", "POST", "p_descricao");
$ins_produtos->addColumn("p_foto", "FILE_TYPE", "FILES", "p_foto");
$ins_produtos->addColumn("p_url", "STRING_TYPE", "POST", "p_url");
$ins_produtos->addColumn("p_preco", "DOUBLE_TYPE", "POST", "p_preco");
$ins_produtos->addColumn("p_sexo_id", "STRING_TYPE", "POST", "p_sexo_id");
$ins_produtos->addColumn("p_idade_id", "STRING_TYPE", "POST", "p_idade_id");
$ins_produtos->addColumn("p_hobbies_id", "STRING_TYPE", "POST", "p_hobbies_id");
$ins_produtos->addColumn("p_categoria_id", "STRING_TYPE", "POST", "p_categoria_id");
$ins_produtos->addColumn("p_evento_id", "STRING_TYPE", "POST", "p_evento_id");
$ins_produtos->addColumn("p_profissao_id", "STRING_TYPE", "POST", "p_profissao_id");
$ins_produtos->addColumn("p_lancamento", "CHECKBOX_1_0_TYPE", "POST", "p_lancamento", "1");
$ins_produtos->addColumn("p_status", "CHECKBOX_1_0_TYPE", "POST", "p_status", "1");
$ins_produtos->setPrimaryKey("idprodutos", "NUMERIC_TYPE");

// Make an update transaction instance
$upd_produtos = new tNG_multipleUpdate($conn_presentes);
$tNGs->addTransaction($upd_produtos);
// Register triggers
$upd_produtos->registerTrigger("STARTER", "Trigger_Default_Starter", 1, "POST", "KT_Update1");
$upd_produtos->registerTrigger("BEFORE", "Trigger_Default_FormValidation", 10, $formValidation);
$upd_produtos->registerTrigger("END", "Trigger_Default_Redirect", 99, "../includes/nxt/back.php");
$upd_produtos->registerTrigger("AFTER", "Trigger_ImageUpload", 97);
// Add columns
$upd_produtos->setTable("produtos");
$upd_produtos->addColumn("p_titulo", "STRING_TYPE", "POST", "p_titulo");
$upd_produtos->addColumn("p_descricao", "STRING_TYPE", "POST", "p_descricao");
$upd_produtos->addColumn("p_foto", "FILE_TYPE", "FILES", "p_foto");
$upd_produtos->addColumn("p_url", "STRING_TYPE", "POST", "p_url");
$upd_produtos->addColumn("p_preco", "DOUBLE_TYPE", "POST", "p_preco");
$upd_produtos->addColumn("p_sexo_id", "STRING_TYPE", "POST", "p_sexo_id");
$upd_produtos->addColumn("p_idade_id", "STRING_TYPE", "POST", "p_idade_id");
$upd_produtos->addColumn("p_hobbies_id", "STRING_TYPE", "POST", "p_hobbies_id");
$upd_produtos->addColumn("p_categoria_id", "STRING_TYPE", "POST", "p_categoria_id");
$upd_produtos->addColumn("p_evento_id", "STRING_TYPE", "POST", "p_evento_id");
$upd_produtos->addColumn("p_profissao_id", "STRING_TYPE", "POST", "p_profissao_id");
$upd_produtos->addColumn("p_lancamento", "CHECKBOX_1_0_TYPE", "POST", "p_lancamento");
$upd_produtos->addColumn("p_status", "CHECKBOX_1_0_TYPE", "POST", "p_status");
$upd_produtos->setPrimaryKey("idprodutos", "NUMERIC_TYPE", "GET", "idprodutos");

// Make an instance of the transaction object
$del_produtos = new tNG_multipleDelete($conn_presentes);
$tNGs->addTransaction($del_produtos);
// Register triggers
$del_produtos->registerTrigger("STARTER", "Trigger_Default_Starter", 1, "POST", "KT_Delete1");
$del_produtos->registerTrigger("END", "Trigger_Default_Redirect", 99, "../includes/nxt/back.php");
$del_produtos->registerTrigger("AFTER", "Trigger_FileDelete", 98);
// Add columns
$del_produtos->setTable("produtos");
$del_produtos->setPrimaryKey("idprodutos", "NUMERIC_TYPE", "GET", "idprodutos");

// Execute all the registered transactions
$tNGs->executeTransactions();

// Get the transaction recordset
$rsprodutos = $tNGs->getRecordset("produtos");
$row_rsprodutos = mysql_fetch_assoc($rsprodutos);
$totalRows_rsprodutos = mysql_num_rows($rsprodutos);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR...nsitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wdg="http://ns.adobe.com/addt">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>&Agrave;rea Administrativa</title>
<link href="../includes/skins/mxkollection3.css" rel="stylesheet" type="text/css" media="all" />

<style type="text/css">
<!--
@import url("css/estilo_admin.css");
-->
</style>
<script src="../includes/common/js/base.js" type="text/javascript"></script>
<script src="../includes/common/js/utility.js" type="text/javascript"></script>
<script src="../includes/skins/style.js" type="text/javascript"></script>
<?php echo $tNGs->displayValidationRules();?>
<script src="../includes/nxt/scripts/form.js" type="text/javascript"></script>
<script src="../includes/nxt/scripts/form.js.php" type="text/javascript"></script>
<script type="text/javascript">
$NXT_FORM_SETTINGS = {
duplicate_buttons: true,
show_as_grid: true,
merge_down_value: true
}
</script>
<script type="text/javascript" src="../includes/common/js/sigslot_core.js"></script>
<script type="text/javascript" src="../includes/wdg/classes/MXWidgets.js"></script>
<script type="text/javascript" src="../includes/wdg/classes/MXWidgets.js.php"></script>
<script type="text/javascript" src="../includes/wdg/classes/JSRecordset.js"></script>
<script type="text/javascript" src="../includes/wdg/classes/BaseListSorter.js"></script>
<script type="text/javascript" src="../includes/wdg/classes/MenuMover.js"></script>
<?php
//begin JSRecordset
$jsObject_rsIdade = new WDG_JsRecordset("rsIdade");
echo $jsObject_rsIdade->getOutput();
//end JSRecordset
?>
<?php
//begin JSRecordset
$jsObject_rsEventos = new WDG_JsRecordset("rsEventos");
echo $jsObject_rsEventos->getOutput();
//end JSRecordset
?>
<?php
//begin JSRecordset
$jsObject_rsProfissao = new WDG_JsRecordset("rsProfissao");
echo $jsObject_rsProfissao->getOutput();
//end JSRecordset
?>
<?php
//begin JSRecordset
$jsObject_rsHobbies = new WDG_JsRecordset("rsHobbies");
echo $jsObject_rsHobbies->getOutput();
//end JSRecordset
?>
</head>
<body>
<div id="estrutura">
<!--ABRE TOPO-->
<div id="topo">
<?php
mxi_includes_start("includes/topo.php");
require(basename("includes/topo.php"));
mxi_includes_end();
?>
</div>
<!--FECHA TOPO-->

<!--ABRE HEADER-->
<div id="header">
<?php
mxi_includes_start("includes/header.php");
require(basename("includes/header.php"));
mxi_includes_end();
?>
</div>
<!--FEHCA HEADER-->

<!--ABRE MENU-->
<div id="menu">
<?php
mxi_includes_start("includes/menu.php");
require(basename("includes/menu.php"));
mxi_includes_end();
?>
</div>
<!--FECHA MENU-->

<!--ABRE CONTEUDO-->
<div id="conteudo">
<div align="center">
<?php
echo $tNGs->getErrorMsg();
?>
<div class="KT_tng">
<h1>
<?php
// Show IF Conditional region1
if (@$_GET['idprodutos'] == "") {
?>
<?php echo NXT_getResource("Insert_FH"); ?>
<?php
// else Conditional region1
} else { ?>
<?php echo NXT_getResource("Update_FH"); ?>
<?php }
// endif Conditional region1
?>
Produtos </h1>
<div class="KT_tngform">
<form method="post" id="form1" action="<?php echo KT_escapeAttribute(KT_getFullUri()); ?>" enctype="multipart/form-data">
<?php $cnt1 = 0; ?>
<?php do { ?>
<?php $cnt1++; ?>
<?php
// Show IF Conditional region1
if (@$totalRows_rsprodutos > 1) {
?>
<h2><?php echo NXT_getResource("Record_FH"); ?> <?php echo $cnt1; ?></h2>
<?php }
// endif Conditional region1
?>
<table cellpadding="2" cellspacing="0" class="KT_tngtable">
<tr>
<td class="KT_th"><label for="p_titulo_<?php echo $cnt1; ?>">Nome do Produto:</label></td>
<td><input type="text" name="p_titulo_<?php echo $cnt1; ?>" id="p_titulo_<?php echo $cnt1; ?>" value="<?php echo KT_escapeAttribute($row_rsprodutos['p_titulo']); ?>" size="50" maxlength="90" />
<?php echo $tNGs->displayFieldHint("p_titulo");?> <?php echo $tNGs->displayFieldError("produtos", "p_titulo", $cnt1); ?></td>
</tr>
<tr bgcolor="#F4F4F4">
<td class="KT_th"><label for="p_descricao_<?php echo $cnt1; ?>">Descrição do produto:</label></td>
<td><input type="text" name="p_descricao_<?php echo $cnt1; ?>" id="p_descricao_<?php echo $cnt1; ?>" value="<?php echo KT_escapeAttribute($row_rsprodutos['p_descricao']); ?>" size="90" maxlength="96" />
<?php echo $tNGs->displayFieldHint("p_descricao");?> <?php echo $tNGs->displayFieldError("produtos", "p_descricao", $cnt1); ?></td>
</tr>
<tr>
<td class="KT_th"><label for="p_foto_<?php echo $cnt1; ?>">Foto do produto:</label></td>
<td><input type="file" name="p_foto_<?php echo $cnt1; ?>" id="p_foto_<?php echo $cnt1; ?>" size="32" />
<?php echo $tNGs->displayFieldError("produtos", "p_foto", $cnt1); ?></td>
</tr>
<tr bgcolor="#F4F4F4">
<td class="KT_th"><label for="p_url_<?php echo $cnt1; ?>">Endereço do produto</label></td>
<td><input type="text" name="p_url_<?php echo $cnt1; ?>" id="p_url_<?php echo $cnt1; ?>" value="<?php echo KT_escapeAttribute($row_rsprodutos['p_url']); ?>" size="90" />
<?php echo $tNGs->displayFieldHint("p_url");?> <?php echo $tNGs->displayFieldError("produtos", "p_url", $cnt1); ?></td>
</tr>
<tr>
<td class="KT_th"><label for="p_preco_<?php echo $cnt1; ?>">Preço do produto:</label></td>
<td><input type="text" name="p_preco_<?php echo $cnt1; ?>" id="p_preco_<?php echo $cnt1; ?>" value="<?php echo KT_escapeAttribute($row_rsprodutos['p_preco']); ?>" size="7" />
<?php echo $tNGs->displayFieldHint("p_preco");?> <?php echo $tNGs->displayFieldError("produtos", "p_preco", $cnt1); ?></td>
</tr>
<tr bgcolor="#F4F4F4">
<td class="KT_th"><label for="p_categoria_id_<?php echo $cnt1; ?>">Categoria:</label></td>
<td><select name="p_categoria_id_<?php echo $cnt1; ?>" id="p_categoria_id_<?php echo $cnt1; ?>">
<option value=""><?php echo NXT_getResource("Select one..."); ?></option>
<?php
do {
?>
<option value="<?php echo $row_rsCategoria['idcategorias']?>"<?php if (!(strcmp($row_rsCategoria['idcategorias'], $row_rsprodutos['p_categoria_id']))) {echo "SELECTED";} ?>><?php echo $row_rsCategoria['categoria']?></option>
<?php
} while ($row_rsCategoria = mysql_fetch_assoc($rsCategoria));
$rows = mysql_num_rows($rsCategoria);
if($rows > 0) {
mysql_data_seek($rsCategoria, 0);
$row_rsCategoria = mysql_fetch_assoc($rsCategoria);
}
?>
</select>
<?php echo $tNGs->displayFieldError("produtos", "p_categoria_id", $cnt1); ?></td>
</tr>
<tr>
<td class="KT_th"><label for="p_sexo_id_<?php echo $cnt1; ?>">Genero:</label></td>
<td><select name="p_sexo_id_<?php echo $cnt1; ?>" id="p_sexo_id_<?php echo $cnt1; ?>">
<option value=""><?php echo NXT_getResource("Select one..."); ?></option>
<?php
do {
?>
<option value="<?php echo $row_rsGenero['idgenero']?>"<?php if (!(strcmp($row_rsGenero['idgenero'], $row_rsprodutos['p_sexo_id']))) {echo "SELECTED";} ?>><?php echo $row_rsGenero['genero']?></option>
<?php
} while ($row_rsGenero = mysql_fetch_assoc($rsGenero));
$rows = mysql_num_rows($rsGenero);
if($rows > 0) {
mysql_data_seek($rsGenero, 0);
$row_rsGenero = mysql_fetch_assoc($rsGenero);
}
?>
</select>
<?php echo $tNGs->displayFieldError("produtos", "p_sexo_id", $cnt1); ?></td>
</tr>
<tr>
<td colspan="2" class="KT_th"><hr /></td>
</tr>
<tr bgcolor="#F4F4F4">
<td class="KT_th"><label for="p_idade_id_<?php echo $cnt1; ?>">Idade (Multipla escolha):</label></td>
<td><input name="p_idade_id_<?php echo $cnt1; ?>" id="p_idade_id_<?php echo $cnt1; ?>" value="<?php echo KT_escapeAttribute($row_rsprodutos['p_idade_id']); ?>" size="10" maxlength="60" wdg:recordset="rsIdade" wdg:subtype="MenuMover" wdg:type="widget" wdg:displayfield="idade" wdg:valuefield="id_idade" wdg:sortselector="no" />
<?php echo $tNGs->displayFieldHint("p_idade_id");?> <?php echo $tNGs->displayFieldError("produtos", "p_idade_id", $cnt1); ?></td>
</tr>
<tr>
<td class="KT_th"><label for="p_evento_id_<?php echo $cnt1; ?>">Eventos (Multipla escolha):</label></td>
<td><input name="p_evento_id_<?php echo $cnt1; ?>" id="p_evento_id_<?php echo $cnt1; ?>" value="<?php echo KT_escapeAttribute($row_rsprodutos['p_evento_id']); ?>" size="10" maxlength="60" wdg:recordset="rsEventos" wdg:subtype="MenuMover" wdg:type="widget" wdg:displayfield="evento" wdg:valuefield="ideventos" wdg:sortselector="no" />
<?php echo $tNGs->displayFieldHint("p_evento_id");?> <?php echo $tNGs->displayFieldError("produtos", "p_evento_id", $cnt1); ?></td>
</tr>
<tr bgcolor="#F4F4F4">
<td class="KT_th"><label for="p_profissao_id_<?php echo $cnt1; ?>">Profissão (Multipla escolha):</label></td>
<td><input name="p_profissao_id_<?php echo $cnt1; ?>" id="p_profissao_id_<?php echo $cnt1; ?>" value="<?php echo KT_escapeAttribute($row_rsprodutos['p_profissao_id']); ?>" size="10" maxlength="60" wdg:recordset="rsProfissao" wdg:subtype="MenuMover" wdg:type="widget" wdg:displayfield="profissao" wdg:valuefield="idprofissoes" wdg:sortselector="no" />
<?php echo $tNGs->displayFieldHint("p_profissao_id");?> <?php echo $tNGs->displayFieldError("produtos", "p_profissao_id", $cnt1); ?></td>
</tr>
<tr>
<td class="KT_th"><label for="p_hobbies_id_<?php echo $cnt1; ?>">Hobbies (Multipla escolha):</label></td>
<td><input name="p_hobbies_id_<?php echo $cnt1; ?>" id="p_hobbies_id_<?php echo $cnt1; ?>" value="<?php echo KT_escapeAttribute($row_rsprodutos['p_hobbies_id']); ?>" size="10" maxlength="60" wdg:recordset="rsHobbies" wdg:subtype="MenuMover" wdg:type="widget" wdg:displayfield="hobbie" wdg:valuefield="idhobbies" wdg:sortselector="no" />
<?php echo $tNGs->displayFieldHint("p_hobbies_id");?> <?php echo $tNGs->displayFieldError("produtos", "p_hobbies_id", $cnt1); ?></td>
</tr>
<tr>
<td colspan="2" class="KT_th"><hr /></td>
</tr>
<tr bgcolor="#F4F4F4">
<td class="KT_th"><label for="p_lancamento_<?php echo $cnt1; ?>">Lançamento:</label></td>
<td><input <?php if (!(strcmp(KT_escapeAttribute($row_rsprodutos['p_lancamento']),"1"))) {echo "checked";} ?> type="checkbox" name="p_lancamento_<?php echo $cnt1; ?>" id="p_lancamento_<?php echo $cnt1; ?>" value="1" />
<strong>Deixe a caixa marcada para o produto aparecer na p&aacute;gina inicial</strong> <?php echo $tNGs->displayFieldError("produtos", "p_lancamento", $cnt1); ?></td>
</tr>
<tr>
<td class="KT_th"><label for="p_status_<?php echo $cnt1; ?>">Status Online / Offline:</label></td>
<td><input <?php if (!(strcmp(KT_escapeAttribute($row_rsprodutos['p_status']),"1"))) {echo "checked";} ?> type="checkbox" name="p_status_<?php echo $cnt1; ?>" id="p_status_<?php echo $cnt1; ?>" value="1" />
<strong>Deixe a caixa marcada para o produto aparecer no site</strong> <?php echo $tNGs->displayFieldError("produtos", "p_status", $cnt1); ?></td>
</tr>
</table>
<input type="hidden" name="kt_pk_produtos_<?php echo $cnt1; ?>" class="id_field" value="<?php echo KT_escapeAttribute($row_rsprodutos['kt_pk_produtos']); ?>" />
<?php } while ($row_rsprodutos = mysql_fetch_assoc($rsprodutos)); ?>
<div class="KT_bottombuttons">
<div>
<?php
// Show IF Conditional region1
if (@$_GET['idprodutos'] == "") {
?>
<input type="submit" name="KT_Insert1" id="KT_Insert1" value="<?php echo NXT_getResource("Insert_FB"); ?>" />
<?php
// else Conditional region1
} else { ?>
<div class="KT_operations">
<input type="submit" name="KT_Insert1" value="<?php echo NXT_getResource("Insert as new_FB"); ?>" onclick="nxt_form_insertasnew(this, 'idprodutos')" />
</div>
<input type="submit" name="KT_Update1" value="<?php echo NXT_getResource("Update_FB"); ?>" />
<input type="submit" name="KT_Delete1" value="<?php echo NXT_getResource("Delete_FB"); ?>" onclick="return confirm('<?php echo NXT_getResource("Are you sure?"); ?>');" />
<?php }
// endif Conditional region1
?>
<input type="button" name="KT_Cancel1" value="<?php echo NXT_getResource("Cancel_FB"); ?>" onclick="return UNI_navigateCancel(event, '../includes/nxt/back.php')" />
</div>
</div>
</form>
</div>
<br class="clearfixplain" />
</div></div>
</div>
<!--FECHA CONTEUDO-->

<!--ABRE FOOTER-->
<div id="footer">
<?php
mxi_includes_start("includes/footer.php");
require(basename("includes/footer.php"));
mxi_includes_end();
?>
</div>
<!--FECHA FOOTER-->
</div>
</body>
</html>
<?php
mysql_free_result($rsCategoria);

mysql_free_result($rsIdade);

mysql_free_result($rsGenero);

mysql_free_result($rsEventos);

mysql_free_result($rsProfissao);

mysql_free_result($rsHobbies);
?>

Beijos

Attached Files


Edição feita por: Perdida no Código, 13/01/2011, 11:24.


#6 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 13/01/2011, 12:13

O campo é múltipla escolha e é do tipo texto? É isso mesmo? Como assim? O usuário digita os ids que ele quer?

#7 Perdida no Código

Perdida no Código

    Novato no fórum

  • Usuários
  • 12 posts
  • Sexo:Feminino
  • Localidade:São Paulo

Posted 13/01/2011, 12:25

O campo é múltipla escolha e é do tipo texto? É isso mesmo? Como assim? O usuário digita os ids que ele quer?


Oi Leo, acho que é isso mesmo, não entendo quase nada disso, o campo é multipla escolha e do tipo texto, porém, no formulario de cadastro dos produtos esses dados são carregados dinamicamente de suas respectivas tabelas, na hora do cadastro o usuário seleciona os itens desejados e no banco de dados são salvos os ids referentes a esses itens.

Agora o meu novo problema, preciso fazer o cadastro dos campos multiplos com uma virgula (,) antes e depois dos ids, por exemplo: p_evento_id = ,2,3,4, como você mostrou

Por padrão os produtos são cadastrados apenas com uma virgula após id por exemplo: p_evento_id = 2,3,4

Beijos

Edição feita por: Perdida no Código, 13/01/2011, 12:31.


#8 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 13/01/2011, 12:42

Tire um printscreen da tela e coloque aqui.

#9 Perdida no Código

Perdida no Código

    Novato no fórum

  • Usuários
  • 12 posts
  • Sexo:Feminino
  • Localidade:São Paulo

Posted 13/01/2011, 12:48

Tire um printscreen da tela e coloque aqui.

Attached Files



#10 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 13/01/2011, 13:08

Agora complicou. Esquece a parte de gravar com as vírgulas então e vamos mudar o SQL. Faça assim:

$busca .= "AND (p_evento_id LIKE '".$_POST['evento'].",%' OR p_evento_id LIKE '%,".$_POST['evento'].",%' OR p_evento_id LIKE '%,".$_POST['evento']."')";


#11 Perdida no Código

Perdida no Código

    Novato no fórum

  • Usuários
  • 12 posts
  • Sexo:Feminino
  • Localidade:São Paulo

Posted 13/01/2011, 13:45

Agora complicou. Esquece a parte de gravar com as vírgulas então e vamos mudar o SQL. Faça assim:

$busca .= "AND (p_evento_id LIKE '".$_POST['evento'].",%' OR p_evento_id LIKE '%,".$_POST['evento'].",%' OR p_evento_id LIKE '%,".$_POST['evento']."')";


Oi Leo,

Muito obrigada, funcionou direitinho, só que agora apareceu outro probleminha rsrsrs

Agora quando cadastro apenas um item no campo de multipla escolha ele não aparece no resultado... quando cadastro mais de um item esta funcionando normalmente.

Poderia me ajudar nisso também?

Beijos

#12 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 13/01/2011, 13:55

Mais uma condição então:

$busca .= "AND (p_evento_id LIKE '".$_POST['evento'].",%' OR p_evento_id LIKE '%,".$_POST['evento'].",%' OR p_evento_id LIKE '%,".$_POST['evento']."' OR p_evento_id LIKE '".$_POST['evento']."')";


#13 Perdida no Código

Perdida no Código

    Novato no fórum

  • Usuários
  • 12 posts
  • Sexo:Feminino
  • Localidade:São Paulo

Posted 14/01/2011, 02:51

Mais uma condição então:

$busca .= "AND (p_evento_id LIKE '".$_POST['evento'].",%' OR p_evento_id LIKE '%,".$_POST['evento'].",%' OR p_evento_id LIKE '%,".$_POST['evento']."' OR p_evento_id LIKE '".$_POST['evento']."')";


Leo muito obrigada,

Não sei como agradecer, acho que agora esta perfeito, vou criar o sql de todos os outros campos e fazer todos os testes para ter certeza, qualquer coisa volto para dizer o que aconteceu.

Mais uma vez muito obrigada de coração, estou mais aliviada por saber que vou poder honrar o compromisso que assumi.

Uma pergunta, você saberia me indicar algum curso online ou em video aulas onde eu possa aprender a dominiar o php e o mysql?

Tenho muita vonta de dominar a linguagem, apesar de ter sido muito util, não quero mais ser refém do developer toolbox.

Muitos beijos, assim que concluir os testes volto para dizer como ficou.

Oi Leo bom dia,

Pensei que estava resolvido o problema da busca com os campos de cadastro unico e multiplos e fui concluir o que faltava mas infelizmente apareceu um outro problemminha...

O campo de busca por preços não é dinamico, sendo assim inseri o seguinte sql:

// Verifica as preco
if(isset($_POST['preco']) && is_numeric($_POST['preco']) && $_POST['preco'] > 0) {
$busca .= "AND p_preco > ".$_POST['preco']." ";
$setpreco = 1;
}
if(isset($_POST['preco']) && $_POST['preco'] != NULL && $setpreco == NULL){
$preco1 = explode("__", $_POST['preco']);
$valorde = $preco1[0];
$valorate = $preco1[1];
$busca .= "AND p_preco > $valorde AND p_preco < $valorate";
}

No formulário da busca foi feito assim:

<label>
<select name="preco" id="preco">
<option selected="selected">Selecione</option>
<option value="1__100">At&eacute; R$ 100,00</option>
<option value="101__200">De R$ 101,00 &agrave; R$ 200,00</option>
<option value="201__300">De R$ 201,00 &agrave; R$ 300,00</option>
<option value="301__500">De R$ 301,00 &agrave; R$ 500,00</option>
<option value="501__700">De R$ 501,00 &agrave; R$ 700,00</option>
<option value="701__1000">De R$ 701,00 &agrave; R$ 1.000,00</option>
<option value="1001">Acima de R$ 1.000,00</option>
</select>
</label>

Nesse caso, o resultado da busca por valores funciona perfeitamente, só que todos os outros campos param de funcionar e aparece a seguinte mensagem:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Obs: Quando tiro o sql da busca por preços os outros campos voltam a funcionar normlmente...

Poderia me ajudar com isso também?

Agora o desespero bateu de verdade meu prazo de entrega esta se esgotando...

Um grande beijo

PS: Essa página é de teste e os resultados estão sendo listados na mesma página, depois precisarei criar uma página com o formulário e outra com o resultado da busca, será necessário apenas mudar o metodo de envio de POST para GET e apontar a página de resultados ou terei algum problema?

#14 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 14/01/2011, 11:17

Coloque uns espaços nas pontas das condições.

$busca .= " AND p_preco > ".$_POST['preco']." ";
...
$busca .= " AND p_preco > $valorde AND p_preco < $valorate ";
Deve estar dando problema na hora de juntar tudo. Se isso não resolver, na linha que executa o sql, coloque um or die.

mysql_query(...) or die(mysql_error());

Edição feita por: LeoB, 14/01/2011, 11:17.


#15 Perdida no Código

Perdida no Código

    Novato no fórum

  • Usuários
  • 12 posts
  • Sexo:Feminino
  • Localidade:São Paulo

Posted 14/01/2011, 11:38

Coloque uns espaços nas pontas das condições.

$busca .= " AND p_preco > ".$_POST['preco']." ";
...
$busca .= " AND p_preco > $valorde AND p_preco < $valorate ";
Deve estar dando problema na hora de juntar tudo. Se isso não resolver, na linha que executa o sql, coloque um or die.

mysql_query(...) or die(mysql_error());


Oi amigo, obrigada por responder, me desculpe por estar enchendo...

Dei um echo no sql e descobri que a busca estava entendendo o "Selecione" do campo de preços como um valor, ai como não encontrava nada referente e dava erro, ai alterei a função:

if(isset($_POST['preco']) && $_POST['preco'] != NULL && $setpreco == NULL)

por:

if(isset($_POST['preco']) && $_POST['preco'] != 0 && $setpreco == NULL)

Agora parece que esta funcionando, muito obrigada pela sua atenção e mais uma vez me desculpe por incomodar, vou conferir tudo certinho e se der tudo certo volto para dizer.

Beijosssss




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq