Ir para conteúdo

POWERED BY:

Arquivado

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

F3F0

[Resolvido] Erro "Resource Id#4"

Recommended Posts

Olá Pessoal! Estou começando com PHP agora e ja me meti num fria! Escolhi a linguagem pra fazer meu TCC (Trabalho de Conclusão de Curso)

sem saber praticamente nada! Estou tentando aprender na vontade mesmo! Então se eu falar bobagem, por favor, desculpem-me mas é erro

de iniciante http://forum.imasters.com.br/public/style_emoticons/default/pinch.gif

 

Vamos a minha duvida: Utilizei uma opção de MenuList com os dados de uma tabela!

Ao selecionar e clicar em Salvar, a opção selecionada vai para a variavel "$Situacao".

Preciso pegar o valor "Id_situacao" da tabela "Situacao", usando como parametro o valor que passei na var "$Situacao".

Usei o seguinte código para tentar me retornar o valor de "Id_situacao" para armazenar na tabela que eu desejo.

 

salvar.php

$Situacao			 = $_POST["Situacao"];
$Id_situacao		 = mysql_query("SELECT Id_situacao FROM Situacao WHERE Situacao ='$Situacao'");

Eu printei os valores para ver se estão retornando alguma coisa!

O valor da var "$Situacao" está printando a opção selecionada, o que quer dizer que está vindo corretamente da página anterior.

Mas já "$Id_situacao" não! Acredito que seja alguma coisa referente a instrução SQL que estou passando!

 

Dados:

Tabela: Situacao

* Id_situacao: 1 -> Situacao: Ativo;

* Id_situacao: 2 -> Situacao: Inativo;

No MenuList, aparecem as opções Ativo e Inativo;

Eu preciso pegar o Id correspondente na tabela.

 

echo "$Situacao<br/>";
echo "$Id_situacao<br/>";

Desde já, o meu muito obrigado! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

faltou você fazer um fetch_assoc, para te trazer os dados retornados do SQL num array.

http://br2.php.net/mysql_fetch_assoc

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou fazer uma sugestão. No select (Menu list) você faz assim:

<option value="<?php echo $id ?>"><?php echo $nome ?></option>

Onde

$id = id da situação

$nome = nome da situação (ativo e inativo).

 

Daí o valor que vai para a outra página já é o id referente a situação escolhida.

 

Espero ter ajudado

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que o problema tá em ele ter criado uma coluna com o mesmo nome da tabela... E aí o MySQL tá se perdendo...

 

Tente mudar o nome da coluna e usar sempre ` ao redor de nome de colunas e tabelas. ;)

 

$sql = "SELECT `Id_situacao` FROM `Situacao` WHERE `Nome_situacao` = '" . $Situacao . "'"
mysql_query($sql);

Compartilhar este post


Link para o post
Compartilhar em outros sites

~TiuTalk~

Bom, essa eu já fiz! Quando eu postei la em cima, me perdi pacas! Fui lá e editei o nome da Coluna para Nome_situacao.

Quanto a colocar o ' tb ja fiz! O erro continua!

 

William Bruno

Não entendi muito no link que você me passou! Na verdade, nada!

 

matias_rezende

Lendo parece ser fácil, mas como disse, sou iniciante nisso!

Já foi um parto conseguir fazer aparecer na lista o que estava na tabela!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, como falei, iniciante ta! E como não sabia direito como funcionar, peguei um código pronto e adpatei.

 

Essa parte esta funcionando, inclusive passa o parametro Nome_situação adiante

 

Cadastrar.php

<?php
@ini_set('display_errors', '1');
error_reporting(E_ALL);

Include "../../includes/Conecta_mysql.inc";

	 $sql="SELECT Nome_situacao FROM Situacao";
	 $result = mysql_query($sql,$conexao) or die(mysql_error());
	 $contar = mysql_num_rows($result);
	 $i = 0;
?>

//********Código HTML com os campos para inserção***************************

<tr><td>Situação</td><td>
<select name="Nome_situacao"	  type="text"   id="Nome_situacao">
<?php
	 while ($i < $contar)
	 {
		   $ver = mysql_result($result,$i,"Nome_situacao");
		   echo "<option value='$ver'>$ver</option>\n";
		   $i++;
	 }
?>
</select>
</td></tr>

Salvar.php

<?php
@ini_set('display_errors', '1');
error_reporting(E_ALL);

Include "../../includes/Conecta_mysql.inc";

$Nome_cliente		= $_POST["Nome_cliente"];
$Dt_nasc			 = $_POST["Dt_nasc"];
$Idade			   = $_POST["Idade"];
$CPF				 = $_POST["CPF"];
$RG				  = $_POST["RG"];
$Org_exp_rg		  = $_POST["Org_exp_rg"];
$Dt_exp_rg		   = $_POST["Dt_exp_rg"];
$Id_sexo			 = $_POST["Id_sexo"];
$Nome_situacao	   = $_POST["Nome_situacao"];
$Id_situacao		 = mysql_query("SELECT 'Id_situacao' FROM 'Situacao' WHERE 'Nome_situacao' ='$Nome_situacao'");

mysql_query("INSERT INTO Cliente ( Id_cliente , Nome_cliente , Dt_nasc, Idade, CPF, RG, Org_exp_rg, Dt_exp_rg, Id_sexo, Id_situacao)
			VALUES ( NULL , '$Nome_cliente', '$Dt_nasc', '$Idade', '$CPF', '$RG', '$Org_exp_rg', '$Dt_exp_rg', '$Id_sexo', '$Id_situacao')");
mysql_close();
echo "Salvo com sucesso<br />";//	 Essa parte exibe
echo "$Nome_situacao<br/>";//		  Essa parte exibe
echo "$Id_situacao<br/>";//			   Essa parte ele não exibe

?>
<a href="index.html">Voltar</a>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse trecho:

$Id_situacao		 = mysql_query("SELECT 'Id_situacao' FROM 'Situacao' WHERE 'Nome_situacao' ='$Nome_situacao'");
você precisa pegar os dados..

na variável $Id_situacao, por enqnto, só tem o resource da consulta... e não os dados..

$q		 = mysql_query("SELECT 'Id_situacao' FROM 'Situacao' WHERE 'Nome_situacao' ='$Nome_situacao'")or die( mysql_error() );
$dados = mysql_fetch_assoc( $q );
echo $dados['Id_situacao'];
entendeu ? após o fetch_assoc, você terá um array de chaves associativas, com os valores retornados pela consulta..

 

Qual é a estrutura da sua tabela ?

Vai no seu banco de dados, e exporta essa tabela para vermos..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outra coisa, que eu acho que também vai ajudar. Pega mais um campo no Mysql da primeira página.

 

Assim ó:

$sql="SELECT Nome_situacao, Id_situacao FROM Situacao";
	 $result = mysql_query($sql,$conexao) or die(mysql_error());

	 //$contar = mysql_num_rows($result); - comentei estas linhas porque, no seu exemplo elas são desnecessárias. 
	 //$i = 0;
?>

<?php
	 while ($ver = mysql_fetch_array($result)
	 {
		   echo '<option name="Id_situacao" value="'.$ver['Id_situacao'].'">'.$ver['Nome_situacao'].'</option>/n';
	 }
?>

Aí na outra pagina você substitui esta linha.

 

$Id_situacao		 = $_POST['Id_situacao'];

 

Deve funcionar.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aew Pessoal, obrigado pela ajuda ai que vocês estão me dando! Vou testar essas dicas ai e ver se funcionam!

Desculpa o atraso, é que fiquei dois dias sem NET e o trampo e a faculdade pesou esta semana!

Assim que testar, posto aqui o resultado! Mais uma vez o meu Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Matias:

Depois que coloquei seu código, a página do cadastro nem carrega mais!

Coloquei exatamente igual como você pediu.

Comentei aquelas linhas, e acrescentei o código.

<select name="Id_situacao_cliente"	  type="text"   id="Id_situacao_cliente"> // Está certo isso? Antes era Nome_situacao_cliente
<?php
	 while ($ver = mysql_fetch_array($result)
	 {
		   echo '<option name="Id_situacao_cliente" value="'.$ver['Id_situacao_cliente'].'">'.$ver['Nome_situacao_cliente'].'</option>/n';
	 }
?>
</select>
E no Salvar.PHP coloquei:

$Id_situacao_cliente   = $_POST["Id_situacao_cliente"];
mysql_query("INSERT INTO Cliente ( Id_cliente , Nome_cliente , Dt_nasc, Idade, CPF, RG, Org_exp_rg, Dt_exp_rg, Id_sexo, Id_situacao_cliente)
			VALUES ( NULL , '$Nome_cliente', '$Dt_nasc', '$Idade', '$CPF', '$RG', '$Org_exp_rg', '$Dt_exp_rg', '$Id_sexo', '$Id_situacao_cliente')");
mysql_close();

 

William:

Bom a estrutura da tabela é essa:

CREATE TABLE  `dbconvenio`.`situacao_cliente` (
  `Id_situacao_cliente` int(10) unsigned NOT NULL auto_increment,
  `Nome_situacao_cliente` varchar(20) NOT NULL,
  PRIMARY KEY (`Id_situacao_cliente`)
)
Apenas alterei os nomes dos campos pra conseguir me entender melhor! Antes tava muito confuso!

Ainda não entendi como fazer para que eu consiga obter o resultado da linha.

Entendi que com o mysql_fetch_assoc, eu terei os resultados em um array. Mas como eu uso isso?

 

Poxa é apenas um valor só que eu quero. Precisava ser tão complicado assim? http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif

o/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cadastrar2.php

<?php

@ini_set('display_errors', '1');

error_reporting(E_ALL);

 

Include "../../includes/Conecta_mysql.inc";

 

$sql="SELECT Nome_situacao_cliente, Id_situacao_cliente FROM Situacao_cliente";

$result = mysql_query($sql,$conexao) or die(mysql_error());

// $contar = mysql_num_rows($result);

// $i = 0;

?>

 

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>Cadastro de Clientes</title>

</head>

 

<body>

<form id="Cadastro.cliente" name="Cadastro.cliente" method="post" action="salvar2.php">

 

<table width="400" border="1" align="center">

<tr>

<td width="200">Nome do Cliente</td>

<td width="200"><input name="Nome_cliente" type="text" size="30" id="Nome_cliente" /></td>

</tr>

<tr>

<td>Data de Nascimento</td>

<td><input name="Dt_nasc" type="DATE" size="30" id="Dt_nasc" /></td>

</tr>

<tr>

<td>Idade</td>

<td><input name="Idade" type="integer" size="30" id="Idade" /></td>

</tr>

<tr>

<td>CPF</td>

<td><input name="CPF" type="integer" size="30" id="CPF" /></td>

</tr>

<tr>

<td>RG</td>

<td><input name="RG" type="integer" size="30" id="RG" /></td>

</tr>

 

<tr>

<td>Orgao Expedidor do RG</td>

<td><input name="Org_exp_rg" type="text" size="30" id="Org_exp_rg" /></td>

</tr>

 

<tr>

<td>Data de Expedição do RG</td>

<td><input name="Dt_exp_rg" type="DATE" size="30" id="Dt_exp_rg" /></td>

</tr>

 

<tr>

<td>Id_sexo</td>

<td><input name="Id_sexo" type="integer" size="30" id="Id_sexo" /></td>

</tr>

 

<tr><td>Situação do Cliente</td><td>

<select name="Id_situacao_cliente" type="integer" id="Id_situacao_cliente">

<?php

 

/*

while ($i < $contar)

{

$ver = mysql_result($result,$i,"Nome_situacao_cliente");

echo "<option value='$ver'>$ver</option>\n";

$i++;

}

*/

 

while ($ver = mysql_fetch_array($result)

{

echo '<option name="Id_situacao_cliente" value="'.$ver['Id_situacao_cliente'].'">'.$ver['Nome_situacao_cliente'].'</option>/n';

}

?>

</select>

</td></tr>

 

</table>

 

<p align="center">

<input type="submit" name="Submit" value="Gravar" style="cursor:pointer"/>

</p>

 

</form>

</body>

</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cuidado com maiúsculas e minúsculas... o PHP é case sensitive.

 

$sql="SELECT Nome_situacao_cliente, Id_situacao_cliente FROM Situacao_cliente";// o nome da tabela não é situacao_cliente???

Outra coisa... Aqui você tira o name

echo '<option value="'.$ver['Id_situacao_cliente'].'">'.$ver['Nome_situacao_cliente'].'</option>/n';//Tira o name

Testa e veja se funciona.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acabei de responder e vi que estava errado... Não acho que seja isto...

 

Copia o SQL e cola no PHPMyadmin e veja se ele retorna alguma coisa...

 

Não sei mais o que pode ser...

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acabei de responder e vi que estava errado... Não acho que seja isto...

 

Copia o SQL e cola no PHPMyadmin e veja se ele retorna alguma coisa...

 

Não sei mais o que pode ser...

 

Carlos Eduardo

Brother, o sql retorna as linhas que estao na tabela. Com os dados preenchidos.

Imagem Postada

 

Um detalhe, se eu salvar como cadastro.php ele não carrega a página.

Se eu salavar como cadastro.htm ele carrega a página e aparece o seguinte: (No ópera. Já no FF e IE, o campo aparece vazio.

 

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

PS, desculpem pelo Flood, mas.....

Funcionou, funcionou, funcionou, funcionou, funcionou, funcionou, funcionou!!!

Imagem PostadaImagem PostadaImagem PostadaImagem Postada

Aqui, Mathias, faltou fechar um ) no linha do While:

Assim você havia digitado

while ($ver = mysql_fetch_array($result)
ai, fechei com ) n final, pq tava faltando um.

while ($ver = mysql_fetch_array($result))
Ai, carregou a página e tá salvando tudo certinho!!

Valeu galera! Vcs nao sabem da minha alegria no momento!

Tirei o da de folga pra agilizar as coisas aqui e na manha inteira naum tinha funcionado nada!

Mas agora deu certo! Por mim, podem fechar o tópico já!

Muito obrigado a todos que ajudaram aqui. Principalmente mathias_rezende, que assina Carlos Eduardo

e William. E aos outros tb pela ajuda!! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

Imagem Postada

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.