Jump to content


Claudiobrother

Member Since 15/07/2009
Offline Last Active 22/01/2010, 11:49
-----

Posts I've Made

In Topic: Botão Não Funciona

20/07/2009, 21:24

Fiz algumas observações no código abaixo para ficar claro o porque de ter que modificar umas coisas aí.
<!-- ME DESCULPE, MAS SEU CÓDIGO ESTÁ MUITO POLUÍDO. AQUI ABRE <FORM> E NA LINHA 10 OUTRO --> 
<form name="form1" action=" http://www.suzukanet.com.br/resultado.php" target="_self" method="post">
<div align="right"><img src="imagens/search.jpg" width="13" height="12"> 
<select name="marca" style="font-family: tahoma; font-size: 10; width: 110;">
<? 
#@include('includes/abrebanco.php');
$sql_marca1 = "select * from marcas order by marca asc";
$exe_marca1 = mysql_query("$sql_marca1"); //SUA VARIAVEL ESTÁ COM " "
// O QUE ESSE <FORM> ESTÁ FAZENDO AQUI DENTRO DO <SELECT>? 
?><form>
<?
// VOU POSTAR ABAIXO UM CÓDIGO MAIS LIMPO PRA VOCÊ, OK?
while($row=mysql_fetch_array($exe_marca1,MYSQL_ASSOC)){
?>
<option value="<?=$row[id]?>"> 
<?=$row[marca]?>
</option>
<?
}
?>
</select>
<input name="busca" type="text" id="busca4">
<!-- Termos da Busca -->
<input type="image" src="images/pesq_ok.gif" width="79" height="26" border="0" alt="ok">
</div>
</form>

Para manter o seu código mais organizado, procure fazer as query's no começo do código e não use "<?" use "<?php".
<?php
// Supondo que o seu arquivo de conexão esteja assim, seria aconselhável
// você fazer sua query como está abaixo.
$hostname = "localhost";
$database = "test";
$username = "root";
$password = "";
$connDB = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);
 
mysql_select_db($database, $connDB);
$sql_marca1 = "SELECT * FROM marcas ORDER BY marca ASC";
$exe_marca1 = mysql_query($sql_marca1, $connDB) or die(mysql_error());
?>

E agora o formulário com alguns ajustes
<form name="form1" action="http://www.suzukanet.com.br/resultado.php" target="_self" method="post">
  <div align="right"><img src="imagens/search.jpg" width="13" height="12"> 

	<select name="marca" style="font:10px tahoma; width: 110;">
	   <?php while($row=mysql_fetch_assoc($exe_marca1)) { ?>
		  <option value="<?php echo $row['id']; ?>" ><?php echo $row['marca']; ?></option>
	   <?php } ?>
	</select>
	<input name="busca" type="text" id="busca4">
	<!-- Termos da Busca -->
	<input type="image" src="images/pesq_ok.gif" width="79" height="26" border="0" alt="ok">

  </div>
</form>

Espero ter ajudado você, boa sorte!

In Topic: Problema Com Posicionamento

19/07/2009, 01:03

Aproveitando que vc está aqui, eu vou postar a folha de estilo que eu editei um pouquinho

Lá vai:
html, body {height:100%;} 
body {
	margin:0; 
	padding:0;
	background:#ddd;
	color:#666;
	font:75%/1.4 Verdana, Arial, Helvetica, sans-serif;
	text-align:center;
	}
#tudo { 
	width:779px;
	position:relative;  /*Contexto de posicionamento */
	background:#fff url(bg-auxiliar.gif) repeat-y right;
	margin:0 auto;
	text-align:left;
	min-height:100%;
	border:solid #333;
	border-width:0 1px;
	}
 * html #tudo {height: 100%;}
#conteudo {padding-bottom:30px;}
#topo {
	background:#cfc;
	width:779px;
	height:139px;
	text-align:center;
	padding-top:1px;
	}
#principal {
	width:510px;
	padding-left:20px;
	float:left;
	padding-top:10px;
	text-align:justify;
	}
#auxiliar {
	width:200px;
	float:right;
	padding-top:10px;
	}
#rodape {
	background:#b0f1b0 url(carrosecia_arquivos/rodappe.jpg) no-repeat;
	width:779px;
	height:20px;
	position: absolute;
	bottom: 0; /**/ 
	text-align:center;
	}
#rodape p {
	margin:0;
	font-weight:bold;
	color:#060;
	}
ul {
	width:190px;
	margin:0;
	padding:0;
	list-style:none;
	}
ul li {margin:1px 0; }
ul li a, ul li a:visited {
	height:1%;
	font:12px Arial, Helvetica, sans-serif;
	display:block;
	background:#060;
	color:#fff;
	text-decoration:none;
	padding:2px 10px;
	}
ul li a:hover {
	background:#9f9;
	color:#060;
	}
h1, h2, h4 { 	
	font:bold 22px Arial, Helvetica, sans-serif;
	color:#060;
	}
h4 {font-size:16px;}
.clear {clear:both;}
#nav li.um {
	margin-bottom:8px;
	text-align:center;
		}

Bom editei hoje o restante do codigo que agora está do jeito que vc queria. Ok? Então fica ao teu critério mudar ou não o estilo.

Abraço!

In Topic: Problema Com Posicionamento

18/07/2009, 23:45

Comece editando aqui:
#topo{ background:url(menu.jpg) no-repeat;
#rodape{ background:url(rodappe.jpg) no-repeat;

In Topic: Mysql_insert_id()

18/07/2009, 06:04

Da forma como eu postei está correta sim. Com o nome da coluna dentro da função retornaria "0"

só um ajuste @Claudiobrother :

INSERT INTO tabela_dois (nome, last_id) VALUES ('$nome', LAST_INSERT_ID(last_id))


Que tipo de "injection"? Poderia explicar melhor? Mesmo porque esse valor (_SESSION['login']) não passaria de uma string no BD.

extract($_POST); , istó não nem um pouco aconselhável, já que pode conter um campo no POST assim _SESSION['login'], vapt - vupt.. injection


Há, sem ofensa, mas procure ser mais construtivo em seus comentários.

Vou postar mais uma vez uma página de exemplo. Só que agora com função de segurança previnindo "SQL injection",
a função que resgata o último id cadastrado é "mysql_insert_id()", também fiz uma consulta no BD e no final do documento
criei uma listagem dos inserções feitas na "tabela_dois" para comprovar se a função está realmente resgatando o id do último cadastro.
<?php
$hostname = "localhost";
$database = "test";
$username = "root";
$password = "";
$connDB = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR); 

// Função de segurança contra SQL Injection
if (!function_exists("pega_valor")) {
function pega_valor($valor, $tipo, $valor_definido = "", $valor_nao_definido = "") 
{
  $valor = get_magic_quotes_gpc() ? stripslashes($valor) : $valor;
  $valor = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($valor) : mysql_escape_string($valor);
  
  switch ($tipo) {
	case "text": $valor = ($valor != "") ? "'" . $valor . "'" : "NULL";
	  break; 
	case "long":
	case "int": $valor = ($valor != "") ? intval($valor) : "NULL";
	  break; 
	case "double": $valor = ($valor != "") ? "'" . doubleval($valor) . "'" : "NULL";
	  break; 
	case "date": $valor = ($valor != "") ? "'" . $valor . "'" : "NULL";
	  break; 
	case "defined": $valor = ($valor != "") ? $valor_definido : $valor_nao_definido;
	  break;
  }
  return $valor;
}
}

if ((isset($_POST["cadastro"])) && ($_POST["cadastro"] == "cadastro")) {

  extract($_POST);   
  
  mysql_select_db($database, $connDB);
  $sql = sprintf ("INSERT INTO tabela (nome) VALUES (%s)", pega_valor($nome, "text"));
  $query = mysql_query($sql, $connDB) or die(mysql_error());
  
  $sql = sprintf ("INSERT INTO tabela_dois (nome, last_id) VALUES (%s, %s)", 
		 pega_valor($nome, "text"), 
		 pega_valor(mysql_insert_id(), "int"));
  
  $query = mysql_query($sql, $connDB) or die(mysql_error());

}

// Variavel que define o "action" do formulário
$action = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $action .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}


mysql_select_db($database, $connDB);
$sql = "SELECT * FROM tabela_dois ORDER BY id DESC ";
$query = mysql_query($sql, $connDB) or die(mysql_error());

?>

<p>Simples formulario para teste</p>
<form action="<?php echo $action; ?> " method="post">
  <table>
	<tr>
	  <td>Insira um nome:</td>
	  <td><input type="text" name="nome" value="" size="32" /></td>
	</tr>
	<tr>
	  <td> </td>
	  <td><input type="submit" value="Cadastrar" /></td>
	</tr>
  </table>
  <input type="hidden" name="cadastro" value="cadastro" />
</form>
<p>
<?php
while ($repete = mysql_fetch_assoc($query)):
  extract($repete);
  echo "Nome: ".$nome."<br/>";
  echo "LAST_ID: ".$last_id."<br/>";
  echo "<br/>";
endwhile;
?>
</p>

Lembrando que isso é só um exemplo que funciona e muito bem. A estrutura do BD é a mesma do post anterior.
A minha intenção é de apenas contribuir com a comunidade. Sugestões sobre como melhorar o código, serão bem-vindas!

In Topic: Mysql_insert_id()

17/07/2009, 17:31

Vou deixar um exemplo pra vc e pra mais alguém que derrepente passe por aqui com dúvida nesse sentido.

Estrutura do banco para teste:
-- Banco de Dados: `test`

CREATE TABLE IF NOT EXISTS `tabela` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `nome` varchar(64) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;

-- --------------------------------------------------------

CREATE TABLE IF NOT EXISTS `tabela_dois` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `nome` varchar(64) NOT NULL,
  `last_id` int(11) unsigned NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;

Aqui a "pagina.php" para cadastrar no bd:
<?php
$hostname = "localhost";
$database = "test";
$username = "root";
$password = "";
$connDB = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR); 

$action = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $action .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["cadastro"])) && ($_POST["cadastro"] == "cadastro")) {
  
  extract($_POST);
  
  mysql_select_db($database, $connDB);
  $sql = mysql_query("INSERT INTO tabela (nome) VALUES ('$nome')") or die(mysql_error());
  
  
  
  mysql_select_db($database, $connDB);
  $sql = mysql_query("INSERT INTO tabela_dois (nome, last_id) VALUES ('$nome', LAST_INSERT_ID())") or die(mysql_error());
  
 

}
?>

<p>Simples formulario para teste</p>
<form action="<?php echo $action; ?> " method="post">
  <table>
	<tr>
	  <td>Insira um nome:</td>
	  <td><input type="text" name="nome" value="" size="32" /></td>
	</tr>
	<tr>
	  <td> </td>
	  <td><input type="submit" value="Cadastrar" /></td>
	</tr>
  </table>
  <input type="hidden" name="cadastro" value="cadastro" />
</form>

Espero que este exemplo te ajude a sanar sua dúvida. Ha, e se ainda restar alguma dúvida é só postar, blz?

IPB Skin By Virteq